| 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
|
|
|