Index: cc/layers/layer.cc |
diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc |
index 24ae93291ebf13f2f225c3c6231e8f084b03b736..1899c331e8d183f0e39a59d5c838663d6e04ca1a 100644 |
--- a/cc/layers/layer.cc |
+++ b/cc/layers/layer.cc |
@@ -954,18 +954,23 @@ void Layer::AddMainThreadScrollingReasons( |
uint32_t main_thread_scrolling_reasons) { |
DCHECK(IsPropertyChangeAllowed()); |
DCHECK(main_thread_scrolling_reasons); |
- if (main_thread_scrolling_reasons_ == main_thread_scrolling_reasons) |
+ uint32_t new_reasons = |
+ main_thread_scrolling_reasons_ | main_thread_scrolling_reasons; |
+ if (main_thread_scrolling_reasons_ == new_reasons) |
return; |
- main_thread_scrolling_reasons_ |= main_thread_scrolling_reasons; |
+ main_thread_scrolling_reasons_ = new_reasons; |
SetNeedsCommit(); |
} |
-void Layer::ClearMainThreadScrollingReasons() { |
+void Layer::ClearMainThreadScrollingReasons( |
+ uint32_t main_thread_scrolling_reasons_to_clear) { |
DCHECK(IsPropertyChangeAllowed()); |
- if (!main_thread_scrolling_reasons_) |
+ DCHECK(main_thread_scrolling_reasons_to_clear); |
+ uint32_t new_reasons = |
+ ~main_thread_scrolling_reasons_to_clear & main_thread_scrolling_reasons_; |
+ if (new_reasons == main_thread_scrolling_reasons_) |
return; |
- main_thread_scrolling_reasons_ = |
- MainThreadScrollingReason::kNotScrollingOnMain; |
+ main_thread_scrolling_reasons_ = new_reasons; |
SetNeedsCommit(); |
} |