Index: chrome/test/data/extensions/platform_apps/web_view/focus/inject_focus.js |
diff --git a/chrome/test/data/extensions/platform_apps/web_view/focus/inject_focus.js b/chrome/test/data/extensions/platform_apps/web_view/focus/inject_focus.js |
index 5455099034973fae6da2626ecd258f2691e9d3b1..c8c3c81045b7ce7aca4200ea35431b4925898b60 100644 |
--- a/chrome/test/data/extensions/platform_apps/web_view/focus/inject_focus.js |
+++ b/chrome/test/data/extensions/platform_apps/web_view/focus/inject_focus.js |
@@ -3,22 +3,69 @@ |
// found in the LICENSE file. |
var embedder = null; |
+var inputElement; |
+var waitingForBlur = false; |
+var seenBlurAfterFocus = false; |
+ |
+var LOG = function(msg) { |
+ window.console.log(msg); |
+}; |
+ |
+var sendMessage = function(data) { |
+ embedder.postMessage(JSON.stringify(data), '*'); |
+}; |
+ |
+var waitForBlurAfterFocus = function() { |
+ LOG('seenBlurAfterFocus: ' + seenBlurAfterFocus); |
+ if (seenBlurAfterFocus) { |
+ // Already seen it. |
+ sendMessage(['response-seenBlurAfterFocus']); |
+ return; |
+ } |
+ |
+ // Otherwise we will wait. |
+ waitingForBlur = true; |
+}; |
+ |
+var waitForFocus = function() { |
+ inputElement = document.createElement('input'); |
+ inputElement.addEventListener('focus', function(e) { |
+ LOG('input.focus'); |
+ sendMessage(['response-seenFocus']); |
+ |
+ var blurHandler = function(e) { |
+ seenBlurAfterFocus = true; |
+ if (waitingForBlur) { |
+ inputElement.removeEventListener('blur', blurHandler); |
+ sendMessage(['response-seenBlurAfterFocus']); |
+ } |
+ }; |
+ inputElement.addEventListener('blur', blurHandler); |
+ }); |
+ document.body.appendChild(inputElement); |
+ |
+ inputElement.focus(); |
+}; |
+ |
window.addEventListener('message', function(e) { |
var data = JSON.parse(e.data); |
if (data[0] == 'connect') { |
embedder = e.source; |
- var msg = ['connected']; |
- embedder.postMessage(JSON.stringify(msg), '*'); |
- return; |
+ sendMessage(['connected']); |
+ } else if (data[0] == 'request-hasFocus') { |
+ var hasFocus = document.hasFocus(); |
+ sendMessage(['response-hasFocus', hasFocus]); |
+ } else if (data[0] == 'request-waitForFocus') { |
+ waitForFocus(); |
+ } else if (data[0] == 'request-waitForBlurAfterFocus') { |
+ waitForBlurAfterFocus(); |
} |
}); |
window.addEventListener('focus', function(e) { |
- var msg = ['focused']; |
- embedder.postMessage(JSON.stringify(msg), '*'); |
+ sendMessage(['focused']); |
}); |
window.addEventListener('blur', function(e) { |
- var msg = ['blurred']; |
- embedder.postMessage(JSON.stringify(msg), '*'); |
+ sendMessage(['blurred']); |
}); |