summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/speech/speech_input_extension_manager.cc10
-rw-r--r--content/browser/speech/google_streaming_remote_engine_unittest.cc6
-rw-r--r--content/browser/speech/speech_recognition_manager_impl.cc17
-rw-r--r--content/browser/speech/speech_recognition_manager_impl.h4
-rw-r--r--content/browser/speech/speech_recognizer.cc (renamed from content/browser/speech/speech_recognizer_impl.cc)134
-rw-r--r--content/browser/speech/speech_recognizer.h (renamed from content/browser/speech/speech_recognizer_impl.h)23
-rw-r--r--content/browser/speech/speech_recognizer_unittest.cc (renamed from content/browser/speech/speech_recognizer_impl_unittest.cc)53
-rw-r--r--content/content_browser.gypi4
-rw-r--r--content/content_tests.gypi2
-rw-r--r--content/public/common/content_switches.cc6
10 files changed, 124 insertions, 135 deletions
diff --git a/chrome/browser/speech/speech_input_extension_manager.cc b/chrome/browser/speech/speech_input_extension_manager.cc
index 0e70502..93c4a80 100644
--- a/chrome/browser/speech/speech_input_extension_manager.cc
+++ b/chrome/browser/speech/speech_input_extension_manager.cc
@@ -207,7 +207,7 @@ void SpeechInputExtensionManager::ShutdownOnUIThread() {
void SpeechInputExtensionManager::AbortAllSessionsOnIOThread() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- // TODO(primiano) The following check should not be really needed if the
+ // TODO(primiano): The following check should not be really needed if the
// SpeechRecognitionManager and this class are destroyed in the correct order
// (this class first), as it is in current chrome implementation.
// However, it seems the some ChromiumOS tests violate the destruction order
@@ -578,12 +578,10 @@ void SpeechInputExtensionManager::StartOnIOThread(
if (state_ == kShutdown)
return;
- // TODO(primiano) These two checks below could be avoided, since they are
+ // TODO(primiano): These two checks below could be avoided, since they are
// already handled in the speech recognition classes. However, since the
// speech input extensions tests are bypassing the manager, we need them to
- // pass the tests. A complete unit test which puts all the pieces together,
- // mocking just the endpoints (the audio input controller and the URL fetcher)
- // should be written.
+ // pass the tests.
if (!GetSpeechInputExtensionInterface()->HasAudioInputDevices()) {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
@@ -662,7 +660,7 @@ void SpeechInputExtensionManager::StartRecording(
context.context_name = extension_name;
content::SpeechRecognitionSessionConfig config;
- // config.is_one_shot = true; // TODO(primiano) Uncomment when CL2.0 lands.
+ config.is_one_shot = true;
config.language = language;
config.grammars.push_back(content::SpeechRecognitionGrammar(grammar));
config.initial_context = context;
diff --git a/content/browser/speech/google_streaming_remote_engine_unittest.cc b/content/browser/speech/google_streaming_remote_engine_unittest.cc
index 9de06b6..6289fa0 100644
--- a/content/browser/speech/google_streaming_remote_engine_unittest.cc
+++ b/content/browser/speech/google_streaming_remote_engine_unittest.cc
@@ -309,13 +309,11 @@ void GoogleStreamingRemoteEngineTest::EndMockRecognition() {
engine_under_test_->EndRecognition();
ASSERT_FALSE(engine_under_test_->IsRecognitionPending());
- // TODO(primiano): In order to be very pedantic we should check that both
- // the upstream and downstream URL fetchers have been disposed at this time.
+ // TODO(primiano): In order to be very pedantic we should check that both the
+ // upstream and downstream URL fetchers have been disposed at this time.
// Unfortunately it seems that there is no direct way to detect (in tests)
// if a url_fetcher has been freed or not, since they are not automatically
// de-registered from the TestURLFetcherFactory on destruction.
- // ASSERT_FALSE(GetUpstreamFetcher());
- // ASSERT_FALSE(GetDownstreamFetcher());
}
void GoogleStreamingRemoteEngineTest::InjectDummyAudioChunk() {
diff --git a/content/browser/speech/speech_recognition_manager_impl.cc b/content/browser/speech/speech_recognition_manager_impl.cc
index 65351c1..453f7af 100644
--- a/content/browser/speech/speech_recognition_manager_impl.cc
+++ b/content/browser/speech/speech_recognition_manager_impl.cc
@@ -9,7 +9,7 @@
#include "content/browser/speech/google_one_shot_remote_engine.h"
#include "content/browser/speech/google_streaming_remote_engine.h"
#include "content/browser/speech/speech_recognition_engine.h"
-#include "content/browser/speech/speech_recognizer_impl.h"
+#include "content/browser/speech/speech_recognizer.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/resource_context.h"
@@ -94,10 +94,9 @@ int SpeechRecognitionManagerImpl::CreateSession(
SpeechRecognitionEngineConfig remote_engine_config;
remote_engine_config.language = config.language;
remote_engine_config.grammars = config.grammars;
- remote_engine_config.audio_sample_rate =
- SpeechRecognizerImpl::kAudioSampleRate;
+ remote_engine_config.audio_sample_rate = SpeechRecognizer::kAudioSampleRate;
remote_engine_config.audio_num_bits_per_sample =
- SpeechRecognizerImpl::kNumBitsPerAudioSample;
+ SpeechRecognizer::kNumBitsPerAudioSample;
remote_engine_config.filter_profanities = config.filter_profanities;
remote_engine_config.hardware_info = hardware_info;
remote_engine_config.origin_url = can_report_metrics ? config.origin_url : "";
@@ -113,10 +112,10 @@ int SpeechRecognitionManagerImpl::CreateSession(
google_remote_engine->SetConfig(remote_engine_config);
- session.recognizer = new SpeechRecognizerImpl(this,
- session_id,
- config.is_one_shot,
- google_remote_engine);
+ session.recognizer = new SpeechRecognizer(this,
+ session_id,
+ config.is_one_shot,
+ google_remote_engine);
return session_id;
}
@@ -365,7 +364,7 @@ void SpeechRecognitionManagerImpl::DispatchEvent(int session_id,
// This FSM handles the evolution of each session, from the viewpoint of the
// interaction with the user (that may be either the browser end-user which
// interacts with UI bubbles, or JS developer intracting with JS methods).
-// All the events received by the SpeechRecognizerImpl instances (one for each
+// All the events received by the SpeechRecognizer instances (one for each
// session) are always routed to the SpeechRecognitionEventListener(s)
// regardless the choices taken in this FSM.
void SpeechRecognitionManagerImpl::ExecuteTransitionAndGetNextState(
diff --git a/content/browser/speech/speech_recognition_manager_impl.h b/content/browser/speech/speech_recognition_manager_impl.h
index 37501a5..2c3d015 100644
--- a/content/browser/speech/speech_recognition_manager_impl.h
+++ b/content/browser/speech/speech_recognition_manager_impl.h
@@ -26,7 +26,7 @@ class SpeechRecognitionManagerDelegate;
namespace speech {
-class SpeechRecognizerImpl;
+class SpeechRecognizer;
// This is the manager for speech recognition. It is a single instance in
// the browser process and can serve several requests. Each recognition request
@@ -124,7 +124,7 @@ class CONTENT_EXPORT SpeechRecognitionManagerImpl :
bool listener_is_active;
content::SpeechRecognitionSessionConfig config;
content::SpeechRecognitionSessionContext context;
- scoped_refptr<SpeechRecognizerImpl> recognizer;
+ scoped_refptr<SpeechRecognizer> recognizer;
};
// Callback issued by the SpeechRecognitionManagerDelegate for reporting
diff --git a/content/browser/speech/speech_recognizer_impl.cc b/content/browser/speech/speech_recognizer.cc
index 1141d9e..69f22ab 100644
--- a/content/browser/speech/speech_recognizer_impl.cc
+++ b/content/browser/speech/speech_recognizer.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/speech/speech_recognizer_impl.h"
+#include "content/browser/speech/speech_recognizer.h"
#include "base/basictypes.h"
#include "base/bind.h"
@@ -68,16 +68,16 @@ void KeepAudioControllerRefcountedForDtor(scoped_refptr<AudioInputController>) {
namespace speech {
-const int SpeechRecognizerImpl::kAudioSampleRate = 16000;
-const ChannelLayout SpeechRecognizerImpl::kChannelLayout = CHANNEL_LAYOUT_MONO;
-const int SpeechRecognizerImpl::kNumBitsPerAudioSample = 16;
-const int SpeechRecognizerImpl::kNoSpeechTimeoutMs = 8000;
-const int SpeechRecognizerImpl::kEndpointerEstimationTimeMs = 300;
+const int SpeechRecognizer::kAudioSampleRate = 16000;
+const ChannelLayout SpeechRecognizer::kChannelLayout = CHANNEL_LAYOUT_MONO;
+const int SpeechRecognizer::kNumBitsPerAudioSample = 16;
+const int SpeechRecognizer::kNoSpeechTimeoutMs = 8000;
+const int SpeechRecognizer::kEndpointerEstimationTimeMs = 300;
-COMPILE_ASSERT(SpeechRecognizerImpl::kNumBitsPerAudioSample % 8 == 0,
+COMPILE_ASSERT(SpeechRecognizer::kNumBitsPerAudioSample % 8 == 0,
kNumBitsPerAudioSample_must_be_a_multiple_of_8);
-SpeechRecognizerImpl::SpeechRecognizerImpl(
+SpeechRecognizer::SpeechRecognizer(
SpeechRecognitionEventListener* listener,
int session_id,
bool is_single_shot,
@@ -108,32 +108,32 @@ SpeechRecognizerImpl::SpeechRecognizerImpl(
// of causality between events and avoid interleaved event processing due to
// synchronous callbacks.
-void SpeechRecognizerImpl::StartRecognition() {
+void SpeechRecognizer::StartRecognition() {
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(&SpeechRecognizerImpl::DispatchEvent,
+ base::Bind(&SpeechRecognizer::DispatchEvent,
this, FSMEventArgs(EVENT_START)));
}
-void SpeechRecognizerImpl::AbortRecognition() {
+void SpeechRecognizer::AbortRecognition() {
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(&SpeechRecognizerImpl::DispatchEvent,
+ base::Bind(&SpeechRecognizer::DispatchEvent,
this, FSMEventArgs(EVENT_ABORT)));
}
-void SpeechRecognizerImpl::StopAudioCapture() {
+void SpeechRecognizer::StopAudioCapture() {
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(&SpeechRecognizerImpl::DispatchEvent,
+ base::Bind(&SpeechRecognizer::DispatchEvent,
this, FSMEventArgs(EVENT_STOP_CAPTURE)));
}
-bool SpeechRecognizerImpl::IsActive() const {
+bool SpeechRecognizer::IsActive() const {
// Checking the FSM state from another thread (thus, while the FSM is
// potentially concurrently evolving) is meaningless.
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
return state_ != STATE_IDLE;
}
-bool SpeechRecognizerImpl::IsCapturingAudio() const {
+bool SpeechRecognizer::IsCapturingAudio() const {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); // See IsActive().
const bool is_capturing_audio = state_ >= STATE_STARTING &&
state_ <= STATE_RECOGNIZING;
@@ -143,11 +143,11 @@ bool SpeechRecognizerImpl::IsCapturingAudio() const {
}
const SpeechRecognitionEngine&
-SpeechRecognizerImpl::recognition_engine() const {
+SpeechRecognizer::recognition_engine() const {
return *(recognition_engine_.get());
}
-SpeechRecognizerImpl::~SpeechRecognizerImpl() {
+SpeechRecognizer::~SpeechRecognizer() {
endpointer_.EndSession();
if (audio_controller_.get()) {
audio_controller_->Close(base::Bind(&KeepAudioControllerRefcountedForDtor,
@@ -156,16 +156,16 @@ SpeechRecognizerImpl::~SpeechRecognizerImpl() {
}
// Invoked in the audio thread.
-void SpeechRecognizerImpl::OnError(AudioInputController* controller,
+void SpeechRecognizer::OnError(AudioInputController* controller,
int error_code) {
FSMEventArgs event_args(EVENT_AUDIO_ERROR);
event_args.audio_error_code = error_code;
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(&SpeechRecognizerImpl::DispatchEvent,
+ base::Bind(&SpeechRecognizer::DispatchEvent,
this, event_args));
}
-void SpeechRecognizerImpl::OnData(AudioInputController* controller,
+void SpeechRecognizer::OnData(AudioInputController* controller,
const uint8* data, uint32 size) {
if (size == 0) // This could happen when audio capture stops and is normal.
return;
@@ -174,27 +174,27 @@ void SpeechRecognizerImpl::OnData(AudioInputController* controller,
event_args.audio_data = new AudioChunk(data, static_cast<size_t>(size),
kNumBitsPerAudioSample / 8);
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(&SpeechRecognizerImpl::DispatchEvent,
+ base::Bind(&SpeechRecognizer::DispatchEvent,
this, event_args));
}
-void SpeechRecognizerImpl::OnAudioClosed(AudioInputController*) {}
+void SpeechRecognizer::OnAudioClosed(AudioInputController*) {}
-void SpeechRecognizerImpl::OnSpeechRecognitionEngineResult(
+void SpeechRecognizer::OnSpeechRecognitionEngineResult(
const content::SpeechRecognitionResult& result) {
FSMEventArgs event_args(EVENT_ENGINE_RESULT);
event_args.engine_result = result;
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(&SpeechRecognizerImpl::DispatchEvent,
+ base::Bind(&SpeechRecognizer::DispatchEvent,
this, event_args));
}
-void SpeechRecognizerImpl::OnSpeechRecognitionEngineError(
+void SpeechRecognizer::OnSpeechRecognitionEngineError(
const content::SpeechRecognitionError& error) {
FSMEventArgs event_args(EVENT_ENGINE_ERROR);
event_args.engine_error = error;
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(&SpeechRecognizerImpl::DispatchEvent,
+ base::Bind(&SpeechRecognizer::DispatchEvent,
this, event_args));
}
@@ -210,7 +210,7 @@ void SpeechRecognizerImpl::OnSpeechRecognitionEngineError(
// TestAudioInputController is not closing asynchronously as the real controller
// does, but they will become flaky if TestAudioInputController will be fixed.
-void SpeechRecognizerImpl::DispatchEvent(const FSMEventArgs& event_args) {
+void SpeechRecognizer::DispatchEvent(const FSMEventArgs& event_args) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
DCHECK_LE(event_args.event, EVENT_MAX_VALUE);
DCHECK_LE(state_, STATE_MAX_VALUE);
@@ -221,7 +221,7 @@ void SpeechRecognizerImpl::DispatchEvent(const FSMEventArgs& event_args) {
is_dispatching_event_ = true;
// Guard against the delegate freeing us until we finish processing the event.
- scoped_refptr<SpeechRecognizerImpl> me(this);
+ scoped_refptr<SpeechRecognizer> me(this);
if (event_args.event == EVENT_AUDIO_DATA) {
DCHECK(event_args.audio_data.get() != NULL);
@@ -235,8 +235,8 @@ void SpeechRecognizerImpl::DispatchEvent(const FSMEventArgs& event_args) {
is_dispatching_event_ = false;
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::ExecuteTransitionAndGetNextState(
+SpeechRecognizer::FSMState
+SpeechRecognizer::ExecuteTransitionAndGetNextState(
const FSMEventArgs& event_args) {
const FSMEvent event = event_args.event;
switch (state_) {
@@ -354,7 +354,7 @@ SpeechRecognizerImpl::ExecuteTransitionAndGetNextState(
// TODO(primiano): the audio pipeline is currently serial. However, the
// clipper->endpointer->vumeter chain and the sr_engine could be parallelized.
// We should profile the execution to see if it would be worth or not.
-void SpeechRecognizerImpl::ProcessAudioPipeline(const AudioChunk& raw_audio) {
+void SpeechRecognizer::ProcessAudioPipeline(const AudioChunk& raw_audio) {
const bool route_to_endpointer = state_ >= STATE_ESTIMATING_ENVIRONMENT &&
state_ <= STATE_RECOGNIZING;
const bool route_to_sr_engine = route_to_endpointer;
@@ -378,8 +378,8 @@ void SpeechRecognizerImpl::ProcessAudioPipeline(const AudioChunk& raw_audio) {
}
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::StartRecording(const FSMEventArgs&) {
+SpeechRecognizer::FSMState
+SpeechRecognizer::StartRecording(const FSMEventArgs&) {
DCHECK(recognition_engine_.get() != NULL);
DCHECK(!IsCapturingAudio());
AudioManager* audio_manager = (testing_audio_manager_ != NULL) ?
@@ -387,7 +387,7 @@ SpeechRecognizerImpl::StartRecording(const FSMEventArgs&) {
BrowserMainLoop::GetAudioManager();
DCHECK(audio_manager != NULL);
- DVLOG(1) << "SpeechRecognizerImpl starting audio capture.";
+ DVLOG(1) << "SpeechRecognizer starting audio capture.";
num_samples_recorded_ = 0;
audio_level_ = 0;
listener_->OnRecognitionStart(session_id_);
@@ -425,8 +425,8 @@ SpeechRecognizerImpl::StartRecording(const FSMEventArgs&) {
return STATE_STARTING;
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::StartRecognitionEngine(const FSMEventArgs& event_args) {
+SpeechRecognizer::FSMState
+SpeechRecognizer::StartRecognitionEngine(const FSMEventArgs& event_args) {
// This is the first audio packet captured, so the recognition engine is
// started and the delegate notified about the event.
DCHECK(recognition_engine_.get() != NULL);
@@ -440,8 +440,8 @@ SpeechRecognizerImpl::StartRecognitionEngine(const FSMEventArgs& event_args) {
return STATE_ESTIMATING_ENVIRONMENT;
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::WaitEnvironmentEstimationCompletion(const FSMEventArgs&) {
+SpeechRecognizer::FSMState
+SpeechRecognizer::WaitEnvironmentEstimationCompletion(const FSMEventArgs&) {
DCHECK(endpointer_.IsEstimatingEnvironment());
if (GetElapsedTimeMs() >= kEndpointerEstimationTimeMs) {
endpointer_.SetUserInputMode();
@@ -452,8 +452,8 @@ SpeechRecognizerImpl::WaitEnvironmentEstimationCompletion(const FSMEventArgs&) {
}
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::DetectUserSpeechOrTimeout(const FSMEventArgs&) {
+SpeechRecognizer::FSMState
+SpeechRecognizer::DetectUserSpeechOrTimeout(const FSMEventArgs&) {
if (endpointer_.DidStartReceivingSpeech()) {
listener_->OnSoundStart(session_id_);
return STATE_RECOGNIZING;
@@ -464,8 +464,8 @@ SpeechRecognizerImpl::DetectUserSpeechOrTimeout(const FSMEventArgs&) {
return STATE_WAITING_FOR_SPEECH;
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::DetectEndOfSpeech(const FSMEventArgs& event_args) {
+SpeechRecognizer::FSMState
+SpeechRecognizer::DetectEndOfSpeech(const FSMEventArgs& event_args) {
// End-of-speech detection is performed only in one-shot mode.
// TODO(primiano): What about introducing a longer timeout for continuous rec?
if (is_single_shot_ && endpointer_.speech_input_complete())
@@ -473,8 +473,8 @@ SpeechRecognizerImpl::DetectEndOfSpeech(const FSMEventArgs& event_args) {
return STATE_RECOGNIZING;
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::StopCaptureAndWaitForResult(const FSMEventArgs&) {
+SpeechRecognizer::FSMState
+SpeechRecognizer::StopCaptureAndWaitForResult(const FSMEventArgs&) {
DCHECK(state_ >= STATE_ESTIMATING_ENVIRONMENT && state_ <= STATE_RECOGNIZING);
DVLOG(1) << "Concluding recognition";
@@ -488,16 +488,16 @@ SpeechRecognizerImpl::StopCaptureAndWaitForResult(const FSMEventArgs&) {
return STATE_WAITING_FINAL_RESULT;
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::AbortSilently(const FSMEventArgs& event_args) {
+SpeechRecognizer::FSMState
+SpeechRecognizer::AbortSilently(const FSMEventArgs& event_args) {
DCHECK_NE(event_args.event, EVENT_AUDIO_ERROR);
DCHECK_NE(event_args.event, EVENT_ENGINE_ERROR);
return Abort(
SpeechRecognitionError(content::SPEECH_RECOGNITION_ERROR_NONE));
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::AbortWithError(const FSMEventArgs& event_args) {
+SpeechRecognizer::FSMState
+SpeechRecognizer::AbortWithError(const FSMEventArgs& event_args) {
if (event_args.event == EVENT_AUDIO_ERROR) {
return Abort(
SpeechRecognitionError(content::SPEECH_RECOGNITION_ERROR_AUDIO));
@@ -508,12 +508,12 @@ SpeechRecognizerImpl::AbortWithError(const FSMEventArgs& event_args) {
SpeechRecognitionError(content::SPEECH_RECOGNITION_ERROR_ABORTED));
}
-SpeechRecognizerImpl::FSMState SpeechRecognizerImpl::Abort(
+SpeechRecognizer::FSMState SpeechRecognizer::Abort(
const SpeechRecognitionError& error) {
if (IsCapturingAudio())
CloseAudioControllerAsynchronously();
- DVLOG(1) << "SpeechRecognizerImpl canceling recognition. ";
+ DVLOG(1) << "SpeechRecognizer canceling recognition. ";
// The recognition engine is initialized only after STATE_STARTING.
if (state_ > STATE_STARTING) {
@@ -535,7 +535,7 @@ SpeechRecognizerImpl::FSMState SpeechRecognizerImpl::Abort(
return STATE_IDLE;
}
-SpeechRecognizerImpl::FSMState SpeechRecognizerImpl::ProcessIntermediateResult(
+SpeechRecognizer::FSMState SpeechRecognizer::ProcessIntermediateResult(
const FSMEventArgs& event_args) {
// Provisional results can occur only during continuous (non one-shot) mode.
// If this check is reached it means that a continuous speech recognition
@@ -546,8 +546,8 @@ SpeechRecognizerImpl::FSMState SpeechRecognizerImpl::ProcessIntermediateResult(
return state_;
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::ProcessFinalResult(const FSMEventArgs& event_args) {
+SpeechRecognizer::FSMState
+SpeechRecognizer::ProcessFinalResult(const FSMEventArgs& event_args) {
const SpeechRecognitionResult& result = event_args.engine_result;
if (result.is_provisional) {
DCHECK(!is_single_shot_);
@@ -574,36 +574,36 @@ SpeechRecognizerImpl::ProcessFinalResult(const FSMEventArgs& event_args) {
}
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::DoNothing(const FSMEventArgs&) const {
+SpeechRecognizer::FSMState
+SpeechRecognizer::DoNothing(const FSMEventArgs&) const {
return state_; // Just keep the current state.
}
-SpeechRecognizerImpl::FSMState
-SpeechRecognizerImpl::NotFeasible(const FSMEventArgs& event_args) {
+SpeechRecognizer::FSMState
+SpeechRecognizer::NotFeasible(const FSMEventArgs& event_args) {
NOTREACHED() << "Unfeasible event " << event_args.event
<< " in state " << state_;
return state_;
}
-void SpeechRecognizerImpl::CloseAudioControllerAsynchronously() {
+void SpeechRecognizer::CloseAudioControllerAsynchronously() {
DCHECK(IsCapturingAudio());
- DVLOG(1) << "SpeechRecognizerImpl closing audio controller.";
+ DVLOG(1) << "SpeechRecognizer closing audio controller.";
// Issues a Close on the audio controller, passing an empty callback. The only
// purpose of such callback is to keep the audio controller refcounted until
// Close has completed (in the audio thread) and automatically destroy it
// afterwards (upon return from OnAudioClosed).
- audio_controller_->Close(base::Bind(&SpeechRecognizerImpl::OnAudioClosed,
+ audio_controller_->Close(base::Bind(&SpeechRecognizer::OnAudioClosed,
this, audio_controller_));
audio_controller_ = NULL; // The controller is still refcounted by Bind.
}
-int SpeechRecognizerImpl::GetElapsedTimeMs() const {
+int SpeechRecognizer::GetElapsedTimeMs() const {
return (num_samples_recorded_ * 1000) / kAudioSampleRate;
}
-void SpeechRecognizerImpl::UpdateSignalAndNoiseLevels(const float& rms,
- bool clip_detected) {
+void SpeechRecognizer::UpdateSignalAndNoiseLevels(const float& rms,
+ bool clip_detected) {
// Calculate the input volume to display in the UI, smoothing towards the
// new level.
// TODO(primiano): Do we really need all this floating point arith here?
@@ -624,19 +624,19 @@ void SpeechRecognizerImpl::UpdateSignalAndNoiseLevels(const float& rms,
session_id_, clip_detected ? 1.0f : audio_level_, noise_level);
}
-void SpeechRecognizerImpl::SetAudioManagerForTesting(
+void SpeechRecognizer::SetAudioManagerForTesting(
AudioManager* audio_manager) {
testing_audio_manager_ = audio_manager;
}
-SpeechRecognizerImpl::FSMEventArgs::FSMEventArgs(FSMEvent event_value)
+SpeechRecognizer::FSMEventArgs::FSMEventArgs(FSMEvent event_value)
: event(event_value),
audio_error_code(0),
audio_data(NULL),
engine_error(content::SPEECH_RECOGNITION_ERROR_NONE) {
}
-SpeechRecognizerImpl::FSMEventArgs::~FSMEventArgs() {
+SpeechRecognizer::FSMEventArgs::~FSMEventArgs() {
}
} // namespace speech
diff --git a/content/browser/speech/speech_recognizer_impl.h b/content/browser/speech/speech_recognizer.h
index 89e41e6..c523f27 100644
--- a/content/browser/speech/speech_recognizer_impl.h
+++ b/content/browser/speech/speech_recognizer.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CONTENT_BROWSER_SPEECH_SPEECH_RECOGNIZER_IMPL_H_
-#define CONTENT_BROWSER_SPEECH_SPEECH_RECOGNIZER_IMPL_H_
+#ifndef CONTENT_BROWSER_SPEECH_SPEECH_RECOGNIZER_H_
+#define CONTENT_BROWSER_SPEECH_SPEECH_RECOGNIZER_H_
#pragma once
#include "base/basictypes.h"
@@ -25,14 +25,11 @@ class AudioManager;
}
namespace speech {
-
-// TODO(primiano) Next CL: Remove the Impl suffix.
-
// Handles speech recognition for a session (identified by |session_id|), taking
// care of audio capture, silence detection/endpointer and interaction with the
// SpeechRecognitionEngine.
-class CONTENT_EXPORT SpeechRecognizerImpl
- : public base::RefCountedThreadSafe<SpeechRecognizerImpl>,
+class CONTENT_EXPORT SpeechRecognizer
+ : public base::RefCountedThreadSafe<SpeechRecognizer>,
public media::AudioInputController::EventHandler,
public NON_EXPORTED_BASE(SpeechRecognitionEngineDelegate) {
public:
@@ -42,7 +39,7 @@ class CONTENT_EXPORT SpeechRecognizerImpl
static const int kNoSpeechTimeoutMs;
static const int kEndpointerEstimationTimeMs;
- SpeechRecognizerImpl(
+ SpeechRecognizer(
content::SpeechRecognitionEventListener* listener,
int session_id,
bool is_single_shot,
@@ -56,8 +53,8 @@ class CONTENT_EXPORT SpeechRecognizerImpl
const SpeechRecognitionEngine& recognition_engine() const;
private:
- friend class base::RefCountedThreadSafe<SpeechRecognizerImpl>;
- friend class SpeechRecognizerImplTest;
+ friend class base::RefCountedThreadSafe<SpeechRecognizer>;
+ friend class SpeechRecognizerTest;
enum FSMState {
STATE_IDLE = 0,
@@ -91,7 +88,7 @@ class CONTENT_EXPORT SpeechRecognizerImpl
content::SpeechRecognitionError engine_error;
};
- virtual ~SpeechRecognizerImpl();
+ virtual ~SpeechRecognizer();
// Entry point for pushing any new external event into the recognizer FSM.
void DispatchEvent(const FSMEventArgs& event_args);
@@ -157,9 +154,9 @@ class CONTENT_EXPORT SpeechRecognizerImpl
bool is_single_shot_;
FSMState state_;
- DISALLOW_COPY_AND_ASSIGN(SpeechRecognizerImpl);
+ DISALLOW_COPY_AND_ASSIGN(SpeechRecognizer);
};
} // namespace speech
-#endif // CONTENT_BROWSER_SPEECH_SPEECH_RECOGNIZER_IMPL_H_
+#endif // CONTENT_BROWSER_SPEECH_SPEECH_RECOGNIZER_H_
diff --git a/content/browser/speech/speech_recognizer_impl_unittest.cc b/content/browser/speech/speech_recognizer_unittest.cc
index 4a487c3..8631217 100644
--- a/content/browser/speech/speech_recognizer_impl_unittest.cc
+++ b/content/browser/speech/speech_recognizer_unittest.cc
@@ -6,7 +6,7 @@
#include "content/browser/browser_thread_impl.h"
#include "content/browser/speech/google_one_shot_remote_engine.h"
-#include "content/browser/speech/speech_recognizer_impl.h"
+#include "content/browser/speech/speech_recognizer.h"
#include "content/public/browser/speech_recognition_event_listener.h"
#include "media/audio/audio_manager.h"
#include "media/audio/fake_audio_input_stream.h"
@@ -92,10 +92,10 @@ class MockAudioManager : public media::AudioManagerBase {
namespace speech {
-class SpeechRecognizerImplTest : public content::SpeechRecognitionEventListener,
- public testing::Test {
+class SpeechRecognizerTest : public content::SpeechRecognitionEventListener,
+ public testing::Test {
public:
- SpeechRecognizerImplTest()
+ SpeechRecognizerTest()
: io_thread_(BrowserThread::IO, &message_loop_),
audio_manager_(new MockAudioManager()),
recognition_started_(false),
@@ -107,27 +107,26 @@ class SpeechRecognizerImplTest : public content::SpeechRecognitionEventListener,
sound_ended_(false),
error_(content::SPEECH_RECOGNITION_ERROR_NONE),
volume_(-1.0f) {
- // SpeechRecognizerImpl takes ownership of sr_engine.
+ // SpeechRecognizer takes ownership of sr_engine.
SpeechRecognitionEngine* sr_engine =
new GoogleOneShotRemoteEngine(NULL /* URLRequestContextGetter */);
SpeechRecognitionEngineConfig config;
- config.audio_num_bits_per_sample =
- SpeechRecognizerImpl::kNumBitsPerAudioSample;
- config.audio_sample_rate = SpeechRecognizerImpl::kAudioSampleRate;
+ config.audio_num_bits_per_sample = SpeechRecognizer::kNumBitsPerAudioSample;
+ config.audio_sample_rate = SpeechRecognizer::kAudioSampleRate;
config.filter_profanities = false;
sr_engine->SetConfig(config);
const int kTestingSessionId = 1;
const bool kOneShotMode = true;
- recognizer_ = new SpeechRecognizerImpl(
+ recognizer_ = new SpeechRecognizer(
this, kTestingSessionId, kOneShotMode, sr_engine);
recognizer_->SetAudioManagerForTesting(audio_manager_.get());
int audio_packet_length_bytes =
- (SpeechRecognizerImpl::kAudioSampleRate *
+ (SpeechRecognizer::kAudioSampleRate *
GoogleOneShotRemoteEngine::kAudioPacketIntervalMs *
- ChannelLayoutToChannelCount(SpeechRecognizerImpl::kChannelLayout) *
- SpeechRecognizerImpl::kNumBitsPerAudioSample) / (8 * 1000);
+ ChannelLayoutToChannelCount(SpeechRecognizer::kChannelLayout) *
+ SpeechRecognizer::kNumBitsPerAudioSample) / (8 * 1000);
audio_packet_.resize(audio_packet_length_bytes);
}
@@ -228,7 +227,7 @@ class SpeechRecognizerImplTest : public content::SpeechRecognitionEventListener,
protected:
MessageLoopForIO message_loop_;
BrowserThreadImpl io_thread_;
- scoped_refptr<SpeechRecognizerImpl> recognizer_;
+ scoped_refptr<SpeechRecognizer> recognizer_;
scoped_ptr<AudioManager> audio_manager_;
bool recognition_started_;
bool recognition_ended_;
@@ -245,7 +244,7 @@ class SpeechRecognizerImplTest : public content::SpeechRecognitionEventListener,
float noise_volume_;
};
-TEST_F(SpeechRecognizerImplTest, StopNoData) {
+TEST_F(SpeechRecognizerTest, StopNoData) {
// Check for callbacks when stopping record before any audio gets recorded.
recognizer_->StartRecognition();
recognizer_->StopAudioCapture();
@@ -257,7 +256,7 @@ TEST_F(SpeechRecognizerImplTest, StopNoData) {
CheckFinalEventsConsistency();
}
-TEST_F(SpeechRecognizerImplTest, CancelNoData) {
+TEST_F(SpeechRecognizerTest, CancelNoData) {
// Check for callbacks when canceling recognition before any audio gets
// recorded.
recognizer_->StartRecognition();
@@ -270,7 +269,7 @@ TEST_F(SpeechRecognizerImplTest, CancelNoData) {
CheckFinalEventsConsistency();
}
-TEST_F(SpeechRecognizerImplTest, StopWithData) {
+TEST_F(SpeechRecognizerTest, StopWithData) {
// Start recording, give some data and then stop. This should wait for the
// network callback to arrive before completion.
recognizer_->StartRecognition();
@@ -320,7 +319,7 @@ TEST_F(SpeechRecognizerImplTest, StopWithData) {
CheckFinalEventsConsistency();
}
-TEST_F(SpeechRecognizerImplTest, CancelWithData) {
+TEST_F(SpeechRecognizerTest, CancelWithData) {
// Start recording, give some data and then cancel.
recognizer_->StartRecognition();
MessageLoop::current()->RunAllPending();
@@ -340,7 +339,7 @@ TEST_F(SpeechRecognizerImplTest, CancelWithData) {
CheckFinalEventsConsistency();
}
-TEST_F(SpeechRecognizerImplTest, ConnectionError) {
+TEST_F(SpeechRecognizerTest, ConnectionError) {
// Start recording, give some data and then stop. Issue the network callback
// with a connection error and verify that the recognizer bubbles the error up
recognizer_->StartRecognition();
@@ -378,7 +377,7 @@ TEST_F(SpeechRecognizerImplTest, ConnectionError) {
CheckFinalEventsConsistency();
}
-TEST_F(SpeechRecognizerImplTest, ServerError) {
+TEST_F(SpeechRecognizerTest, ServerError) {
// Start recording, give some data and then stop. Issue the network callback
// with a 500 error and verify that the recognizer bubbles the error up
recognizer_->StartRecognition();
@@ -415,7 +414,7 @@ TEST_F(SpeechRecognizerImplTest, ServerError) {
CheckFinalEventsConsistency();
}
-TEST_F(SpeechRecognizerImplTest, AudioControllerErrorNoData) {
+TEST_F(SpeechRecognizerTest, AudioControllerErrorNoData) {
// Check if things tear down properly if AudioInputController threw an error.
recognizer_->StartRecognition();
MessageLoop::current()->RunAllPending();
@@ -431,7 +430,7 @@ TEST_F(SpeechRecognizerImplTest, AudioControllerErrorNoData) {
CheckFinalEventsConsistency();
}
-TEST_F(SpeechRecognizerImplTest, AudioControllerErrorWithData) {
+TEST_F(SpeechRecognizerTest, AudioControllerErrorWithData) {
// Check if things tear down properly if AudioInputController threw an error
// after giving some audio data.
recognizer_->StartRecognition();
@@ -451,7 +450,7 @@ TEST_F(SpeechRecognizerImplTest, AudioControllerErrorWithData) {
CheckFinalEventsConsistency();
}
-TEST_F(SpeechRecognizerImplTest, NoSpeechCallbackIssued) {
+TEST_F(SpeechRecognizerTest, NoSpeechCallbackIssued) {
// Start recording and give a lot of packets with audio samples set to zero.
// This should trigger the no-speech detector and issue a callback.
recognizer_->StartRecognition();
@@ -460,7 +459,7 @@ TEST_F(SpeechRecognizerImplTest, NoSpeechCallbackIssued) {
audio_input_controller_factory_.controller();
ASSERT_TRUE(controller);
- int num_packets = (SpeechRecognizerImpl::kNoSpeechTimeoutMs) /
+ int num_packets = (SpeechRecognizer::kNoSpeechTimeoutMs) /
GoogleOneShotRemoteEngine::kAudioPacketIntervalMs + 1;
// The vector is already filled with zero value samples on create.
for (int i = 0; i < num_packets; ++i) {
@@ -475,7 +474,7 @@ TEST_F(SpeechRecognizerImplTest, NoSpeechCallbackIssued) {
CheckFinalEventsConsistency();
}
-TEST_F(SpeechRecognizerImplTest, NoSpeechCallbackNotIssued) {
+TEST_F(SpeechRecognizerTest, NoSpeechCallbackNotIssued) {
// Start recording and give a lot of packets with audio samples set to zero
// and then some more with reasonably loud audio samples. This should be
// treated as normal speech input and the no-speech detector should not get
@@ -488,7 +487,7 @@ TEST_F(SpeechRecognizerImplTest, NoSpeechCallbackNotIssued) {
controller = audio_input_controller_factory_.controller();
ASSERT_TRUE(controller);
- int num_packets = (SpeechRecognizerImpl::kNoSpeechTimeoutMs) /
+ int num_packets = (SpeechRecognizer::kNoSpeechTimeoutMs) /
GoogleOneShotRemoteEngine::kAudioPacketIntervalMs;
// The vector is already filled with zero value samples on create.
@@ -513,7 +512,7 @@ TEST_F(SpeechRecognizerImplTest, NoSpeechCallbackNotIssued) {
CheckFinalEventsConsistency();
}
-TEST_F(SpeechRecognizerImplTest, SetInputVolumeCallback) {
+TEST_F(SpeechRecognizerTest, SetInputVolumeCallback) {
// Start recording and give a lot of packets with audio samples set to zero
// and then some more with reasonably loud audio samples. Check that we don't
// get the callback during estimation phase, then get zero for the silence
@@ -527,7 +526,7 @@ TEST_F(SpeechRecognizerImplTest, SetInputVolumeCallback) {
ASSERT_TRUE(controller);
// Feed some samples to begin with for the endpointer to do noise estimation.
- int num_packets = SpeechRecognizerImpl::kEndpointerEstimationTimeMs /
+ int num_packets = SpeechRecognizer::kEndpointerEstimationTimeMs /
GoogleOneShotRemoteEngine::kAudioPacketIntervalMs;
FillPacketWithNoise();
for (int i = 0; i < num_packets; ++i) {
diff --git a/content/content_browser.gypi b/content/content_browser.gypi
index 7d585ac..f17ab16 100644
--- a/content/content_browser.gypi
+++ b/content/content_browser.gypi
@@ -680,8 +680,8 @@
'browser/speech/speech_recognition_engine.h',
'browser/speech/speech_recognition_manager_impl.cc',
'browser/speech/speech_recognition_manager_impl.h',
- 'browser/speech/speech_recognizer_impl.cc',
- 'browser/speech/speech_recognizer_impl.h',
+ 'browser/speech/speech_recognizer.cc',
+ 'browser/speech/speech_recognizer.h',
'browser/ssl/ssl_cert_error_handler.cc',
'browser/ssl/ssl_cert_error_handler.h',
'browser/ssl/ssl_client_auth_handler.cc',
diff --git a/content/content_tests.gypi b/content/content_tests.gypi
index 5bedd31..6c4ac20 100644
--- a/content/content_tests.gypi
+++ b/content/content_tests.gypi
@@ -288,7 +288,7 @@
'browser/speech/endpointer/endpointer_unittest.cc',
'browser/speech/google_one_shot_remote_engine_unittest.cc',
'browser/speech/google_streaming_remote_engine_unittest.cc',
- 'browser/speech/speech_recognizer_impl_unittest.cc',
+ 'browser/speech/speech_recognizer_unittest.cc',
'browser/ssl/ssl_host_state_unittest.cc',
'browser/system_message_window_win_unittest.cc',
'browser/trace_subscriber_stdio_unittest.cc',
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc
index b9ee10a..7aa4439 100644
--- a/content/public/common/content_switches.cc
+++ b/content/public/common/content_switches.cc
@@ -202,12 +202,10 @@ const char kEnableScriptedSpeech[] = "enable-scripted-speech";
// TODO(primiano): Remove the two switches below when the URL becomes public.
// Specifies the webservice URL for continuous speech recognition.
-const char kSpeechRecognitionWebserviceURL[] =
- "speech-service";
+const char kSpeechRecognitionWebserviceURL[] = "speech-service";
// Specifies the request key for the continuous speech recognition webservice.
-const char kSpeechRecognitionWebserviceKey[] =
- "speech-service-key";
+const char kSpeechRecognitionWebserviceKey[] = "speech-service-key";
// Disables animation on the compositor thread.
const char kDisableThreadedAnimation[] = "disable-threaded-animation";