author Marian-Vasile Laza <>
Mon, 20 Mar 2023 21:17:55 +0200
changeset 657270 ef283da5146eca3004d1ab219a5fca8ebb246ef9
parent 651745 85dbc47c6fb06e9f2fb5d27d6bd017a81de402ba
permissions -rw-r--r--
Backed out changeset 18595f6364ea (bug 1822521) for wpt failures on popover-focus-child-dialog.html. CLOSED TREE

/* -*- 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 */

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.
sync protocol PAPZInputBridge
  // 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);

  async CallInputBlockCallback(uint64_t aInputBlockId,
                               APZHandledResult aHandledResult);

} // namespace gfx
} // namespace mozilla