blob: f89b27f75477f0844cff0777e692b2c670088522 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script src="../../../resources/js-test-pre.js"></script>
<script>
description("Checks that the Window's EventListener API can be called without an explicit 'this' value.");
var wasWindowEventListenerCalled = false;
var addEventListenerFunction = window.addEventListener;
shouldNotThrow("addEventListenerFunction.call(undefined, 'myevent', function() { wasWindowEventListenerCalled = true; });");
var dispatchEventFunction = window.dispatchEvent;
shouldBeTrue("dispatchEventFunction.call(undefined, new Event('myevent'))");
shouldBeTrue("wasWindowEventListenerCalled");
// As of early 2016, this matches Firefox and Chrome's behavior: We fall back to using the global window, even if the function
// came from a non-Window object.
wasWindowEventListenerCalled = false;
bodyDispatchEventFunction = document.body.dispatchEvent;
shouldBeTrue("bodyDispatchEventFunction.call(undefined, new Event('myevent'))");
shouldBeTrue("wasWindowEventListenerCalled");
wasWindowEventListenerCalled = false;
var xhr = new XMLHttpRequest();
xhrDispatchEventFunction = xhr.dispatchEvent;
shouldBeTrue("xhrDispatchEventFunction.call(undefined, new Event('myevent'))");
shouldBeTrue("wasWindowEventListenerCalled");
wasWindowEventListenerCalled = false;
shouldNotThrow("addEventListenerFunction('myevent2', function() { wasWindowEventListenerCalled = true; });");
shouldBeTrue("window.dispatchEvent(new Event('myevent2'))");
shouldBeTrue("wasWindowEventListenerCalled");
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>