Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(363)

Unified Diff: third_party/WebKit/LayoutTests/imported/wpt/dom/events/Event-cancelBubble.html

Issue 2588723002: Import wpt@e1e2bfbe1d34de9826a036a0e9d43ba20190c69c (Closed)
Patch Set: Modify TestExpectations or download new baselines for tests. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698