| Index: cc/trees/layer_tree_host_impl_unittest.cc
|
| diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
|
| index f31cde05c41bb4ae630d187e8787673ca34b9db8..77fc809e3ce2fb6633e8b3478a6b9552413d0969 100644
|
| --- a/cc/trees/layer_tree_host_impl_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_impl_unittest.cc
|
| @@ -160,8 +160,8 @@ class LayerTreeHostImplTest : public testing::Test,
|
| reduce_memory_result_ = reduce_memory_result;
|
| }
|
|
|
| - bool CreateHostImpl(const LayerTreeSettings& settings,
|
| - scoped_ptr<OutputSurface> output_surface) {
|
| + virtual bool CreateHostImpl(const LayerTreeSettings& settings,
|
| + scoped_ptr<OutputSurface> output_surface) {
|
| host_impl_ = LayerTreeHostImpl::Create(settings,
|
| this,
|
| &proxy_,
|
| @@ -2270,14 +2270,27 @@ class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
|
| // Make the clip size the same as the layer (content) size so the layer is
|
| // non-scrollable.
|
| : layer_size_(10, 10),
|
| - clip_size_(layer_size_) {
|
| + clip_size_(layer_size_),
|
| + top_controls_height_(50) {
|
| settings_.calculate_top_controls_position = true;
|
| - settings_.top_controls_height = 50;
|
| settings_.use_pinch_virtual_viewport = true;
|
|
|
| - viewport_size_ =
|
| - gfx::Size(clip_size_.width(),
|
| - clip_size_.height() + settings_.top_controls_height);
|
| + viewport_size_ = gfx::Size(clip_size_.width(),
|
| + clip_size_.height() + top_controls_height_);
|
| + }
|
| +
|
| + bool CreateHostImpl(const LayerTreeSettings& settings,
|
| + scoped_ptr<OutputSurface> output_surface) override {
|
| + bool init =
|
| + LayerTreeHostImplTest::CreateHostImpl(settings, output_surface.Pass());
|
| + if (init && settings.calculate_top_controls_position) {
|
| + host_impl_->active_tree()->set_top_controls_height(top_controls_height_);
|
| + host_impl_->active_tree()->set_top_controls_delta(top_controls_height_);
|
| + host_impl_->top_controls_manager()->SetTopControlsHeight(
|
| + top_controls_height_);
|
| + host_impl_->DidChangeTopControlsPosition();
|
| + }
|
| + return init;
|
| }
|
|
|
| void SetupTopControlsAndScrollLayer() {
|
| @@ -2302,8 +2315,9 @@ class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
|
| // Set a viewport size that is large enough to contain both the top controls
|
| // and some content.
|
| host_impl_->SetViewportSize(viewport_size_);
|
| - host_impl_->SetTopControlsLayoutHeight(
|
| - settings_.top_controls_height);
|
| + host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true);
|
| +
|
| + host_impl_->DidChangeTopControlsPosition();
|
|
|
| host_impl_->CreatePendingTree();
|
| root =
|
| @@ -2327,8 +2341,8 @@ class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
|
| // Set a viewport size that is large enough to contain both the top controls
|
| // and some content.
|
| host_impl_->SetViewportSize(viewport_size_);
|
| - host_impl_->sync_tree()->set_top_controls_layout_height(
|
| - settings_.top_controls_height);
|
| + host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true);
|
| + host_impl_->DidChangeTopControlsPosition();
|
| }
|
|
|
| void SetupTopControlsAndScrollLayerWithVirtualViewport(
|
| @@ -2336,8 +2350,8 @@ class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
|
| const gfx::Size& outer_viewport_size,
|
| const gfx::Size& scroll_layer_size) {
|
| CreateHostImpl(settings_, CreateOutputSurface());
|
| - host_impl_->SetTopControlsLayoutHeight(
|
| - settings_.top_controls_height);
|
| + host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true);
|
| + host_impl_->DidChangeTopControlsPosition();
|
|
|
| scoped_ptr<LayerImpl> root =
|
| LayerImpl::Create(host_impl_->active_tree(), 1);
|
| @@ -2390,6 +2404,7 @@ class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
|
| gfx::Size layer_size_;
|
| gfx::Size clip_size_;
|
| gfx::Size viewport_size_;
|
| + float top_controls_height_;
|
|
|
| LayerTreeSettings settings_;
|
| }; // class LayerTreeHostImplTopControlsTest
|
| @@ -2501,7 +2516,6 @@ TEST_F(LayerTreeHostImplTopControlsTest, FixedContainerDelta) {
|
| DrawFrame();
|
|
|
| float page_scale = 1.5f;
|
| - float top_controls_height = settings_.top_controls_height;
|
| LayerImpl* outer_viewport_scroll_layer =
|
| host_impl_->active_tree()->OuterViewportScrollLayer();
|
|
|
| @@ -2517,7 +2531,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, FixedContainerDelta) {
|
| gfx::Vector2dF top_controls_scroll_delta(0.f, 20.f);
|
| host_impl_->top_controls_manager()->ScrollBegin();
|
| host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta);
|
| - EXPECT_EQ(top_controls_height - top_controls_scroll_delta.y(),
|
| + EXPECT_EQ(top_controls_height_ - top_controls_scroll_delta.y(),
|
| host_impl_->top_controls_manager()->ContentTopOffset());
|
| EXPECT_VECTOR_EQ(top_controls_scroll_delta,
|
| outer_viewport_scroll_layer->FixedContainerSizeDelta());
|
| @@ -2530,7 +2544,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, FixedContainerDelta) {
|
| host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta);
|
| host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta);
|
| EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset());
|
| - EXPECT_VECTOR_EQ(gfx::Vector2dF(0, top_controls_height),
|
| + EXPECT_VECTOR_EQ(gfx::Vector2dF(0, top_controls_height_),
|
| outer_viewport_scroll_layer->FixedContainerSizeDelta());
|
| host_impl_->ScrollEnd();
|
|
|
| @@ -2540,7 +2554,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, FixedContainerDelta) {
|
| EXPECT_EQ(top_controls_scroll_delta.y(),
|
| host_impl_->top_controls_manager()->ContentTopOffset());
|
| EXPECT_VECTOR_EQ(
|
| - gfx::Vector2dF(0, top_controls_height - top_controls_scroll_delta.y()),
|
| + gfx::Vector2dF(0, top_controls_height_ - top_controls_scroll_delta.y()),
|
| outer_viewport_scroll_layer->FixedContainerSizeDelta());
|
| host_impl_->top_controls_manager()->ScrollEnd();
|
| }
|
| @@ -2611,12 +2625,11 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsLayoutHeightChanged) {
|
| SetupTopControlsAndScrollLayer();
|
| DrawFrame();
|
|
|
| - host_impl_->sync_tree()->set_top_controls_content_offset(15.f);
|
| - host_impl_->sync_tree()->set_top_controls_layout_height(15.f);
|
| + host_impl_->sync_tree()->set_top_controls_content_offset(50.f);
|
| + host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true);
|
|
|
| - host_impl_->active_tree()->set_top_controls_content_offset(20.f);
|
| - host_impl_->active_tree()->set_top_controls_delta(-20.f);
|
| - host_impl_->active_tree()->set_sent_top_controls_delta(-5.f);
|
| + host_impl_->active_tree()->set_top_controls_content_offset(50.f);
|
| + host_impl_->active_tree()->set_top_controls_delta(-50.f);
|
|
|
| host_impl_->DidChangeTopControlsPosition();
|
| LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer();
|
| @@ -2625,7 +2638,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsLayoutHeightChanged) {
|
|
|
| host_impl_->sync_tree()->root_layer()->SetBounds(
|
| gfx::Size(root_clip_ptr->bounds().width(),
|
| - root_clip_ptr->bounds().height() - 15.f));
|
| + root_clip_ptr->bounds().height() - 50.f));
|
|
|
| host_impl_->ActivateSyncTree();
|
|
|
| @@ -2636,14 +2649,14 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsLayoutHeightChanged) {
|
| // account for the difference between the layout height and the current
|
| // top controls offset.
|
| EXPECT_EQ(viewport_size_, root_clip_ptr->bounds());
|
| - EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 15.f), root_clip_ptr->bounds_delta());
|
| + EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 50.f), root_clip_ptr->bounds_delta());
|
|
|
| host_impl_->active_tree()->set_top_controls_delta(0.f);
|
| host_impl_->DidChangeTopControlsPosition();
|
|
|
| - EXPECT_EQ(15.f, host_impl_->top_controls_manager()->ContentTopOffset());
|
| + EXPECT_EQ(50.f, host_impl_->top_controls_manager()->ContentTopOffset());
|
| EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 0.f), root_clip_ptr->bounds_delta());
|
| - EXPECT_EQ(gfx::Size(viewport_size_.width(), viewport_size_.height()-15.f),
|
| + EXPECT_EQ(gfx::Size(viewport_size_.width(), viewport_size_.height() - 50.f),
|
| root_clip_ptr->bounds());
|
| }
|
|
|
| @@ -2655,7 +2668,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsViewportOffsetClamping) {
|
| gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
|
| DrawFrame();
|
|
|
| - EXPECT_EQ(settings_.top_controls_height,
|
| + EXPECT_EQ(top_controls_height_,
|
| host_impl_->active_tree()->total_top_controls_content_offset());
|
|
|
| LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer();
|
| @@ -2677,7 +2690,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsViewportOffsetClamping) {
|
|
|
| // scrolling down at the max extents no longer hides the top controls
|
| EXPECT_EQ(0.f,
|
| - settings_.top_controls_height -
|
| + top_controls_height_ -
|
| host_impl_->active_tree()->total_top_controls_content_offset());
|
|
|
| // forcefully hide the top controls by 25px
|
| @@ -2685,7 +2698,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsViewportOffsetClamping) {
|
| host_impl_->ScrollEnd();
|
|
|
| EXPECT_EQ(scroll_delta.y(),
|
| - settings_.top_controls_height -
|
| + top_controls_height_ -
|
| host_impl_->active_tree()->total_top_controls_content_offset());
|
|
|
| inner_scroll->ClampScrollToMaxScrollOffset();
|
| @@ -2722,7 +2735,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) {
|
| gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
|
| DrawFrame();
|
|
|
| - EXPECT_EQ(settings_.top_controls_height,
|
| + EXPECT_EQ(top_controls_height_,
|
| host_impl_->active_tree()->total_top_controls_content_offset());
|
|
|
| gfx::Vector2dF scroll_delta(0.f, 25.f);
|
| @@ -2732,7 +2745,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) {
|
| host_impl_->ScrollEnd();
|
|
|
| EXPECT_EQ(scroll_delta.y(),
|
| - settings_.top_controls_height -
|
| + top_controls_height_ -
|
| host_impl_->active_tree()->total_top_controls_content_offset());
|
|
|
| // Top controls were hidden by 25px so the inner viewport should have expanded
|
| @@ -2758,7 +2771,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollOuterViewport) {
|
| gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
|
| DrawFrame();
|
|
|
| - EXPECT_EQ(settings_.top_controls_height,
|
| + EXPECT_EQ(top_controls_height_,
|
| host_impl_->active_tree()->total_top_controls_content_offset());
|
|
|
| // Send a gesture scroll that will scroll the outer viewport, make sure the
|
| @@ -2772,7 +2785,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollOuterViewport) {
|
| host_impl_->ScrollEnd();
|
|
|
| EXPECT_EQ(scroll_delta.y(),
|
| - settings_.top_controls_height -
|
| + top_controls_height_ -
|
| host_impl_->active_tree()->total_top_controls_content_offset());
|
|
|
| scroll_delta = gfx::Vector2dF(0.f, 50.f);
|
| @@ -2796,11 +2809,11 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollOuterViewport) {
|
| host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
|
| host_impl_->ScrollBy(gfx::Point(), scroll_delta);
|
|
|
| - EXPECT_EQ(settings_.top_controls_height,
|
| + EXPECT_EQ(top_controls_height_,
|
| host_impl_->active_tree()->total_top_controls_content_offset());
|
| - EXPECT_EQ(inner_viewport_offset.y() +
|
| - (scroll_delta.y() + settings_.top_controls_height),
|
| - host_impl_->InnerViewportScrollLayer()->ScrollDelta().y());
|
| + EXPECT_EQ(
|
| + inner_viewport_offset.y() + (scroll_delta.y() + top_controls_height_),
|
| + host_impl_->InnerViewportScrollLayer()->ScrollDelta().y());
|
|
|
| host_impl_->ScrollEnd();
|
| }
|
| @@ -7193,8 +7206,11 @@ class LayerTreeHostImplWithTopControlsTest : public LayerTreeHostImplTest {
|
| void SetUp() override {
|
| LayerTreeSettings settings = DefaultSettings();
|
| settings.calculate_top_controls_position = true;
|
| - settings.top_controls_height = top_controls_height_;
|
| CreateHostImpl(settings, CreateOutputSurface());
|
| + host_impl_->active_tree()->set_top_controls_height(top_controls_height_);
|
| + host_impl_->active_tree()->set_top_controls_delta(top_controls_height_);
|
| + host_impl_->top_controls_manager()->SetTopControlsHeight(
|
| + top_controls_height_);
|
| }
|
|
|
| protected:
|
| @@ -7210,6 +7226,31 @@ TEST_F(LayerTreeHostImplWithTopControlsTest, NoIdleAnimations) {
|
| EXPECT_FALSE(did_request_redraw_);
|
| }
|
|
|
| +TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsHeightIsCommitted) {
|
| + SetupScrollAndContentsLayers(gfx::Size(100, 100));
|
| + EXPECT_FALSE(did_request_redraw_);
|
| + host_impl_->CreatePendingTree();
|
| + host_impl_->sync_tree()->set_top_controls_height(100);
|
| + host_impl_->ActivateSyncTree();
|
| + EXPECT_EQ(100, host_impl_->top_controls_manager()->top_controls_height());
|
| +}
|
| +
|
| +TEST_F(LayerTreeHostImplWithTopControlsTest,
|
| + TopControlsStayFullyVisibleOnHeightChange) {
|
| + SetupScrollAndContentsLayers(gfx::Size(100, 100));
|
| + EXPECT_EQ(0.f, host_impl_->ControlsTopOffset());
|
| +
|
| + host_impl_->CreatePendingTree();
|
| + host_impl_->sync_tree()->set_top_controls_height(0);
|
| + host_impl_->ActivateSyncTree();
|
| + EXPECT_EQ(0.f, host_impl_->ControlsTopOffset());
|
| +
|
| + host_impl_->CreatePendingTree();
|
| + host_impl_->sync_tree()->set_top_controls_height(50);
|
| + host_impl_->ActivateSyncTree();
|
| + EXPECT_EQ(0.f, host_impl_->ControlsTopOffset());
|
| +}
|
| +
|
| TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationScheduling) {
|
| SetupScrollAndContentsLayers(gfx::Size(100, 100))
|
| ->SetScrollOffset(gfx::ScrollOffset(0, 10));
|
|
|