# HG changeset patch # User Andrew Swan # Date 1510212203 28800 # Wed Nov 08 23:23:23 2017 -0800 # Node ID e1a156fb6726b9f4d2b691f860b45e970b203edc # Parent 5faab9e619901b1513fd4ca137747231be550def Bug 1396399 Test for content scripts and activeTab permission MozReview-Commit-ID: DyVtSuA9voI diff --git a/testing/specialpowers/content/SpecialPowersObserver.jsm b/testing/specialpowers/content/SpecialPowersObserver.jsm --- a/testing/specialpowers/content/SpecialPowersObserver.jsm +++ b/testing/specialpowers/content/SpecialPowersObserver.jsm @@ -83,16 +83,17 @@ SpecialPowersObserver.prototype._loadFra this._messageManager.addMessageListener("SPImportInMainProcess", this); this._messageManager.addMessageListener("SPChromeScriptMessage", this); this._messageManager.addMessageListener("SPQuotaManager", this); this._messageManager.addMessageListener("SPSetTestPluginEnabledState", this); this._messageManager.addMessageListener("SPLoadExtension", this); this._messageManager.addMessageListener("SPStartupExtension", this); this._messageManager.addMessageListener("SPUnloadExtension", this); this._messageManager.addMessageListener("SPExtensionMessage", this); + this._messageManager.addMessageListener("SPExtensionGrantActiveTab", this); this._messageManager.addMessageListener("SPCleanUpSTSData", this); this._messageManager.addMessageListener("SPRequestDumpCoverageCounters", this); this._messageManager.addMessageListener("SPRequestResetCoverageCounters", this); this._messageManager.loadFrameScript(CHILD_LOGGER_SCRIPT, true); this._messageManager.loadFrameScript(CHILD_SCRIPT_API, true); this._messageManager.loadFrameScript(CHILD_SCRIPT, true); this._isFrameScriptLoaded = true; @@ -154,16 +155,17 @@ SpecialPowersObserver.prototype.uninit = this._messageManager.removeMessageListener("SPImportInMainProcess", this); this._messageManager.removeMessageListener("SPChromeScriptMessage", this); this._messageManager.removeMessageListener("SPQuotaManager", this); this._messageManager.removeMessageListener("SPSetTestPluginEnabledState", this); this._messageManager.removeMessageListener("SPLoadExtension", this); this._messageManager.removeMessageListener("SPStartupExtension", this); this._messageManager.removeMessageListener("SPUnloadExtension", this); this._messageManager.removeMessageListener("SPExtensionMessage", this); + this._messageManager.removeMessageListener("SPExtensionGrantActiveTab", this); this._messageManager.removeMessageListener("SPCleanUpSTSData", this); this._messageManager.removeMessageListener("SPRequestDumpCoverageCounters", this); this._messageManager.removeMessageListener("SPRequestResetCoverageCounters", this); this._messageManager.removeDelayedFrameScript(CHILD_LOGGER_SCRIPT); this._messageManager.removeDelayedFrameScript(CHILD_SCRIPT_API); this._messageManager.removeDelayedFrameScript(CHILD_SCRIPT); this._isFrameScriptLoaded = false; diff --git a/testing/specialpowers/content/SpecialPowersObserverAPI.js b/testing/specialpowers/content/SpecialPowersObserverAPI.js --- a/testing/specialpowers/content/SpecialPowersObserverAPI.js +++ b/testing/specialpowers/content/SpecialPowersObserverAPI.js @@ -641,16 +641,23 @@ SpecialPowersObserverAPI.prototype = { case "SPExtensionMessage": { let id = aMessage.data.id; let extension = this._extensions.get(id); extension.testMessage(...aMessage.data.args); return undefined; } + case "SPExtensionGrantActiveTab": { + let {id, tabId} = aMessage.data; + let {tabManager} = this._extensions.get(id); + tabManager.addActiveTabPermission(tabManager.get(tabId).nativeTab); + return undefined; + } + case "SPUnloadExtension": { let id = aMessage.data.id; let extension = this._extensions.get(id); this._extensions.delete(id); let done = () => this._sendReply(aMessage, "SPExtensionMessage", {id, type: "extensionUnloaded", args: []}); extension.shutdown().then(done, done); return undefined; } diff --git a/testing/specialpowers/content/specialpowers.js b/testing/specialpowers/content/specialpowers.js --- a/testing/specialpowers/content/specialpowers.js +++ b/testing/specialpowers/content/specialpowers.js @@ -47,17 +47,18 @@ function SpecialPowers(window) { "SpecialPowers.Quit", "SpecialPowers.CreateFiles", "SpecialPowers.RemoveFiles", "SPPingService", "SPLoadExtension", "SPProcessCrashManagerWait", "SPStartupExtension", "SPUnloadExtension", - "SPExtensionMessage"]; + "SPExtensionMessage", + "SPExtensionGrantActiveTab"]; addMessageListener("SPPingService", this._messageListener); addMessageListener("SpecialPowers.FilesCreated", this._messageListener); addMessageListener("SpecialPowers.FilesError", this._messageListener); let self = this; Services.obs.addObserver(function onInnerWindowDestroyed(subject, topic, data) { var id = subject.QueryInterface(Components.interfaces.nsISupportsPRUint64).data; if (self._windowID === id) { Services.obs.removeObserver(onInnerWindowDestroyed, "inner-window-destroyed"); diff --git a/testing/specialpowers/content/specialpowersAPI.js b/testing/specialpowers/content/specialpowersAPI.js --- a/testing/specialpowers/content/specialpowersAPI.js +++ b/testing/specialpowers/content/specialpowersAPI.js @@ -2079,16 +2079,20 @@ SpecialPowersAPI.prototype = { state = "unloading"; sp._sendAsyncMessage("SPUnloadExtension", {id}); return unloadPromise; }, sendMessage(...args) { sp._sendAsyncMessage("SPExtensionMessage", {id, args}); }, + + grantActiveTab(tabId) { + sp._sendAsyncMessage("SPExtensionGrantActiveTab", {id, tabId}); + }, }; this._sendAsyncMessage("SPLoadExtension", {ext, id}); let listener = (msg) => { if (msg.data.id == id) { if (msg.data.type == "extensionStarted") { state = "running"; diff --git a/toolkit/components/extensions/test/mochitest/file_contentscript_activeTab.html b/toolkit/components/extensions/test/mochitest/file_contentscript_activeTab.html new file mode 100644 --- /dev/null +++ b/toolkit/components/extensions/test/mochitest/file_contentscript_activeTab.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/toolkit/components/extensions/test/mochitest/file_contentscript_activeTab2.html b/toolkit/components/extensions/test/mochitest/file_contentscript_activeTab2.html new file mode 100644 --- /dev/null +++ b/toolkit/components/extensions/test/mochitest/file_contentscript_activeTab2.html @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/toolkit/components/extensions/test/mochitest/file_contentscript_iframe.html b/toolkit/components/extensions/test/mochitest/file_contentscript_iframe.html new file mode 100644 --- /dev/null +++ b/toolkit/components/extensions/test/mochitest/file_contentscript_iframe.html @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/toolkit/components/extensions/test/mochitest/mochitest-common.ini b/toolkit/components/extensions/test/mochitest/mochitest-common.ini --- a/toolkit/components/extensions/test/mochitest/mochitest-common.ini +++ b/toolkit/components/extensions/test/mochitest/mochitest-common.ini @@ -4,16 +4,19 @@ support-files = file_WebNavigation_page1.html file_WebNavigation_page2.html file_WebNavigation_page3.html file_WebRequest_page3.html file_WebRequest_permission_original.html file_WebRequest_permission_original.js file_WebRequest_permission_redirected.html file_WebRequest_permission_redirected.js + file_contentscript_activeTab.html + file_contentscript_activeTab2.html + file_contentscript_iframe.html file_csp.html file_csp.html^headers^ file_ext_test_api_injection.js file_image_bad.png file_image_good.png file_image_great.png file_image_redirect.png file_mixed.html @@ -71,16 +74,17 @@ support-files = skip-if = (toolkit == 'android') # android doesn't have devtools [test_ext_background_teardown.html] [test_ext_clipboard.html] [test_ext_clipboard_image.html] skip-if = headless # disabled test case with_permission_allow_copy, see inline comment. Headless: Bug 1405872 [test_ext_content_security_policy.html] [test_ext_contentscript_about_blank.html] skip-if = os == 'android' # bug 1369440 +[test_ext_contentscript_activeTab.html] [test_ext_contentscript_api_injection.html] [test_ext_contentscript_async_loading.html] skip-if = os == 'android' && debug # The generated script takes too long to load on Android debug [test_ext_contentscript_cache.html] skip-if = (os == 'linux' && debug) || (toolkit == 'android' && debug) # bug 1348241 [test_ext_contentscript_canvas.html] [test_ext_contentscript_context.html] [test_ext_contentscript_create_iframe.html] diff --git a/toolkit/components/extensions/test/mochitest/test_ext_contentscript_activeTab.html b/toolkit/components/extensions/test/mochitest/test_ext_contentscript_activeTab.html new file mode 100644 --- /dev/null +++ b/toolkit/components/extensions/test/mochitest/test_ext_contentscript_activeTab.html @@ -0,0 +1,372 @@ + + + + Test for content script + + + + + + + + + + + +