Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(493)

Side by Side Diff: content/browser/web_contents/aura/overscroll_window_delegate.cc

Issue 2698673006: Add User Actions and adding more details to UMA metrics for overscroll navigation (Closed)
Patch Set: Trailing period Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/web_contents/aura/overscroll_window_delegate.h" 5 #include "content/browser/web_contents/aura/overscroll_window_delegate.h"
6 6
7 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "content/browser/frame_host/navigation_controller_impl.h" 8 #include "content/browser/frame_host/navigation_controller_impl.h"
9 #include "content/browser/frame_host/navigation_entry_impl.h" 9 #include "content/browser/frame_host/navigation_entry_impl.h"
10 #include "content/browser/renderer_host/overscroll_controller_delegate.h" 10 #include "content/browser/renderer_host/overscroll_controller_delegate.h"
(...skipping 16 matching lines...) Expand all
27 content::OVERSCROLL_CONFIG_HORIZ_THRESHOLD_START_TOUCHSCREEN)), 27 content::OVERSCROLL_CONFIG_HORIZ_THRESHOLD_START_TOUCHSCREEN)),
28 start_threshold_touchpad_(content::GetOverscrollConfig( 28 start_threshold_touchpad_(content::GetOverscrollConfig(
29 content::OVERSCROLL_CONFIG_HORIZ_THRESHOLD_START_TOUCHPAD)), 29 content::OVERSCROLL_CONFIG_HORIZ_THRESHOLD_START_TOUCHPAD)),
30 active_start_threshold_(0.f) { 30 active_start_threshold_(0.f) {
31 SetImage(image); 31 SetImage(image);
32 } 32 }
33 33
34 OverscrollWindowDelegate::~OverscrollWindowDelegate() { 34 OverscrollWindowDelegate::~OverscrollWindowDelegate() {
35 } 35 }
36 36
37 void OverscrollWindowDelegate::StartOverscroll() { 37 void OverscrollWindowDelegate::StartOverscroll(OverscrollSource source) {
38 OverscrollMode old_mode = overscroll_mode_; 38 OverscrollMode old_mode = overscroll_mode_;
39 if (delta_x_ > 0) 39 if (delta_x_ > 0)
40 overscroll_mode_ = OVERSCROLL_EAST; 40 overscroll_mode_ = OVERSCROLL_EAST;
41 else 41 else
42 overscroll_mode_ = OVERSCROLL_WEST; 42 overscroll_mode_ = OVERSCROLL_WEST;
43 delegate_->OnOverscrollModeChange(old_mode, overscroll_mode_); 43 delegate_->OnOverscrollModeChange(old_mode, overscroll_mode_, source);
44 } 44 }
45 45
46 void OverscrollWindowDelegate::ResetOverscroll() { 46 void OverscrollWindowDelegate::ResetOverscroll() {
47 if (overscroll_mode_ == OVERSCROLL_NONE) 47 if (overscroll_mode_ == OVERSCROLL_NONE)
48 return; 48 return;
49 delegate_->OnOverscrollModeChange(overscroll_mode_, OVERSCROLL_NONE); 49 delegate_->OnOverscrollModeChange(overscroll_mode_, OVERSCROLL_NONE,
50 OverscrollSource::NONE);
50 overscroll_mode_ = OVERSCROLL_NONE; 51 overscroll_mode_ = OVERSCROLL_NONE;
51 delta_x_ = 0; 52 delta_x_ = 0;
52 } 53 }
53 54
54 void OverscrollWindowDelegate::CompleteOrResetOverscroll() { 55 void OverscrollWindowDelegate::CompleteOrResetOverscroll() {
55 if (overscroll_mode_ == OVERSCROLL_NONE) 56 if (overscroll_mode_ == OVERSCROLL_NONE)
56 return; 57 return;
57 int width = delegate_->GetVisibleBounds().width(); 58 int width = delegate_->GetVisibleBounds().width();
58 float ratio = (fabs(delta_x_)) / width; 59 float ratio = (fabs(delta_x_)) / width;
59 if (ratio < complete_threshold_ratio_) { 60 if (ratio < complete_threshold_ratio_) {
60 ResetOverscroll(); 61 ResetOverscroll();
61 return; 62 return;
62 } 63 }
63 delegate_->OnOverscrollComplete(overscroll_mode_); 64 delegate_->OnOverscrollComplete(overscroll_mode_);
64 overscroll_mode_ = OVERSCROLL_NONE; 65 overscroll_mode_ = OVERSCROLL_NONE;
65 delta_x_ = 0; 66 delta_x_ = 0;
66 } 67 }
67 68
68 void OverscrollWindowDelegate::UpdateOverscroll(float delta_x) { 69 void OverscrollWindowDelegate::UpdateOverscroll(float delta_x,
70 OverscrollSource source) {
69 float old_delta_x = delta_x_; 71 float old_delta_x = delta_x_;
70 delta_x_ += delta_x; 72 delta_x_ += delta_x;
71 if (overscroll_mode_ == OVERSCROLL_NONE) { 73 if (overscroll_mode_ == OVERSCROLL_NONE) {
72 if (fabs(delta_x_) > active_start_threshold_) 74 if (fabs(delta_x_) > active_start_threshold_)
73 StartOverscroll(); 75 StartOverscroll(source);
74 return; 76 return;
75 } 77 }
76 if ((old_delta_x < 0 && delta_x_ > 0) || (old_delta_x > 0 && delta_x_ < 0)) { 78 if ((old_delta_x < 0 && delta_x_ > 0) || (old_delta_x > 0 && delta_x_ < 0)) {
77 ResetOverscroll(); 79 ResetOverscroll();
78 return; 80 return;
79 } 81 }
80 delegate_->OnOverscrollUpdate(delta_x_, 0.f); 82 delegate_->OnOverscrollUpdate(delta_x_, 0.f);
81 } 83 }
82 84
83 void OverscrollWindowDelegate::OnKeyEvent(ui::KeyEvent* event) { 85 void OverscrollWindowDelegate::OnKeyEvent(ui::KeyEvent* event) {
84 ResetOverscroll(); 86 ResetOverscroll();
85 } 87 }
86 88
87 void OverscrollWindowDelegate::OnMouseEvent(ui::MouseEvent* event) { 89 void OverscrollWindowDelegate::OnMouseEvent(ui::MouseEvent* event) {
88 if (!(event->flags() & ui::EF_IS_SYNTHESIZED) && 90 if (!(event->flags() & ui::EF_IS_SYNTHESIZED) &&
89 event->type() != ui::ET_MOUSE_CAPTURE_CHANGED) { 91 event->type() != ui::ET_MOUSE_CAPTURE_CHANGED) {
90 ResetOverscroll(); 92 ResetOverscroll();
91 } 93 }
92 } 94 }
93 95
94 void OverscrollWindowDelegate::OnScrollEvent(ui::ScrollEvent* event) { 96 void OverscrollWindowDelegate::OnScrollEvent(ui::ScrollEvent* event) {
95 active_start_threshold_ = start_threshold_touchpad_; 97 active_start_threshold_ = start_threshold_touchpad_;
96 if (event->type() == ui::ET_SCROLL) 98 if (event->type() == ui::ET_SCROLL)
97 UpdateOverscroll(event->x_offset_ordinal()); 99 UpdateOverscroll(event->x_offset_ordinal(), OverscrollSource::TOUCHPAD);
98 else if (event->type() == ui::ET_SCROLL_FLING_START) 100 else if (event->type() == ui::ET_SCROLL_FLING_START)
99 CompleteOrResetOverscroll(); 101 CompleteOrResetOverscroll();
100 else 102 else
101 ResetOverscroll(); 103 ResetOverscroll();
102 event->SetHandled(); 104 event->SetHandled();
103 } 105 }
104 106
105 void OverscrollWindowDelegate::OnGestureEvent(ui::GestureEvent* event) { 107 void OverscrollWindowDelegate::OnGestureEvent(ui::GestureEvent* event) {
106 active_start_threshold_ = start_threshold_touchscreen_; 108 active_start_threshold_ = start_threshold_touchscreen_;
107 switch (event->type()) { 109 switch (event->type()) {
108 case ui::ET_GESTURE_SCROLL_UPDATE: 110 case ui::ET_GESTURE_SCROLL_UPDATE:
109 UpdateOverscroll(event->details().scroll_x()); 111 UpdateOverscroll(event->details().scroll_x(),
112 OverscrollSource::TOUCHSCREEN);
110 break; 113 break;
111 114
112 case ui::ET_GESTURE_SCROLL_END: 115 case ui::ET_GESTURE_SCROLL_END:
113 CompleteOrResetOverscroll(); 116 CompleteOrResetOverscroll();
114 break; 117 break;
115 118
116 case ui::ET_SCROLL_FLING_START: 119 case ui::ET_SCROLL_FLING_START:
117 CompleteOrResetOverscroll(); 120 CompleteOrResetOverscroll();
118 break; 121 break;
119 122
120 case ui::ET_GESTURE_PINCH_BEGIN: 123 case ui::ET_GESTURE_PINCH_BEGIN:
121 case ui::ET_GESTURE_PINCH_UPDATE: 124 case ui::ET_GESTURE_PINCH_UPDATE:
122 case ui::ET_GESTURE_PINCH_END: 125 case ui::ET_GESTURE_PINCH_END:
123 ResetOverscroll(); 126 ResetOverscroll();
124 break; 127 break;
125 128
126 default: 129 default:
127 break; 130 break;
128 } 131 }
129 event->SetHandled(); 132 event->SetHandled();
130 } 133 }
131 134
132 } // namespace content 135 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698