diff -r 000000000000 -r 6474c204b198 browser/devtools/framework/test/head.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/devtools/framework/test/head.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,83 @@ +/* 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/Promise.jsm", tempScope); +let promise = tempScope.Promise; + +let {devtools} = Components.utils.import("resource://gre/modules/devtools/Loader.jsm", {}); +let TargetFactory = devtools.TargetFactory; + +gDevTools.testing = true; +SimpleTest.registerCleanupFunction(() => { + gDevTools.testing = false; +}); + +/** + * 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); +}