Bug 1474379 - Add test for opening an ext devtools panel when ext ID includes 'inspector'.
Shamelessly cribbed from test_devtools_page_panels_switch_toolbox_host.
MozReview-Commit-ID: 1M5FQjI0Rqt
--- a/browser/components/extensions/test/browser/browser_ext_devtools_panel.js
+++ b/browser/components/extensions/test/browser/browser_ext_devtools_panel.js
@@ -661,8 +661,73 @@ add_task(async function test_devtools_pa
await extension.awaitMessage("test_invalid_devtools_panel_urls_done");
await closeToolboxForTab(tab);
await extension.unload();
BrowserTestUtils.removeTab(tab);
});
+
+add_task(async function test_devtools_page_panel_open_with_inspector_in_ext_id() {
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://mochi.test:8888/");
+
+ function devtools_panel() {
+ browser.test.sendMessage("devtools_panel_loaded", window.location.href);
+ }
+
+ async function devtools_page() {
+ const panel = await browser.devtools.panels.create(
+ "Test Panel Create with ID", "fake-icon.png", "devtools_panel.html"
+ );
+
+ panel.onShown.addListener(panelWindow => {
+ browser.test.sendMessage("devtools_panel_shown", panelWindow.location.href);
+ });
+
+ browser.test.sendMessage("devtools_panel_created");
+ }
+
+ const EXTENSION_ID = "inspector@devtools-ext-id-includes-panel.test";
+
+ let extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ devtools_page: "devtools_page.html",
+ applications: {
+ gecko: {id: EXTENSION_ID},
+ },
+ },
+ files: {
+ "devtools_page.html": createPage("devtools_page.js"),
+ "devtools_page.js": devtools_page,
+ "devtools_panel.html": createPage("devtools_panel.js", "DEVTOOLS PANEL"),
+ "devtools_panel.js": devtools_panel,
+ },
+ });
+
+ await extension.startup();
+
+ let {toolbox, target} = await openToolboxForTab(tab);
+ await extension.awaitMessage("devtools_panel_created");
+
+ const toolboxAdditionalTools = toolbox.getAdditionalTools();
+
+ is(toolboxAdditionalTools.length, 1,
+ "Got the expected number of toolbox specific panel registered.");
+
+ const panelDef = toolboxAdditionalTools[0];
+ const panelId = panelDef.id;
+
+ info("Selecting the addon devtools panel");
+ await gDevTools.showToolbox(target, panelId);
+
+ info("Wait for the panel to show and load for the first time");
+ const panelShownURL = await extension.awaitMessage("devtools_panel_shown");
+ const panelLoadedURL = await extension.awaitMessage("devtools_panel_loaded");
+
+ is(panelShownURL, panelLoadedURL, "Got the expected panel URL on the first load");
+
+ await closeToolboxForTab(tab);
+
+ await extension.unload();
+
+ BrowserTestUtils.removeTab(tab);
+});