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

Side by Side Diff: chrome/browser/speech/extension_api/tts_engine_extension_api.cc

Issue 15108002: Add Pause and Resume to Web TTS & Extension TTS APIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix typo Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/speech/extension_api/tts_engine_extension_api.h" 5 #include "chrome/browser/speech/extension_api/tts_engine_extension_api.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "chrome/browser/extensions/event_router.h" 11 #include "chrome/browser/extensions/event_router.h"
12 #include "chrome/browser/extensions/extension_service.h" 12 #include "chrome/browser/extensions/extension_service.h"
13 #include "chrome/browser/extensions/extension_system.h" 13 #include "chrome/browser/extensions/extension_system.h"
14 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/speech/extension_api/tts_extension_api.h" 15 #include "chrome/browser/speech/extension_api/tts_extension_api.h"
16 #include "chrome/browser/speech/extension_api/tts_extension_api_constants.h" 16 #include "chrome/browser/speech/extension_api/tts_extension_api_constants.h"
17 #include "chrome/browser/speech/tts_controller.h" 17 #include "chrome/browser/speech/tts_controller.h"
18 #include "chrome/common/extensions/api/speech/tts_engine_manifest_handler.h" 18 #include "chrome/common/extensions/api/speech/tts_engine_manifest_handler.h"
19 #include "chrome/common/extensions/extension.h" 19 #include "chrome/common/extensions/extension.h"
20 20
21 using extensions::Extension; 21 using extensions::Extension;
22 22
23 namespace constants = tts_extension_api_constants; 23 namespace constants = tts_extension_api_constants;
24 24
25 namespace tts_engine_events { 25 namespace tts_engine_events {
26 const char kOnSpeak[] = "ttsEngine.onSpeak"; 26 const char kOnSpeak[] = "ttsEngine.onSpeak";
27 const char kOnStop[] = "ttsEngine.onStop"; 27 const char kOnStop[] = "ttsEngine.onStop";
28 const char kOnPause[] = "ttsEngine.onPause";
29 const char kOnResume[] = "ttsEngine.onResume";
28 }; // namespace tts_engine_events 30 }; // namespace tts_engine_events
29 31
30 void GetExtensionVoices(Profile* profile, std::vector<VoiceData>* out_voices) { 32 void GetExtensionVoices(Profile* profile, std::vector<VoiceData>* out_voices) {
31 ExtensionService* service = profile->GetExtensionService(); 33 ExtensionService* service = profile->GetExtensionService();
32 DCHECK(service); 34 DCHECK(service);
33 extensions::EventRouter* event_router = 35 extensions::EventRouter* event_router =
34 extensions::ExtensionSystem::Get(profile)->event_router(); 36 extensions::ExtensionSystem::Get(profile)->event_router();
35 DCHECK(event_router); 37 DCHECK(event_router);
36 38
37 const ExtensionSet* extensions = service->extensions(); 39 const ExtensionSet* extensions = service->extensions();
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 126
125 void ExtensionTtsEngineStop(Utterance* utterance) { 127 void ExtensionTtsEngineStop(Utterance* utterance) {
126 scoped_ptr<ListValue> args(new ListValue()); 128 scoped_ptr<ListValue> args(new ListValue());
127 scoped_ptr<extensions::Event> event(new extensions::Event( 129 scoped_ptr<extensions::Event> event(new extensions::Event(
128 tts_engine_events::kOnStop, args.Pass())); 130 tts_engine_events::kOnStop, args.Pass()));
129 event->restrict_to_profile = utterance->profile(); 131 event->restrict_to_profile = utterance->profile();
130 extensions::ExtensionSystem::Get(utterance->profile())->event_router()-> 132 extensions::ExtensionSystem::Get(utterance->profile())->event_router()->
131 DispatchEventToExtension(utterance->extension_id(), event.Pass()); 133 DispatchEventToExtension(utterance->extension_id(), event.Pass());
132 } 134 }
133 135
136 void ExtensionTtsEnginePause(Utterance* utterance) {
137 scoped_ptr<ListValue> args(new ListValue());
138 scoped_ptr<extensions::Event> event(new extensions::Event(
139 tts_engine_events::kOnPause, args.Pass()));
140 event->restrict_to_profile = utterance->profile();
141 extensions::ExtensionSystem::Get(utterance->profile())->event_router()->
142 DispatchEventToExtension(utterance->extension_id(), event.Pass());
143 }
144
145 void ExtensionTtsEngineResume(Utterance* utterance) {
146 scoped_ptr<ListValue> args(new ListValue());
147 scoped_ptr<extensions::Event> event(new extensions::Event(
148 tts_engine_events::kOnResume, args.Pass()));
149 event->restrict_to_profile = utterance->profile();
150 extensions::ExtensionSystem::Get(utterance->profile())->event_router()->
151 DispatchEventToExtension(utterance->extension_id(), event.Pass());
not at google - send to devlin 2013/05/13 14:46:53 Consider sending a warning to the console of the t
dmazzoni 2013/05/14 16:50:27 You were thinking of UIThreadExtensionFunction::Wr
152 }
153
134 bool ExtensionTtsEngineSendTtsEventFunction::RunImpl() { 154 bool ExtensionTtsEngineSendTtsEventFunction::RunImpl() {
135 int utterance_id; 155 int utterance_id;
136 std::string error_message; 156 std::string error_message;
137 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &utterance_id)); 157 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &utterance_id));
138 158
139 DictionaryValue* event; 159 DictionaryValue* event;
140 EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &event)); 160 EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &event));
141 161
142 std::string event_type; 162 std::string event_type;
143 EXTENSION_FUNCTION_VALIDATE( 163 EXTENSION_FUNCTION_VALIDATE(
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 controller->OnTtsEvent( 205 controller->OnTtsEvent(
186 utterance_id, TTS_EVENT_SENTENCE, char_index, std::string()); 206 utterance_id, TTS_EVENT_SENTENCE, char_index, std::string());
187 } else if (event_type == constants::kEventTypeMarker) { 207 } else if (event_type == constants::kEventTypeMarker) {
188 controller->OnTtsEvent( 208 controller->OnTtsEvent(
189 utterance_id, TTS_EVENT_MARKER, char_index, std::string()); 209 utterance_id, TTS_EVENT_MARKER, char_index, std::string());
190 } else if (event_type == constants::kEventTypeError) { 210 } else if (event_type == constants::kEventTypeError) {
191 std::string error_message; 211 std::string error_message;
192 event->GetString(constants::kErrorMessageKey, &error_message); 212 event->GetString(constants::kErrorMessageKey, &error_message);
193 controller->OnTtsEvent( 213 controller->OnTtsEvent(
194 utterance_id, TTS_EVENT_ERROR, char_index, error_message); 214 utterance_id, TTS_EVENT_ERROR, char_index, error_message);
215 } else if (event_type == constants::kEventTypePause) {
216 controller->OnTtsEvent(
217 utterance_id, TTS_EVENT_PAUSE, char_index, std::string());
218 } else if (event_type == constants::kEventTypeResume) {
219 controller->OnTtsEvent(
220 utterance_id, TTS_EVENT_RESUME, char_index, std::string());
195 } else { 221 } else {
196 EXTENSION_FUNCTION_VALIDATE(false); 222 EXTENSION_FUNCTION_VALIDATE(false);
197 } 223 }
198 224
199 return true; 225 return true;
200 } 226 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698