summaryrefslogtreecommitdiffstats
path: root/content/browser
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser')
-rw-r--r--content/browser/download/download_manager_impl_unittest.cc2
-rw-r--r--content/browser/renderer_host/render_process_host_impl.cc6
-rw-r--r--content/browser/speech/input_tag_speech_dispatcher_host.cc107
-rw-r--r--content/browser/speech/input_tag_speech_dispatcher_host.h14
-rw-r--r--content/browser/speech/speech_recognition_browsertest.cc2
-rw-r--r--content/browser/speech/speech_recognition_dispatcher_host.cc98
-rw-r--r--content/browser/speech/speech_recognition_dispatcher_host.h19
-rw-r--r--content/browser/speech/speech_recognition_manager_impl.h2
8 files changed, 117 insertions, 133 deletions
diff --git a/content/browser/download/download_manager_impl_unittest.cc b/content/browser/download/download_manager_impl_unittest.cc
index 7817d3e..fba20f8 100644
--- a/content/browser/download/download_manager_impl_unittest.cc
+++ b/content/browser/download/download_manager_impl_unittest.cc
@@ -404,8 +404,6 @@ class MockBrowserContext : public BrowserContext {
MOCK_METHOD0(GetDownloadManagerDelegate, DownloadManagerDelegate*());
MOCK_METHOD0(GetGeolocationPermissionContext,
GeolocationPermissionContext* ());
- MOCK_METHOD0(GetSpeechRecognitionPreferences,
- SpeechRecognitionPreferences* ());
MOCK_METHOD0(GetSpecialStoragePolicy, quota::SpecialStoragePolicy*());
};
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 7bd9337..3162e8e 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -651,12 +651,10 @@ void RenderProcessHostImpl::CreateMessageFilters() {
#endif
#if defined(ENABLE_INPUT_SPEECH)
channel_->AddFilter(new InputTagSpeechDispatcherHost(
- IsGuest(), GetID(), storage_partition_impl_->GetURLRequestContext(),
- browser_context->GetSpeechRecognitionPreferences()));
+ IsGuest(), GetID(), storage_partition_impl_->GetURLRequestContext()));
#endif
channel_->AddFilter(new SpeechRecognitionDispatcherHost(
- GetID(), storage_partition_impl_->GetURLRequestContext(),
- browser_context->GetSpeechRecognitionPreferences()));
+ GetID(), storage_partition_impl_->GetURLRequestContext()));
channel_->AddFilter(new FileAPIMessageFilter(
GetID(),
storage_partition_impl_->GetURLRequestContext(),
diff --git a/content/browser/speech/input_tag_speech_dispatcher_host.cc b/content/browser/speech/input_tag_speech_dispatcher_host.cc
index 8c4acdb..4a3af54 100644
--- a/content/browser/speech/input_tag_speech_dispatcher_host.cc
+++ b/content/browser/speech/input_tag_speech_dispatcher_host.cc
@@ -8,10 +8,10 @@
#include "base/lazy_instance.h"
#include "content/browser/browser_plugin/browser_plugin_guest.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.h"
-#include "content/public/browser/speech_recognition_preferences.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"
@@ -24,23 +24,17 @@ namespace content {
InputTagSpeechDispatcherHost::InputTagSpeechDispatcherHost(
bool guest,
int render_process_id,
- net::URLRequestContextGetter* url_request_context_getter,
- SpeechRecognitionPreferences* recognition_preferences)
+ net::URLRequestContextGetter* url_request_context_getter)
: guest_(guest),
render_process_id_(render_process_id),
- url_request_context_getter_(url_request_context_getter),
- recognition_preferences_(recognition_preferences) {
+ url_request_context_getter_(url_request_context_getter) {
// 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.
+ // required (e.g. see the method |SpeechRecognitionManager::GetInstance()|) or
+ // add an Init() method.
}
InputTagSpeechDispatcherHost::~InputTagSpeechDispatcherHost() {
- if (SpeechRecognitionManager* sr_manager = manager())
- sr_manager->AbortAllSessionsForListener(this);
-}
-
-SpeechRecognitionManager* InputTagSpeechDispatcherHost::manager() {
- return SpeechRecognitionManager::GetInstance();
+ SpeechRecognitionManager::GetInstance()->AbortAllSessionsForListener(this);
}
bool InputTagSpeechDispatcherHost::OnMessageReceived(
@@ -59,20 +53,15 @@ bool InputTagSpeechDispatcherHost::OnMessageReceived(
return handled;
}
-void InputTagSpeechDispatcherHost::OnStartRecognition(
- const InputTagSpeechHostMsg_StartRecognition_Params& params) {
- if (guest_ && !BrowserThread::CurrentlyOn(BrowserThread::UI)) {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(
- &InputTagSpeechDispatcherHost::OnStartRecognition,
- this,
- params));
- return;
- }
-
- DCHECK(!guest_ || BrowserThread::CurrentlyOn(BrowserThread::UI));
+void InputTagSpeechDispatcherHost::OverrideThreadForMessage(
+ const IPC::Message& message,
+ BrowserThread::ID* thread) {
+ if (message.type() == InputTagSpeechHostMsg_StartRecognition::ID)
+ *thread = BrowserThread::UI;
+}
+void InputTagSpeechDispatcherHost::OnStartRecognition(
+ const InputTagSpeechHostMsg_StartRecognition_Params& params) {
InputTagSpeechHostMsg_StartRecognition_Params input_params(params);
int render_process_id = render_process_id_;
// The chrome layer is mostly oblivious to BrowserPlugin guests and so it
@@ -93,25 +82,28 @@ void InputTagSpeechDispatcherHost::OnStartRecognition(
input_params.render_view_id =
guest->embedder_web_contents()->GetRoutingID();
}
-
- if (guest_) {
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(
- &InputTagSpeechDispatcherHost::StartRecognitionOnIO,
- this,
- render_process_id,
- guest_render_view_id,
- input_params));
- } else {
- StartRecognitionOnIO(render_process_id, guest_render_view_id, params);
- }
+ 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) {
+ 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;
@@ -128,40 +120,37 @@ void InputTagSpeechDispatcherHost::StartRecognitionOnIO(
config.origin_url = params.origin_url;
config.initial_context = context;
config.url_request_context_getter = url_request_context_getter_.get();
- if (recognition_preferences_.get()) {
- config.filter_profanities = recognition_preferences_->FilterProfanities();
- } else {
- config.filter_profanities = false;
- }
+ config.filter_profanities = filter_profanities;
config.event_listener = this;
- int session_id = manager()->CreateSession(config);
+ int session_id = SpeechRecognitionManager::GetInstance()->CreateSession(
+ config);
DCHECK_NE(session_id, SpeechRecognitionManager::kSessionIDInvalid);
- manager()->StartSession(session_id);
+ SpeechRecognitionManager::GetInstance()->StartSession(session_id);
}
void InputTagSpeechDispatcherHost::OnCancelRecognition(int render_view_id,
int request_id) {
- int session_id = manager()->GetSession(render_process_id_,
- render_view_id,
- 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)
- manager()->AbortSession(session_id);
+ SpeechRecognitionManager::GetInstance()->AbortSession(session_id);
}
void InputTagSpeechDispatcherHost::OnStopRecording(int render_view_id,
int request_id) {
- int session_id = manager()->GetSession(render_process_id_,
- render_view_id,
- 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)
- manager()->StopAudioCaptureForSession(session_id);
+ if (session_id != SpeechRecognitionManager::kSessionIDInvalid) {
+ SpeechRecognitionManager::GetInstance()->StopAudioCaptureForSession(
+ session_id);
+ }
}
// -------- SpeechRecognitionEventListener interface implementation -----------
@@ -171,7 +160,7 @@ void InputTagSpeechDispatcherHost::OnRecognitionResults(
DVLOG(1) << "InputTagSpeechDispatcherHost::OnRecognitionResults enter";
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
int render_view_id = context.guest_render_view_id ?
context.guest_render_view_id : context.render_view_id;
@@ -186,7 +175,7 @@ void InputTagSpeechDispatcherHost::OnAudioEnd(int session_id) {
DVLOG(1) << "InputTagSpeechDispatcherHost::OnAudioEnd enter";
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
int render_view_id = context.guest_render_view_id ?
context.guest_render_view_id : context.render_view_id;
Send(new InputTagSpeechMsg_RecordingComplete(render_view_id,
@@ -197,7 +186,7 @@ void InputTagSpeechDispatcherHost::OnAudioEnd(int session_id) {
void InputTagSpeechDispatcherHost::OnRecognitionEnd(int session_id) {
DVLOG(1) << "InputTagSpeechDispatcherHost::OnRecognitionEnd enter";
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
int render_view_id = context.guest_render_view_id ?
context.guest_render_view_id : context.render_view_id;
Send(new InputTagSpeechMsg_RecognitionComplete(render_view_id,
diff --git a/content/browser/speech/input_tag_speech_dispatcher_host.h b/content/browser/speech/input_tag_speech_dispatcher_host.h
index 5593ac6..cb0bf3b 100644
--- a/content/browser/speech/input_tag_speech_dispatcher_host.h
+++ b/content/browser/speech/input_tag_speech_dispatcher_host.h
@@ -18,7 +18,6 @@ struct InputTagSpeechHostMsg_StartRecognition_Params;
namespace content {
class SpeechRecognitionManager;
-class SpeechRecognitionPreferences;
// InputTagSpeechDispatcherHost is a delegate for Speech API messages used by
// RenderMessageFilter. Basically it acts as a proxy, relaying the events coming
@@ -31,8 +30,7 @@ class CONTENT_EXPORT InputTagSpeechDispatcherHost
InputTagSpeechDispatcherHost(
bool guest,
int render_process_id,
- net::URLRequestContextGetter* url_request_context_getter,
- SpeechRecognitionPreferences* recognition_preferences);
+ net::URLRequestContextGetter* url_request_context_getter);
// SpeechRecognitionEventListener methods.
virtual void OnRecognitionStart(int session_id) OVERRIDE;
@@ -55,6 +53,9 @@ class CONTENT_EXPORT InputTagSpeechDispatcherHost
// BrowserMessageFilter implementation.
virtual bool OnMessageReceived(const IPC::Message& message,
bool* message_was_ok) OVERRIDE;
+ virtual void OverrideThreadForMessage(
+ const IPC::Message& message,
+ BrowserThread::ID* thread) OVERRIDE;
private:
virtual ~InputTagSpeechDispatcherHost();
@@ -67,15 +68,12 @@ class CONTENT_EXPORT InputTagSpeechDispatcherHost
void StartRecognitionOnIO(
int render_process_id,
int guest_render_view_id,
- const InputTagSpeechHostMsg_StartRecognition_Params& params);
- // Returns the speech recognition manager to forward events to, creating one
- // if needed.
- SpeechRecognitionManager* manager();
+ const InputTagSpeechHostMsg_StartRecognition_Params& params,
+ bool filter_profanities);
bool guest_;
int render_process_id_;
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
- scoped_refptr<SpeechRecognitionPreferences> recognition_preferences_;
DISALLOW_COPY_AND_ASSIGN(InputTagSpeechDispatcherHost);
};
diff --git a/content/browser/speech/speech_recognition_browsertest.cc b/content/browser/speech/speech_recognition_browsertest.cc
index 8c7eaae..9c9c823 100644
--- a/content/browser/speech/speech_recognition_browsertest.cc
+++ b/content/browser/speech/speech_recognition_browsertest.cc
@@ -54,7 +54,7 @@ class SpeechRecognitionBrowserTest : public ContentBrowserTest {
web_contents->GetRenderViewHost()->ForwardMouseEvent(mouse_event);
mouse_event.type = WebKit::WebInputEvent::MouseUp;
web_contents->GetRenderViewHost()->ForwardMouseEvent(mouse_event);
- fake_speech_recognition_manager_.recognition_started_event().Wait();
+ fake_speech_recognition_manager_.WaitForRecognitionStarted();
// We should wait for a navigation event, raised by the test page JS code
// upon the onwebkitspeechchange event, in all cases except when the
diff --git a/content/browser/speech/speech_recognition_dispatcher_host.cc b/content/browser/speech/speech_recognition_dispatcher_host.cc
index 7f20ca4..e506675 100644
--- a/content/browser/speech/speech_recognition_dispatcher_host.cc
+++ b/content/browser/speech/speech_recognition_dispatcher_host.cc
@@ -7,42 +7,27 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/lazy_instance.h"
+#include "content/browser/speech/speech_recognition_manager_impl.h"
#include "content/common/speech_recognition_messages.h"
-#include "content/public/browser/speech_recognition_manager.h"
-#include "content/public/browser/speech_recognition_preferences.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"
#include "content/public/common/content_switches.h"
namespace content {
-SpeechRecognitionManager* SpeechRecognitionDispatcherHost::manager_for_tests_;
-
-void SpeechRecognitionDispatcherHost::SetManagerForTests(
- SpeechRecognitionManager* manager) {
- manager_for_tests_ = manager;
-}
SpeechRecognitionDispatcherHost::SpeechRecognitionDispatcherHost(
int render_process_id,
- net::URLRequestContextGetter* context_getter,
- SpeechRecognitionPreferences* recognition_preferences)
+ net::URLRequestContextGetter* context_getter)
: render_process_id_(render_process_id),
- context_getter_(context_getter),
- recognition_preferences_(recognition_preferences) {
+ context_getter_(context_getter) {
// 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.
+ // required (e.g. see the method |SpeechRecognitionManager::GetInstance()|) or
+ // add an Init() method.
}
SpeechRecognitionDispatcherHost::~SpeechRecognitionDispatcherHost() {
- if (SpeechRecognitionManager* sr_manager = manager())
- sr_manager->AbortAllSessionsForListener(this);
-}
-
-SpeechRecognitionManager* SpeechRecognitionDispatcherHost::manager() {
- if (manager_for_tests_)
- return manager_for_tests_;
-
- return SpeechRecognitionManager::GetInstance();
+ SpeechRecognitionManager::GetInstance()->AbortAllSessionsForListener(this);
}
bool SpeechRecognitionDispatcherHost::OnMessageReceived(
@@ -61,9 +46,31 @@ bool SpeechRecognitionDispatcherHost::OnMessageReceived(
return handled;
}
+void SpeechRecognitionDispatcherHost::OverrideThreadForMessage(
+ const IPC::Message& message,
+ BrowserThread::ID* thread) {
+ if (message.type() == SpeechRecognitionHostMsg_StartRequest::ID)
+ *thread = BrowserThread::UI;
+}
+
void SpeechRecognitionDispatcherHost::OnStartRequest(
const SpeechRecognitionHostMsg_StartRequest_Params& params) {
-
+ bool filter_profanities =
+ SpeechRecognitionManagerImpl::GetInstance() &&
+ SpeechRecognitionManagerImpl::GetInstance()->delegate() &&
+ SpeechRecognitionManagerImpl::GetInstance()->delegate()->
+ FilterProfanities(render_process_id_);
+
+ BrowserThread::PostTask(
+ BrowserThread::IO,
+ FROM_HERE,
+ base::Bind(&SpeechRecognitionDispatcherHost::OnStartRequestOnIO,
+ this, params, filter_profanities));
+}
+
+void SpeechRecognitionDispatcherHost::OnStartRequestOnIO(
+ const SpeechRecognitionHostMsg_StartRequest_Params& params,
+ bool filter_profanities) {
SpeechRecognitionSessionContext context;
context.context_name = params.origin_url;
context.render_process_id = render_process_id_;
@@ -79,84 +86,81 @@ void SpeechRecognitionDispatcherHost::OnStartRequest(
config.origin_url = params.origin_url;
config.initial_context = context;
config.url_request_context_getter = context_getter_.get();
- if (recognition_preferences_.get()) {
- config.filter_profanities = recognition_preferences_->FilterProfanities();
- } else {
- config.filter_profanities = false;
- }
+ config.filter_profanities = filter_profanities;
config.continuous = params.continuous;
config.interim_results = params.interim_results;
config.event_listener = this;
- int session_id = manager()->CreateSession(config);
+ int session_id = SpeechRecognitionManager::GetInstance()->CreateSession(
+ config);
DCHECK_NE(session_id, SpeechRecognitionManager::kSessionIDInvalid);
- manager()->StartSession(session_id);
+ SpeechRecognitionManager::GetInstance()->StartSession(session_id);
}
void SpeechRecognitionDispatcherHost::OnAbortRequest(int render_view_id,
int request_id) {
- int session_id = manager()->GetSession(render_process_id_,
- render_view_id,
- 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)
- manager()->AbortSession(session_id);
+ SpeechRecognitionManager::GetInstance()->AbortSession(session_id);
}
void SpeechRecognitionDispatcherHost::OnStopCaptureRequest(
int render_view_id, int request_id) {
- int session_id = manager()->GetSession(render_process_id_,
- render_view_id,
- 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)
- manager()->StopAudioCaptureForSession(session_id);
+ if (session_id != SpeechRecognitionManager::kSessionIDInvalid) {
+ SpeechRecognitionManager::GetInstance()->StopAudioCaptureForSession(
+ session_id);
+ }
}
// -------- SpeechRecognitionEventListener interface implementation -----------
void SpeechRecognitionDispatcherHost::OnRecognitionStart(int session_id) {
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
Send(new SpeechRecognitionMsg_Started(context.render_view_id,
context.request_id));
}
void SpeechRecognitionDispatcherHost::OnAudioStart(int session_id) {
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
Send(new SpeechRecognitionMsg_AudioStarted(context.render_view_id,
context.request_id));
}
void SpeechRecognitionDispatcherHost::OnSoundStart(int session_id) {
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
Send(new SpeechRecognitionMsg_SoundStarted(context.render_view_id,
context.request_id));
}
void SpeechRecognitionDispatcherHost::OnSoundEnd(int session_id) {
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
Send(new SpeechRecognitionMsg_SoundEnded(context.render_view_id,
context.request_id));
}
void SpeechRecognitionDispatcherHost::OnAudioEnd(int session_id) {
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
Send(new SpeechRecognitionMsg_AudioEnded(context.render_view_id,
context.request_id));
}
void SpeechRecognitionDispatcherHost::OnRecognitionEnd(int session_id) {
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
Send(new SpeechRecognitionMsg_Ended(context.render_view_id,
context.request_id));
}
@@ -165,7 +169,7 @@ void SpeechRecognitionDispatcherHost::OnRecognitionResults(
int session_id,
const SpeechRecognitionResults& results) {
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
Send(new SpeechRecognitionMsg_ResultRetrieved(context.render_view_id,
context.request_id,
results));
@@ -175,7 +179,7 @@ void SpeechRecognitionDispatcherHost::OnRecognitionError(
int session_id,
const SpeechRecognitionError& error) {
const SpeechRecognitionSessionContext& context =
- manager()->GetSessionContext(session_id);
+ SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
Send(new SpeechRecognitionMsg_ErrorOccurred(context.render_view_id,
context.request_id,
error));
diff --git a/content/browser/speech/speech_recognition_dispatcher_host.h b/content/browser/speech/speech_recognition_dispatcher_host.h
index dea822d..1bc12a1 100644
--- a/content/browser/speech/speech_recognition_dispatcher_host.h
+++ b/content/browser/speech/speech_recognition_dispatcher_host.h
@@ -16,7 +16,6 @@ struct SpeechRecognitionHostMsg_StartRequest_Params;
namespace content {
class SpeechRecognitionManager;
-class SpeechRecognitionPreferences;
struct SpeechRecognitionResult;
// SpeechRecognitionDispatcherHost is a delegate for Speech API messages used by
@@ -29,8 +28,7 @@ class CONTENT_EXPORT SpeechRecognitionDispatcherHost
public:
SpeechRecognitionDispatcherHost(
int render_process_id,
- net::URLRequestContextGetter* context_getter,
- SpeechRecognitionPreferences* recognition_preferences);
+ net::URLRequestContextGetter* context_getter);
// SpeechRecognitionEventListener methods.
virtual void OnRecognitionStart(int session_id) OVERRIDE;
@@ -53,26 +51,23 @@ class CONTENT_EXPORT SpeechRecognitionDispatcherHost
// BrowserMessageFilter implementation.
virtual bool OnMessageReceived(const IPC::Message& message,
bool* message_was_ok) OVERRIDE;
-
- // Singleton manager setter useful for tests.
- static void SetManagerForTests(SpeechRecognitionManager* manager);
+ virtual void OverrideThreadForMessage(
+ const IPC::Message& message,
+ BrowserThread::ID* thread) OVERRIDE;
private:
virtual ~SpeechRecognitionDispatcherHost();
void OnStartRequest(
const SpeechRecognitionHostMsg_StartRequest_Params& params);
+ void OnStartRequestOnIO(
+ const SpeechRecognitionHostMsg_StartRequest_Params& params,
+ bool filter_profanities);
void OnAbortRequest(int render_view_id, int request_id);
void OnStopCaptureRequest(int render_view_id, int request_id);
- // Returns the speech recognition manager to forward requests to.
- SpeechRecognitionManager* manager();
-
int render_process_id_;
scoped_refptr<net::URLRequestContextGetter> context_getter_;
- scoped_refptr<SpeechRecognitionPreferences> recognition_preferences_;
-
- static SpeechRecognitionManager* manager_for_tests_;
DISALLOW_COPY_AND_ASSIGN(SpeechRecognitionDispatcherHost);
};
diff --git a/content/browser/speech/speech_recognition_manager_impl.h b/content/browser/speech/speech_recognition_manager_impl.h
index bf86ac1..0432570 100644
--- a/content/browser/speech/speech_recognition_manager_impl.h
+++ b/content/browser/speech/speech_recognition_manager_impl.h
@@ -93,6 +93,8 @@ class CONTENT_EXPORT SpeechRecognitionManagerImpl :
virtual void OnAudioLevelsChange(int session_id, float volume,
float noise_volume) OVERRIDE;
+ SpeechRecognitionManagerDelegate* delegate() const { return delegate_.get(); }
+
protected:
// BrowserMainLoop is the only one allowed to istantiate and free us.
friend class BrowserMainLoop;