Re-sync web-platform-tests/dom/events from upstream
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 14 Aug 2019 00:29:19 +0000 (00:29 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 14 Aug 2019 00:29:19 +0000 (00:29 +0000)
https://bugs.webkit.org/show_bug.cgi?id=200592

Patch by Alexey Shvayka <shvaikalesh@gmail.com> on 2019-08-13
Reviewed by Ryosuke Niwa.

Re-sync web-platform-tests/dom/events from upstream 1e6fef09eae3.

LayoutTests/imported/w3c:

* resources/import-expectations.json:
* web-platform-tests/dom/events/*: Updated.

LayoutTests:

* TestExpectations:
* platform/ios/TestExpectations:
* platform/ios/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt:
* tests-options.json:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248647 268f45cc-cd09-0410-ab3c-d52691b4dbfc

44 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/resources/import-expectations.json
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-defaultPrevented.html
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-click.html
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed.html
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-timestamp-safe-resolution-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-timestamp-safe-resolution.html
LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-addEventListener.sub.window-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-handleEvent-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-handleEvent.html
LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-incumbent-global-subsubframe.sub.html
LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent.html
LayoutTests/imported/w3c/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/event-global-extra.window-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/event-global-extra.window.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/event-global-extra.window.js
LayoutTests/imported/w3c/web-platform-tests/dom/events/legacy-pre-activation-behavior.window-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/legacy-pre-activation-behavior.window.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/legacy-pre-activation-behavior.window.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/relatedTarget.window-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/relatedTarget.window.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/shadow-relatedTarget-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/shadow-relatedTarget.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log
LayoutTests/platform/ios/TestExpectations
LayoutTests/platform/ios/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt
LayoutTests/tests-options.json

index 49d3ce3..9df8f93 100644 (file)
@@ -1,3 +1,17 @@
+2019-08-13  Alexey Shvayka  <shvaikalesh@gmail.com>
+
+        Re-sync web-platform-tests/dom/events from upstream
+        https://bugs.webkit.org/show_bug.cgi?id=200592
+
+        Reviewed by Ryosuke Niwa.
+
+        Re-sync web-platform-tests/dom/events from upstream 1e6fef09eae3.
+
+        * TestExpectations:
+        * platform/ios/TestExpectations:
+        * platform/ios/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt:
+        * tests-options.json:
+
 2019-08-13  John Wilander  <wilander@apple.com>
 
         Resource Load Statistics: Switch NSURLSession on top navigation to prevalent resource with user interaction
index 97d3efa..04ece60 100644 (file)
@@ -654,6 +654,7 @@ fast/web-share [ Skip ]
 fast/animation/request-animation-frame-in-two-pages.html [ Skip ]
 
 # Only supported on iOS
+imported/w3c/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default.html [ Skip ]
 imported/w3c/web-platform-tests/pointerevents [ Skip ]
 pointerevents [ Skip ]
 
index 6130628..827a48f 100644 (file)
@@ -1,3 +1,15 @@
+2019-08-13  Alexey Shvayka  <shvaikalesh@gmail.com>
+
+        Re-sync web-platform-tests/dom/events from upstream
+        https://bugs.webkit.org/show_bug.cgi?id=200592
+
+        Reviewed by Ryosuke Niwa.
+
+        Re-sync web-platform-tests/dom/events from upstream 1e6fef09eae3.
+
+        * resources/import-expectations.json:
+        * web-platform-tests/dom/events/*: Updated.
+
 2019-08-08  Rob Buis  <rbuis@igalia.com>
 
         Import lazy loading WPT tests
index c3e3afa..30553a7 100644 (file)
@@ -92,6 +92,8 @@
     "web-platform-tests/custom-elements": "import", 
     "web-platform-tests/custom-elements/v0": "skip", 
     "web-platform-tests/dom": "import", 
+    "web-platform-tests/dom/events": "import", 
+    "web-platform-tests/dom/events/scrolling": "skip", 
     "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.html": "skip", 
     "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.svg": "skip", 
     "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xhtml": "skip", 
index f023008..2548fa3 100644 (file)
@@ -40,6 +40,7 @@ test(function() {
   assert_equals(ev.defaultPrevented, true, "defaultPrevented");
 }, "preventDefault() should change defaultPrevented if cancelable is true.");
 test(function() {
+  ev.initEvent("foo", true, true);
   assert_equals(ev.cancelable, true, "cancelable (before)");
   ev.returnValue = false;
   assert_equals(ev.cancelable, true, "cancelable (after)");
index 4aa4bbe..2241d57 100644 (file)
@@ -74,17 +74,17 @@ async_test(function(t) {
   t.done()
 }, "pick the first with activation behavior <input type=checkbox>")
 
-var globalCounter = 0 // sorry
 async_test(function(t) { // as above with <a>
-  var i = 0
+  window.hrefComplete = t.step_func(function(a) {
+    assert_equals(a, 'child');
+    t.done();
+  });
   var link = document.createElement("a")
-  link.href = "javascript:(function(){globalCounter--})()" // must not be triggered
+  link.href = "javascript:hrefComplete('link')" // must not be triggered
   dump.appendChild(link)
   var child = link.appendChild(document.createElement("a"))
-  child.href = "javascript:(function(){globalCounter++})()"
+  child.href = "javascript:hrefComplete('child')"
   child.dispatchEvent(new MouseEvent("click", {bubbles:true}))
-  assert_equals(globalCounter, 1)
-  t.done()
 }, "pick the first with activation behavior <a href>")
 
 async_test(function(t) {
index f3af429..effc73a 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL  Dispatch additional events inside an event listener  assert_array_equals: actual_targets lengths differ, expected 16 got 17
+PASS  Dispatch additional events inside an event listener  
 
index b325d5c..24e6fd7 100644 (file)
@@ -20,7 +20,7 @@
 </table>
 
 <script>
-async_test(function() {
+test(function() {
   var event_type = "bar";
   var target = document.getElementById("target");
   var parent = document.getElementById("parent");
@@ -39,6 +39,7 @@ async_test(function() {
     parent,
     target,
     target,
+    target, // The additional listener for target runs as we copy its listeners twice
     parent,
     tbody,
     table,
@@ -47,7 +48,7 @@ async_test(function() {
     document,
     window
   ];
-  var expected_listeners = [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1];
+  var expected_listeners = [0,0,0,0,0,0,0,0,1,3,1,1,1,1,1,1,1];
 
   var actual_targets = [], actual_listeners = [];
   var test_event_function = function(i) {
@@ -86,7 +87,5 @@ async_test(function() {
 
   assert_array_equals(actual_targets, expected_targets, "actual_targets");
   assert_array_equals(actual_listeners, expected_listeners, "actual_listeners");
-
-  this.done();
 });
 </script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window-expected.txt
new file mode 100644 (file)
index 0000000..c2c15e0
--- /dev/null
@@ -0,0 +1,3 @@
+
+PASS Untitled 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window.html b/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window.html
new file mode 100644 (file)
index 0000000..2382913
--- /dev/null
@@ -0,0 +1 @@
+<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window.js b/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window.js
new file mode 100644 (file)
index 0000000..a01a472
--- /dev/null
@@ -0,0 +1,20 @@
+test(t => {
+  const hostParent = document.createElement("section"),
+        host = hostParent.appendChild(document.createElement("div")),
+        shadowRoot = host.attachShadow({ mode: "closed" }),
+        targetParent = shadowRoot.appendChild(document.createElement("p")),
+        target = targetParent.appendChild(document.createElement("span")),
+        path = [hostParent, host, shadowRoot, targetParent, target],
+        expected = [],
+        result = [];
+  path.forEach((node, index) => {
+    expected.splice(index, 0, "capturing " + node.nodeName);
+    expected.splice(index + 1, 0, "bubbling " + node.nodeName);
+  });
+  path.forEach(node => {
+    node.addEventListener("test", () => { result.push("bubbling " + node.nodeName) });
+    node.addEventListener("test", () => { result.push("capturing " + node.nodeName) }, true);
+  });
+  target.dispatchEvent(new CustomEvent('test', { detail: {}, bubbles: true, composed: true }));
+  assert_array_equals(result, expected);
+});
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements-expected.txt
new file mode 100644 (file)
index 0000000..42e4b01
--- /dev/null
@@ -0,0 +1,14 @@
+
+Harness Error (TIMEOUT), message = null
+
+PASS Can dispatch untrusted 'click' Events at disabled HTML elements. 
+PASS Can dispatch untrusted Events at disabled HTML elements. 
+PASS Can dispatch CustomEvents at disabled HTML elements. 
+PASS Calling click() on disabled elements must not dispatch events. 
+PASS CSS Transitions transitionrun, transitionstart, transitionend events fire on disabled form elements 
+PASS CSS Transitions transitioncancel event fires on disabled form elements 
+TIMEOUT CSS Animation animationstart, animationiteration, animationend fire on disabled form elements Test timed out
+NOTRUN CSS Animation's animationcancel event fires on disabled form elements 
+NOTRUN Real clicks on disabled elements must not dispatch events. 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html b/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html
new file mode 100644 (file)
index 0000000..361006a
--- /dev/null
@@ -0,0 +1,251 @@
+<!doctype html>
+<meta charset="utf8">
+<meta name="timeout" content="long">
+<title>Events must dispatch on disabled elements</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<style>
+  @keyframes fade {
+    0% {
+      opacity: 1;
+    }
+    100% {
+      opacity: 0;
+    }
+  }
+</style>
+<body>
+<script>
+// HTML elements that can be disabled
+const formElements = ["button", "fieldset", "input", "select", "textarea"];
+
+test(() => {
+  for (const localName of formElements) {
+    const elem = document.createElement(localName);
+    elem.disabled = true;
+    // pass becomes true if the event is called and it's the right type.
+    let pass = false;
+    const listener = ({ type }) => {
+      pass = type === "click";
+    };
+    elem.addEventListener("click", listener, { once: true });
+    elem.dispatchEvent(new Event("click"));
+    assert_true(
+      pass,
+      `Untrusted "click" Event didn't dispatch on ${elem.constructor.name}.`
+    );
+  }
+}, "Can dispatch untrusted 'click' Events at disabled HTML elements.");
+
+test(() => {
+  for (const localName of formElements) {
+    const elem = document.createElement(localName);
+    elem.disabled = true;
+    // pass becomes true if the event is called and it's the right type.
+    let pass = false;
+    const listener = ({ type }) => {
+      pass = type === "pass";
+    };
+    elem.addEventListener("pass", listener, { once: true });
+    elem.dispatchEvent(new Event("pass"));
+    assert_true(
+      pass,
+      `Untrusted "pass" Event didn't dispatch on ${elem.constructor.name}`
+    );
+  }
+}, "Can dispatch untrusted Events at disabled HTML elements.");
+
+test(() => {
+  for (const localName of formElements) {
+    const elem = document.createElement(localName);
+    elem.disabled = true;
+    // pass becomes true if the event is called and it's the right type.
+    let pass = false;
+    const listener = ({ type }) => {
+      pass = type === "custom-pass";
+    };
+    elem.addEventListener("custom-pass", listener, { once: true });
+    elem.dispatchEvent(new CustomEvent("custom-pass"));
+    assert_true(
+      pass,
+      `CustomEvent "custom-pass" didn't dispatch on ${elem.constructor.name}`
+    );
+  }
+}, "Can dispatch CustomEvents at disabled HTML elements.");
+
+test(() => {
+  for (const localName of formElements) {
+    const elem = document.createElement(localName);
+
+    // Element is disabled... so this click() MUST NOT fire an event.
+    elem.disabled = true;
+    let pass = true;
+    elem.onclick = e => {
+      pass = false;
+    };
+    elem.click();
+    assert_true(
+      pass,
+      `.click() must not dispatch "click" event on disabled ${
+        elem.constructor.name
+      }.`
+    );
+
+    // Element is (re)enabled... so this click() fires an event.
+    elem.disabled = false;
+    pass = false;
+    elem.onclick = e => {
+      pass = true;
+    };
+    elem.click();
+    assert_true(
+      pass,
+      `.click() must dispatch "click" event on enabled ${
+        elem.constructor.name
+      }.`
+    );
+  }
+}, "Calling click() on disabled elements must not dispatch events.");
+
+promise_test(async () => {
+  // For each form element type, set up transition event handlers.
+  for (const localName of formElements) {
+    const elem = document.createElement(localName);
+    elem.disabled = true;
+    document.body.appendChild(elem);
+    const eventPromises = [
+      "transitionrun",
+      "transitionstart",
+      "transitionend",
+    ].map(eventType => {
+      return new Promise(r => {
+        elem.addEventListener(eventType, r);
+      });
+    });
+    // Flushing style triggers transition.
+    getComputedStyle(elem).opacity;
+    elem.style.transition = "opacity .1s";
+    elem.style.opacity = 0;
+    getComputedStyle(elem).opacity;
+    // All the events fire...
+    await Promise.all(eventPromises);
+    elem.remove();
+  }
+}, "CSS Transitions transitionrun, transitionstart, transitionend events fire on disabled form elements");
+
+promise_test(async () => {
+  // For each form element type, set up transition event handlers.
+  for (const localName of formElements) {
+    const elem = document.createElement(localName);
+    elem.disabled = true;
+    document.body.appendChild(elem);
+    getComputedStyle(elem).opacity;
+    elem.style.transition = "opacity 100s";
+    // We use ontransitionstart to cancel the event.
+    elem.ontransitionstart = () => {
+      elem.style.display = "none";
+    };
+    const promiseToCancel = new Promise(r => {
+      elem.ontransitioncancel = r;
+    });
+    // Flushing style triggers the transition.
+    elem.style.opacity = 0;
+    getComputedStyle(elem).opacity;
+    await promiseToCancel;
+    // And we are done with this element.
+    elem.remove();
+  }
+}, "CSS Transitions transitioncancel event fires on disabled form elements");
+
+promise_test(async () => {
+  // For each form element type, set up transition event handlers.
+  for (const localName of formElements) {
+    const elem = document.createElement(localName);
+    document.body.appendChild(elem);
+    elem.disabled = true;
+    const animationStartPromise = new Promise(r => {
+      elem.addEventListener("animationstart", () => {
+        // Seek to the second iteration to trigger the animationiteration event
+        elem.style.animationDelay = "-100s"
+        r();
+      });
+    });
+    const animationIterationPromise = new Promise(r => {
+      elem.addEventListener("animationiteration", ()=>{
+        elem.style.animationDelay = "-200s"
+        r();
+      });
+    });
+    const animationEndPromise = new Promise(r => {
+      elem.addEventListener("animationend", r);
+    });
+    elem.style.animation = "fade 100s 2";
+    elem.classList.add("animate");
+    // All the events fire...
+    await Promise.all([
+      animationStartPromise,
+      animationIterationPromise,
+      animationEndPromise,
+    ]);
+    elem.remove();
+  }
+}, "CSS Animation animationstart, animationiteration, animationend fire on disabled form elements");
+
+promise_test(async () => {
+  // For each form element type, set up transition event handlers.
+  for (const localName of formElements) {
+    const elem = document.createElement(localName);
+    document.body.appendChild(elem);
+    elem.disabled = true;
+
+    const promiseToCancel = new Promise(r => {
+      elem.addEventListener("animationcancel", r);
+    });
+
+    elem.addEventListener("animationstart", () => {
+      // Cancel the animation by hiding it.
+      elem.style.display = "none";
+    });
+
+    // Trigger the animation
+    elem.style.animation = "fade 100s";
+    elem.classList.add("animate");
+    await promiseToCancel;
+    // And we are done with this element.
+    elem.remove();
+  }
+}, "CSS Animation's animationcancel event fires on disabled form elements");
+
+promise_test(async () => {
+  for (const localName of formElements) {
+    const elem = document.createElement(localName);
+    elem.disabled = true;
+    document.body.appendChild(elem);
+    // Element is disabled, so clicking must not fire events
+    let pass = true;
+    elem.onclick = e => {
+      pass = false;
+    };
+    // Disabled elements are not clickable.
+    await test_driver.click(elem);
+    assert_true(
+      pass,
+      `${elem.constructor.name} is disabled, so onclick must not fire.`
+    );
+    // Element is (re)enabled... so this click() will fire an event.
+    pass = false;
+    elem.disabled = false;
+    elem.onclick = () => {
+      pass = true;
+    };
+    await test_driver.click(elem);
+    assert_true(
+      pass,
+      `${elem.constructor.name} is enabled, so onclick must fire.`
+    );
+    elem.remove();
+  }
+}, "Real clicks on disabled elements must not dispatch events.");
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any-expected.txt
new file mode 100644 (file)
index 0000000..0c38dff
--- /dev/null
@@ -0,0 +1,7 @@
+
+FAIL Untitled assert_equals: expected function "function isTrusted() {
+    [native code]
+}" but got function "function isTrusted() {
+    [native code]
+}"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.html b/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.html
new file mode 100644 (file)
index 0000000..2382913
--- /dev/null
@@ -0,0 +1 @@
+<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.js b/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.js
new file mode 100644 (file)
index 0000000..00bcecd
--- /dev/null
@@ -0,0 +1,11 @@
+test(function() {
+  var desc1 = Object.getOwnPropertyDescriptor(new Event("x"), "isTrusted");
+  assert_not_equals(desc1, undefined);
+  assert_equals(typeof desc1.get, "function");
+
+  var desc2 = Object.getOwnPropertyDescriptor(new Event("x"), "isTrusted");
+  assert_not_equals(desc2, undefined);
+  assert_equals(typeof desc2.get, "function");
+
+  assert_equals(desc1.get, desc2.get);
+});
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.worker-expected.txt
new file mode 100644 (file)
index 0000000..0c38dff
--- /dev/null
@@ -0,0 +1,7 @@
+
+FAIL Untitled assert_equals: expected function "function isTrusted() {
+    [native code]
+}" but got function "function isTrusted() {
+    [native code]
+}"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.worker.html
new file mode 100644 (file)
index 0000000..2382913
--- /dev/null
@@ -0,0 +1 @@
+<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
index 5009c8a..24f2dec 100644 (file)
@@ -45,5 +45,5 @@ test(function() {
 
   const minResolution = estimateMinimumResolution(samples);
   assert_greater_than_equal(minResolution, 5);
-}, 'Event timestamp should not have a resolution better that 5 microseconds');
+}, 'Event timestamp should not have a resolution better than 5 microseconds');
 </script>
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-addEventListener.sub.window-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-addEventListener.sub.window-expected.txt
new file mode 100644 (file)
index 0000000..f05ba0c
--- /dev/null
@@ -0,0 +1,3 @@
+
+PASS EventListener.addEventListener doesn't throw when a cross origin object is passed in. 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.html b/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.html
new file mode 100644 (file)
index 0000000..2382913
--- /dev/null
@@ -0,0 +1 @@
+<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.js b/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.js
new file mode 100644 (file)
index 0000000..b44bc33
--- /dev/null
@@ -0,0 +1,9 @@
+async_test(function(t) {
+  let crossOriginFrame = document.createElement('iframe');
+  crossOriginFrame.src = 'https://{{hosts[alt][]}}:{{ports[https][0]}}/common/blank.html';
+  document.body.appendChild(crossOriginFrame);
+  crossOriginFrame.addEventListener('load', t.step_func_done(function() {
+    let crossOriginWindow = crossOriginFrame.contentWindow;
+    window.addEventListener('click', crossOriginWindow);
+  }));
+}, "EventListener.addEventListener doesn't throw when a cross origin object is passed in.");
index 5ddbb7d..e23c5a9 100644 (file)
@@ -1,3 +1,9 @@
+CONSOLE MESSAGE: line 46: [object Object]
 
-PASS EventListener::handleEvent() 
+PASS calls `handleEvent` method of `EventListener` 
+PASS rethrows errors when getting `handleEvent` 
+PASS performs `Get` every time event is dispatched 
+PASS doesn't call `handleEvent` method on callable `EventListener` 
+FAIL throws if `handleEvent` is falsy and not callable assert_true: expected true got false
+FAIL throws if `handleEvent` is thruthy and not callable assert_true: expected true got false
 
index b33b030..1eb80cc 100644 (file)
 <title>EventListener::handleEvent()</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<link rel="help" href="https://dom.spec.whatwg.org/#callbackdef-eventlistener">
 <div id=log></div>
-<table id="table" border="1" style="display: none">
-    <tbody id="table-body">
-    <tr id="table-row">
-        <td id="table-cell">Shady Grove</td>
-        <td>Aeolian</td>
-    </tr>
-    <tr id="parent">
-        <td id="target">Over the river, Charlie</td>
-        <td>Dorian</td>
-    </tr>
-    </tbody>
-</table>
 <script>
-test(function(t) {
-    var event = "foo";
-    var target = document.getElementById("target");
+setup({ allow_uncaught_exception: true });
 
-    var event_listener = {
-        "handleEvent": function(evt) {
+test(function(t) {
+    var type = "foo";
+    var target = document.createElement("div");
+    var eventListener = {
+        handleEvent: function(evt) {
             var that = this;
             t.step(function() {
-                assert_equals(evt.type, event);
+                assert_equals(evt.type, type);
                 assert_equals(evt.target, target);
                 assert_equals(evt.srcElement, target);
-                assert_equals(that, event_listener);
+                assert_equals(that, eventListener);
             });
-        }
+        },
+    };
+
+    target.addEventListener(type, eventListener);
+    target.dispatchEvent(new Event(type));
+}, "calls `handleEvent` method of `EventListener`");
+
+test(function(t) {
+    var type = "foo";
+    var target = document.createElement("div");
+    var thrownError = { name: "test" };
+    var uncaughtError;
+    var errorHandler = function(event) {
+        uncaughtError = event.error;
+    };
+
+    window.addEventListener("error", errorHandler);
+    t.add_cleanup(function() {
+        window.removeEventListener("error", errorHandler);
+    });
+
+    target.addEventListener(type, {
+        get handleEvent() {
+            throw thrownError;
+        },
+    });
+
+    target.dispatchEvent(new Event(type));
+    assert_equals(thrownError, uncaughtError);
+}, "rethrows errors when getting `handleEvent`");
+
+test(function(t) {
+    var type = "foo";
+    var target = document.createElement("div");
+    var calls = 0;
+
+    target.addEventListener(type, {
+        get handleEvent() {
+            calls++;
+            return function() {};
+        },
+    });
+
+    assert_equals(calls, 0);
+    target.dispatchEvent(new Event(type));
+    target.dispatchEvent(new Event(type));
+    assert_equals(calls, 2);
+}, "performs `Get` every time event is dispatched");
+
+test(function(t) {
+    var type = "foo";
+    var target = document.createElement("div");
+    var calls = 0;
+    var eventListener = function() { calls++; };
+    eventListener.handleEvent = t.unreached_func("`handleEvent` method should not be called on functions");
+
+    target.addEventListener(type, eventListener);
+    target.dispatchEvent(new Event(type));
+    assert_equals(calls, 1);
+}, "doesn't call `handleEvent` method on callable `EventListener`");
+
+test(function(t) {
+    var type = "foo";
+    var target = document.createElement("div");
+    var uncaughtError;
+    var errorHandler = function(event) {
+        uncaughtError = event.error;
     };
 
-    var evt = document.createEvent("Event");
-    evt.initEvent(event, true, true);
+    window.addEventListener("error", errorHandler);
+    t.add_cleanup(function() {
+        window.removeEventListener("error", errorHandler);
+    });
+
+    target.addEventListener(type, {
+        handleEvent: null,
+    });
+
+    target.dispatchEvent(new Event(type));
+    assert_true(uncaughtError instanceof TypeError);
+}, "throws if `handleEvent` is falsy and not callable");
+
+test(function(t) {
+    var type = "foo";
+    var target = document.createElement("div");
+    var uncaughtError;
+    var errorHandler = function(event) {
+        uncaughtError = event.error;
+    };
+
+    window.addEventListener("error", errorHandler);
+    t.add_cleanup(function() {
+        window.removeEventListener("error", errorHandler);
+    });
+
+    target.addEventListener(type, {
+        handleEvent: 1,
+    });
 
-    target.addEventListener(event, event_listener, true);
-    target.dispatchEvent(evt);
-});
+    target.dispatchEvent(new Event(type));
+    assert_true(uncaughtError instanceof TypeError);
+}, "throws if `handleEvent` is thruthy and not callable");
 </script>
index 9ce9f21..dd683f6 100644 (file)
@@ -11,7 +11,7 @@
       parent.postMessage(
         {
           actual: e.origin,
-          expected: "{{location[scheme]}}://{{domains[www1]}}:{{ports[http][0]}}",
+          expected: parent.location.origin,
           reason: "Incumbent should have been the caller of addEventListener()"
         },
         "*")
index 8e53c53..7669378 100644 (file)
@@ -25,5 +25,5 @@ PASS If the event's initialized flag is not set, an InvalidStateError must be th
 PASS If the event's dispatch flag is set, an InvalidStateError must be thrown. 
 PASS Exceptions from event listeners must not be propagated. 
 PASS Event listeners added during dispatch should be called 
-FAIL Event listeners should be called in order of addition assert_array_equals: property 1, expected 2 but got 3
+PASS Capturing event listeners should be called before non-capturing ones 
 
index 1a8bf3d..8a0d735 100644 (file)
@@ -98,7 +98,7 @@ async_test(function() {
     results.push(3)
   }), true)
   b.dispatchEvent(new Event("x"))
-  assert_array_equals(results, [1, 2, 3])
+  assert_array_equals(results, [1, 3, 2])
   this.done()
-}, "Event listeners should be called in order of addition")
+}, "Capturing event listeners should be called before non-capturing ones")
 </script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default-expected.txt
new file mode 100644 (file)
index 0000000..4064e8f
--- /dev/null
@@ -0,0 +1,3 @@
+
+FAIL Touchmove events are non-cancelable since the event listener is treated as passive. promise_test: Unhandled rejection with value: "Condition did not become true after 500 frames"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default.html b/LayoutTests/imported/w3c/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default.html
new file mode 100644 (file)
index 0000000..f3f0d58
--- /dev/null
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<title>Default passive document level touchmove event listener test</title>
+<link rel="help" href="https://github.com/WICG/interventions/issues/35">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<body onload=runTest()>
+<div id="touchDiv">
+</div>
+</body>
+<style>
+#touchDiv {
+  width: 100px;
+  height: 100px;
+}
+</style>
+<script>
+var touch_div = document.getElementById("touchDiv");
+var cancelable = true;
+var touch_move_arrived = false;
+document.addEventListener("touchmove", function (event) {
+    cancelable = event.cancelable;
+    touch_move_arrived = true;
+    event.preventDefault();
+});
+
+function waitFor(condition) {
+  const MAX_FRAME = 500;
+  return new Promise((resolve, reject) => {
+    function tick(frames) {
+      // We requestAnimationFrame either for 500 frames or until condition is
+      // met.
+      if (frames >= MAX_FRAME)
+        reject("Condition did not become true after 500 frames");
+      else if (condition())
+        resolve();
+      else
+        requestAnimationFrame(tick.bind(this, frames + 1));
+    }
+    tick(0);
+  });
+}
+
+function waitForCompositorCommit() {
+  return new Promise((resolve) => {
+    // rAF twice.
+    window.requestAnimationFrame(() => {
+      window.requestAnimationFrame(resolve);
+    });
+  });
+}
+
+function injectInput() {
+  new test_driver.Actions()
+    .addPointer("touch_pointer", "touch")
+    .pointerMove(0, 0, {origin: touch_div})
+    .pointerDown()
+    .pointerMove(30, 30)
+    .pointerUp()
+    .send();
+}
+
+function runTest() {
+  promise_test (async () => {
+    await waitForCompositorCommit();
+    injectInput();
+    await waitFor(()=> { return touch_move_arrived; });
+    assert_false(cancelable);
+  }, "Touchmove events are non-cancelable since the event listener is treated as passive.");
+}
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/event-global-extra.window-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/events/event-global-extra.window-expected.txt
new file mode 100644 (file)
index 0000000..51fde8c
--- /dev/null
@@ -0,0 +1,8 @@
+
+FAIL window.event for constructors from another global: EventTarget function is not a constructor (evaluating 'new otherWindow[constructorName]()')
+FAIL window.event for constructors from another global: XMLHttpRequest assert_equals: expected (undefined) undefined but got (object) object "[object Event]"
+PASS window.event and element from another document 
+FAIL window.event and moving an element post-dispatch assert_equals: expected (object) object "[object Event]" but got (undefined) undefined
+FAIL window.event should not be affected by nodes moving post-dispatch assert_equals: expected (undefined) undefined but got (object) object "[object Event]"
+FAIL Listener from a different global assert_equals: expected (object) object "[object Event]" but got (undefined) undefined
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/event-global-extra.window.html b/LayoutTests/imported/w3c/web-platform-tests/dom/events/event-global-extra.window.html
new file mode 100644 (file)
index 0000000..2382913
--- /dev/null
@@ -0,0 +1 @@
+<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
index f268769..0f14961 100644 (file)
@@ -56,16 +56,16 @@ test(t => {
     assert_equals(counter++, 3);
   }));
   child.addEventListener("hi", t.step_func(e => {
-    assert_equals(window.event, e);
+    assert_equals(window.event, undefined);
     assert_equals(counter++, 2);
   }));
   furtherChild.addEventListener("hi", t.step_func(e => {
     host.appendChild(child);
-    assert_equals(window.event, e);
+    assert_equals(window.event, undefined);
     assert_equals(counter++, 0);
   }));
   furtherChild.addEventListener("hi", t.step_func(e => {
-    assert_equals(window.event, e);
+    assert_equals(window.event, undefined);
     assert_equals(counter++, 1);
   }));
   furtherChild.dispatchEvent(new Event("hi", { composed: true, bubbles: true }));
@@ -75,7 +75,7 @@ test(t => {
 async_test(t => {
   const frame = document.body.appendChild(document.createElement("iframe"));
   frame.src = "resources/event-global-extra-frame.html";
-  frame.onload = t.step_func_done(() => {
+  frame.onload = t.step_func_done((load_event) => {
     const event = new Event("hi");
     document.addEventListener("hi", frame.contentWindow.listener); // listener intentionally not wrapped in t.step_func
     document.addEventListener("hi", t.step_func(e => {
@@ -85,6 +85,6 @@ async_test(t => {
     document.dispatchEvent(event);
     assert_equals(frameState.event, event);
     assert_equals(frameState.windowEvent, event);
-    assert_equals(frameState.parentEvent, undefined);
+    assert_equals(frameState.parentEvent, load_event);
   });
 }, "Listener from a different global");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/legacy-pre-activation-behavior.window-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/events/legacy-pre-activation-behavior.window-expected.txt
new file mode 100644 (file)
index 0000000..48f8450
--- /dev/null
@@ -0,0 +1,3 @@
+
+PASS Use NONE phase during legacy-pre-activation behavior 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/legacy-pre-activation-behavior.window.html b/LayoutTests/imported/w3c/web-platform-tests/dom/events/legacy-pre-activation-behavior.window.html
new file mode 100644 (file)
index 0000000..2382913
--- /dev/null
@@ -0,0 +1 @@
+<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/legacy-pre-activation-behavior.window.js b/LayoutTests/imported/w3c/web-platform-tests/dom/events/legacy-pre-activation-behavior.window.js
new file mode 100644 (file)
index 0000000..e9e84bf
--- /dev/null
@@ -0,0 +1,10 @@
+test(t => {
+  const input = document.body.appendChild(document.createElement('input'));
+  input.type = "radio";
+  t.add_cleanup(() => input.remove());
+  const clickEvent = new MouseEvent('click', { button: 0, which: 1 });
+  input.addEventListener('change', t.step_func(() => {
+    assert_equals(clickEvent.eventPhase, Event.NONE);
+  }));
+  input.dispatchEvent(clickEvent);
+}, "Use NONE phase during legacy-pre-activation behavior");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/relatedTarget.window-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/events/relatedTarget.window-expected.txt
new file mode 100644 (file)
index 0000000..328779b
--- /dev/null
@@ -0,0 +1,8 @@
+
+FAIL Reset if target pointed to a shadow tree assert_equals: expected null but got DocumentFragment node with 1 child
+FAIL Retarget a shadow-tree relatedTarget assert_equals: expected Element node <div><p></p></div> but got DocumentFragment node with 1 child
+FAIL Reset if target pointed to a shadow tree pre-dispatch assert_equals: expected null but got Element node <div></div>
+PASS Retarget a shadow-tree relatedTarget, part 2 
+FAIL Reset targets on early return assert_equals: expected null but got Element node <div><p></p></div>
+FAIL Reset targets before activation behavior assert_equals: expected null but got Element node <input type="checkbox"></input>
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/relatedTarget.window.html b/LayoutTests/imported/w3c/web-platform-tests/dom/events/relatedTarget.window.html
new file mode 100644 (file)
index 0000000..2382913
--- /dev/null
@@ -0,0 +1 @@
+<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/shadow-relatedTarget-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/dom/events/shadow-relatedTarget-expected.txt
new file mode 100644 (file)
index 0000000..7c8de46
--- /dev/null
@@ -0,0 +1,5 @@
+
+
+FAIL relatedTarget should not leak at capturing phase, at window object. assert_equals: expected Element node <div id="host"></div> but got Element node <input id="shadowInput"></input>
+PASS relatedTarget should not leak at target. 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/dom/events/shadow-relatedTarget.html b/LayoutTests/imported/w3c/web-platform-tests/dom/events/shadow-relatedTarget.html
new file mode 100644 (file)
index 0000000..713555b
--- /dev/null
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<!--
+  This test is adopted from Olli Pettay's test case at
+  http://mozilla.pettay.fi/shadow_focus.html
+-->
+<div id="host"></div>
+<input id="lightInput">
+<script>
+const root = host.attachShadow({ mode: "closed" });
+root.innerHTML = "<input id='shadowInput'>";
+
+async_test((test) => {
+  root.getElementById("shadowInput").focus();
+  window.addEventListener("focus", test.step_func_done((e) => {
+    assert_equals(e.relatedTarget, host);
+  }, "relatedTarget should be pointing to shadow host."), true);
+  lightInput.focus();
+}, "relatedTarget should not leak at capturing phase, at window object.");
+
+async_test((test) => {
+  root.getElementById("shadowInput").focus();
+  lightInput.addEventListener("focus", test.step_func_done((e) => {
+    assert_equals(e.relatedTarget, host);
+  }, "relatedTarget should be pointing to shadow host."), true);
+  lightInput.focus();
+}, "relatedTarget should not leak at target.");
+
+</script>
index bad649c..aa13a7f 100644 (file)
@@ -28,9 +28,11 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-click.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-detached-click.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window.js
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-multiple-cancelBubble.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-multiple-stopPropagation.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-order.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-other-document.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html
@@ -41,6 +43,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-throwing.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-init-while-dispatching.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-initEvent.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.js
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-propagation.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-returnValue.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-subclasses-constructors.html
@@ -48,6 +51,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-timestamp-safe-resolution.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-empty.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.js
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-handleEvent.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-incumbent-global-1.sub.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-incumbent-global-2.sub.html
@@ -61,8 +65,11 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-removeEventListener.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/event-disabled-dynamic.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/event-global-extra.window.js
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/event-global.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/event-global.worker.js
+/LayoutTests/imported/w3c/web-platform-tests/dom/events/legacy-pre-activation-behavior.window.js
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/relatedTarget.window.js
+/LayoutTests/imported/w3c/web-platform-tests/dom/events/shadow-relatedTarget.html
index 62488bc..1503583 100644 (file)
@@ -21,6 +21,8 @@ fast/zooming/ios [ Pass ]
 http/tests/preload/viewport [ Pass ]
 http/tests/gzip-content-encoding [ Pass ]
 
+imported/w3c/web-platform-tests/dom/events/document-level-touchmove-event-listener-passive-by-default.html [ Pass ]
+
 #//////////////////////////////////////////////////////////////////////////////////////////
 # End platform-specific directories.
 #//////////////////////////////////////////////////////////////////////////////////////////
index 897956b..0426192 100644 (file)
@@ -25,5 +25,5 @@ PASS If the event's initialized flag is not set, an InvalidStateError must be th
 PASS If the event's dispatch flag is set, an InvalidStateError must be thrown. 
 PASS Exceptions from event listeners must not be propagated. 
 PASS Event listeners added during dispatch should be called 
-FAIL Event listeners should be called in order of addition assert_array_equals: property 1, expected 2 but got 3
+PASS Capturing event listeners should be called before non-capturing ones 
 
index aa11000..1824cdc 100644 (file)
     "imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html": [
         "slow"
     ],
+    "imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html": [
+        "slow"
+    ],
     "imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization.html": [
         "slow"
     ],