Skip to content

Commit

Permalink
Test for no special behavior for mouseover cancelation
Browse files Browse the repository at this point in the history
  • Loading branch information
domenic committed Feb 24, 2017
1 parent 7792acc commit 074fb8f
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Event handlers processing algorithm: manual tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-event-handler-processing-algorithm">
<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">

<style>
div[id^="d"] {
width: 100px;
height: 100px;
background-color: blue;
}
</style>

<div id="log"></div>

<p>Mouseover these four divs</p>

<div id="d1"></div>
<div id="d2"></div>

<div id="d3" onmouseover="return false"></div>
<div id="d4" onmouseover="return true"></div>

<script>
"use strict";
async_test(t => {
const div = document.querySelector("#d1");

div.onmouseover = t.step_func(() => false);
div.addEventListener("mouseover", t.step_func_done(e => {
assert_equals(e.defaultPrevented, true);
}));
}, "Listener added via JavaScript, returns false: cancels the event");

async_test(t => {
const div = document.querySelector("#d2");

div.onmouseover = t.step_func(() => true);
div.addEventListener("mouseover", t.step_func_done(e => {
assert_equals(e.defaultPrevented, false);
}));
}, "Listener added via JavaScript, returns true: does not cancel the event");

async_test(t => {
const div = document.querySelector("#d3");

div.addEventListener("mouseover", t.step_func_done(e => {
assert_equals(e.defaultPrevented, true);
}));
}, "Listener added via markup, returns false: cancels the event");

async_test(t => {
const div = document.querySelector("#d4");

div.addEventListener("mouseover", t.step_func_done(e => {
assert_equals(e.defaultPrevented, false);
}));
}, "Listener added via markup, returns true: does not cancel the event");
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,39 @@
<body>
<div id="foo" style="width: 100px; height: 100px; background-color: black"></div>
<script>

// Historically mouseover was special in the spec, but now it is not. See https://github.com/whatwg/html/pull/2398.
async_test(function(t) {
var ev = new Event('mouseover', {cancelable: true});
document.getElementById("foo").onmouseover = t.step_func(function() { return true });
document.getElementById("foo").onmouseover = t.step_func(function() { return false });
document.getElementById("foo").dispatchEvent(ev);
assert_equals(ev.defaultPrevented, true)
t.done();
}, "mouseover listener returning false cancels event (using Event)");

async_test(function(t) {
var ev = new MouseEvent('mouseover', {cancelable: true});
document.getElementById("foo").onmouseover = t.step_func(function() { return false });
document.getElementById("foo").dispatchEvent(ev);
assert_equals(ev.defaultPrevented, true)
t.done();
}, "mouseover listener returning true cancels event");
}, "mouseover listener returning false cancels event (using MouseEvent)");

async_test(function(t) {
var ev = new Event('mouseover', {cancelable: true});
document.getElementById("foo").onmouseover = t.step_func(function() { return false; });
document.getElementById("foo").onmouseover = t.step_func(function() { return true });
document.getElementById("foo").dispatchEvent(ev);
assert_equals(ev.defaultPrevented, false)
t.done();
}, "mouseover listener returning true doesn't cancel event (using Event)");

async_test(function(t) {
var ev = new MouseEvent('mouseover', {cancelable: true});
document.getElementById("foo").onmouseover = t.step_func(function() { return true });
document.getElementById("foo").dispatchEvent(ev);
assert_equals(ev.defaultPrevented, false);
assert_equals(ev.defaultPrevented, false)
t.done();
}, "mouseover listener returning false doesn't cancel event");
}, "mouseover listener returning true doesn't cancel event (using MouseEvent)");

// beforeunload is tested in html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html

Expand Down

0 comments on commit 074fb8f

Please sign in to comment.