Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Side by Side Diff: content/browser/speech/speech_recognition_manager_impl.cc

Issue 11347004: content/browser: Move speech code into content namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/speech/speech_recognition_manager_impl.h" 5 #include "content/browser/speech/speech_recognition_manager_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "content/browser/browser_main_loop.h" 8 #include "content/browser/browser_main_loop.h"
9 #include "content/browser/renderer_host/media/media_stream_manager.h" 9 #include "content/browser/renderer_host/media/media_stream_manager.h"
10 #include "content/browser/speech/google_one_shot_remote_engine.h" 10 #include "content/browser/speech/google_one_shot_remote_engine.h"
11 #include "content/browser/speech/google_streaming_remote_engine.h" 11 #include "content/browser/speech/google_streaming_remote_engine.h"
12 #include "content/browser/speech/speech_recognition_engine.h" 12 #include "content/browser/speech/speech_recognition_engine.h"
13 #include "content/browser/speech/speech_recognizer.h" 13 #include "content/browser/speech/speech_recognizer.h"
14 #include "content/public/browser/browser_thread.h" 14 #include "content/public/browser/browser_thread.h"
15 #include "content/public/browser/content_browser_client.h" 15 #include "content/public/browser/content_browser_client.h"
16 #include "content/public/browser/resource_context.h" 16 #include "content/public/browser/resource_context.h"
17 #include "content/public/browser/speech_recognition_event_listener.h" 17 #include "content/public/browser/speech_recognition_event_listener.h"
18 #include "content/public/browser/speech_recognition_manager_delegate.h" 18 #include "content/public/browser/speech_recognition_manager_delegate.h"
19 #include "content/public/browser/speech_recognition_session_config.h" 19 #include "content/public/browser/speech_recognition_session_config.h"
20 #include "content/public/browser/speech_recognition_session_context.h" 20 #include "content/public/browser/speech_recognition_session_context.h"
21 #include "content/public/common/speech_recognition_error.h" 21 #include "content/public/common/speech_recognition_error.h"
22 #include "content/public/common/speech_recognition_result.h" 22 #include "content/public/common/speech_recognition_result.h"
23 #include "media/audio/audio_manager.h" 23 #include "media/audio/audio_manager.h"
24 24
25 using base::Callback; 25 using base::Callback;
26 using content::BrowserMainLoop;
27 using content::BrowserThread;
28 using content::SpeechRecognitionEventListener;
29 using content::SpeechRecognitionManager;
30 using content::SpeechRecognitionResult;
31 using content::SpeechRecognitionSessionContext;
32 using content::SpeechRecognitionSessionConfig;
33 26
34 namespace content { 27 namespace content {
35 SpeechRecognitionManager* SpeechRecognitionManager::GetInstance() {
36 return speech::SpeechRecognitionManagerImpl::GetInstance();
37 }
38 } // namespace content
39 28
40 namespace { 29 namespace {
41 speech::SpeechRecognitionManagerImpl* g_speech_recognition_manager_impl; 30
31 SpeechRecognitionManagerImpl* g_speech_recognition_manager_impl;
42 32
43 void ShowAudioInputSettingsOnFileThread() { 33 void ShowAudioInputSettingsOnFileThread() {
44 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 34 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
45 media::AudioManager* audio_manager = BrowserMainLoop::GetAudioManager(); 35 media::AudioManager* audio_manager = BrowserMainLoop::GetAudioManager();
46 DCHECK(audio_manager->CanShowAudioInputSettings()); 36 DCHECK(audio_manager->CanShowAudioInputSettings());
47 if (audio_manager->CanShowAudioInputSettings()) 37 if (audio_manager->CanShowAudioInputSettings())
48 audio_manager->ShowAudioInputSettings(); 38 audio_manager->ShowAudioInputSettings();
49 } 39 }
40
50 } // namespace 41 } // namespace
51 42
52 namespace speech { 43 SpeechRecognitionManager* SpeechRecognitionManager::GetInstance() {
44 return SpeechRecognitionManagerImpl::GetInstance();
45 }
53 46
54 #if !defined(OS_IOS) 47 #if !defined(OS_IOS)
55 class SpeechRecognitionManagerImpl::PermissionRequest 48 class SpeechRecognitionManagerImpl::PermissionRequest
56 : public media_stream::MediaStreamRequester { 49 : public media_stream::MediaStreamRequester {
57 public: 50 public:
58 PermissionRequest(int session_id, 51 PermissionRequest(int session_id,
59 const base::Callback<void(bool is_allowed)>& callback) 52 const base::Callback<void(bool is_allowed)>& callback)
60 : session_id_(session_id), 53 : session_id_(session_id),
61 callback_(callback), 54 callback_(callback),
62 started_(false) { 55 started_(false) {
63 } 56 }
64 57
65 virtual ~PermissionRequest() { 58 virtual ~PermissionRequest() {
66 if (started_) 59 if (started_)
67 Abort(); 60 Abort();
68 } 61 }
69 62
70 void Start(int render_process_id, int render_view_id, const GURL& origin) { 63 void Start(int render_process_id, int render_view_id, const GURL& origin) {
71 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 64 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
72 started_ = true; 65 started_ = true;
73 BrowserMainLoop::GetMediaStreamManager()->GenerateStream( 66 BrowserMainLoop::GetMediaStreamManager()->GenerateStream(
74 this, 67 this,
75 render_process_id, 68 render_process_id,
76 render_view_id, 69 render_view_id,
77 media_stream::StreamOptions(content::MEDIA_DEVICE_AUDIO_CAPTURE, 70 media_stream::StreamOptions(MEDIA_DEVICE_AUDIO_CAPTURE,
78 content::MEDIA_DEVICE_VIDEO_CAPTURE), 71 MEDIA_DEVICE_VIDEO_CAPTURE),
79 origin, 72 origin,
80 &label_); 73 &label_);
81 } 74 }
82 75
83 void Abort() { 76 void Abort() {
84 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 77 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
85 started_ = false; 78 started_ = false;
86 BrowserMainLoop::GetMediaStreamManager()->CancelRequest(label_); 79 BrowserMainLoop::GetMediaStreamManager()->CancelRequest(label_);
87 } 80 }
88 81
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 #endif // !defined(OS_IOS) 122 #endif // !defined(OS_IOS)
130 123
131 SpeechRecognitionManagerImpl* SpeechRecognitionManagerImpl::GetInstance() { 124 SpeechRecognitionManagerImpl* SpeechRecognitionManagerImpl::GetInstance() {
132 return g_speech_recognition_manager_impl; 125 return g_speech_recognition_manager_impl;
133 } 126 }
134 127
135 SpeechRecognitionManagerImpl::SpeechRecognitionManagerImpl() 128 SpeechRecognitionManagerImpl::SpeechRecognitionManagerImpl()
136 : primary_session_id_(kSessionIDInvalid), 129 : primary_session_id_(kSessionIDInvalid),
137 last_session_id_(kSessionIDInvalid), 130 last_session_id_(kSessionIDInvalid),
138 is_dispatching_event_(false), 131 is_dispatching_event_(false),
139 delegate_(content::GetContentClient()->browser()-> 132 delegate_(GetContentClient()->browser()->
140 GetSpeechRecognitionManagerDelegate()), 133 GetSpeechRecognitionManagerDelegate()),
141 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { 134 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
142 DCHECK(!g_speech_recognition_manager_impl); 135 DCHECK(!g_speech_recognition_manager_impl);
143 g_speech_recognition_manager_impl = this; 136 g_speech_recognition_manager_impl = this;
144 } 137 }
145 138
146 SpeechRecognitionManagerImpl::~SpeechRecognitionManagerImpl() { 139 SpeechRecognitionManagerImpl::~SpeechRecognitionManagerImpl() {
147 DCHECK(g_speech_recognition_manager_impl); 140 DCHECK(g_speech_recognition_manager_impl);
148 g_speech_recognition_manager_impl = NULL; 141 g_speech_recognition_manager_impl = NULL;
149 // Recognition sessions will be aborted by the corresponding destructors. 142 // Recognition sessions will be aborted by the corresponding destructors.
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 return; 247 return;
255 } 248 }
256 permission_request_.reset(); 249 permission_request_.reset();
257 #endif // defined(OS_IOS) 250 #endif // defined(OS_IOS)
258 251
259 if (is_allowed) { 252 if (is_allowed) {
260 MessageLoop::current()->PostTask(FROM_HERE, 253 MessageLoop::current()->PostTask(FROM_HERE,
261 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, 254 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent,
262 weak_factory_.GetWeakPtr(), session_id, EVENT_START)); 255 weak_factory_.GetWeakPtr(), session_id, EVENT_START));
263 } else { 256 } else {
264 OnRecognitionError(session_id, content::SpeechRecognitionError( 257 OnRecognitionError(session_id, SpeechRecognitionError(
265 content::SPEECH_RECOGNITION_ERROR_NOT_ALLOWED)); 258 SPEECH_RECOGNITION_ERROR_NOT_ALLOWED));
266 MessageLoop::current()->PostTask(FROM_HERE, 259 MessageLoop::current()->PostTask(FROM_HERE,
267 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, 260 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent,
268 weak_factory_.GetWeakPtr(), session_id, EVENT_ABORT)); 261 weak_factory_.GetWeakPtr(), session_id, EVENT_ABORT));
269 } 262 }
270 } 263 }
271 264
272 void SpeechRecognitionManagerImpl::AbortSession(int session_id) { 265 void SpeechRecognitionManagerImpl::AbortSession(int session_id) {
273 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 266 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
274 if (!SessionExists(session_id)) 267 if (!SessionExists(session_id))
275 return; 268 return;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 if (SpeechRecognitionEventListener* delegate_listener = GetDelegateListener()) 371 if (SpeechRecognitionEventListener* delegate_listener = GetDelegateListener())
379 delegate_listener->OnAudioEnd(session_id); 372 delegate_listener->OnAudioEnd(session_id);
380 if (SpeechRecognitionEventListener* listener = GetListener(session_id)) 373 if (SpeechRecognitionEventListener* listener = GetListener(session_id))
381 listener->OnAudioEnd(session_id); 374 listener->OnAudioEnd(session_id);
382 MessageLoop::current()->PostTask(FROM_HERE, 375 MessageLoop::current()->PostTask(FROM_HERE,
383 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, 376 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent,
384 weak_factory_.GetWeakPtr(), session_id, EVENT_AUDIO_ENDED)); 377 weak_factory_.GetWeakPtr(), session_id, EVENT_AUDIO_ENDED));
385 } 378 }
386 379
387 void SpeechRecognitionManagerImpl::OnRecognitionResult( 380 void SpeechRecognitionManagerImpl::OnRecognitionResult(
388 int session_id, const content::SpeechRecognitionResult& result) { 381 int session_id, const SpeechRecognitionResult& result) {
389 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 382 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
390 if (!SessionExists(session_id)) 383 if (!SessionExists(session_id))
391 return; 384 return;
392 385
393 if (SpeechRecognitionEventListener* delegate_listener = GetDelegateListener()) 386 if (SpeechRecognitionEventListener* delegate_listener = GetDelegateListener())
394 delegate_listener->OnRecognitionResult(session_id, result); 387 delegate_listener->OnRecognitionResult(session_id, result);
395 if (SpeechRecognitionEventListener* listener = GetListener(session_id)) 388 if (SpeechRecognitionEventListener* listener = GetListener(session_id))
396 listener->OnRecognitionResult(session_id, result); 389 listener->OnRecognitionResult(session_id, result);
397 } 390 }
398 391
399 void SpeechRecognitionManagerImpl::OnRecognitionError( 392 void SpeechRecognitionManagerImpl::OnRecognitionError(
400 int session_id, const content::SpeechRecognitionError& error) { 393 int session_id, const SpeechRecognitionError& error) {
401 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 394 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
402 if (!SessionExists(session_id)) 395 if (!SessionExists(session_id))
403 return; 396 return;
404 397
405 if (SpeechRecognitionEventListener* delegate_listener = GetDelegateListener()) 398 if (SpeechRecognitionEventListener* delegate_listener = GetDelegateListener())
406 delegate_listener->OnRecognitionError(session_id, error); 399 delegate_listener->OnRecognitionError(session_id, error);
407 if (SpeechRecognitionEventListener* listener = GetListener(session_id)) 400 if (SpeechRecognitionEventListener* listener = GetListener(session_id))
408 listener->OnRecognitionError(session_id, error); 401 listener->OnRecognitionError(session_id, error);
409 } 402 }
410 403
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 } 672 }
680 673
681 SpeechRecognitionManagerImpl::Session::Session() 674 SpeechRecognitionManagerImpl::Session::Session()
682 : id(kSessionIDInvalid), 675 : id(kSessionIDInvalid),
683 listener_is_active(true) { 676 listener_is_active(true) {
684 } 677 }
685 678
686 SpeechRecognitionManagerImpl::Session::~Session() { 679 SpeechRecognitionManagerImpl::Session::~Session() {
687 } 680 }
688 681
689 } // namespace speech 682 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698