OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/renderer_host/gamepad_browser_message_filter.h" | 5 #include "content/browser/renderer_host/gamepad_browser_message_filter.h" |
6 | 6 |
| 7 #include "content/browser/gamepad/gamepad_service.h" |
7 #include "content/common/gamepad_messages.h" | 8 #include "content/common/gamepad_messages.h" |
8 | 9 |
9 GamepadBrowserMessageFilter::GamepadBrowserMessageFilter() { | 10 namespace content { |
| 11 |
| 12 GamepadBrowserMessageFilter::GamepadBrowserMessageFilter( |
| 13 content::RenderProcessHost* render_process_host) |
| 14 : gamepad_service_(NULL), |
| 15 render_process_host_(render_process_host) { |
10 } | 16 } |
11 | 17 |
12 GamepadBrowserMessageFilter::~GamepadBrowserMessageFilter() { | 18 GamepadBrowserMessageFilter::~GamepadBrowserMessageFilter() { |
13 } | 19 } |
14 | 20 |
15 bool GamepadBrowserMessageFilter::OnMessageReceived( | 21 bool GamepadBrowserMessageFilter::OnMessageReceived( |
16 const IPC::Message& message, | 22 const IPC::Message& message, |
17 bool* message_was_ok) { | 23 bool* message_was_ok) { |
18 bool handled = true; | 24 bool handled = true; |
19 IPC_BEGIN_MESSAGE_MAP_EX(GamepadBrowserMessageFilter, | 25 IPC_BEGIN_MESSAGE_MAP_EX(GamepadBrowserMessageFilter, |
20 message, | 26 message, |
21 *message_was_ok) | 27 *message_was_ok) |
22 IPC_MESSAGE_HANDLER(GamepadHostMsg_StartPolling, OnGamepadStartPolling) | 28 IPC_MESSAGE_HANDLER(GamepadHostMsg_StartPolling, OnGamepadStartPolling) |
23 IPC_MESSAGE_HANDLER(GamepadHostMsg_StopPolling, OnGamepadStopPolling) | 29 IPC_MESSAGE_HANDLER(GamepadHostMsg_StopPolling, OnGamepadStopPolling) |
24 IPC_MESSAGE_UNHANDLED(handled = false) | 30 IPC_MESSAGE_UNHANDLED(handled = false) |
25 IPC_END_MESSAGE_MAP_EX() | 31 IPC_END_MESSAGE_MAP_EX() |
26 return handled; | 32 return handled; |
27 } | 33 } |
28 | 34 |
29 void GamepadBrowserMessageFilter::OnGamepadStartPolling( | 35 void GamepadBrowserMessageFilter::OnGamepadStartPolling( |
30 base::SharedMemoryHandle* renderer_handle) { | 36 base::SharedMemoryHandle* renderer_handle) { |
31 if (!provider_) { | 37 if (!gamepad_service_) |
32 provider_ = new content::GamepadProvider(NULL); | 38 gamepad_service_ = GamepadService::GetInstance(); |
33 provider_->Start(); | 39 gamepad_service_->Start(NULL, render_process_host_); |
34 } | 40 *renderer_handle = gamepad_service_->GetSharedMemoryHandle(peer_handle()); |
35 *renderer_handle = provider_->GetRendererSharedMemoryHandle(peer_handle()); | |
36 } | 41 } |
37 | 42 |
38 void GamepadBrowserMessageFilter::OnGamepadStopPolling() { | 43 void GamepadBrowserMessageFilter::OnGamepadStopPolling() { |
39 // TODO(scottmg) Remove this message entirely? | 44 // TODO(scottmg): Probably get rid of this message. We can't trust it will |
40 // Stop is currently handled by the refcount on provider_. | 45 // arrive anyway if the renderer crashes, etc. |
41 } | 46 } |
| 47 |
| 48 } // namespace content |
OLD | NEW |