blob: 478680aba131ce49b05142b5516633f2c607eebd [file] [log] [blame]
<html>
<body>
<p>Tests for <a href="https://bugs.webkit.org/show_bug.cgi?id=11053"> bug 11053</a> -
XMLHttpRequest should be an EventTarget.</p>
<script>
if (window.testRunner)
testRunner.dumpAsText();
var console_messages = document.createElement("ul");
document.body.appendChild(console_messages);
function log(message)
{
var item = document.createElement("li");
item.appendChild(document.createTextNode(message));
console_messages.appendChild(item);
}
function onLoad() {
log("onload: this = " + this);
req.removeEventListener("load", eventListener4, false);
}
function eventListener() { log("eventListener: this = " + this); }
function eventListener2() {
log("eventListener2: this = " + this);
// Removing this event listener should prevent it from firing.
req.removeEventListener("load", eventListener3, false);
}
function eventListener3() { log("eventListener3: this = " + this); }
// This listener is removed before it gets a chance to fire.
function eventListener4() { log("eventListener4: this = " + this); }
function fooListener() { log("fooListener: this = " + this); }
req = new XMLHttpRequest;
req.onload = onLoad;
req.addEventListener("load", eventListener, false);
req.addEventListener("load", eventListener2, false);
req.addEventListener("load", eventListener, false); // eventListener must not be called twice, but it does in Mozilla 1.8.
req.addEventListener("load", eventListener3, false);
// XMLHttpRequest.dispatchEvent is not implemeted in Mozilla 1.8
// Furthermore, they raise an exception when trying to add any event listener except for "load" and "error".
try {
event = document.createEvent("Event");
event.initEvent("foo", false, false);
req.addEventListener("foo", fooListener, false);
req.dispatchEvent(event);
} catch (ex) {
log("foo: " + ex);
}
req.open("GET", "resources/reply.xml", false);
req.send("");
// WebKit doesn't remove event listeners when re-opening a request, unlike Mozilla.
req.open("GET", "resources/reply.xml", false);
req.send("");
</script>
</body>
</html>