Checks that the Window's EventListener API can be called without an explicit 'this' value.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS addEventListenerFunction.call(undefined, 'myevent', function() { wasWindowEventListenerCalled = true; }); did not throw exception.
PASS dispatchEventFunction.call(undefined, new Event('myevent')) is true
PASS wasWindowEventListenerCalled is true
PASS bodyDispatchEventFunction.call(undefined, new Event('myevent')) is true
PASS wasWindowEventListenerCalled is true
PASS xhrDispatchEventFunction.call(undefined, new Event('myevent')) is true
PASS wasWindowEventListenerCalled is true
PASS addEventListenerFunction('myevent2', function() { wasWindowEventListenerCalled = true; }); did not throw exception.
PASS window.dispatchEvent(new Event('myevent2')) is true
PASS wasWindowEventListenerCalled is true
PASS successfullyParsed is true

TEST COMPLETE

