mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-14 15:37:55 +00:00
51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
const URL = "about:robots";
|
|
|
|
function test() {
|
|
let win;
|
|
|
|
let listener = {
|
|
onLocationChange: (webProgress, request, uri, flags) => {
|
|
ok(webProgress.isTopLevel, "Received onLocationChange from top frame");
|
|
is(uri.spec, URL, "Received onLocationChange for correct URL");
|
|
finish();
|
|
}
|
|
};
|
|
|
|
waitForExplicitFinish();
|
|
|
|
// Remove the listener and window when we're done.
|
|
registerCleanupFunction(() => {
|
|
win.gBrowser.removeProgressListener(listener);
|
|
win.close();
|
|
});
|
|
|
|
// Wait for the newly opened window.
|
|
whenNewWindowOpened(w => win = w);
|
|
|
|
// Open a link in a new window.
|
|
openLinkIn(URL, "window", {});
|
|
|
|
// On the next tick, but before the window has finished loading, access the
|
|
// window's gBrowser property to force the tabbrowser constructor early.
|
|
(function tryAddProgressListener() {
|
|
executeSoon(() => {
|
|
try {
|
|
win.gBrowser.addProgressListener(listener);
|
|
} catch (e) {
|
|
// win.gBrowser wasn't ready, yet. Try again in a tick.
|
|
tryAddProgressListener();
|
|
}
|
|
});
|
|
})();
|
|
}
|
|
|
|
function whenNewWindowOpened(cb) {
|
|
Services.obs.addObserver(function obs(win) {
|
|
Services.obs.removeObserver(obs, "domwindowopened");
|
|
cb(win);
|
|
}, "domwindowopened", false);
|
|
}
|