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

Side by Side Diff: chrome/test/data/extensions/platform_apps/web_view/focus/embedder.js

Issue 14272003: <webview>: Focusing <webview> should propagate to BrowserPlugin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved to web_view_interactive_browsertest.cc Created 7 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 var embedder = {};
6 embedder.tests = {};
7 embedder.baseGuestURL = '';
8 embedder.guestURL = '';
9
10 embedder.setUp = function(config) {
11 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port;
12 embedder.guestURL = embedder.baseGuestURL +
13 '/files/extensions/platform_apps/web_view/focus' +
14 '/guest.html';
15 chrome.test.log('Guest url is: ' + embedder.guestURL);
16 };
17
18 /** @private */
19 embedder.setUpGuest_ = function() {
20 document.querySelector('#webview-tag-container').innerHTML =
21 '<webview style="width: 100px; height: 100px;"></webview>';
22 var webview = document.querySelector('webview');
23 if (!webview) {
24 chrome.test.fail('No <webview> element created');
25 }
26 return webview;
27 };
28
29 /** @private */
30 embedder.waitForResponseFromGuest_ =
31 function(webview,
32 testName,
33 channelCreationCallback,
34 expectedResponse,
35 responseCallback) {
36 var onPostMessageReceived = function(e) {
37 var data = JSON.parse(e.data);
38 var response = data[0];
39 if (response == 'channel-created') {
40 channelCreationCallback(webview);
41 return;
42 }
43 var name = data[1];
44 if ((response != expectedResponse) || (name != testName)) {
45 chrome.test.log('Unexpected response from guest.');
46 return;
47 }
48 responseCallback();
49 };
50 window.addEventListener('message', onPostMessageReceived);
51
52 var onWebViewLoadStop = function(e) {
53 // This creates a communication channel with the guest.
54 webview.contentWindow.postMessage(
55 JSON.stringify(['create-channel', testName]), '*');
56 };
57 webview.addEventListener('loadstop', onWebViewLoadStop);
58 webview.setAttribute('src', embedder.guestURL);
59 };
60
61 // Tests begin.
62
63 // The embedder has to initiate a post message so that the guest can get a
64 // reference to embedder to send the reply back.
65
66 embedder.testFocus_ = function(testName,
67 channelCreationCallback,
68 expectedResponse,
69 responseCallback) {
70 var webview = embedder.setUpGuest_();
71
72 embedder.waitForResponseFromGuest_(webview,
73 testName,
74 channelCreationCallback,
75 expectedResponse,
76 responseCallback);
77 };
78
79 embedder.tests.testFocusEvent = function testFocusEvent() {
80 var seenResponse = false;
81 embedder.testFocus_('testFocusEvent', function(webview) {
82 webview.focus();
83 }, 'focused', function() {
84 // The focus event fires three times on first focus. We only care about
85 // the first focus.
86 if (seenResponse)
87 return;
88 seenResponse = true;
89 chrome.test.succeed();
90 });
91 }
92
93 embedder.tests.testBlurEvent = function testBlurEvent() {
94 var seenResponse = false;
95 embedder.testFocus_('testFocusEvent', function(webview) {
96 webview.focus();
97 }, 'blurred', function() {
98 chrome.test.succeed();
99 });
100 }
101
102 onload = function() {
103 chrome.test.getConfig(function(config) {
104 embedder.setUp(config);
105 chrome.test.runTests([
106 embedder.tests.testFocusEvent,
107 embedder.tests.testBlurEvent
108 ]);
109 });
110 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698