Chromium Code Reviews| Index: cc/trees/layer_tree_impl.cc |
| diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc |
| index 7290a5d122b036a0134f2af27ba0e156759eacca..23fe894d2d109e11e314aa1b69ab26cd3e430230 100644 |
| --- a/cc/trees/layer_tree_impl.cc |
| +++ b/cc/trees/layer_tree_impl.cc |
| @@ -162,6 +162,8 @@ bool LayerTreeImpl::IsViewportLayerId(int id) const { |
| void LayerTreeImpl::DidUpdateScrollOffset(int layer_id) { |
| DidUpdateScrollState(layer_id); |
| + |
| + DCHECK(PropertyTreeSyncComplete()); |
| TransformTree& transform_tree = property_trees()->transform_tree; |
| ScrollTree& scroll_tree = property_trees()->scroll_tree; |
| int transform_id = TransformTree::kInvalidNodeId; |
| @@ -199,6 +201,10 @@ void LayerTreeImpl::DidUpdateScrollState(int layer_id) { |
| if (!IsActiveTree()) |
| return; |
| + // If we are syncing, the scroll_clip_layer properties should be up-to-date. |
| + // TODO(pdr): This DCHECK fails on existing tests but should be enabled. |
| + // DCHECK(layer_tree_host_impl_->SyncStateComplete(SYNCED_LAYER_PROPERTIES)); |
|
jaydasika
2017/05/12 18:19:16
Something related I just noticed : LayerImpl::SetB
pdr.
2017/05/15 18:30:24
+1, this bug is all over :(
|
| + |
| if (layer_id == Layer::INVALID_ID) |
| return; |
| @@ -382,10 +388,7 @@ void LayerTreeImpl::SetPropertyTrees(PropertyTrees* property_trees) { |
| property_trees_.transform_tree.set_source_to_parent_updates_allowed(false); |
| } |
| -void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { |
| - // The request queue should have been processed and does not require a push. |
| - DCHECK_EQ(ui_resource_request_queue_.size(), 0u); |
| - |
| +void LayerTreeImpl::PushPropertyTreesTo(LayerTreeImpl* target_tree) { |
| // To maintain the current scrolling node we need to use element ids which |
| // are stable across the property tree update in SetPropertyTrees. |
| ElementId scrolling_element_id; |
| @@ -400,6 +403,11 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { |
| scrolling_node = scroll_tree.FindNodeFromElementId(scrolling_element_id); |
| } |
| target_tree->SetCurrentlyScrollingNode(scrolling_node); |
|
chrishtr
2017/05/12 23:13:29
"just noting" --wkorman
It seems perhaps this fie
|
| +} |
| + |
| +void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { |
| + // The request queue should have been processed and does not require a push. |
| + DCHECK_EQ(ui_resource_request_queue_.size(), 0u); |
| target_tree->property_trees()->scroll_tree.PushScrollUpdatesFromPendingTree( |
| &property_trees_, target_tree); |
| @@ -768,6 +776,7 @@ void LayerTreeImpl::UpdatePropertyTreeScrollingAndAnimationFromMainThread( |
| void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { |
| DCHECK(IsActiveTree()); |
| + DCHECK(PropertyTreeSyncComplete()); |
| if (page_scale_factor()->SetCurrent( |
| ClampPageScaleFactorToLimits(active_page_scale))) { |
| DidUpdatePageScale(); |
| @@ -818,6 +827,7 @@ void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, |
| if (changed_page_scale) |
| DidUpdatePageScale(); |
| + DCHECK(PropertyTreeSyncComplete()); |
| if (page_scale_factor) { |
| if (PageScaleLayer()) { |
| draw_property_utils::UpdatePageScaleFactor( |
| @@ -994,6 +1004,10 @@ void LayerTreeImpl::ClearViewportLayers() { |
| } |
| void LayerTreeImpl::UpdateViewportLayerTypes() { |
| + // If we are syncing, the scroll_clip_layer properties should be up-to-date. |
| + // TODO(pdr): This DCHECK fails on existing tests but should be enabled. |
|
enne (OOO)
2017/05/12 17:25:06
This is a pre-existing data inconsistency, I guess
pdr.
2017/05/15 18:30:24
This is due to how https://codereview.chromium.org
pdr.
2017/05/15 18:56:42
I've reverted this change and will do it in a foll
|
| + // DCHECK(layer_tree_host_impl_->SyncStateComplete(SYNCED_LAYER_PROPERTIES)); |
| + |
| if (auto* inner_scroll = LayerById(inner_viewport_scroll_layer_id_)) { |
| inner_scroll->SetViewportLayerType(INNER_VIEWPORT_SCROLL); |
| if (auto* inner_container = inner_scroll->scroll_clip_layer()) |