зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1261785 - Part 2: Use shared-head.js for storage inspector tests. r=mratcliffe
This commit is contained in:
Родитель
1eaa53ea74
Коммит
58ce1a1893
|
@ -317,3 +317,51 @@ function evalInDebuggee (mm, script) {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Wait for a context menu popup to open.
|
||||
*
|
||||
* @param nsIDOMElement popup
|
||||
* The XUL popup you expect to open.
|
||||
* @param nsIDOMElement button
|
||||
* The button/element that receives the contextmenu event. This is
|
||||
* expected to open the popup.
|
||||
* @param function onShown
|
||||
* Function to invoke on popupshown event.
|
||||
* @param function onHidden
|
||||
* Function to invoke on popuphidden event.
|
||||
* @return object
|
||||
* A Promise object that is resolved after the popuphidden event
|
||||
* callback is invoked.
|
||||
*/
|
||||
function waitForContextMenu(popup, button, onShown, onHidden) {
|
||||
let deferred = promise.defer();
|
||||
|
||||
function onPopupShown() {
|
||||
info("onPopupShown");
|
||||
popup.removeEventListener("popupshown", onPopupShown);
|
||||
|
||||
onShown && onShown();
|
||||
|
||||
// Use executeSoon() to get out of the popupshown event.
|
||||
popup.addEventListener("popuphidden", onPopupHidden);
|
||||
executeSoon(() => popup.hidePopup());
|
||||
}
|
||||
function onPopupHidden() {
|
||||
info("onPopupHidden");
|
||||
popup.removeEventListener("popuphidden", onPopupHidden);
|
||||
|
||||
onHidden && onHidden();
|
||||
|
||||
deferred.resolve(popup);
|
||||
}
|
||||
|
||||
popup.addEventListener("popupshown", onPopupShown);
|
||||
|
||||
info("wait for the context menu to open");
|
||||
button.scrollIntoView();
|
||||
let eventDetails = {type: "contextmenu", button: 2};
|
||||
EventUtils.synthesizeMouse(button, 2, 2, eventDetails,
|
||||
button.ownerDocument.defaultView);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
// Tests getAdjustedQuads works properly in a variety of use cases including
|
||||
// iframes, scroll and zoom
|
||||
|
||||
var {utils: Cu} = Components;
|
||||
"use strict";
|
||||
|
||||
var {getAdjustedQuads} = require("devtools/shared/layout/utils");
|
||||
|
||||
const TEST_URI = TEST_URI_ROOT + "browser_layoutHelpers-getBoxQuads.html";
|
||||
|
||||
add_task(function* () {
|
||||
|
||||
let tab = yield addTab(TEST_URI);
|
||||
let doc = tab.linkedBrowser.contentDocument;
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ support-files =
|
|||
storage-unsecured-iframe.html
|
||||
storage-updates.html
|
||||
head.js
|
||||
!/devtools/client/framework/test/shared-head.js
|
||||
|
||||
[browser_storage_basic.js]
|
||||
[browser_storage_cache_error.js]
|
||||
|
|
|
@ -13,7 +13,7 @@ add_task(function* () {
|
|||
|
||||
const cacheItemId = ["Cache", "javascript:parent.frameContent"];
|
||||
|
||||
gUI.tree.selectedItem = cacheItemId;
|
||||
yield selectTreeItem(cacheItemId);
|
||||
ok(gUI.tree.isSelected(cacheItemId),
|
||||
`The item ${cacheItemId.join(" > ")} is present in the tree`);
|
||||
|
||||
|
|
|
@ -5,11 +5,12 @@
|
|||
"use strict";
|
||||
|
||||
/* eslint no-unused-vars: [2, {"vars": "local"}] */
|
||||
/* import-globals-from ../../framework/test/shared-head.js */
|
||||
|
||||
var { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
|
||||
var { TargetFactory } = require("devtools/client/framework/target");
|
||||
var promise = require("promise");
|
||||
var DevToolsUtils = require("devtools/shared/DevToolsUtils");
|
||||
// shared-head.js handles imports, constants, and utility functions
|
||||
Services.scriptloader.loadSubScript(
|
||||
"chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js",
|
||||
this);
|
||||
|
||||
const {TableWidget} = require("devtools/client/shared/widgets/TableWidget");
|
||||
const SPLIT_CONSOLE_PREF = "devtools.toolbox.splitconsoleEnabled";
|
||||
|
@ -23,8 +24,6 @@ const MAIN_DOMAIN = "http://test1.example.org/" + PATH;
|
|||
const ALT_DOMAIN = "http://sectest1.example.org/" + PATH;
|
||||
const ALT_DOMAIN_SECURED = "https://sectest1.example.org:443/" + PATH;
|
||||
|
||||
waitForExplicitFinish();
|
||||
|
||||
var gToolbox, gPanelWindow, gWindow, gUI;
|
||||
|
||||
// Services.prefs.setBoolPref(DUMPEMIT_PREF, true);
|
||||
|
@ -32,9 +31,7 @@ var gToolbox, gPanelWindow, gWindow, gUI;
|
|||
|
||||
Services.prefs.setBoolPref(STORAGE_PREF, true);
|
||||
Services.prefs.setBoolPref(CACHES_ON_HTTP_PREF, true);
|
||||
DevToolsUtils.testing = true;
|
||||
registerCleanupFunction(() => {
|
||||
DevToolsUtils.testing = false;
|
||||
gToolbox = gPanelWindow = gWindow = gUI = null;
|
||||
Services.prefs.clearUserPref(STORAGE_PREF);
|
||||
Services.prefs.clearUserPref(SPLIT_CONSOLE_PREF);
|
||||
|
@ -43,46 +40,6 @@ registerCleanupFunction(() => {
|
|||
Services.prefs.clearUserPref(CACHES_ON_HTTP_PREF);
|
||||
});
|
||||
|
||||
registerCleanupFunction(function* cleanup() {
|
||||
let target = TargetFactory.forTab(gBrowser.selectedTab);
|
||||
yield gDevTools.closeToolbox(target);
|
||||
|
||||
while (gBrowser.tabs.length > 1) {
|
||||
gBrowser.removeCurrentTab();
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Add a new test tab in the browser and load the given url.
|
||||
*
|
||||
* @param {String} url The url to be loaded in the new tab
|
||||
*
|
||||
* @return a promise that resolves to the content window when the url is loaded
|
||||
*/
|
||||
function addTab(url) {
|
||||
info("Adding a new tab with URL: '" + url + "'");
|
||||
let def = promise.defer();
|
||||
|
||||
// Bug 921935 should bring waitForFocus() support to e10s, which would
|
||||
// probably cover the case of the test losing focus when the page is loading.
|
||||
// For now, we just make sure the window is focused.
|
||||
window.focus();
|
||||
|
||||
let tab = window.gBrowser.selectedTab = window.gBrowser.addTab(url);
|
||||
let linkedBrowser = tab.linkedBrowser;
|
||||
|
||||
linkedBrowser.addEventListener("load", function onload(event) {
|
||||
if (event.originalTarget.location.href != url) {
|
||||
return;
|
||||
}
|
||||
linkedBrowser.removeEventListener("load", onload, true);
|
||||
info("URL '" + url + "' loading complete");
|
||||
def.resolve(tab.linkedBrowser.contentWindow);
|
||||
}, true);
|
||||
|
||||
return def.promise;
|
||||
}
|
||||
|
||||
/**
|
||||
* This generator function opens the given url in a new tab, then sets up the
|
||||
* page by waiting for all cookies, indexedDB items etc. to be created; Then
|
||||
|
@ -94,7 +51,8 @@ function addTab(url) {
|
|||
* @return {Promise} A promise that resolves after storage inspector is ready
|
||||
*/
|
||||
function* openTabAndSetupStorage(url) {
|
||||
let content = yield addTab(url);
|
||||
let tab = yield addTab(url);
|
||||
let content = tab.linkedBrowser.contentWindow;
|
||||
|
||||
gWindow = content.wrappedJSObject;
|
||||
|
||||
|
@ -806,54 +764,6 @@ function PressKeyXTimes(key, x, modifiers = {}) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Wait for a context menu popup to open.
|
||||
*
|
||||
* @param nsIDOMElement popup
|
||||
* The XUL popup you expect to open.
|
||||
* @param nsIDOMElement button
|
||||
* The button/element that receives the contextmenu event. This is
|
||||
* expected to open the popup.
|
||||
* @param function onShown
|
||||
* Function to invoke on popupshown event.
|
||||
* @param function onHidden
|
||||
* Function to invoke on popuphidden event.
|
||||
* @return object
|
||||
* A Promise object that is resolved after the popuphidden event
|
||||
* callback is invoked.
|
||||
*/
|
||||
function waitForContextMenu(popup, button, onShown, onHidden) {
|
||||
let deferred = promise.defer();
|
||||
|
||||
function onPopupShown() {
|
||||
info("onPopupShown");
|
||||
popup.removeEventListener("popupshown", onPopupShown);
|
||||
|
||||
onShown && onShown();
|
||||
|
||||
// Use executeSoon() to get out of the popupshown event.
|
||||
popup.addEventListener("popuphidden", onPopupHidden);
|
||||
executeSoon(() => popup.hidePopup());
|
||||
}
|
||||
function onPopupHidden() {
|
||||
info("onPopupHidden");
|
||||
popup.removeEventListener("popuphidden", onPopupHidden);
|
||||
|
||||
onHidden && onHidden();
|
||||
|
||||
deferred.resolve(popup);
|
||||
}
|
||||
|
||||
popup.addEventListener("popupshown", onPopupShown);
|
||||
|
||||
info("wait for the context menu to open");
|
||||
button.scrollIntoView();
|
||||
let eventDetails = {type: "contextmenu", button: 2};
|
||||
EventUtils.synthesizeMouse(button, 2, 2, eventDetails,
|
||||
button.ownerDocument.defaultView);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify the storage inspector state: check that given type/host exists
|
||||
* in the tree, and that the table contains rows with specified names.
|
||||
|
|
|
@ -47,8 +47,6 @@ add_task(function* () {
|
|||
|
||||
// Test that the "Copy Link Location" menu item is hidden for non-network
|
||||
// messages.
|
||||
message.scrollIntoView();
|
||||
|
||||
yield waitForContextMenu(menu, message, () => {
|
||||
let isHidden = menu.querySelector(CONTEXT_MENU_ID).hidden;
|
||||
ok(isHidden, CONTEXT_MENU_ID + " is hidden");
|
||||
|
@ -95,8 +93,6 @@ add_task(function* () {
|
|||
|
||||
// Test that the "Copy Link Location" menu item is visible for network-related
|
||||
// messages.
|
||||
message.scrollIntoView();
|
||||
|
||||
yield waitForContextMenu(menu, message, () => {
|
||||
let isVisible = !menu.querySelector(CONTEXT_MENU_ID).hidden;
|
||||
ok(isVisible, CONTEXT_MENU_ID + " is visible");
|
||||
|
|
|
@ -42,7 +42,6 @@ function test() {
|
|||
|
||||
outputNode.focus();
|
||||
let message = [...results.matched][0];
|
||||
message.scrollIntoView();
|
||||
|
||||
yield waitForContextMenu(contextMenu, message, copyFromPopup,
|
||||
testContextMenuCopy);
|
||||
|
|
|
@ -66,7 +66,6 @@ function onConsoleMessage(results) {
|
|||
let isDisabled = !controller || !controller.isCommandEnabled(COMMAND_NAME);
|
||||
ok(isDisabled, COMMAND_NAME + " should be disabled.");
|
||||
|
||||
outputNode.selectedItem.scrollIntoView();
|
||||
return waitForContextMenu(contextMenu, outputNode.selectedItem, () => {
|
||||
let isHidden = contextMenu.querySelector(CONTEXT_MENU_ID).hidden;
|
||||
ok(isHidden, CONTEXT_MENU_ID + " should be hidden.");
|
||||
|
@ -131,7 +130,6 @@ function testOnNetActivityContextMenu(msg) {
|
|||
|
||||
outputNode.focus();
|
||||
HUD.ui.output.selectMessage(msg);
|
||||
msg.scrollIntoView();
|
||||
|
||||
info("net activity context menu");
|
||||
|
||||
|
|
|
@ -241,53 +241,6 @@ var closeConsole = Task.async(function* (tab) {
|
|||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Wait for a context menu popup to open.
|
||||
*
|
||||
* @param nsIDOMElement popup
|
||||
* The XUL popup you expect to open.
|
||||
* @param nsIDOMElement button
|
||||
* The button/element that receives the contextmenu event. This is
|
||||
* expected to open the popup.
|
||||
* @param function onShown
|
||||
* Function to invoke on popupshown event.
|
||||
* @param function onHidden
|
||||
* Function to invoke on popuphidden event.
|
||||
* @return object
|
||||
* A Promise object that is resolved after the popuphidden event
|
||||
* callback is invoked.
|
||||
*/
|
||||
function waitForContextMenu(popup, button, onShown, onHidden) {
|
||||
let deferred = promise.defer();
|
||||
|
||||
function onPopupShown() {
|
||||
info("onPopupShown");
|
||||
popup.removeEventListener("popupshown", onPopupShown);
|
||||
|
||||
onShown && onShown();
|
||||
|
||||
// Use executeSoon() to get out of the popupshown event.
|
||||
popup.addEventListener("popuphidden", onPopupHidden);
|
||||
executeSoon(() => popup.hidePopup());
|
||||
}
|
||||
function onPopupHidden() {
|
||||
info("onPopupHidden");
|
||||
popup.removeEventListener("popuphidden", onPopupHidden);
|
||||
|
||||
onHidden && onHidden();
|
||||
|
||||
deferred.resolve(popup);
|
||||
}
|
||||
|
||||
popup.addEventListener("popupshown", onPopupShown);
|
||||
|
||||
info("wait for the context menu to open");
|
||||
let eventDetails = {type: "contextmenu", button: 2};
|
||||
EventUtils.synthesizeMouse(button, 2, 2, eventDetails,
|
||||
button.ownerDocument.defaultView);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
/**
|
||||
* Listen for a new tab to open and return a promise that resolves when one
|
||||
* does and completes the load event.
|
||||
|
|
Загрузка…
Ссылка в новой задаче