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

Unified Diff: chrome/common/extensions/docs/examples/extensions/speak_selection/background.js

Issue 8114011: Add sample extensions that use the text-to-speech (TTS) API. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/examples/extensions/speak_selection/background.js
===================================================================
--- chrome/common/extensions/docs/examples/extensions/speak_selection/background.js (revision 0)
+++ chrome/common/extensions/docs/examples/extensions/speak_selection/background.js (revision 0)
@@ -0,0 +1,77 @@
+var lastUtterance = '';
+var speaking = false;
+var globalUtteranceIndex = 0;
+
+if (localStorage['lastVersionUsed'] != '1') {
+ localStorage['lastVersionUsed'] = '1';
+ chrome.tabs.create({
+ url: chrome.extension.getURL('options.html')
+ });
+}
+
+function speak(utterance) {
+ if (speaking && utterance == lastUtterance) {
+ chrome.tts.stop();
+ return;
+ }
+
+ speaking = true;
+ lastUtterance = utterance;
+ globalUtteranceIndex++;
+ var utteranceIndex = globalUtteranceIndex;
+
+ chrome.browserAction.setIcon({path: 'SpeakSel19-active.png'});
+
+ var rate = localStorage['rate'] || 1.0;
+ var pitch = localStorage['pitch'] || 1.0;
+ var volume = localStorage['volume'] || 1.0;
+ var voice = localStorage['voice'];
+ chrome.tts.speak(
+ utterance,
+ {voiceName: voice,
+ rate: parseFloat(rate),
+ pitch: parseFloat(pitch),
+ volume: parseFloat(volume),
+ onEvent: function(evt) {
+ if (evt.type == 'end' ||
+ evt.type == 'interrupted' ||
+ evt.type == 'cancelled' ||
+ evt.type == 'error') {
+ if (utteranceIndex == globalUtteranceIndex) {
+ speaking = false;
+ chrome.browserAction.setIcon({path: 'SpeakSel19.png'});
+ }
+ }
+ }
+ });
+}
+
+function initBackground() {
+ loadContentScriptInAllTabs();
+
+ var defaultKeyString = getDefaultKeyString();
+ var keyString = localStorage['speakKey'];
+ if (keyString == undefined) {
+ keyString = defaultKeyString;
+ localStorage['speakKey'] = keyString;
+ }
+ sendKeyToAllTabs(keyString);
+
+ chrome.extension.onRequest.addListener(
+ function(request, sender, sendResponse) {
+ if (request['init']) {
+ sendResponse({'key': localStorage['speakKey']});
+ } else if (request['speak']) {
+ speak(request['speak']);
+ }
+ });
+
+ chrome.browserAction.onClicked.addListener(
+ function(tab) {
+ chrome.tabs.sendRequest(
+ tab.id,
+ {'speakSelection': true});
+ });
+}
+
+initBackground();
Property changes on: chrome/common/extensions/docs/examples/extensions/speak_selection/background.js
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698