Chromium Code Reviews| Index: content/browser/speech/speech_recognition_manager_impl.cc |
| diff --git a/content/browser/speech/speech_recognition_manager_impl.cc b/content/browser/speech/speech_recognition_manager_impl.cc |
| index 7f9eef1289c5fcf6ba6e7db489d5a1eafcbc72e8..306a14f1533bc1710dfc524d017493842c796b1e 100644 |
| --- a/content/browser/speech/speech_recognition_manager_impl.cc |
| +++ b/content/browser/speech/speech_recognition_manager_impl.cc |
| @@ -5,7 +5,6 @@ |
| #include "content/browser/speech/speech_recognition_manager_impl.h" |
| #include "base/bind.h" |
| -#include "base/memory/singleton.h" |
| #include "content/browser/browser_main_loop.h" |
| #include "content/browser/speech/google_one_shot_remote_engine.h" |
| #include "content/browser/speech/speech_recognition_engine.h" |
| @@ -39,22 +38,30 @@ SpeechRecognitionManager* SpeechRecognitionManager::GetInstance() { |
| } |
| } // namespace content |
| +namespace { |
| +static speech::SpeechRecognitionManagerImpl* g_speech_recognition_manager_impl; |
| +} // namespace |
|
hans
2012/05/15 15:32:31
no need for both anonymous namespace and static
Primiano Tucci (use gerrit)
2012/05/15 16:04:03
Done.
|
| + |
| namespace speech { |
| SpeechRecognitionManagerImpl* SpeechRecognitionManagerImpl::GetInstance() { |
| - return Singleton<SpeechRecognitionManagerImpl, |
| - LeakySingletonTraits<SpeechRecognitionManagerImpl> >::get(); |
| + DCHECK(g_speech_recognition_manager_impl); |
|
hans
2012/05/15 15:32:31
but the comment for GetInstance() says this may re
Primiano Tucci (use gerrit)
2012/05/15 16:04:03
Ah, right. I changed the comment (I copied it from
|
| + return g_speech_recognition_manager_impl; |
| } |
| SpeechRecognitionManagerImpl::SpeechRecognitionManagerImpl() |
| : session_id_capturing_audio_(kSessionIDInvalid), |
| last_session_id_(kSessionIDInvalid), |
| - is_dispatching_event_(false) { |
| - delegate_ = content::GetContentClient()->browser()-> |
| - GetSpeechRecognitionManagerDelegate(); |
| + is_dispatching_event_(false), |
| + delegate_(content::GetContentClient()->browser()-> |
| + GetSpeechRecognitionManagerDelegate()) { |
| + DCHECK(!g_speech_recognition_manager_impl); |
| + g_speech_recognition_manager_impl = this; |
| } |
| SpeechRecognitionManagerImpl::~SpeechRecognitionManagerImpl() { |
| + DCHECK(g_speech_recognition_manager_impl); |
| + g_speech_recognition_manager_impl = NULL; |
| // Recognition sessions will be aborted by the corresponding destructors. |
| sessions_.clear(); |
| } |
| @@ -73,7 +80,7 @@ int SpeechRecognitionManagerImpl::CreateSession( |
| std::string hardware_info; |
| bool can_report_metrics = false; |
| - if (delegate_) |
| + if (delegate_.get()) |
| delegate_->GetDiagnosticInformation(&can_report_metrics, &hardware_info); |
| GoogleOneShotRemoteEngineConfig remote_engine_config; |
| @@ -108,7 +115,7 @@ void SpeechRecognitionManagerImpl::StartSession(int session_id) { |
| AbortSession(session_id_capturing_audio_); |
| } |
| - if (delegate_) |
| + if (delegate_.get()) |
| delegate_->CheckRecognitionIsAllowed( |
| session_id, |
| base::Bind(&SpeechRecognitionManagerImpl::RecognitionAllowedCallback, |
| @@ -472,7 +479,7 @@ SpeechRecognitionEventListener* SpeechRecognitionManagerImpl::GetListener( |
| SpeechRecognitionEventListener* |
| SpeechRecognitionManagerImpl::GetDelegateListener() const { |
| - return delegate_ ? delegate_->GetEventListener() : NULL; |
| + return delegate_.get() ? delegate_->GetEventListener() : NULL; |
| } |
| const SpeechRecognitionSessionConfig& |