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

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

Issue 2613743002: Clip related property and border radius are now recorded for UMA (Closed)
Patch Set: Test both LCD and non-LCD reasons Created 3 years, 11 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 #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
35 // Style Related scrolling on main reasons
34 kHasOpacity = 1 << 16, 36 kHasOpacity = 1 << 16,
35 kHasTransform = 1 << 17, 37 kHasTransform = 1 << 17,
36 kBackgroundNotOpaqueInRect = 1 << 18, 38 kBackgroundNotOpaqueInRect = 1 << 18,
39 kHasBorderRadius = 1 << 19,
40 kHasClipRelatedProperty = 1 << 20,
37 41
38 // Transient scrolling reasons. These are computed for each scroll begin. 42 // Transient scrolling reasons. These are computed for each scroll begin.
39 kNonFastScrollableRegion = 1 << 5, 43 kNonFastScrollableRegion = 1 << 5,
40 kFailedHitTest = 1 << 7, 44 kFailedHitTest = 1 << 7,
41 kNoScrollingLayer = 1 << 8, 45 kNoScrollingLayer = 1 << 8,
42 kNotScrollable = 1 << 9, 46 kNotScrollable = 1 << 9,
43 kContinuingMainThreadScroll = 1 << 10, 47 kContinuingMainThreadScroll = 1 << 10,
44 kNonInvertibleTransform = 1 << 11, 48 kNonInvertibleTransform = 1 << 11,
45 kPageBasedScrolling = 1 << 12, 49 kPageBasedScrolling = 1 << 12,
46 50
47 // The number of flags in this struct (excluding itself). 51 // TODO(yigu): the following variable is confusing. It's not the count of
48 kMainThreadScrollingReasonCount = 20, 52 // values, but the maximum shift + 2 because the loop in
53 // InputHandlerProxy::RecordMainThreadScrollingReasons is wrong. Will fix it
54 // in a followup patch.
55 kMainThreadScrollingReasonCount = 22,
49 }; 56 };
50 57
51 // Returns true if the given MainThreadScrollingReason can be set by the main 58 // Returns true if the given MainThreadScrollingReason can be set by the main
52 // thread. 59 // thread.
53 static bool MainThreadCanSetScrollReasons(uint32_t reasons) { 60 static bool MainThreadCanSetScrollReasons(uint32_t reasons) {
54 uint32_t reasons_set_by_main_thread = 61 uint32_t reasons_set_by_main_thread =
55 kNotScrollingOnMain | kHasBackgroundAttachmentFixedObjects | 62 kNotScrollingOnMain | kHasBackgroundAttachmentFixedObjects |
56 kHasNonLayerViewportConstrainedObjects | kThreadedScrollingDisabled | 63 kHasNonLayerViewportConstrainedObjects | kThreadedScrollingDisabled |
57 kScrollbarScrolling | kPageOverlay | kHandlingScrollFromMainThread | 64 kScrollbarScrolling | kPageOverlay | kHandlingScrollFromMainThread |
58 kCustomScrollbarScrolling | kHasOpacity | kHasTransform | 65 kCustomScrollbarScrolling | kHasOpacity | kHasTransform |
59 kBackgroundNotOpaqueInRect; 66 kBackgroundNotOpaqueInRect | kHasBorderRadius | kHasClipRelatedProperty;
60 return (reasons & reasons_set_by_main_thread) == reasons; 67 return (reasons & reasons_set_by_main_thread) == reasons;
61 } 68 }
62 69
63 // Returns true if the given MainThreadScrollingReason can be set by the 70 // Returns true if the given MainThreadScrollingReason can be set by the
64 // compositor. 71 // compositor.
65 static bool CompositorCanSetScrollReasons(uint32_t reasons) { 72 static bool CompositorCanSetScrollReasons(uint32_t reasons) {
66 uint32_t reasons_set_by_compositor = 73 uint32_t reasons_set_by_compositor =
67 kNonFastScrollableRegion | kFailedHitTest | kNoScrollingLayer | 74 kNonFastScrollableRegion | kFailedHitTest | kNoScrollingLayer |
68 kNotScrollable | kContinuingMainThreadScroll | kNonInvertibleTransform | 75 kNotScrollable | kContinuingMainThreadScroll | kNonInvertibleTransform |
69 kPageBasedScrolling; 76 kPageBasedScrolling;
(...skipping 30 matching lines...) Expand all
100 if (reasons & MainThreadScrollingReason::kHandlingScrollFromMainThread) 107 if (reasons & MainThreadScrollingReason::kHandlingScrollFromMainThread)
101 tracedValue->AppendString("Handling scroll from main thread"); 108 tracedValue->AppendString("Handling scroll from main thread");
102 if (reasons & MainThreadScrollingReason::kCustomScrollbarScrolling) 109 if (reasons & MainThreadScrollingReason::kCustomScrollbarScrolling)
103 tracedValue->AppendString("Custom scrollbar scrolling"); 110 tracedValue->AppendString("Custom scrollbar scrolling");
104 if (reasons & MainThreadScrollingReason::kHasOpacity) 111 if (reasons & MainThreadScrollingReason::kHasOpacity)
105 tracedValue->AppendString("Has opacity"); 112 tracedValue->AppendString("Has opacity");
106 if (reasons & MainThreadScrollingReason::kHasTransform) 113 if (reasons & MainThreadScrollingReason::kHasTransform)
107 tracedValue->AppendString("Has transform"); 114 tracedValue->AppendString("Has transform");
108 if (reasons & MainThreadScrollingReason::kBackgroundNotOpaqueInRect) 115 if (reasons & MainThreadScrollingReason::kBackgroundNotOpaqueInRect)
109 tracedValue->AppendString("Background is not opaque in rect"); 116 tracedValue->AppendString("Background is not opaque in rect");
117 if (reasons & MainThreadScrollingReason::kHasBorderRadius)
118 tracedValue->AppendString("Has border radius");
119 if (reasons & MainThreadScrollingReason::kHasClipRelatedProperty)
120 tracedValue->AppendString("Has clip related property");
110 121
111 // Transient scrolling reasons. 122 // Transient scrolling reasons.
112 if (reasons & MainThreadScrollingReason::kNonFastScrollableRegion) 123 if (reasons & MainThreadScrollingReason::kNonFastScrollableRegion)
113 tracedValue->AppendString("Non fast scrollable region"); 124 tracedValue->AppendString("Non fast scrollable region");
114 if (reasons & MainThreadScrollingReason::kFailedHitTest) 125 if (reasons & MainThreadScrollingReason::kFailedHitTest)
115 tracedValue->AppendString("Failed hit test"); 126 tracedValue->AppendString("Failed hit test");
116 if (reasons & MainThreadScrollingReason::kNoScrollingLayer) 127 if (reasons & MainThreadScrollingReason::kNoScrollingLayer)
117 tracedValue->AppendString("No scrolling layer"); 128 tracedValue->AppendString("No scrolling layer");
118 if (reasons & MainThreadScrollingReason::kNotScrollable) 129 if (reasons & MainThreadScrollingReason::kNotScrollable)
119 tracedValue->AppendString("Not scrollable"); 130 tracedValue->AppendString("Not scrollable");
(...skipping 17 matching lines...) Expand all
137 reason = reason >> 1; 148 reason = reason >> 1;
138 ++index; 149 ++index;
139 } 150 }
140 return index; 151 return index;
141 } 152 }
142 }; 153 };
143 154
144 } // namespace cc 155 } // namespace cc
145 156
146 #endif // CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_ 157 #endif // CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698