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_extension_api.h" | 5 #include "chrome/browser/speech/extension_api/tts_extension_api.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/memory/weak_ptr.h" | |
11 #include "base/values.h" | 10 #include "base/values.h" |
12 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
13 #include "chrome/browser/speech/extension_api/tts_engine_extension_api.h" | 12 #include "chrome/browser/speech/extension_api/tts_engine_extension_api.h" |
14 #include "chrome/browser/speech/extension_api/tts_engine_extension_observer.h" | 13 #include "chrome/browser/speech/extension_api/tts_engine_extension_observer.h" |
15 #include "chrome/browser/speech/extension_api/tts_extension_api_constants.h" | 14 #include "chrome/browser/speech/extension_api/tts_extension_api_constants.h" |
16 #include "chrome/browser/speech/tts_controller.h" | 15 #include "chrome/browser/speech/tts_controller.h" |
17 #include "extensions/browser/event_router.h" | 16 #include "extensions/browser/event_router.h" |
18 #include "extensions/browser/extension_function_registry.h" | 17 #include "extensions/browser/extension_function_registry.h" |
19 #include "ui/base/l10n/l10n_util.h" | 18 #include "ui/base/l10n/l10n_util.h" |
20 | 19 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 | 75 |
77 NOTREACHED(); | 76 NOTREACHED(); |
78 return TTS_EVENT_ERROR; | 77 return TTS_EVENT_ERROR; |
79 } | 78 } |
80 | 79 |
81 namespace extensions { | 80 namespace extensions { |
82 | 81 |
83 // One of these is constructed for each utterance, and deleted | 82 // One of these is constructed for each utterance, and deleted |
84 // when the utterance gets any final event. | 83 // when the utterance gets any final event. |
85 class TtsExtensionEventHandler | 84 class TtsExtensionEventHandler |
86 : public UtteranceEventDelegate, | 85 : public UtteranceEventDelegate { |
87 public base::SupportsWeakPtr<TtsExtensionEventHandler> { | |
88 public: | 86 public: |
89 explicit TtsExtensionEventHandler(const std::string& src_extension_id); | 87 explicit TtsExtensionEventHandler(const std::string& src_extension_id); |
90 | 88 |
91 void OnTtsEvent(Utterance* utterance, | 89 void OnTtsEvent(Utterance* utterance, |
92 TtsEventType event_type, | 90 TtsEventType event_type, |
93 int char_index, | 91 int char_index, |
94 const std::string& error_message) override; | 92 const std::string& error_message) override; |
95 | 93 |
96 private: | 94 private: |
97 // The extension ID of the extension that called speak() and should | 95 // The extension ID of the extension that called speak() and should |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 utterance->set_src_id(src_id); | 280 utterance->set_src_id(src_id); |
283 utterance->set_src_url(source_url()); | 281 utterance->set_src_url(source_url()); |
284 utterance->set_lang(lang); | 282 utterance->set_lang(lang); |
285 utterance->set_gender(gender); | 283 utterance->set_gender(gender); |
286 utterance->set_continuous_parameters(continuous_params); | 284 utterance->set_continuous_parameters(continuous_params); |
287 utterance->set_can_enqueue(can_enqueue); | 285 utterance->set_can_enqueue(can_enqueue); |
288 utterance->set_required_event_types(required_event_types); | 286 utterance->set_required_event_types(required_event_types); |
289 utterance->set_desired_event_types(desired_event_types); | 287 utterance->set_desired_event_types(desired_event_types); |
290 utterance->set_extension_id(voice_extension_id); | 288 utterance->set_extension_id(voice_extension_id); |
291 utterance->set_options(options.get()); | 289 utterance->set_options(options.get()); |
292 utterance->set_event_delegate( | 290 utterance->set_event_delegate(new TtsExtensionEventHandler(extension_id())); |
293 (new TtsExtensionEventHandler(extension_id()))->AsWeakPtr()); | |
294 | 291 |
295 TtsController* controller = TtsController::GetInstance(); | 292 TtsController* controller = TtsController::GetInstance(); |
296 controller->SpeakOrEnqueue(utterance); | 293 controller->SpeakOrEnqueue(utterance); |
297 return true; | 294 return true; |
298 } | 295 } |
299 | 296 |
300 bool TtsStopSpeakingFunction::RunSync() { | 297 bool TtsStopSpeakingFunction::RunSync() { |
301 TtsController::GetInstance()->Stop(); | 298 TtsController::GetInstance()->Stop(); |
302 return true; | 299 return true; |
303 } | 300 } |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 } | 368 } |
372 | 369 |
373 static base::LazyInstance<BrowserContextKeyedAPIFactory<TtsAPI> > g_factory = | 370 static base::LazyInstance<BrowserContextKeyedAPIFactory<TtsAPI> > g_factory = |
374 LAZY_INSTANCE_INITIALIZER; | 371 LAZY_INSTANCE_INITIALIZER; |
375 | 372 |
376 BrowserContextKeyedAPIFactory<TtsAPI>* TtsAPI::GetFactoryInstance() { | 373 BrowserContextKeyedAPIFactory<TtsAPI>* TtsAPI::GetFactoryInstance() { |
377 return g_factory.Pointer(); | 374 return g_factory.Pointer(); |
378 } | 375 } |
379 | 376 |
380 } // namespace extensions | 377 } // namespace extensions |
OLD | NEW |