| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/memory/singleton.h" | 6 #include "base/memory/singleton.h" |
| 7 #include "base/memory/weak_ptr.h" | 7 #include "base/memory/weak_ptr.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
| 10 #include "chrome/browser/chromeos/dbus/dbus_thread_manager.h" | 10 #include "chrome/browser/chromeos/dbus/dbus_thread_manager.h" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 if (params.volume >= 0.0) { | 98 if (params.volume >= 0.0) { |
| 99 // The Chrome OS TTS service allows a range of 0 to 5 for speech volume, | 99 // The Chrome OS TTS service allows a range of 0 to 5 for speech volume, |
| 100 // but 5 clips, so map to a range of 0...4. | 100 // but 5 clips, so map to a range of 0...4. |
| 101 AppendSpeakOption( | 101 AppendSpeakOption( |
| 102 chromeos::SpeechSynthesizerClient::kSpeechPropertyVolume, | 102 chromeos::SpeechSynthesizerClient::kSpeechPropertyVolume, |
| 103 DoubleToString(params.volume * 4), | 103 DoubleToString(params.volume * 4), |
| 104 &options); | 104 &options); |
| 105 } | 105 } |
| 106 | 106 |
| 107 chromeos::SpeechSynthesizerClient* speech_synthesizer_client = | 107 chromeos::SpeechSynthesizerClient* speech_synthesizer_client = |
| 108 chromeos::DBusThreadManager::Get()->speech_synthesizer_client(); | 108 chromeos::DBusThreadManager::Get()->GetSpeechSynthesizerClient(); |
| 109 | 109 |
| 110 if (!options.empty()) | 110 if (!options.empty()) |
| 111 speech_synthesizer_client->SetSpeakProperties(options); | 111 speech_synthesizer_client->SetSpeakProperties(options); |
| 112 | 112 |
| 113 speech_synthesizer_client->Speak(utterance); | 113 speech_synthesizer_client->Speak(utterance); |
| 114 ExtensionTtsController* controller = ExtensionTtsController::GetInstance(); | 114 ExtensionTtsController* controller = ExtensionTtsController::GetInstance(); |
| 115 controller->OnTtsEvent(utterance_id_, TTS_EVENT_START, 0, std::string()); | 115 controller->OnTtsEvent(utterance_id_, TTS_EVENT_START, 0, std::string()); |
| 116 PollUntilSpeechFinishes(utterance_id_); | 116 PollUntilSpeechFinishes(utterance_id_); |
| 117 | 117 |
| 118 return true; | 118 return true; |
| 119 } | 119 } |
| 120 | 120 |
| 121 bool ExtensionTtsPlatformImplChromeOs::StopSpeaking() { | 121 bool ExtensionTtsPlatformImplChromeOs::StopSpeaking() { |
| 122 chromeos::DBusThreadManager::Get()->speech_synthesizer_client()-> | 122 chromeos::DBusThreadManager::Get()->GetSpeechSynthesizerClient()-> |
| 123 StopSpeaking(); | 123 StopSpeaking(); |
| 124 return true; | 124 return true; |
| 125 } | 125 } |
| 126 | 126 |
| 127 bool ExtensionTtsPlatformImplChromeOs::SendsEvent(TtsEventType event_type) { | 127 bool ExtensionTtsPlatformImplChromeOs::SendsEvent(TtsEventType event_type) { |
| 128 return (event_type == TTS_EVENT_START || | 128 return (event_type == TTS_EVENT_START || |
| 129 event_type == TTS_EVENT_END || | 129 event_type == TTS_EVENT_END || |
| 130 event_type == TTS_EVENT_ERROR); | 130 event_type == TTS_EVENT_ERROR); |
| 131 } | 131 } |
| 132 | 132 |
| 133 void ExtensionTtsPlatformImplChromeOs::PollUntilSpeechFinishes( | 133 void ExtensionTtsPlatformImplChromeOs::PollUntilSpeechFinishes( |
| 134 int utterance_id) { | 134 int utterance_id) { |
| 135 if (utterance_id != utterance_id_) { | 135 if (utterance_id != utterance_id_) { |
| 136 // This utterance must have been interrupted or cancelled. | 136 // This utterance must have been interrupted or cancelled. |
| 137 return; | 137 return; |
| 138 } | 138 } |
| 139 chromeos::SpeechSynthesizerClient* speech_synthesizer_client = | 139 chromeos::SpeechSynthesizerClient* speech_synthesizer_client = |
| 140 chromeos::DBusThreadManager::Get()->speech_synthesizer_client(); | 140 chromeos::DBusThreadManager::Get()->GetSpeechSynthesizerClient(); |
| 141 speech_synthesizer_client->IsSpeaking(base::Bind( | 141 speech_synthesizer_client->IsSpeaking(base::Bind( |
| 142 &ExtensionTtsPlatformImplChromeOs::ContinuePollingIfSpeechIsNotFinished, | 142 &ExtensionTtsPlatformImplChromeOs::ContinuePollingIfSpeechIsNotFinished, |
| 143 weak_ptr_factory_.GetWeakPtr(), utterance_id)); | 143 weak_ptr_factory_.GetWeakPtr(), utterance_id)); |
| 144 } | 144 } |
| 145 | 145 |
| 146 void ExtensionTtsPlatformImplChromeOs::ContinuePollingIfSpeechIsNotFinished( | 146 void ExtensionTtsPlatformImplChromeOs::ContinuePollingIfSpeechIsNotFinished( |
| 147 int utterance_id, bool is_speaking) { | 147 int utterance_id, bool is_speaking) { |
| 148 if (utterance_id != utterance_id_) { | 148 if (utterance_id != utterance_id_) { |
| 149 // This utterance must have been interrupted or cancelled. | 149 // This utterance must have been interrupted or cancelled. |
| 150 return; | 150 return; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 173 chromeos::SpeechSynthesizerClient::kSpeechPropertyEquals + | 173 chromeos::SpeechSynthesizerClient::kSpeechPropertyEquals + |
| 174 value + | 174 value + |
| 175 chromeos::SpeechSynthesizerClient::kSpeechPropertyDelimiter; | 175 chromeos::SpeechSynthesizerClient::kSpeechPropertyDelimiter; |
| 176 } | 176 } |
| 177 | 177 |
| 178 // static | 178 // static |
| 179 ExtensionTtsPlatformImplChromeOs* | 179 ExtensionTtsPlatformImplChromeOs* |
| 180 ExtensionTtsPlatformImplChromeOs::GetInstance() { | 180 ExtensionTtsPlatformImplChromeOs::GetInstance() { |
| 181 return Singleton<ExtensionTtsPlatformImplChromeOs>::get(); | 181 return Singleton<ExtensionTtsPlatformImplChromeOs>::get(); |
| 182 } | 182 } |
| OLD | NEW |