Bug 1261785 - Part 2: Use shared-head.js for storage inspector tests. r=mratcliffe

This commit is contained in:
Jarda Snajdr 2016-04-13 04:01:00 -04:00
Родитель 1eaa53ea74
Коммит 58ce1a1893
9 изменённых файлов: 59 добавлений и 154 удалений

Просмотреть файл

@ -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.