Index: content/browser/speech/input_tag_speech_dispatcher_host.cc |
diff --git a/content/browser/speech/input_tag_speech_dispatcher_host.cc b/content/browser/speech/input_tag_speech_dispatcher_host.cc |
deleted file mode 100644 |
index dd6a4b2666ce0bfddfe1c1804125a9d4bdc78718..0000000000000000000000000000000000000000 |
--- a/content/browser/speech/input_tag_speech_dispatcher_host.cc |
+++ /dev/null |
@@ -1,240 +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/input_tag_speech_dispatcher_host.h" |
- |
-#include "base/bind.h" |
-#include "base/lazy_instance.h" |
-#include "content/browser/browser_plugin/browser_plugin_guest.h" |
-#include "content/browser/child_process_security_policy_impl.h" |
-#include "content/browser/renderer_host/render_view_host_impl.h" |
-#include "content/browser/speech/speech_recognition_manager_impl.h" |
-#include "content/browser/web_contents/web_contents_impl.h" |
-#include "content/common/speech_recognition_messages.h" |
-#include "content/public/browser/speech_recognition_manager_delegate.h" |
-#include "content/public/browser/speech_recognition_session_config.h" |
-#include "content/public/browser/speech_recognition_session_context.h" |
- |
-namespace { |
-const uint32 kMaxHypothesesForSpeechInputTag = 6; |
-} |
- |
-namespace content { |
- |
-InputTagSpeechDispatcherHost::InputTagSpeechDispatcherHost( |
- bool is_guest, |
- int render_process_id, |
- net::URLRequestContextGetter* url_request_context_getter) |
- : BrowserMessageFilter(SpeechRecognitionMsgStart), |
- is_guest_(is_guest), |
- render_process_id_(render_process_id), |
- url_request_context_getter_(url_request_context_getter), |
- weak_factory_(this) { |
- // Do not add any non-trivial initialization here, instead do it lazily when |
- // required (e.g. see the method |SpeechRecognitionManager::GetInstance()|) or |
- // add an Init() method. |
-} |
- |
-InputTagSpeechDispatcherHost::~InputTagSpeechDispatcherHost() { |
- SpeechRecognitionManager::GetInstance()->AbortAllSessionsForRenderProcess( |
- render_process_id_); |
-} |
- |
-base::WeakPtr<InputTagSpeechDispatcherHost> |
-InputTagSpeechDispatcherHost::AsWeakPtr() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- return weak_factory_.GetWeakPtr(); |
-} |
- |
-bool InputTagSpeechDispatcherHost::OnMessageReceived( |
- const IPC::Message& message, bool* message_was_ok) { |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP_EX(InputTagSpeechDispatcherHost, message, |
- *message_was_ok) |
- IPC_MESSAGE_HANDLER(InputTagSpeechHostMsg_StartRecognition, |
- OnStartRecognition) |
- IPC_MESSAGE_HANDLER(InputTagSpeechHostMsg_CancelRecognition, |
- OnCancelRecognition) |
- IPC_MESSAGE_HANDLER(InputTagSpeechHostMsg_StopRecording, |
- OnStopRecording) |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- return handled; |
-} |
- |
-void InputTagSpeechDispatcherHost::OverrideThreadForMessage( |
- const IPC::Message& message, |
- BrowserThread::ID* thread) { |
- if (message.type() == InputTagSpeechHostMsg_StartRecognition::ID) |
- *thread = BrowserThread::UI; |
-} |
- |
-void InputTagSpeechDispatcherHost::OnChannelClosing() { |
- weak_factory_.InvalidateWeakPtrs(); |
-} |
- |
-void InputTagSpeechDispatcherHost::OnStartRecognition( |
- const InputTagSpeechHostMsg_StartRecognition_Params& params) { |
- InputTagSpeechHostMsg_StartRecognition_Params input_params(params); |
- int render_process_id = render_process_id_; |
- |
- // Check that the origin specified by the renderer process is one |
- // that it is allowed to access. |
- if (params.origin_url != "null" && |
- !ChildProcessSecurityPolicyImpl::GetInstance()->CanRequestURL( |
- render_process_id, GURL(params.origin_url))) { |
- LOG(ERROR) << "ITSDH::OnStartRecognition, disallowed origin: " |
- << params.origin_url; |
- return; |
- } |
- |
- // The chrome layer is mostly oblivious to BrowserPlugin guests and so it |
- // cannot correctly place the speech bubble relative to a guest. Thus, we |
- // set up the speech recognition context relative to the embedder. |
- int guest_render_view_id = MSG_ROUTING_NONE; |
- if (is_guest_) { |
- RenderViewHostImpl* render_view_host = |
- RenderViewHostImpl::FromID(render_process_id_, params.render_view_id); |
- WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( |
- WebContents::FromRenderViewHost(render_view_host)); |
- BrowserPluginGuest* guest = web_contents->GetBrowserPluginGuest(); |
- input_params.element_rect.set_origin( |
- guest->GetScreenCoordinates(input_params.element_rect.origin())); |
- guest_render_view_id = params.render_view_id; |
- render_process_id = |
- guest->embedder_web_contents()->GetRenderProcessHost()->GetID(); |
- input_params.render_view_id = |
- guest->embedder_web_contents()->GetRoutingID(); |
- } |
- bool filter_profanities = |
- SpeechRecognitionManagerImpl::GetInstance() && |
- SpeechRecognitionManagerImpl::GetInstance()->delegate() && |
- SpeechRecognitionManagerImpl::GetInstance()->delegate()-> |
- FilterProfanities(render_process_id_); |
- |
- BrowserThread::PostTask( |
- BrowserThread::IO, FROM_HERE, |
- base::Bind( |
- &InputTagSpeechDispatcherHost::StartRecognitionOnIO, |
- this, |
- render_process_id, |
- guest_render_view_id, |
- input_params, |
- filter_profanities)); |
-} |
- |
-void InputTagSpeechDispatcherHost::StartRecognitionOnIO( |
- int render_process_id, |
- int guest_render_view_id, |
- const InputTagSpeechHostMsg_StartRecognition_Params& params, |
- bool filter_profanities) { |
- SpeechRecognitionSessionContext context; |
- context.render_process_id = render_process_id; |
- context.render_view_id = params.render_view_id; |
- context.guest_render_view_id = guest_render_view_id; |
- // Keep context.embedder_render_process_id and context.embedder_render_view_id |
- // unset. |
- context.request_id = params.request_id; |
- context.element_rect = params.element_rect; |
- |
- SpeechRecognitionSessionConfig config; |
- config.language = params.language; |
- if (!params.grammar.empty()) { |
- config.grammars.push_back(SpeechRecognitionGrammar(params.grammar)); |
- } |
- config.max_hypotheses = kMaxHypothesesForSpeechInputTag; |
- config.origin_url = params.origin_url; |
- config.initial_context = context; |
- config.url_request_context_getter = url_request_context_getter_.get(); |
- config.filter_profanities = filter_profanities; |
- config.event_listener = AsWeakPtr(); |
- |
- int session_id = SpeechRecognitionManager::GetInstance()->CreateSession( |
- config); |
- DCHECK_NE(session_id, SpeechRecognitionManager::kSessionIDInvalid); |
- SpeechRecognitionManager::GetInstance()->StartSession(session_id); |
-} |
- |
-void InputTagSpeechDispatcherHost::OnCancelRecognition(int render_view_id, |
- int request_id) { |
- int session_id = SpeechRecognitionManager::GetInstance()->GetSession( |
- render_process_id_, render_view_id, request_id); |
- |
- // The renderer might provide an invalid |request_id| if the session was not |
- // started as expected, e.g., due to unsatisfied security requirements. |
- if (session_id != SpeechRecognitionManager::kSessionIDInvalid) |
- SpeechRecognitionManager::GetInstance()->AbortSession(session_id); |
-} |
- |
-void InputTagSpeechDispatcherHost::OnStopRecording(int render_view_id, |
- int request_id) { |
- int session_id = SpeechRecognitionManager::GetInstance()->GetSession( |
- render_process_id_, render_view_id, request_id); |
- |
- // The renderer might provide an invalid |request_id| if the session was not |
- // started as expected, e.g., due to unsatisfied security requirements. |
- if (session_id != SpeechRecognitionManager::kSessionIDInvalid) { |
- SpeechRecognitionManager::GetInstance()->StopAudioCaptureForSession( |
- session_id); |
- } |
-} |
- |
-// -------- SpeechRecognitionEventListener interface implementation ----------- |
-void InputTagSpeechDispatcherHost::OnRecognitionResults( |
- int session_id, |
- const SpeechRecognitionResults& results) { |
- DVLOG(1) << "InputTagSpeechDispatcherHost::OnRecognitionResults enter"; |
- |
- const SpeechRecognitionSessionContext& context = |
- SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); |
- |
- int render_view_id = |
- context.guest_render_view_id == MSG_ROUTING_NONE ? |
- context.render_view_id : context.guest_render_view_id; |
- Send(new InputTagSpeechMsg_SetRecognitionResults( |
- render_view_id, |
- context.request_id, |
- results)); |
- DVLOG(1) << "InputTagSpeechDispatcherHost::OnRecognitionResults exit"; |
-} |
- |
-void InputTagSpeechDispatcherHost::OnAudioEnd(int session_id) { |
- DVLOG(1) << "InputTagSpeechDispatcherHost::OnAudioEnd enter"; |
- |
- const SpeechRecognitionSessionContext& context = |
- SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); |
- int render_view_id = |
- context.guest_render_view_id == MSG_ROUTING_NONE ? |
- context.render_view_id : context.guest_render_view_id; |
- Send(new InputTagSpeechMsg_RecordingComplete(render_view_id, |
- context.request_id)); |
- DVLOG(1) << "InputTagSpeechDispatcherHost::OnAudioEnd exit"; |
-} |
- |
-void InputTagSpeechDispatcherHost::OnRecognitionEnd(int session_id) { |
- DVLOG(1) << "InputTagSpeechDispatcherHost::OnRecognitionEnd enter"; |
- const SpeechRecognitionSessionContext& context = |
- SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); |
- int render_view_id = |
- context.guest_render_view_id == MSG_ROUTING_NONE ? |
- context.render_view_id : context.guest_render_view_id; |
- Send(new InputTagSpeechMsg_RecognitionComplete(render_view_id, |
- context.request_id)); |
- DVLOG(1) << "InputTagSpeechDispatcherHost::OnRecognitionEnd exit"; |
-} |
- |
-// The events below are currently not used by x-webkit-speech implementation. |
-void InputTagSpeechDispatcherHost::OnRecognitionStart(int session_id) {} |
-void InputTagSpeechDispatcherHost::OnAudioStart(int session_id) {} |
-void InputTagSpeechDispatcherHost::OnSoundStart(int session_id) {} |
-void InputTagSpeechDispatcherHost::OnSoundEnd(int session_id) {} |
-void InputTagSpeechDispatcherHost::OnRecognitionError( |
- int session_id, |
- const SpeechRecognitionError& error) {} |
-void InputTagSpeechDispatcherHost::OnAudioLevelsChange( |
- int session_id, float volume, float noise_volume) {} |
-void InputTagSpeechDispatcherHost::OnEnvironmentEstimationComplete( |
- int session_id) {} |
- |
-} // namespace content |