// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_MOUSE_WHEEL_PHASE_HANDLER_H_ #define CONTENT_BROWSER_RENDERER_HOST_INPUT_MOUSE_WHEEL_PHASE_HANDLER_H_ #include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "base/timer/timer.h" #include "content/browser/renderer_host/render_widget_host_delegate.h" #include "third_party/blink/public/common/input/web_mouse_wheel_event.h" #include "third_party/blink/public/mojom/input/input_event_result.mojom-shared.h" namespace content { class RenderWidgetHostViewBase; // The duration after which a synthetic wheel with zero deltas and // phase = |kPhaseEnded| will be sent after the last wheel event. constexpr base::TimeDelta kDefaultMouseWheelLatchingTransaction = …; // Maximum allowed difference between coordinates of two mouse wheel events in // the same scroll sequence. const double kWheelLatchingSlopRegion = …; // On ChromeOS wheel events don't have phase information; However, whenever the // user puts down their fingers on touchpad a GFC is received and at the end of // touchpad scrolling when the user lifts their fingers a GFS is received. This // enum tracks the current state of the touchpad scrolling by listening to GFC // and GFS events. enum TouchpadScrollPhaseState { … }; enum class FirstScrollUpdateAckState { … }; // The MouseWheelPhaseHandler is responsible for adding the proper phase to // wheel events. Phase information is necessary for wheel scrolling since it // shows the start and end of a scrolling sequence. class MouseWheelPhaseHandler { … }; } // namespace content #endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_MOUSE_WHEEL_PHASE_HANDLER_H_