Sync web-platform-tests up to revision a5b95cb31914507088a4eda16f7674bbc6f3313f
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / html / webappapis / scripting / events / event-handler-processing-algorithm.html
1 <!DOCTYPE html>
2 <title>Event handlers processing algorithm</title>
3 <script src="/resources/testharness.js"></script>
4 <script src="/resources/testharnessreport.js"></script>
5  <body>
6  <div id="foo" style="width: 100px; height: 100px; background-color: black"></div>
7  <script>
8
9  // Historically mouseover was special in the spec, but now it is not. See https://github.com/whatwg/html/pull/2398.
10  test(function(t) {
11      var ev = new Event('mouseover', {cancelable: true});
12      document.getElementById("foo").onmouseover = t.step_func(function() { return false });
13      document.getElementById("foo").dispatchEvent(ev);
14      assert_equals(ev.defaultPrevented, true)
15  }, "mouseover listener returning false cancels event (using Event)");
16
17  test(function(t) {
18      var ev = new MouseEvent('mouseover', {cancelable: true});
19      document.getElementById("foo").onmouseover = t.step_func(function() { return false });
20      document.getElementById("foo").dispatchEvent(ev);
21      assert_equals(ev.defaultPrevented, true)
22  }, "mouseover listener returning false cancels event (using MouseEvent)");
23
24  test(function(t) {
25      var ev = new Event('mouseover', {cancelable: true});
26      document.getElementById("foo").onmouseover = t.step_func(function() { return true });
27      document.getElementById("foo").dispatchEvent(ev);
28      assert_equals(ev.defaultPrevented, false)
29  }, "mouseover listener returning true doesn't cancel event (using Event)");
30
31  test(function(t) {
32      var ev = new MouseEvent('mouseover', {cancelable: true});
33      document.getElementById("foo").onmouseover = t.step_func(function() { return true });
34      document.getElementById("foo").dispatchEvent(ev);
35      assert_equals(ev.defaultPrevented, false)
36  }, "mouseover listener returning true doesn't cancel event (using MouseEvent)");
37
38  // beforeunload is tested in html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html
39
40  test(function(t) {
41      var ev = new Event("click", {cancelable: true});
42      document.getElementById("foo").onclick = t.step_func(function() { return false; });
43      document.getElementById("foo").dispatchEvent(ev);
44      assert_equals(ev.defaultPrevented, true);
45  }, "click listener returning false cancels event");
46
47  test(function(t) {
48      var ev = new Event("blur", {cancelable: true});
49      document.getElementById("foo").onblur = t.step_func(function() { return false; });
50      document.getElementById("foo").dispatchEvent(ev);
51      assert_equals(ev.defaultPrevented, true);
52  }, "blur listener returning false cancels event");
53
54  test(function(t) {
55      var ev = new Event("dblclick", {cancelable: true});
56      document.getElementById("foo").ondblclick = t.step_func(function() { return false; });
57      document.getElementById("foo").dispatchEvent(ev);
58      assert_equals(ev.defaultPrevented, true);
59  }, "dblclick listener returning false cancels event");
60 </script>