| Index: cc/trees/layer_tree_host_unittest.cc
|
| diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
|
| index 0a4c23602b416eddd9dafb3217e693fb628e6d47..05a65b2bc42b8e7818185dc85fcb592e082905a2 100644
|
| --- a/cc/trees/layer_tree_host_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_unittest.cc
|
| @@ -16,7 +16,6 @@
|
| #include "cc/layers/layer_impl.h"
|
| #include "cc/layers/picture_layer.h"
|
| #include "cc/layers/scrollbar_layer.h"
|
| -#include "cc/layers/video_layer.h"
|
| #include "cc/output/begin_frame_args.h"
|
| #include "cc/output/copy_output_request.h"
|
| #include "cc/output/copy_output_result.h"
|
| @@ -34,7 +33,6 @@
|
| #include "cc/test/fake_proxy.h"
|
| #include "cc/test/fake_scoped_ui_resource.h"
|
| #include "cc/test/fake_scrollbar_layer.h"
|
| -#include "cc/test/fake_video_frame_provider.h"
|
| #include "cc/test/geometry_test_utils.h"
|
| #include "cc/test/layer_tree_test.h"
|
| #include "cc/test/occlusion_tracker_test_common.h"
|
| @@ -1110,7 +1108,7 @@ class LayerTreeHostTestDeviceScaleFactorScalesViewportAndLayers
|
| MULTI_THREAD_TEST_F(LayerTreeHostTestDeviceScaleFactorScalesViewportAndLayers);
|
|
|
| // Verify atomicity of commits and reuse of textures.
|
| -class LayerTreeHostTestAtomicCommit : public LayerTreeHostTest {
|
| +class LayerTreeHostTestDirectRendererAtomicCommit : public LayerTreeHostTest {
|
| public:
|
| virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
|
| // Make sure partial texture updates are turned off.
|
| @@ -1161,19 +1159,18 @@ class LayerTreeHostTestAtomicCommit : public LayerTreeHostTest {
|
| PostSetNeedsCommitToMainThread();
|
| break;
|
| case 1:
|
| - // Number of textures should be doubled as the first textures
|
| - // are used by impl thread and cannot by used for update.
|
| - ASSERT_EQ(4u, context->NumTextures());
|
| - // Number of textures used for commit should still be
|
| - // one for each layer.
|
| + // Number of textures should be one for scrollbar layer since it was
|
| + // requested and deleted on the impl-thread, and double for the content
|
| + // layer since its first texture is used by impl thread and cannot by
|
| + // used for update.
|
| + ASSERT_EQ(3u, context->NumTextures());
|
| + // Number of textures used for commit should be one for each layer.
|
| EXPECT_EQ(2u, context->NumUsedTextures());
|
| // First textures should not have been used.
|
| EXPECT_FALSE(context->UsedTexture(context->TextureAt(0)));
|
| - EXPECT_FALSE(context->UsedTexture(context->TextureAt(1)));
|
| + EXPECT_TRUE(context->UsedTexture(context->TextureAt(1)));
|
| // New textures should have been used.
|
| EXPECT_TRUE(context->UsedTexture(context->TextureAt(2)));
|
| - EXPECT_TRUE(context->UsedTexture(context->TextureAt(3)));
|
| -
|
| context->ResetUsedTextures();
|
| PostSetNeedsCommitToMainThread();
|
| break;
|
| @@ -1208,14 +1205,68 @@ class LayerTreeHostTestAtomicCommit : public LayerTreeHostTest {
|
|
|
| virtual void AfterTest() OVERRIDE {}
|
|
|
| - private:
|
| + protected:
|
| FakeContentLayerClient client_;
|
| scoped_refptr<FakeContentLayer> layer_;
|
| scoped_refptr<FakeScrollbarLayer> scrollbar_;
|
| int drew_frame_;
|
| };
|
|
|
| -MULTI_THREAD_TEST_F(LayerTreeHostTestAtomicCommit);
|
| +MULTI_THREAD_DIRECT_RENDERER_TEST_F(
|
| + LayerTreeHostTestDirectRendererAtomicCommit);
|
| +
|
| +class LayerTreeHostTestDelegatingRendererAtomicCommit
|
| + : public LayerTreeHostTestDirectRendererAtomicCommit {
|
| + public:
|
| + virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE {
|
| + ASSERT_EQ(0u, layer_tree_host()->settings().max_partial_texture_updates);
|
| +
|
| + TestWebGraphicsContext3D* context = static_cast<TestWebGraphicsContext3D*>(
|
| + impl->output_surface()->context3d());
|
| +
|
| + switch (impl->active_tree()->source_frame_number()) {
|
| + case 0:
|
| + // Number of textures should be one for each layer
|
| + ASSERT_EQ(2u, context->NumTextures());
|
| + // Number of textures used for commit should be one for each layer.
|
| + EXPECT_EQ(2u, context->NumUsedTextures());
|
| + // Verify that used texture is correct.
|
| + EXPECT_TRUE(context->UsedTexture(context->TextureAt(0)));
|
| + EXPECT_TRUE(context->UsedTexture(context->TextureAt(1)));
|
| + context->ResetUsedTextures();
|
| + PostSetNeedsCommitToMainThread();
|
| + break;
|
| + case 1:
|
| + // Number of textures should be doubled as the first context layer
|
| + // texture is being used by the impl-thread and cannot be used for
|
| + // update. The scrollbar behavior is different direct renderer because
|
| + // UI resource deletion with delegating renderer occurs after tree
|
| + // activation.
|
| + ASSERT_EQ(4u, context->NumTextures());
|
| + // Number of textures used for commit should still be
|
| + // one for each layer.
|
| + EXPECT_EQ(2u, context->NumUsedTextures());
|
| + // First textures should not have been used.
|
| + EXPECT_FALSE(context->UsedTexture(context->TextureAt(0)));
|
| + EXPECT_FALSE(context->UsedTexture(context->TextureAt(1)));
|
| + // New textures should have been used.
|
| + EXPECT_TRUE(context->UsedTexture(context->TextureAt(2)));
|
| + EXPECT_TRUE(context->UsedTexture(context->TextureAt(3)));
|
| + context->ResetUsedTextures();
|
| + PostSetNeedsCommitToMainThread();
|
| + break;
|
| + case 2:
|
| + EndTest();
|
| + break;
|
| + default:
|
| + NOTREACHED();
|
| + break;
|
| + }
|
| + }
|
| +};
|
| +
|
| +MULTI_THREAD_DELEGATING_RENDERER_TEST_F(
|
| + LayerTreeHostTestDelegatingRendererAtomicCommit);
|
|
|
| static void SetLayerPropertiesForTesting(Layer* layer,
|
| Layer* parent,
|
| @@ -4023,55 +4074,5 @@ TEST_F(LayerTreeHostTestTreeActivationCallback, DelegatingRenderer) {
|
| RunTest(true, true, true);
|
| }
|
|
|
| -// VideoLayer must support being invalidated and then passing that along
|
| -// to the compositor thread, even though no resources are updated in
|
| -// response to that invalidation.
|
| -class LayerTreeHostTestVideoLayerInvalidate : public LayerTreeHostTest {
|
| - public:
|
| - LayerTreeHostTestVideoLayerInvalidate() : num_commits_(0), num_draws_(0) {}
|
| -
|
| - virtual void SetupTree() OVERRIDE {
|
| - LayerTreeHostTest::SetupTree();
|
| - video_layer_ = VideoLayer::Create(&provider_);
|
| - video_layer_->SetBounds(gfx::Size(10, 10));
|
| - video_layer_->SetIsDrawable(true);
|
| - layer_tree_host()->root_layer()->AddChild(video_layer_);
|
| - }
|
| -
|
| - virtual void BeginTest() OVERRIDE {
|
| - // One initial commit.
|
| - PostSetNeedsCommitToMainThread();
|
| - }
|
| -
|
| - virtual void DidCommitAndDrawFrame() OVERRIDE {
|
| - // After commit, invalidate the video layer. This should cause a commit.
|
| - if (layer_tree_host()->source_frame_number() == 1)
|
| - video_layer_->SetNeedsDisplay();
|
| - }
|
| -
|
| - virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
|
| - num_draws_++;
|
| - if (impl->active_tree()->source_frame_number() == 1)
|
| - EndTest();
|
| - }
|
| -
|
| - virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE {
|
| - num_commits_++;
|
| - }
|
| -
|
| - virtual void AfterTest() OVERRIDE {
|
| - EXPECT_GE(2, num_commits_);
|
| - EXPECT_GE(2, num_draws_);
|
| - }
|
| -
|
| - private:
|
| - FakeVideoFrameProvider provider_;
|
| - scoped_refptr<VideoLayer> video_layer_;
|
| - int num_commits_;
|
| - int num_draws_;
|
| -};
|
| -
|
| -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestVideoLayerInvalidate);
|
| -
|
| } // namespace
|
| } // namespace cc
|
|
|