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, forceAboutBlankViewerInCurrent,
allowInheritPrincipal, allowInheritPrincipal,
}); });
} catch (e) {} } catch (e) {
Cu.reportError(e);
}
} }
/** /**

View File

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

View File

@@ -163,6 +163,7 @@ skip-if = (debug && os == 'linux') # Bug 1377641
[browser_ext_settings_overrides_default_search.js] [browser_ext_settings_overrides_default_search.js]
[browser_ext_sidebarAction.js] [browser_ext_sidebarAction.js]
[browser_ext_sidebarAction_browser_style.js] [browser_ext_sidebarAction_browser_style.js]
[browser_ext_sidebarAction_click.js]
[browser_ext_sidebarAction_context.js] [browser_ext_sidebarAction_context.js]
[browser_ext_sidebarAction_contextMenu.js] [browser_ext_sidebarAction_contextMenu.js]
[browser_ext_sidebarAction_runtime.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();
});