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

Unified Diff: content/renderer/gamepad_shared_memory_reader.cc

Issue 2522843002: Convert Gamepad IPC messages into mojo interface. (Closed)
Patch Set: remove useless Fuzztraits<blink::WebGamepad> Created 4 years, 1 month 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
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(
+ std::move(buffer_handle), &renderer_shared_memory_handle_, nullptr,
+ nullptr);
+ DCHECK_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 +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())

Powered by Google App Engine
This is Rietveld 408576698