| Index: cc/trees/property_tree.cc
|
| diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
|
| index d2b3783a5724dc82c0c44fadb6e5c24e3e3b5279..a09b4e058fb77a39bc27055772c7a5396a6da8e8 100644
|
| --- a/cc/trees/property_tree.cc
|
| +++ b/cc/trees/property_tree.cc
|
| @@ -1289,16 +1289,26 @@ gfx::ScrollOffset ScrollTree::PullDeltaForMainThread(
|
| return delta;
|
| }
|
|
|
| -void ScrollTree::CollectScrollDeltas(ScrollAndScaleSet* scroll_info) {
|
| +void ScrollTree::CollectScrollDeltas(ScrollAndScaleSet* scroll_info,
|
| + int inner_viewport_layer_id) {
|
| for (auto map_entry : layer_id_to_scroll_offset_map_) {
|
| gfx::ScrollOffset scroll_delta =
|
| PullDeltaForMainThread(map_entry.second.get());
|
|
|
| + gfx::Vector2d scroll_delta_vector(scroll_delta.x(), scroll_delta.y());
|
| + int layer_id = map_entry.first;
|
| +
|
| if (!scroll_delta.IsZero()) {
|
| - LayerTreeHostCommon::ScrollUpdateInfo scroll;
|
| - scroll.layer_id = map_entry.first;
|
| - scroll.scroll_delta = gfx::Vector2d(scroll_delta.x(), scroll_delta.y());
|
| - scroll_info->scrolls.push_back(scroll);
|
| + if (layer_id == inner_viewport_layer_id) {
|
| + // Inner (visual) viewport is stored separately.
|
| + scroll_info->inner_viewport_scroll.layer_id = layer_id;
|
| + scroll_info->inner_viewport_scroll.scroll_delta = scroll_delta_vector;
|
| + } else {
|
| + LayerTreeHostCommon::ScrollUpdateInfo scroll;
|
| + scroll.layer_id = layer_id;
|
| + scroll.scroll_delta = scroll_delta_vector;
|
| + scroll_info->scrolls.push_back(scroll);
|
| + }
|
| }
|
| }
|
| }
|
|
|