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

Side by Side Diff: third_party/WebKit/Source/core/input/ScrollManager.cpp

Issue 2773893003: Record size of scroller that user scrolls (Closed)
Patch Set: Redefine metrics using suffixes in histograms.xml Created 3 years, 8 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "core/input/ScrollManager.h" 5 #include "core/input/ScrollManager.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include "core/dom/DOMNodeIds.h" 8 #include "core/dom/DOMNodeIds.h"
9 #include "core/events/GestureEvent.h" 9 #include "core/events/GestureEvent.h"
10 #include "core/frame/BrowserControls.h" 10 #include "core/frame/BrowserControls.h"
11 #include "core/frame/FrameView.h" 11 #include "core/frame/FrameView.h"
12 #include "core/html/HTMLFrameOwnerElement.h" 12 #include "core/html/HTMLFrameOwnerElement.h"
13 #include "core/input/EventHandler.h" 13 #include "core/input/EventHandler.h"
14 #include "core/input/EventHandlingUtil.h" 14 #include "core/input/EventHandlingUtil.h"
15 #include "core/layout/LayoutBlock.h" 15 #include "core/layout/LayoutBlock.h"
16 #include "core/layout/LayoutPart.h" 16 #include "core/layout/LayoutPart.h"
17 #include "core/layout/api/LayoutViewItem.h" 17 #include "core/layout/api/LayoutViewItem.h"
18 #include "core/loader/DocumentLoader.h" 18 #include "core/loader/DocumentLoader.h"
19 #include "core/page/AutoscrollController.h" 19 #include "core/page/AutoscrollController.h"
20 #include "core/page/Page.h" 20 #include "core/page/Page.h"
21 #include "core/page/scrolling/OverscrollController.h" 21 #include "core/page/scrolling/OverscrollController.h"
22 #include "core/page/scrolling/RootScrollerController.h" 22 #include "core/page/scrolling/RootScrollerController.h"
23 #include "core/page/scrolling/ScrollState.h" 23 #include "core/page/scrolling/ScrollState.h"
24 #include "core/paint/PaintLayer.h" 24 #include "core/paint/PaintLayer.h"
25 #include "platform/Histogram.h"
25 #include "platform/RuntimeEnabledFeatures.h" 26 #include "platform/RuntimeEnabledFeatures.h"
26 #include "wtf/PtrUtil.h" 27 #include "wtf/PtrUtil.h"
27 28
28 namespace blink { 29 namespace blink {
29 30
30 ScrollManager::ScrollManager(LocalFrame& frame) : m_frame(frame) { 31 ScrollManager::ScrollManager(LocalFrame& frame) : m_frame(frame) {
31 clear(); 32 clear();
32 } 33 }
33 34
34 void ScrollManager::clear() { 35 void ScrollManager::clear() {
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 if (!m_scrollGestureHandlingNode) 215 if (!m_scrollGestureHandlingNode)
215 m_scrollGestureHandlingNode = m_frame->document()->documentElement(); 216 m_scrollGestureHandlingNode = m_frame->document()->documentElement();
216 217
217 if (!m_scrollGestureHandlingNode || 218 if (!m_scrollGestureHandlingNode ||
218 !m_scrollGestureHandlingNode->layoutObject()) 219 !m_scrollGestureHandlingNode->layoutObject())
219 return WebInputEventResult::NotHandled; 220 return WebInputEventResult::NotHandled;
220 221
221 passScrollGestureEvent(gestureEvent, 222 passScrollGestureEvent(gestureEvent,
222 m_scrollGestureHandlingNode->layoutObject()); 223 m_scrollGestureHandlingNode->layoutObject());
223 224
225 if (m_scrollGestureHandlingNode->layoutObject() &&
226 (gestureEvent.sourceDevice == WebGestureDeviceTouchpad ||
227 gestureEvent.sourceDevice == WebGestureDeviceTouchscreen)) {
228 recordScrollerSize(*(m_scrollGestureHandlingNode->layoutObject()),
229 gestureEvent.sourceDevice);
230 }
231
224 m_currentScrollChain.clear(); 232 m_currentScrollChain.clear();
225 std::unique_ptr<ScrollStateData> scrollStateData = 233 std::unique_ptr<ScrollStateData> scrollStateData =
226 WTF::makeUnique<ScrollStateData>(); 234 WTF::makeUnique<ScrollStateData>();
227 IntPoint position = flooredIntPoint(gestureEvent.positionInRootFrame()); 235 IntPoint position = flooredIntPoint(gestureEvent.positionInRootFrame());
228 scrollStateData->position_x = position.x(); 236 scrollStateData->position_x = position.x();
229 scrollStateData->position_y = position.y(); 237 scrollStateData->position_y = position.y();
230 scrollStateData->is_beginning = true; 238 scrollStateData->is_beginning = true;
231 scrollStateData->from_user_input = true; 239 scrollStateData->from_user_input = true;
232 scrollStateData->is_direct_manipulation = 240 scrollStateData->is_direct_manipulation =
233 gestureEvent.sourceDevice == WebGestureDeviceTouchscreen; 241 gestureEvent.sourceDevice == WebGestureDeviceTouchscreen;
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 bool shouldUpdateCapture = false; 560 bool shouldUpdateCapture = false;
553 if (scrollbar->gestureEvent(targetedEvent.event(), &shouldUpdateCapture)) { 561 if (scrollbar->gestureEvent(targetedEvent.event(), &shouldUpdateCapture)) {
554 if (shouldUpdateCapture) 562 if (shouldUpdateCapture)
555 m_scrollbarHandlingScrollGesture = scrollbar; 563 m_scrollbarHandlingScrollGesture = scrollbar;
556 return true; 564 return true;
557 } 565 }
558 } 566 }
559 return false; 567 return false;
560 } 568 }
561 569
570 void ScrollManager::recordScrollerSize(const LayoutObject& layoutObject,
571 const WebGestureDevice device) {
572 if (!layoutObject.enclosingLayer())
573 return;
574
575 if (device == WebGestureDeviceTouchpad) {
576 DEFINE_STATIC_LOCAL(
577 CustomCountHistogram, sizeHistogram,
tdresser 2017/03/28 13:30:12 It looks like these macros are defining a static l
yigu 2017/03/29 15:32:03 It's better we differentiate the names. There are
578 ("Event.Scroll.ScrollerSize.OnScroll_Wheel", 1, 90000, 50));
flackr 2017/03/28 14:40:23 As I mentioned in the cc file we should use consta
yigu 2017/03/29 15:32:03 500*400 makes sense to me. There is gonna be anoth
579 sizeHistogram.count(
580 layoutObject.enclosingLayer()->visualRect().width().toInt() *
581 layoutObject.enclosingLayer()->visualRect().height().toInt());
582 } else {
583 DEFINE_STATIC_LOCAL(
584 CustomCountHistogram, sizeHistogram,
585 ("Event.Scroll.ScrollerSize.OnScroll_Touch", 1, 90000, 50));
586 sizeHistogram.count(
587 layoutObject.enclosingLayer()->visualRect().width().toInt() *
588 layoutObject.enclosingLayer()->visualRect().height().toInt());
589 }
590 }
591
562 } // namespace blink 592 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698