Index: third_party/WebKit/LayoutTests/fast/events/eventlisteneroptions/passive_dispatch.html |
diff --git a/third_party/WebKit/LayoutTests/fast/events/eventlisteneroptions/passive_dispatch.html b/third_party/WebKit/LayoutTests/fast/events/eventlisteneroptions/passive_dispatch.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2c38050386a569dbd8ebcd35152d6c009496277a |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/fast/events/eventlisteneroptions/passive_dispatch.html |
@@ -0,0 +1,65 @@ |
+<!DOCTYPE HTML> |
+<body/> |
+<script src="../../../resources/testharness.js"></script> |
+<script src="../../../resources/testharnessreport.js"></script> |
+ |
+<!-- This test is run with normal layout tests with passiveEventListeners |
+ enabled and in virtual/stable with passiveEventListeners disabled --> |
+<script> |
+ |
+function testTwoArgumentRegister() { |
+ var handler = function handler(e) { |
+ e.preventDefault(); |
+ } |
+ document.addEventListener('test', handler); |
+ assert_equals(false, document.body.dispatchEvent(new Event('test', {'bubbles': true, 'cancelable': true}))); |
+ document.removeEventListener('test', handler); |
+ assert_equals(true, document.body.dispatchEvent(new Event('test', {'bubbles': true, 'cancelable': true}))); |
+} |
+ |
+function testPassiveValue(registerValue, expectedValue, test) { |
+ var handler = function handler(e) { |
+ e.preventDefault(); |
+ } |
+ document.addEventListener('test', handler, registerValue); |
+ var event = new Event('test', {'bubbles': true, 'cancelable': true}); |
+ assert_equals(expectedValue, document.body.dispatchEvent(event)); |
+ assert_equals(!expectedValue, event.defaultPrevented); |
+ document.removeEventListener('test', handler, registerValue); |
+ assert_equals(true, document.body.dispatchEvent(new Event('test', {'bubbles': true, 'cancelable': true}))); |
+ test.done(); |
+} |
+ |
+function testTwoHandlers() { |
+ if (!internals.runtimeFlags.passiveEventListenersEnabled) |
+ return; |
+ |
+ var passive_called = undefined; |
+ var blocking_called = undefined; |
+ var passive_handler = function handler(e) { |
+ passive_called = true; |
+ } |
+ var blocking_handler = function handler(e) { |
+ blocking_called = true; |
+ e.preventDefault(); |
+ } |
+ document.addEventListener('test', passive_handler, {"passive" : true}); |
+ document.addEventListener('test', blocking_handler, {"passive" : false}); |
+ var event = new Event('test', {'bubbles': true, 'cancelable': true}); |
+ document.body.dispatchEvent(event); |
+ assert_true(passive_called); |
+ assert_true(blocking_called); |
+ assert_true(event.defaultPrevented); |
+ document.removeEventListener('test', passive_handler, {"passive" : true}); |
+ document.removeEventListener('test', blocking_handler, {"passive" : false}); |
+} |
+ |
+test(testTwoArgumentRegister, "Two argument register"); |
+test(function(t) { testPassiveValue(false, false, t); }, "Prevent default capture false"); |
+test(function(t) { testPassiveValue(true, false, t); }, "Prevent default capture true"); |
+test(function(t) { testPassiveValue({}, false, t); }, "Prevent default with empty object"); |
+test(function(t) { testPassiveValue({passive: false}, false, t); }, "Prevent default with passive false"); |
+test(function(t) { testPassiveValue({passive: true}, internals.runtimeFlags.passiveEventListenersEnabled ? true : false, t); }, "Prevent default with passive true "); |
+test(testTwoHandlers, "Passive and Blocking Registered Handlers"); |
+ |
+</script> |