Commit 1d0122c1 authored by Abhijeet Kandalkar's avatar Abhijeet Kandalkar Committed by Commit Bot

Use new downcast helper for blink::PointerEvent

This CL has two goals,
  1. Use To<PointerEvent> and DynamicTo<PointerEvent> as new
     downcast helper
  2. Use IsA<PointerEvent>(element) in place of
     IsPointerEvent(element)

Bug: 891908
Change-Id: I3c7521aefd080d6a7505212a39d0f99c2ea8b2b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2019746Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Abhijeet Kandalkar <abhijeet@igalia.com>
Cr-Commit-Position: refs/heads/master@{#742489}
parent ec5a6558
......@@ -273,10 +273,10 @@ void Event::SetTarget(EventTarget* target) {
}
void Event::SetRelatedTargetIfExists(EventTarget* related_target) {
if (auto* event = DynamicTo<MouseEvent>(this)) {
event->SetRelatedTarget(related_target);
} else if (IsPointerEvent()) {
ToPointerEvent(this)->SetRelatedTarget(related_target);
if (auto* mouse_event = DynamicTo<MouseEvent>(this)) {
mouse_event->SetRelatedTarget(related_target);
} else if (auto* pointer_event = DynamicTo<PointerEvent>(this)) {
pointer_event->SetRelatedTarget(related_target);
} else if (auto* focus_event = DynamicTo<FocusEvent>(this)) {
focus_event->SetRelatedTarget(related_target);
}
......
......@@ -180,7 +180,7 @@ void CountFiringEventListeners(const Event& event,
}
if (CheckTypeThenUseCount(event, event_type_names::kPointerdown,
WebFeature::kPointerDownFired, document)) {
if (event.IsPointerEvent() &&
if (IsA<PointerEvent>(event) &&
static_cast<const PointerEvent&>(event).pointerType() == "touch") {
UseCounter::Count(document, WebFeature::kPointerDownFiredForTouch);
}
......
......@@ -6,6 +6,7 @@
#define THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_POINTER_EVENT_H_
#include "third_party/blink/renderer/core/events/mouse_event.h"
#include "third_party/blink/renderer/platform/wtf/casting.h"
namespace blink {
......@@ -97,7 +98,10 @@ class CORE_EXPORT PointerEvent final : public MouseEvent {
HeapVector<Member<PointerEvent>> predicted_events_;
};
DEFINE_EVENT_TYPE_CASTS(PointerEvent);
template <>
struct DowncastTraits<PointerEvent> {
static bool AllowFrom(const Event& event) { return event.IsPointerEvent(); }
};
} // namespace blink
......
......@@ -196,7 +196,7 @@ void SliderThumbElement::StopDragging() {
}
void SliderThumbElement::DefaultEventHandler(Event& event) {
if (event.IsPointerEvent() &&
if (IsA<PointerEvent>(event) &&
event.type() == event_type_names::kLostpointercapture) {
StopDragging();
return;
......
......@@ -33,7 +33,7 @@ bool ShouldLogEvent(const Event& event) {
}
bool IsEventTypeForEventTiming(const Event& event) {
return (IsA<MouseEvent>(event) || event.IsPointerEvent() ||
return (IsA<MouseEvent>(event) || IsA<PointerEvent>(event) ||
event.IsTouchEvent() || event.IsKeyboardEvent() ||
event.IsWheelEvent() || event.IsInputEvent() ||
event.IsCompositionEvent()) &&
......@@ -72,9 +72,10 @@ std::unique_ptr<EventTiming> EventTiming::Create(LocalDOMWindow* window,
if (!should_report_for_event_timing && !should_log_event)
return nullptr;
auto* pointer_event = DynamicTo<PointerEvent>(&event);
base::TimeTicks event_timestamp =
event.IsPointerEvent() ? ToPointerEvent(&event)->OldestPlatformTimeStamp()
: event.PlatformTimeStamp();
pointer_event ? pointer_event->OldestPlatformTimeStamp()
: event.PlatformTimeStamp();
base::TimeTicks processing_start = Now();
if (should_log_event) {
......
......@@ -38,8 +38,8 @@ const int kThumbRadius = 6;
// Only respond to main button of primary pointer(s).
bool IsValidPointerEvent(const blink::Event& event) {
DCHECK(event.IsPointerEvent());
const blink::PointerEvent& pointer_event = ToPointerEvent(event);
DCHECK(blink::IsA<blink::PointerEvent>(event));
const auto& pointer_event = blink::To<blink::PointerEvent>(event);
return pointer_event.isPrimary() &&
pointer_event.button() ==
static_cast<int16_t>(blink::WebPointerProperties::Button::kLeft);
......@@ -122,7 +122,7 @@ void MediaControlTimelineElement::DefaultEventHandler(Event& event) {
MediaControlInputElement::DefaultEventHandler(event);
if (IsA<MouseEvent>(event) || event.IsKeyboardEvent() ||
event.IsGestureEvent() || event.IsPointerEvent()) {
event.IsGestureEvent() || IsA<PointerEvent>(event)) {
MaybeRecordInteracted();
}
......
......@@ -8,6 +8,7 @@
#include "third_party/blink/renderer/core/dom/dom_token_list.h"
#include "third_party/blink/renderer/core/dom/events/event.h"
#include "third_party/blink/renderer/core/events/mouse_event.h"
#include "third_party/blink/renderer/core/events/pointer_event.h"
#include "third_party/blink/renderer/core/html/media/html_media_element.h"
#include "third_party/blink/renderer/core/html_names.h"
#include "third_party/blink/renderer/core/layout/layout_object.h"
......@@ -71,7 +72,7 @@ void MediaControlVolumeSliderElement::DefaultEventHandler(Event& event) {
MediaControlInputElement::DefaultEventHandler(event);
if (IsA<MouseEvent>(event) || event.IsKeyboardEvent() ||
event.IsGestureEvent() || event.IsPointerEvent()) {
event.IsGestureEvent() || IsA<PointerEvent>(event)) {
MaybeRecordInteracted();
}
......
......@@ -1696,9 +1696,10 @@ void MediaControlsImpl::ShowCursor() {
}
bool MediaControlsImpl::ContainsRelatedTarget(Event* event) {
if (!event->IsPointerEvent())
auto* pointer_event = DynamicTo<PointerEvent>(event);
if (!pointer_event)
return false;
EventTarget* related_target = ToPointerEvent(event)->relatedTarget();
EventTarget* related_target = pointer_event->relatedTarget();
if (!related_target)
return false;
return contains(related_target->ToNode());
......
......@@ -27,7 +27,7 @@ class XRCanvasInputEventListener : public NativeEventListener {
if (!input_provider_->ShouldProcessEvents())
return;
PointerEvent* pointer_event = ToPointerEvent(event);
auto* pointer_event = To<PointerEvent>(event);
DCHECK(pointer_event);
if (!pointer_event->isPrimary())
return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment