1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /**
- * Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
- const fakeEventType = "foo";
- function testEventTarget(event) {
- if (event.target !== self) {
- throw new Error("Event has a bad target!");
- }
- if (event.currentTarget) {
- throw new Error("Event has a bad currentTarget!");
- }
- postMessage(event.data);
- }
- addEventListener(fakeEventType, function(event) {
- throw new Error("Trusted event listener received untrusted event!");
- }, false, false);
- addEventListener(fakeEventType, function(event) {
- if (event.target !== self || event.currentTarget !== self) {
- throw new Error("Fake event has bad target!");
- }
- if (event.isTrusted) {
- throw new Error("Event should be untrusted!");
- }
- event.stopImmediatePropagation();
- postMessage(event.data);
- }, false, true);
- addEventListener(fakeEventType, function(event) {
- throw new Error("This shouldn't get called because of stopImmediatePropagation.");
- }, false, true);
- var count = 0;
- onmessage = function(event) {
- if (event.target !== self || event.currentTarget !== self) {
- throw new Error("Event has bad target!");
- }
- if (!count++) {
- var exception;
- try {
- self.dispatchEvent(event);
- }
- catch(e) {
- exception = e;
- }
- if (!exception) {
- throw new Error("Recursive dispatch didn't fail!");
- }
- event = new MessageEvent(fakeEventType, { bubbles: event.bubbles,
- cancelable: event.cancelable,
- data: event.data,
- origin: "*",
- source: null
- });
- self.dispatchEvent(event);
- return;
- }
- setTimeout(testEventTarget, 0, event);
- };
|