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

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

Issue 5711001: Add a new GetInstance() method for remaining files with singleton classes under chrome/browser. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 10 years 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) 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_dispatcher_host.h" 5 #include "chrome/browser/speech/speech_input_dispatcher_host.h"
6 6
7 #include "base/singleton.h" 7 #include "base/lazy_instance.h"
8 #include "chrome/browser/renderer_host/render_process_host.h" 8 #include "chrome/browser/renderer_host/render_process_host.h"
9 #include "chrome/browser/renderer_host/render_view_host.h" 9 #include "chrome/browser/renderer_host/render_view_host.h"
10 #include "chrome/browser/renderer_host/render_view_host_notification_task.h" 10 #include "chrome/browser/renderer_host/render_view_host_notification_task.h"
11 #include "chrome/browser/renderer_host/resource_message_filter.h" 11 #include "chrome/browser/renderer_host/resource_message_filter.h"
12 #include "chrome/common/render_messages.h" 12 #include "chrome/common/render_messages.h"
13 13
14 namespace speech_input { 14 namespace speech_input {
15 15
16 //----------------------------- SpeechInputCallers ----------------------------- 16 //----------------------------- SpeechInputCallers -----------------------------
17 17
(...skipping 15 matching lines...) Expand all
33 int render_process_id(int id); 33 int render_process_id(int id);
34 int render_view_id(int id); 34 int render_view_id(int id);
35 int request_id(int id); 35 int request_id(int id);
36 36
37 private: 37 private:
38 struct CallerInfo { 38 struct CallerInfo {
39 int render_process_id; 39 int render_process_id;
40 int render_view_id; 40 int render_view_id;
41 int request_id; 41 int request_id;
42 }; 42 };
43 friend struct DefaultSingletonTraits<SpeechInputCallers>; 43 friend struct base::DefaultLazyInstanceTraits<SpeechInputCallers>;
44 44
45 SpeechInputCallers(); 45 SpeechInputCallers();
46 46
47 std::map<int, CallerInfo> callers_; 47 std::map<int, CallerInfo> callers_;
48 int next_id_; 48 int next_id_;
49 }; 49 };
50 50
51 static base::LazyInstance<SpeechInputDispatcherHost::SpeechInputCallers>
52 g_speech_input_callers(base::LINKER_INITIALIZED);
53
51 SpeechInputDispatcherHost::SpeechInputCallers::SpeechInputCallers() 54 SpeechInputDispatcherHost::SpeechInputCallers::SpeechInputCallers()
52 : next_id_(1) { 55 : next_id_(1) {
53 } 56 }
54 57
55 int SpeechInputDispatcherHost::SpeechInputCallers::GetId(int render_process_id, 58 int SpeechInputDispatcherHost::SpeechInputCallers::GetId(int render_process_id,
56 int render_view_id, 59 int render_view_id,
57 int request_id) { 60 int request_id) {
58 for (std::map<int, CallerInfo>::iterator it = callers_.begin(); 61 for (std::map<int, CallerInfo>::iterator it = callers_.begin();
59 it != callers_.end(); it++) { 62 it != callers_.end(); it++) {
60 const CallerInfo& item = it->second; 63 const CallerInfo& item = it->second;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 return callers_[id].request_id; 103 return callers_[id].request_id;
101 } 104 }
102 105
103 //-------------------------- SpeechInputDispatcherHost ------------------------- 106 //-------------------------- SpeechInputDispatcherHost -------------------------
104 107
105 SpeechInputManager::AccessorMethod* 108 SpeechInputManager::AccessorMethod*
106 SpeechInputDispatcherHost::manager_accessor_ = &SpeechInputManager::Get; 109 SpeechInputDispatcherHost::manager_accessor_ = &SpeechInputManager::Get;
107 110
108 SpeechInputDispatcherHost::SpeechInputDispatcherHost( 111 SpeechInputDispatcherHost::SpeechInputDispatcherHost(
109 int resource_message_filter_process_id) 112 int resource_message_filter_process_id)
110 : resource_message_filter_process_id_(resource_message_filter_process_id), 113 : resource_message_filter_process_id_(resource_message_filter_process_id) {
111 callers_(Singleton<SpeechInputCallers>::get()) {
112 // This is initialized by ResourceMessageFilter. Do not add any non-trivial 114 // This is initialized by ResourceMessageFilter. Do not add any non-trivial
113 // initialization here, instead do it lazily when required (e.g. see the 115 // initialization here, instead do it lazily when required (e.g. see the
114 // method |manager()|) or add an Init() method. 116 // method |manager()|) or add an Init() method.
115 } 117 }
116 118
117 SpeechInputDispatcherHost::~SpeechInputDispatcherHost() { 119 SpeechInputDispatcherHost::~SpeechInputDispatcherHost() {
118 } 120 }
119 121
120 SpeechInputManager* SpeechInputDispatcherHost::manager() { 122 SpeechInputManager* SpeechInputDispatcherHost::manager() {
121 return (*manager_accessor_)(); 123 return (*manager_accessor_)();
(...skipping 14 matching lines...) Expand all
136 IPC_END_MESSAGE_MAP() 138 IPC_END_MESSAGE_MAP()
137 return handled; 139 return handled;
138 } 140 }
139 141
140 void SpeechInputDispatcherHost::OnStartRecognition( 142 void SpeechInputDispatcherHost::OnStartRecognition(
141 int render_view_id, 143 int render_view_id,
142 int request_id, 144 int request_id,
143 const gfx::Rect& element_rect, 145 const gfx::Rect& element_rect,
144 const std::string& language, 146 const std::string& language,
145 const std::string& grammar) { 147 const std::string& grammar) {
146 int caller_id = callers_->CreateId(resource_message_filter_process_id_, 148 int caller_id = g_speech_input_callers.Get().CreateId(
147 render_view_id, request_id); 149 resource_message_filter_process_id_, render_view_id, request_id);
148 manager()->StartRecognition(this, caller_id, 150 manager()->StartRecognition(this, caller_id,
149 resource_message_filter_process_id_, 151 resource_message_filter_process_id_,
150 render_view_id, element_rect, 152 render_view_id, element_rect,
151 language, grammar); 153 language, grammar);
152 } 154 }
153 155
154 void SpeechInputDispatcherHost::OnCancelRecognition(int render_view_id, 156 void SpeechInputDispatcherHost::OnCancelRecognition(int render_view_id,
155 int request_id) { 157 int request_id) {
156 int caller_id = callers_->GetId(resource_message_filter_process_id_, 158 int caller_id = g_speech_input_callers.Get().GetId(
157 render_view_id, request_id); 159 resource_message_filter_process_id_, render_view_id, request_id);
158 if (caller_id) { 160 if (caller_id) {
159 manager()->CancelRecognition(caller_id); 161 manager()->CancelRecognition(caller_id);
160 callers_->RemoveId(caller_id); // Request sequence ended so remove mapping. 162 // Request sequence ended so remove mapping.
163 g_speech_input_callers.Get().RemoveId(caller_id);
161 } 164 }
162 } 165 }
163 166
164 void SpeechInputDispatcherHost::OnStopRecording(int render_view_id, 167 void SpeechInputDispatcherHost::OnStopRecording(int render_view_id,
165 int request_id) { 168 int request_id) {
166 int caller_id = callers_->GetId(resource_message_filter_process_id_, 169 int caller_id = g_speech_input_callers.Get().GetId(
167 render_view_id, request_id); 170 resource_message_filter_process_id_, render_view_id, request_id);
168 if (caller_id) 171 if (caller_id)
169 manager()->StopRecording(caller_id); 172 manager()->StopRecording(caller_id);
170 } 173 }
171 174
172 void SpeechInputDispatcherHost::SendMessageToRenderView(IPC::Message* message, 175 void SpeechInputDispatcherHost::SendMessageToRenderView(IPC::Message* message,
173 int render_view_id) { 176 int render_view_id) {
174 CallRenderViewHost( 177 CallRenderViewHost(
175 resource_message_filter_process_id_, render_view_id, 178 resource_message_filter_process_id_, render_view_id,
176 &RenderViewHost::Send, message); 179 &RenderViewHost::Send, message);
177 } 180 }
178 181
179 void SpeechInputDispatcherHost::SetRecognitionResult( 182 void SpeechInputDispatcherHost::SetRecognitionResult(
180 int caller_id, const SpeechInputResultArray& result) { 183 int caller_id, const SpeechInputResultArray& result) {
181 VLOG(1) << "SpeechInputDispatcherHost::SetRecognitionResult enter"; 184 VLOG(1) << "SpeechInputDispatcherHost::SetRecognitionResult enter";
182 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 185 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
183 int caller_render_view_id = callers_->render_view_id(caller_id); 186 int caller_render_view_id =
184 int caller_request_id = callers_->request_id(caller_id); 187 g_speech_input_callers.Get().render_view_id(caller_id);
188 int caller_request_id = g_speech_input_callers.Get().request_id(caller_id);
185 SendMessageToRenderView( 189 SendMessageToRenderView(
186 new ViewMsg_SpeechInput_SetRecognitionResult(caller_render_view_id, 190 new ViewMsg_SpeechInput_SetRecognitionResult(caller_render_view_id,
187 caller_request_id, 191 caller_request_id,
188 result), 192 result),
189 caller_render_view_id); 193 caller_render_view_id);
190 VLOG(1) << "SpeechInputDispatcherHost::SetRecognitionResult exit"; 194 VLOG(1) << "SpeechInputDispatcherHost::SetRecognitionResult exit";
191 } 195 }
192 196
193 void SpeechInputDispatcherHost::DidCompleteRecording(int caller_id) { 197 void SpeechInputDispatcherHost::DidCompleteRecording(int caller_id) {
194 VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecording enter"; 198 VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecording enter";
195 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 199 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
196 int caller_render_view_id = callers_->render_view_id(caller_id); 200 int caller_render_view_id =
197 int caller_request_id = callers_->request_id(caller_id); 201 g_speech_input_callers.Get().render_view_id(caller_id);
202 int caller_request_id = g_speech_input_callers.Get().request_id(caller_id);
198 SendMessageToRenderView( 203 SendMessageToRenderView(
199 new ViewMsg_SpeechInput_RecordingComplete(caller_render_view_id, 204 new ViewMsg_SpeechInput_RecordingComplete(caller_render_view_id,
200 caller_request_id), 205 caller_request_id),
201 caller_render_view_id); 206 caller_render_view_id);
202 VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecording exit"; 207 VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecording exit";
203 } 208 }
204 209
205 void SpeechInputDispatcherHost::DidCompleteRecognition(int caller_id) { 210 void SpeechInputDispatcherHost::DidCompleteRecognition(int caller_id) {
206 VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecognition enter"; 211 VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecognition enter";
207 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 212 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
208 int caller_render_view_id = callers_->render_view_id(caller_id); 213 int caller_render_view_id =
209 int caller_request_id = callers_->request_id(caller_id); 214 g_speech_input_callers.Get().render_view_id(caller_id);
215 int caller_request_id = g_speech_input_callers.Get().request_id(caller_id);
210 SendMessageToRenderView( 216 SendMessageToRenderView(
211 new ViewMsg_SpeechInput_RecognitionComplete(caller_render_view_id, 217 new ViewMsg_SpeechInput_RecognitionComplete(caller_render_view_id,
212 caller_request_id), 218 caller_request_id),
213 caller_render_view_id); 219 caller_render_view_id);
214 callers_->RemoveId(caller_id); // Request sequence ended, so remove mapping. 220 // Request sequence ended, so remove mapping.
221 g_speech_input_callers.Get().RemoveId(caller_id);
215 VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecognition exit"; 222 VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecognition exit";
216 } 223 }
217 224
218 } // namespace speech_input 225 } // namespace speech_input
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698