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

Unified Diff: cc/trees/layer_tree_impl.cc

Issue 2445093002: cc/blimp: Add synchronization for scroll/scale state. (Closed)
Patch Set: Addressed comments Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: cc/trees/layer_tree_impl.cc
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index 27c7cb429e6c00a2681847ba4d1c60bda05ce399..29fd1a7f44546f79f022d2228ea735282b19d673 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -2078,4 +2078,37 @@ void LayerTreeImpl::ResetAllChangeTracking() {
property_trees_.ResetAllChangeTracking();
}
+void LayerTreeImpl::SetReflectedMainFrameState(
+ std::unique_ptr<ReflectedMainFrameState> reflected_main_frame_state) {
+ DCHECK(!IsActiveTree());
+ reflected_main_frame_state_ = std::move(reflected_main_frame_state);
+}
+
+void LayerTreeImpl::ApplyReflectedMainFrameState() {
+ DCHECK(!IsActiveTree());
+
+ if (reflected_main_frame_state_) {
+ for (const auto& scroll_update : reflected_main_frame_state_->scrolls) {
+ // The reflected scroll updates should have been sent only for layers
+ // in the main frame, and the updates are applied after the main frame is
+ // committed to the pending tree, so the layer must be present in the
+ // pending tree.
+ DCHECK(LayerById(scroll_update.layer_id));
+
+ property_trees()->scroll_tree.AddUnappliedScrollOffsetDeltaToPendingTree(
+ scroll_update.layer_id,
+ gfx::ScrollOffset(scroll_update.scroll_delta));
+ DidUpdateScrollOffset(scroll_update.layer_id);
+ }
+
+ float page_scale_delta = reflected_main_frame_state_->page_scale_delta;
+ if (page_scale_delta != 1.0f) {
+ page_scale_factor_->AddUnappliedDeltaToPendingBase(page_scale_delta);
+ DidUpdatePageScale();
+ }
+
+ reflected_main_frame_state_ = nullptr;
+ }
+}
+
} // namespace cc

Powered by Google App Engine
This is Rietveld 408576698