Bug 1317101 - Part 8b: Run browser mochitests in both parent-process and remote configurations. r?billm draft
authorKris Maglione <maglione.k@gmail.com>
Sat, 12 Nov 2016 18:31:52 -0800
changeset 438079 02913757cfe6c0c0de832482a69e57d19e448c06
parent 438078 3509bfa191c5520bafe8ce066bea872f46389a02
child 438080 ed15f2287eb17c5a1e7887011697ba7e762d33a9
push id35614
push usermaglione.k@gmail.com
push dateSun, 13 Nov 2016 03:28:59 +0000
reviewersbillm
bugs1317101
milestone52.0a1
Bug 1317101 - Part 8b: Run browser mochitests in both parent-process and remote configurations. r?billm MozReview-Commit-ID: 6IGGnpgZLce
browser/components/extensions/moz.build
browser/components/extensions/test/browser/browser-common.ini
browser/components/extensions/test/browser/browser-remote.ini
browser/components/extensions/test/browser/browser.ini
browser/components/extensions/test/browser/head.js
--- a/browser/components/extensions/moz.build
+++ b/browser/components/extensions/moz.build
@@ -7,11 +7,15 @@
 JAR_MANIFESTS += ['jar.mn']
 
 EXTRA_COMPONENTS += [
     'extensions-browser.manifest',
 ]
 
 DIRS += ['schemas']
 
-BROWSER_CHROME_MANIFESTS += ['test/browser/browser.ini']
+BROWSER_CHROME_MANIFESTS += [
+    'test/browser/browser-remote.ini',
+    'test/browser/browser.ini',
+]
+
 MOCHITEST_MANIFESTS += ['test/mochitest/mochitest.ini']
 XPCSHELL_TESTS_MANIFESTS += ['test/xpcshell/xpcshell.ini']
copy from browser/components/extensions/test/browser/browser.ini
copy to browser/components/extensions/test/browser/browser-common.ini
--- a/browser/components/extensions/test/browser/browser.ini
+++ b/browser/components/extensions/test/browser/browser-common.ini
@@ -13,18 +13,16 @@ support-files =
   file_iframe_document.sjs
   file_bypass_cache.sjs
   file_language_fr_en.html
   file_language_ja.html
   file_language_tlh.html
   file_dummy.html
   searchSuggestionEngine.xml
   searchSuggestionEngine.sjs
-tags = webextensions
-
 
 [browser_ext_browserAction_context.js]
 [browser_ext_browserAction_disabled.js]
 [browser_ext_browserAction_pageAction_icon.js]
 [browser_ext_browserAction_pageAction_icon_permissions.js]
 [browser_ext_browserAction_popup.js]
 [browser_ext_browserAction_popup_resize.js]
 [browser_ext_browserAction_simple.js]
@@ -39,18 +37,16 @@ tags = webextensions
 [browser_ext_contextMenus_onclick.js]
 [browser_ext_contextMenus_radioGroups.js]
 [browser_ext_contextMenus_uninstall.js]
 [browser_ext_contextMenus_urlPatterns.js]
 [browser_ext_currentWindow.js]
 [browser_ext_getViews.js]
 [browser_ext_incognito_popup.js]
 [browser_ext_lastError.js]
-[browser_ext_legacy_extension_context_contentscript.js]
-[browser_ext_omnibox.js]
 [browser_ext_optionsPage_privileges.js]
 [browser_ext_pageAction_context.js]
 [browser_ext_pageAction_popup.js]
 [browser_ext_pageAction_popup_resize.js]
 [browser_ext_pageAction_simple.js]
 [browser_ext_pageAction_title.js]
 [browser_ext_popup_api_injection.js]
 [browser_ext_popup_background.js]
@@ -91,19 +87,17 @@ tags = webextensions
 [browser_ext_tabs_sendMessage.js]
 [browser_ext_tabs_cookieStoreId.js]
 [browser_ext_tabs_update.js]
 [browser_ext_tabs_zoom.js]
 [browser_ext_tabs_update_url.js]
 [browser_ext_topwindowid.js]
 [browser_ext_webNavigation_frameId0.js]
 [browser_ext_webNavigation_getFrames.js]
-[browser_ext_webNavigation_urlbar_transitions.js]
 [browser_ext_windows.js]
