diff options
Diffstat (limited to 'accessible/tests/mochitest/browser.js')
-rw-r--r-- | accessible/tests/mochitest/browser.js | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/accessible/tests/mochitest/browser.js b/accessible/tests/mochitest/browser.js new file mode 100644 index 000000000..f84f545d8 --- /dev/null +++ b/accessible/tests/mochitest/browser.js @@ -0,0 +1,153 @@ +/** + * 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); +} |