Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef MediaControlTimelineMetrics_h | |
| 6 #define MediaControlTimelineMetrics_h | |
| 7 | |
| 8 #include "platform/Histogram.h" | |
| 9 #include "platform/wtf/Time.h" | |
| 10 | |
| 11 namespace blink { | |
| 12 | |
| 13 // Helpers for tracking and reporting media control timeline metrics to UMA. | |
| 14 class MediaControlTimelineMetrics { | |
| 15 public: | |
| 16 // Start tracking a pointer gesture. |fromThumb| indicates whether the user | |
| 17 // started dragging from the thumb, as opposed to pressing down their pointer | |
| 18 // on some other part of the timeline track (causing time to jump). | |
| 19 void startGesture(bool fromThumb); | |
| 20 // Finish tracking and report a pointer gesture. | |
| 21 void recordEndGesture(int timelineWidth, double mediaDurationSeconds); | |
| 22 | |
| 23 // Start tracking a keydown. Ok to call multiple times if key repeats. | |
| 24 void startKey(); | |
| 25 // Finish tracking and report a keyup. Call only once even if key repeats. | |
| 26 void recordEndKey(int timelineWidth, int keyCode); | |
| 27 | |
| 28 // Track an incremental input event caused by the current pointer gesture or | |
| 29 // pressed key. Each sequence of calls to this should usually be sandwiched by | |
| 30 // startGesture/Key and recordEndGesture/Key. | |
| 31 void onInput(double fromSeconds, double toSeconds); | |
| 32 | |
| 33 // Report width to UMA. Should be called the first time the media is played. | |
| 34 void recordWidthOnFirstPlay(bool isFullscreen, | |
| 35 bool isPortrait, | |
| 36 int timelineWidth); | |
| 37 | |
| 38 private: | |
| 39 enum class State { | |
| 40 // No active gesture. Progresses to kKeyDown on |startKey|, or | |
| 41 // kGestureFromThumb/kGestureFromElsewhere on |startGesture|. | |
| 42 kInactive, | |
|
mlamouri (slow - plz ping)
2017/03/30 21:43:00
nit: drop the k? :)
johnme
2017/03/31 13:47:23
https://sites.google.com/a/chromium.org/dev/blink/
| |
| 43 | |
| 44 // Pointer down on thumb. Progresses to kDragFromThumb in |onInput|. | |
| 45 kGestureFromThumb, | |
| 46 // Thumb is being dragged (drag started from thumb). | |
| 47 kDragFromThumb, | |
| 48 | |
| 49 // Pointer down on track. Progresses to kClick in |onInput|. | |
| 50 kGestureFromElsewhere, | |
| 51 // Pointer down followed by input. Assumed to be a click, unless additional | |
| 52 // |onInput| are received - if so progresses to kDragFromElsewhere. | |
| 53 kClick, | |
| 54 // Thumb is being dragged (drag started from track). | |
| 55 kDragFromElsewhere, | |
| 56 | |
| 57 // A key is currently pressed down. | |
| 58 kKeyDown | |
| 59 }; | |
| 60 | |
| 61 State m_state = State::kInactive; | |
| 62 | |
| 63 // The following are only valid during a pointer gesture. | |
| 64 TimeTicks m_dragStartTimeTicks; | |
| 65 float m_dragDeltaMediaSeconds = 0; | |
| 66 float m_dragSumAbsDeltaMediaSeconds = 0; | |
| 67 }; | |
| 68 | |
| 69 } // namespace blink | |
| 70 | |
| 71 #endif // MediaControlTimelineMetrics_h | |
| OLD | NEW |