-[browser_ext_windows_allowScriptsToClose.js]
 [browser_ext_windows_create.js]
 tags = fullscreen
 [browser_ext_windows_create_params.js]
 [browser_ext_windows_create_tabId.js]
 [browser_ext_windows_create_url.js]
 [browser_ext_windows_events.js]
 [browser_ext_windows_size.js]
 skip-if = os == 'mac' # Fails when windows are randomly opened in fullscreen mode
copy from browser/components/extensions/test/browser/browser.ini
copy to browser/components/extensions/test/browser/browser-remote.ini
--- a/browser/components/extensions/test/browser/browser.ini
+++ b/browser/components/extensions/test/browser/browser-remote.ini
@@ -1,111 +1,12 @@
 [DEFAULT]
-support-files =
-  head.js
-  head_pageAction.js
-  head_sessions.js
-  context.html
-  ctxmenu-image.png
-  context_tabs_onUpdated_page.html
-  context_tabs_onUpdated_iframe.html
-  file_popup_api_injection_a.html
-  file_popup_api_injection_b.html
-  file_iframe_document.html
-  file_iframe_document.sjs
-  file_bypass_cache.sjs
-  file_language_fr_en.html
-  file_language_ja.html
-  file_language_tlh.html
-  file_dummy.html
-  searchSuggestionEngine.xml
-  searchSuggestionEngine.sjs
-tags = webextensions
+# This is a horrible hack:
+# In order to run tests under two configurations, we create two browser test
+# manifests, and include a manifest with a common set of tests from each. In
+# order to detect which manifest we're running from, we install the tests listed
+# in this manifest to the sub-directory "test-oop-extensions", and then check
+# whether we're running from that directory from head.js
+install-to-subdir = test-oop-extensions
+tags = webextensions remote-webextensions
 
 
-[browser_ext_browserAction_context.js]
-[browser_ext_browserAction_disabled.js]
-[browser_ext_browserAction_pageAction_icon.js]
-[browser_ext_browserAction_pageAction_icon_permissions.js]
-[browser_ext_browserAction_popup.js]
-[browser_ext_browserAction_popup_resize.js]
-[browser_ext_browserAction_simple.js]
-[browser_ext_commands_execute_browser_action.js]
-[browser_ext_commands_execute_page_action.js]
-[browser_ext_commands_getAll.js]
-[browser_ext_commands_onCommand.js]
-[browser_ext_contentscript_connect.js]
-[browser_ext_contextMenus.js]
-[browser_ext_contextMenus_checkboxes.js]
-[browser_ext_contextMenus_icons.js]
-[browser_ext_contextMenus_onclick.js]
-[browser_ext_contextMenus_radioGroups.js]
-[browser_ext_contextMenus_uninstall.js]
-[browser_ext_contextMenus_urlPatterns.js]
-[browser_ext_currentWindow.js]
-[browser_ext_getViews.js]
-[browser_ext_incognito_popup.js]
-[browser_ext_lastError.js]
-[browser_ext_legacy_extension_context_contentscript.js]
-[browser_ext_omnibox.js]
-[browser_ext_optionsPage_privileges.js]
-[browser_ext_pageAction_context.js]
-[browser_ext_pageAction_popup.js]
-[browser_ext_pageAction_popup_resize.js]
-[browser_ext_pageAction_simple.js]
-[browser_ext_pageAction_title.js]
-[browser_ext_popup_api_injection.js]
-[browser_ext_popup_background.js]
-[browser_ext_popup_corners.js]
-[browser_ext_popup_sendMessage.js]
-[browser_ext_popup_shutdown.js]
-[browser_ext_runtime_openOptionsPage.js]
-[browser_ext_runtime_openOptionsPage_uninstall.js]
-[browser_ext_runtime_setUninstallURL.js]
-[browser_ext_sessions_getRecentlyClosed.js]
-[browser_ext_sessions_getRecentlyClosed_private.js]
-[browser_ext_sessions_restore.js]
-[browser_ext_simple.js]
-[browser_ext_tab_runtimeConnect.js]
-[browser_ext_tabs_audio.js]
-[browser_ext_tabs_captureVisibleTab.js]
-[browser_ext_tabs_create.js]
-[browser_ext_tabs_create_invalid_url.js]
-[browser_ext_tabs_detectLanguage.js]
-[browser_ext_tabs_duplicate.js]
-[browser_ext_tabs_events.js]
-[browser_ext_tabs_executeScript.js]
-[browser_ext_tabs_executeScript_good.js]
-[browser_ext_tabs_executeScript_bad.js]
-[browser_ext_tabs_executeScript_runAt.js]
-[browser_ext_tabs_getCurrent.js]
-[browser_ext_tabs_insertCSS.js]
-[browser_ext_tabs_removeCSS.js]
-[browser_ext_tabs_move.js]
-[browser_ext_tabs_move_window.js]
-[browser_ext_tabs_move_window_multiple.js]
-[browser_ext_tabs_move_window_pinned.js]
-[browser_ext_tabs_onHighlighted.js]
-[browser_ext_tabs_onUpdated.js]
-[browser_ext_tabs_query.js]
-[browser_ext_tabs_reload.js]
-[browser_ext_tabs_reload_bypass_cache.js]
-[browser_ext_tabs_sendMessage.js]
-[browser_ext_tabs_cookieStoreId.js]
-[browser_ext_tabs_update.js]
-[browser_ext_tabs_zoom.js]
-[browser_ext_tabs_update_url.js]
-[browser_ext_topwindowid.js]
-[browser_ext_webNavigation_frameId0.js]
-[browser_ext_webNavigation_getFrames.js]
-[browser_ext_webNavigation_urlbar_transitions.js]
-[browser_ext_windows.js]
-[browser_ext_windows_allowScriptsToClose.js]
-[browser_ext_windows_create.js]
-tags = fullscreen
-[browser_ext_windows_create_params.js]
-[browser_ext_windows_create_tabId.js]
-[browser_ext_windows_create_url.js]
-[browser_ext_windows_events.js]
-[browser_ext_windows_size.js]
-skip-if = os == 'mac' # Fails when windows are randomly opened in fullscreen mode
-[browser_ext_windows_update.js]
-tags = fullscreen
+[include:browser-common.ini]
--- a/browser/components/extensions/test/browser/browser.ini
+++ b/browser/components/extensions/test/browser/browser.ini
@@ -1,111 +1,11 @@
 [DEFAULT]
