Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Unified Diff: chrome/test/data/extensions/platform_apps/web_view/focus/inject_focus.js

Issue 281833003: BrowserPluginHostTest: Rewrite 3 focus related tests and 1 visibility test to browser_tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase @tott, fix conflict Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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']);
});

Powered by Google App Engine
This is Rietveld 408576698