/* 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/. */ let TargetFactory = gDevTools.TargetFactory; let tempScope = {}; Components.utils.import("resource://gre/modules/devtools/Console.jsm", tempScope); let console = tempScope.console; Components.utils.import("resource://gre/modules/commonjs/sdk/core/promise.js", tempScope); let promise = tempScope.Promise; let {devtools} = Components.utils.import("resource://gre/modules/devtools/Loader.jsm", {}); let TargetFactory = devtools.TargetFactory; /** * Open a new tab at a URL and call a callback on load */ function addTab(aURL, aCallback) { waitForExplicitFinish(); gBrowser.selectedTab = gBrowser.addTab(); if (aURL != null) { content.location = aURL; } let deferred = promise.defer(); let tab = gBrowser.selectedTab; let target = TargetFactory.forTab(gBrowser.selectedTab); let browser = gBrowser.getBrowserForTab(tab); function onTabLoad() { browser.removeEventListener("load", onTabLoad, true); if (aCallback != null) { aCallback(browser, tab, browser.contentDocument); } deferred.resolve({ browser: browser, tab: tab, target: target }); } browser.addEventListener("load", onTabLoad, true); return deferred.promise; } registerCleanupFunction(function tearDown() { while (gBrowser.tabs.length > 1) { gBrowser.removeCurrentTab(); } }); function synthesizeKeyFromKeyTag(aKeyId, document) { let key = document.getElementById(aKeyId); isnot(key, null, "Successfully retrieved the 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); }