| Index: cc/trees/layer_tree_host.cc
|
| diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
|
| index 5e19eb3eb3c8acb70f68dba1d64863f6bb806297..bb81ee8a4497a084e8c2f91df0286007db1512a9 100644
|
| --- a/cc/trees/layer_tree_host.cc
|
| +++ b/cc/trees/layer_tree_host.cc
|
| @@ -20,6 +20,7 @@
|
| #include "cc/base/thread.h"
|
| #include "cc/debug/overdraw_metrics.h"
|
| #include "cc/debug/rendering_stats_instrumentation.h"
|
| +#include "cc/input/inner_viewport_scrollbar.h"
|
| #include "cc/input/top_controls_manager.h"
|
| #include "cc/layers/heads_up_display_layer.h"
|
| #include "cc/layers/heads_up_display_layer_impl.h"
|
| @@ -314,6 +315,14 @@ void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) {
|
|
|
| sync_tree->FindRootScrollLayer();
|
|
|
| + if (settings_.use_pinch_virtual_viewport && page_scale_layer_) {
|
| + DCHECK(inner_viewport_scroll_layer_);
|
| + DCHECK(outer_viewport_scroll_layer_);
|
| + sync_tree->SetPinchViewportLayerIds(page_scale_layer_->id(),
|
| + inner_viewport_scroll_layer_->id(),
|
| + outer_viewport_scroll_layer_->id());
|
| + }
|
| +
|
| float page_scale_delta, sent_page_scale_delta;
|
| if (settings_.impl_side_painting) {
|
| // Update the delta from the active tree, which may have
|
| @@ -544,6 +553,58 @@ void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) {
|
| SetNeedsFullTreeSync();
|
| }
|
|
|
| +static void SetupInnerViewportScrollbar(Layer* parent,
|
| + scoped_refptr<Layer>& scrollbar,
|
| + scoped_refptr<Layer> scroll_layer,
|
| + scoped_refptr<Layer> clip_layer,
|
| + ScrollbarOrientation orientation) {
|
| + int scrollbar_thickness =
|
| + orientation == HORIZONTAL ? parent->bounds().height()
|
| + : parent->bounds().width();
|
| + scrollbar = ScrollbarLayer::Create(
|
| + make_scoped_ptr(new InnerViewportScrollbar(
|
| + scroll_layer, clip_layer, orientation, scrollbar_thickness))
|
| + .PassAs<Scrollbar>(),
|
| + scroll_layer->id());
|
| + parent->RemoveAllChildren();
|
| + parent->AddChild(scrollbar);
|
| + scrollbar->SetBounds(parent->bounds());
|
| + scrollbar->SetIsDrawable(true);
|
| +}
|
| +
|
| +void LayerTreeHost::RegisterPinchViewportLayers(
|
| + scoped_refptr<Layer> inner_viewport_clip_layer,
|
| + scoped_refptr<Layer> page_scale_layer,
|
| + scoped_refptr<Layer> inner_viewport_scroll_layer,
|
| + scoped_refptr<Layer> outer_viewport_scroll_layer,
|
| + scoped_refptr<Layer> inner_viewport_horizontal_scrollbar_layer,
|
| + scoped_refptr<Layer> inner_viewport_vertical_scrollbar_layer) {
|
| + inner_viewport_clip_layer_ = inner_viewport_clip_layer;
|
| + page_scale_layer_ = page_scale_layer;
|
| + inner_viewport_scroll_layer_ = inner_viewport_scroll_layer;
|
| + outer_viewport_scroll_layer_ = outer_viewport_scroll_layer;
|
| +
|
| + if (inner_viewport_horizontal_scrollbar_layer) {
|
| + SetupInnerViewportScrollbar(inner_viewport_horizontal_scrollbar_layer,
|
| + inner_viewport_horizontal_scrollbar_layer_,
|
| + inner_viewport_scroll_layer,
|
| + inner_viewport_clip_layer,
|
| + HORIZONTAL);
|
| + } else {
|
| + inner_viewport_horizontal_scrollbar_layer_ = nullptr;
|
| + }
|
| +
|
| + if (inner_viewport_vertical_scrollbar_layer) {
|
| + SetupInnerViewportScrollbar(inner_viewport_vertical_scrollbar_layer,
|
| + inner_viewport_vertical_scrollbar_layer_,
|
| + inner_viewport_scroll_layer,
|
| + inner_viewport_clip_layer,
|
| + VERTICAL);
|
| + } else {
|
| + inner_viewport_vertical_scrollbar_layer_ = nullptr;
|
| + }
|
| +}
|
| +
|
| void LayerTreeHost::SetDebugState(const LayerTreeDebugState& debug_state) {
|
| LayerTreeDebugState new_debug_state =
|
| LayerTreeDebugState::Unite(settings_.initial_debug_state, debug_state);
|
| @@ -717,6 +778,8 @@ void LayerTreeHost::UpdateLayers(Layer* root_layer,
|
| UpdateHudLayer();
|
|
|
| Layer* root_scroll = FindFirstScrollableLayer(root_layer);
|
| + Layer* page_scale_layer =
|
| + page_scale_layer_ ? page_scale_layer_.get() : root_scroll;
|
|
|
| TRACE_EVENT0("cc", "LayerTreeHost::UpdateLayers::CalcDrawProps");
|
| LayerTreeHostCommon::CalculateDrawProperties(
|
| @@ -725,7 +788,7 @@ void LayerTreeHost::UpdateLayers(Layer* root_layer,
|
| gfx::Transform(),
|
| device_scale_factor_,
|
| page_scale_factor_,
|
| - root_scroll,
|
| + page_scale_layer,
|
| GetRendererCapabilities().max_texture_size,
|
| settings_.can_use_lcd_text,
|
| settings_.layer_transforms_should_scale_layer_contents,
|
|
|