Index: chrome/browser/speech/extension_api/tts_extension_api.cc |
diff --git a/chrome/browser/speech/extension_api/tts_extension_api.cc b/chrome/browser/speech/extension_api/tts_extension_api.cc |
index 823b849d36723c895d1f3e3d87e2ec45a15345c8..f2837efe59ca93357fdaaacdf515f481e8a10305 100644 |
--- a/chrome/browser/speech/extension_api/tts_extension_api.cc |
+++ b/chrome/browser/speech/extension_api/tts_extension_api.cc |
@@ -86,12 +86,24 @@ class TtsExtensionEventHandler |
: public UtteranceEventDelegate, |
public base::SupportsWeakPtr<TtsExtensionEventHandler> { |
public: |
+ explicit TtsExtensionEventHandler(const std::string& src_extension_id); |
+ |
virtual void OnTtsEvent(Utterance* utterance, |
TtsEventType event_type, |
int char_index, |
const std::string& error_message) override; |
+ |
+ private: |
+ // The extension ID of the extension that called speak() and should |
+ // receive events. |
+ std::string src_extension_id_; |
}; |
+TtsExtensionEventHandler::TtsExtensionEventHandler( |
+ const std::string& src_extension_id) |
+ : src_extension_id_(src_extension_id) { |
+} |
+ |
void TtsExtensionEventHandler::OnTtsEvent(Utterance* utterance, |
TtsEventType event_type, |
int char_index, |
@@ -130,7 +142,7 @@ void TtsExtensionEventHandler::OnTtsEvent(Utterance* utterance, |
event->restrict_to_browser_context = utterance->browser_context(); |
event->event_url = utterance->src_url(); |
extensions::EventRouter::Get(utterance->browser_context()) |
- ->DispatchEventToExtension(utterance->src_extension_id(), event.Pass()); |
+ ->DispatchEventToExtension(src_extension_id_, event.Pass()); |
if (utterance->finished()) |
delete this; |
@@ -267,7 +279,6 @@ bool TtsSpeakFunction::RunAsync() { |
Utterance* utterance = new Utterance(GetProfile()); |
utterance->set_text(text); |
utterance->set_voice_name(voice_name); |
- utterance->set_src_extension_id(extension_id()); |
utterance->set_src_id(src_id); |
utterance->set_src_url(source_url()); |
utterance->set_lang(lang); |
@@ -279,7 +290,7 @@ bool TtsSpeakFunction::RunAsync() { |
utterance->set_extension_id(voice_extension_id); |
utterance->set_options(options.get()); |
utterance->set_event_delegate( |
- (new TtsExtensionEventHandler())->AsWeakPtr()); |
+ (new TtsExtensionEventHandler(extension_id()))->AsWeakPtr()); |
TtsController* controller = TtsController::GetInstance(); |
controller->SpeakOrEnqueue(utterance); |