Index: third_party/WebKit/LayoutTests/fast/events/context-menu-key-shift-f10-prevent-default.html |
diff --git a/third_party/WebKit/LayoutTests/fast/events/context-menu-key-shift-f10-prevent-default.html b/third_party/WebKit/LayoutTests/fast/events/context-menu-key-shift-f10-prevent-default.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7c0fd5e044cf2e4f86f5d1596bdcdd31827f6deb |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/fast/events/context-menu-key-shift-f10-prevent-default.html |
@@ -0,0 +1,45 @@ |
+<!DOCTYPE html> |
+<title>Test Context Menu Key, Shift+F10 behavior when preventing default</title> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<a href="#" id="anchor">Anchor</a> |
+<script> |
+test(function() { |
+ assert_not_equals(window.eventSender, undefined, 'This test requires eventSender.'); |
+ |
+ var contextMenuFired = false; |
+ var preventKeydown = false; |
+ var preventKeyup = false; |
+ var anchor = document.getElementById('anchor'); |
+ anchor.addEventListener('contextmenu', () => contextMenuFired = true); |
+ anchor.addEventListener('keydown', event => preventKeydown ? event.preventDefault() : true); |
+ anchor.addEventListener('keyup', event => preventKeyup ? event.preventDefault() : true); |
+ |
+ function testContextMenuEvent(key, modifiers, shouldFire, shouldPreventKeydown, shouldPreventKeyup) { |
+ contextMenuFired = false; |
+ preventKeydown = shouldPreventKeydown; |
+ preventKeyup = shouldPreventKeyup; |
+ anchor.focus(); |
+ eventSender.keyDown(key, modifiers); |
+ // Esc key to hide context menu |
+ eventSender.keyDown("Escape"); |
+ assert_equals(contextMenuFired, shouldFire, `${key}+${modifiers} opens Context Menu:${shouldFire} PreventKeydown:${shouldPreventKeydown} PreventKeyup:${shouldPreventKeyup}.`); |
+ } |
+ |
+ // Shift+F10 should always bind to keydown. |
+ testContextMenuEvent('F10', ['shiftKey'], true, false, false); |
+ testContextMenuEvent('F10', ['shiftKey'], false, true, false); |
+ testContextMenuEvent('F10', ['shiftKey'], true, false, true); |
+ |
+ // ContextMenu key should bind to keyup on Windows and keydown on other platforms. |
+ testContextMenuEvent('ContextMenu', [], true, false, false); |
+ const isWin = navigator.platform.indexOf('Win') == 0; |
+ if (isWin) { |
+ testContextMenuEvent('ContextMenu', [], true, true, false); |
+ testContextMenuEvent('ContextMenu', [], false, false, true); |
+ } else { |
+ testContextMenuEvent('ContextMenu', [], false, true, false); |
+ testContextMenuEvent('ContextMenu', [], true, false, true); |
+ } |
+}, 'Shift+F10 should bind to keydown, ContextMenu key should bind to keyup only on Windows.'); |
+</script> |