Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index 915f7ea72f25aaea11529420ca982b2b29ed0de3..0b11e6e4a5be27433d1d87ac4d3dd7e028297577 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -265,8 +265,8 @@ LayerTreeHostImpl::LayerTreeHostImpl( |
// LTHI always has an active tree. |
active_tree_ = base::MakeUnique<LayerTreeImpl>( |
- this, new SyncedProperty<ScaleGroup>, new SyncedBrowserControls, |
- new SyncedElasticOverscroll); |
+ this, new SyncedProperty<ScaleGroup>, new SyncedProperty<ScaleGroup>, |
+ new SyncedBrowserControls, new SyncedElasticOverscroll); |
active_tree_->property_trees()->is_active = true; |
viewport_ = Viewport::Create(this); |
@@ -1198,10 +1198,11 @@ void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) { |
void LayerTreeHostImpl::ResetTreesForTesting() { |
if (active_tree_) |
active_tree_->DetachLayers(); |
- active_tree_ = |
- base::MakeUnique<LayerTreeImpl>(this, active_tree()->page_scale_factor(), |
- active_tree()->top_controls_shown_ratio(), |
- active_tree()->elastic_overscroll()); |
+ active_tree_ = base::MakeUnique<LayerTreeImpl>( |
+ this, active_tree()->page_scale_factor(), |
+ active_tree()->subframe_page_scale_factor(), |
+ active_tree()->top_controls_shown_ratio(), |
+ active_tree()->elastic_overscroll()); |
active_tree_->property_trees()->is_active = true; |
if (pending_tree_) |
pending_tree_->DetachLayers(); |
@@ -1541,6 +1542,7 @@ CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const { |
active_tree_->device_scale_factor(); |
metadata.page_scale_factor = active_tree_->current_page_scale_factor(); |
+ // TODO(wjmaclean): Should we sxpose subframe PSF here? |
metadata.scrollable_viewport_size = active_tree_->ScrollableViewportSize(); |
metadata.root_layer_size = active_tree_->ScrollableSize(); |
metadata.min_page_scale_factor = active_tree_->min_page_scale_factor(); |
@@ -1952,6 +1954,7 @@ void LayerTreeHostImpl::CreatePendingTree() { |
} else { |
pending_tree_ = base::MakeUnique<LayerTreeImpl>( |
this, active_tree()->page_scale_factor(), |
+ active_tree()->subframe_page_scale_factor(), |
active_tree()->top_controls_shown_ratio(), |
active_tree()->elastic_overscroll()); |
} |
@@ -3318,9 +3321,14 @@ void LayerTreeHostImpl::PinchGestureBegin() { |
void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta, |
const gfx::Point& anchor) { |
TRACE_EVENT0("cc", "LayerTreeHostImpl::PinchGestureUpdate"); |
- if (!InnerViewportScrollLayer()) |
- return; |
- viewport()->PinchUpdate(magnify_delta, anchor); |
+ if (InnerViewportScrollLayer()) { |
+ viewport()->PinchUpdate(magnify_delta, anchor); |
+ } else { |
+ float subframe_page_scale_factor = |
+ active_tree_->GetSubframePageScaleFactor(); |
+ subframe_page_scale_factor *= magnify_delta; |
+ active_tree_->SetSubframePageScaleOnActiveTree(subframe_page_scale_factor); |
+ } |
client_->SetNeedsCommitOnImplThread(); |
SetNeedsRedraw(); |
client_->RenewTreePriority(); |