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

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: 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 // The number of flags in this struct (excluding itself).
bokan 2017/01/05 14:05:48 Please update this comment to describe the foot ca
yigu 2017/01/05 14:46:50 Done.
48 kMainThreadScrollingReasonCount = 20, 52 kMainThreadScrollingReasonCount = 22,
49 }; 53 };
50 54
51 // Returns true if the given MainThreadScrollingReason can be set by the main 55 // Returns true if the given MainThreadScrollingReason can be set by the main
52 // thread. 56 // thread.
53 static bool MainThreadCanSetScrollReasons(uint32_t reasons) { 57 static bool MainThreadCanSetScrollReasons(uint32_t reasons) {
54 uint32_t reasons_set_by_main_thread = 58 uint32_t reasons_set_by_main_thread =
55 kNotScrollingOnMain | kHasBackgroundAttachmentFixedObjects | 59 kNotScrollingOnMain | kHasBackgroundAttachmentFixedObjects |
56 kHasNonLayerViewportConstrainedObjects | kThreadedScrollingDisabled | 60 kHasNonLayerViewportConstrainedObjects | kThreadedScrollingDisabled |
57 kScrollbarScrolling | kPageOverlay | kHandlingScrollFromMainThread | 61 kScrollbarScrolling | kPageOverlay | kHandlingScrollFromMainThread |
58 kCustomScrollbarScrolling | kHasOpacity | kHasTransform | 62 kCustomScrollbarScrolling | kHasOpacity | kHasTransform |
59 kBackgroundNotOpaqueInRect; 63 kBackgroundNotOpaqueInRect | kHasBorderRadius | kHasClipRelatedProperty;
60 return (reasons & reasons_set_by_main_thread) == reasons; 64 return (reasons & reasons_set_by_main_thread) == reasons;
61 } 65 }
62 66
63 // Returns true if the given MainThreadScrollingReason can be set by the 67 // Returns true if the given MainThreadScrollingReason can be set by the
64 // compositor. 68 // compositor.
65 static bool CompositorCanSetScrollReasons(uint32_t reasons) { 69 static bool CompositorCanSetScrollReasons(uint32_t reasons) {
66 uint32_t reasons_set_by_compositor = 70 uint32_t reasons_set_by_compositor =
67 kNonFastScrollableRegion | kFailedHitTest | kNoScrollingLayer | 71 kNonFastScrollableRegion | kFailedHitTest | kNoScrollingLayer |
68 kNotScrollable | kContinuingMainThreadScroll | kNonInvertibleTransform | 72 kNotScrollable | kContinuingMainThreadScroll | kNonInvertibleTransform |
69 kPageBasedScrolling; 73 kPageBasedScrolling;
(...skipping 30 matching lines...) Expand all
100 if (reasons & MainThreadScrollingReason::kHandlingScrollFromMainThread) 104 if (reasons & MainThreadScrollingReason::kHandlingScrollFromMainThread)
101 tracedValue->AppendString("Handling scroll from main thread"); 105 tracedValue->AppendString("Handling scroll from main thread");
102 if (reasons & MainThreadScrollingReason::kCustomScrollbarScrolling) 106 if (reasons & MainThreadScrollingReason::kCustomScrollbarScrolling)
103 tracedValue->AppendString("Custom scrollbar scrolling"); 107 tracedValue->AppendString("Custom scrollbar scrolling");
104 if (reasons & MainThreadScrollingReason::kHasOpacity) 108 if (reasons & MainThreadScrollingReason::kHasOpacity)
105 tracedValue->AppendString("Has opacity"); 109 tracedValue->AppendString("Has opacity");
106 if (reasons & MainThreadScrollingReason::kHasTransform) 110 if (reasons & MainThreadScrollingReason::kHasTransform)
107 tracedValue->AppendString("Has transform"); 111 tracedValue->AppendString("Has transform");
108 if (reasons & MainThreadScrollingReason::kBackgroundNotOpaqueInRect) 112 if (reasons & MainThreadScrollingReason::kBackgroundNotOpaqueInRect)
109 tracedValue->AppendString("Background is not opaque in rect"); 113 tracedValue->AppendString("Background is not opaque in rect");
114 if (reasons & MainThreadScrollingReason::kHasBorderRadius)
115 tracedValue->AppendString("Has border radius");
116 if (reasons & MainThreadScrollingReason::kHasClipRelatedProperty)
117 tracedValue->AppendString("Has clip related property");
110 118
111 // Transient scrolling reasons. 119 // Transient scrolling reasons.
112 if (reasons & MainThreadScrollingReason::kNonFastScrollableRegion) 120 if (reasons & MainThreadScrollingReason::kNonFastScrollableRegion)
113 tracedValue->AppendString("Non fast scrollable region"); 121 tracedValue->AppendString("Non fast scrollable region");
114 if (reasons & MainThreadScrollingReason::kFailedHitTest) 122 if (reasons & MainThreadScrollingReason::kFailedHitTest)
115 tracedValue->AppendString("Failed hit test"); 123 tracedValue->AppendString("Failed hit test");
116 if (reasons & MainThreadScrollingReason::kNoScrollingLayer) 124 if (reasons & MainThreadScrollingReason::kNoScrollingLayer)
117 tracedValue->AppendString("No scrolling layer"); 125 tracedValue->AppendString("No scrolling layer");
118 if (reasons & MainThreadScrollingReason::kNotScrollable) 126 if (reasons & MainThreadScrollingReason::kNotScrollable)
119 tracedValue->AppendString("Not scrollable"); 127 tracedValue->AppendString("Not scrollable");
(...skipping 17 matching lines...) Expand all
137 reason = reason >> 1; 145 reason = reason >> 1;
138 ++index; 146 ++index;
139 } 147 }
140 return index; 148 return index;
141 } 149 }
142 }; 150 };
143 151
144 } // namespace cc 152 } // namespace cc
145 153
146 #endif // CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_ 154 #endif // CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698