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

Unified Diff: content/browser/speech/input_tag_speech_dispatcher_host.cc

Issue 260903010: Start removing support for the experimental x-webkit-speech API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Don't touch histograms.xml Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698