browser/devtools/framework/test/browser_toolbox_dynamic_registration.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/browser/devtools/framework/test/browser_toolbox_dynamic_registration.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,108 @@
     1.4 +/* vim: set ts=2 et sw=2 tw=80: */
     1.5 +/* Any copyright is dedicated to the Public Domain.
     1.6 +   http://creativecommons.org/publicdomain/zero/1.0/ */
     1.7 +
     1.8 +let toolbox;
     1.9 +
    1.10 +function test()
    1.11 +{
    1.12 +  waitForExplicitFinish();
    1.13 +
    1.14 +  gBrowser.selectedTab = gBrowser.addTab();
    1.15 +  let target = TargetFactory.forTab(gBrowser.selectedTab);
    1.16 +
    1.17 +  gBrowser.selectedBrowser.addEventListener("load", function onLoad(evt) {
    1.18 +    gBrowser.selectedBrowser.removeEventListener(evt.type, onLoad, true);
    1.19 +    gDevTools.showToolbox(target).then(testRegister);
    1.20 +  }, true);
    1.21 +
    1.22 +  content.location = "data:text/html,test for dynamically registering and unregistering tools";
    1.23 +}
    1.24 +
    1.25 +function testRegister(aToolbox)
    1.26 +{
    1.27 +  toolbox = aToolbox
    1.28 +  gDevTools.once("tool-registered", toolRegistered);
    1.29 +
    1.30 +  gDevTools.registerTool({
    1.31 +    id: "test-tool",
    1.32 +    label: "Test Tool",
    1.33 +    inMenu: true,
    1.34 +    isTargetSupported: function() true,
    1.35 +    build: function() {}
    1.36 +  });
    1.37 +}
    1.38 +
    1.39 +function toolRegistered(event, toolId)
    1.40 +{
    1.41 +  is(toolId, "test-tool", "tool-registered event handler sent tool id");
    1.42 +
    1.43 +  ok(gDevTools.getToolDefinitionMap().has(toolId), "tool added to map");
    1.44 +
    1.45 +  // test that it appeared in the UI
    1.46 +  let doc = toolbox.frame.contentDocument;
    1.47 +  let tab = doc.getElementById("toolbox-tab-" + toolId);
    1.48 +  ok(tab, "new tool's tab exists in toolbox UI");
    1.49 +
    1.50 +  let panel = doc.getElementById("toolbox-panel-" + toolId);
    1.51 +  ok(panel, "new tool's panel exists in toolbox UI");
    1.52 +
    1.53 +  for (let win of getAllBrowserWindows()) {
    1.54 +    let command = win.document.getElementById("Tools:" + toolId);
    1.55 +    ok(command, "command for new tool added to every browser window");
    1.56 +    let menuitem = win.document.getElementById("menuitem_" + toolId);
    1.57 +    ok(menuitem, "menu item of new tool added to every browser window");
    1.58 +  }
    1.59 +
    1.60 +  // then unregister it
    1.61 +  testUnregister();
    1.62 +}
    1.63 +
    1.64 +function getAllBrowserWindows() {
    1.65 +  let wins = [];
    1.66 +  let enumerator = Services.wm.getEnumerator("navigator:browser");
    1.67 +  while (enumerator.hasMoreElements()) {
    1.68 +    wins.push(enumerator.getNext());
    1.69 +  }
    1.70 +  return wins;
    1.71 +}
    1.72 +
    1.73 +function testUnregister()
    1.74 +{
    1.75 +  gDevTools.once("tool-unregistered", toolUnregistered);
    1.76 +
    1.77 +  gDevTools.unregisterTool("test-tool");
    1.78 +}
    1.79 +
    1.80 +function toolUnregistered(event, toolDefinition)
    1.81 +{
    1.82 +  let toolId = toolDefinition.id;
    1.83 +  is(toolId, "test-tool", "tool-unregistered event handler sent tool id");
    1.84 +
    1.85 +  ok(!gDevTools.getToolDefinitionMap().has(toolId), "tool removed from map");
    1.86 +
    1.87 +  // test that it disappeared from the UI
    1.88 +  let doc = toolbox.frame.contentDocument;
    1.89 +  let tab = doc.getElementById("toolbox-tab-" + toolId);
    1.90 +  ok(!tab, "tool's tab was removed from the toolbox UI");
    1.91 +
    1.92 +  let panel = doc.getElementById("toolbox-panel-" + toolId);
    1.93 +  ok(!panel, "tool's panel was removed from toolbox UI");
    1.94 +
    1.95 +  for (let win of getAllBrowserWindows()) {
    1.96 +    let command = win.document.getElementById("Tools:" + toolId);
    1.97 +    ok(!command, "command removed from every browser window");
    1.98 +    let menuitem = win.document.getElementById("menuitem_" + toolId);
    1.99 +    ok(!menuitem, "menu item removed from every browser window");
   1.100 +  }
   1.101 +
   1.102 +  cleanup();
   1.103 +}
   1.104 +
   1.105 +function cleanup()
   1.106 +{
   1.107 +  toolbox.destroy();
   1.108 +  toolbox = null;
   1.109 +  gBrowser.removeCurrentTab();
   1.110 +  finish();
   1.111 +}

mercurial