Wed, 31 Dec 2014 06:09:35 +0100
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 }