browser/devtools/framework/test/browser_toolbox_dynamic_registration.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* vim: set ts=2 et sw=2 tw=80: */
     2 /* Any copyright is dedicated to the Public Domain.
     3    http://creativecommons.org/publicdomain/zero/1.0/ */
     5 let toolbox;
     7 function test()
     8 {
     9   waitForExplicitFinish();
    11   gBrowser.selectedTab = gBrowser.addTab();
    12   let target = TargetFactory.forTab(gBrowser.selectedTab);
    14   gBrowser.selectedBrowser.addEventListener("load", function onLoad(evt) {
    15     gBrowser.selectedBrowser.removeEventListener(evt.type, onLoad, true);
    16     gDevTools.showToolbox(target).then(testRegister);
    17   }, true);
    19   content.location = "data:text/html,test for dynamically registering and unregistering tools";
    20 }
    22 function testRegister(aToolbox)
    23 {
    24   toolbox = aToolbox
    25   gDevTools.once("tool-registered", toolRegistered);
    27   gDevTools.registerTool({
    28     id: "test-tool",
    29     label: "Test Tool",
    30     inMenu: true,
    31     isTargetSupported: function() true,
    32     build: function() {}
    33   });
    34 }
    36 function toolRegistered(event, toolId)
    37 {
    38   is(toolId, "test-tool", "tool-registered event handler sent tool id");
    40   ok(gDevTools.getToolDefinitionMap().has(toolId), "tool added to map");
    42   // test that it appeared in the UI
    43   let doc = toolbox.frame.contentDocument;
    44   let tab = doc.getElementById("toolbox-tab-" + toolId);
    45   ok(tab, "new tool's tab exists in toolbox UI");
    47   let panel = doc.getElementById("toolbox-panel-" + toolId);
    48   ok(panel, "new tool's panel exists in toolbox UI");
    50   for (let win of getAllBrowserWindows()) {
    51     let command = win.document.getElementById("Tools:" + toolId);
    52     ok(command, "command for new tool added to every browser window");
    53     let menuitem = win.document.getElementById("menuitem_" + toolId);
    54     ok(menuitem, "menu item of new tool added to every browser window");
    55   }
    57   // then unregister it
    58   testUnregister();
    59 }
    61 function getAllBrowserWindows() {
    62   let wins = [];
    63   let enumerator = Services.wm.getEnumerator("navigator:browser");
    64   while (enumerator.hasMoreElements()) {
    65     wins.push(enumerator.getNext());
    66   }
    67   return wins;
    68 }
    70 function testUnregister()
    71 {
    72   gDevTools.once("tool-unregistered", toolUnregistered);
    74   gDevTools.unregisterTool("test-tool");
    75 }
    77 function toolUnregistered(event, toolDefinition)
    78 {
    79   let toolId = toolDefinition.id;
    80   is(toolId, "test-tool", "tool-unregistered event handler sent tool id");
    82   ok(!gDevTools.getToolDefinitionMap().has(toolId), "tool removed from map");
    84   // test that it disappeared from the UI
    85   let doc = toolbox.frame.contentDocument;
    86   let tab = doc.getElementById("toolbox-tab-" + toolId);
    87   ok(!tab, "tool's tab was removed from the toolbox UI");
    89   let panel = doc.getElementById("toolbox-panel-" + toolId);
    90   ok(!panel, "tool's panel was removed from toolbox UI");
    92   for (let win of getAllBrowserWindows()) {
    93     let command = win.document.getElementById("Tools:" + toolId);
    94     ok(!command, "command removed from every browser window");
    95     let menuitem = win.document.getElementById("menuitem_" + toolId);
    96     ok(!menuitem, "menu item removed from every browser window");
    97   }
    99   cleanup();
   100 }
   102 function cleanup()
   103 {
   104   toolbox.destroy();
   105   toolbox = null;
   106   gBrowser.removeCurrentTab();
   107   finish();
   108 }

mercurial