OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 2284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2295 viewport_size_ = gfx::Size(clip_size_.width(), | 2295 viewport_size_ = gfx::Size(clip_size_.width(), |
2296 clip_size_.height() + top_controls_height_); | 2296 clip_size_.height() + top_controls_height_); |
2297 } | 2297 } |
2298 | 2298 |
2299 bool CreateHostImpl(const LayerTreeSettings& settings, | 2299 bool CreateHostImpl(const LayerTreeSettings& settings, |
2300 scoped_ptr<OutputSurface> output_surface) override { | 2300 scoped_ptr<OutputSurface> output_surface) override { |
2301 bool init = | 2301 bool init = |
2302 LayerTreeHostImplTest::CreateHostImpl(settings, output_surface.Pass()); | 2302 LayerTreeHostImplTest::CreateHostImpl(settings, output_surface.Pass()); |
2303 if (init && settings.calculate_top_controls_position) { | 2303 if (init && settings.calculate_top_controls_position) { |
2304 host_impl_->active_tree()->set_top_controls_height(top_controls_height_); | 2304 host_impl_->active_tree()->set_top_controls_height(top_controls_height_); |
2305 host_impl_->active_tree()->set_top_controls_delta(top_controls_height_); | 2305 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(1.f); |
2306 host_impl_->top_controls_manager()->SetTopControlsHeight( | |
2307 top_controls_height_); | |
2308 host_impl_->DidChangeTopControlsPosition(); | |
2309 } | 2306 } |
2310 return init; | 2307 return init; |
2311 } | 2308 } |
2312 | 2309 |
2313 void SetupTopControlsAndScrollLayer() { | 2310 void SetupTopControlsAndScrollLayer() { |
2314 scoped_ptr<LayerImpl> root = | 2311 scoped_ptr<LayerImpl> root = |
2315 LayerImpl::Create(host_impl_->active_tree(), 1); | 2312 LayerImpl::Create(host_impl_->active_tree(), 1); |
2316 scoped_ptr<LayerImpl> root_clip = | 2313 scoped_ptr<LayerImpl> root_clip = |
2317 LayerImpl::Create(host_impl_->active_tree(), 2); | 2314 LayerImpl::Create(host_impl_->active_tree(), 2); |
2318 root_clip->SetBounds(clip_size_); | 2315 root_clip->SetBounds(clip_size_); |
(...skipping 13 matching lines...) Expand all Loading... |
2332 Layer::INVALID_ID, page_scale_layer_id, inner_viewport_scroll_layer_id, | 2329 Layer::INVALID_ID, page_scale_layer_id, inner_viewport_scroll_layer_id, |
2333 Layer::INVALID_ID); | 2330 Layer::INVALID_ID); |
2334 // Set a viewport size that is large enough to contain both the top controls | 2331 // Set a viewport size that is large enough to contain both the top controls |
2335 // and some content. | 2332 // and some content. |
2336 host_impl_->SetViewportSize(viewport_size_); | 2333 host_impl_->SetViewportSize(viewport_size_); |
2337 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true); | 2334 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true); |
2338 | 2335 |
2339 host_impl_->DidChangeTopControlsPosition(); | 2336 host_impl_->DidChangeTopControlsPosition(); |
2340 | 2337 |
2341 host_impl_->CreatePendingTree(); | 2338 host_impl_->CreatePendingTree(); |
| 2339 host_impl_->sync_tree()->set_top_controls_height(top_controls_height_); |
2342 root = | 2340 root = |
2343 LayerImpl::Create(host_impl_->sync_tree(), 1); | 2341 LayerImpl::Create(host_impl_->sync_tree(), 1); |
2344 root_clip = | 2342 root_clip = |
2345 LayerImpl::Create(host_impl_->sync_tree(), 2); | 2343 LayerImpl::Create(host_impl_->sync_tree(), 2); |
2346 root_clip->SetBounds(clip_size_); | 2344 root_clip->SetBounds(clip_size_); |
2347 root->SetScrollClipLayer(root_clip->id()); | 2345 root->SetScrollClipLayer(root_clip->id()); |
2348 root->SetBounds(layer_size_); | 2346 root->SetBounds(layer_size_); |
2349 root->SetContentBounds(layer_size_); | 2347 root->SetContentBounds(layer_size_); |
2350 root->SetPosition(gfx::PointF()); | 2348 root->SetPosition(gfx::PointF()); |
2351 root->SetDrawsContent(false); | 2349 root->SetDrawsContent(false); |
(...skipping 11 matching lines...) Expand all Loading... |
2363 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true); | 2361 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true); |
2364 host_impl_->DidChangeTopControlsPosition(); | 2362 host_impl_->DidChangeTopControlsPosition(); |
2365 } | 2363 } |
2366 | 2364 |
2367 void SetupTopControlsAndScrollLayerWithVirtualViewport( | 2365 void SetupTopControlsAndScrollLayerWithVirtualViewport( |
2368 const gfx::Size& inner_viewport_size, | 2366 const gfx::Size& inner_viewport_size, |
2369 const gfx::Size& outer_viewport_size, | 2367 const gfx::Size& outer_viewport_size, |
2370 const gfx::Size& scroll_layer_size) { | 2368 const gfx::Size& scroll_layer_size) { |
2371 CreateHostImpl(settings_, CreateOutputSurface()); | 2369 CreateHostImpl(settings_, CreateOutputSurface()); |
2372 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true); | 2370 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true); |
| 2371 host_impl_->sync_tree()->set_top_controls_height(top_controls_height_); |
2373 host_impl_->DidChangeTopControlsPosition(); | 2372 host_impl_->DidChangeTopControlsPosition(); |
2374 | 2373 |
2375 scoped_ptr<LayerImpl> root = | 2374 scoped_ptr<LayerImpl> root = |
2376 LayerImpl::Create(host_impl_->active_tree(), 1); | 2375 LayerImpl::Create(host_impl_->active_tree(), 1); |
2377 scoped_ptr<LayerImpl> root_clip = | 2376 scoped_ptr<LayerImpl> root_clip = |
2378 LayerImpl::Create(host_impl_->active_tree(), 2); | 2377 LayerImpl::Create(host_impl_->active_tree(), 2); |
2379 scoped_ptr<LayerImpl> page_scale = | 2378 scoped_ptr<LayerImpl> page_scale = |
2380 LayerImpl::Create(host_impl_->active_tree(), 3); | 2379 LayerImpl::Create(host_impl_->active_tree(), 3); |
2381 | 2380 |
2382 scoped_ptr<LayerImpl> outer_scroll = | 2381 scoped_ptr<LayerImpl> outer_scroll = |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2473 // Need SetDrawsContent so ScrollBegin's hit test finds an actual layer. | 2472 // Need SetDrawsContent so ScrollBegin's hit test finds an actual layer. |
2474 outer_scroll->SetDrawsContent(true); | 2473 outer_scroll->SetDrawsContent(true); |
2475 host_impl_->active_tree()->PushPageScaleFromMainThread(2.f, 1.f, 2.f); | 2474 host_impl_->active_tree()->PushPageScaleFromMainThread(2.f, 1.f, 2.f); |
2476 | 2475 |
2477 EXPECT_EQ(InputHandler::ScrollStarted, | 2476 EXPECT_EQ(InputHandler::ScrollStarted, |
2478 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2477 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
2479 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, 50.f)); | 2478 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, 50.f)); |
2480 | 2479 |
2481 // The entire scroll delta should have been used to hide the top controls. | 2480 // The entire scroll delta should have been used to hide the top controls. |
2482 // The viewport layers should be resized back to their full sizes. | 2481 // The viewport layers should be resized back to their full sizes. |
2483 EXPECT_EQ(0.f, | 2482 EXPECT_EQ(0.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); |
2484 host_impl_->active_tree()->total_top_controls_content_offset()); | |
2485 EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y()); | 2483 EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y()); |
2486 EXPECT_EQ(100.f, inner_container->BoundsForScrolling().height()); | 2484 EXPECT_EQ(100.f, inner_container->BoundsForScrolling().height()); |
2487 EXPECT_EQ(100.f, outer_container->BoundsForScrolling().height()); | 2485 EXPECT_EQ(100.f, outer_container->BoundsForScrolling().height()); |
2488 | 2486 |
2489 // The inner viewport should be scrollable by 50px * page_scale. | 2487 // The inner viewport should be scrollable by 50px * page_scale. |
2490 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, 100.f)); | 2488 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, 100.f)); |
2491 EXPECT_EQ(50.f, inner_scroll->CurrentScrollOffset().y()); | 2489 EXPECT_EQ(50.f, inner_scroll->CurrentScrollOffset().y()); |
2492 EXPECT_EQ(0.f, outer_scroll->CurrentScrollOffset().y()); | 2490 EXPECT_EQ(0.f, outer_scroll->CurrentScrollOffset().y()); |
2493 EXPECT_EQ(gfx::ScrollOffset(), outer_scroll->MaxScrollOffset()); | 2491 EXPECT_EQ(gfx::ScrollOffset(), outer_scroll->MaxScrollOffset()); |
2494 | 2492 |
2495 host_impl_->ScrollEnd(); | 2493 host_impl_->ScrollEnd(); |
2496 | 2494 |
2497 EXPECT_EQ(InputHandler::ScrollStarted, | 2495 EXPECT_EQ(InputHandler::ScrollStarted, |
2498 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2496 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
2499 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), inner_scroll); | 2497 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), inner_scroll); |
2500 | 2498 |
2501 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, -50.f)); | 2499 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, -50.f)); |
2502 | 2500 |
2503 // The entire scroll delta should have been used to show the top controls. | 2501 // The entire scroll delta should have been used to show the top controls. |
2504 // The outer viewport should be resized to accomodate and scrolled to the | 2502 // The outer viewport should be resized to accomodate and scrolled to the |
2505 // bottom of the document to keep the viewport in place. | 2503 // bottom of the document to keep the viewport in place. |
2506 EXPECT_EQ(50.f, | 2504 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); |
2507 host_impl_->active_tree()->total_top_controls_content_offset()); | |
2508 EXPECT_EQ(50.f, outer_container->BoundsForScrolling().height()); | 2505 EXPECT_EQ(50.f, outer_container->BoundsForScrolling().height()); |
2509 EXPECT_EQ(50.f, inner_container->BoundsForScrolling().height()); | 2506 EXPECT_EQ(50.f, inner_container->BoundsForScrolling().height()); |
2510 EXPECT_EQ(25.f, outer_scroll->CurrentScrollOffset().y()); | 2507 EXPECT_EQ(25.f, outer_scroll->CurrentScrollOffset().y()); |
2511 EXPECT_EQ(25.f, inner_scroll->CurrentScrollOffset().y()); | 2508 EXPECT_EQ(25.f, inner_scroll->CurrentScrollOffset().y()); |
2512 | 2509 |
2513 // Now when we continue scrolling, make sure the outer viewport gets scrolled | 2510 // Now when we continue scrolling, make sure the outer viewport gets scrolled |
2514 // since it wasn't scrollable when the scroll began. | 2511 // since it wasn't scrollable when the scroll began. |
2515 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, -20.f)); | 2512 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(0.f, -20.f)); |
2516 EXPECT_EQ(15.f, outer_scroll->CurrentScrollOffset().y()); | 2513 EXPECT_EQ(15.f, outer_scroll->CurrentScrollOffset().y()); |
2517 EXPECT_EQ(25.f, inner_scroll->CurrentScrollOffset().y()); | 2514 EXPECT_EQ(25.f, inner_scroll->CurrentScrollOffset().y()); |
(...skipping 25 matching lines...) Expand all Loading... |
2543 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, 1.f, 2.f); | 2540 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, 1.f, 2.f); |
2544 | 2541 |
2545 EXPECT_EQ(InputHandler::ScrollStarted, | 2542 EXPECT_EQ(InputHandler::ScrollStarted, |
2546 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2543 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
2547 | 2544 |
2548 // Scroll down, the top controls hiding should expand the viewport size so | 2545 // Scroll down, the top controls hiding should expand the viewport size so |
2549 // the delta should be equal to the scroll distance. | 2546 // the delta should be equal to the scroll distance. |
2550 gfx::Vector2dF top_controls_scroll_delta(0.f, 20.f); | 2547 gfx::Vector2dF top_controls_scroll_delta(0.f, 20.f); |
2551 host_impl_->top_controls_manager()->ScrollBegin(); | 2548 host_impl_->top_controls_manager()->ScrollBegin(); |
2552 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); | 2549 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); |
2553 EXPECT_EQ(top_controls_height_ - top_controls_scroll_delta.y(), | 2550 EXPECT_FLOAT_EQ(top_controls_height_ - top_controls_scroll_delta.y(), |
2554 host_impl_->top_controls_manager()->ContentTopOffset()); | 2551 host_impl_->top_controls_manager()->ContentTopOffset()); |
2555 EXPECT_VECTOR_EQ(top_controls_scroll_delta, | 2552 EXPECT_VECTOR_EQ(top_controls_scroll_delta, |
2556 outer_viewport_scroll_layer->FixedContainerSizeDelta()); | 2553 outer_viewport_scroll_layer->FixedContainerSizeDelta()); |
2557 host_impl_->ScrollEnd(); | 2554 host_impl_->ScrollEnd(); |
2558 | 2555 |
2559 // Scroll past the maximum extent. The delta shouldn't be greater than the | 2556 // Scroll past the maximum extent. The delta shouldn't be greater than the |
2560 // top controls height. | 2557 // top controls height. |
2561 host_impl_->top_controls_manager()->ScrollBegin(); | 2558 host_impl_->top_controls_manager()->ScrollBegin(); |
2562 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); | 2559 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); |
2563 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); | 2560 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); |
2564 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); | 2561 host_impl_->top_controls_manager()->ScrollBy(top_controls_scroll_delta); |
(...skipping 16 matching lines...) Expand all Loading... |
2581 // Test that if a scrollable sublayer doesn't consume the scroll, | 2578 // Test that if a scrollable sublayer doesn't consume the scroll, |
2582 // top controls should hide when scrolling down. | 2579 // top controls should hide when scrolling down. |
2583 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollableSublayer) { | 2580 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollableSublayer) { |
2584 gfx::Size sub_content_size(100, 400); | 2581 gfx::Size sub_content_size(100, 400); |
2585 gfx::Size sub_content_layer_size(100, 300); | 2582 gfx::Size sub_content_layer_size(100, 300); |
2586 SetupTopControlsAndScrollLayerWithVirtualViewport( | 2583 SetupTopControlsAndScrollLayerWithVirtualViewport( |
2587 gfx::Size(100, 50), gfx::Size(100, 100), gfx::Size(100, 100)); | 2584 gfx::Size(100, 50), gfx::Size(100, 100), gfx::Size(100, 100)); |
2588 DrawFrame(); | 2585 DrawFrame(); |
2589 | 2586 |
2590 // Show top controls | 2587 // Show top controls |
2591 EXPECT_EQ(top_controls_height_, | 2588 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); |
2592 host_impl_->active_tree()->total_top_controls_content_offset()); | |
2593 | 2589 |
2594 LayerImpl* outer_viewport_scroll_layer = | 2590 LayerImpl* outer_viewport_scroll_layer = |
2595 host_impl_->active_tree()->OuterViewportScrollLayer(); | 2591 host_impl_->active_tree()->OuterViewportScrollLayer(); |
2596 int id = outer_viewport_scroll_layer->id(); | 2592 int id = outer_viewport_scroll_layer->id(); |
2597 | 2593 |
2598 scoped_ptr<LayerImpl> child = | 2594 scoped_ptr<LayerImpl> child = |
2599 LayerImpl::Create(host_impl_->active_tree(), id + 2); | 2595 LayerImpl::Create(host_impl_->active_tree(), id + 2); |
2600 scoped_ptr<LayerImpl> child_clip = | 2596 scoped_ptr<LayerImpl> child_clip = |
2601 LayerImpl::Create(host_impl_->active_tree(), id + 3); | 2597 LayerImpl::Create(host_impl_->active_tree(), id + 3); |
2602 | 2598 |
(...skipping 13 matching lines...) Expand all Loading... |
2616 // Scroll 25px to hide top controls | 2612 // Scroll 25px to hide top controls |
2617 gfx::Vector2dF scroll_delta(0.f, 25.f); | 2613 gfx::Vector2dF scroll_delta(0.f, 25.f); |
2618 EXPECT_EQ(InputHandler::ScrollStarted, | 2614 EXPECT_EQ(InputHandler::ScrollStarted, |
2619 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2615 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
2620 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2616 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2621 host_impl_->ScrollEnd(); | 2617 host_impl_->ScrollEnd(); |
2622 | 2618 |
2623 // Top controls should be hidden | 2619 // Top controls should be hidden |
2624 EXPECT_EQ(scroll_delta.y(), | 2620 EXPECT_EQ(scroll_delta.y(), |
2625 top_controls_height_ - | 2621 top_controls_height_ - |
2626 host_impl_->active_tree()->total_top_controls_content_offset()); | 2622 host_impl_->top_controls_manager()->ContentTopOffset()); |
2627 } | 2623 } |
2628 | 2624 |
2629 // Ensure setting the top controls position explicitly using the setters on the | 2625 // Ensure setting the top controls position explicitly using the setters on the |
2630 // TreeImpl correctly affects the top controls manager and viewport bounds. | 2626 // TreeImpl correctly affects the top controls manager and viewport bounds. |
2631 TEST_F(LayerTreeHostImplTopControlsTest, PositionTopControlsExplicitly) { | 2627 TEST_F(LayerTreeHostImplTopControlsTest, PositionTopControlsExplicitly) { |
2632 CreateHostImpl(settings_, CreateOutputSurface()); | 2628 CreateHostImpl(settings_, CreateOutputSurface()); |
2633 SetupTopControlsAndScrollLayer(); | 2629 SetupTopControlsAndScrollLayer(); |
2634 DrawFrame(); | 2630 DrawFrame(); |
2635 | 2631 |
2636 host_impl_->active_tree()->set_top_controls_delta(0.f); | 2632 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f); |
2637 host_impl_->active_tree()->set_top_controls_content_offset(30.f); | 2633 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread( |
2638 EXPECT_EQ(30.f, host_impl_->top_controls_manager()->ContentTopOffset()); | 2634 30.f / top_controls_height_); |
2639 EXPECT_EQ(-20.f, host_impl_->top_controls_manager()->ControlsTopOffset()); | 2635 host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive(); |
| 2636 EXPECT_FLOAT_EQ(30.f, host_impl_->top_controls_manager()->ContentTopOffset()); |
| 2637 EXPECT_FLOAT_EQ(-20.f, |
| 2638 host_impl_->top_controls_manager()->ControlsTopOffset()); |
2640 | 2639 |
2641 host_impl_->active_tree()->set_top_controls_delta(-30.f); | 2640 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f); |
2642 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); | 2641 EXPECT_FLOAT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); |
2643 EXPECT_EQ(-50.f, host_impl_->top_controls_manager()->ControlsTopOffset()); | 2642 EXPECT_FLOAT_EQ(-50.f, |
| 2643 host_impl_->top_controls_manager()->ControlsTopOffset()); |
2644 | 2644 |
2645 host_impl_->DidChangeTopControlsPosition(); | 2645 host_impl_->DidChangeTopControlsPosition(); |
2646 | 2646 |
2647 // Now that top controls have moved, expect the clip to resize. | 2647 // Now that top controls have moved, expect the clip to resize. |
2648 LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer(); | 2648 LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer(); |
2649 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); | 2649 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); |
2650 } | 2650 } |
2651 | 2651 |
2652 // Test that the top_controls delta and sent delta are appropriately | 2652 // Test that the top_controls delta and sent delta are appropriately |
2653 // applied on sync tree activation. The total top controls offset shouldn't | 2653 // applied on sync tree activation. The total top controls offset shouldn't |
2654 // change after the activation. | 2654 // change after the activation. |
2655 TEST_F(LayerTreeHostImplTopControlsTest, ApplyDeltaOnTreeActivation) { | 2655 TEST_F(LayerTreeHostImplTopControlsTest, ApplyDeltaOnTreeActivation) { |
2656 CreateHostImpl(settings_, CreateOutputSurface()); | 2656 CreateHostImpl(settings_, CreateOutputSurface()); |
2657 SetupTopControlsAndScrollLayer(); | 2657 SetupTopControlsAndScrollLayer(); |
2658 DrawFrame(); | 2658 DrawFrame(); |
2659 | 2659 |
2660 host_impl_->sync_tree()->set_top_controls_content_offset(15.f); | 2660 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread( |
2661 | 2661 20.f / top_controls_height_); |
2662 host_impl_->active_tree()->set_top_controls_content_offset(20.f); | 2662 host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive(); |
2663 host_impl_->active_tree()->set_top_controls_delta(-20.f); | 2663 host_impl_->active_tree()->SetCurrentTopControlsShownRatio( |
2664 host_impl_->active_tree()->set_sent_top_controls_delta(-5.f); | 2664 15.f / top_controls_height_); |
| 2665 host_impl_->active_tree() |
| 2666 ->top_controls_shown_ratio() |
| 2667 ->PullDeltaForMainThread(); |
| 2668 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f); |
| 2669 host_impl_->sync_tree()->PushTopControlsFromMainThread(15.f / |
| 2670 top_controls_height_); |
2665 | 2671 |
2666 host_impl_->DidChangeTopControlsPosition(); | 2672 host_impl_->DidChangeTopControlsPosition(); |
2667 LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer(); | 2673 LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer(); |
2668 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); | 2674 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); |
2669 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); | 2675 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); |
2670 EXPECT_EQ(0.f, | |
2671 host_impl_->active_tree()->total_top_controls_content_offset()); | |
2672 | 2676 |
2673 host_impl_->ActivateSyncTree(); | 2677 host_impl_->ActivateSyncTree(); |
2674 | 2678 |
2675 root_clip_ptr = host_impl_->active_tree()->root_layer(); | 2679 root_clip_ptr = host_impl_->active_tree()->root_layer(); |
2676 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); | 2680 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); |
2677 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); | 2681 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); |
2678 | 2682 |
2679 EXPECT_EQ(0.f, host_impl_->active_tree()->sent_top_controls_delta()); | 2683 EXPECT_FLOAT_EQ( |
2680 EXPECT_EQ(-15.f, host_impl_->active_tree()->top_controls_delta()); | 2684 -15.f, host_impl_->active_tree()->top_controls_shown_ratio()->Delta() * |
2681 EXPECT_EQ(15.f, host_impl_->active_tree()->top_controls_content_offset()); | 2685 top_controls_height_); |
2682 EXPECT_EQ(0.f, | 2686 EXPECT_FLOAT_EQ( |
2683 host_impl_->active_tree()->total_top_controls_content_offset()); | 2687 15.f, |
| 2688 host_impl_->active_tree()->top_controls_shown_ratio()->ActiveBase() * |
| 2689 top_controls_height_); |
2684 } | 2690 } |
2685 | 2691 |
2686 // Test that changing the top controls layout height is correctly applied to | 2692 // Test that changing the top controls layout height is correctly applied to |
2687 // the inner viewport container bounds. That is, the top controls layout | 2693 // the inner viewport container bounds. That is, the top controls layout |
2688 // height is the amount that the inner viewport container was shrunk outside | 2694 // height is the amount that the inner viewport container was shrunk outside |
2689 // the compositor to accommodate the top controls. | 2695 // the compositor to accommodate the top controls. |
2690 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsLayoutHeightChanged) { | 2696 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsLayoutHeightChanged) { |
2691 CreateHostImpl(settings_, CreateOutputSurface()); | 2697 CreateHostImpl(settings_, CreateOutputSurface()); |
2692 SetupTopControlsAndScrollLayer(); | 2698 SetupTopControlsAndScrollLayer(); |
2693 DrawFrame(); | 2699 DrawFrame(); |
2694 | 2700 |
2695 host_impl_->sync_tree()->set_top_controls_content_offset(50.f); | 2701 host_impl_->sync_tree()->PushTopControlsFromMainThread(1.f); |
2696 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true); | 2702 host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true); |
2697 | 2703 |
2698 host_impl_->active_tree()->set_top_controls_content_offset(50.f); | 2704 host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread( |
2699 host_impl_->active_tree()->set_top_controls_delta(-50.f); | 2705 1.f); |
| 2706 host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive(); |
| 2707 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f); |
2700 | 2708 |
2701 host_impl_->DidChangeTopControlsPosition(); | 2709 host_impl_->DidChangeTopControlsPosition(); |
2702 LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer(); | 2710 LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer(); |
2703 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); | 2711 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); |
2704 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); | 2712 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); |
2705 | 2713 |
2706 host_impl_->sync_tree()->root_layer()->SetBounds( | 2714 host_impl_->sync_tree()->root_layer()->SetBounds( |
2707 gfx::Size(root_clip_ptr->bounds().width(), | 2715 gfx::Size(root_clip_ptr->bounds().width(), |
2708 root_clip_ptr->bounds().height() - 50.f)); | 2716 root_clip_ptr->bounds().height() - 50.f)); |
2709 | 2717 |
2710 host_impl_->ActivateSyncTree(); | 2718 host_impl_->ActivateSyncTree(); |
2711 | 2719 |
2712 root_clip_ptr = host_impl_->active_tree()->root_layer(); | 2720 root_clip_ptr = host_impl_->active_tree()->root_layer(); |
2713 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); | 2721 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset()); |
2714 | 2722 |
2715 // The total bounds should remain unchanged since the bounds delta should | 2723 // The total bounds should remain unchanged since the bounds delta should |
2716 // account for the difference between the layout height and the current | 2724 // account for the difference between the layout height and the current |
2717 // top controls offset. | 2725 // top controls offset. |
2718 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); | 2726 EXPECT_EQ(viewport_size_, root_clip_ptr->bounds()); |
2719 EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 50.f), root_clip_ptr->bounds_delta()); | 2727 EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 50.f), root_clip_ptr->bounds_delta()); |
2720 | 2728 |
2721 host_impl_->active_tree()->set_top_controls_delta(0.f); | 2729 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(1.f); |
2722 host_impl_->DidChangeTopControlsPosition(); | 2730 host_impl_->DidChangeTopControlsPosition(); |
2723 | 2731 |
| 2732 EXPECT_EQ(1.f, host_impl_->top_controls_manager()->TopControlsShownRatio()); |
| 2733 EXPECT_EQ(50.f, host_impl_->top_controls_manager()->TopControlsHeight()); |
2724 EXPECT_EQ(50.f, host_impl_->top_controls_manager()->ContentTopOffset()); | 2734 EXPECT_EQ(50.f, host_impl_->top_controls_manager()->ContentTopOffset()); |
2725 EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 0.f), root_clip_ptr->bounds_delta()); | 2735 EXPECT_VECTOR_EQ(gfx::Vector2dF(0.f, 0.f), root_clip_ptr->bounds_delta()); |
2726 EXPECT_EQ(gfx::Size(viewport_size_.width(), viewport_size_.height() - 50.f), | 2736 EXPECT_EQ(gfx::Size(viewport_size_.width(), viewport_size_.height() - 50.f), |
2727 root_clip_ptr->bounds()); | 2737 root_clip_ptr->bounds()); |
2728 } | 2738 } |
2729 | 2739 |
2730 // Test that showing/hiding the top controls when the viewport is fully scrolled | 2740 // Test that showing/hiding the top controls when the viewport is fully scrolled |
2731 // doesn't incorrectly change the viewport offset due to clamping from changing | 2741 // doesn't incorrectly change the viewport offset due to clamping from changing |
2732 // viewport bounds. | 2742 // viewport bounds. |
2733 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsViewportOffsetClamping) { | 2743 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsViewportOffsetClamping) { |
2734 SetupTopControlsAndScrollLayerWithVirtualViewport( | 2744 SetupTopControlsAndScrollLayerWithVirtualViewport( |
2735 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); | 2745 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); |
2736 DrawFrame(); | 2746 DrawFrame(); |
2737 | 2747 |
2738 EXPECT_EQ(top_controls_height_, | 2748 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); |
2739 host_impl_->active_tree()->total_top_controls_content_offset()); | |
2740 | 2749 |
2741 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer(); | 2750 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer(); |
2742 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer(); | 2751 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer(); |
2743 | 2752 |
2744 // Scroll the viewports to max scroll offset. | 2753 // Scroll the viewports to max scroll offset. |
2745 outer_scroll->SetScrollDelta(gfx::Vector2dF(0, 200.f)); | 2754 outer_scroll->SetScrollDelta(gfx::Vector2dF(0, 200.f)); |
2746 inner_scroll->SetScrollDelta(gfx::Vector2dF(100, 100.f)); | 2755 inner_scroll->SetScrollDelta(gfx::Vector2dF(100, 100.f)); |
2747 | 2756 |
2748 gfx::ScrollOffset viewport_offset = | 2757 gfx::ScrollOffset viewport_offset = |
2749 host_impl_->active_tree()->TotalScrollOffset(); | 2758 host_impl_->active_tree()->TotalScrollOffset(); |
2750 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), viewport_offset); | 2759 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), viewport_offset); |
2751 | 2760 |
2752 // Hide the top controls by 25px. | 2761 // Hide the top controls by 25px. |
2753 gfx::Vector2dF scroll_delta(0.f, 25.f); | 2762 gfx::Vector2dF scroll_delta(0.f, 25.f); |
2754 EXPECT_EQ(InputHandler::ScrollStarted, | 2763 EXPECT_EQ(InputHandler::ScrollStarted, |
2755 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2764 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
2756 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2765 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2757 | 2766 |
2758 // scrolling down at the max extents no longer hides the top controls | 2767 // scrolling down at the max extents no longer hides the top controls |
2759 EXPECT_EQ(0.f, | 2768 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); |
2760 top_controls_height_ - | |
2761 host_impl_->active_tree()->total_top_controls_content_offset()); | |
2762 | 2769 |
2763 // forcefully hide the top controls by 25px | 2770 // forcefully hide the top controls by 25px |
2764 host_impl_->top_controls_manager()->ScrollBy(scroll_delta); | 2771 host_impl_->top_controls_manager()->ScrollBy(scroll_delta); |
2765 host_impl_->ScrollEnd(); | 2772 host_impl_->ScrollEnd(); |
2766 | 2773 |
2767 EXPECT_EQ(scroll_delta.y(), | 2774 EXPECT_EQ(scroll_delta.y(), |
2768 top_controls_height_ - | 2775 top_controls_height_ - |
2769 host_impl_->active_tree()->total_top_controls_content_offset()); | 2776 host_impl_->top_controls_manager()->ContentTopOffset()); |
2770 | 2777 |
2771 inner_scroll->ClampScrollToMaxScrollOffset(); | 2778 inner_scroll->ClampScrollToMaxScrollOffset(); |
2772 outer_scroll->ClampScrollToMaxScrollOffset(); | 2779 outer_scroll->ClampScrollToMaxScrollOffset(); |
2773 | 2780 |
2774 // We should still be fully scrolled. | 2781 // We should still be fully scrolled. |
2775 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), | 2782 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), |
2776 host_impl_->active_tree()->TotalScrollOffset()); | 2783 host_impl_->active_tree()->TotalScrollOffset()); |
2777 | 2784 |
2778 viewport_offset = host_impl_->active_tree()->TotalScrollOffset(); | 2785 viewport_offset = host_impl_->active_tree()->TotalScrollOffset(); |
2779 | 2786 |
(...skipping 16 matching lines...) Expand all Loading... |
2796 } | 2803 } |
2797 | 2804 |
2798 // Test that the top controls coming in and out maintains the same aspect ratio | 2805 // Test that the top controls coming in and out maintains the same aspect ratio |
2799 // between the inner and outer viewports. | 2806 // between the inner and outer viewports. |
2800 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) { | 2807 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) { |
2801 SetupTopControlsAndScrollLayerWithVirtualViewport( | 2808 SetupTopControlsAndScrollLayerWithVirtualViewport( |
2802 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); | 2809 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); |
2803 DrawFrame(); | 2810 DrawFrame(); |
2804 | 2811 |
2805 EXPECT_EQ(top_controls_height_, | 2812 EXPECT_EQ(top_controls_height_, |
2806 host_impl_->active_tree()->total_top_controls_content_offset()); | 2813 host_impl_->top_controls_manager()->ContentTopOffset()); |
2807 | 2814 |
2808 gfx::Vector2dF scroll_delta(0.f, 25.f); | 2815 gfx::Vector2dF scroll_delta(0.f, 25.f); |
2809 EXPECT_EQ(InputHandler::ScrollStarted, | 2816 EXPECT_EQ(InputHandler::ScrollStarted, |
2810 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2817 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
2811 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2818 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2812 host_impl_->ScrollEnd(); | 2819 host_impl_->ScrollEnd(); |
2813 | 2820 |
2814 EXPECT_EQ(scroll_delta.y(), | 2821 EXPECT_EQ(scroll_delta.y(), |
2815 top_controls_height_ - | 2822 top_controls_height_ - |
2816 host_impl_->active_tree()->total_top_controls_content_offset()); | 2823 host_impl_->top_controls_manager()->ContentTopOffset()); |
2817 | 2824 |
2818 // Top controls were hidden by 25px so the inner viewport should have expanded | 2825 // Top controls were hidden by 25px so the inner viewport should have expanded |
2819 // by that much. | 2826 // by that much. |
2820 LayerImpl* outer_container = | 2827 LayerImpl* outer_container = |
2821 host_impl_->active_tree()->OuterViewportContainerLayer(); | 2828 host_impl_->active_tree()->OuterViewportContainerLayer(); |
2822 LayerImpl* inner_container = | 2829 LayerImpl* inner_container = |
2823 host_impl_->active_tree()->InnerViewportContainerLayer(); | 2830 host_impl_->active_tree()->InnerViewportContainerLayer(); |
2824 EXPECT_EQ(gfx::Size(100, 100+25), inner_container->BoundsForScrolling()); | 2831 EXPECT_EQ(gfx::Size(100, 100+25), inner_container->BoundsForScrolling()); |
2825 | 2832 |
2826 // Outer viewport should match inner's aspect ratio. The bounds are ceiled. | 2833 // Outer viewport should match inner's aspect ratio. The bounds are ceiled. |
2827 float aspect_ratio = inner_container->BoundsForScrolling().width() / | 2834 float aspect_ratio = inner_container->BoundsForScrolling().width() / |
2828 inner_container->BoundsForScrolling().height(); | 2835 inner_container->BoundsForScrolling().height(); |
2829 gfx::Size expected = gfx::ToCeiledSize(gfx::SizeF(200, 200 / aspect_ratio)); | 2836 gfx::Size expected = gfx::ToCeiledSize(gfx::SizeF(200, 200 / aspect_ratio)); |
2830 EXPECT_EQ(expected, outer_container->BoundsForScrolling()); | 2837 EXPECT_EQ(expected, outer_container->BoundsForScrolling()); |
2831 EXPECT_EQ(expected, | 2838 EXPECT_EQ(expected, |
2832 host_impl_->InnerViewportScrollLayer()->BoundsForScrolling()); | 2839 host_impl_->InnerViewportScrollLayer()->BoundsForScrolling()); |
2833 } | 2840 } |
2834 | 2841 |
2835 // Test that scrolling the outer viewport affects the top controls. | 2842 // Test that scrolling the outer viewport affects the top controls. |
2836 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollOuterViewport) { | 2843 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollOuterViewport) { |
2837 SetupTopControlsAndScrollLayerWithVirtualViewport( | 2844 SetupTopControlsAndScrollLayerWithVirtualViewport( |
2838 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); | 2845 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); |
2839 DrawFrame(); | 2846 DrawFrame(); |
2840 | 2847 |
2841 EXPECT_EQ(top_controls_height_, | 2848 EXPECT_EQ(top_controls_height_, |
2842 host_impl_->active_tree()->total_top_controls_content_offset()); | 2849 host_impl_->top_controls_manager()->ContentTopOffset()); |
2843 | 2850 |
2844 // Send a gesture scroll that will scroll the outer viewport, make sure the | 2851 // Send a gesture scroll that will scroll the outer viewport, make sure the |
2845 // top controls get scrolled. | 2852 // top controls get scrolled. |
2846 gfx::Vector2dF scroll_delta(0.f, 15.f); | 2853 gfx::Vector2dF scroll_delta(0.f, 15.f); |
2847 EXPECT_EQ(InputHandler::ScrollStarted, | 2854 EXPECT_EQ(InputHandler::ScrollStarted, |
2848 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2855 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
2849 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2856 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2850 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(), | 2857 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(), |
2851 host_impl_->CurrentlyScrollingLayer()); | 2858 host_impl_->CurrentlyScrollingLayer()); |
2852 host_impl_->ScrollEnd(); | 2859 host_impl_->ScrollEnd(); |
2853 | 2860 |
2854 EXPECT_EQ(scroll_delta.y(), | 2861 EXPECT_EQ(scroll_delta.y(), |
2855 top_controls_height_ - | 2862 top_controls_height_ - |
2856 host_impl_->active_tree()->total_top_controls_content_offset()); | 2863 host_impl_->top_controls_manager()->ContentTopOffset()); |
2857 | 2864 |
2858 scroll_delta = gfx::Vector2dF(0.f, 50.f); | 2865 scroll_delta = gfx::Vector2dF(0.f, 50.f); |
2859 EXPECT_EQ(InputHandler::ScrollStarted, | 2866 EXPECT_EQ(InputHandler::ScrollStarted, |
2860 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2867 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
2861 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2868 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2862 | 2869 |
2863 EXPECT_EQ(0, host_impl_->active_tree()->total_top_controls_content_offset()); | 2870 EXPECT_EQ(0, host_impl_->top_controls_manager()->ContentTopOffset()); |
2864 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(), | 2871 EXPECT_EQ(host_impl_->OuterViewportScrollLayer(), |
2865 host_impl_->CurrentlyScrollingLayer()); | 2872 host_impl_->CurrentlyScrollingLayer()); |
2866 | 2873 |
2867 host_impl_->ScrollEnd(); | 2874 host_impl_->ScrollEnd(); |
2868 | 2875 |
2869 // Position the viewports such that the inner viewport will be scrolled. | 2876 // Position the viewports such that the inner viewport will be scrolled. |
2870 gfx::Vector2dF inner_viewport_offset(0.f, 25.f); | 2877 gfx::Vector2dF inner_viewport_offset(0.f, 25.f); |
2871 host_impl_->OuterViewportScrollLayer()->SetScrollDelta(gfx::Vector2dF()); | 2878 host_impl_->OuterViewportScrollLayer()->SetScrollDelta(gfx::Vector2dF()); |
2872 host_impl_->InnerViewportScrollLayer()->SetScrollDelta(inner_viewport_offset); | 2879 host_impl_->InnerViewportScrollLayer()->SetScrollDelta(inner_viewport_offset); |
2873 | 2880 |
2874 scroll_delta = gfx::Vector2dF(0.f, -65.f); | 2881 scroll_delta = gfx::Vector2dF(0.f, -65.f); |
2875 EXPECT_EQ(InputHandler::ScrollStarted, | 2882 EXPECT_EQ(InputHandler::ScrollStarted, |
2876 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2883 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
2877 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2884 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2878 | 2885 |
2879 EXPECT_EQ(top_controls_height_, | 2886 EXPECT_EQ(top_controls_height_, |
2880 host_impl_->active_tree()->total_top_controls_content_offset()); | 2887 host_impl_->top_controls_manager()->ContentTopOffset()); |
2881 EXPECT_EQ( | 2888 EXPECT_EQ( |
2882 inner_viewport_offset.y() + (scroll_delta.y() + top_controls_height_), | 2889 inner_viewport_offset.y() + (scroll_delta.y() + top_controls_height_), |
2883 host_impl_->InnerViewportScrollLayer()->ScrollDelta().y()); | 2890 host_impl_->InnerViewportScrollLayer()->ScrollDelta().y()); |
2884 | 2891 |
2885 host_impl_->ScrollEnd(); | 2892 host_impl_->ScrollEnd(); |
2886 } | 2893 } |
2887 | 2894 |
2888 TEST_F(LayerTreeHostImplTopControlsTest, | 2895 TEST_F(LayerTreeHostImplTopControlsTest, |
2889 ScrollNonScrollableRootWithTopControls) { | 2896 ScrollNonScrollableRootWithTopControls) { |
2890 CreateHostImpl(settings_, CreateOutputSurface()); | 2897 CreateHostImpl(settings_, CreateOutputSurface()); |
(...skipping 4385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7276 } | 7283 } |
7277 } | 7284 } |
7278 | 7285 |
7279 class LayerTreeHostImplWithTopControlsTest : public LayerTreeHostImplTest { | 7286 class LayerTreeHostImplWithTopControlsTest : public LayerTreeHostImplTest { |
7280 public: | 7287 public: |
7281 void SetUp() override { | 7288 void SetUp() override { |
7282 LayerTreeSettings settings = DefaultSettings(); | 7289 LayerTreeSettings settings = DefaultSettings(); |
7283 settings.calculate_top_controls_position = true; | 7290 settings.calculate_top_controls_position = true; |
7284 CreateHostImpl(settings, CreateOutputSurface()); | 7291 CreateHostImpl(settings, CreateOutputSurface()); |
7285 host_impl_->active_tree()->set_top_controls_height(top_controls_height_); | 7292 host_impl_->active_tree()->set_top_controls_height(top_controls_height_); |
7286 host_impl_->active_tree()->set_top_controls_delta(top_controls_height_); | 7293 host_impl_->sync_tree()->set_top_controls_height(top_controls_height_); |
7287 host_impl_->top_controls_manager()->SetTopControlsHeight( | 7294 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(1.f); |
7288 top_controls_height_); | |
7289 } | 7295 } |
7290 | 7296 |
7291 protected: | 7297 protected: |
7292 static const int top_controls_height_; | 7298 static const int top_controls_height_; |
7293 }; | 7299 }; |
7294 | 7300 |
7295 const int LayerTreeHostImplWithTopControlsTest::top_controls_height_ = 50; | 7301 const int LayerTreeHostImplWithTopControlsTest::top_controls_height_ = 50; |
7296 | 7302 |
7297 TEST_F(LayerTreeHostImplWithTopControlsTest, NoIdleAnimations) { | 7303 TEST_F(LayerTreeHostImplWithTopControlsTest, NoIdleAnimations) { |
7298 SetupScrollAndContentsLayers(gfx::Size(100, 100)) | 7304 SetupScrollAndContentsLayers(gfx::Size(100, 100)) |
7299 ->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 10)); | 7305 ->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 10)); |
7300 host_impl_->Animate(base::TimeTicks()); | 7306 host_impl_->Animate(base::TimeTicks()); |
7301 EXPECT_FALSE(did_request_redraw_); | 7307 EXPECT_FALSE(did_request_redraw_); |
7302 } | 7308 } |
7303 | 7309 |
7304 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsHeightIsCommitted) { | 7310 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsHeightIsCommitted) { |
7305 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 7311 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
7306 EXPECT_FALSE(did_request_redraw_); | 7312 EXPECT_FALSE(did_request_redraw_); |
7307 host_impl_->CreatePendingTree(); | 7313 host_impl_->CreatePendingTree(); |
7308 host_impl_->sync_tree()->set_top_controls_height(100); | 7314 host_impl_->sync_tree()->set_top_controls_height(100); |
7309 host_impl_->ActivateSyncTree(); | 7315 host_impl_->ActivateSyncTree(); |
7310 EXPECT_EQ(100, host_impl_->top_controls_manager()->top_controls_height()); | 7316 EXPECT_EQ(100, host_impl_->top_controls_manager()->TopControlsHeight()); |
7311 } | 7317 } |
7312 | 7318 |
7313 TEST_F(LayerTreeHostImplWithTopControlsTest, | 7319 TEST_F(LayerTreeHostImplWithTopControlsTest, |
7314 TopControlsStayFullyVisibleOnHeightChange) { | 7320 TopControlsStayFullyVisibleOnHeightChange) { |
7315 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 7321 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
7316 EXPECT_EQ(0.f, host_impl_->ControlsTopOffset()); | 7322 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset()); |
7317 | 7323 |
7318 host_impl_->CreatePendingTree(); | 7324 host_impl_->CreatePendingTree(); |
7319 host_impl_->sync_tree()->set_top_controls_height(0); | 7325 host_impl_->sync_tree()->set_top_controls_height(0); |
7320 host_impl_->ActivateSyncTree(); | 7326 host_impl_->ActivateSyncTree(); |
7321 EXPECT_EQ(0.f, host_impl_->ControlsTopOffset()); | 7327 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset()); |
7322 | 7328 |
7323 host_impl_->CreatePendingTree(); | 7329 host_impl_->CreatePendingTree(); |
7324 host_impl_->sync_tree()->set_top_controls_height(50); | 7330 host_impl_->sync_tree()->set_top_controls_height(50); |
7325 host_impl_->ActivateSyncTree(); | 7331 host_impl_->ActivateSyncTree(); |
7326 EXPECT_EQ(0.f, host_impl_->ControlsTopOffset()); | 7332 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset()); |
7327 } | 7333 } |
7328 | 7334 |
7329 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationScheduling) { | 7335 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationScheduling) { |
7330 SetupScrollAndContentsLayers(gfx::Size(100, 100)) | 7336 SetupScrollAndContentsLayers(gfx::Size(100, 100)) |
7331 ->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 10)); | 7337 ->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 10)); |
7332 host_impl_->DidChangeTopControlsPosition(); | 7338 host_impl_->DidChangeTopControlsPosition(); |
7333 EXPECT_TRUE(did_request_animate_); | 7339 EXPECT_TRUE(did_request_animate_); |
7334 EXPECT_TRUE(did_request_redraw_); | 7340 EXPECT_TRUE(did_request_redraw_); |
7335 } | 7341 } |
7336 | 7342 |
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8053 // surface. | 8059 // surface. |
8054 EXPECT_EQ(0, num_lost_surfaces_); | 8060 EXPECT_EQ(0, num_lost_surfaces_); |
8055 host_impl_->DidLoseOutputSurface(); | 8061 host_impl_->DidLoseOutputSurface(); |
8056 EXPECT_EQ(1, num_lost_surfaces_); | 8062 EXPECT_EQ(1, num_lost_surfaces_); |
8057 host_impl_->DidLoseOutputSurface(); | 8063 host_impl_->DidLoseOutputSurface(); |
8058 EXPECT_LE(1, num_lost_surfaces_); | 8064 EXPECT_LE(1, num_lost_surfaces_); |
8059 } | 8065 } |
8060 | 8066 |
8061 } // namespace | 8067 } // namespace |
8062 } // namespace cc | 8068 } // namespace cc |
OLD | NEW |