Commit 55997d2c authored by Etienne Bergeron's avatar Etienne Bergeron Committed by Commit Bot

Add unittests for TTS controller pause/resume

This CL is adding unittests for the Pause(...) and Resume(...) API.
Fix potential bugs while calling pause/resume multiple times. The
underlying platform implementations may not accept double pause or
double resume.

The related code pause/resume was not covered by previous unittests.

Bug: 1133813
Change-Id: I396bed4e2356a3b4bcb8363f0f82d005436022bf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2446190
Commit-Queue: Etienne Bergeron <etienneb@chromium.org>
Reviewed-by: default avatarFrançois Doray <fdoray@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#813430}
parent 8a7ab50c
...@@ -184,6 +184,8 @@ bool TtsControllerImpl::StopCurrentUtteranceIfMatches(const GURL& source_url) { ...@@ -184,6 +184,8 @@ bool TtsControllerImpl::StopCurrentUtteranceIfMatches(const GURL& source_url) {
void TtsControllerImpl::Pause() { void TtsControllerImpl::Pause() {
base::RecordAction(base::UserMetricsAction("TextToSpeech.Pause")); base::RecordAction(base::UserMetricsAction("TextToSpeech.Pause"));
if (paused_)
return;
paused_ = true; paused_ = true;
if (current_utterance_ && !current_utterance_->GetEngineId().empty()) { if (current_utterance_ && !current_utterance_->GetEngineId().empty()) {
...@@ -197,6 +199,8 @@ void TtsControllerImpl::Pause() { ...@@ -197,6 +199,8 @@ void TtsControllerImpl::Pause() {
void TtsControllerImpl::Resume() { void TtsControllerImpl::Resume() {
base::RecordAction(base::UserMetricsAction("TextToSpeech.Resume")); base::RecordAction(base::UserMetricsAction("TextToSpeech.Resume"));
if (!paused_)
return;
paused_ = false; paused_ = false;
if (current_utterance_ && !current_utterance_->GetEngineId().empty()) { if (current_utterance_ && !current_utterance_->GetEngineId().empty()) {
...@@ -328,8 +332,7 @@ void TtsControllerImpl::RemoveUtteranceEventDelegate( ...@@ -328,8 +332,7 @@ void TtsControllerImpl::RemoveUtteranceEventDelegate(
} }
FinishCurrentUtterance(); FinishCurrentUtterance();
if (!paused_) SpeakNextUtterance();
SpeakNextUtterance();
} }
} }
......
...@@ -82,6 +82,9 @@ class CONTENT_EXPORT TtsControllerImpl : public TtsController, ...@@ -82,6 +82,9 @@ class CONTENT_EXPORT TtsControllerImpl : public TtsController,
TtsControllerImpl(); TtsControllerImpl();
~TtsControllerImpl() override; ~TtsControllerImpl() override;
// Exposed for unittest.
bool IsPausedForTesting() const { return paused_; }
private: private:
friend class TestTtsControllerImpl; friend class TestTtsControllerImpl;
friend struct base::DefaultSingletonTraits<TtsControllerImpl>; friend struct base::DefaultSingletonTraits<TtsControllerImpl>;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment