OLD | NEW |
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" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 content::CONSOLE_MESSAGE_LEVEL_WARNING, | 63 content::CONSOLE_MESSAGE_LEVEL_WARNING, |
64 constants::kErrorMissingPauseOrResume)); | 64 constants::kErrorMissingPauseOrResume)); |
65 } | 65 } |
66 | 66 |
67 } // namespace | 67 } // namespace |
68 | 68 |
69 TtsExtensionEngine* TtsExtensionEngine::GetInstance() { | 69 TtsExtensionEngine* TtsExtensionEngine::GetInstance() { |
70 return Singleton<TtsExtensionEngine>::get(); | 70 return Singleton<TtsExtensionEngine>::get(); |
71 } | 71 } |
72 | 72 |
73 void TtsExtensionEngine::GetVoices(Profile* profile, | 73 void TtsExtensionEngine::GetVoices(content::BrowserContext* browser_context, |
74 std::vector<VoiceData>* out_voices) { | 74 std::vector<VoiceData>* out_voices) { |
| 75 Profile* profile = Profile::FromBrowserContext(browser_context); |
75 EventRouter* event_router = EventRouter::Get(profile); | 76 EventRouter* event_router = EventRouter::Get(profile); |
76 DCHECK(event_router); | 77 DCHECK(event_router); |
77 | 78 |
78 bool is_offline = (net::NetworkChangeNotifier::GetConnectionType() == | 79 bool is_offline = (net::NetworkChangeNotifier::GetConnectionType() == |
79 net::NetworkChangeNotifier::CONNECTION_NONE); | 80 net::NetworkChangeNotifier::CONNECTION_NONE); |
80 | 81 |
81 const extensions::ExtensionSet& extensions = | 82 const extensions::ExtensionSet& extensions = |
82 extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); | 83 extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); |
83 extensions::ExtensionSet::const_iterator iter; | 84 extensions::ExtensionSet::const_iterator iter; |
84 for (iter = extensions.begin(); iter != extensions.end(); ++iter) { | 85 for (iter = extensions.begin(); iter != extensions.end(); ++iter) { |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 if (!options->HasKey(constants::kVoiceNameKey)) | 170 if (!options->HasKey(constants::kVoiceNameKey)) |
170 options->SetString(constants::kVoiceNameKey, voice.name); | 171 options->SetString(constants::kVoiceNameKey, voice.name); |
171 if (!options->HasKey(constants::kLangKey)) | 172 if (!options->HasKey(constants::kLangKey)) |
172 options->SetString(constants::kLangKey, voice.lang); | 173 options->SetString(constants::kLangKey, voice.lang); |
173 | 174 |
174 args->Append(options.release()); | 175 args->Append(options.release()); |
175 args->AppendInteger(utterance->id()); | 176 args->AppendInteger(utterance->id()); |
176 | 177 |
177 scoped_ptr<extensions::Event> event(new extensions::Event( | 178 scoped_ptr<extensions::Event> event(new extensions::Event( |
178 tts_engine_events::kOnSpeak, args.Pass())); | 179 tts_engine_events::kOnSpeak, args.Pass())); |
179 event->restrict_to_browser_context = utterance->profile(); | 180 Profile* profile = Profile::FromBrowserContext(utterance->browser_context()); |
180 EventRouter::Get(utterance->profile()) | 181 event->restrict_to_browser_context = profile; |
| 182 EventRouter::Get(profile) |
181 ->DispatchEventToExtension(utterance->extension_id(), event.Pass()); | 183 ->DispatchEventToExtension(utterance->extension_id(), event.Pass()); |
182 } | 184 } |
183 | 185 |
184 void TtsExtensionEngine::Stop(Utterance* utterance) { | 186 void TtsExtensionEngine::Stop(Utterance* utterance) { |
185 scoped_ptr<base::ListValue> args(new base::ListValue()); | 187 scoped_ptr<base::ListValue> args(new base::ListValue()); |
186 scoped_ptr<extensions::Event> event(new extensions::Event( | 188 scoped_ptr<extensions::Event> event(new extensions::Event( |
187 tts_engine_events::kOnStop, args.Pass())); | 189 tts_engine_events::kOnStop, args.Pass())); |
188 event->restrict_to_browser_context = utterance->profile(); | 190 Profile* profile = Profile::FromBrowserContext(utterance->browser_context()); |
189 EventRouter::Get(utterance->profile()) | 191 event->restrict_to_browser_context = profile; |
| 192 EventRouter::Get(profile) |
190 ->DispatchEventToExtension(utterance->extension_id(), event.Pass()); | 193 ->DispatchEventToExtension(utterance->extension_id(), event.Pass()); |
191 } | 194 } |
192 | 195 |
193 void TtsExtensionEngine::Pause(Utterance* utterance) { | 196 void TtsExtensionEngine::Pause(Utterance* utterance) { |
194 scoped_ptr<base::ListValue> args(new base::ListValue()); | 197 scoped_ptr<base::ListValue> args(new base::ListValue()); |
195 scoped_ptr<extensions::Event> event(new extensions::Event( | 198 scoped_ptr<extensions::Event> event(new extensions::Event( |
196 tts_engine_events::kOnPause, args.Pass())); | 199 tts_engine_events::kOnPause, args.Pass())); |
197 Profile* profile = utterance->profile(); | 200 Profile* profile = Profile::FromBrowserContext(utterance->browser_context()); |
198 event->restrict_to_browser_context = profile; | 201 event->restrict_to_browser_context = profile; |
199 EventRouter* event_router = EventRouter::Get(profile); | 202 EventRouter* event_router = EventRouter::Get(profile); |
200 std::string id = utterance->extension_id(); | 203 std::string id = utterance->extension_id(); |
201 event_router->DispatchEventToExtension(id, event.Pass()); | 204 event_router->DispatchEventToExtension(id, event.Pass()); |
202 WarnIfMissingPauseOrResumeListener(profile, event_router, id); | 205 WarnIfMissingPauseOrResumeListener(profile, event_router, id); |
203 } | 206 } |
204 | 207 |
205 void TtsExtensionEngine::Resume(Utterance* utterance) { | 208 void TtsExtensionEngine::Resume(Utterance* utterance) { |
206 scoped_ptr<base::ListValue> args(new base::ListValue()); | 209 scoped_ptr<base::ListValue> args(new base::ListValue()); |
207 scoped_ptr<extensions::Event> event(new extensions::Event( | 210 scoped_ptr<extensions::Event> event(new extensions::Event( |
208 tts_engine_events::kOnResume, args.Pass())); | 211 tts_engine_events::kOnResume, args.Pass())); |
209 Profile* profile = utterance->profile(); | 212 Profile* profile = Profile::FromBrowserContext(utterance->browser_context()); |
210 event->restrict_to_browser_context = profile; | 213 event->restrict_to_browser_context = profile; |
211 EventRouter* event_router = EventRouter::Get(profile); | 214 EventRouter* event_router = EventRouter::Get(profile); |
212 std::string id = utterance->extension_id(); | 215 std::string id = utterance->extension_id(); |
213 event_router->DispatchEventToExtension(id, event.Pass()); | 216 event_router->DispatchEventToExtension(id, event.Pass()); |
214 WarnIfMissingPauseOrResumeListener(profile, event_router, id); | 217 WarnIfMissingPauseOrResumeListener(profile, event_router, id); |
215 } | 218 } |
216 | 219 |
217 bool TtsExtensionEngine::LoadBuiltInTtsExtension(Profile* profile) { | 220 bool TtsExtensionEngine::LoadBuiltInTtsExtension( |
| 221 content::BrowserContext* browser_context) { |
218 #if defined(OS_CHROMEOS) | 222 #if defined(OS_CHROMEOS) |
| 223 Profile* profile = Profile::FromBrowserContext(browser_context); |
219 // Check to see if the engine was previously loaded. | 224 // Check to see if the engine was previously loaded. |
220 if (TtsEngineExtensionObserver::GetInstance(profile)->SawExtensionLoad( | 225 if (TtsEngineExtensionObserver::GetInstance(profile)->SawExtensionLoad( |
221 extension_misc::kSpeechSynthesisExtensionId, true)) { | 226 extension_misc::kSpeechSynthesisExtensionId, true)) { |
222 return false; | 227 return false; |
223 } | 228 } |
224 | 229 |
225 // Load the component extension into this profile. | 230 // Load the component extension into this profile. |
226 ExtensionService* extension_service = | 231 ExtensionService* extension_service = |
227 extensions::ExtensionSystem::Get(profile)->extension_service(); | 232 extensions::ExtensionSystem::Get(profile)->extension_service(); |
228 DCHECK(extension_service); | 233 DCHECK(extension_service); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 utterance_id, TTS_EVENT_PAUSE, char_index, std::string()); | 303 utterance_id, TTS_EVENT_PAUSE, char_index, std::string()); |
299 } else if (event_type == constants::kEventTypeResume) { | 304 } else if (event_type == constants::kEventTypeResume) { |
300 controller->OnTtsEvent( | 305 controller->OnTtsEvent( |
301 utterance_id, TTS_EVENT_RESUME, char_index, std::string()); | 306 utterance_id, TTS_EVENT_RESUME, char_index, std::string()); |
302 } else { | 307 } else { |
303 EXTENSION_FUNCTION_VALIDATE(false); | 308 EXTENSION_FUNCTION_VALIDATE(false); |
304 } | 309 } |
305 | 310 |
306 return true; | 311 return true; |
307 } | 312 } |
OLD | NEW |