mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-14 15:37:55 +00:00
154 lines
3.1 KiB
JavaScript
154 lines
3.1 KiB
JavaScript
/**
|
|
* 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
|
|
|
|
Components.utils.import("resource://gre/modules/Services.jsm");
|
|
|
|
var gBrowserContext =
|
|
{
|
|
browserWnd: null,
|
|
testFunc: null,
|
|
startURL: ""
|
|
};
|
|
|
|
function openBrowserWindowIntl()
|
|
{
|
|
var params = "chrome,all,dialog=no";
|
|
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(Services.prefs.getCharPref("browser.chromeURL"),
|
|
"_blank", params,
|
|
gBrowserContext.startURL);
|
|
|
|
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", false);
|
|
}
|