| 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 d93593f9ae0c38c0f4ff621ee7878dab7274b28f..2278a4ac23330a062951732300ed9ce145b70cb4 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -257,7 +257,6 @@ LayerTreeHostImpl::LayerTreeHostImpl(
|
| zero_budget_(false),
|
| device_scale_factor_(1.f),
|
| overhang_ui_resource_id_(0),
|
| - top_controls_layout_height_(0.f),
|
| resourceless_software_draw_(false),
|
| begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()),
|
| animation_registrar_(AnimationRegistrar::Create()),
|
| @@ -1479,9 +1478,9 @@ CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const {
|
| metadata.max_page_scale_factor = active_tree_->max_page_scale_factor();
|
| if (top_controls_manager_) {
|
| metadata.location_bar_offset =
|
| - gfx::Vector2dF(0.f, top_controls_manager_->controls_top_offset());
|
| + gfx::Vector2dF(0.f, top_controls_manager_->ControlsTopOffset());
|
| metadata.location_bar_content_translation =
|
| - gfx::Vector2dF(0.f, top_controls_manager_->content_top_offset());
|
| + gfx::Vector2dF(0.f, top_controls_manager_->ContentTopOffset());
|
| }
|
|
|
| active_tree_->GetViewportSelection(&metadata.selection_start,
|
| @@ -1692,11 +1691,21 @@ void LayerTreeHostImpl::UpdateInnerViewportContainerSize() {
|
| if (!container_layer)
|
| return;
|
|
|
| - if (top_controls_manager_)
|
| + if (top_controls_manager_) {
|
| container_layer->SetBoundsDelta(
|
| - gfx::Vector2dF(0,
|
| - top_controls_layout_height_ -
|
| - top_controls_manager_->content_top_offset()));
|
| + gfx::Vector2dF(0, active_tree_->top_controls_layout_height() -
|
| + active_tree_->total_top_controls_top_offset() -
|
| + top_controls_manager_->controls_height()));
|
| + }
|
| +}
|
| +
|
| +void LayerTreeHostImpl::SetTopControlsLayoutHeight(float height) {
|
| + if (active_tree_->top_controls_layout_height() == height)
|
| + return;
|
| +
|
| + active_tree_->set_top_controls_layout_height(height);
|
| + UpdateInnerViewportContainerSize();
|
| + SetFullRootLayerDamage();
|
| }
|
|
|
| void LayerTreeHostImpl::DidLoseOutputSurface() {
|
| @@ -1761,8 +1770,12 @@ void LayerTreeHostImpl::CreatePendingTree() {
|
| // Update the delta from the active tree, which may have
|
| // adjusted its delta prior to the pending tree being created.
|
| DCHECK_EQ(1.f, pending_tree_->sent_page_scale_delta());
|
| + DCHECK_EQ(0.f, pending_tree_->sent_top_controls_delta());
|
| pending_tree_->SetPageScaleDelta(active_tree_->page_scale_delta() /
|
| active_tree_->sent_page_scale_delta());
|
| + pending_tree_->set_top_controls_delta(
|
| + active_tree_->top_controls_delta() -
|
| + active_tree_->sent_top_controls_delta());
|
|
|
| client_->OnCanDrawStateChanged(CanDraw());
|
| TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree:waiting", pending_tree_.get());
|
| @@ -1805,6 +1818,12 @@ void LayerTreeHostImpl::ActivateSyncTree() {
|
|
|
| active_tree_->SetRootLayerScrollOffsetDelegate(
|
| root_layer_scroll_offset_delegate_);
|
| +
|
| + if (top_controls_manager_) {
|
| + top_controls_manager_->SetControlsTopOffset(
|
| + active_tree_->total_top_controls_top_offset());
|
| + }
|
| +
|
| UpdateInnerViewportContainerSize();
|
| } else {
|
| active_tree_->ProcessUIResourceRequestQueue();
|
| @@ -2158,16 +2177,6 @@ void LayerTreeHostImpl::SetViewportSize(const gfx::Size& device_viewport_size) {
|
| active_tree_->set_needs_update_draw_properties();
|
| }
|
|
|
| -void LayerTreeHostImpl::SetTopControlsLayoutHeight(
|
| - float top_controls_layout_height) {
|
| - if (top_controls_layout_height_ == top_controls_layout_height)
|
| - return;
|
| - top_controls_layout_height_ = top_controls_layout_height;
|
| -
|
| - UpdateInnerViewportContainerSize();
|
| - SetFullRootLayerDamage();
|
| -}
|
| -
|
| void LayerTreeHostImpl::SetOverhangUIResource(
|
| UIResourceId overhang_ui_resource_id,
|
| const gfx::Size& overhang_ui_resource_size) {
|
| @@ -2220,6 +2229,15 @@ void LayerTreeHostImpl::DidChangeTopControlsPosition() {
|
| SetFullRootLayerDamage();
|
| }
|
|
|
| +void LayerTreeHostImpl::SetControlsTopOffset(float offset) {
|
| + active_tree_->set_top_controls_delta(
|
| + offset - active_tree_->top_controls_top_offset());
|
| +}
|
| +
|
| +float LayerTreeHostImpl::ControlsTopOffset() const {
|
| + return active_tree_->total_top_controls_top_offset();
|
| +}
|
| +
|
| void LayerTreeHostImpl::BindToClient(InputHandlerClient* client) {
|
| DCHECK(input_handler_client_ == NULL);
|
| input_handler_client_ = client;
|
| @@ -2920,6 +2938,8 @@ scoped_ptr<ScrollAndScaleSet> LayerTreeHostImpl::ProcessScrollDeltas() {
|
| scroll_info->page_scale_delta = active_tree_->page_scale_delta();
|
| active_tree_->set_sent_page_scale_delta(scroll_info->page_scale_delta);
|
| scroll_info->swap_promises.swap(swap_promises_for_main_thread_scroll_update_);
|
| + scroll_info->top_controls_delta = active_tree()->top_controls_delta();
|
| + active_tree_->set_sent_top_controls_delta(scroll_info->top_controls_delta);
|
|
|
| return scroll_info.Pass();
|
| }
|
|
|