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

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

Issue 2773593005: Move logic of recording main thread scrolling reasons from cc to blink::ScrollManager (Closed)
Patch Set: Bug fix Created 3 years, 9 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/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 kMainThreadScrollingReasonCount = 22, 60 kMainThreadScrollingReasonCount = 22,
61 }; 61 };
62 62
63 // Returns true if the given MainThreadScrollingReason can be set by the main 63 // Returns true if the given MainThreadScrollingReason can be set by the main
64 // thread. 64 // thread.
65 static bool MainThreadCanSetScrollReasons(uint32_t reasons) { 65 static bool MainThreadCanSetScrollReasons(uint32_t reasons) {
66 uint32_t reasons_set_by_main_thread = 66 uint32_t reasons_set_by_main_thread =
67 kNotScrollingOnMain | kHasBackgroundAttachmentFixedObjects | 67 kNotScrollingOnMain | kHasBackgroundAttachmentFixedObjects |
68 kHasNonLayerViewportConstrainedObjects | kThreadedScrollingDisabled | 68 kHasNonLayerViewportConstrainedObjects | kThreadedScrollingDisabled |
69 kScrollbarScrolling | kPageOverlay | kHandlingScrollFromMainThread | 69 kScrollbarScrolling | kPageOverlay | kHandlingScrollFromMainThread |
70 kCustomScrollbarScrolling | kHasOpacityAndLCDText | 70 kCustomScrollbarScrolling;
71 kHasTransformAndLCDText | kBackgroundNotOpaqueInRectAndLCDText |
72 kHasBorderRadius | kHasClipRelatedProperty |
73 kHasBoxShadowFromNonRootLayer;
74 return (reasons & reasons_set_by_main_thread) == reasons; 71 return (reasons & reasons_set_by_main_thread) == reasons;
75 } 72 }
76 73
77 // Returns true if the given MainThreadScrollingReason can be set by the 74 // Returns true if the given MainThreadScrollingReason can be set by the
78 // compositor. 75 // compositor.
79 static bool CompositorCanSetScrollReasons(uint32_t reasons) { 76 static bool CompositorCanSetScrollReasons(uint32_t reasons) {
80 uint32_t reasons_set_by_compositor = 77 uint32_t reasons_set_by_compositor =
81 kNonFastScrollableRegion | kFailedHitTest | kNoScrollingLayer | 78 kNonFastScrollableRegion | kFailedHitTest | kNoScrollingLayer |
82 kNotScrollable | kContinuingMainThreadScroll | kNonInvertibleTransform | 79 kNotScrollable | kContinuingMainThreadScroll | kNonInvertibleTransform |
83 kPageBasedScrolling; 80 kPageBasedScrolling;
84 return (reasons & reasons_set_by_compositor) == reasons; 81 return (reasons & reasons_set_by_compositor) == reasons;
85 } 82 }
86 83
84 // Returns true if the given MainThreadScrollingReason is non zero and
85 // contains any of the following non composited scroll reasons.
bokan 2017/03/28 15:30:15 The comment doesn't add anything - it says the exa
86 static bool NonCompositedScrollReasons(uint32_t reasons) {
87 uint32_t reasons_set_by_main_thread_only =
bokan 2017/03/28 15:30:15 reasons_set_by_main_thread_only -> non_composited_
88 kHasOpacityAndLCDText | kHasTransformAndLCDText |
89 kBackgroundNotOpaqueInRectAndLCDText | kHasBorderRadius |
90 kHasClipRelatedProperty | kHasBoxShadowFromNonRootLayer;
91 return reasons && (reasons & reasons_set_by_main_thread_only);
92 }
93
87 static std::string mainThreadScrollingReasonsAsText(uint32_t reasons) { 94 static std::string mainThreadScrollingReasonsAsText(uint32_t reasons) {
88 base::trace_event::TracedValue tracedValue; 95 base::trace_event::TracedValue tracedValue;
89 mainThreadScrollingReasonsAsTracedValue(reasons, &tracedValue); 96 mainThreadScrollingReasonsAsTracedValue(reasons, &tracedValue);
90 std::string result_in_array_foramt = tracedValue.ToString(); 97 std::string result_in_array_foramt = tracedValue.ToString();
91 // Remove '{main_thread_scrolling_reasons:[', ']}', and any '"' chars. 98 // Remove '{main_thread_scrolling_reasons:[', ']}', and any '"' chars.
92 std::string result = 99 std::string result =
93 result_in_array_foramt.substr(34, result_in_array_foramt.length() - 36); 100 result_in_array_foramt.substr(34, result_in_array_foramt.length() - 36);
94 base::Erase(result, '\"'); 101 base::Erase(result, '\"');
95 return result; 102 return result;
96 } 103 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 if (reasons & MainThreadScrollingReason::kNotScrollable) 148 if (reasons & MainThreadScrollingReason::kNotScrollable)
142 tracedValue->AppendString("Not scrollable"); 149 tracedValue->AppendString("Not scrollable");
143 if (reasons & MainThreadScrollingReason::kContinuingMainThreadScroll) 150 if (reasons & MainThreadScrollingReason::kContinuingMainThreadScroll)
144 tracedValue->AppendString("Continuing main thread scroll"); 151 tracedValue->AppendString("Continuing main thread scroll");
145 if (reasons & MainThreadScrollingReason::kNonInvertibleTransform) 152 if (reasons & MainThreadScrollingReason::kNonInvertibleTransform)
146 tracedValue->AppendString("Non-invertible transform"); 153 tracedValue->AppendString("Non-invertible transform");
147 if (reasons & MainThreadScrollingReason::kPageBasedScrolling) 154 if (reasons & MainThreadScrollingReason::kPageBasedScrolling)
148 tracedValue->AppendString("Page-based scrolling"); 155 tracedValue->AppendString("Page-based scrolling");
149 tracedValue->EndArray(); 156 tracedValue->EndArray();
150 } 157 }
151
152 // For a given reason, return its index in enum
153 static int getReasonIndex(uint32_t reason) {
154 // Multiple reasons provided
155 if (reason & (reason - 1))
156 return -1;
157
158 int index = -1;
159 while (reason > 0) {
160 reason = reason >> 1;
161 ++index;
162 }
163 return index;
164 }
165 }; 158 };
166 159
167 } // namespace cc 160 } // namespace cc
168 161
169 #endif // CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_ 162 #endif // CC_INPUT_MAIN_THREAD_SCROLLING_REASON_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698