Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(635)

Unified Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_pixeltest_filters.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1c486e372f0752ddb9400fd836ecd7b3a5aa95af..07fb04846769f5ec68b91bad827db0c27c7011dd 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -1839,6 +1839,8 @@ TEST_F(LayerTreeHostImplTest, CompositorFrameMetadata) {
EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size);
EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
EXPECT_EQ(4.f, metadata.max_page_scale_factor);
+ EXPECT_FALSE(metadata.root_overflow_x_hidden);
+ EXPECT_FALSE(metadata.root_overflow_y_hidden);
}
// Scrolling should update metadata immediately.
@@ -1857,6 +1859,24 @@ TEST_F(LayerTreeHostImplTest, CompositorFrameMetadata) {
EXPECT_EQ(gfx::Vector2dF(0.f, 10.f), metadata.root_scroll_offset);
}
+ // Root "overflow: hidden" properties should be reflected.
+ {
+ host_impl_->active_tree()
+ ->InnerViewportScrollLayer()
+ ->set_user_scrollable_horizontal(false);
+ CompositorFrameMetadata metadata =
+ host_impl_->MakeCompositorFrameMetadata();
+ EXPECT_TRUE(metadata.root_overflow_x_hidden);
+ EXPECT_FALSE(metadata.root_overflow_y_hidden);
+
+ host_impl_->active_tree()
+ ->InnerViewportScrollLayer()
+ ->set_user_scrollable_vertical(false);
+ metadata = host_impl_->MakeCompositorFrameMetadata();
+ EXPECT_TRUE(metadata.root_overflow_x_hidden);
+ EXPECT_TRUE(metadata.root_overflow_y_hidden);
+ }
+
// Page scale should update metadata correctly (shrinking only the viewport).
host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
host_impl_->PinchGestureBegin();
@@ -1904,11 +1924,9 @@ class DidDrawCheckLayer : public LayerImpl {
}
void AppendQuads(RenderPass* render_pass,
- const Occlusion& occlusion_in_content_space,
AppendQuadsData* append_quads_data) override {
append_quads_called_ = true;
- LayerImpl::AppendQuads(
- render_pass, occlusion_in_content_space, append_quads_data);
+ LayerImpl::AppendQuads(render_pass, append_quads_data);
}
void DidDraw(ResourceProvider* provider) override {
@@ -2131,10 +2149,8 @@ class MissingTextureAnimatingLayer : public DidDrawCheckLayer {
}
void AppendQuads(RenderPass* render_pass,
- const Occlusion& occlusion_in_content_space,
AppendQuadsData* append_quads_data) override {
- LayerImpl::AppendQuads(
- render_pass, occlusion_in_content_space, append_quads_data);
+ LayerImpl::AppendQuads(render_pass, append_quads_data);
if (had_incomplete_tile_)
append_quads_data->num_incomplete_tiles++;
if (tile_missing_)
@@ -2456,10 +2472,7 @@ class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
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();
+ host_impl_->active_tree()->SetCurrentTopControlsShownRatio(1.f);
}
return init;
}
@@ -2493,6 +2506,7 @@ class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
host_impl_->DidChangeTopControlsPosition();
host_impl_->CreatePendingTree();
+ host_impl_->sync_tree()->set_top_controls_height(top_controls_height_);
root =
LayerImpl::Create(host_impl_->sync_tree(), 1);
root_clip =
@@ -2524,6 +2538,7 @@ class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
const gfx::Size& scroll_layer_size) {
CreateHostImpl(settings_, CreateOutputSurface());
host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true);
+ host_impl_->sync_tree()->set_top_controls_height(top_controls_height_);
host_impl_->DidChangeTopControlsPosition();
scoped_ptr<LayerImpl> root =
@@ -2602,8 +2617,8 @@ TEST_F(LayerTreeHostImplTopControlsTest, ScrollTopControlsByFractionalAmount) {
host_impl_->active_tree()->InnerViewportScrollLayer();
DCHECK(inner_viewport_scroll_layer);
host_impl_->ScrollEnd();
- EXPECT_EQ(top_controls_scroll_delta,
- inner_viewport_scroll_layer->FixedContainerSizeDelta());
+ EXPECT_FLOAT_EQ(top_controls_scroll_delta.y(),
+ inner_viewport_scroll_layer->FixedContainerSizeDelta().y());
}
// In this test, the outer viewport is initially unscrollable. We test that a
@@ -2634,8 +2649,7 @@ TEST_F(LayerTreeHostImplTopControlsTest,
// The entire scroll delta should have been used to hide the top controls.
// The viewport layers should be resized back to their full sizes.
- EXPECT_EQ(0.f,
- host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_EQ(0.f, host_impl_->active_tree()->CurrentTopControlsShownRatio());
EXPECT_EQ(0.f, inner_scroll->CurrentScrollOffset().y());
EXPECT_EQ(100.f, inner_container->BoundsForScrolling().height());
EXPECT_EQ(100.f, outer_container->BoundsForScrolling().height());
@@ -2657,8 +2671,7 @@ TEST_F(LayerTreeHostImplTopControlsTest,
// The entire scroll delta should have been used to show the top controls.
// The outer viewport should be resized to accomodate and scrolled to the
// bottom of the document to keep the viewport in place.
- EXPECT_EQ(50.f,
- host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio());
EXPECT_EQ(50.f, outer_container->BoundsForScrolling().height());
EXPECT_EQ(50.f, inner_container->BoundsForScrolling().height());
EXPECT_EQ(25.f, outer_scroll->CurrentScrollOffset().y());
@@ -2704,8 +2717,8 @@ 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(),
- host_impl_->top_controls_manager()->ContentTopOffset());
+ EXPECT_FLOAT_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());
host_impl_->ScrollEnd();
@@ -2742,8 +2755,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollableSublayer) {
DrawFrame();
// Show top controls
- EXPECT_EQ(top_controls_height_,
- host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio());
LayerImpl* outer_viewport_scroll_layer =
host_impl_->active_tree()->OuterViewportScrollLayer();
@@ -2777,7 +2789,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollableSublayer) {
// Top controls should be hidden
EXPECT_EQ(scroll_delta.y(),
top_controls_height_ -
- host_impl_->active_tree()->total_top_controls_content_offset());
+ host_impl_->top_controls_manager()->ContentTopOffset());
}
// Ensure setting the top controls position explicitly using the setters on the
@@ -2787,14 +2799,18 @@ TEST_F(LayerTreeHostImplTopControlsTest, PositionTopControlsExplicitly) {
SetupTopControlsAndScrollLayer();
DrawFrame();
- host_impl_->active_tree()->set_top_controls_delta(0.f);
- host_impl_->active_tree()->set_top_controls_content_offset(30.f);
- EXPECT_EQ(30.f, host_impl_->top_controls_manager()->ContentTopOffset());
- EXPECT_EQ(-20.f, host_impl_->top_controls_manager()->ControlsTopOffset());
+ host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f);
+ host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread(
+ 30.f / top_controls_height_);
+ host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive();
+ EXPECT_FLOAT_EQ(30.f, host_impl_->top_controls_manager()->ContentTopOffset());
+ EXPECT_FLOAT_EQ(-20.f,
+ host_impl_->top_controls_manager()->ControlsTopOffset());
- host_impl_->active_tree()->set_top_controls_delta(-30.f);
- EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset());
- EXPECT_EQ(-50.f, host_impl_->top_controls_manager()->ControlsTopOffset());
+ host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f);
+ EXPECT_FLOAT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset());
+ EXPECT_FLOAT_EQ(-50.f,
+ host_impl_->top_controls_manager()->ControlsTopOffset());
host_impl_->DidChangeTopControlsPosition();
@@ -2811,18 +2827,22 @@ TEST_F(LayerTreeHostImplTopControlsTest, ApplyDeltaOnTreeActivation) {
SetupTopControlsAndScrollLayer();
DrawFrame();
- host_impl_->sync_tree()->set_top_controls_content_offset(15.f);
-
- 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()->top_controls_shown_ratio()->PushFromMainThread(
+ 20.f / top_controls_height_);
+ host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive();
+ host_impl_->active_tree()->SetCurrentTopControlsShownRatio(
+ 15.f / top_controls_height_);
+ host_impl_->active_tree()
+ ->top_controls_shown_ratio()
+ ->PullDeltaForMainThread();
+ host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f);
+ host_impl_->sync_tree()->PushTopControlsFromMainThread(15.f /
+ top_controls_height_);
host_impl_->DidChangeTopControlsPosition();
LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer();
EXPECT_EQ(viewport_size_, root_clip_ptr->bounds());
EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset());
- EXPECT_EQ(0.f,
- host_impl_->active_tree()->total_top_controls_content_offset());
host_impl_->ActivateSyncTree();
@@ -2830,11 +2850,13 @@ TEST_F(LayerTreeHostImplTopControlsTest, ApplyDeltaOnTreeActivation) {
EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ContentTopOffset());
EXPECT_EQ(viewport_size_, root_clip_ptr->bounds());
- EXPECT_EQ(0.f, host_impl_->active_tree()->sent_top_controls_delta());
- EXPECT_EQ(-15.f, host_impl_->active_tree()->top_controls_delta());
- EXPECT_EQ(15.f, host_impl_->active_tree()->top_controls_content_offset());
- EXPECT_EQ(0.f,
- host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_FLOAT_EQ(
+ -15.f, host_impl_->active_tree()->top_controls_shown_ratio()->Delta() *
+ top_controls_height_);
+ EXPECT_FLOAT_EQ(
+ 15.f,
+ host_impl_->active_tree()->top_controls_shown_ratio()->ActiveBase() *
+ top_controls_height_);
}
// Test that changing the top controls layout height is correctly applied to
@@ -2846,11 +2868,13 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsLayoutHeightChanged) {
SetupTopControlsAndScrollLayer();
DrawFrame();
- host_impl_->sync_tree()->set_top_controls_content_offset(50.f);
+ host_impl_->sync_tree()->PushTopControlsFromMainThread(1.f);
host_impl_->sync_tree()->set_top_controls_shrink_blink_size(true);
- host_impl_->active_tree()->set_top_controls_content_offset(50.f);
- host_impl_->active_tree()->set_top_controls_delta(-50.f);
+ host_impl_->active_tree()->top_controls_shown_ratio()->PushFromMainThread(
+ 1.f);
+ host_impl_->active_tree()->top_controls_shown_ratio()->PushPendingToActive();
+ host_impl_->active_tree()->SetCurrentTopControlsShownRatio(0.f);
host_impl_->DidChangeTopControlsPosition();
LayerImpl* root_clip_ptr = host_impl_->active_tree()->root_layer();
@@ -2872,9 +2896,11 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsLayoutHeightChanged) {
EXPECT_EQ(viewport_size_, root_clip_ptr->bounds());
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_->active_tree()->SetCurrentTopControlsShownRatio(1.f);
host_impl_->DidChangeTopControlsPosition();
+ EXPECT_EQ(1.f, host_impl_->top_controls_manager()->TopControlsShownRatio());
+ EXPECT_EQ(50.f, host_impl_->top_controls_manager()->TopControlsHeight());
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() - 50.f),
@@ -2889,8 +2915,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsViewportOffsetClamping) {
gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
DrawFrame();
- EXPECT_EQ(top_controls_height_,
- host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio());
LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer();
LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer();
@@ -2910,17 +2935,15 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsViewportOffsetClamping) {
host_impl_->ScrollBy(gfx::Point(), scroll_delta);
// scrolling down at the max extents no longer hides the top controls
- EXPECT_EQ(0.f,
- top_controls_height_ -
- host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio());
// forcefully hide the top controls by 25px
host_impl_->top_controls_manager()->ScrollBy(scroll_delta);
host_impl_->ScrollEnd();
- EXPECT_EQ(scroll_delta.y(),
- top_controls_height_ -
- host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_FLOAT_EQ(scroll_delta.y(),
+ top_controls_height_ -
+ host_impl_->top_controls_manager()->ContentTopOffset());
inner_scroll->ClampScrollToMaxScrollOffset();
outer_scroll->ClampScrollToMaxScrollOffset();
@@ -2956,8 +2979,8 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) {
gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
DrawFrame();
- EXPECT_EQ(top_controls_height_,
- host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_FLOAT_EQ(top_controls_height_,
+ host_impl_->top_controls_manager()->ContentTopOffset());
gfx::Vector2dF scroll_delta(0.f, 25.f);
EXPECT_EQ(InputHandler::ScrollStarted,
@@ -2965,9 +2988,9 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) {
host_impl_->ScrollBy(gfx::Point(), scroll_delta);
host_impl_->ScrollEnd();
- EXPECT_EQ(scroll_delta.y(),
- top_controls_height_ -
- host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_FLOAT_EQ(scroll_delta.y(),
+ top_controls_height_ -
+ host_impl_->top_controls_manager()->ContentTopOffset());
// Top controls were hidden by 25px so the inner viewport should have expanded
// by that much.
@@ -2993,7 +3016,7 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollOuterViewport) {
DrawFrame();
EXPECT_EQ(top_controls_height_,
- host_impl_->active_tree()->total_top_controls_content_offset());
+ host_impl_->top_controls_manager()->ContentTopOffset());
// Send a gesture scroll that will scroll the outer viewport, make sure the
// top controls get scrolled.
@@ -3005,16 +3028,16 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollOuterViewport) {
host_impl_->CurrentlyScrollingLayer());
host_impl_->ScrollEnd();
- EXPECT_EQ(scroll_delta.y(),
- top_controls_height_ -
- host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_FLOAT_EQ(scroll_delta.y(),
+ top_controls_height_ -
+ host_impl_->top_controls_manager()->ContentTopOffset());
scroll_delta = gfx::Vector2dF(0.f, 50.f);
EXPECT_EQ(InputHandler::ScrollStarted,
host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
host_impl_->ScrollBy(gfx::Point(), scroll_delta);
- EXPECT_EQ(0, host_impl_->active_tree()->total_top_controls_content_offset());
+ EXPECT_EQ(0, host_impl_->top_controls_manager()->ContentTopOffset());
EXPECT_EQ(host_impl_->OuterViewportScrollLayer(),
host_impl_->CurrentlyScrollingLayer());
@@ -3031,8 +3054,8 @@ TEST_F(LayerTreeHostImplTopControlsTest, TopControlsScrollOuterViewport) {
host_impl_->ScrollBy(gfx::Point(), scroll_delta);
EXPECT_EQ(top_controls_height_,
- host_impl_->active_tree()->total_top_controls_content_offset());
- EXPECT_EQ(
+ host_impl_->top_controls_manager()->ContentTopOffset());
+ EXPECT_FLOAT_EQ(
inner_viewport_offset.y() + (scroll_delta.y() + top_controls_height_),
host_impl_->InnerViewportScrollLayer()->ScrollDelta().y());
@@ -3065,8 +3088,8 @@ TEST_F(LayerTreeHostImplTopControlsTest,
host_impl_->top_controls_manager()->ScrollBegin();
host_impl_->top_controls_manager()->ScrollBy(
gfx::Vector2dF(0.f, scroll_increment_y));
- EXPECT_EQ(-scroll_increment_y,
- host_impl_->top_controls_manager()->ContentTopOffset());
+ EXPECT_FLOAT_EQ(-scroll_increment_y,
+ host_impl_->top_controls_manager()->ContentTopOffset());
// Now that top controls have moved, expect the clip to resize.
EXPECT_EQ(gfx::Size(viewport_size_.width(),
viewport_size_.height() + scroll_increment_y),
@@ -3075,8 +3098,8 @@ TEST_F(LayerTreeHostImplTopControlsTest,
host_impl_->top_controls_manager()->ScrollBy(
gfx::Vector2dF(0.f, scroll_increment_y));
host_impl_->top_controls_manager()->ScrollEnd();
- EXPECT_EQ(-2 * scroll_increment_y,
- host_impl_->top_controls_manager()->ContentTopOffset());
+ EXPECT_FLOAT_EQ(-2 * scroll_increment_y,
+ host_impl_->top_controls_manager()->ContentTopOffset());
// Now that top controls have moved, expect the clip to resize.
EXPECT_EQ(clip_size_, root_clip_ptr->bounds());
@@ -4413,7 +4436,6 @@ class BlendStateCheckLayer : public LayerImpl {
}
void AppendQuads(RenderPass* render_pass,
- const Occlusion& occlusion_in_content_space,
AppendQuadsData* append_quads_data) override {
quads_appended_ = true;
@@ -5138,7 +5160,6 @@ class FakeLayerWithQuads : public LayerImpl {
}
void AppendQuads(RenderPass* render_pass,
- const Occlusion& occlusion_in_content_space,
AppendQuadsData* append_quads_data) override {
SharedQuadState* shared_quad_state =
render_pass->CreateAndAppendSharedQuadState();
@@ -6592,8 +6613,8 @@ TEST_F(LayerTreeHostImplTestDeferredInitialize, Success) {
// DeferredInitialize and hardware draw.
did_update_renderer_capabilities_ = false;
- EXPECT_TRUE(
- output_surface_->InitializeAndSetContext3d(onscreen_context_provider_));
+ EXPECT_TRUE(output_surface_->InitializeAndSetContext3d(
+ onscreen_context_provider_, nullptr));
EXPECT_EQ(onscreen_context_provider_.get(),
host_impl_->output_surface()->context_provider());
EXPECT_TRUE(did_update_renderer_capabilities_);
@@ -6623,8 +6644,8 @@ TEST_F(LayerTreeHostImplTestDeferredInitialize, Fails) {
// DeferredInitialize fails.
did_update_renderer_capabilities_ = false;
- EXPECT_FALSE(
- output_surface_->InitializeAndSetContext3d(onscreen_context_provider_));
+ EXPECT_FALSE(output_surface_->InitializeAndSetContext3d(
+ onscreen_context_provider_, nullptr));
EXPECT_FALSE(host_impl_->output_surface()->context_provider());
EXPECT_FALSE(did_update_renderer_capabilities_);
@@ -7412,9 +7433,8 @@ class LayerTreeHostImplWithTopControlsTest : public LayerTreeHostImplTest {
settings.calculate_top_controls_position = true;
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_);
+ host_impl_->sync_tree()->set_top_controls_height(top_controls_height_);
+ host_impl_->active_tree()->SetCurrentTopControlsShownRatio(1.f);
}
protected:
@@ -7436,23 +7456,23 @@ TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsHeightIsCommitted) {
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());
+ EXPECT_EQ(100, host_impl_->top_controls_manager()->TopControlsHeight());
}
TEST_F(LayerTreeHostImplWithTopControlsTest,
TopControlsStayFullyVisibleOnHeightChange) {
SetupScrollAndContentsLayers(gfx::Size(100, 100));
- EXPECT_EQ(0.f, host_impl_->ControlsTopOffset());
+ EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset());
host_impl_->CreatePendingTree();
host_impl_->sync_tree()->set_top_controls_height(0);
host_impl_->ActivateSyncTree();
- EXPECT_EQ(0.f, host_impl_->ControlsTopOffset());
+ EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset());
host_impl_->CreatePendingTree();
host_impl_->sync_tree()->set_top_controls_height(50);
host_impl_->ActivateSyncTree();
- EXPECT_EQ(0.f, host_impl_->ControlsTopOffset());
+ EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset());
}
TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationScheduling) {
@@ -8017,17 +8037,26 @@ TEST_F(LayerTreeHostImplTest, GetPictureLayerImplPairs) {
scoped_ptr<PictureLayerImpl> layer =
FakePictureLayerImpl::Create(host_impl_->pending_tree(), 10);
layer->SetBounds(gfx::Size(10, 10));
+ scoped_ptr<FakePictureLayerImpl> nondraw_layer =
+ FakePictureLayerImpl::Create(host_impl_->pending_tree(), 12);
+ nondraw_layer->SetBounds(gfx::Size(10, 10));
scoped_refptr<RasterSource> pile(FakePicturePileImpl::CreateEmptyPile(
gfx::Size(10, 10), gfx::Size(10, 10)));
Region empty_invalidation;
const PictureLayerTilingSet* null_tiling_set = nullptr;
layer->UpdateRasterSource(pile, &empty_invalidation, null_tiling_set);
+ nondraw_layer->UpdateRasterSource(pile, &empty_invalidation, null_tiling_set);
+ layer->AddChild(nondraw_layer.Pass());
host_impl_->pending_tree()->SetRootLayer(layer.Pass());
LayerTreeImpl* pending_tree = host_impl_->pending_tree();
LayerImpl* pending_layer = pending_tree->root_layer();
+ FakePictureLayerImpl* pending_nondraw_layer =
+ static_cast<FakePictureLayerImpl*>(pending_layer->children()[0]);
+
+ pending_nondraw_layer->SetIsDrawnRenderSurfaceLayerListMember(false);
std::vector<PictureLayerImpl::Pair> layer_pairs;
host_impl_->GetPictureLayerImplPairs(&layer_pairs, true);
@@ -8039,10 +8068,16 @@ TEST_F(LayerTreeHostImplTest, GetPictureLayerImplPairs) {
LayerTreeImpl* active_tree = host_impl_->active_tree();
LayerImpl* active_layer = active_tree->root_layer();
+ FakePictureLayerImpl* active_nondraw_layer =
+ static_cast<FakePictureLayerImpl*>(active_layer->children()[0]);
EXPECT_NE(active_tree, pending_tree);
EXPECT_NE(active_layer, pending_layer);
+ EXPECT_NE(active_nondraw_layer, pending_nondraw_layer);
EXPECT_NE(nullptr, active_tree);
EXPECT_NE(nullptr, active_layer);
+ EXPECT_NE(nullptr, active_nondraw_layer);
+
+ active_nondraw_layer->SetIsDrawnRenderSurfaceLayerListMember(false);
host_impl_->CreatePendingTree();
@@ -8067,20 +8102,192 @@ TEST_F(LayerTreeHostImplTest, GetPictureLayerImplPairs) {
host_impl_->pending_tree()->root_layer()->AddChild(
FakePictureLayerImpl::Create(host_impl_->pending_tree(), 11));
- LayerImpl* new_pending_layer = pending_tree->root_layer()->children()[0];
+ LayerImpl* new_pending_layer = pending_tree->root_layer()->children()[1];
layer_pairs.clear();
host_impl_->GetPictureLayerImplPairs(&layer_pairs, true);
EXPECT_EQ(2u, layer_pairs.size());
+ // The pair ordering is flaky, so make it consistent.
+ if (layer_pairs[0].active != active_layer)
+ std::swap(layer_pairs[0], layer_pairs[1]);
+ EXPECT_EQ(active_layer, layer_pairs[0].active);
+ EXPECT_EQ(pending_layer, layer_pairs[0].pending);
+ EXPECT_EQ(new_pending_layer, layer_pairs[1].pending);
+ EXPECT_EQ(nullptr, layer_pairs[1].active);
+
+ host_impl_->pending_tree()->root_layer()->RemoveChild(new_pending_layer);
+
+ // Have the pending layer be part of the RSLL now. It should appear in the
+ // list without an active twin.
+ pending_nondraw_layer->SetIsDrawnRenderSurfaceLayerListMember(true);
+ layer_pairs.clear();
+ host_impl_->GetPictureLayerImplPairs(&layer_pairs, true);
+ EXPECT_EQ(2u, layer_pairs.size());
// The pair ordering is flaky, so make it consistent.
if (layer_pairs[0].active != active_layer)
std::swap(layer_pairs[0], layer_pairs[1]);
+ EXPECT_EQ(active_layer, layer_pairs[0].active);
+ EXPECT_EQ(pending_layer, layer_pairs[0].pending);
+ EXPECT_EQ(pending_nondraw_layer, layer_pairs[1].pending);
+ EXPECT_EQ(nullptr, layer_pairs[1].active);
+ // Have the active layer be part of the RSLL now instead. It should appear in
+ // the list without a pending twin.
+ pending_nondraw_layer->SetIsDrawnRenderSurfaceLayerListMember(false);
+ active_nondraw_layer->SetIsDrawnRenderSurfaceLayerListMember(true);
+
+ layer_pairs.clear();
+ host_impl_->GetPictureLayerImplPairs(&layer_pairs, true);
+ EXPECT_EQ(2u, layer_pairs.size());
+ // The pair ordering is flaky, so make it consistent.
+ if (layer_pairs[0].active != active_layer)
+ std::swap(layer_pairs[0], layer_pairs[1]);
+ EXPECT_EQ(active_layer, layer_pairs[0].active);
+ EXPECT_EQ(pending_layer, layer_pairs[0].pending);
+ EXPECT_EQ(nullptr, layer_pairs[1].pending);
+ EXPECT_EQ(active_nondraw_layer, layer_pairs[1].active);
+}
+
+TEST_F(LayerTreeHostImplTest, GetPictureLayerImplPairsWithNonRSLLMembers) {
+ host_impl_->CreatePendingTree();
+
+ scoped_ptr<PictureLayerImpl> layer =
+ FakePictureLayerImpl::Create(host_impl_->pending_tree(), 10);
+ layer->SetBounds(gfx::Size(10, 10));
+ scoped_ptr<FakePictureLayerImpl> nondraw_layer =
+ FakePictureLayerImpl::Create(host_impl_->pending_tree(), 12);
+ nondraw_layer->SetBounds(gfx::Size(10, 10));
+
+ scoped_refptr<RasterSource> pile(FakePicturePileImpl::CreateEmptyPile(
+ gfx::Size(10, 10), gfx::Size(10, 10)));
+ Region empty_invalidation;
+ const PictureLayerTilingSet* null_tiling_set = nullptr;
+ layer->UpdateRasterSource(pile, &empty_invalidation, null_tiling_set);
+ nondraw_layer->UpdateRasterSource(pile, &empty_invalidation, null_tiling_set);
+
+ layer->AddChild(nondraw_layer.Pass());
+ host_impl_->pending_tree()->SetRootLayer(layer.Pass());
+
+ LayerTreeImpl* pending_tree = host_impl_->pending_tree();
+ LayerImpl* pending_layer = pending_tree->root_layer();
+ FakePictureLayerImpl* pending_nondraw_layer =
+ static_cast<FakePictureLayerImpl*>(pending_layer->children()[0]);
+
+ pending_nondraw_layer->SetIsDrawnRenderSurfaceLayerListMember(false);
+
+ std::vector<PictureLayerImpl::Pair> layer_pairs;
+ host_impl_->GetPictureLayerImplPairs(&layer_pairs, false);
+ EXPECT_EQ(2u, layer_pairs.size());
+ // The pair ordering is flaky, so make it consistent.
+ if (layer_pairs[0].pending != pending_layer)
+ std::swap(layer_pairs[0], layer_pairs[1]);
+ EXPECT_EQ(pending_layer, layer_pairs[0].pending);
+ EXPECT_EQ(nullptr, layer_pairs[0].active);
+ EXPECT_EQ(pending_nondraw_layer, layer_pairs[1].pending);
+ EXPECT_EQ(nullptr, layer_pairs[1].active);
+
+ host_impl_->ActivateSyncTree();
+
+ LayerTreeImpl* active_tree = host_impl_->active_tree();
+ LayerImpl* active_layer = active_tree->root_layer();
+ FakePictureLayerImpl* active_nondraw_layer =
+ static_cast<FakePictureLayerImpl*>(active_layer->children()[0]);
+ EXPECT_NE(active_tree, pending_tree);
+ EXPECT_NE(active_layer, pending_layer);
+ EXPECT_NE(active_nondraw_layer, pending_nondraw_layer);
+ EXPECT_NE(nullptr, active_tree);
+ EXPECT_NE(nullptr, active_layer);
+ EXPECT_NE(nullptr, active_nondraw_layer);
+
+ active_nondraw_layer->SetIsDrawnRenderSurfaceLayerListMember(false);
+
+ host_impl_->CreatePendingTree();
+
+ layer_pairs.clear();
+ host_impl_->GetPictureLayerImplPairs(&layer_pairs, false);
+ EXPECT_EQ(2u, layer_pairs.size());
+ // The pair ordering is flaky, so make it consistent.
+ if (layer_pairs[0].active != active_layer)
+ std::swap(layer_pairs[0], layer_pairs[1]);
+ EXPECT_EQ(active_layer, layer_pairs[0].active);
+ EXPECT_EQ(pending_layer, layer_pairs[0].pending);
+ EXPECT_EQ(pending_nondraw_layer, layer_pairs[1].pending);
+ EXPECT_EQ(active_nondraw_layer, layer_pairs[1].active);
+
+ // Activate, the active layer has no twin now.
+ host_impl_->ActivateSyncTree();
+
+ layer_pairs.clear();
+ host_impl_->GetPictureLayerImplPairs(&layer_pairs, false);
+ EXPECT_EQ(2u, layer_pairs.size());
+ // The pair ordering is flaky, so make it consistent.
+ if (layer_pairs[0].active != active_layer)
+ std::swap(layer_pairs[0], layer_pairs[1]);
+ EXPECT_EQ(active_layer, layer_pairs[0].active);
+ EXPECT_EQ(nullptr, layer_pairs[0].pending);
+ EXPECT_EQ(active_nondraw_layer, layer_pairs[1].active);
+ EXPECT_EQ(nullptr, layer_pairs[1].pending);
+
+ // Create another layer in the pending tree that's not in the active tree. We
+ // should get three pairs including the nondraw layers.
+ host_impl_->CreatePendingTree();
+ host_impl_->pending_tree()->root_layer()->AddChild(
+ FakePictureLayerImpl::Create(host_impl_->pending_tree(), 11));
+
+ LayerImpl* new_pending_layer = pending_tree->root_layer()->children()[1];
+
+ layer_pairs.clear();
+ host_impl_->GetPictureLayerImplPairs(&layer_pairs, false);
+ EXPECT_EQ(3u, layer_pairs.size());
+ // The pair ordering is flaky, so make it consistent.
+ if (layer_pairs[0].active != active_layer)
+ std::swap(layer_pairs[0], layer_pairs[1]);
+ if (layer_pairs[0].active != active_layer)
+ std::swap(layer_pairs[0], layer_pairs[2]);
+ if (layer_pairs[1].pending != new_pending_layer)
+ std::swap(layer_pairs[1], layer_pairs[2]);
EXPECT_EQ(active_layer, layer_pairs[0].active);
EXPECT_EQ(pending_layer, layer_pairs[0].pending);
EXPECT_EQ(new_pending_layer, layer_pairs[1].pending);
EXPECT_EQ(nullptr, layer_pairs[1].active);
+ EXPECT_EQ(active_nondraw_layer, layer_pairs[2].active);
+ EXPECT_EQ(pending_nondraw_layer, layer_pairs[2].pending);
+
+ host_impl_->pending_tree()->root_layer()->RemoveChild(new_pending_layer);
+
+ // Have the pending layer be part of the RSLL now. It should appear in the
+ // list, as should its active twin since we don't request only layers with
+ // valid draw properties.
+ pending_nondraw_layer->SetIsDrawnRenderSurfaceLayerListMember(true);
+
+ layer_pairs.clear();
+ host_impl_->GetPictureLayerImplPairs(&layer_pairs, false);
+ EXPECT_EQ(2u, layer_pairs.size());
+ // The pair ordering is flaky, so make it consistent.
+ if (layer_pairs[0].active != active_layer)
+ std::swap(layer_pairs[0], layer_pairs[1]);
+ EXPECT_EQ(active_layer, layer_pairs[0].active);
+ EXPECT_EQ(pending_layer, layer_pairs[0].pending);
+ EXPECT_EQ(pending_nondraw_layer, layer_pairs[1].pending);
+ EXPECT_EQ(active_nondraw_layer, layer_pairs[1].active);
+
+ // Have the active layer be part of the RSLL now instead. It should appear in
+ // the list, as should its pending twin since we don't request only layers
+ // with valid draw properties.
+ pending_nondraw_layer->SetIsDrawnRenderSurfaceLayerListMember(false);
+ active_nondraw_layer->SetIsDrawnRenderSurfaceLayerListMember(true);
+
+ layer_pairs.clear();
+ host_impl_->GetPictureLayerImplPairs(&layer_pairs, false);
+ EXPECT_EQ(2u, layer_pairs.size());
+ // The pair ordering is flaky, so make it consistent.
+ if (layer_pairs[0].active != active_layer)
+ std::swap(layer_pairs[0], layer_pairs[1]);
+ EXPECT_EQ(active_layer, layer_pairs[0].active);
+ EXPECT_EQ(pending_layer, layer_pairs[0].pending);
+ EXPECT_EQ(active_nondraw_layer, layer_pairs[1].active);
+ EXPECT_EQ(pending_nondraw_layer, layer_pairs[1].pending);
}
TEST_F(LayerTreeHostImplTest, DidBecomeActive) {
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_pixeltest_filters.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698