From 74f05e5f6b235f4d6ab81af8aa5a855ffea46def Mon Sep 17 00:00:00 2001 From: "msarda@chromium.org" Date: Wed, 24 Oct 2012 10:01:09 +0000 Subject: [PATCH] Build SpeechRecognitionManagerImpl on iOS. Run content speech unit tests. Build SpeechRecognitionManagerImpl on iOS: * Ifdef-out PermissionRequest on iOS as it extends MediaStreamRequester which is part of content/browser/renderer_host/media/ and is not build on iOS. * Voice search can only be initiated by clear user action. Add DCHECKs to clearly identify the expected behavior. * Build all content/browser/speech/... unit tests. Review URL: https://chromiumcodereview.appspot.com/11229004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@163803 0039d316-1c4b-4281-b951-d872f2087c98 --- content/browser/speech/speech_recognition_manager_impl.cc | 13 ++++++++++++- content/browser/speech/speech_recognition_manager_impl.h | 2 ++ content/content_tests.gypi | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/content/browser/speech/speech_recognition_manager_impl.cc b/content/browser/speech/speech_recognition_manager_impl.cc index 59676207f976..be992988a8d6 100644 --- a/content/browser/speech/speech_recognition_manager_impl.cc +++ b/content/browser/speech/speech_recognition_manager_impl.cc @@ -51,6 +51,7 @@ void ShowAudioInputSettingsOnFileThread() { namespace speech { +#if !defined(OS_IOS) class SpeechRecognitionManagerImpl::PermissionRequest : public media_stream::MediaStreamRequester { public: @@ -125,6 +126,7 @@ class SpeechRecognitionManagerImpl::PermissionRequest std::string label_; bool started_; }; +#endif // !defined(OS_IOS) SpeechRecognitionManagerImpl* SpeechRecognitionManagerImpl::GetInstance() { return g_speech_recognition_manager_impl; @@ -229,6 +231,11 @@ void SpeechRecognitionManagerImpl::RecognitionAllowedCallback(int session_id, if (!SessionExists(session_id)) return; +#if defined(OS_IOS) + // On iOS, voice search can only be initiated by clear user action and thus + // it is always allowed. + DCHECK(!ask_user && is_allowed); +#else if (ask_user) { const SpeechRecognitionSessionContext& context = GetSessionContext(session_id); @@ -246,8 +253,8 @@ void SpeechRecognitionManagerImpl::RecognitionAllowedCallback(int session_id, return; } - permission_request_.reset(); +#endif // defined(OS_IOS) if (is_allowed) { MessageLoop::current()->PostTask(FROM_HERE, @@ -267,11 +274,13 @@ void SpeechRecognitionManagerImpl::AbortSession(int session_id) { if (!SessionExists(session_id)) return; +#if !defined(OS_IOS) if (permission_request_.get() && permission_request_->Session() == session_id) { DCHECK(permission_request_.get()); permission_request_->Abort(); } +#endif // !defined(OS_IOS) MessageLoop::current()->PostTask(FROM_HERE, base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, @@ -283,11 +292,13 @@ void SpeechRecognitionManagerImpl::StopAudioCaptureForSession(int session_id) { if (!SessionExists(session_id)) return; +#if !defined(OS_IOS) if (permission_request_.get() && permission_request_->Session() == session_id) { DCHECK(permission_request_.get()); permission_request_->Abort(); } +#endif // !defined(OS_IOS) MessageLoop::current()->PostTask(FROM_HERE, base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, diff --git a/content/browser/speech/speech_recognition_manager_impl.h b/content/browser/speech/speech_recognition_manager_impl.h index abb451ed6ddd..c5fb75e59424 100644 --- a/content/browser/speech/speech_recognition_manager_impl.h +++ b/content/browser/speech/speech_recognition_manager_impl.h @@ -175,8 +175,10 @@ class CONTENT_EXPORT SpeechRecognitionManagerImpl : // since tasks pending on a destroyed WeakPtr are automatically discarded. base::WeakPtrFactory weak_factory_; +#if !defined(OS_IOS) class PermissionRequest; scoped_ptr permission_request_; +#endif // !defined(OS_IOS) }; } // namespace speech diff --git a/content/content_tests.gypi b/content/content_tests.gypi index 3f6e19c859cb..2892eff043a9 100644 --- a/content/content_tests.gypi +++ b/content/content_tests.gypi @@ -475,6 +475,7 @@ ['exclude', '\\.(cc|mm)$'], ['include', '_ios\\.(cc|mm)$'], ['include', '^browser/notification_service_impl_unittest\\.cc$'], + ['include', '^browser/speech/.*_unittest\\.cc$'], ['include', '^browser/web_contents/navigation_entry_impl_unittest\\.cc$'], ['include', '^test/run_all_unittests\\.cc$'], ], -- 2.11.4.GIT