mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-03 22:55:12 +00:00
147 lines
3.7 KiB
JavaScript
147 lines
3.7 KiB
JavaScript
|
/* vim: set ts=2 et sw=2 tw=80: */
|
||
|
/* Any copyright is dedicated to the Public Domain.
|
||
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||
|
|
||
|
"use strict";
|
||
|
|
||
|
// shared-head.js handles imports, constants, and utility functions
|
||
|
Services.scriptloader.loadSubScript(
|
||
|
"chrome://mochitests/content/browser/devtools/client/framework/test/head.js", this);
|
||
|
|
||
|
const JSON_VIEW_PREF = "devtools.jsonview.enabled";
|
||
|
|
||
|
// Enable JSON View for the test
|
||
|
Services.prefs.setBoolPref(JSON_VIEW_PREF, true);
|
||
|
|
||
|
registerCleanupFunction(() => {
|
||
|
Services.prefs.clearUserPref(JSON_VIEW_PREF);
|
||
|
});
|
||
|
|
||
|
// XXX move some API into devtools/framework/test/shared-head.js
|
||
|
|
||
|
/**
|
||
|
* 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 tab object when the url is loaded
|
||
|
*/
|
||
|
function addJsonViewTab(url) {
|
||
|
info("Adding a new JSON tab with URL: '" + url + "'");
|
||
|
|
||
|
let deferred = promise.defer();
|
||
|
addTab(url).then(tab => {
|
||
|
let browser = tab.linkedBrowser;
|
||
|
|
||
|
// Load devtools/shared/frame-script-utils.js
|
||
|
getFrameScript();
|
||
|
|
||
|
// Load frame script with helpers for JSON View tests.
|
||
|
let rootDir = getRootDirectory(gTestPath);
|
||
|
let frameScriptUrl = rootDir + "doc_frame_script.js";
|
||
|
browser.messageManager.loadFrameScript(frameScriptUrl, false);
|
||
|
|
||
|
// Resolve if the JSONView is fully loaded or wait
|
||
|
// for an initialization event.
|
||
|
if (content.window.wrappedJSObject.jsonViewInitialized) {
|
||
|
deferred.resolve(tab);
|
||
|
} else {
|
||
|
waitForContentMessage("Test:JsonView:JSONViewInitialized").then(() => {
|
||
|
deferred.resolve(tab);
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
return deferred.promise;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Expanding a node in the JSON tree
|
||
|
*/
|
||
|
function expandJsonNode(selector) {
|
||
|
info("Expanding node: '" + selector + "'");
|
||
|
|
||
|
let browser = gBrowser.selectedBrowser;
|
||
|
return BrowserTestUtils.synthesizeMouseAtCenter(selector, {}, browser);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Select JSON View tab (in the content).
|
||
|
*/
|
||
|
function selectJsonViewContentTab(name) {
|
||
|
info("Selecting tab: '" + name + "'");
|
||
|
|
||
|
let browser = gBrowser.selectedBrowser;
|
||
|
let selector = ".tabs-menu .tabs-menu-item." + name + " a";
|
||
|
return BrowserTestUtils.synthesizeMouseAtCenter(selector, {}, browser);
|
||
|
}
|
||
|
|
||
|
function getElementCount(selector) {
|
||
|
info("Get element count: '" + selector + "'");
|
||
|
|
||
|
let data = {
|
||
|
selector: selector
|
||
|
};
|
||
|
|
||
|
return executeInContent("Test:JsonView:GetElementCount", data).then(result => {
|
||
|
return result.count;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function getElementText(selector) {
|
||
|
info("Get element text: '" + selector + "'");
|
||
|
|
||
|
let data = {
|
||
|
selector: selector
|
||
|
};
|
||
|
|
||
|
return executeInContent("Test:JsonView:GetElementText", data).then(result => {
|
||
|
return result.text;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function focusElement(selector) {
|
||
|
info("Focus element: '" + selector + "'");
|
||
|
|
||
|
let data = {
|
||
|
selector: selector
|
||
|
};
|
||
|
|
||
|
return executeInContent("Test:JsonView:FocusElement", data);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Send the string aStr to the focused element.
|
||
|
*
|
||
|
* For now this method only works for ASCII characters and emulates the shift
|
||
|
* key state on US keyboard layout.
|
||
|
*/
|
||
|
function sendString(str, selector) {
|
||
|
info("Send string: '" + str + "'");
|
||
|
|
||
|
let data = {
|
||
|
selector: selector,
|
||
|
str: str
|
||
|
};
|
||
|
|
||
|
return executeInContent("Test:JsonView:SendString", data);
|
||
|
}
|
||
|
|
||
|
function waitForTime(aDelay) {
|
||
|
let deferred = promise.defer();
|
||
|
setTimeout(deferred.resolve, aDelay);
|
||
|
return deferred.promise;
|
||
|
}
|
||
|
|
||
|
function waitForClipboardPromise(setup, expected) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
SimpleTest.waitForClipboard(expected, setup, resolve, reject);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function waitForFilter() {
|
||
|
return executeInContent("Test:JsonView:WaitForFilter");
|
||
|
}
|
||
|
|
||
|
function normalizeNewLines(value) {
|
||
|
return value.replace("(\r\n|\n)", "\n");
|
||
|
}
|