Bug 1391720 remove _blank support for background pages, r?kmag
MozReview-Commit-ID: aRpNSrE483
--- a/browser/components/extensions/test/browser/browser_ext_tabs_executeScript_good.js
+++ b/browser/components/extensions/test/browser/browser_ext_tabs_executeScript_good.js
@@ -27,16 +27,22 @@ async function testHasPermission(params)
}
let extension = ExtensionTestUtils.loadExtension({
manifest: params.manifest,
background: `(${background})(${contentSetup})`,
files: {
+ "panel.html": `<!DOCTYPE html>
+ <html>
+ <head><meta charset="utf-8"></head>
+ <body>
+ </body>
+ </html>`,
"script.js": function() {
browser.runtime.sendMessage("script ran");
},
},
});
await extension.startup();
await extension.awaitMessage("ready");
@@ -180,30 +186,30 @@ add_task(async function testGoodPermissi
setup: clickPageAction,
tearDown: closePageAction,
});
info("Test activeTab permission with a browser action w/popup click");
await testHasPermission({
manifest: {
"permissions": ["activeTab"],
- "browser_action": {"default_popup": "_blank.html"},
+ "browser_action": {"default_popup": "panel.html"},
},
setup: async extension => {
await clickBrowserAction(extension);
- return awaitExtensionPanel(extension, window, "_blank.html");
+ return awaitExtensionPanel(extension, window, "panel.html");
},
tearDown: closeBrowserAction,
});
info("Test activeTab permission with a page action w/popup click");
await testHasPermission({
manifest: {
"permissions": ["activeTab"],
- "page_action": {"default_popup": "_blank.html"},
+ "page_action": {"default_popup": "panel.html"},
},
contentSetup: async () => {
let [tab] = await browser.tabs.query({active: true, currentWindow: true});
await browser.pageAction.show(tab.id);
},
setup: clickPageAction,
tearDown: closePageAction,
});
--- a/caps/tests/mochitest/test_extensionURL.html
+++ b/caps/tests/mochitest/test_extensionURL.html
@@ -220,23 +220,18 @@ https://bugzilla.mozilla.org/show_bug.cg
ifr.onload = function() {
ok(true, "Loaded " + url);
var prin = SpecialPowers.wrap(ifr.contentWindow).document.nodePrincipal;
function stripTrailingSlash(s) { return s.replace(/\/$/, ""); }
is(stripTrailingSlash(prin.URI.spec), url, "Principal uri is correct: " + url);
function stripPath(s) { return s.replace(/(.*\/\/.+)\/.*/, "$1"); }
is(prin.originNoSuffix, stripPath(url), "Principal origin is correct: " + prin.originNoSuffix);
is(prin.addonId, "imaginaryaddon-" + url[url.indexOf("/") + 2], "addonId is correct");
- if (/_blank/.test(url)) {
- is(SpecialPowers.wrap(ifr.contentWindow).document.documentElement.innerHTML,
- "<head></head><body></body>", "blank document looks right");
- } else {
- is(SpecialPowers.wrap(ifr.contentWindow).document.title, "resource test file",
- "document looks right");
- }
+ is(SpecialPowers.wrap(ifr.contentWindow).document.title, "resource test file",
+ "document looks right");
ifr.remove();
resolve();
};
document.body.appendChild(ifr);
var threw = false;
try {
navigate(ifr, url);
@@ -275,17 +270,16 @@ https://bugzilla.mozilla.org/show_bug.cg
.then(testXHR.bind(null, cheriseURIStr))
.then(globalSetSubstitution(script, "liebchen", "moz-extension://cherise"))
.then(testLoad.bind(null, liebchenURIStr, navigateWithLocation, /* shouldThrow = */ true))
.then(testXHR.bind(null, liebchenURIStr, /* shouldError = */ true))
.then(setWhitelistCallback.bind(null, ["cherise", "liebchen"]))
.then(testLoad.bind(null, liebchenURIStr, navigateWithLocation))
.then(testLoad.bind(null, liebchenURIStr, navigateWithSrc))
.then(testLoad.bind(null, cheriseURIStr, navigateWithSrc))
- .then(testLoad.bind(null, "moz-extension://cherise/_blank.html", navigateWithSrc))
.then(SimpleTest.finish.bind(SimpleTest),
function(e) { ok(false, "rejected promise: " + e); SimpleTest.finish() }
);
});
</script>
</head>
<body>
--- a/netwerk/protocol/res/ExtensionProtocolHandler.cpp
+++ b/netwerk/protocol/res/ExtensionProtocolHandler.cpp
@@ -405,21 +405,16 @@ ExtensionProtocolHandler::ResolveSpecial
{
// Create special moz-extension:-pages such as moz-extension://foo/_blank.html
// for all registered extensions. We can't just do this as a substitution
// because substitutions can only match on host.
if (!SubstitutingProtocolHandler::HasSubstitution(aHost)) {
return false;
}
- if (aPathname.EqualsLiteral("/_blank.html")) {
- aResult.AssignLiteral("about:blank");
- return true;
- }
-
if (aPathname.EqualsLiteral("/_generated_background_page.html")) {
Unused << EPS().GetGeneratedBackgroundPageUrl(aHost, aResult);
return !aResult.IsEmpty();
}
return false;
}
--- a/toolkit/components/extensions/ext-backgroundPage.js
+++ b/toolkit/components/extensions/ext-backgroundPage.js
@@ -17,21 +17,16 @@ class BackgroundPage extends HiddenExten
this.page = options.page || null;
this.isGenerated = !!options.scripts;
if (this.page) {
this.url = this.extension.baseURI.resolve(this.page);
} else if (this.isGenerated) {
this.url = this.extension.baseURI.resolve("_generated_background_page.html");
}
-
- if (!this.extension.isExtensionURL(this.url)) {
- this.extension.manifestError("Background page must be a file within the extension");
- this.url = this.extension.baseURI.resolve("_blank.html");
- }
}
async build() {
TelemetryStopwatch.start("WEBEXT_BACKGROUND_PAGE_LOAD_MS", this);
await this.createBrowserElement();
this.extension._backgroundPageFrameLoader = this.browser.frameLoader;
extensions.emit("extension-browser-inserted", this.browser);