Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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_ |
| OLD | NEW |