Bug 1488055 fix loading ext-browser-content script in sidebar when browser_style=false, r=rpl

Differential Revision: https://phabricator.services.mozilla.com/D5196
This commit is contained in:
Shane Caraveo
2018-09-12 18:52:52 +00:00
parent 82226a8118
commit d6623e6be7
4 changed files with 63 additions and 9 deletions

View File

@@ -2394,7 +2394,9 @@ function loadURI(uri, referrer, postData, allowThirdPartyFixup, referrerPolicy,
forceAboutBlankViewerInCurrent,
allowInheritPrincipal,
});
} catch (e) {}
} catch (e) {
Cu.reportError(e);
}
}
/**

View File

@@ -38,7 +38,6 @@ function getBrowser(sidebar) {
browser.setAttribute("tooltip", "aHTMLTooltip");
browser.setAttribute("autocompletepopup", "PopupAutoComplete");
browser.setAttribute("selectmenulist", "ContentSelectDropdown");
browser.setAttribute("onclick", "window.parent.contentAreaClick(event, true);");
// Ensure that the browser is going to run in the same process of the other
// extension pages from the same addon.
@@ -67,20 +66,21 @@ function getBrowser(sidebar) {
browser.messageManager.loadFrameScript("chrome://browser/content/content.js", false, true);
ExtensionParent.apiManager.emit("extension-browser-inserted", browser);
if (sidebar.browserStyle) {
browser.messageManager.loadFrameScript(
"chrome://extensions/content/ext-browser-content.js", false, true);
browser.messageManager.sendAsyncMessage("Extension:InitBrowser", {
stylesheets: ExtensionParent.extensionStylesheets,
});
}
let options = sidebar.browserStyle !== false ? {stylesheets: ExtensionParent.extensionStylesheets} : {};
browser.messageManager.sendAsyncMessage("Extension:InitBrowser", options);
return browser;
});
}
// Stub tabbrowser implementation for use by the tab-modal alert code.
var gBrowser = {
get selectedBrowser() {
return document.getElementById("webext-panels-browser");
},
getTabForBrowser(browser) {
return null;
},

View File

@@ -163,6 +163,7 @@ skip-if = (debug && os == 'linux') # Bug 1377641
[browser_ext_settings_overrides_default_search.js]
[browser_ext_sidebarAction.js]
[browser_ext_sidebarAction_browser_style.js]
[browser_ext_sidebarAction_click.js]
[browser_ext_sidebarAction_context.js]
[browser_ext_sidebarAction_contextMenu.js]
[browser_ext_sidebarAction_runtime.js]

View File

@@ -0,0 +1,51 @@
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
add_task(async function test_sidebar_click_isAppTab_behavior() {
function sidebarScript() {
browser.tabs.onUpdated.addListener(function onUpdated(tabId, changeInfo, tab) {
if (changeInfo.status == "complete" && tab.url == "http://mochi.test:8888/") {
browser.tabs.remove(tab.id);
browser.test.notifyPass("sidebar-click");
}
});
window.addEventListener("load", () => {
browser.test.sendMessage("sidebar-ready");
}, {once: true});
}
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"sidebar_action": {
"default_panel": "panel.html",
"browser_style": false,
},
"permissions": ["tabs"],
},
useAddonManager: "temporary",
files: {
"panel.html": `
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<script src="panel.js" type="text/javascript"></script>
<a id="testlink" href="http://mochi.test:8888">Bugzilla</a>
</html>`,
"panel.js": sidebarScript,
},
});
await extension.startup();
await extension.awaitMessage("sidebar-ready");
// This test fails if docShell.isAppTab has not been set to true.
let content = SidebarUI.browser.contentWindow;
await BrowserTestUtils.synthesizeMouseAtCenter("#testlink", {}, content.gBrowser.selectedBrowser);
await extension.awaitFinish("sidebar-click");
await extension.unload();
});