Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / chrome / test / data / extensions / platform_apps / web_view / media_access / check / embedder.js
1 // Copyright 2014 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 // Sends a message to WebViewTest denoting it is done and test
11 // has failed.
12 embedder.failTest = function(msg) {
13   window.console.log('test failure, reason: ' + msg);
14   chrome.test.sendMessage('TEST_FAILED');
15 };
16
17 // Sends a message to WebViewTest denoting it is done and test
18 // has succeeded.
19 embedder.maybePassTest = function() {
20   window.console.log('test passed');
21   chrome.test.sendMessage('TEST_PASSED');
22 };
23
24 /** @private */
25 embedder.setUpGuest_ = function() {
26   document.querySelector('#webview-tag-container').innerHTML =
27       '<webview style="width: 100px; height: 100px;"' +
28       ' src="' + embedder.guestURL + '"' +
29       '></webview>';
30   var webview = document.querySelector('webview');
31   if (!webview) {
32     embedder.failTest('No <webview> element created');
33     return null;
34   }
35   return webview;
36 };
37
38 /** @private */
39 embedder.setUpLoadStop_ = function(webview) {
40   var onWebViewLoadStop = function(e) {
41     window.console.log('onWebViewLoadStop');
42
43     // Send post message to <webview> when it's ready to receive them.
44     // This will make the guest start issueing media request. We do not
45     // worry about the Javascript outcome. MockWebContestsDelegate in
46     // WebViewTest will take care of that.
47     webview.contentWindow.postMessage(
48         JSON.stringify(['get-sources-permission']), '*');
49   };
50   webview.addEventListener('loadstop', onWebViewLoadStop);
51 };
52
53 // The test loads a guest which requests media sources, which will in turn check
54 // for media access permission.
55 //
56 // Note that this is a manually run test, not using chrome.test.runTests.
57 // This is because we want to wait for MockWebContestsDelegate to catch the
58 // media access check and not actually do a check.
59
60 // Entry point for test, called by WebViewTest.
61 function startCheckTest(testName) {
62   chrome.test.getConfig(function(config) {
63     embedder.baseGuestURL = 'http://localhost:' + config.testServer.port;
64     embedder.guestURL = embedder.baseGuestURL +
65         '/extensions/platform_apps/web_view/media_access' +
66         '/media_check_guest.html';
67     chrome.test.log('Guest url is: ' + embedder.guestURL);
68
69     var webview = embedder.setUpGuest_();
70     if (!webview) {
71       return;
72     }
73
74     embedder.setUpLoadStop_(webview);
75
76     webview.addEventListener('consolemessage', function(e) {
77       window.console.log(e.message);
78     });
79
80     window.addEventListener('message', function(e) {
81       var data = JSON.parse(e.data);
82       if (data[0] == 'got-sources') {
83         embedder.maybePassTest();
84       } else {
85         window.console.log('Unexpected message: ' + e.message);
86       }
87     });
88   });
89 }
90
91 onload = function() {
92   chrome.test.sendMessage('Launched');
93 };