-support-files =
-  head.js
-  head_pageAction.js
-  head_sessions.js
-  context.html
-  ctxmenu-image.png
-  context_tabs_onUpdated_page.html
-  context_tabs_onUpdated_iframe.html
-  file_popup_api_injection_a.html
-  file_popup_api_injection_b.html
-  file_iframe_document.html
-  file_iframe_document.sjs
-  file_bypass_cache.sjs
-  file_language_fr_en.html
-  file_language_ja.html
-  file_language_tlh.html
-  file_dummy.html
-  searchSuggestionEngine.xml
-  searchSuggestionEngine.sjs
-tags = webextensions
+tags = webextensions in-process-webextensions
 
 
-[browser_ext_browserAction_context.js]
-[browser_ext_browserAction_disabled.js]
-[browser_ext_browserAction_pageAction_icon.js]
-[browser_ext_browserAction_pageAction_icon_permissions.js]
-[browser_ext_browserAction_popup.js]
-[browser_ext_browserAction_popup_resize.js]
-[browser_ext_browserAction_simple.js]
-[browser_ext_commands_execute_browser_action.js]
-[browser_ext_commands_execute_page_action.js]
-[browser_ext_commands_getAll.js]
-[browser_ext_commands_onCommand.js]
-[browser_ext_contentscript_connect.js]
-[browser_ext_contextMenus.js]
-[browser_ext_contextMenus_checkboxes.js]
-[browser_ext_contextMenus_icons.js]
-[browser_ext_contextMenus_onclick.js]
-[browser_ext_contextMenus_radioGroups.js]
-[browser_ext_contextMenus_uninstall.js]
-[browser_ext_contextMenus_urlPatterns.js]
-[browser_ext_currentWindow.js]
-[browser_ext_getViews.js]
-[browser_ext_incognito_popup.js]
-[browser_ext_lastError.js]
 [browser_ext_legacy_extension_context_contentscript.js]
 [browser_ext_omnibox.js]
