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

Side by Side Diff: chrome/browser/speech/speech_input_manager.cc

Issue 3167011: Revert 56006 - Revert 56002 - Adds SpeechInputManagerImpl to handle requests ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 4 months 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
« no previous file with comments | « chrome/browser/speech/speech_input_manager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/browser/speech/speech_input_manager.h" 5 #include "chrome/browser/speech/speech_input_manager.h"
6 6
7 #include "base/ref_counted.h"
8 #include "chrome/browser/speech/speech_recognizer.h"
9 #include <map>
10
7 namespace speech_input { 11 namespace speech_input {
8 12
9 SpeechInputManager* SpeechInputManager::Create(Listener* listener) { 13 class SpeechInputManagerImpl : public SpeechInputManager,
10 // TODO(satish): Implement a real speech input manager. 14 public SpeechRecognizerDelegate {
11 return NULL; 15 public:
16 explicit SpeechInputManagerImpl(SpeechInputManagerDelegate* delegate);
17 virtual ~SpeechInputManagerImpl();
18
19 // SpeechInputManager methods.
20 void StartRecognition(int render_view_id);
21 void CancelRecognition(int render_view_id);
22 void StopRecording(int render_view_id);
23
24 // SpeechRecognizer::Delegate methods.
25 void SetRecognitionResult(int render_view_id, bool error,
26 const string16& value);
27 void DidCompleteRecording(int render_view_id);
28 void DidCompleteRecognition(int render_view_id);
29
30 private:
31 SpeechInputManagerDelegate* delegate_;
32 typedef std::map<int, scoped_refptr<SpeechRecognizer> > SpeechRecognizerMap;
33 SpeechRecognizerMap recognizers_;
34 int recording_render_view_id_;
35 };
36
37 SpeechInputManager* SpeechInputManager::Create(
38 SpeechInputManagerDelegate* delegate) {
39 return new SpeechInputManagerImpl(delegate);
40 }
41
42 SpeechInputManagerImpl::SpeechInputManagerImpl(
43 SpeechInputManagerDelegate* delegate)
44 : delegate_(delegate),
45 recording_render_view_id_(0) {
46 }
47
48 SpeechInputManagerImpl::~SpeechInputManagerImpl() {
49 while (recognizers_.begin() != recognizers_.end())
50 recognizers_.begin()->second->CancelRecognition();
51 }
52
53 void SpeechInputManagerImpl::StartRecognition(int render_view_id) {
54 // Make sure we are not already doing recognition for this render view.
55 DCHECK(recognizers_.find(render_view_id) == recognizers_.end());
56 if (recognizers_.find(render_view_id) != recognizers_.end())
57 return;
58
59 // If we are currently recording audio for another caller, abort that now.
60 if (recording_render_view_id_)
61 CancelRecognition(recording_render_view_id_);
62
63 recording_render_view_id_ = render_view_id;
64 recognizers_[render_view_id] = new SpeechRecognizer(this, render_view_id);
65 recognizers_[render_view_id]->StartRecording();
66 }
67
68 void SpeechInputManagerImpl::CancelRecognition(int render_view_id) {
69 DCHECK(recognizers_.find(render_view_id) != recognizers_.end());
70 if (recognizers_.find(render_view_id) != recognizers_.end()) {
71 recognizers_[render_view_id]->CancelRecognition();
72 }
73 }
74
75 void SpeechInputManagerImpl::StopRecording(int render_view_id) {
76 DCHECK(recognizers_.find(render_view_id) != recognizers_.end());
77 if (recognizers_.find(render_view_id) != recognizers_.end()) {
78 recognizers_[render_view_id]->StopRecording();
79 }
80 }
81
82 void SpeechInputManagerImpl::SetRecognitionResult(int render_view_id,
83 bool error,
84 const string16& value) {
85 delegate_->SetRecognitionResult(render_view_id, (error ? string16() : value));
86 }
87
88 void SpeechInputManagerImpl::DidCompleteRecording(int render_view_id) {
89 DCHECK(recording_render_view_id_ == render_view_id);
90 recording_render_view_id_ = 0;
91 delegate_->DidCompleteRecording(render_view_id);
92 }
93
94 void SpeechInputManagerImpl::DidCompleteRecognition(int render_view_id) {
95 recognizers_.erase(render_view_id);
96 delegate_->DidCompleteRecognition(render_view_id);
12 } 97 }
13 98
14 } // namespace speech_input 99 } // namespace speech_input
OLDNEW
« no previous file with comments | « chrome/browser/speech/speech_input_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698