Index: third_party/WebKit/LayoutTests/fast/events/sequential-focus-navigation-starting-point.html |
diff --git a/third_party/WebKit/LayoutTests/fast/events/sequential-focus-navigation-starting-point.html b/third_party/WebKit/LayoutTests/fast/events/sequential-focus-navigation-starting-point.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a1dfa660433813e9f3cdcd6ae234499d75bbfaba |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/fast/events/sequential-focus-navigation-starting-point.html |
@@ -0,0 +1,58 @@ |
+<!DOCTYPE html> |
+<body> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<script src="../forms/resources/common.js"></script> |
+<div id="log"></div> |
+<div id="container"></div> |
+<script> |
+if (!window.eventSender) |
+ document.body.textContent = 'This test requires window.eventSender.'; |
+ |
+test(function() { |
+ var container = document.querySelector('#container'); |
+ container.innerHTML = '<input id=prev><div style="height:200px;"><span>text</span></div><input id=next>'; |
+ hoverOverElement(container.querySelector('span')); |
+ eventSender.mouseDown(); |
+ eventSender.keyDown('\t'); |
+ assert_equals(document.activeElement.id, 'next'); |
+ |
+ hoverOverElement(container.querySelector('div')); |
+ eventSender.mouseDown(); |
+ eventSender.keyDown('\t', ['shiftKey']); |
+ assert_equals(document.activeElement.id, 'prev'); |
+}, 'Mouse press should update sequential focus navigation starting point.'); |
+ |
+test(function() { |
+ var container = document.querySelector('#container'); |
+ container.innerHTML = '<a href="#fragment"></a><input id=prev><a name="fragment"></a><input id=next>'; |
+ container.querySelector('a').click(); |
+ eventSender.keyDown('\t'); |
+ assert_equals(document.activeElement.id, 'next'); |
+}, 'Fragment navigation should update sequential focus navigation starting point.'); |
+ |
+test(function() { |
+ var container = document.querySelector('#container'); |
+ container.innerHTML = '<input id=prev><input id=start><input id=next>'; |
+ container.querySelector('#start').focus(); |
+ container.querySelector('#start').blur(); |
+ eventSender.keyDown('\t'); |
+ assert_equals(document.activeElement.id, 'next'); |
+}, 'Focusing an element should update sequential focus navigation starting point.'); |
+ |
+test(function() { |
+ var container = document.querySelector('#container'); |
+ container.innerHTML = '<input id=prev><input id=start><input id=next>'; |
+ container.querySelector('#start').focus(); |
+ container.querySelector('#start').remove(); |
+ eventSender.keyDown('\t'); |
+ assert_equals(document.activeElement.id, 'next'); |
+ |
+ container.innerHTML = '<input id=prev><input id=start><input id=next>'; |
+ container.querySelector('#start').focus(); |
+ container.querySelector('#start').remove(); |
+ eventSender.keyDown('\t', ['shiftKey']); |
+ assert_equals(document.activeElement.id, 'prev'); |
+}, 'After removing a focused element from the documen tree, sequential focus navigation should start at a place where the focused element was.'); |
+</script> |
+</body> |