// Copyright 2016 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_INPUT_MOUSE_WHEEL_EVENT_QUEUE_H_ #define COMPONENTS_INPUT_MOUSE_WHEEL_EVENT_QUEUE_H_ #include <memory> #include "base/containers/circular_deque.h" #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "base/trace_event/trace_event.h" #include "components/input/event_with_latency_info.h" #include "base/component_export.h" #include "third_party/blink/public/common/input/web_input_event.h" #include "third_party/blink/public/mojom/input/input_event_result.mojom-shared.h" namespace input { // This class represents a single queued mouse wheel event. Its main use // is that it is reported via trace events. class QueuedWebMouseWheelEvent : public MouseWheelEventWithLatencyInfo { … }; // Interface with which MouseWheelEventQueue can forward mouse wheel events, // and dispatch mouse wheel event responses. class COMPONENT_EXPORT(INPUT) MouseWheelEventQueueClient { … }; // A queue for throttling and coalescing mouse wheel events. This class tracks // wheel events sent to the renderer and receives their ACKs. If the ACK // reports the event went unconsumed by the renderer, this class will generate // a sequence of gesture scroll events. // // Within a sequence, wheel events are initially forwarded using a blocking // dispatch. This means that further wheel events are queued and scroll event // generation will wait (i.e. block) until the in-flight wheel event is ACKed. // Once a wheel event goes unconsumed, and scrolling begins, dispatch of // subsequent wheel events becomes non-blocking. This means the wheel event // will be ACKed by the browser immediately after being dispatched. This will // cause scroll events to follow the wheel immediately and new wheel events // will be dispatched immediately rather than queueing. class COMPONENT_EXPORT(INPUT) MouseWheelEventQueue { … }; } // namespace input #endif // COMPONENTS_INPUT_MOUSE_WHEEL_EVENT_QUEUE_H_