Bug 1472212 - Add e10s tests to ensure that URIs with the URI_CAN_LOAD_IN_PRIVILEGED_CHILD flag load in the privileged content process when the pref is turned on. r=Gijs
☠☠ backed out by 9a4b8f268757 ☠ ☠
authorJay Lim <jlim@mozilla.com>
Mon, 23 Jul 2018 10:08:45 -0400
changeset 499441 9ff5280fc25a119d1aa80329b79c07b9910b5768
parent 499440 c3c22abaf108a020590266c1a707a2c37de512d8
child 499442 78a9a2adf32a8798aea8c6c5347d2d4957fc939e
push id1864
push userffxbld-merge
push dateMon, 03 Dec 2018 15:51:40 +0000
treeherdermozilla-release@f040763d99ad [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersGijs
bugs1472212
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1472212 - Add e10s tests to ensure that URIs with the URI_CAN_LOAD_IN_PRIVILEGED_CHILD flag load in the privileged content process when the pref is turned on. r=Gijs URIs need to have both the URI_CAN_LOAD_IN_PRIVILEGED_CHILD and URI_MUST_LOAD_IN_CHILD flags in order for them to run in the privileged content process when the pref is turned on. MozReview-Commit-ID: 61dO5peNtNL
browser/base/content/test/general/browser_e10s_about_process.js
--- a/browser/base/content/test/general/browser_e10s_about_process.js
+++ b/browser/base/content/test/general/browser_e10s_about_process.js
@@ -1,31 +1,39 @@
 const CHROME_PROCESS = E10SUtils.NOT_REMOTE;
 const WEB_CONTENT_PROCESS = E10SUtils.WEB_REMOTE_TYPE;
+const PRIVILEGED_CONTENT_PROCESS = E10SUtils.PRIVILEGED_REMOTE_TYPE;
 
 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_PRIVILEGED_CHILD,
+};
 
 const TEST_MODULES = [
   CHROME,
   CANREMOTE,
   MUSTREMOTE,
+  CANPRIVILEGEDREMOTE,
 ];
 
 function AboutModule() {
 }
 
 AboutModule.prototype = {
   newChannel(aURI, aLoadInfo) {
     throw Cr.NS_ERROR_NOT_IMPLEMENTED;
@@ -74,41 +82,75 @@ add_task(async function init() {
 
 registerCleanupFunction(() => {
   let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
   for (let module of TEST_MODULES) {
     registrar.unregisterFactory(Components.ID(module.id), AboutModuleFactory);
   }
 });
 
-function test_url(url, chromeResult, webContentResult) {
+function test_url(url, chromeResult, webContentResult, privilegedContentResult) {
   is(E10SUtils.canLoadURIInRemoteType(url, CHROME_PROCESS),
      chromeResult, "Check URL in chrome process.");
   is(E10SUtils.canLoadURIInRemoteType(url, WEB_CONTENT_PROCESS),
      webContentResult, "Check URL in web content process.");
+  is(E10SUtils.canLoadURIInRemoteType(url, PRIVILEGED_CONTENT_PROCESS),
+     privilegedContentResult, "Check URL in privileged content process.");
 
   is(E10SUtils.canLoadURIInRemoteType(url + "#foo", CHROME_PROCESS),
      chromeResult, "Check URL with ref in chrome process.");
   is(E10SUtils.canLoadURIInRemoteType(url + "#foo", WEB_CONTENT_PROCESS),
      webContentResult, "Check URL with ref in web content process.");
+  is(E10SUtils.canLoadURIInRemoteType(url + "#foo", PRIVILEGED_CONTENT_PROCESS),
+     privilegedContentResult, "Check URL with ref in privileged content process.");
 
   is(E10SUtils.canLoadURIInRemoteType(url + "?foo", CHROME_PROCESS),
      chromeResult, "Check URL with query in chrome process.");
   is(E10SUtils.canLoadURIInRemoteType(url + "?foo", WEB_CONTENT_PROCESS),
      webContentResult, "Check URL with query in web content process.");
+  is(E10SUtils.canLoadURIInRemoteType(url + "?foo", PRIVILEGED_CONTENT_PROCESS),
+     privilegedContentResult, "Check URL with query in privileged content process.");
 
   is(E10SUtils.canLoadURIInRemoteType(url + "?foo#bar", CHROME_PROCESS),
      chromeResult, "Check URL with query and ref in chrome process.");
   is(E10SUtils.canLoadURIInRemoteType(url + "?foo#bar", WEB_CONTENT_PROCESS),
      webContentResult, "Check URL with query and ref in web content process.");
+  is(E10SUtils.canLoadURIInRemoteType(url + "?foo#bar", PRIVILEGED_CONTENT_PROCESS),
+     privilegedContentResult, "Check URL with query and ref in privileged content process.");
 }
 
 add_task(async function test_chrome() {
-  test_url("about:" + CHROME.path, true, false);
+  test_url("about:" + CHROME.path, true, false, false);
 });
 
 add_task(async function test_any() {
-  test_url("about:" + CANREMOTE.path, true, true);
+  test_url("about:" + CANREMOTE.path, true, true, false);
 });
 
 add_task(async function test_remote() {
-  test_url("about:" + MUSTREMOTE.path, false, true);
+  test_url("about:" + MUSTREMOTE.path, false, true, 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 privileged
+  // content type if the URI_CAN_LOAD_IN_PRIVILEGED_CHILD flag is enabled and
+  // the pref is turned on.
+  test_url("about:" + CANPRIVILEGEDREMOTE.path, false, false, true);
+});
+
+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 privileged
+  // content type if the URI_CAN_LOAD_IN_PRIVILEGED_CHILD flag is enabled and
+  // the pref is turned on.
+  test_url("about:" + CANPRIVILEGEDREMOTE.path, false, true, false);
+});