| Index: third_party/WebKit/LayoutTests/imported/wpt/dom/events/Event-cancelBubble.html
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/dom/events/Event-cancelBubble.html b/third_party/WebKit/LayoutTests/imported/wpt/dom/events/Event-cancelBubble.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d8d2d7239d025f7cd39aaa67197c6a51a41c287e
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/dom/events/Event-cancelBubble.html
|
| @@ -0,0 +1,132 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| +<head>
|
| + <meta charset="utf-8">
|
| + <title>Event.cancelBubble</title>
|
| + <link rel="author" title="Chris Rebert" href="http://chrisrebert.com">
|
| + <link rel="help" href="https://dom.spec.whatwg.org/#dom-event-cancelbubble">
|
| + <meta name="flags" content="dom">
|
| + <script src="/resources/testharness.js"></script>
|
| + <script src="/resources/testharnessreport.js"></script>
|
| +</head>
|
| +<body>
|
| + <div id="outer">
|
| + <div id="middle">
|
| + <div id="inner"></div>
|
| + </div>
|
| + </div>
|
| + <script>
|
| +test(function () {
|
| + // See https://dom.spec.whatwg.org/#stop-propagation-flag
|
| + var e = document.createEvent('Event');
|
| + assert_false(e.cancelBubble, "cancelBubble must be false after event creation.");
|
| +}, "cancelBubble must be false when an event is initially created.");
|
| +
|
| +test(function () {
|
| + // See https://dom.spec.whatwg.org/#concept-event-initialize
|
| +
|
| + // Event which bubbles.
|
| + var one = document.createEvent('Event');
|
| + one.cancelBubble = true;
|
| + one.initEvent('foo', true/*bubbles*/, false/*cancelable*/);
|
| + assert_false(one.cancelBubble, "initEvent() must set cancelBubble to false. [bubbles=true]");
|
| + // Re-initialization.
|
| + one.cancelBubble = true;
|
| + one.initEvent('foo', true/*bubbles*/, false/*cancelable*/);
|
| + assert_false(one.cancelBubble, "2nd initEvent() call must set cancelBubble to false. [bubbles=true]");
|
| +
|
| + // Event which doesn't bubble.
|
| + var two = document.createEvent('Event');
|
| + two.cancelBubble = true;
|
| + two.initEvent('foo', false/*bubbles*/, false/*cancelable*/);
|
| + assert_false(two.cancelBubble, "initEvent() must set cancelBubble to false. [bubbles=false]");
|
| + // Re-initialization.
|
| + two.cancelBubble = true;
|
| + two.initEvent('foo', false/*bubbles*/, false/*cancelable*/);
|
| + assert_false(two.cancelBubble, "2nd initEvent() call must set cancelBubble to false. [bubbles=false]");
|
| +}, "Initializing an event must set cancelBubble to false.");
|
| +
|
| +test(function () {
|
| + // See https://dom.spec.whatwg.org/#dom-event-stoppropagation
|
| + var e = document.createEvent('Event');
|
| + e.stopPropagation();
|
| + assert_true(e.cancelBubble, "stopPropagation() must set cancelBubble to true.");
|
| +}, "stopPropagation() must set cancelBubble to true.");
|
| +
|
| +test(function () {
|
| + // See https://dom.spec.whatwg.org/#dom-event-stopimmediatepropagation
|
| + var e = document.createEvent('Event');
|
| + e.stopImmediatePropagation();
|
| + assert_true(e.cancelBubble, "stopImmediatePropagation() must set cancelBubble to true.");
|
| +}, "stopImmediatePropagation() must set cancelBubble to true.");
|
| +
|
| +test(function () {
|
| + var one = document.createEvent('Event');
|
| + one.stopPropagation();
|
| + one.cancelBubble = false;
|
| + assert_true(one.cancelBubble, "cancelBubble must still be true after attempting to set it to false.");
|
| +}, "Event.cancelBubble=false must have no effect.");
|
| +
|
| +test(function (t) {
|
| + var outer = document.getElementById('outer');
|
| + var middle = document.getElementById('middle');
|
| + var inner = document.getElementById('inner');
|
| +
|
| + outer.addEventListener('barbaz', t.step_func(function () {
|
| + assert_unreached("Setting Event.cancelBubble=false after setting Event.cancelBubble=true should have no effect.");
|
| + }), false/*useCapture*/);
|
| +
|
| + middle.addEventListener('barbaz', function (e) {
|
| + e.cancelBubble = true;// Stop propagation.
|
| + e.cancelBubble = false;// Should be a no-op.
|
| + }, false/*useCapture*/);
|
| +
|
| + var barbazEvent = document.createEvent('Event');
|
| + barbazEvent.initEvent('barbaz', true/*bubbles*/, false/*cancelable*/);
|
| + inner.dispatchEvent(barbazEvent);
|
| +}, "Event.cancelBubble=false must have no effect during event propagation.");
|
| +
|
| +test(function () {
|
| + // See https://dom.spec.whatwg.org/#concept-event-dispatch
|
| + // "14. Unset event’s [...] stop propagation flag,"
|
| + var e = document.createEvent('Event');
|
| + e.initEvent('foobar', true/*bubbles*/, true/*cancelable*/);
|
| + document.body.addEventListener('foobar', function listener(e) {
|
| + e.stopPropagation();
|
| + });
|
| + document.body.dispatchEvent(e);
|
| + assert_false(e.cancelBubble, "cancelBubble must be false after an event has been dispatched.");
|
| +}, "cancelBubble must be false after an event has been dispatched.");
|
| +
|
| +test(function (t) {
|
| + var outer = document.getElementById('outer');
|
| + var middle = document.getElementById('middle');
|
| + var inner = document.getElementById('inner');
|
| +
|
| + var propagationStopper = function (e) {
|
| + e.cancelBubble = true;
|
| + };
|
| +
|
| + // Bubble phase
|
| + middle.addEventListener('bar', propagationStopper, false/*useCapture*/);
|
| + outer.addEventListener('bar', t.step_func(function listenerOne() {
|
| + assert_unreached("Setting cancelBubble=true should stop the event from bubbling further.");
|
| + }), false/*useCapture*/);
|
| +
|
| + var barEvent = document.createEvent('Event');
|
| + barEvent.initEvent('bar', true/*bubbles*/, false/*cancelable*/);
|
| + inner.dispatchEvent(barEvent);
|
| +
|
| + // Capture phase
|
| + outer.addEventListener('qux', propagationStopper, true/*useCapture*/);
|
| + middle.addEventListener('qux', t.step_func(function listenerTwo() {
|
| + assert_unreached("Setting cancelBubble=true should stop the event from propagating further, including during the Capture Phase.");
|
| + }), true/*useCapture*/);
|
| +
|
| + var quxEvent = document.createEvent('Event');
|
| + quxEvent.initEvent('qux', false/*bubbles*/, false/*cancelable*/);
|
| + inner.dispatchEvent(quxEvent);
|
| +}, "Event.cancelBubble=true must set the stop propagation flag.");
|
| + </script>
|
| +</body>
|
| +</html>
|
|
|