11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef UI_EVENTS_GESTURE_DETECTION_GESTURE_TOUCH_UMA_HISTOGRAM_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define UI_EVENTS_GESTURE_DETECTION_GESTURE_TOUCH_UMA_HISTOGRAM_H_ 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/time/time.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/events/gesture_detection/gesture_detection_export.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/events/gesture_detection/gesture_event_data.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/events/gesture_detection/motion_event.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace ui { 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum UMAEventType { 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // WARNING: Do not change the numerical values of any of these types. 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Do not remove deprecated types - just comment them as deprecated. 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_UNKNOWN = 0, 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_TOUCH_RELEASED = 1, 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_TOUCH_PRESSED = 2, 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_TOUCH_MOVED = 3, 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_TOUCH_STATIONARY = 4, // Deprecated. Do not remove. 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_TOUCH_CANCELLED = 5, 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SCROLL_BEGIN = 6, 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SCROLL_END = 7, 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SCROLL_UPDATE = 8, 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_TAP = 9, 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_TAP_DOWN = 10, 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_BEGIN = 11, 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_END = 12, 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_DOUBLE_TAP = 13, 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_TRIPLE_TAP = 14, 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_TWO_FINGER_TAP = 15, 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_PINCH_BEGIN = 16, 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_PINCH_END = 17, 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_PINCH_UPDATE = 18, 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_LONG_PRESS = 19, 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SWIPE_2 = 20, // Swipe with 2 fingers 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_SCROLL = 21, 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_SCROLL_FLING_START = 22, 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_SCROLL_FLING_CANCEL = 23, 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SWIPE_3 = 24, // Swipe with 3 fingers 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SWIPE_4P = 25, // Swipe with 4+ fingers 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SCROLL_UPDATE_2 = 26, 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SCROLL_UPDATE_3 = 27, 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SCROLL_UPDATE_4P = 28, 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_PINCH_UPDATE_3 = 29, 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_PINCH_UPDATE_4P = 30, 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_LONG_TAP = 31, 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SHOW_PRESS = 32, 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_TAP_CANCEL = 33, 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_WIN8_EDGE_SWIPE = 34, 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_SWIPE_1 = 35, // Swipe with 1 finger 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_GESTURE_TAP_UNCONFIRMED = 36, 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // NOTE: Add new event types only immediately above this line. Make sure to 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // update the UIEventType enum in tools/metrics/histograms/histograms.xml 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // accordingly. 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UMA_ET_COUNT 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Records some touch/gesture event specific details (e.g. what gestures are 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// targetted to which components etc.) 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass GESTURE_DETECTION_EXPORT GestureTouchUMAHistogram { 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public: 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GestureTouchUMAHistogram(); 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~GestureTouchUMAHistogram(); 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static void RecordGestureEvent(const ui::GestureEventData& gesture); 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void RecordTouchEvent(const ui::MotionEvent& event); 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static UMAEventType UMAEventTypeFromEvent(const GestureEventData& gesture); 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The first finger's press time. 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::TimeTicks start_time_; 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The first finger's press location. 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Point start_touch_position_; 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The maximum distance the first touch point travelled from its starting 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // location in pixels. 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci float max_distance_from_start_squared_; 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool is_single_finger_; 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace ui 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // UI_EVENTS_GESTURE_DETECTION_GESTURE_TOUCH_UMA_HISTOGRAM_H_ 87