- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / data / extensions / platform_apps / web_view / edit_commands_no_menu / embedder.js
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       '/extensions/platform_apps/web_view/edit_commands_no_menu' +
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();
41       chrome.test.sendMessage('connected');
42       return;
43     }
44     console.log('response: ' + response);
45     var name = data[1];
46     if ((response != expectedResponse) || (name != testName)) {
47       return;
48     }
49     responseCallback();
50     window.removeEventListener('message', onPostMessageReceived);
51   };
52   window.addEventListener('message', onPostMessageReceived);
53
54   var onWebViewLoadStop = function(e) {
55     // This creates a communication channel with the guest.
56     webview.contentWindow.postMessage(
57         JSON.stringify(['create-channel', testName]), '*');
58     webview.removeEventListener('loadstop', onWebViewLoadStop);
59   };
60   webview.addEventListener('loadstop', onWebViewLoadStop);
61   webview.setAttribute('src', embedder.guestURL);
62 };
63
64 // Tests begin.
65
66 embedder.tests.testStartOfLineWhenFocused =
67     function testStartOfLineWhenFocused(webview) {
68   embedder.waitForResponseFromGuest_(webview, 'testStartOfLineWhenFocused',
69       function() {
70     webview.focus();
71     webview.contentWindow.postMessage(JSON.stringify(['end-of-line']), '*');
72   }, 'caret-position-0', function() {
73     chrome.test.sendMessage('StartOfLine');
74   });
75 }
76
77  embedder.startTests = function startTests() {
78    var webview = embedder.setUpGuest_();
79    embedder.tests.testStartOfLineWhenFocused(webview);
80  };
81
82 onload = function() {
83   chrome.test.getConfig(function(config) {
84     embedder.setUp(config);
85     embedder.startTests();
86   });
87 };