| <!DOCTYPE html> |
| |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script> |
| description("Test that assistiveTechnologyMakeFirstResponder works correctly."); |
| window.jsTestIsAsync = true; |
| |
| function makeWindowFirstResponderUIScript() { |
| return `(function() { |
| uiController.makeWindowContentViewFirstResponder(); |
| })();`; |
| } |
| |
| function isWindowFirstResponderScript() { |
| return `(function() { |
| return uiController.isWindowContentViewFirstResponder; |
| })();`; |
| } |
| |
| function setfirstResponderSuppressionUIScript(x) { |
| return `(function() { |
| return uiController.firstResponderSuppressionForWebView(${x}); |
| })();`; |
| } |
| |
| function doTest() { |
| // 1. Make window first responder and suppress the first responder change for web content |
| if (window.testRunner) { |
| testRunner.runUIScript(makeWindowFirstResponderUIScript(), function() { |
| testRunner.runUIScript(setfirstResponderSuppressionUIScript(true), function() { |
| testSuppressFirstResponderChange(); |
| }); |
| }); |
| } |
| } |
| |
| function testSuppressFirstResponderChange() { |
| var input = document.getElementById("input"); |
| debug("DOM focus"); |
| input.focus(); |
| // Give it some delay for the IPC to happen. |
| setTimeout(function(){ |
| testRunner.runUIScript(isWindowFirstResponderScript(), function(result) { |
| debug("Window is still the first responder: " + result); |
| input.blur(); |
| // 2. Now make sure accessibility focus will make web content the first responder. |
| testAccessibilityMakeFirstResonder(); |
| }); |
| }, 100); |
| } |
| |
| function testAccessibilityMakeFirstResonder() { |
| if (window.accessibilityController) { |
| var inputObj = accessibilityController.accessibleElementById("input"); |
| debug("Accessibility focus") |
| inputObj.takeFocus(); |
| // Give it some delay for the IPC to happen. |
| setTimeout(function(){ |
| testRunner.runUIScript(isWindowFirstResponderScript(), function(result) { |
| debug("Window is still the first responder: " + result); |
| finishTest(); |
| }); |
| }, 100); |
| } |
| } |
| |
| function finishTest() { |
| // Reset _setShouldSuppressFirstResponderChanges |
| testRunner.runUIScript(setfirstResponderSuppressionUIScript(false), function() { |
| finishJSTest(); |
| }); |
| } |
| |
| window.addEventListener('load', doTest, false); |
| </script> |
| </head> |
| <body> |
| <input id="input" type="text"> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |