summaryrefslogtreecommitdiffstats
path: root/devtools/client/framework/test/browser_toolbox_show_toolbox_tool_ready.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/framework/test/browser_toolbox_show_toolbox_tool_ready.js')
-rw-r--r--devtools/client/framework/test/browser_toolbox_show_toolbox_tool_ready.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/devtools/client/framework/test/browser_toolbox_show_toolbox_tool_ready.js b/devtools/client/framework/test/browser_toolbox_show_toolbox_tool_ready.js
new file mode 100644
index 0000000000..d24f8cfedf
--- /dev/null
+++ b/devtools/client/framework/test/browser_toolbox_show_toolbox_tool_ready.js
@@ -0,0 +1,69 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const URL =
+ "data:text/html;charset=utf8,test for showToolbox called while tool is opened";
+const lazyToolId = "testtool1";
+
+registerCleanupFunction(() => {
+ gDevTools.unregisterTool(lazyToolId);
+});
+
+// Delay to wait before the lazy tool should finish
+const TOOL_OPEN_DELAY = 3000;
+
+class LazyDevToolsPanel extends DevToolPanel {
+ constructor(iframeWindow, toolbox) {
+ super(iframeWindow, toolbox);
+ }
+
+ async open() {
+ await wait(TOOL_OPEN_DELAY);
+ return this;
+ }
+}
+
+function isPanelReady(toolbox, toolId) {
+ return !!toolbox.getPanel(toolId);
+}
+
+/**
+ * Test that showToolbox will wait until the specified tool is completely read before
+ * returning. See Bug 1543907.
+ */
+add_task(async function automaticallyBindTexbox() {
+ info(
+ "Registering a tool with an input field and making sure the context menu works"
+ );
+
+ gDevTools.registerTool({
+ id: lazyToolId,
+ isToolSupported: () => true,
+ url: CHROME_URL_ROOT + "doc_lazy_tool.html",
+ label: "Lazy",
+ build(iframeWindow, toolbox) {
+ this.panel = new LazyDevToolsPanel(iframeWindow, toolbox);
+ return this.panel.open();
+ },
+ });
+
+ const tab = await addTab(URL);
+ const toolbox = await openToolboxForTab(tab, "inspector");
+ const onLazyToolReady = toolbox.once(lazyToolId + "-ready");
+ toolbox.selectTool(lazyToolId);
+
+ info("Wait until toolbox considers the current tool is the lazy tool");
+ await waitUntil(() => toolbox.currentToolId == lazyToolId);
+
+ ok(!isPanelReady(toolbox, lazyToolId), "lazyTool should not be ready yet");
+ await gDevTools.showToolboxForTab(tab, { toolId: lazyToolId });
+ ok(
+ isPanelReady(toolbox, lazyToolId),
+ "lazyTool should not ready after showToolbox"
+ );
+
+ // Make sure lazyTool is ready before leaving the test.
+ await onLazyToolReady;
+});