# HG changeset patch # User Tomislav Jovanovic # Date 1489568803 -3600 # Wed Mar 15 10:06:43 2017 +0100 # Node ID 5276896d6834525675a770d102cb298b7269e3b4 # Parent f923de5a11109e677c993d7d95d1a9aba1a89e9a Bug 1319070 - Test matching against the principal MozReview-Commit-ID: LjuiizBh1OK diff -r f923de5a1110 -r 5276896d6834 browser/components/extensions/test/browser/browser_ext_tabs_executeScript_bad.js --- a/browser/components/extensions/test/browser/browser_ext_tabs_executeScript_bad.js Wed Mar 08 13:14:29 2017 +0800 +++ b/browser/components/extensions/test/browser/browser_ext_tabs_executeScript_bad.js Wed Mar 15 10:06:43 2017 +0100 @@ -142,6 +142,76 @@ add_task(function* testBadPermissions() yield BrowserTestUtils.removeTab(tab1); }); +add_task(function* testMatchDataURI() { + const target = ExtensionTestUtils.loadExtension({ + files: { + "page.html": ` + + + + `, + "page.js": function() { + browser.test.onMessage.addListener((msg, url) => { + window.location.href = url; + }); + }, + }, + background() { + browser.tabs.create({active: true, url: browser.runtime.getURL("page.html")}); + }, + }); + + const scripts = ExtensionTestUtils.loadExtension({ + manifest: { + permissions: ["", "webNavigation"], + }, + background() { + browser.webNavigation.onCompleted.addListener(({url, frameId}) => { + browser.test.log(`Document loading complete: ${url}`); + if (frameId === 0) { + browser.test.sendMessage("tab-ready", url); + } + }); + + browser.test.onMessage.addListener(async msg => { + browser.test.assertRejects( + browser.tabs.executeScript({ + code: "location.href;", + allFrames: true, + }), + /No window matching/, + "Should not execute in `data:` frame"); + + browser.test.sendMessage("done"); + }); + }, + }); + + yield scripts.startup(); + yield target.startup(); + + // Test extension page with a data: iframe. + const page = yield scripts.awaitMessage("tab-ready"); + ok(page.endsWith("page.html"), "Extension page loaded into a tab"); + + scripts.sendMessage("execute"); + yield scripts.awaitMessage("done"); + + // Test extension tab navigated to a data: URI. + const data = "data:text/html;charset=utf-8,also-inherits"; + target.sendMessage("navigate", data); + + const url = yield scripts.awaitMessage("tab-ready"); + is(url, data, "Extension tab navigated to a data: URI"); + + scripts.sendMessage("execute"); + yield scripts.awaitMessage("done"); + + yield BrowserTestUtils.removeTab(gBrowser.selectedTab); + yield scripts.unload(); + yield target.unload(); +}); + add_task(function* testBadURL() { async function background() { let promises = [ diff -r f923de5a1110 -r 5276896d6834 toolkit/components/extensions/test/mochitest/chrome.ini --- a/toolkit/components/extensions/test/mochitest/chrome.ini Wed Mar 08 13:14:29 2017 +0800 +++ b/toolkit/components/extensions/test/mochitest/chrome.ini Wed Mar 15 10:06:43 2017 +0100 @@ -18,6 +18,7 @@ skip-if = (os == 'android') # android do [test_chrome_ext_background_page.html] skip-if = (toolkit == 'android') # android doesn't have devtools [test_chrome_ext_eventpage_warning.html] +[test_chrome_ext_contentscript_data_uri.html] [test_chrome_ext_contentscript_unrecognizedprop_warning.html] [test_chrome_ext_hybrid_addons.html] [test_chrome_ext_trustworthy_origin.html] diff -r f923de5a1110 -r 5276896d6834 toolkit/components/extensions/test/mochitest/test_chrome_ext_contentscript_data_uri.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolkit/components/extensions/test/mochitest/test_chrome_ext_contentscript_data_uri.html Wed Mar 15 10:06:43 2017 +0100 @@ -0,0 +1,98 @@ + + + + Test content script matching a data: URI + + + + + + + + + + + +