summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/browser/speech/speech_recognition_manager_impl.cc13
-rw-r--r--content/browser/speech/speech_recognition_manager_impl.h2
-rw-r--r--content/content_tests.gypi1
3 files changed, 15 insertions, 1 deletions
diff --git a/content/browser/speech/speech_recognition_manager_impl.cc b/content/browser/speech/speech_recognition_manager_impl.cc
index 5967620..be99298 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 abb451e..c5fb75e 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<SpeechRecognitionManagerImpl> weak_factory_;
+#if !defined(OS_IOS)
class PermissionRequest;
scoped_ptr<PermissionRequest> permission_request_;
+#endif // !defined(OS_IOS)
};
} // namespace speech
diff --git a/content/content_tests.gypi b/content/content_tests.gypi
index 3f6e19c..2892eff 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$'],
],