Chromium Code Reviews| Index: content/renderer/gamepad_shared_memory_reader.cc |
| diff --git a/content/renderer/gamepad_shared_memory_reader.cc b/content/renderer/gamepad_shared_memory_reader.cc |
| index 0d84c3cc45e9bdfd331b24f4ec30974b15a7e840..2d7e5927ce645d870ea428c002e513e75ac3cab4 100644 |
| --- a/content/renderer/gamepad_shared_memory_reader.cc |
| +++ b/content/renderer/gamepad_shared_memory_reader.cc |
| @@ -10,6 +10,7 @@ |
| #include "content/public/renderer/render_thread.h" |
| #include "content/renderer/renderer_blink_platform_impl.h" |
| #include "ipc/ipc_sync_message_filter.h" |
| +#include "services/service_manager/public/cpp/interface_provider.h" |
| #include "third_party/WebKit/public/platform/WebGamepadListener.h" |
| #include "third_party/WebKit/public/platform/WebPlatformEventListener.h" |
| @@ -18,16 +19,30 @@ namespace content { |
| GamepadSharedMemoryReader::GamepadSharedMemoryReader(RenderThread* thread) |
| : RendererGamepadProvider(thread), |
| gamepad_hardware_buffer_(NULL), |
| - ever_interacted_with_(false) { |
| + ever_interacted_with_(false), |
| + binding_(this) { |
| + if (thread) { |
| + thread->GetRemoteInterfaces()->GetInterface( |
| + mojo::GetProxy(&gamepad_monitor_)); |
| + gamepad_monitor_->SetObserver(binding_.CreateInterfacePtrAndBind()); |
| + } |
| } |
| void GamepadSharedMemoryReader::SendStartMessage() { |
| - CHECK(RenderThread::Get()->Send(new GamepadHostMsg_StartPolling( |
| - &renderer_shared_memory_handle_))); |
| + if (gamepad_monitor_) { |
| + mojo::ScopedSharedBufferHandle buffer_handle; |
| + gamepad_monitor_->GamepadStartPolling(&buffer_handle); |
| + MojoResult result = mojo::UnwrapSharedMemoryHandle( |
|
blundell
2016/12/06 12:26:50
Can you add a TODO and bug for moving the renderer
ke.he
2016/12/07 08:05:10
Yes. we can do it independently in GamepadSharedMe
|
| + std::move(buffer_handle), &renderer_shared_memory_handle_, nullptr, |
| + nullptr); |
| + DCHECK_EQ(MOJO_RESULT_OK, result); |
|
blundell
2016/12/06 12:26:50
This should be CHECK_EQ to keep the intent of line
ke.he
2016/12/07 08:05:10
Done.
|
| + } |
| } |
| void GamepadSharedMemoryReader::SendStopMessage() { |
| - RenderThread::Get()->Send(new GamepadHostMsg_StopPolling()); |
| + if (gamepad_monitor_) { |
| + gamepad_monitor_->GamepadStopPolling(); |
| + } |
| } |
| void GamepadSharedMemoryReader::Start( |
| @@ -107,18 +122,7 @@ GamepadSharedMemoryReader::~GamepadSharedMemoryReader() { |
| StopIfObserving(); |
| } |
| -bool GamepadSharedMemoryReader::OnControlMessageReceived( |
| - const IPC::Message& message) { |
| - bool handled = true; |
| - IPC_BEGIN_MESSAGE_MAP(GamepadSharedMemoryReader, message) |
| - IPC_MESSAGE_HANDLER(GamepadMsg_GamepadConnected, OnGamepadConnected) |
| - IPC_MESSAGE_HANDLER(GamepadMsg_GamepadDisconnected, OnGamepadDisconnected) |
| - IPC_MESSAGE_UNHANDLED(handled = false) |
| - IPC_END_MESSAGE_MAP() |
| - return handled; |
| -} |
| - |
| -void GamepadSharedMemoryReader::OnGamepadConnected( |
| +void GamepadSharedMemoryReader::GamepadConnected( |
| int index, |
| const blink::WebGamepad& gamepad) { |
| // The browser already checks if the user actually interacted with a device. |
| @@ -128,7 +132,7 @@ void GamepadSharedMemoryReader::OnGamepadConnected( |
| listener()->didConnectGamepad(index, gamepad); |
| } |
| -void GamepadSharedMemoryReader::OnGamepadDisconnected( |
| +void GamepadSharedMemoryReader::GamepadDisconnected( |
| int index, |
| const blink::WebGamepad& gamepad) { |
| if (listener()) |