gecko-dev/accessible/tests/mochitest/browser.js
Victor Porof 058dce8bba Bug 1561435 - Format accessible/, a=automatic-formatting
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D35895

--HG--
extra : source : e786ed0773342d7c897007bb1be5a101945b894a
2019-07-05 09:45:34 +02:00

151 lines
3.2 KiB
JavaScript

var { AppConstants } = ChromeUtils.import(
"resource://gre/modules/AppConstants.jsm"
);
/**
* Load the browser with the given url and then invokes the given function.
*/
function openBrowserWindow(aFunc, aURL, aRect) {
gBrowserContext.testFunc = aFunc;
gBrowserContext.startURL = aURL;
gBrowserContext.browserRect = aRect;
addLoadEvent(openBrowserWindowIntl);
}
/**
* Close the browser window.
*/
function closeBrowserWindow() {
gBrowserContext.browserWnd.close();
}
/**
* Return the browser window object.
*/
function browserWindow() {
return gBrowserContext.browserWnd;
}
/**
* Return the document of the browser window.
*/
function browserDocument() {
return browserWindow().document;
}
/**
* Return tab browser object.
*/
function tabBrowser() {
return browserWindow().gBrowser;
}
/**
* Return browser element of the current tab.
*/
function currentBrowser() {
return tabBrowser().selectedBrowser;
}
/**
* Return DOM document of the current tab.
*/
function currentTabDocument() {
return currentBrowser().contentDocument;
}
/**
* Return window of the current tab.
*/
function currentTabWindow() {
return currentTabDocument().defaultView;
}
/**
* Return browser element of the tab at the given index.
*/
function browserAt(aIndex) {
return tabBrowser().getBrowserAtIndex(aIndex);
}
/**
* Return DOM document of the tab at the given index.
*/
function tabDocumentAt(aIndex) {
return browserAt(aIndex).contentDocument;
}
/**
* Return input element of address bar.
*/
function urlbarInput() {
return browserWindow().document.getElementById("urlbar").inputField;
}
/**
* Return reload button.
*/
function reloadButton() {
return browserWindow().document.getElementById("urlbar-reload-button");
}
// //////////////////////////////////////////////////////////////////////////////
// private section
var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
var gBrowserContext = {
browserWnd: null,
testFunc: null,
startURL: "",
};
function openBrowserWindowIntl() {
var params = "chrome,all,dialog=no,non-remote";
var rect = gBrowserContext.browserRect;
if (rect) {
if ("left" in rect) {
params += ",left=" + rect.left;
}
if ("top" in rect) {
params += ",top=" + rect.top;
}
if ("width" in rect) {
params += ",width=" + rect.width;
}
if ("height" in rect) {
params += ",height=" + rect.height;
}
}
gBrowserContext.browserWnd = window.openDialog(
AppConstants.BROWSER_CHROME_URL,
"_blank",
params,
gBrowserContext.startURL || "data:text/html,<html></html>"
);
whenDelayedStartupFinished(browserWindow(), function() {
addA11yLoadEvent(startBrowserTests, browserWindow());
});
}
function startBrowserTests() {
if (gBrowserContext.startURL) {
// wait for load
addA11yLoadEvent(gBrowserContext.testFunc, currentBrowser().contentWindow);
} else {
gBrowserContext.testFunc();
}
}
function whenDelayedStartupFinished(aWindow, aCallback) {
Services.obs.addObserver(function observer(aSubject, aTopic) {
if (aWindow == aSubject) {
Services.obs.removeObserver(observer, aTopic);
setTimeout(aCallback, 0);
}
}, "browser-delayed-startup-finished");
}