Skip to content

Commit

Permalink
Bug 1539595 - Create a separate content process type for privleged mo…
Browse files Browse the repository at this point in the history
…zilla content r=nika,flod

Differential Revision: https://phabricator.services.mozilla.com/D30276

--HG--
rename : browser/base/content/test/general/browser_e10s_about_page_triggeringprincipal.js => browser/base/content/test/tabs/browser_e10s_about_page_triggeringprincipal.js
rename : browser/base/content/test/general/browser_e10s_about_process.js => browser/base/content/test/tabs/browser_e10s_about_process.js
rename : browser/base/content/test/general/browser_e10s_chrome_process.js => browser/base/content/test/tabs/browser_e10s_chrome_process.js
rename : browser/base/content/test/general/browser_e10s_javascript.js => browser/base/content/test/tabs/browser_e10s_javascript.js
rename : browser/base/content/test/general/browser_e10s_switchbrowser.js => browser/base/content/test/tabs/browser_e10s_switchbrowser.js
rename : browser/base/content/test/general/file_about_child.html => browser/base/content/test/tabs/file_about_child.html
rename : browser/base/content/test/general/file_about_parent.html => browser/base/content/test/tabs/file_about_parent.html
rename : browser/base/content/test/general/test_process_flags_chrome.html => browser/base/content/test/tabs/test_process_flags_chrome.html
extra : moz-landing-system : lando
  • Loading branch information
tomrittervg committed May 28, 2019
1 parent 03b41fa commit 21a98d9
Show file tree
Hide file tree
Showing 21 changed files with 481 additions and 249 deletions.
7 changes: 6 additions & 1 deletion browser/app/profile/firefox.js
Original file line number Diff line number Diff line change
Expand Up @@ -498,11 +498,16 @@ pref("browser.tabs.showAudioPlayingIcon", true);
// This should match Chromium's audio indicator delay.
pref("browser.tabs.delayHidingAudioPlayingIconMS", 3000);

#if defined(NIGHTLY_BUILD) && !defined(MOZ_ASAN)
// Pref to control whether we use a separate privileged content process
// for about: pages. This pref name did not age well: we will have multiple
// types of privileged content processes, each with different privileges.
#if defined(NIGHTLY_BUILD) && !defined(MOZ_ASAN)
// types of privleged content processes, each with different privleges.
pref("browser.tabs.remote.separatePrivilegedContentProcess", true);
// Pref to control whether we use a separate privileged content process
// for certain mozilla webpages (which are listed in the pref
// browser.tabs.remote.separatedMozillaDomains).
pref("browser.tabs.remote.separatePrivilegedMozillaWebContentProcess", true);
#endif

// Turn on HTTP response process selection.
Expand Down
16 changes: 0 additions & 16 deletions browser/base/content/test/general/browser.ini
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ support-files =
test_bug462673.html
test_bug628179.html
test_bug839103.html
test_process_flags_chrome.html
title_test.svg
unknownContentType_file.pif
unknownContentType_file.pif^headers^
Expand Down Expand Up @@ -414,21 +413,6 @@ skip-if = e10s || debug # Bug 1094240 - has findbar-related failures
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_addCertException.js]
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_e10s_about_page_triggeringprincipal.js]
skip-if = verify
support-files =
file_about_child.html
file_about_parent.html
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_e10s_switchbrowser.js]
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_e10s_about_process.js]
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_e10s_chrome_process.js]
skip-if = debug # Bug 1444565, Bug 1457887
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_e10s_javascript.js]
# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
[browser_blockHPKP.js]
skip-if = verify && !debug
uses-unsafe-cpows = true
Expand Down
176 changes: 0 additions & 176 deletions browser/base/content/test/general/browser_e10s_about_process.js

This file was deleted.

14 changes: 14 additions & 0 deletions browser/base/content/test/tabs/browser.ini
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ support-files =
dummy_page.html
../general/audio.ogg
file_mediaPlayback.html
test_process_flags_chrome.html

