Index: content/browser/renderer_host/gamepad_browser_message_filter.cc |
diff --git a/content/browser/renderer_host/gamepad_browser_message_filter.cc b/content/browser/renderer_host/gamepad_browser_message_filter.cc |
index cd36e6ac5e8f6632bd57b8e106a5036e92894b52..d56a8865a0deda05d11784c4f107b11ce6b5435e 100644 |
--- a/content/browser/renderer_host/gamepad_browser_message_filter.cc |
+++ b/content/browser/renderer_host/gamepad_browser_message_filter.cc |
@@ -9,15 +9,16 @@ |
namespace content { |
-GamepadBrowserMessageFilter::GamepadBrowserMessageFilter() |
+GamepadBrowserMessageFilter::GamepadBrowserMessageFilter(IPC::Sender* sender) |
: BrowserMessageFilter(GamepadMsgStart), |
+ sender_(sender), |
is_started_(false) { |
} |
GamepadBrowserMessageFilter::~GamepadBrowserMessageFilter() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
if (is_started_) |
- GamepadService::GetInstance()->RemoveConsumer(); |
+ GamepadService::GetInstance()->RemoveConsumer(this); |
} |
bool GamepadBrowserMessageFilter::OnMessageReceived( |
@@ -34,12 +35,26 @@ bool GamepadBrowserMessageFilter::OnMessageReceived( |
return handled; |
} |
+void GamepadBrowserMessageFilter::OnGamepadConnected( |
+ unsigned index, |
+ const blink::WebGamepad& web_gamepad) { |
+ sender_->Send(new GamepadMsg_GamepadConnected( |
+ GamepadConnectionEventMessageParams(index, web_gamepad))); |
+} |
+ |
+void GamepadBrowserMessageFilter::OnGamepadDisconnected( |
+ unsigned index, |
+ const blink::WebGamepad& web_gamepad) { |
+ sender_->Send(new GamepadMsg_GamepadDisconnected( |
+ GamepadConnectionEventMessageParams(index, web_gamepad))); |
+} |
+ |
void GamepadBrowserMessageFilter::OnGamepadStartPolling( |
base::SharedMemoryHandle* renderer_handle) { |
GamepadService* service = GamepadService::GetInstance(); |
if (!is_started_) { |
is_started_ = true; |
- service->AddConsumer(); |
+ service->AddConsumer(this); |
*renderer_handle = service->GetSharedMemoryHandleForProcess(PeerHandle()); |
} else { |
// Currently we only expect the renderer to tell us once to start. |
@@ -52,7 +67,7 @@ void GamepadBrowserMessageFilter::OnGamepadStopPolling() { |
// arrive anyway if the renderer crashes, etc. |
if (is_started_) { |
is_started_ = false; |
- GamepadService::GetInstance()->RemoveConsumer(); |
+ GamepadService::GetInstance()->RemoveConsumer(this); |
} else { |
NOTREACHED(); |
} |