gecko-dev/browser/base/content/test/browser_bug521216.js
Dão Gottwald 19b1a2a700 Bug 521216 - Dispatch the TabOpen event before notifying progress listeners. r=gavin
--HG--
extra : rebase_source : ae11457dde7197eb0d56c8795c67728be93dc27d
2009-10-09 20:36:06 +02:00

50 lines
1.6 KiB
JavaScript

var expected = ["TabOpen", "onLinkIconAvailable", "onLocationChange", "onStateChange"];
var actual = [];
var tabIndex = -1;
__defineGetter__("tab", function () gBrowser.tabContainer.childNodes[tabIndex]);
function test() {
waitForExplicitFinish();
tabIndex = gBrowser.tabContainer.childElementCount;
gBrowser.addTabsProgressListener(progressListener);
gBrowser.tabContainer.addEventListener("TabOpen", TabOpen, false);
gBrowser.addTab("http://example.org/browser/browser/base/content/test/dummy_page.html");
}
function record(aName) {
info("got " + aName);
if (actual.indexOf(aName) == -1)
actual.push(aName);
if (actual.length == expected.length) {
is(actual.toString(), expected.toString(),
"got events and progress notifications in expected order");
gBrowser.removeTab(tab);
gBrowser.removeTabsProgressListener(progressListener);
gBrowser.tabContainer.removeEventListener("TabOpen", TabOpen, false);
finish();
}
}
function TabOpen(aEvent) {
if (aEvent.target == tab)
record(arguments.callee.name);
}
var progressListener = {
onLocationChange: function onLocationChange(aBrowser) {
if (aBrowser == tab.linkedBrowser)
record(arguments.callee.name);
},
onProgressChange: function () {},
onSecurityChange: function () {},
onStateChange: function onStateChange(aBrowser) {
if (aBrowser == tab.linkedBrowser)
record(arguments.callee.name);
},
onStatusChange: function () {},
onLinkIconAvailable: function onLinkIconAvailable(aBrowser) {
if (aBrowser == tab.linkedBrowser)
record(arguments.callee.name);
}
};