[browser_accessibility_indicator.js]
skip-if = (verify && debug && (os == 'linux')) || (os == 'win' && processor == 'aarch64')
Expand All @@ -19,6 +20,17 @@ skip-if = (verify && debug && (os == 'linux'))
support-files =
test_bug1358314.html
[browser_isLocalAboutURI.js]
[browser_e10s_about_page_triggeringprincipal.js]
skip-if = verify
support-files =
file_about_child.html
file_about_parent.html
[browser_e10s_switchbrowser.js]
[browser_e10s_about_process.js]
[browser_e10s_mozillaweb_process.js]
[browser_e10s_chrome_process.js]
skip-if = debug # Bug 1444565, Bug 1457887
[browser_e10s_javascript.js]
[browser_multiselect_tabs_active_tab_selected_by_default.js]
[browser_multiselect_tabs_bookmark.js]
[browser_multiselect_tabs_clear_selection_when_tab_switch.js]
Expand Down Expand Up @@ -54,6 +66,8 @@ skip-if = (debug && os == 'linux' && bits == 32) #Bug 1455882, disabled on Linux
support-files = file_new_tab_page.html
[browser_new_tab_in_privilegedabout_process_pref.js]
skip-if = !e10s # Pref and test only relevant for e10s.
[browser_privilegedmozilla_process_pref.js]
skip-if = !e10s # Pref and test only relevant for e10s.
[browser_new_web_tab_in_file_process_pref.js]
skip-if = !e10s # Pref and test only relevant for e10s.
[browser_newwindow_tabstrip_overflow.js]
Expand Down
135 changes: 135 additions & 0 deletions browser/base/content/test/tabs/browser_e10s_about_process.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
const CHROME = {
id: "cb34538a-d9da-40f3-b61a-069f0b2cb9fb",
path: "test-chrome",
flags: 0,
};
const CANREMOTE = {
id: "2480d3e1-9ce4-4b84-8ae3-910b9a95cbb3",
path: "test-allowremote",
flags: Ci.nsIAboutModule.URI_CAN_LOAD_IN_CHILD,
};
const MUSTREMOTE = {
id: "f849cee5-e13e-44d2-981d-0fb3884aaead",
path: "test-mustremote",
flags: Ci.nsIAboutModule.URI_MUST_LOAD_IN_CHILD,
};
const CANPRIVILEGEDREMOTE = {
id: "a04ffafe-6c63-4266-acae-0f4b093165aa",
path: "test-canprivilegedremote",
flags: Ci.nsIAboutModule.URI_MUST_LOAD_IN_CHILD |
Ci.nsIAboutModule.URI_CAN_LOAD_IN_PRIVILEGEDABOUT_PROCESS,
};
const MUSTEXTENSION = {
id: "f7a1798f-965b-49e9-be83-ec6ee4d7d675",
path: "test-mustextension",
flags: Ci.nsIAboutModule.URI_MUST_LOAD_IN_EXTENSION_PROCESS,
};


const TEST_MODULES = [
CHROME,
CANREMOTE,
MUSTREMOTE,
CANPRIVILEGEDREMOTE,
MUSTEXTENSION,
];

function AboutModule() {
}

AboutModule.prototype = {
newChannel(aURI, aLoadInfo) {
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},

getURIFlags(aURI) {
for (let module of TEST_MODULES) {
if (aURI.pathQueryRef.startsWith(module.path)) {
return module.flags;
}
}

ok(false, "Called getURIFlags for an unknown page " + aURI.spec);
return 0;
},

getIndexedDBOriginPostfix(aURI) {
return null;
},

QueryInterface: ChromeUtils.generateQI([Ci.nsIAboutModule]),
};

var AboutModuleFactory = {
createInstance(aOuter, aIID) {
if (aOuter)
throw Cr.NS_ERROR_NO_AGGREGATION;
return new AboutModule().QueryInterface(aIID);
},

lockFactory(aLock) {
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},

QueryInterface: ChromeUtils.generateQI([Ci.nsIFactory]),
};

add_task(async function init() {
SpecialPowers.setBoolPref("browser.tabs.remote.separatePrivilegedMozillaWebContentProcess", true);
let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
for (let module of TEST_MODULES) {
registrar.registerFactory(Components.ID(module.id), "",
"@mozilla.org/network/protocol/about;1?what=" + module.path,
AboutModuleFactory);
}
});

registerCleanupFunction(() => {
SpecialPowers.clearUserPref("browser.tabs.remote.separatePrivilegedMozillaWebContentProcess");
let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
for (let module of TEST_MODULES) {
registrar.unregisterFactory(Components.ID(module.id), AboutModuleFactory);
}
});

add_task(async function test_chrome() {
test_url_for_process_types("about:" + CHROME.path, true, false, false, false, false);
});

add_task(async function test_any() {
test_url_for_process_types("about:" + CANREMOTE.path, true, true, false, false, false);
});

add_task(async function test_remote() {
test_url_for_process_types("about:" + MUSTREMOTE.path, false, true, false, false, false);
});

add_task(async function test_privileged_remote_true() {
await SpecialPowers.pushPrefEnv({
set: [
["browser.tabs.remote.separatePrivilegedContentProcess", true],
],
});

// This shouldn't be taken literally. We will always use the privleged about
// content type if the URI_CAN_LOAD_IN_PRIVILEGEDABOUT_PROCESS flag is enabled and
// the pref is turned on.
test_url_for_process_types("about:" + CANPRIVILEGEDREMOTE.path, false, false, true, false, false);
});

add_task(async function test_privileged_remote_false() {
await SpecialPowers.pushPrefEnv({
set: [
["browser.tabs.remote.separatePrivilegedContentProcess", false],
],
});

// This shouldn't be taken literally. We will always use the privleged about
// content type if the URI_CAN_LOAD_IN_PRIVILEGEDABOUT_PROCESS flag is enabled and
// the pref is turned on.
test_url_for_process_types("about:" + CANPRIVILEGEDREMOTE.path, false, true, false, false, false);
});

add_task(async function test_extension() {
test_url_for_process_types("about:" + MUSTEXTENSION.path, false, false, false, false, true);
});
Loading

0 comments on commit 21a98d9

Please sign in to comment.