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

Unified Diff: chrome/browser/speech/tts_mac.mm

Issue 15108002: Add Pause and Resume to Web TTS & Extension TTS APIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix typo Created 7 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/speech/tts_mac.mm
diff --git a/chrome/browser/speech/tts_mac.mm b/chrome/browser/speech/tts_mac.mm
index 689effc7be91c600b7f9dda4c71ba9538c704b8e..b86cf8a24c2948f91e1d80a722ada239f88c9399 100644
--- a/chrome/browser/speech/tts_mac.mm
+++ b/chrome/browser/speech/tts_mac.mm
@@ -63,6 +63,10 @@ class TtsPlatformImplMac : public TtsPlatformImpl {
virtual bool StopSpeaking() OVERRIDE;
+ virtual void Pause() OVERRIDE;
+
+ virtual void Resume() OVERRIDE;
+
virtual bool IsSpeaking() OVERRIDE;
virtual void GetVoices(std::vector<VoiceData>* out_voices) OVERRIDE;
@@ -86,6 +90,7 @@ class TtsPlatformImplMac : public TtsPlatformImpl {
int utterance_id_;
std::string utterance_;
bool sent_start_event_;
+ int last_char_index_;
friend struct DefaultSingletonTraits<TtsPlatformImplMac>;
@@ -168,6 +173,22 @@ bool TtsPlatformImplMac::StopSpeaking() {
return true;
}
+void TtsPlatformImplMac::Pause() {
+ if (speech_synthesizer_.get() && utterance_id_) {
+ [speech_synthesizer_ pauseSpeakingAtBoundary:NSSpeechImmediateBoundary];
+ TtsController::GetInstance()->OnTtsEvent(
+ utterance_id_, TTS_EVENT_PAUSE, last_char_index_, "");
+ }
+}
+
+void TtsPlatformImplMac::Resume() {
+ if (speech_synthesizer_.get() && utterance_id_) {
+ [speech_synthesizer_ continueSpeaking];
+ TtsController::GetInstance()->OnTtsEvent(
+ utterance_id_, TTS_EVENT_RESUME, last_char_index_, "");
+ }
+}
+
bool TtsPlatformImplMac::IsSpeaking() {
return [NSSpeechSynthesizer isAnyApplicationSpeaking];
}
@@ -223,6 +244,8 @@ void TtsPlatformImplMac::GetVoices(std::vector<VoiceData>* outVoices) {
data.events.insert(TTS_EVENT_ERROR);
data.events.insert(TTS_EVENT_CANCELLED);
data.events.insert(TTS_EVENT_INTERRUPTED);
+ data.events.insert(TTS_EVENT_PAUSE);
+ data.events.insert(TTS_EVENT_RESUME);
}
}
@@ -247,6 +270,7 @@ void TtsPlatformImplMac::OnSpeechEvent(
}
controller->OnTtsEvent(
utterance_id_, event_type, char_index, error_message);
+ last_char_index_ = char_index;
}
TtsPlatformImplMac::TtsPlatformImplMac() {

Powered by Google App Engine
This is Rietveld 408576698