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

Unified Diff: chrome/common/extensions/docs/examples/extensions/speak_selection/options.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/options.js
===================================================================
--- chrome/common/extensions/docs/examples/extensions/speak_selection/options.js (revision 0)
+++ chrome/common/extensions/docs/examples/extensions/speak_selection/options.js (revision 0)
@@ -0,0 +1,124 @@
+function load() {
+ var selectedElement = document.getElementById('selected');
+ var sel = window.getSelection();
+ sel.removeAllRanges();
+ var range = document.createRange();
+ range.selectNode(selectedElement);
+ sel.addRange(range);
+
+ var rateElement = document.getElementById('rate');
+ var pitchElement = document.getElementById('pitch');
+ var volumeElement = document.getElementById('volume');
+ var rate = localStorage['rate'] || 1.0;
+ var pitch = localStorage['pitch'] || 1.0;
+ var volume = localStorage['volume'] || 1.0;
+ rateElement.value = rate;
+ pitchElement.value = pitch;
+ volumeElement.value = volume;
+ function listener(evt) {
+ rate = rateElement.value;
+ localStorage['rate'] = rate;
+ pitch = pitchElement.value;
+ localStorage['pitch'] = pitch;
+ volume = volumeElement.value;
+ localStorage['volume'] = volume;
+ }
+ rateElement.addEventListener('keyup', listener, false);
+ pitchElement.addEventListener('keyup', listener, false);
+ volumeElement.addEventListener('keyup', listener, false);
+ rateElement.addEventListener('mouseup', listener, false);
+ pitchElement.addEventListener('mouseup', listener, false);
+ volumeElement.addEventListener('mouseup', listener, false);
+
+ var defaultsButton = document.getElementById('defaults');
+ defaultsButton.addEventListener('click', function(evt) {
+ rate = 1.0;
+ pitch = 1.0;
+ volume = 1.0;
+ localStorage['rate'] = rate;
+ localStorage['pitch'] = pitch;
+ localStorage['volume'] = volume;
+ rateElement.value = rate;
+ pitchElement.value = pitch;
+ volumeElement.value = volume;
+ }, false);
+
+ var voice = document.getElementById('voice');
+ var voiceArray = [];
+ chrome.tts.getVoices(function(va) {
+ voiceArray = va;
+ for (var i = 0; i < voiceArray.length; i++) {
+ var opt = document.createElement('option');
+ var name = voiceArray[i].voiceName;
+ if (name == localStorage['voice']) {
+ opt.setAttribute('selected', '');
+ }
+ opt.setAttribute('value', name);
+ opt.innerText = voiceArray[i].voiceName;
+ voice.appendChild(opt);
+ }
+ });
+ voice.addEventListener('change', function() {
+ var i = voice.selectedIndex;
+ localStorage['voice'] = voiceArray[i].voiceName;
+ }, false);
+
+ var defaultKeyString = getDefaultKeyString();
+
+ var keyString = localStorage['speakKey'];
+ if (keyString == undefined) {
+ keyString = defaultKeyString;
+ }
+
+ var testButton = document.getElementById('test');
+ testButton.addEventListener('click', function(evt) {
+ chrome.tts.speak(
+ 'Testing speech synthesis',
+ {voiceName: localStorage['voice'],
+ rate: parseFloat(rate),
+ pitch: parseFloat(pitch),
+ volume: parseFloat(volume)});
+ });
+
+ var hotKeyElement = document.getElementById('hotkey');
+ hotKeyElement.value = keyString;
+ hotKeyElement.addEventListener('keydown', function(evt) {
+ switch (evt.keyCode) {
+ case 27: // Escape
+ evt.stopPropagation();
+ evt.preventDefault();
+ hotKeyElement.blur();
+ return false;
+ case 8: // Backspace
+ case 46: // Delete
+ evt.stopPropagation();
+ evt.preventDefault();
+ hotKeyElement.value = '';
+ localStorage['speakKey'] = '';
+ sendKeyToAllTabs('');
+ window.speakKeyStr = '';
+ return false;
+ case 9: // Tab
+ return false;
+ case 16: // Shift
+ case 17: // Control
+ case 18: // Alt/Option
+ case 91: // Meta/Command
+ evt.stopPropagation();
+ evt.preventDefault();
+ return false;
+ }
+ var keyStr = keyEventToString(evt);
+ if (keyStr) {
+ hotKeyElement.value = keyStr;
+ localStorage['speakKey'] = keyStr;
+ sendKeyToAllTabs(keyStr);
+
+ // Set the key used by the content script running in the options page.
+ window.speakKeyStr = keyStr;
+ }
+ evt.stopPropagation();
+ evt.preventDefault();
+ return false;
+ }, true);
+}
Property changes on: chrome/common/extensions/docs/examples/extensions/speak_selection/options.js
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698