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

Side by Side Diff: cc/input/main_thread_scrolling_reason.h

Issue 2565223002: Add more specific metrics for main thread scrolling reasons (Closed)
Patch Set: Add unit test && refactoring Created 4 years 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 #ifndef CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_ 5 #ifndef CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_
6 #define CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_ 6 #define CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/trace_event/trace_event_argument.h" 10 #include "base/trace_event/trace_event_argument.h"
(...skipping 13 matching lines...) Expand all
24 kScrollbarScrolling = 1 << 3, 24 kScrollbarScrolling = 1 << 3,
25 kPageOverlay = 1 << 4, 25 kPageOverlay = 1 << 4,
26 26
27 // This bit is set when any of the other main thread scrolling reasons cause 27 // This bit is set when any of the other main thread scrolling reasons cause
28 // an input event to be handled on the main thread, and the main thread 28 // an input event to be handled on the main thread, and the main thread
29 // blink::ScrollAnimator is in the middle of running a scroll offset 29 // blink::ScrollAnimator is in the middle of running a scroll offset
30 // animation. Note that a scroll handled by the main thread can result in an 30 // animation. Note that a scroll handled by the main thread can result in an
31 // animation running on the main thread or on the compositor thread. 31 // animation running on the main thread or on the compositor thread.
32 kHandlingScrollFromMainThread = 1 << 13, 32 kHandlingScrollFromMainThread = 1 << 13,
33 kCustomScrollbarScrolling = 1 << 15, 33 kCustomScrollbarScrolling = 1 << 15,
34 kHasOpacity = 1 << 16,
bokan 2016/12/13 14:38:56 kHasOpacityAndScrollDependent? A regular scroller
yigu 2016/12/13 20:54:10 It should scroll on main thread due to blending I
bokan 2016/12/14 13:28:58 Ah, of course, if it's transparent and low-DPI, we
bokan 2016/12/15 20:47:45 Hey Yi, I think this still hasn't been addressed.
34 35
35 // Transient scrolling reasons. These are computed for each scroll begin. 36 // Transient scrolling reasons. These are computed for each scroll begin.
36 kNonFastScrollableRegion = 1 << 5, 37 kNonFastScrollableRegion = 1 << 5,
37 kFailedHitTest = 1 << 7, 38 kFailedHitTest = 1 << 7,
38 kNoScrollingLayer = 1 << 8, 39 kNoScrollingLayer = 1 << 8,
39 kNotScrollable = 1 << 9, 40 kNotScrollable = 1 << 9,
40 kContinuingMainThreadScroll = 1 << 10, 41 kContinuingMainThreadScroll = 1 << 10,
41 kNonInvertibleTransform = 1 << 11, 42 kNonInvertibleTransform = 1 << 11,
42 kPageBasedScrolling = 1 << 12, 43 kPageBasedScrolling = 1 << 12,
43 44
44 // The number of flags in this struct (excluding itself). 45 // The number of flags in this struct (excluding itself).
45 kMainThreadScrollingReasonCount = 17, 46 kMainThreadScrollingReasonCount = 18,
46 }; 47 };
47 48
48 // Returns true if the given MainThreadScrollingReason can be set by the main 49 // Returns true if the given MainThreadScrollingReason can be set by the main
49 // thread. 50 // thread.
50 static bool MainThreadCanSetScrollReasons(uint32_t reasons) { 51 static bool MainThreadCanSetScrollReasons(uint32_t reasons) {
51 uint32_t reasons_set_by_main_thread = 52 uint32_t reasons_set_by_main_thread =
52 kNotScrollingOnMain | kHasBackgroundAttachmentFixedObjects | 53 kNotScrollingOnMain | kHasBackgroundAttachmentFixedObjects |
53 kHasNonLayerViewportConstrainedObjects | kThreadedScrollingDisabled | 54 kHasNonLayerViewportConstrainedObjects | kThreadedScrollingDisabled |
54 kScrollbarScrolling | kPageOverlay | kHandlingScrollFromMainThread | 55 kScrollbarScrolling | kPageOverlay | kHandlingScrollFromMainThread |
55 kCustomScrollbarScrolling; 56 kCustomScrollbarScrolling | kHasOpacity;
56 return (reasons & reasons_set_by_main_thread) == reasons; 57 return (reasons & reasons_set_by_main_thread) == reasons;
57 } 58 }
58 59
59 // Returns true if the given MainThreadScrollingReason can be set by the 60 // Returns true if the given MainThreadScrollingReason can be set by the
60 // compositor. 61 // compositor.
61 static bool CompositorCanSetScrollReasons(uint32_t reasons) { 62 static bool CompositorCanSetScrollReasons(uint32_t reasons) {
62 uint32_t reasons_set_by_compositor = 63 uint32_t reasons_set_by_compositor =
63 kNonFastScrollableRegion | kFailedHitTest | kNoScrollingLayer | 64 kNonFastScrollableRegion | kFailedHitTest | kNoScrollingLayer |
64 kNotScrollable | kContinuingMainThreadScroll | kNonInvertibleTransform | 65 kNotScrollable | kContinuingMainThreadScroll | kNonInvertibleTransform |
65 kPageBasedScrolling; 66 kPageBasedScrolling;
(...skipping 24 matching lines...) Expand all
90 if (reasons & MainThreadScrollingReason::kThreadedScrollingDisabled) 91 if (reasons & MainThreadScrollingReason::kThreadedScrollingDisabled)
91 tracedValue->AppendString("Threaded scrolling is disabled"); 92 tracedValue->AppendString("Threaded scrolling is disabled");
92 if (reasons & MainThreadScrollingReason::kScrollbarScrolling) 93 if (reasons & MainThreadScrollingReason::kScrollbarScrolling)
93 tracedValue->AppendString("Scrollbar scrolling"); 94 tracedValue->AppendString("Scrollbar scrolling");
94 if (reasons & MainThreadScrollingReason::kPageOverlay) 95 if (reasons & MainThreadScrollingReason::kPageOverlay)
95 tracedValue->AppendString("Page overlay"); 96 tracedValue->AppendString("Page overlay");
96 if (reasons & MainThreadScrollingReason::kHandlingScrollFromMainThread) 97 if (reasons & MainThreadScrollingReason::kHandlingScrollFromMainThread)
97 tracedValue->AppendString("Handling scroll from main thread"); 98 tracedValue->AppendString("Handling scroll from main thread");
98 if (reasons & MainThreadScrollingReason::kCustomScrollbarScrolling) 99 if (reasons & MainThreadScrollingReason::kCustomScrollbarScrolling)
99 tracedValue->AppendString("Custom scrollbar scrolling"); 100 tracedValue->AppendString("Custom scrollbar scrolling");
101 if (reasons & MainThreadScrollingReason::kHasOpacity)
102 tracedValue->AppendString("Has opacity");
100 103
101 // Transient scrolling reasons. 104 // Transient scrolling reasons.
102 if (reasons & MainThreadScrollingReason::kNonFastScrollableRegion) 105 if (reasons & MainThreadScrollingReason::kNonFastScrollableRegion)
103 tracedValue->AppendString("Non fast scrollable region"); 106 tracedValue->AppendString("Non fast scrollable region");
104 if (reasons & MainThreadScrollingReason::kFailedHitTest) 107 if (reasons & MainThreadScrollingReason::kFailedHitTest)
105 tracedValue->AppendString("Failed hit test"); 108 tracedValue->AppendString("Failed hit test");
106 if (reasons & MainThreadScrollingReason::kNoScrollingLayer) 109 if (reasons & MainThreadScrollingReason::kNoScrollingLayer)
107 tracedValue->AppendString("No scrolling layer"); 110 tracedValue->AppendString("No scrolling layer");
108 if (reasons & MainThreadScrollingReason::kNotScrollable) 111 if (reasons & MainThreadScrollingReason::kNotScrollable)
109 tracedValue->AppendString("Not scrollable"); 112 tracedValue->AppendString("Not scrollable");
110 if (reasons & MainThreadScrollingReason::kContinuingMainThreadScroll) 113 if (reasons & MainThreadScrollingReason::kContinuingMainThreadScroll)
111 tracedValue->AppendString("Continuing main thread scroll"); 114 tracedValue->AppendString("Continuing main thread scroll");
112 if (reasons & MainThreadScrollingReason::kNonInvertibleTransform) 115 if (reasons & MainThreadScrollingReason::kNonInvertibleTransform)
113 tracedValue->AppendString("Non-invertible transform"); 116 tracedValue->AppendString("Non-invertible transform");
114 if (reasons & MainThreadScrollingReason::kPageBasedScrolling) 117 if (reasons & MainThreadScrollingReason::kPageBasedScrolling)
115 tracedValue->AppendString("Page-based scrolling"); 118 tracedValue->AppendString("Page-based scrolling");
116 tracedValue->EndArray(); 119 tracedValue->EndArray();
117 } 120 }
118 }; 121 };
119 122
120 } // namespace cc 123 } // namespace cc
121 124
122 #endif // CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_ 125 #endif // CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/frame/FrameView.h » ('j') | third_party/WebKit/Source/core/frame/FrameView.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698