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

Unified Diff: cc/trees/layer_tree_impl.cc

Issue 2445093002: cc/blimp: Add synchronization for scroll/scale state. (Closed)
Patch Set: minor fix 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 89035df5acb5fefdcaf9ac8ef63e2b78e05c1aca..4922efe8e52e6cc9689f8d48ac7506e7afc92c75 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -2079,4 +2079,36 @@ void LayerTreeImpl::ResetAllChangeTracking() {
property_trees_.ResetAllChangeTracking();
}
+void LayerTreeImpl::SetReflectedMainFrameState(
+ std::unique_ptr<ReflectedMainFrameState> reflected_main_frame_state) {
+ 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.AddUnappliedDeltaOnPendingTree(
+ 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