| Index: cc/trees/layer_tree_host.cc
|
| diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
|
| index 361fae14285e58f5675126d4a16d9b1338a79e11..22b11967e6f0795b186e0f70e5ae3ea5d317b12a 100644
|
| --- a/cc/trees/layer_tree_host.cc
|
| +++ b/cc/trees/layer_tree_host.cc
|
| @@ -363,6 +363,9 @@ void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) {
|
|
|
| sync_tree->PushPageScaleFromMainThread(
|
| page_scale_factor_, min_page_scale_factor_, max_page_scale_factor_);
|
| + sync_tree->elastic_overscroll()->PushFromMainThread(elastic_overscroll_);
|
| + if (sync_tree->IsActiveTree())
|
| + sync_tree->elastic_overscroll()->PushPendingToActive();
|
|
|
| sync_tree->PassSwapPromises(&swap_promise_list_);
|
|
|
| @@ -875,6 +878,7 @@ bool LayerTreeHost::UpdateLayers(Layer* root_layer,
|
| LayerTreeHostCommon::CalcDrawPropsMainInputs inputs(
|
| root_layer, device_viewport_size(), gfx::Transform(),
|
| device_scale_factor_, page_scale_factor_, page_scale_layer,
|
| + elastic_overscroll_, overscroll_elasticity_layer_.get(),
|
| GetRendererCapabilities().max_texture_size, settings_.can_use_lcd_text,
|
| settings_.layers_always_allowed_lcd_text,
|
| can_render_to_separate_surface,
|
| @@ -1126,9 +1130,8 @@ void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) {
|
| }
|
|
|
| if (!inner_viewport_scroll_delta.IsZero() ||
|
| - !outer_viewport_scroll_delta.IsZero() ||
|
| - info->page_scale_delta != 1.f ||
|
| - info->top_controls_delta) {
|
| + !outer_viewport_scroll_delta.IsZero() || info->page_scale_delta != 1.f ||
|
| + !info->elastic_overscroll_delta.IsZero() || info->top_controls_delta) {
|
| // Preemptively apply the scroll offset and scale delta here before sending
|
| // it to the client. If the client comes back and sets it to the same
|
| // value, then the layer can early out without needing a full commit.
|
| @@ -1147,12 +1150,15 @@ void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) {
|
| }
|
|
|
| ApplyPageScaleDeltaFromImplSide(info->page_scale_delta);
|
| + elastic_overscroll_ += info->elastic_overscroll_delta;
|
| if (!settings_.use_pinch_virtual_viewport) {
|
| client_->ApplyViewportDeltas(
|
| inner_viewport_scroll_delta + outer_viewport_scroll_delta,
|
| info->page_scale_delta,
|
| info->top_controls_delta);
|
| } else {
|
| + // TODO(ccameron): pass the elastic overscroll here so that input events
|
| + // may be translated appropriately.
|
| client_->ApplyViewportDeltas(
|
| inner_viewport_scroll_delta,
|
| outer_viewport_scroll_delta,
|
|
|