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.
5 var LOG = function(msg) {
6 window.console.log(msg);
11 speechTests.testHelper_ = function(expectSpeech, allowRequest) {
12 var webview = document.createElement('webview');
13 var permissionRequested = false;
15 webview.addEventListener('loadstop', function(e) {
17 webview.executeScript(
20 LOG('done executeScript');
21 if (!results || !results.length) {
22 LOG('Error injecting JavaScript to guest');
26 // Send message to establish channel.
27 webview.contentWindow.postMessage(
28 JSON.stringify(['create-channel']), '*');
29 LOG('done postMessage');
32 webview.addEventListener('permissionrequest', function(e) {
33 permissionRequested = true;
34 chrome.test.assertEq('media', e.permission);
35 LOG('allowRequest?: ' + allowRequest);
37 // Note that since we mock speech, this path actually doesn't get
38 // exercised because FakeSpeechRecognitionManager just sends down
39 // the response without checking for permission.
40 // TODO(lazyboy): Make FakeSpeechRecognitionManager better to address
48 webview.addEventListener('consolemessage', function(e) {
49 LOG('[guest]: ' + e.message + ', line: ' + e.line);
52 var onPostMessageReceived = function(e) {
53 var data = JSON.parse(e.data);
54 LOG('embedder.onPostMessageReceived: ' + data[0]);
56 if (data[0] != 'recognition') {
61 LOG('embedder.onPostMessageReceived.status: ' + data[1]);
65 // Won't happen, see TODO above.
66 //chrome.test.assertTrue(permissionRequested);
67 chrome.test.succeed();
69 chrome.test.assertTrue(permissionRequested);
75 var transcript = data[2];
76 chrome.test.assertEq('Pictures of the moon', transcript);
77 chrome.test.succeed();
84 chrome.test.succeed();
90 chrome.test.fail(); // Unknown.
94 window.addEventListener('message', onPostMessageReceived);
96 webview.setAttribute('src', 'about:blank');
97 document.body.appendChild(webview);
100 speechTests.denyTest = function() {
101 LOG('speechTests.denyTest');
102 speechTests.testHelper_(false /* expectSpeech */, false /* allowRequest */);
105 speechTests.allowTest = function() {
106 LOG('speechTests.allowTest');
107 speechTests.testHelper_(true /* expectSpeech */, true /* allowRequest */);
110 window.onload = function() {
111 chrome.test.getConfig(function(config) {
113 switch (config.customArg) {
115 testsToRun.push(speechTests.allowTest);
118 testsToRun.push(speechTests.denyTest);
124 chrome.test.runTests(testsToRun);