Index: content/browser/speech/speech_input_dispatcher_host.cc |
diff --git a/content/browser/speech/speech_input_dispatcher_host.cc b/content/browser/speech/speech_input_dispatcher_host.cc |
deleted file mode 100644 |
index 38839690188fea0b2e5ca0fa494a14109b52a511..0000000000000000000000000000000000000000 |
--- a/content/browser/speech/speech_input_dispatcher_host.cc |
+++ /dev/null |
@@ -1,239 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "content/browser/speech/speech_input_dispatcher_host.h" |
- |
-#include "base/lazy_instance.h" |
-#include "content/browser/speech/speech_input_manager_impl.h" |
-#include "content/browser/speech/speech_recognizer_impl.h" |
-#include "content/common/speech_input_messages.h" |
-#include "content/public/browser/speech_input_preferences.h" |
- |
-using content::BrowserThread; |
- |
-namespace speech_input { |
- |
-//----------------------------- SpeechInputCallers ----------------------------- |
- |
-// A singleton class to map the tuple |
-// (render-process-id, render-view-id, requestid) to a single ID which is passed |
-// through rest of the speech code. |
-class SpeechInputDispatcherHost::SpeechInputCallers { |
- public: |
- // Creates a new ID for a given tuple. |
- int CreateId(int render_process_id, int render_view_id, int request_id); |
- |
- // Returns the ID for a tuple assuming the ID was created earlier. |
- int GetId(int render_process_id, int render_view_id, int request_id); |
- |
- // Removes the ID and associated tuple from the map. |
- void RemoveId(int id); |
- |
- // Getters for the various tuple elements for the given ID. |
- int render_process_id(int id); |
- int render_view_id(int id); |
- int request_id(int id); |
- |
- private: |
- struct CallerInfo { |
- int render_process_id; |
- int render_view_id; |
- int request_id; |
- }; |
- friend struct base::DefaultLazyInstanceTraits<SpeechInputCallers>; |
- |
- SpeechInputCallers(); |
- |
- std::map<int, CallerInfo> callers_; |
- int next_id_; |
-}; |
- |
-static base::LazyInstance<SpeechInputDispatcherHost::SpeechInputCallers> |
- g_speech_input_callers = LAZY_INSTANCE_INITIALIZER; |
- |
-SpeechInputDispatcherHost::SpeechInputCallers::SpeechInputCallers() |
- : next_id_(1) { |
-} |
- |
-int SpeechInputDispatcherHost::SpeechInputCallers::GetId(int render_process_id, |
- int render_view_id, |
- int request_id) { |
- for (std::map<int, CallerInfo>::iterator it = callers_.begin(); |
- it != callers_.end(); it++) { |
- const CallerInfo& item = it->second; |
- if (item.render_process_id == render_process_id && |
- item.render_view_id == render_view_id && |
- item.request_id == request_id) { |
- return it->first; |
- } |
- } |
- |
- // Not finding an entry here is valid since a cancel/stop may have been issued |
- // by the renderer and before it received our response the user may have |
- // clicked the button to stop again. The caller of this method should take |
- // care of this case. |
- return 0; |
-} |
- |
-int SpeechInputDispatcherHost::SpeechInputCallers::CreateId( |
- int render_process_id, |
- int render_view_id, |
- int request_id) { |
- CallerInfo info; |
- info.render_process_id = render_process_id; |
- info.render_view_id = render_view_id; |
- info.request_id = request_id; |
- callers_[next_id_] = info; |
- return next_id_++; |
-} |
- |
-void SpeechInputDispatcherHost::SpeechInputCallers::RemoveId(int id) { |
- callers_.erase(id); |
-} |
- |
-int SpeechInputDispatcherHost::SpeechInputCallers::render_process_id(int id) { |
- return callers_[id].render_process_id; |
-} |
- |
-int SpeechInputDispatcherHost::SpeechInputCallers::render_view_id(int id) { |
- return callers_[id].render_view_id; |
-} |
- |
-int SpeechInputDispatcherHost::SpeechInputCallers::request_id(int id) { |
- return callers_[id].request_id; |
-} |
- |
-//-------------------------- SpeechInputDispatcherHost ------------------------- |
- |
-SpeechInputManagerImpl* SpeechInputDispatcherHost::manager_; |
- |
-void SpeechInputDispatcherHost::set_manager(SpeechInputManagerImpl* manager) { |
- manager_ = manager; |
-} |
- |
-SpeechInputDispatcherHost::SpeechInputDispatcherHost( |
- int render_process_id, |
- net::URLRequestContextGetter* context_getter, |
- content::SpeechInputPreferences* speech_input_preferences, |
- AudioManager* audio_manager) |
- : render_process_id_(render_process_id), |
- may_have_pending_requests_(false), |
- context_getter_(context_getter), |
- speech_input_preferences_(speech_input_preferences), |
- audio_manager_(audio_manager) { |
- // This is initialized by Browser. Do not add any non-trivial |
- // initialization here, instead do it lazily when required (e.g. see the |
- // method |manager()|) or add an Init() method. |
-} |
- |
-SpeechInputDispatcherHost::~SpeechInputDispatcherHost() { |
- // If the renderer crashed for some reason or if we didn't receive a proper |
- // Cancel/Stop call for an existing session, cancel such active sessions now. |
- // We first check if this dispatcher received any speech IPC requst so that |
- // we don't end up creating the speech input manager for web pages which don't |
- // use speech input. |
- if (may_have_pending_requests_) |
- manager()->CancelAllRequestsWithDelegate(this); |
-} |
- |
-SpeechInputManagerImpl* SpeechInputDispatcherHost::manager() { |
- if (manager_) |
- return manager_; |
-#if defined(ENABLE_INPUT_SPEECH) |
- return SpeechInputManagerImpl::GetInstance(); |
-#else |
- return NULL; |
-#endif |
-} |
- |
-bool SpeechInputDispatcherHost::OnMessageReceived( |
- const IPC::Message& message, bool* message_was_ok) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP_EX(SpeechInputDispatcherHost, message, |
- *message_was_ok) |
- IPC_MESSAGE_HANDLER(SpeechInputHostMsg_StartRecognition, |
- OnStartRecognition) |
- IPC_MESSAGE_HANDLER(SpeechInputHostMsg_CancelRecognition, |
- OnCancelRecognition) |
- IPC_MESSAGE_HANDLER(SpeechInputHostMsg_StopRecording, |
- OnStopRecording) |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- if (handled) |
- may_have_pending_requests_ = true; |
- return handled; |
-} |
- |
-void SpeechInputDispatcherHost::OnStartRecognition( |
- const SpeechInputHostMsg_StartRecognition_Params ¶ms) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- int caller_id = g_speech_input_callers.Get().CreateId( |
- render_process_id_, params.render_view_id, params.request_id); |
- manager()->StartRecognition(this, caller_id, |
- render_process_id_, |
- params.render_view_id, params.element_rect, |
- params.language, params.grammar, |
- params.origin_url, |
- context_getter_.get(), |
- speech_input_preferences_.get()); |
-} |
- |
-void SpeechInputDispatcherHost::OnCancelRecognition(int render_view_id, |
- int request_id) { |
- int caller_id = g_speech_input_callers.Get().GetId( |
- render_process_id_, render_view_id, request_id); |
- if (caller_id) { |
- manager()->CancelRecognition(caller_id); |
- // Request sequence ended so remove mapping. |
- g_speech_input_callers.Get().RemoveId(caller_id); |
- } |
-} |
- |
-void SpeechInputDispatcherHost::OnStopRecording(int render_view_id, |
- int request_id) { |
- int caller_id = g_speech_input_callers.Get().GetId( |
- render_process_id_, render_view_id, request_id); |
- if (caller_id) |
- manager()->StopRecording(caller_id); |
-} |
- |
-void SpeechInputDispatcherHost::SetRecognitionResult( |
- int caller_id, const content::SpeechInputResult& result) { |
- VLOG(1) << "SpeechInputDispatcherHost::SetRecognitionResult enter"; |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- int caller_render_view_id = |
- g_speech_input_callers.Get().render_view_id(caller_id); |
- int caller_request_id = g_speech_input_callers.Get().request_id(caller_id); |
- Send(new SpeechInputMsg_SetRecognitionResult(caller_render_view_id, |
- caller_request_id, |
- result)); |
- VLOG(1) << "SpeechInputDispatcherHost::SetRecognitionResult exit"; |
-} |
- |
-void SpeechInputDispatcherHost::DidCompleteRecording(int caller_id) { |
- VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecording enter"; |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- int caller_render_view_id = |
- g_speech_input_callers.Get().render_view_id(caller_id); |
- int caller_request_id = g_speech_input_callers.Get().request_id(caller_id); |
- Send(new SpeechInputMsg_RecordingComplete(caller_render_view_id, |
- caller_request_id)); |
- VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecording exit"; |
-} |
- |
-void SpeechInputDispatcherHost::DidCompleteRecognition(int caller_id) { |
- VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecognition enter"; |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- int caller_render_view_id = |
- g_speech_input_callers.Get().render_view_id(caller_id); |
- int caller_request_id = g_speech_input_callers.Get().request_id(caller_id); |
- Send(new SpeechInputMsg_RecognitionComplete(caller_render_view_id, |
- caller_request_id)); |
- // Request sequence ended, so remove mapping. |
- g_speech_input_callers.Get().RemoveId(caller_id); |
- VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecognition exit"; |
-} |
- |
-} // namespace speech_input |