2012-11-30 00:07:59 -08:00
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
2013-04-11 13:59:08 -07:00
|
|
|
let TargetFactory = gDevTools.TargetFactory;
|
|
|
|
|
2012-11-30 00:07:59 -08:00
|
|
|
let tempScope = {};
|
2012-12-05 03:14:09 -08:00
|
|
|
Components.utils.import("resource://gre/modules/devtools/Console.jsm", tempScope);
|
2012-11-30 00:07:59 -08:00
|
|
|
let console = tempScope.console;
|
2013-02-01 11:43:15 -08:00
|
|
|
Components.utils.import("resource://gre/modules/commonjs/sdk/core/promise.js", tempScope);
|
2012-12-13 05:03:55 -08:00
|
|
|
let Promise = tempScope.Promise;
|
2012-11-30 00:07:59 -08:00
|
|
|
|
2013-04-11 13:59:08 -07:00
|
|
|
let {devtools} = Components.utils.import("resource:///modules/devtools/gDevTools.jsm", {});
|
|
|
|
let TargetFactory = devtools.TargetFactory;
|
|
|
|
|
2012-11-30 00:07:59 -08:00
|
|
|
/**
|
|
|
|
* Open a new tab at a URL and call a callback on load
|
|
|
|
*/
|
|
|
|
function addTab(aURL, aCallback)
|
|
|
|
{
|
|
|
|
waitForExplicitFinish();
|
|
|
|
|
|
|
|
gBrowser.selectedTab = gBrowser.addTab();
|
2012-12-13 05:03:55 -08:00
|
|
|
if (aURL != null) {
|
|
|
|
content.location = aURL;
|
|
|
|
}
|
|
|
|
|
|
|
|
let deferred = Promise.defer();
|
2012-11-30 00:07:59 -08:00
|
|
|
|
|
|
|
let tab = gBrowser.selectedTab;
|
2012-12-13 05:03:55 -08:00
|
|
|
let target = TargetFactory.forTab(gBrowser.selectedTab);
|
2012-11-30 00:07:59 -08:00
|
|
|
let browser = gBrowser.getBrowserForTab(tab);
|
|
|
|
|
|
|
|
function onTabLoad() {
|
|
|
|
browser.removeEventListener("load", onTabLoad, true);
|
2012-12-13 05:03:55 -08:00
|
|
|
|
|
|
|
if (aCallback != null) {
|
|
|
|
aCallback(browser, tab, browser.contentDocument);
|
|
|
|
}
|
|
|
|
|
|
|
|
deferred.resolve({ browser: browser, tab: tab, target: target });
|
2012-11-30 00:07:59 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
browser.addEventListener("load", onTabLoad, true);
|
2012-12-13 05:03:55 -08:00
|
|
|
return deferred.promise;
|
2012-11-30 00:07:59 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
registerCleanupFunction(function tearDown() {
|
|
|
|
while (gBrowser.tabs.length > 1) {
|
|
|
|
gBrowser.removeCurrentTab();
|
|
|
|
}
|
|
|
|
});
|
2013-04-15 05:34:48 -07:00
|
|
|
|
|
|
|
function synthesizeKeyFromKeyTag(aKeyId, document) {
|
|
|
|
let key = document.getElementById(aKeyId);
|
|
|
|
isnot(key, null, "Successfully retrieved the <key> node");
|
|
|
|
|
|
|
|
let modifiersAttr = key.getAttribute("modifiers");
|
|
|
|
|
|
|
|
let name = null;
|
|
|
|
|
|
|
|
if (key.getAttribute("keycode"))
|
|
|
|
name = key.getAttribute("keycode");
|
|
|
|
else if (key.getAttribute("key"))
|
|
|
|
name = key.getAttribute("key");
|
|
|
|
|
|
|
|
isnot(name, null, "Successfully retrieved keycode/key");
|
|
|
|
|
|
|
|
let modifiers = {
|
|
|
|
shiftKey: modifiersAttr.match("shift"),
|
|
|
|
ctrlKey: modifiersAttr.match("ctrl"),
|
|
|
|
altKey: modifiersAttr.match("alt"),
|
|
|
|
metaKey: modifiersAttr.match("meta"),
|
|
|
|
accelKey: modifiersAttr.match("accel")
|
|
|
|
}
|
|
|
|
|
|
|
|
EventUtils.synthesizeKey(name, modifiers);
|
|
|
|
}
|