diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/events/touch_event.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/events/touch_event.cc | 177 |
1 files changed, 3 insertions, 174 deletions
diff --git a/chromium/third_party/blink/renderer/core/events/touch_event.cc b/chromium/third_party/blink/renderer/core/events/touch_event.cc index a006923d4cc..ee8e3c161ae 100644 --- a/chromium/third_party/blink/renderer/core/events/touch_event.cc +++ b/chromium/third_party/blink/renderer/core/events/touch_event.cc @@ -34,174 +34,19 @@ #include "third_party/blink/renderer/core/frame/intervention.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/local_frame_view.h" -#include "third_party/blink/renderer/core/frame/use_counter.h" #include "third_party/blink/renderer/core/html/html_element.h" #include "third_party/blink/renderer/core/input/input_device_capabilities.h" #include "third_party/blink/renderer/core/inspector/console_message.h" #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" #include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h" #include "third_party/blink/renderer/platform/bindings/script_state.h" -#include "third_party/blink/renderer/platform/histogram.h" +#include "third_party/blink/renderer/platform/instrumentation/histogram.h" +#include "third_party/blink/renderer/platform/instrumentation/use_counter.h" namespace blink { namespace { -// These offsets change indicies into the ListenerHistogram -// enumeration. The addition of a series of offsets then -// produces the resulting ListenerHistogram value. -// TODO(dtapuska): Remove all of these histogram counts once -// https://crbug.com/599609 is fixed. -const size_t kTouchTargetHistogramRootScrollerOffset = 6; -const size_t kTouchTargetHistogramScrollableDocumentOffset = 3; -const size_t kTouchTargetHistogramAlreadyHandledOffset = 0; -const size_t kTouchTargetHistogramNotHandledOffset = 1; -const size_t kTouchTargetHistogramHandledOffset = 2; -const size_t kCapturingOffset = 0; -const size_t kAtTargetOffset = 12; -const size_t kBubblingOffset = 24; - -enum TouchTargetAndDispatchResultType { - // The following enums represent state captured during the CAPTURING_PHASE. - - // Non-root-scroller, non-scrollable document, already handled. - kCapturingNonRootScrollerNonScrollableAlreadyHandled, - // Non-root-scroller, non-scrollable document, not handled. - kCapturingNonRootScrollerNonScrollableNotHandled, - // Non-root-scroller, non-scrollable document, handled application. - kCapturingNonRootScrollerNonScrollableHandled, - // Non-root-scroller, scrollable document, already handled. - kCapturingNonRootScrollerScrollableDocumentAlreadyHandled, - // Non-root-scroller, scrollable document, not handled. - kCapturingNonRootScrollerScrollableDocumentNotHandled, - // Non-root-scroller, scrollable document, handled application. - kCapturingNonRootScrollerScrollableDocumentHandled, - // Root-scroller, non-scrollable document, already handled. - kCapturingRootScrollerNonScrollableAlreadyHandled, - // Root-scroller, non-scrollable document, not handled. - kCapturingRootScrollerNonScrollableNotHandled, - // Root-scroller, non-scrollable document, handled. - kCapturingRootScrollerNonScrollableHandled, - // Root-scroller, scrollable document, already handled. - kCapturingRootScrollerScrollableDocumentAlreadyHandled, - // Root-scroller, scrollable document, not handled. - kCapturingRootScrollerScrollableDocumentNotHandled, - // Root-scroller, scrollable document, handled. - kCapturingRootScrollerScrollableDocumentHandled, - - // The following enums represent state captured during the AT_TARGET phase. - - // Non-root-scroller, non-scrollable document, already handled. - kNonRootScrollerNonScrollableAlreadyHandled, - // Non-root-scroller, non-scrollable document, not handled. - kNonRootScrollerNonScrollableNotHandled, - // Non-root-scroller, non-scrollable document, handled application. - kNonRootScrollerNonScrollableHandled, - // Non-root-scroller, scrollable document, already handled. - kNonRootScrollerScrollableDocumentAlreadyHandled, - // Non-root-scroller, scrollable document, not handled. - kNonRootScrollerScrollableDocumentNotHandled, - // Non-root-scroller, scrollable document, handled application. - kNonRootScrollerScrollableDocumentHandled, - // Root-scroller, non-scrollable document, already handled. - kRootScrollerNonScrollableAlreadyHandled, - // Root-scroller, non-scrollable document, not handled. - kRootScrollerNonScrollableNotHandled, - // Root-scroller, non-scrollable document, handled. - kRootScrollerNonScrollableHandled, - // Root-scroller, scrollable document, already handled. - kRootScrollerScrollableDocumentAlreadyHandled, - // Root-scroller, scrollable document, not handled. - kRootScrollerScrollableDocumentNotHandled, - // Root-scroller, scrollable document, handled. - kRootScrollerScrollableDocumentHandled, - - // The following enums represent state captured during the BUBBLING_PHASE. - - // Non-root-scroller, non-scrollable document, already handled. - kBubblingNonRootScrollerNonScrollableAlreadyHandled, - // Non-root-scroller, non-scrollable document, not handled. - kBubblingNonRootScrollerNonScrollableNotHandled, - // Non-root-scroller, non-scrollable document, handled application. - kBubblingNonRootScrollerNonScrollableHandled, - // Non-root-scroller, scrollable document, already handled. - kBubblingNonRootScrollerScrollableDocumentAlreadyHandled, - // Non-root-scroller, scrollable document, not handled. - kBubblingNonRootScrollerScrollableDocumentNotHandled, - // Non-root-scroller, scrollable document, handled application. - kBubblingNonRootScrollerScrollableDocumentHandled, - // Root-scroller, non-scrollable document, already handled. - kBubblingRootScrollerNonScrollableAlreadyHandled, - // Root-scroller, non-scrollable document, not handled. - kBubblingRootScrollerNonScrollableNotHandled, - // Root-scroller, non-scrollable document, handled. - kBubblingRootScrollerNonScrollableHandled, - // Root-scroller, scrollable document, already handled. - kBubblingRootScrollerScrollableDocumentAlreadyHandled, - // Root-scroller, scrollable document, not handled. - kBubblingRootScrollerScrollableDocumentNotHandled, - // Root-scroller, scrollable document, handled. - kBubblingRootScrollerScrollableDocumentHandled, - - kTouchTargetAndDispatchResultTypeMax, -}; - -void LogTouchTargetHistogram(EventTarget* event_target, - uint8_t phase, - bool default_prevented_before_current_target, - bool default_prevented) { - int result = 0; - Document* document = nullptr; - - switch (phase) { - default: - case Event::kNone: - return; - case Event::kCapturingPhase: - result += kCapturingOffset; - break; - case Event::kAtTarget: - result += kAtTargetOffset; - break; - case Event::kBubblingPhase: - result += kBubblingOffset; - break; - } - - if (const LocalDOMWindow* dom_window = event_target->ToLocalDOMWindow()) { - // Treat the window as a root scroller as well. - document = dom_window->document(); - result += kTouchTargetHistogramRootScrollerOffset; - } else if (Node* node = event_target->ToNode()) { - // Report if the target node is the document or body. - if (node->IsDocumentNode() || - node->GetDocument().documentElement() == node || - node->GetDocument().body() == node) { - result += kTouchTargetHistogramRootScrollerOffset; - } - document = &node->GetDocument(); - } - - if (document) { - LocalFrameView* view = document->View(); - if (view && view->LayoutViewport()->ScrollsOverflow()) - result += kTouchTargetHistogramScrollableDocumentOffset; - } - - if (default_prevented_before_current_target) - result += kTouchTargetHistogramAlreadyHandledOffset; - else if (default_prevented) - result += kTouchTargetHistogramHandledOffset; - else - result += kTouchTargetHistogramNotHandledOffset; - - DEFINE_STATIC_LOCAL(EnumerationHistogram, root_document_listener_histogram, - ("Event.Touch.TargetAndDispatchResult2", - kTouchTargetAndDispatchResultTypeMax)); - root_document_listener_histogram.Count( - static_cast<TouchTargetAndDispatchResultType>(result)); -} - // Helper function to get WebTouchEvent from WebCoalescedInputEvent. const WebTouchEvent* GetWebTouchEvent(const WebCoalescedInputEvent& event) { return static_cast<const WebTouchEvent*>(&event.Event()); @@ -209,8 +54,7 @@ const WebTouchEvent* GetWebTouchEvent(const WebCoalescedInputEvent& event) { } // namespace TouchEvent::TouchEvent() - : default_prevented_before_current_target_(false), - current_touch_action_(TouchAction::kTouchActionAuto) {} + : current_touch_action_(TouchAction::kTouchActionAuto) {} TouchEvent::TouchEvent(const WebCoalescedInputEvent& event, TouchList* touches, @@ -236,7 +80,6 @@ TouchEvent::TouchEvent(const WebCoalescedInputEvent& event, touches_(touches), target_touches_(target_touches), changed_touches_(changed_touches), - default_prevented_before_current_target_(false), current_touch_action_(current_touch_action) { DCHECK(WebInputEvent::IsTouchEventType(event.Event().GetType())); native_event_.reset(new WebCoalescedInputEvent(event)); @@ -329,20 +172,6 @@ bool TouchEvent::IsTouchStartOrFirstTouchMove() const { return GetWebTouchEvent(*native_event_)->touch_start_or_first_touch_move; } -void TouchEvent::DoneDispatchingEventAtCurrentTarget() { - // Do not log for non-cancelable events, events that don't block - // scrolling, have more than one touch point or aren't on the main frame. - if (!cancelable() || !IsTouchStartOrFirstTouchMove() || - !(touches_ && touches_->length() == 1) || - !(view() && view()->GetFrame() && view()->GetFrame()->IsMainFrame())) - return; - - bool canceled = defaultPrevented(); - LogTouchTargetHistogram(currentTarget(), eventPhase(), - default_prevented_before_current_target_, canceled); - default_prevented_before_current_target_ = canceled; -} - void TouchEvent::Trace(blink::Visitor* visitor) { visitor->Trace(touches_); visitor->Trace(target_touches_); |