| Index: chrome/browser/speech/speech_input_dispatcher_host.cc
|
| diff --git a/chrome/browser/speech/speech_input_dispatcher_host.cc b/chrome/browser/speech/speech_input_dispatcher_host.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8346cbe47a9f05ea432bd39f975a22d8ddbcea55
|
| --- /dev/null
|
| +++ b/chrome/browser/speech/speech_input_dispatcher_host.cc
|
| @@ -0,0 +1,101 @@
|
| +// Copyright (c) 2010 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 "chrome/browser/speech/speech_input_dispatcher_host.h"
|
| +
|
| +#include "chrome/browser/renderer_host/render_process_host.h"
|
| +#include "chrome/browser/renderer_host/render_view_host.h"
|
| +#include "chrome/browser/renderer_host/render_view_host_notification_task.h"
|
| +#include "chrome/browser/renderer_host/resource_message_filter.h"
|
| +#include "chrome/common/render_messages.h"
|
| +
|
| +namespace speech_input {
|
| +
|
| +SpeechInputManager::FactoryMethod*
|
| + SpeechInputDispatcherHost::manager_factory_ = &SpeechInputManager::Create;
|
| +
|
| +SpeechInputDispatcherHost::SpeechInputDispatcherHost(
|
| + int resource_message_filter_process_id)
|
| + : resource_message_filter_process_id_(resource_message_filter_process_id) {
|
| + // This is initialized by ResourceMessageFilter. 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() {
|
| +}
|
| +
|
| +SpeechInputManager* SpeechInputDispatcherHost::manager() {
|
| + if (!manager_.get()) {
|
| + manager_.reset((*manager_factory_)(this));
|
| + DCHECK(manager_.get());
|
| + }
|
| + return manager_.get();
|
| +}
|
| +
|
| +bool SpeechInputDispatcherHost::OnMessageReceived(
|
| + const IPC::Message& msg, bool* msg_was_ok) {
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP_EX(SpeechInputDispatcherHost, msg, *msg_was_ok)
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_SpeechInput_StartRecognition,
|
| + OnStartRecognition)
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_SpeechInput_CancelRecognition,
|
| + OnCancelRecognition)
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_SpeechInput_StopRecording,
|
| + OnStopRecording)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP()
|
| + return handled;
|
| +}
|
| +
|
| +void SpeechInputDispatcherHost::OnStartRecognition(int render_view_id) {
|
| + LOG(INFO) << "SpeechInputDispatcherHost: start recognition"
|
| + << render_view_id;
|
| + manager()->StartRecognition(render_view_id);
|
| +}
|
| +
|
| +void SpeechInputDispatcherHost::OnCancelRecognition(int render_view_id) {
|
| + LOG(INFO) << "SpeechInputDispatcherHost: cancel recognition"
|
| + << render_view_id;
|
| + manager()->CancelRecognition(render_view_id);
|
| +}
|
| +
|
| +void SpeechInputDispatcherHost::OnStopRecording(int render_view_id) {
|
| + LOG(INFO) << "SpeechInputDispatcherHost: stop recording"
|
| + << render_view_id;
|
| + manager()->StopRecording(render_view_id);
|
| +}
|
| +
|
| +void SpeechInputDispatcherHost::SendMessageToRenderView(IPC::Message* message,
|
| + int render_view_id) {
|
| + CallRenderViewHost(
|
| + resource_message_filter_process_id_, render_view_id,
|
| + &RenderViewHost::Send, message);
|
| +}
|
| +
|
| +
|
| +void SpeechInputDispatcherHost::SetRecognitionResult(int render_view_id,
|
| + const string16& result) {
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
|
| + SendMessageToRenderView(
|
| + new ViewMsg_SpeechInput_SetRecognitionResult(render_view_id, result),
|
| + render_view_id);
|
| +}
|
| +
|
| +void SpeechInputDispatcherHost::DidCompleteRecording(int render_view_id) {
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
|
| + SendMessageToRenderView(
|
| + new ViewMsg_SpeechInput_RecordingComplete(render_view_id),
|
| + render_view_id);
|
| +}
|
| +
|
| +void SpeechInputDispatcherHost::DidCompleteRecognition(int render_view_id) {
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
|
| + SendMessageToRenderView(
|
| + new ViewMsg_SpeechInput_RecognitionComplete(render_view_id),
|
| + render_view_id);
|
| +}
|
| +
|
| +} // namespace speech_input
|
|
|