| Index: cc/trees/layer_tree_host_unittest_picture.cc
|
| diff --git a/cc/trees/layer_tree_host_unittest_picture.cc b/cc/trees/layer_tree_host_unittest_picture.cc
|
| deleted file mode 100644
|
| index 7d3d5254f4f0d7a25331d78462ae8562a32bd499..0000000000000000000000000000000000000000
|
| --- a/cc/trees/layer_tree_host_unittest_picture.cc
|
| +++ /dev/null
|
| @@ -1,572 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "cc/trees/layer_tree_host.h"
|
| -
|
| -#include "cc/test/fake_content_layer_client.h"
|
| -#include "cc/test/fake_picture_layer.h"
|
| -#include "cc/test/fake_picture_layer_impl.h"
|
| -#include "cc/test/layer_tree_test.h"
|
| -#include "cc/trees/layer_tree_impl.h"
|
| -
|
| -namespace cc {
|
| -namespace {
|
| -
|
| -// These tests deal with picture layers.
|
| -class LayerTreeHostPictureTest : public LayerTreeTest {
|
| - protected:
|
| - void SetupTreeWithSinglePictureLayer(const gfx::Size& size) {
|
| - scoped_refptr<Layer> root = Layer::Create();
|
| - root->SetBounds(size);
|
| -
|
| - root_picture_layer_ = FakePictureLayer::Create(&client_);
|
| - root_picture_layer_->SetBounds(size);
|
| - root->AddChild(root_picture_layer_);
|
| -
|
| - layer_tree_host()->SetRootLayer(root);
|
| - }
|
| -
|
| - scoped_refptr<FakePictureLayer> root_picture_layer_;
|
| - FakeContentLayerClient client_;
|
| -};
|
| -
|
| -class LayerTreeHostPictureTestTwinLayer
|
| - : public LayerTreeHostPictureTest {
|
| - void SetupTree() override {
|
| - SetupTreeWithSinglePictureLayer(gfx::Size(1, 1));
|
| - }
|
| -
|
| - void BeginTest() override {
|
| - activates_ = 0;
|
| - PostSetNeedsCommitToMainThread();
|
| - }
|
| -
|
| - void DidCommit() override {
|
| - switch (layer_tree_host()->source_frame_number()) {
|
| - case 1:
|
| - // Activate while there are pending and active twins in place.
|
| - layer_tree_host()->SetNeedsCommit();
|
| - break;
|
| - case 2:
|
| - // Drop the picture layer from the tree so the activate will have an
|
| - // active layer without a pending twin.
|
| - layer_tree_host()->root_layer()->children()[0]->RemoveFromParent();
|
| - break;
|
| - case 3: {
|
| - // Add a new picture layer so the activate will have a pending layer
|
| - // without an active twin.
|
| - scoped_refptr<FakePictureLayer> picture =
|
| - FakePictureLayer::Create(&client_);
|
| - layer_tree_host()->root_layer()->AddChild(picture);
|
| - break;
|
| - }
|
| - case 4:
|
| - // Active while there are pending and active twins again.
|
| - layer_tree_host()->SetNeedsCommit();
|
| - break;
|
| - case 5:
|
| - EndTest();
|
| - break;
|
| - }
|
| - }
|
| -
|
| - void WillActivateTreeOnThread(LayerTreeHostImpl* impl) override {
|
| - LayerImpl* pending_root_impl = impl->pending_tree()->root_layer();
|
| - LayerImpl* active_root_impl = impl->active_tree()->root_layer();
|
| -
|
| - if (pending_root_impl->children().empty()) {
|
| - EXPECT_EQ(2, activates_);
|
| - return;
|
| - }
|
| -
|
| - FakePictureLayerImpl* pending_picture_impl =
|
| - static_cast<FakePictureLayerImpl*>(pending_root_impl->children()[0]);
|
| -
|
| - if (!active_root_impl) {
|
| - EXPECT_EQ(0, activates_);
|
| - EXPECT_EQ(nullptr, pending_picture_impl->GetPendingOrActiveTwinLayer());
|
| - return;
|
| - }
|
| -
|
| - if (active_root_impl->children().empty()) {
|
| - EXPECT_EQ(3, activates_);
|
| - EXPECT_EQ(nullptr, pending_picture_impl->GetPendingOrActiveTwinLayer());
|
| - return;
|
| - }
|
| -
|
| - FakePictureLayerImpl* active_picture_impl =
|
| - static_cast<FakePictureLayerImpl*>(active_root_impl->children()[0]);
|
| -
|
| - // After the first activation, when we commit again, we'll have a pending
|
| - // and active layer. Then we recreate a picture layer in the 4th activate
|
| - // and the next commit will have a pending and active twin again.
|
| - EXPECT_TRUE(activates_ == 1 || activates_ == 4) << activates_;
|
| -
|
| - EXPECT_EQ(pending_picture_impl,
|
| - active_picture_impl->GetPendingOrActiveTwinLayer());
|
| - EXPECT_EQ(active_picture_impl,
|
| - pending_picture_impl->GetPendingOrActiveTwinLayer());
|
| - EXPECT_EQ(nullptr, active_picture_impl->GetRecycledTwinLayer());
|
| - }
|
| -
|
| - void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override {
|
| - LayerImpl* active_root_impl = impl->active_tree()->root_layer();
|
| - LayerImpl* recycle_root_impl = impl->recycle_tree()->root_layer();
|
| -
|
| - if (active_root_impl->children().empty()) {
|
| - EXPECT_EQ(2, activates_);
|
| - } else {
|
| - FakePictureLayerImpl* active_picture_impl =
|
| - static_cast<FakePictureLayerImpl*>(active_root_impl->children()[0]);
|
| - FakePictureLayerImpl* recycle_picture_impl =
|
| - static_cast<FakePictureLayerImpl*>(recycle_root_impl->children()[0]);
|
| -
|
| - EXPECT_EQ(nullptr, active_picture_impl->GetPendingOrActiveTwinLayer());
|
| - EXPECT_EQ(recycle_picture_impl,
|
| - active_picture_impl->GetRecycledTwinLayer());
|
| - }
|
| -
|
| - ++activates_;
|
| - }
|
| -
|
| - void AfterTest() override { EXPECT_EQ(5, activates_); }
|
| -
|
| - int activates_;
|
| -};
|
| -
|
| -// There is no pending layers in single thread mode.
|
| -MULTI_THREAD_IMPL_TEST_F(LayerTreeHostPictureTestTwinLayer);
|
| -
|
| -class LayerTreeHostPictureTestResizeViewportWithGpuRaster
|
| - : public LayerTreeHostPictureTest {
|
| - void InitializeSettings(LayerTreeSettings* settings) override {
|
| - settings->gpu_rasterization_forced = true;
|
| - }
|
| -
|
| - void SetupTree() override {
|
| - scoped_refptr<Layer> root = Layer::Create();
|
| - root->SetBounds(gfx::Size(768, 960));
|
| -
|
| - client_.set_fill_with_nonsolid_color(true);
|
| - picture_ = FakePictureLayer::Create(&client_);
|
| - picture_->SetBounds(gfx::Size(768, 960));
|
| - root->AddChild(picture_);
|
| -
|
| - layer_tree_host()->SetRootLayer(root);
|
| - LayerTreeHostPictureTest::SetupTree();
|
| - }
|
| -
|
| - void BeginTest() override { PostSetNeedsCommitToMainThread(); }
|
| -
|
| - void CommitCompleteOnThread(LayerTreeHostImpl* impl) override {
|
| - LayerImpl* child = impl->sync_tree()->root_layer()->children()[0];
|
| - FakePictureLayerImpl* picture_impl =
|
| - static_cast<FakePictureLayerImpl*>(child);
|
| - gfx::Size tile_size =
|
| - picture_impl->HighResTiling()->TileAt(0, 0)->content_rect().size();
|
| -
|
| - switch (impl->sync_tree()->source_frame_number()) {
|
| - case 0:
|
| - tile_size_ = tile_size;
|
| - // GPU Raster picks a tile size based on the viewport size.
|
| - EXPECT_EQ(gfx::Size(768, 256), tile_size);
|
| - break;
|
| - case 1:
|
| - // When the viewport changed size, the new frame's tiles should change
|
| - // along with it.
|
| - EXPECT_NE(gfx::Size(768, 256), tile_size);
|
| - }
|
| - }
|
| -
|
| - void DidCommit() override {
|
| - switch (layer_tree_host()->source_frame_number()) {
|
| - case 1:
|
| - // Change the picture layer's size along with the viewport, so it will
|
| - // consider picking a new tile size.
|
| - picture_->SetBounds(gfx::Size(768, 1056));
|
| - layer_tree_host()->SetViewportSize(gfx::Size(768, 1056));
|
| - break;
|
| - case 2:
|
| - EndTest();
|
| - }
|
| - }
|
| -
|
| - void AfterTest() override {}
|
| -
|
| - gfx::Size tile_size_;
|
| - FakeContentLayerClient client_;
|
| - scoped_refptr<FakePictureLayer> picture_;
|
| -};
|
| -
|
| -SINGLE_AND_MULTI_THREAD_IMPL_TEST_F(
|
| - LayerTreeHostPictureTestResizeViewportWithGpuRaster);
|
| -
|
| -class LayerTreeHostPictureTestChangeLiveTilesRectWithRecycleTree
|
| - : public LayerTreeHostPictureTest {
|
| - void SetupTree() override {
|
| - frame_ = 0;
|
| - did_post_commit_ = false;
|
| -
|
| - scoped_refptr<Layer> root = Layer::Create();
|
| - root->SetBounds(gfx::Size(100, 100));
|
| -
|
| - // The layer is big enough that the live tiles rect won't cover the full
|
| - // layer.
|
| - client_.set_fill_with_nonsolid_color(true);
|
| - picture_ = FakePictureLayer::Create(&client_);
|
| - picture_->SetBounds(gfx::Size(100, 100000));
|
| - root->AddChild(picture_);
|
| -
|
| - layer_tree_host()->SetRootLayer(root);
|
| - LayerTreeHostPictureTest::SetupTree();
|
| - }
|
| -
|
| - void BeginTest() override { PostSetNeedsCommitToMainThread(); }
|
| -
|
| - void DrawLayersOnThread(LayerTreeHostImpl* impl) override {
|
| - LayerImpl* child = impl->active_tree()->root_layer()->children()[0];
|
| - FakePictureLayerImpl* picture_impl =
|
| - static_cast<FakePictureLayerImpl*>(child);
|
| - FakePictureLayerImpl* recycled_impl = static_cast<FakePictureLayerImpl*>(
|
| - picture_impl->GetRecycledTwinLayer());
|
| -
|
| - switch (++frame_) {
|
| - case 1: {
|
| - PictureLayerTiling* tiling = picture_impl->HighResTiling();
|
| - PictureLayerTiling* recycled_tiling = recycled_impl->HighResTiling();
|
| - int num_tiles_y = tiling->TilingDataForTesting().num_tiles_y();
|
| -
|
| - // There should be tiles at the top of the picture layer but not at the
|
| - // bottom.
|
| - EXPECT_TRUE(tiling->TileAt(0, 0));
|
| - EXPECT_FALSE(tiling->TileAt(0, num_tiles_y));
|
| -
|
| - // The recycled tiling matches it.
|
| - EXPECT_TRUE(recycled_tiling->TileAt(0, 0));
|
| - EXPECT_FALSE(recycled_tiling->TileAt(0, num_tiles_y));
|
| -
|
| - // The live tiles rect matches on the recycled tree.
|
| - EXPECT_EQ(tiling->live_tiles_rect(),
|
| - recycled_tiling->live_tiles_rect());
|
| -
|
| - // Make the bottom of the layer visible.
|
| - picture_impl->SetPosition(gfx::PointF(0.f, -100000.f + 100.f));
|
| - impl->SetNeedsRedraw();
|
| - break;
|
| - }
|
| - case 2: {
|
| - PictureLayerTiling* tiling = picture_impl->HighResTiling();
|
| - PictureLayerTiling* recycled_tiling = recycled_impl->HighResTiling();
|
| -
|
| - // There not be tiles at the top of the layer now.
|
| - EXPECT_FALSE(tiling->TileAt(0, 0));
|
| -
|
| - // The recycled twin tiling should not have unshared tiles at the top
|
| - // either.
|
| - EXPECT_FALSE(recycled_tiling->TileAt(0, 0));
|
| -
|
| - // The live tiles rect matches on the recycled tree.
|
| - EXPECT_EQ(tiling->live_tiles_rect(),
|
| - recycled_tiling->live_tiles_rect());
|
| -
|
| - // Make the top of the layer visible again.
|
| - picture_impl->SetPosition(gfx::PointF());
|
| - impl->SetNeedsRedraw();
|
| - break;
|
| - }
|
| - case 3: {
|
| - PictureLayerTiling* tiling = picture_impl->HighResTiling();
|
| - PictureLayerTiling* recycled_tiling = recycled_impl->HighResTiling();
|
| - int num_tiles_y = tiling->TilingDataForTesting().num_tiles_y();
|
| -
|
| - // There should be tiles at the top of the picture layer again.
|
| - EXPECT_TRUE(tiling->TileAt(0, 0));
|
| - EXPECT_FALSE(tiling->TileAt(0, num_tiles_y));
|
| -
|
| - // The recycled tiling should also have tiles at the top.
|
| - EXPECT_TRUE(recycled_tiling->TileAt(0, 0));
|
| - EXPECT_FALSE(recycled_tiling->TileAt(0, num_tiles_y));
|
| -
|
| - // The live tiles rect matches on the recycled tree.
|
| - EXPECT_EQ(tiling->live_tiles_rect(),
|
| - recycled_tiling->live_tiles_rect());
|
| -
|
| - // Make a new main frame without changing the picture layer at all, so
|
| - // it won't need to update or push properties.
|
| - did_post_commit_ = true;
|
| - PostSetNeedsCommitToMainThread();
|
| - break;
|
| - }
|
| - }
|
| - }
|
| -
|
| - void WillActivateTreeOnThread(LayerTreeHostImpl* impl) override {
|
| - LayerImpl* child = impl->sync_tree()->root_layer()->children()[0];
|
| - FakePictureLayerImpl* picture_impl =
|
| - static_cast<FakePictureLayerImpl*>(child);
|
| - PictureLayerTiling* tiling = picture_impl->HighResTiling();
|
| - int num_tiles_y = tiling->TilingDataForTesting().num_tiles_y();
|
| -
|
| - // The pending layer should always have tiles at the top of it each commit.
|
| - // The tile is part of the required for activation set so it should exist.
|
| - EXPECT_TRUE(tiling->TileAt(0, 0));
|
| - EXPECT_FALSE(tiling->TileAt(0, num_tiles_y));
|
| -
|
| - if (did_post_commit_)
|
| - EndTest();
|
| - }
|
| -
|
| - void AfterTest() override {}
|
| -
|
| - int frame_;
|
| - bool did_post_commit_;
|
| - FakeContentLayerClient client_;
|
| - scoped_refptr<FakePictureLayer> picture_;
|
| -};
|
| -
|
| -// Multi-thread only since there is no recycle tree in single thread.
|
| -MULTI_THREAD_IMPL_TEST_F(
|
| - LayerTreeHostPictureTestChangeLiveTilesRectWithRecycleTree);
|
| -
|
| -class LayerTreeHostPictureTestRSLLMembership : public LayerTreeHostPictureTest {
|
| - void SetupTree() override {
|
| - scoped_refptr<Layer> root = Layer::Create();
|
| - root->SetBounds(gfx::Size(100, 100));
|
| -
|
| - child_ = Layer::Create();
|
| - root->AddChild(child_);
|
| -
|
| - // Don't be solid color so the layer has tilings/tiles.
|
| - client_.set_fill_with_nonsolid_color(true);
|
| - picture_ = FakePictureLayer::Create(&client_);
|
| - picture_->SetBounds(gfx::Size(100, 100));
|
| - child_->AddChild(picture_);
|
| -
|
| - layer_tree_host()->SetRootLayer(root);
|
| - LayerTreeHostPictureTest::SetupTree();
|
| - }
|
| -
|
| - void BeginTest() override { PostSetNeedsCommitToMainThread(); }
|
| -
|
| - void CommitCompleteOnThread(LayerTreeHostImpl* impl) override {
|
| - LayerImpl* root = impl->sync_tree()->root_layer();
|
| - LayerImpl* child = root->children()[0];
|
| - LayerImpl* gchild = child->children()[0];
|
| - FakePictureLayerImpl* picture = static_cast<FakePictureLayerImpl*>(gchild);
|
| -
|
| - switch (impl->sync_tree()->source_frame_number()) {
|
| - case 0:
|
| - // On 1st commit the layer has tilings.
|
| - EXPECT_GT(picture->tilings()->num_tilings(), 0u);
|
| - break;
|
| - case 1:
|
| - // On 2nd commit, the layer is transparent, but its tilings are left
|
| - // there.
|
| - EXPECT_GT(picture->tilings()->num_tilings(), 0u);
|
| - break;
|
| - case 2:
|
| - // On 3rd commit, the layer is visible again, so has tilings.
|
| - EXPECT_GT(picture->tilings()->num_tilings(), 0u);
|
| - }
|
| - }
|
| -
|
| - void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override {
|
| - LayerImpl* root = impl->active_tree()->root_layer();
|
| - LayerImpl* child = root->children()[0];
|
| - LayerImpl* gchild = child->children()[0];
|
| - FakePictureLayerImpl* picture = static_cast<FakePictureLayerImpl*>(gchild);
|
| -
|
| - switch (impl->active_tree()->source_frame_number()) {
|
| - case 0:
|
| - // On 1st commit the layer has tilings.
|
| - EXPECT_GT(picture->tilings()->num_tilings(), 0u);
|
| - break;
|
| - case 1:
|
| - // On 2nd commit, the layer is transparent, but its tilings are left
|
| - // there.
|
| - EXPECT_GT(picture->tilings()->num_tilings(), 0u);
|
| - break;
|
| - case 2:
|
| - // On 3rd commit, the layer is visible again, so has tilings.
|
| - EXPECT_GT(picture->tilings()->num_tilings(), 0u);
|
| - EndTest();
|
| - }
|
| - }
|
| -
|
| - void DidCommit() override {
|
| - switch (layer_tree_host()->source_frame_number()) {
|
| - case 1:
|
| - // For the 2nd commit, change opacity to 0 so that the layer will not be
|
| - // part of the visible frame.
|
| - child_->SetOpacity(0.f);
|
| - break;
|
| - case 2:
|
| - // For the 3rd commit, change opacity to 1 so that the layer will again
|
| - // be part of the visible frame.
|
| - child_->SetOpacity(1.f);
|
| - }
|
| - }
|
| -
|
| - void AfterTest() override {}
|
| -
|
| - FakeContentLayerClient client_;
|
| - scoped_refptr<Layer> child_;
|
| - scoped_refptr<FakePictureLayer> picture_;
|
| -};
|
| -
|
| -SINGLE_AND_MULTI_THREAD_IMPL_TEST_F(LayerTreeHostPictureTestRSLLMembership);
|
| -
|
| -class LayerTreeHostPictureTestRSLLMembershipWithScale
|
| - : public LayerTreeHostPictureTest {
|
| - void SetupTree() override {
|
| - scoped_refptr<Layer> root = Layer::Create();
|
| - root->SetBounds(gfx::Size(100, 100));
|
| -
|
| - pinch_ = Layer::Create();
|
| - pinch_->SetBounds(gfx::Size(500, 500));
|
| - pinch_->SetScrollClipLayerId(root->id());
|
| - pinch_->SetIsContainerForFixedPositionLayers(true);
|
| - root->AddChild(pinch_);
|
| -
|
| - // Don't be solid color so the layer has tilings/tiles.
|
| - client_.set_fill_with_nonsolid_color(true);
|
| - picture_ = FakePictureLayer::Create(&client_);
|
| - picture_->SetBounds(gfx::Size(100, 100));
|
| - pinch_->AddChild(picture_);
|
| -
|
| - layer_tree_host()->RegisterViewportLayers(NULL, root, pinch_, pinch_);
|
| - layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f);
|
| - layer_tree_host()->SetRootLayer(root);
|
| - LayerTreeHostPictureTest::SetupTree();
|
| - }
|
| -
|
| - void InitializeSettings(LayerTreeSettings* settings) override {
|
| - settings->layer_transforms_should_scale_layer_contents = true;
|
| - }
|
| -
|
| - void BeginTest() override {
|
| - frame_ = 0;
|
| - draws_in_frame_ = 0;
|
| - last_frame_drawn_ = -1;
|
| - PostSetNeedsCommitToMainThread();
|
| - }
|
| -
|
| - void WillActivateTreeOnThread(LayerTreeHostImpl* impl) override {
|
| - LayerImpl* root = impl->sync_tree()->root_layer();
|
| - LayerImpl* pinch = root->children()[0];
|
| - LayerImpl* gchild = pinch->children()[0];
|
| - FakePictureLayerImpl* picture = static_cast<FakePictureLayerImpl*>(gchild);
|
| -
|
| - switch (frame_) {
|
| - case 0:
|
| - // On 1st commit the layer has tilings.
|
| - EXPECT_GT(picture->tilings()->num_tilings(), 0u);
|
| - break;
|
| - case 1:
|
| - // On 2nd commit, the layer is transparent, so does not have tilings.
|
| - EXPECT_EQ(0u, picture->tilings()->num_tilings());
|
| - break;
|
| - case 2:
|
| - // On 3rd commit, the layer is visible again, so has tilings.
|
| - EXPECT_GT(picture->tilings()->num_tilings(), 0u);
|
| - }
|
| - }
|
| -
|
| - void DrawLayersOnThread(LayerTreeHostImpl* impl) override {
|
| - LayerImpl* root = impl->active_tree()->root_layer();
|
| - LayerImpl* pinch = root->children()[0];
|
| - LayerImpl* gchild = pinch->children()[0];
|
| - FakePictureLayerImpl* picture = static_cast<FakePictureLayerImpl*>(gchild);
|
| -
|
| - if (frame_ != last_frame_drawn_)
|
| - draws_in_frame_ = 0;
|
| - ++draws_in_frame_;
|
| - last_frame_drawn_ = frame_;
|
| -
|
| - switch (frame_) {
|
| - case 0:
|
| - if (draws_in_frame_ == 1) {
|
| - // On 1st commit the layer has tilings.
|
| - EXPECT_GT(picture->tilings()->num_tilings(), 0u);
|
| - EXPECT_EQ(1.f, picture->HighResTiling()->contents_scale());
|
| -
|
| - // Pinch zoom in to change the scale on the active tree.
|
| - impl->PinchGestureBegin();
|
| - impl->PinchGestureUpdate(2.f, gfx::Point(1, 1));
|
| - impl->PinchGestureEnd();
|
| - } else if (picture->tilings()->num_tilings() == 1) {
|
| - // If the pinch gesture caused a commit we could get here with a
|
| - // pending tree.
|
| - EXPECT_FALSE(impl->pending_tree());
|
| - // The active layer now has only a 2.f scale tiling, which means the
|
| - // recycled layer's tiling is destroyed.
|
| - EXPECT_EQ(2.f, picture->HighResTiling()->contents_scale());
|
| - EXPECT_EQ(0u, picture->GetRecycledTwinLayer()
|
| - ->picture_layer_tiling_set()
|
| - ->num_tilings());
|
| -
|
| - ++frame_;
|
| - MainThreadTaskRunner()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(
|
| - &LayerTreeHostPictureTestRSLLMembershipWithScale::NextStep,
|
| - base::Unretained(this)));
|
| - }
|
| - break;
|
| - case 1:
|
| - EXPECT_EQ(1, draws_in_frame_);
|
| - // On 2nd commit, the layer is transparent, so does not create
|
| - // tilings. Since the 1.f tiling was destroyed in the recycle tree, it
|
| - // has no tilings left. This is propogated to the active tree.
|
| - EXPECT_EQ(0u, picture->picture_layer_tiling_set()->num_tilings());
|
| - EXPECT_EQ(0u, picture->GetRecycledTwinLayer()
|
| - ->picture_layer_tiling_set()
|
| - ->num_tilings());
|
| - ++frame_;
|
| - MainThreadTaskRunner()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(
|
| - &LayerTreeHostPictureTestRSLLMembershipWithScale::NextStep,
|
| - base::Unretained(this)));
|
| - break;
|
| - case 2:
|
| - EXPECT_EQ(1, draws_in_frame_);
|
| - // On 3rd commit, the layer is visible again, so has tilings.
|
| - EXPECT_GT(picture->tilings()->num_tilings(), 0u);
|
| - EndTest();
|
| - }
|
| - }
|
| -
|
| - void NextStep() {
|
| - switch (frame_) {
|
| - case 1:
|
| - // For the 2nd commit, change opacity to 0 so that the layer will not be
|
| - // part of the visible frame.
|
| - pinch_->SetOpacity(0.f);
|
| - break;
|
| - case 2:
|
| - // For the 3rd commit, change opacity to 1 so that the layer will again
|
| - // be part of the visible frame.
|
| - pinch_->SetOpacity(1.f);
|
| - break;
|
| - }
|
| - }
|
| -
|
| - void AfterTest() override {}
|
| -
|
| - FakeContentLayerClient client_;
|
| - scoped_refptr<Layer> pinch_;
|
| - scoped_refptr<FakePictureLayer> picture_;
|
| - int frame_;
|
| - int draws_in_frame_;
|
| - int last_frame_drawn_;
|
| -};
|
| -
|
| -// Multi-thread only because in single thread you can't pinch zoom on the
|
| -// compositor thread.
|
| -// Disabled due to flakiness. See http://crbug.com/460581
|
| -// MULTI_THREAD_IMPL_TEST_F(LayerTreeHostPictureTestRSLLMembershipWithScale);
|
| -
|
| -} // namespace
|
| -} // namespace cc
|
|
|