Bug 1474379 - Add test for opening an ext devtools panel when ext ID includes 'inspector'. draft
authorIan Moody <moz-ian@perix.co.uk>
Tue, 10 Jul 2018 17:38:35 +0100
changeset 816100 b618727d78eb4dc8bb1f3fcc000bf9ab23d5dc46
parent 815712 cc9627465eba94dd2a1e8cec1476df6f8a8149cd
push id115760
push usermoz-ian@perix.co.uk
push dateTue, 10 Jul 2018 16:39:34 +0000
bugs1474379
milestone63.0a1
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
browser/components/extensions/test/browser/browser_ext_devtools_panel.js
--- 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);
+});