diff options
Diffstat (limited to 'browser/components/about')
-rw-r--r-- | browser/components/about/AboutRedirector.cpp | 269 | ||||
-rw-r--r-- | browser/components/about/AboutRedirector.h | 32 | ||||
-rw-r--r-- | browser/components/about/moz.build | 19 |
3 files changed, 0 insertions, 320 deletions
diff --git a/browser/components/about/AboutRedirector.cpp b/browser/components/about/AboutRedirector.cpp deleted file mode 100644 index b77949ea7..000000000 --- a/browser/components/about/AboutRedirector.cpp +++ /dev/null @@ -1,269 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -// See also: docshell/base/nsAboutRedirector.cpp - -#include "AboutRedirector.h" -#include "nsNetUtil.h" -#include "nsIAboutNewTabService.h" -#include "nsIChannel.h" -#include "nsIURI.h" -#include "nsIScriptSecurityManager.h" -#include "nsIProtocolHandler.h" -#include "mozilla/ArrayUtils.h" -#include "nsServiceManagerUtils.h" - -namespace mozilla { -namespace browser { - -NS_IMPL_ISUPPORTS(AboutRedirector, nsIAboutModule) - -struct RedirEntry { - const char* id; - const char* url; - uint32_t flags; -}; - -/* - Entries which do not have URI_SAFE_FOR_UNTRUSTED_CONTENT will run with chrome - privileges. This is potentially dangerous. Please use - URI_SAFE_FOR_UNTRUSTED_CONTENT in the third argument to each map item below - unless your about: page really needs chrome privileges. Security review is - required before adding new map entries without - URI_SAFE_FOR_UNTRUSTED_CONTENT. -*/ -static RedirEntry kRedirMap[] = { - { - "basilisk", "chrome://global/content/memoriam.xhtml", - nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | - nsIAboutModule::HIDE_FROM_ABOUTABOUT - }, -#ifdef MOZ_SAFE_BROWSING - { - "blocked", "chrome://browser/content/blockedSite.xhtml", - nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | - nsIAboutModule::URI_CAN_LOAD_IN_CHILD | - nsIAboutModule::ALLOW_SCRIPT | - nsIAboutModule::HIDE_FROM_ABOUTABOUT - }, -#endif - { - "certerror", "chrome://browser/content/aboutNetError.xhtml", - nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | - nsIAboutModule::URI_CAN_LOAD_IN_CHILD | - nsIAboutModule::ALLOW_SCRIPT | - nsIAboutModule::HIDE_FROM_ABOUTABOUT - }, - { - "tabcrashed", "chrome://browser/content/aboutTabCrashed.xhtml", - nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | - nsIAboutModule::ALLOW_SCRIPT | - nsIAboutModule::HIDE_FROM_ABOUTABOUT - }, - { - "feeds", "chrome://browser/content/feeds/subscribe.xhtml", - nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | - nsIAboutModule::ALLOW_SCRIPT | - nsIAboutModule::HIDE_FROM_ABOUTABOUT - }, - { - "privatebrowsing", "chrome://browser/content/aboutPrivateBrowsing.xhtml", - nsIAboutModule::URI_MUST_LOAD_IN_CHILD | - nsIAboutModule::ALLOW_SCRIPT - }, - { - "rights", "chrome://global/content/aboutRights.xhtml", - nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | - nsIAboutModule::MAKE_LINKABLE | - nsIAboutModule::ALLOW_SCRIPT - }, - { - "robots", "chrome://browser/content/aboutRobots.xhtml", - nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | - nsIAboutModule::ALLOW_SCRIPT - }, - { - "searchreset", "chrome://browser/content/search/searchReset.xhtml", - nsIAboutModule::ALLOW_SCRIPT | - nsIAboutModule::HIDE_FROM_ABOUTABOUT - }, - { - "sessionrestore", "chrome://browser/content/aboutSessionRestore.xhtml", - nsIAboutModule::ALLOW_SCRIPT - }, - { - "welcomeback", "chrome://browser/content/aboutWelcomeBack.xhtml", - nsIAboutModule::ALLOW_SCRIPT - }, - { - "sync-tabs", "chrome://browser/content/sync/aboutSyncTabs.xul", - nsIAboutModule::ALLOW_SCRIPT - }, - { "home", "chrome://browser/content/abouthome/aboutHome.xhtml", - nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | - nsIAboutModule::URI_MUST_LOAD_IN_CHILD | - nsIAboutModule::ALLOW_SCRIPT | - // Linkable because of indexeddb use (bug 1228118) - nsIAboutModule::MAKE_LINKABLE | - nsIAboutModule::ENABLE_INDEXED_DB }, - { - // the newtab's actual URL will be determined when the channel is created - "newtab", "about:blank", - nsIAboutModule::ALLOW_SCRIPT - }, - { - "preferences", "chrome://browser/content/preferences/in-content/preferences.xul", - nsIAboutModule::ALLOW_SCRIPT - }, - { - "downloads", "chrome://browser/content/downloads/contentAreaDownloadsView.xul", - nsIAboutModule::ALLOW_SCRIPT - }, -#ifdef MOZ_SERVICES_HEALTHREPORT - { - "healthreport", "chrome://browser/content/abouthealthreport/abouthealth.xhtml", - nsIAboutModule::ALLOW_SCRIPT - }, -#endif - { - "accounts", "chrome://browser/content/aboutaccounts/aboutaccounts.xhtml", - nsIAboutModule::ALLOW_SCRIPT - }, - { - "reader", "chrome://global/content/reader/aboutReader.html", - nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | - nsIAboutModule::ALLOW_SCRIPT | - nsIAboutModule::URI_MUST_LOAD_IN_CHILD | - nsIAboutModule::HIDE_FROM_ABOUTABOUT - }, -}; -static const int kRedirTotal = ArrayLength(kRedirMap); - -static nsAutoCString -GetAboutModuleName(nsIURI *aURI) -{ - nsAutoCString path; - aURI->GetPath(path); - - int32_t f = path.FindChar('#'); - if (f >= 0) - path.SetLength(f); - - f = path.FindChar('?'); - if (f >= 0) - path.SetLength(f); - - ToLowerCase(path); - return path; -} - -NS_IMETHODIMP -AboutRedirector::NewChannel(nsIURI* aURI, - nsILoadInfo* aLoadInfo, - nsIChannel** result) -{ - NS_ENSURE_ARG_POINTER(aURI); - NS_ASSERTION(result, "must not be null"); - - nsAutoCString path = GetAboutModuleName(aURI); - - nsresult rv; - nsCOMPtr<nsIIOService> ioService = do_GetIOService(&rv); - NS_ENSURE_SUCCESS(rv, rv); - - for (int i = 0; i < kRedirTotal; i++) { - if (!strcmp(path.get(), kRedirMap[i].id)) { - nsAutoCString url; - - if (path.EqualsLiteral("newtab")) { - // let the aboutNewTabService decide where to redirect - nsCOMPtr<nsIAboutNewTabService> aboutNewTabService = - do_GetService("@mozilla.org/browser/aboutnewtab-service;1", &rv); - NS_ENSURE_SUCCESS(rv, rv); - rv = aboutNewTabService->GetDefaultURL(url); - NS_ENSURE_SUCCESS(rv, rv); - - // if about:newtab points to an external resource we have to make sure - // the content is signed and trusted - bool remoteEnabled = false; - rv = aboutNewTabService->GetRemoteEnabled(&remoteEnabled); - NS_ENSURE_SUCCESS(rv, rv); - if (remoteEnabled) { - NS_ENSURE_ARG_POINTER(aLoadInfo); - aLoadInfo->SetVerifySignedContent(true); - } - } - // fall back to the specified url in the map - if (url.IsEmpty()) { - url.AssignASCII(kRedirMap[i].url); - } - - nsCOMPtr<nsIChannel> tempChannel; - nsCOMPtr<nsIURI> tempURI; - rv = NS_NewURI(getter_AddRefs(tempURI), url); - NS_ENSURE_SUCCESS(rv, rv); - - // If tempURI links to an external URI (i.e. something other than - // chrome:// or resource://) then set the LOAD_REPLACE flag on the - // channel which forces the channel owner to reflect the displayed - // URL rather then being the systemPrincipal. - bool isUIResource = false; - rv = NS_URIChainHasFlags(tempURI, nsIProtocolHandler::URI_IS_UI_RESOURCE, - &isUIResource); - NS_ENSURE_SUCCESS(rv, rv); - - nsLoadFlags loadFlags = isUIResource - ? static_cast<nsLoadFlags>(nsIChannel::LOAD_NORMAL) - : static_cast<nsLoadFlags>(nsIChannel::LOAD_REPLACE); - - rv = NS_NewChannelInternal(getter_AddRefs(tempChannel), - tempURI, - aLoadInfo, - nullptr, // aLoadGroup - nullptr, // aCallbacks - loadFlags); - NS_ENSURE_SUCCESS(rv, rv); - - tempChannel->SetOriginalURI(aURI); - - NS_ADDREF(*result = tempChannel); - return rv; - } - } - - return NS_ERROR_ILLEGAL_VALUE; -} - -NS_IMETHODIMP -AboutRedirector::GetURIFlags(nsIURI *aURI, uint32_t *result) -{ - NS_ENSURE_ARG_POINTER(aURI); - - nsAutoCString name = GetAboutModuleName(aURI); - - for (int i = 0; i < kRedirTotal; i++) { - if (name.Equals(kRedirMap[i].id)) { - *result = kRedirMap[i].flags; - return NS_OK; - } - } - - return NS_ERROR_ILLEGAL_VALUE; -} - -nsresult -AboutRedirector::Create(nsISupports *aOuter, REFNSIID aIID, void **result) -{ - AboutRedirector* about = new AboutRedirector(); - if (about == nullptr) - return NS_ERROR_OUT_OF_MEMORY; - NS_ADDREF(about); - nsresult rv = about->QueryInterface(aIID, result); - NS_RELEASE(about); - return rv; -} - -} // namespace browser -} // namespace mozilla diff --git a/browser/components/about/AboutRedirector.h b/browser/components/about/AboutRedirector.h deleted file mode 100644 index 8feeb7491..000000000 --- a/browser/components/about/AboutRedirector.h +++ /dev/null @@ -1,32 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef AboutRedirector_h__ -#define AboutRedirector_h__ - -#include "nsIAboutModule.h" - -namespace mozilla { -namespace browser { - -class AboutRedirector : public nsIAboutModule -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSIABOUTMODULE - - AboutRedirector() {} - - static nsresult - Create(nsISupports *aOuter, REFNSIID aIID, void **aResult); - -protected: - virtual ~AboutRedirector() {} -}; - -} // namespace browser -} // namespace mozilla - -#endif // AboutRedirector_h__ diff --git a/browser/components/about/moz.build b/browser/components/about/moz.build deleted file mode 100644 index f1559c2b9..000000000 --- a/browser/components/about/moz.build +++ /dev/null @@ -1,19 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -EXPORTS.mozilla.browser += [ - 'AboutRedirector.h', -] - -SOURCES += [ - 'AboutRedirector.cpp', -] - -FINAL_LIBRARY = 'browsercomps' - -LOCAL_INCLUDES += [ - '../build', -] |