-[browser_ext_optionsPage_privileges.js]
-[browser_ext_pageAction_context.js]
-[browser_ext_pageAction_popup.js]
-[browser_ext_pageAction_popup_resize.js]
-[browser_ext_pageAction_simple.js]
-[browser_ext_pageAction_title.js]
-[browser_ext_popup_api_injection.js]
-[browser_ext_popup_background.js]
-[browser_ext_popup_corners.js]
-[browser_ext_popup_sendMessage.js]
-[browser_ext_popup_shutdown.js]
-[browser_ext_runtime_openOptionsPage.js]
-[browser_ext_runtime_openOptionsPage_uninstall.js]
-[browser_ext_runtime_setUninstallURL.js]
-[browser_ext_sessions_getRecentlyClosed.js]
-[browser_ext_sessions_getRecentlyClosed_private.js]
-[browser_ext_sessions_restore.js]
-[browser_ext_simple.js]
-[browser_ext_tab_runtimeConnect.js]
-[browser_ext_tabs_audio.js]
-[browser_ext_tabs_captureVisibleTab.js]
-[browser_ext_tabs_create.js]
-[browser_ext_tabs_create_invalid_url.js]
-[browser_ext_tabs_detectLanguage.js]
-[browser_ext_tabs_duplicate.js]
-[browser_ext_tabs_events.js]
-[browser_ext_tabs_executeScript.js]
-[browser_ext_tabs_executeScript_good.js]
-[browser_ext_tabs_executeScript_bad.js]
-[browser_ext_tabs_executeScript_runAt.js]
-[browser_ext_tabs_getCurrent.js]
-[browser_ext_tabs_insertCSS.js]
-[browser_ext_tabs_removeCSS.js]
-[browser_ext_tabs_move.js]
-[browser_ext_tabs_move_window.js]
-[browser_ext_tabs_move_window_multiple.js]
-[browser_ext_tabs_move_window_pinned.js]
-[browser_ext_tabs_onHighlighted.js]
-[browser_ext_tabs_onUpdated.js]
-[browser_ext_tabs_query.js]
-[browser_ext_tabs_reload.js]
-[browser_ext_tabs_reload_bypass_cache.js]
-[browser_ext_tabs_sendMessage.js]
-[browser_ext_tabs_cookieStoreId.js]
-[browser_ext_tabs_update.js]
-[browser_ext_tabs_zoom.js]
-[browser_ext_tabs_update_url.js]
-[browser_ext_topwindowid.js]
-[browser_ext_webNavigation_frameId0.js]
-[browser_ext_webNavigation_getFrames.js]
 [browser_ext_webNavigation_urlbar_transitions.js]
-[browser_ext_windows.js]
 [browser_ext_windows_allowScriptsToClose.js]
-[browser_ext_windows_create.js]
-tags = fullscreen
-[browser_ext_windows_create_params.js]
-[browser_ext_windows_create_tabId.js]
-[browser_ext_windows_create_url.js]
-[browser_ext_windows_events.js]
-[browser_ext_windows_size.js]
-skip-if = os == 'mac' # Fails when windows are randomly opened in fullscreen mode
-[browser_ext_windows_update.js]
-tags = fullscreen
+
+[include:browser-common.ini]
+[parent:browser-common.ini]
--- a/browser/components/extensions/test/browser/head.js
+++ b/browser/components/extensions/test/browser/head.js
@@ -13,16 +13,29 @@
  *          imageBuffer getListStyleImage getPanelForNode
  *          awaitExtensionPanel awaitPopupResize
  *          promiseContentDimensions alterContent
  */
 
 var {AppConstants} = Cu.import("resource://gre/modules/AppConstants.jsm");
 var {CustomizableUI} = Cu.import("resource:///modules/CustomizableUI.jsm");
 
+// We run tests under two different configurations, from browser.ini and
+// browser-remote.ini. When running from browser-remote.ini, the tests are
+// copied to the sub-directory "test-oop-extensions", which we detect here, and
+// use to select our configuration.
+if (gTestPath.includes("test-oop-extensions")) {
+  add_task(() => {
+    return SpecialPowers.pushPrefEnv({set: [
+      ["dom.ipc.processCount", 1],
+      ["extensions.webextensions.outOfProcess", true],
+    ]});
+  });
+}
+
 // Bug 1239884: Our tests occasionally hit a long GC pause at unpredictable
 // times in debug builds, which results in intermittent timeouts. Until we have
 // a better solution, we force a GC after certain strategic tests, which tend to
 // accumulate a high number of unreaped windows.
 function forceGC() {
   if (AppConstants.DEBUG) {
     Cu.forceGC();
   }