summaryrefslogtreecommitdiffstats
path: root/gfx/layers/ipc/PAPZInputBridge.ipdl
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/layers/ipc/PAPZInputBridge.ipdl')
-rw-r--r--gfx/layers/ipc/PAPZInputBridge.ipdl88
1 files changed, 88 insertions, 0 deletions
diff --git a/gfx/layers/ipc/PAPZInputBridge.ipdl b/gfx/layers/ipc/PAPZInputBridge.ipdl
new file mode 100644
index 0000000000..7564757b28
--- /dev/null
+++ b/gfx/layers/ipc/PAPZInputBridge.ipdl
@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+include "ipc/nsGUIEventIPC.h";
+
+using mozilla::LayoutDeviceIntPoint from "Units.h";
+using struct mozilla::layers::ScrollableLayerGuid from "mozilla/layers/ScrollableLayerGuid.h";
+using struct mozilla::layers::APZEventResult from "mozilla/layers/APZInputBridge.h";
+using struct mozilla::layers::APZHandledResult from "mozilla/layers/APZInputBridge.h";
+
+using mozilla::EventMessage from "mozilla/EventForwards.h";
+using class mozilla::MultiTouchInput from "InputData.h";
+using class mozilla::MouseInput from "InputData.h";
+using class mozilla::PanGestureInput from "InputData.h";
+using class mozilla::PinchGestureInput from "InputData.h";
+using class mozilla::TapGestureInput from "InputData.h";
+using class mozilla::ScrollWheelInput from "InputData.h";
+using class mozilla::KeyboardInput from "InputData.h";
+
+using mozilla::layers::LayersId from "mozilla/layers/LayersTypes.h";
+
+namespace mozilla {
+namespace layers {
+
+/**
+ * This protocol is used to send input events from the UI process to the
+ * GPU process for handling by APZ. There is one instance per top-level
+ * compositor, or in other words, one instance per concrete APZCTreeManager
+ * instance. The child side lives on the controller thread in the UI process,
+ * ie the main thread on most platforms, but the Android UI thread on Android.
+ * The parent side lives on the main thread in the GPU process. If there is no
+ * GPU process, then this protocol is not instantiated.
+ */
+[ParentProc=GPU, ChildProc=Parent]
+sync protocol PAPZInputBridge
+{
+parent:
+ // The following messages are used to
+ // implement the ReceiveInputEvent methods
+
+ sync ReceiveMultiTouchInputEvent(MultiTouchInput aEvent, bool aWantsCallback)
+ returns(APZEventResult aOutResult, MultiTouchInput aOutEvent);
+
+ sync ReceiveMouseInputEvent(MouseInput aEvent, bool aWantsCallback)
+ returns (APZEventResult aOutResult,
+ MouseInput aOutEvent);
+
+ sync ReceivePanGestureInputEvent(PanGestureInput aEvent, bool aWantsCallback)
+ returns (APZEventResult aOutResult,
+ PanGestureInput aOutEvent);
+
+ sync ReceivePinchGestureInputEvent(PinchGestureInput aEvent,
+ bool aWantsCallback)
+ returns (APZEventResult aOutResult,
+ PinchGestureInput aOutEvent);
+
+ sync ReceiveTapGestureInputEvent(TapGestureInput aEvent, bool aWantsCallback)
+ returns (APZEventResult aOutResult,
+ TapGestureInput aOutEvent);
+
+ sync ReceiveScrollWheelInputEvent(ScrollWheelInput aEvent,
+ bool aWantsCallback)
+ returns (APZEventResult aOutResult,
+ ScrollWheelInput aOutEvent);
+
+ sync ReceiveKeyboardInputEvent(KeyboardInput aEvent, bool aWantsCallback)
+ returns (APZEventResult aOutResult,
+ KeyboardInput aOutEvent);
+
+ async UpdateWheelTransaction(LayoutDeviceIntPoint aRefPoint,
+ EventMessage aEventMessage,
+ ScrollableLayerGuid? aTargetGuid);
+
+ sync ProcessUnhandledEvent(LayoutDeviceIntPoint aRefPoint)
+ returns (LayoutDeviceIntPoint aOutRefPoint,
+ ScrollableLayerGuid aOutTargetGuid,
+ uint64_t aOutFocusSequenceNumber,
+ LayersId aOutLayersId);
+
+child:
+ async CallInputBlockCallback(uint64_t aInputBlockId,
+ APZHandledResult aHandledResult);
+};
+
+} // namespace gfx
+} // namespace mozilla