- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / docs / examples / extensions / speak_selection / background.js
1 /**
2  * Copyright (c) 2011 The Chromium Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  */
6
7 var lastUtterance = '';
8 var speaking = false;
9 var globalUtteranceIndex = 0;
10
11 if (localStorage['lastVersionUsed'] != '1') {
12   localStorage['lastVersionUsed'] = '1';
13   chrome.tabs.create({
14     url: chrome.extension.getURL('options.html')
15   });
16 }
17
18 function speak(utterance) {
19   if (speaking && utterance == lastUtterance) {
20     chrome.tts.stop();
21     return;
22   }
23
24   speaking = true;
25   lastUtterance = utterance;
26   globalUtteranceIndex++;
27   var utteranceIndex = globalUtteranceIndex;
28
29   chrome.browserAction.setIcon({path: 'SpeakSel19-active.png'});
30
31   var rate = localStorage['rate'] || 1.0;
32   var pitch = localStorage['pitch'] || 1.0;
33   var volume = localStorage['volume'] || 1.0;
34   var voice = localStorage['voice'];
35   chrome.tts.speak(
36       utterance,
37       {voiceName: voice,
38        rate: parseFloat(rate),
39        pitch: parseFloat(pitch),
40        volume: parseFloat(volume),
41        onEvent: function(evt) {
42          if (evt.type == 'end' ||
43              evt.type == 'interrupted' ||
44              evt.type == 'cancelled' ||
45              evt.type == 'error') {
46            if (utteranceIndex == globalUtteranceIndex) {
47              speaking = false;
48              chrome.browserAction.setIcon({path: 'SpeakSel19.png'});
49            }
50          }
51        }
52       });
53 }
54
55 function initBackground() {
56   loadContentScriptInAllTabs();
57
58   var defaultKeyString = getDefaultKeyString();
59   var keyString = localStorage['speakKey'];
60   if (keyString == undefined) {
61     keyString = defaultKeyString;
62     localStorage['speakKey'] = keyString;
63   }
64   sendKeyToAllTabs(keyString);
65
66   chrome.extension.onRequest.addListener(
67       function(request, sender, sendResponse) {
68         if (request['init']) {
69           sendResponse({'key': localStorage['speakKey']});
70         } else if (request['speak']) {
71           speak(request['speak']);
72         }
73       });
74
75   chrome.browserAction.onClicked.addListener(
76       function(tab) {
77         chrome.tabs.sendRequest(
78             tab.id,
79             {'speakSelection': true});
80       });
81 }
82
83 initBackground();