Bug 1416066 - Add a new flag to nsIAboutModule to load URIs in privileged content processes if feature is enabled. r=mconley

We will apply the URI_CAN_LOAD_IN_PRIVILEGED_CHILD flag to Activity Stream about: pages instead of hardcoding the URLs in a Set.

MozReview-Commit-ID: F6AGmsKs1SR

--HG--
extra : rebase_source : e0435776b7bd390a2a62190ba6c72d4d312538d1
This commit is contained in:
imjching 2018-07-03 19:31:37 -04:00
Родитель 8930e3d6fa
Коммит 01b7c92eb4
3 изменённых файлов: 15 добавлений и 9 удалений

Просмотреть файл

@ -28,6 +28,7 @@ static const uint32_t ACTIVITY_STREAM_FLAGS =
nsIAboutModule::ALLOW_SCRIPT |
nsIAboutModule::ENABLE_INDEXED_DB |
nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
nsIAboutModule::URI_CAN_LOAD_IN_PRIVILEGED_CHILD |
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT;
struct RedirEntry {
@ -92,6 +93,7 @@ static const RedirEntry kRedirMap[] = {
{ "newtab", "about:blank", ACTIVITY_STREAM_FLAGS },
{ "welcome", "about:blank",
nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
nsIAboutModule::URI_CAN_LOAD_IN_PRIVILEGED_CHILD |
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
nsIAboutModule::ALLOW_SCRIPT },
{ "library", "chrome://browser/content/aboutLibrary.xhtml",

Просмотреть файл

@ -10,11 +10,11 @@ interface nsIChannel;
interface nsILoadInfo;
[scriptable, uuid(c0c19db9-1b5a-4ac5-b656-ed6f8149fa48)]
interface nsIAboutModule : nsISupports
interface nsIAboutModule : nsISupports
{
/**
* Constructs a new channel for the about protocol module.
* Constructs a new channel for the about protocol module.
*
* @param aURI the uri of the new channel
* @param aLoadInfo the loadinfo of the new channel
@ -71,6 +71,13 @@ interface nsIAboutModule : nsISupports
*/
const unsigned long MAKE_LINKABLE = (1 << 7);
/**
* A flag that indicates that this URI can be loaded in the privileged
* content process if privileged content process is enabled. Ignored unless
* URI_MUST_LOAD_IN_CHILD is also specified.
*/
const unsigned long URI_CAN_LOAD_IN_PRIVILEGED_CHILD = (1 << 8);
/**
* A method to get the flags that apply to a given about: URI. The URI
* passed in is guaranteed to be one of the URIs that this module
@ -81,8 +88,8 @@ interface nsIAboutModule : nsISupports
%{C++
#define NS_ABOUT_MODULE_CONTRACTID "@mozilla.org/network/protocol/about;1"
#define NS_ABOUT_MODULE_CONTRACTID_PREFIX NS_ABOUT_MODULE_CONTRACTID "?what="
#define NS_ABOUT_MODULE_CONTRACTID "@mozilla.org/network/protocol/about;1"
#define NS_ABOUT_MODULE_CONTRACTID_PREFIX NS_ABOUT_MODULE_CONTRACTID "?what="
#define NS_ABOUT_MODULE_CONTRACTID_LENGTH 49 // strlen(NS_ABOUT_MODULE_CONTRACTID_PREFIX)
%}

Просмотреть файл

@ -43,8 +43,6 @@ const PRIVILEGED_REMOTE_TYPE = "privileged";
const LARGE_ALLOCATION_REMOTE_TYPE = "webLargeAllocation";
const DEFAULT_REMOTE_TYPE = WEB_REMOTE_TYPE;
const ACTIVITY_STREAM_PAGES = new Set(["home", "newtab", "welcome"]);
function validatedWebRemoteType(aPreferredRemoteType, aTargetUri, aCurrentUri) {
// If the domain is whitelisted to allow it to use file:// URIs, then we have
// to run it in a file content process, in case it uses file:// sub-resources.
@ -159,9 +157,8 @@ var E10SUtils = {
let flags = module.getURIFlags(aURI);
if (flags & Ci.nsIAboutModule.URI_MUST_LOAD_IN_CHILD) {
// Load Activity Stream in a separate process.
if (useSeparatePrivilegedContentProcess &&
ACTIVITY_STREAM_PAGES.has(aURI.filePath)) {
if ((flags & Ci.nsIAboutModule.URI_CAN_LOAD_IN_PRIVILEGED_CHILD) &&
useSeparatePrivilegedContentProcess) {
return PRIVILEGED_REMOTE_TYPE;
}
return DEFAULT_REMOTE_TYPE;