Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1403)

Unified Diff: content/renderer/gamepad_shared_memory_reader.cc

Issue 2522843002: Convert Gamepad IPC messages into mojo interface. (Closed)
Patch Set: code rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/gamepad_shared_memory_reader.h ('k') | device/gamepad/gamepad_provider.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..f48a0fb2ff7925477d44e7848b397bc25eb44c01 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,32 @@ 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);
+ // TODO(heke): Use mojo::SharedBuffer rather than base::SharedMemory. See
+ // crbug.com/670655.
+ MojoResult result = mojo::UnwrapSharedMemoryHandle(
+ std::move(buffer_handle), &renderer_shared_memory_handle_, nullptr,
+ nullptr);
+ CHECK_EQ(MOJO_RESULT_OK, result);
+ }
}
void GamepadSharedMemoryReader::SendStopMessage() {
- RenderThread::Get()->Send(new GamepadHostMsg_StopPolling());
+ if (gamepad_monitor_) {
+ gamepad_monitor_->GamepadStopPolling();
+ }
}
void GamepadSharedMemoryReader::Start(
@@ -107,18 +124,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 +134,7 @@ void GamepadSharedMemoryReader::OnGamepadConnected(
listener()->didConnectGamepad(index, gamepad);
}
-void GamepadSharedMemoryReader::OnGamepadDisconnected(
+void GamepadSharedMemoryReader::GamepadDisconnected(
int index,
const blink::WebGamepad& gamepad) {
if (listener())
« no previous file with comments | « content/renderer/gamepad_shared_memory_reader.h ('k') | device/gamepad/gamepad_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698