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

Side by Side Diff: chrome/browser/speech/tts_linux.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: Rebase Created 7 years, 6 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
« no previous file with comments | « chrome/browser/speech/tts_controller_unittest.cc ('k') | chrome/browser/speech/tts_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <math.h> 5 #include <math.h>
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/memory/singleton.h" 10 #include "base/memory/singleton.h"
(...skipping 20 matching lines...) Expand all
31 class TtsPlatformImplLinux : public TtsPlatformImpl { 31 class TtsPlatformImplLinux : public TtsPlatformImpl {
32 public: 32 public:
33 virtual bool PlatformImplAvailable() OVERRIDE; 33 virtual bool PlatformImplAvailable() OVERRIDE;
34 virtual bool Speak( 34 virtual bool Speak(
35 int utterance_id, 35 int utterance_id,
36 const std::string& utterance, 36 const std::string& utterance,
37 const std::string& lang, 37 const std::string& lang,
38 const VoiceData& voice, 38 const VoiceData& voice,
39 const UtteranceContinuousParameters& params) OVERRIDE; 39 const UtteranceContinuousParameters& params) OVERRIDE;
40 virtual bool StopSpeaking() OVERRIDE; 40 virtual bool StopSpeaking() OVERRIDE;
41 virtual void Pause() OVERRIDE;
42 virtual void Resume() OVERRIDE;
41 virtual bool IsSpeaking() OVERRIDE; 43 virtual bool IsSpeaking() OVERRIDE;
42 virtual void GetVoices(std::vector<VoiceData>* out_voices) OVERRIDE; 44 virtual void GetVoices(std::vector<VoiceData>* out_voices) OVERRIDE;
43 45
44 void OnSpeechEvent(SPDNotificationType type); 46 void OnSpeechEvent(SPDNotificationType type);
45 47
46 // Get the single instance of this class. 48 // Get the single instance of this class.
47 static TtsPlatformImplLinux* GetInstance(); 49 static TtsPlatformImplLinux* GetInstance();
48 50
49 private: 51 private:
50 TtsPlatformImplLinux(); 52 TtsPlatformImplLinux();
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 bool TtsPlatformImplLinux::StopSpeaking() { 193 bool TtsPlatformImplLinux::StopSpeaking() {
192 if (!PlatformImplAvailable()) 194 if (!PlatformImplAvailable())
193 return false; 195 return false;
194 if (libspeechd_loader_.spd_stop(conn_) == -1) { 196 if (libspeechd_loader_.spd_stop(conn_) == -1) {
195 Reset(); 197 Reset();
196 return false; 198 return false;
197 } 199 }
198 return true; 200 return true;
199 } 201 }
200 202
203 void TtsPlatformImplLinux::Pause() {
204 if (!PlatformImplAvailable())
205 return;
206 libspeechd_loader_.spd_pause(conn_);
207 }
208
209 void TtsPlatformImplLinux::Resume() {
210 if (!PlatformImplAvailable())
211 return;
212 libspeechd_loader_.spd_resume(conn_);
213 }
214
201 bool TtsPlatformImplLinux::IsSpeaking() { 215 bool TtsPlatformImplLinux::IsSpeaking() {
202 return current_notification_ == SPD_EVENT_BEGIN; 216 return current_notification_ == SPD_EVENT_BEGIN;
203 } 217 }
204 218
205 void TtsPlatformImplLinux::GetVoices( 219 void TtsPlatformImplLinux::GetVoices(
206 std::vector<VoiceData>* out_voices) { 220 std::vector<VoiceData>* out_voices) {
207 if (!all_native_voices_.get()) { 221 if (!all_native_voices_.get()) {
208 all_native_voices_.reset(new std::map<std::string, SPDChromeVoice>()); 222 all_native_voices_.reset(new std::map<std::string, SPDChromeVoice>());
209 char** modules = libspeechd_loader_.spd_list_modules(conn_); 223 char** modules = libspeechd_loader_.spd_list_modules(conn_);
210 if (!modules) 224 if (!modules)
(...skipping 29 matching lines...) Expand all
240 it != all_native_voices_->end(); 254 it != all_native_voices_->end();
241 it++) { 255 it++) {
242 out_voices->push_back(VoiceData()); 256 out_voices->push_back(VoiceData());
243 VoiceData& voice = out_voices->back(); 257 VoiceData& voice = out_voices->back();
244 voice.native = true; 258 voice.native = true;
245 voice.name = it->first; 259 voice.name = it->first;
246 voice.events.insert(TTS_EVENT_START); 260 voice.events.insert(TTS_EVENT_START);
247 voice.events.insert(TTS_EVENT_END); 261 voice.events.insert(TTS_EVENT_END);
248 voice.events.insert(TTS_EVENT_CANCELLED); 262 voice.events.insert(TTS_EVENT_CANCELLED);
249 voice.events.insert(TTS_EVENT_MARKER); 263 voice.events.insert(TTS_EVENT_MARKER);
264 voice.events.insert(TTS_EVENT_PAUSE);
265 voice.events.insert(TTS_EVENT_RESUME);
250 } 266 }
251 } 267 }
252 268
253 void TtsPlatformImplLinux::OnSpeechEvent(SPDNotificationType type) { 269 void TtsPlatformImplLinux::OnSpeechEvent(SPDNotificationType type) {
254 TtsController* controller = TtsController::GetInstance(); 270 TtsController* controller = TtsController::GetInstance();
255 switch (type) { 271 switch (type) {
256 case SPD_EVENT_BEGIN: 272 case SPD_EVENT_BEGIN:
257 case SPD_EVENT_RESUME:
258 controller->OnTtsEvent(utterance_id_, TTS_EVENT_START, 0, std::string()); 273 controller->OnTtsEvent(utterance_id_, TTS_EVENT_START, 0, std::string());
259 break; 274 break;
275 case SPD_EVENT_RESUME:
276 controller->OnTtsEvent(utterance_id_, TTS_EVENT_RESUME, 0, std::string());
277 break;
260 case SPD_EVENT_END: 278 case SPD_EVENT_END:
279 controller->OnTtsEvent(
280 utterance_id_, TTS_EVENT_END, utterance_.size(), std::string());
281 break;
261 case SPD_EVENT_PAUSE: 282 case SPD_EVENT_PAUSE:
262 controller->OnTtsEvent( 283 controller->OnTtsEvent(
263 utterance_id_, TTS_EVENT_END, utterance_.size(), std::string()); 284 utterance_id_, TTS_EVENT_PAUSE, utterance_.size(), std::string());
264 break; 285 break;
265 case SPD_EVENT_CANCEL: 286 case SPD_EVENT_CANCEL:
266 controller->OnTtsEvent( 287 controller->OnTtsEvent(
267 utterance_id_, TTS_EVENT_CANCELLED, 0, std::string()); 288 utterance_id_, TTS_EVENT_CANCELLED, 0, std::string());
268 break; 289 break;
269 case SPD_EVENT_INDEX_MARK: 290 case SPD_EVENT_INDEX_MARK:
270 controller->OnTtsEvent(utterance_id_, TTS_EVENT_MARKER, 0, std::string()); 291 controller->OnTtsEvent(utterance_id_, TTS_EVENT_MARKER, 0, std::string());
271 break; 292 break;
272 } 293 }
273 } 294 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 // static 331 // static
311 TtsPlatformImplLinux* TtsPlatformImplLinux::GetInstance() { 332 TtsPlatformImplLinux* TtsPlatformImplLinux::GetInstance() {
312 return Singleton<TtsPlatformImplLinux, 333 return Singleton<TtsPlatformImplLinux,
313 LeakySingletonTraits<TtsPlatformImplLinux> >::get(); 334 LeakySingletonTraits<TtsPlatformImplLinux> >::get();
314 } 335 }
315 336
316 // static 337 // static
317 TtsPlatformImpl* TtsPlatformImpl::GetInstance() { 338 TtsPlatformImpl* TtsPlatformImpl::GetInstance() {
318 return TtsPlatformImplLinux::GetInstance(); 339 return TtsPlatformImplLinux::GetInstance();
319 } 340 }
OLDNEW
« no previous file with comments | « chrome/browser/speech/tts_controller_unittest.cc ('k') | chrome/browser/speech/tts_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698