#include "ui/events/event_utils.h"
#include <limits>
#include <map>
#include <string_view>
#include <vector>
#include "base/check.h"
#include "base/metrics/histogram_macros.h"
#include "base/notreached.h"
#include "base/time/time.h"
#include "base/trace_event/trace_id_helper.h"
#include "base/trace_event/typed_macros.h"
#include "base/types/cxx23_to_underlying.h"
#include "build/build_config.h"
#include "third_party/perfetto/include/perfetto/tracing/string_helpers.h"
#include "third_party/perfetto/include/perfetto/tracing/track.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "ui/events/base_event_utils.h"
#include "ui/events/event_constants.h"
#if BUILDFLAG(IS_WIN)
#include <windows.h>
#include "ui/events/win/events_win_utils.h"
#endif
namespace ui {
namespace {
int g_custom_event_types = …;
#define UMA_HISTOGRAM_EVENT_LATENCY_TIMES(name, sample) …
void RecordEventLatencyTrace(perfetto::StaticString name,
base::TimeTicks time_stamp,
base::TimeTicks current_time) { … }
}
std::unique_ptr<Event> EventFromNative(const PlatformEvent& native_event) { … }
int RegisterCustomEventType() { … }
bool ShouldDefaultToNaturalScroll() { … }
display::Display::TouchSupport GetInternalDisplayTouchSupport() { … }
void ComputeEventLatencyOS(const PlatformEvent& native_event) { … }
void ComputeEventLatencyOS(EventType type,
base::TimeTicks time_stamp,
base::TimeTicks current_time) { … }
#if BUILDFLAG(IS_WIN)
void ComputeEventLatencyOSFromTOUCHINPUT(EventType event_type,
TOUCHINPUT touch_input,
base::TimeTicks current_time) {
base::TimeTicks time_stamp =
EventLatencyTimeFromTickClock(touch_input.dwTime, current_time);
ComputeEventLatencyOS(event_type, time_stamp, current_time);
}
void ComputeEventLatencyOSFromPOINTER_INFO(EventType event_type,
POINTER_INFO pointer_info,
base::TimeTicks current_time) {
base::TimeTicks time_stamp;
if (pointer_info.PerformanceCount) {
if (!base::TimeTicks::IsHighResolution()) {
return;
}
time_stamp =
EventLatencyTimeFromPerformanceCounter(pointer_info.PerformanceCount);
} else if (pointer_info.dwTime) {
time_stamp =
EventLatencyTimeFromTickClock(pointer_info.dwTime, current_time);
} else {
return;
}
ComputeEventLatencyOS(event_type, time_stamp, current_time);
}
#endif
void ConvertEventLocationToTargetWindowLocation(
const gfx::Point& target_window_origin,
const gfx::Point& current_window_origin,
ui::LocatedEvent* located_event) { … }
std::string_view EventTypeName(EventType type) { … }
std::vector<std::string_view> EventFlagsNames(int event_flags) { … }
std::vector<std::string_view> KeyEventFlagsNames(int event_flags) { … }
std::vector<std::string_view> MouseEventFlagsNames(int event_flags) { … }
}