Bug 760424, browser_tab_dragdrop.js tries to remove wrong eventlistener, r=mats
--- a/browser/base/content/test/browser_tab_dragdrop.js
+++ b/browser/base/content/test/browser_tab_dragdrop.js
@@ -85,26 +85,32 @@ function test()
}, true);
});
}, true);
b.loadURI("about:blank");
}
var loads = 0;
- function waitForLoad(tab) {
- gBrowser.getBrowserForTab(gBrowser.tabs[tab]).removeEventListener("load", arguments.callee, true);
+ function waitForLoad(event, tab, listenerContainer) {
+ var b = gBrowser.getBrowserForTab(gBrowser.tabs[tab]);
+ if (b.contentDocument != event.target) {
+ return;
+ }
+ gBrowser.getBrowserForTab(gBrowser.tabs[tab]).removeEventListener("load", listenerContainer.listener, true);
++loads;
if (loads == tabs.length - 1) {
executeSoon(test1);
}
}
function fn(f, arg) {
- return function () { return f(arg); };
+ var listenerContainer = { listener: null }
+ listenerContainer.listener = function (event) { return f(event, arg, listenerContainer); };
+ return listenerContainer.listener;
}
for (var i = 1; i < tabs.length; ++i) {
gBrowser.getBrowserForTab(tabs[i]).addEventListener("load", fn(waitForLoad,i), true);
}
setLocation(1, "data:text/html,<title>tab1</title><body>tab1<iframe>");
setLocation(2, "data:text/plain,tab2");
setLocation(3, "data:text/html,<title>tab3</title><body>tab3<iframe>");