|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 |
|
5 let TargetFactory = gDevTools.TargetFactory; |
|
6 |
|
7 let tempScope = {}; |
|
8 Components.utils.import("resource://gre/modules/devtools/Console.jsm", tempScope); |
|
9 let console = tempScope.console; |
|
10 Components.utils.import("resource://gre/modules/Promise.jsm", tempScope); |
|
11 let promise = tempScope.Promise; |
|
12 |
|
13 let {devtools} = Components.utils.import("resource://gre/modules/devtools/Loader.jsm", {}); |
|
14 let TargetFactory = devtools.TargetFactory; |
|
15 |
|
16 gDevTools.testing = true; |
|
17 SimpleTest.registerCleanupFunction(() => { |
|
18 gDevTools.testing = false; |
|
19 }); |
|
20 |
|
21 /** |
|
22 * Open a new tab at a URL and call a callback on load |
|
23 */ |
|
24 function addTab(aURL, aCallback) |
|
25 { |
|
26 waitForExplicitFinish(); |
|
27 |
|
28 gBrowser.selectedTab = gBrowser.addTab(); |
|
29 if (aURL != null) { |
|
30 content.location = aURL; |
|
31 } |
|
32 |
|
33 let deferred = promise.defer(); |
|
34 |
|
35 let tab = gBrowser.selectedTab; |
|
36 let target = TargetFactory.forTab(gBrowser.selectedTab); |
|
37 let browser = gBrowser.getBrowserForTab(tab); |
|
38 |
|
39 function onTabLoad() { |
|
40 browser.removeEventListener("load", onTabLoad, true); |
|
41 |
|
42 if (aCallback != null) { |
|
43 aCallback(browser, tab, browser.contentDocument); |
|
44 } |
|
45 |
|
46 deferred.resolve({ browser: browser, tab: tab, target: target }); |
|
47 } |
|
48 |
|
49 browser.addEventListener("load", onTabLoad, true); |
|
50 return deferred.promise; |
|
51 } |
|
52 |
|
53 registerCleanupFunction(function tearDown() { |
|
54 while (gBrowser.tabs.length > 1) { |
|
55 gBrowser.removeCurrentTab(); |
|
56 } |
|
57 }); |
|
58 |
|
59 function synthesizeKeyFromKeyTag(aKeyId, document) { |
|
60 let key = document.getElementById(aKeyId); |
|
61 isnot(key, null, "Successfully retrieved the <key> node"); |
|
62 |
|
63 let modifiersAttr = key.getAttribute("modifiers"); |
|
64 |
|
65 let name = null; |
|
66 |
|
67 if (key.getAttribute("keycode")) |
|
68 name = key.getAttribute("keycode"); |
|
69 else if (key.getAttribute("key")) |
|
70 name = key.getAttribute("key"); |
|
71 |
|
72 isnot(name, null, "Successfully retrieved keycode/key"); |
|
73 |
|
74 let modifiers = { |
|
75 shiftKey: modifiersAttr.match("shift"), |
|
76 ctrlKey: modifiersAttr.match("ctrl"), |
|
77 altKey: modifiersAttr.match("alt"), |
|
78 metaKey: modifiersAttr.match("meta"), |
|
79 accelKey: modifiersAttr.match("accel") |
|
80 } |
|
81 |
|
82 EventUtils.synthesizeKey(name, modifiers); |
|
83 } |