| 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 e6e05f66e6856340712585cf7b6254652089acbe..370f8eeb56ddcb22700c4ab31c3249798af83088 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_CURRENTLY_ON(BrowserThread::IO);
|
| if (is_started_)
|
| - GamepadService::GetInstance()->RemoveConsumer();
|
| + GamepadService::GetInstance()->RemoveConsumer(this);
|
| }
|
|
|
| bool GamepadBrowserMessageFilter::OnMessageReceived(
|
| @@ -34,28 +35,31 @@ bool GamepadBrowserMessageFilter::OnMessageReceived(
|
| return handled;
|
| }
|
|
|
| +void GamepadBrowserMessageFilter::OnGamepadConnected(
|
| + unsigned index,
|
| + const blink::WebGamepad& web_gamepad) {
|
| + sender_->Send(new GamepadMsg_GamepadConnected(index, web_gamepad));
|
| +}
|
| +
|
| +void GamepadBrowserMessageFilter::OnGamepadDisconnected(
|
| + unsigned index,
|
| + const blink::WebGamepad& web_gamepad) {
|
| + sender_->Send(new GamepadMsg_GamepadDisconnected(index, web_gamepad));
|
| +}
|
| +
|
| void GamepadBrowserMessageFilter::OnGamepadStartPolling(
|
| base::SharedMemoryHandle* renderer_handle) {
|
| GamepadService* service = GamepadService::GetInstance();
|
| - if (!is_started_) {
|
| - is_started_ = true;
|
| - service->AddConsumer();
|
| - *renderer_handle = service->GetSharedMemoryHandleForProcess(PeerHandle());
|
| - } else {
|
| - // Currently we only expect the renderer to tell us once to start.
|
| - NOTREACHED();
|
| - }
|
| + CHECK(!is_started_);
|
| + is_started_ = true;
|
| + service->ConsumerBecameActive(this);
|
| + *renderer_handle = service->GetSharedMemoryHandleForProcess(PeerHandle());
|
| }
|
|
|
| void GamepadBrowserMessageFilter::OnGamepadStopPolling() {
|
| - // TODO(scottmg): Probably get rid of this message. We can't trust it will
|
| - // arrive anyway if the renderer crashes, etc.
|
| - if (is_started_) {
|
| - is_started_ = false;
|
| - GamepadService::GetInstance()->RemoveConsumer();
|
| - } else {
|
| - NOTREACHED();
|
| - }
|
| + CHECK(is_started_);
|
| + is_started_ = false;
|
| + GamepadService::GetInstance()->ConsumerBecameInactive(this);
|
| }
|
|
|
| } // namespace content
|
|
|