| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "platform/graphics/compositing/PaintArtifactCompositor.h" | 5 #include "platform/graphics/compositing/PaintArtifactCompositor.h" |
| 6 | 6 |
| 7 #include "base/test/test_simple_task_runner.h" | 7 #include "base/test/test_simple_task_runner.h" |
| 8 #include "base/threading/thread_task_runner_handle.h" | 8 #include "base/threading/thread_task_runner_handle.h" |
| 9 #include "cc/layers/layer.h" | 9 #include "cc/layers/layer.h" |
| 10 #include "cc/test/fake_output_surface.h" | 10 #include "cc/test/fake_output_surface.h" |
| 11 #include "cc/trees/layer_tree_host.h" | 11 #include "cc/trees/layer_tree_host.h" |
| 12 #include "cc/trees/layer_tree_settings.h" | 12 #include "cc/trees/layer_tree_settings.h" |
| 13 #include "platform/RuntimeEnabledFeatures.h" | 13 #include "platform/RuntimeEnabledFeatures.h" |
| 14 #include "platform/graphics/paint/PaintArtifact.h" | 14 #include "platform/graphics/paint/PaintArtifact.h" |
| 15 #include "platform/testing/PictureMatchers.h" | 15 #include "platform/testing/PictureMatchers.h" |
| 16 #include "platform/testing/TestPaintArtifact.h" | 16 #include "platform/testing/TestPaintArtifact.h" |
| 17 #include "platform/testing/WebLayerTreeViewImplForTesting.h" | 17 #include "platform/testing/WebLayerTreeViewImplForTesting.h" |
| 18 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
| 19 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| 20 #include "wtf/PtrUtil.h" | |
| 21 #include <memory> | |
| 22 | 20 |
| 23 namespace blink { | 21 namespace blink { |
| 24 namespace { | 22 namespace { |
| 25 | 23 |
| 26 using ::testing::Pointee; | 24 using ::testing::Pointee; |
| 27 | 25 |
| 28 gfx::Transform translation(SkMScalar x, SkMScalar y) | 26 gfx::Transform translation(SkMScalar x, SkMScalar y) |
| 29 { | 27 { |
| 30 gfx::Transform transform; | 28 gfx::Transform transform; |
| 31 transform.Translate(x, y); | 29 transform.Translate(x, y); |
| 32 return transform; | 30 return transform; |
| 33 } | 31 } |
| 34 | 32 |
| 35 class PaintArtifactCompositorTest : public ::testing::Test { | 33 class PaintArtifactCompositorTest : public ::testing::Test { |
| 36 protected: | 34 protected: |
| 37 void SetUp() override | 35 void SetUp() override |
| 38 { | 36 { |
| 39 RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(true); | 37 RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(true); |
| 40 | 38 |
| 41 // Delay constructing the compositor until after the feature is set. | 39 // Delay constructing the compositor until after the feature is set. |
| 42 m_paintArtifactCompositor = wrapUnique(new PaintArtifactCompositor); | 40 m_paintArtifactCompositor = adoptPtr(new PaintArtifactCompositor); |
| 43 } | 41 } |
| 44 | 42 |
| 45 void TearDown() override | 43 void TearDown() override |
| 46 { | 44 { |
| 47 m_featuresBackup.restore(); | 45 m_featuresBackup.restore(); |
| 48 } | 46 } |
| 49 | 47 |
| 50 PaintArtifactCompositor& getPaintArtifactCompositor() { return *m_paintArtif
actCompositor; } | 48 PaintArtifactCompositor& getPaintArtifactCompositor() { return *m_paintArtif
actCompositor; } |
| 51 cc::Layer* rootLayer() { return m_paintArtifactCompositor->rootLayer(); } | 49 cc::Layer* rootLayer() { return m_paintArtifactCompositor->rootLayer(); } |
| 52 void update(const PaintArtifact& artifact) { m_paintArtifactCompositor->upda
te(artifact); } | 50 void update(const PaintArtifact& artifact) { m_paintArtifactCompositor->upda
te(artifact); } |
| 53 | 51 |
| 54 private: | 52 private: |
| 55 RuntimeEnabledFeatures::Backup m_featuresBackup; | 53 RuntimeEnabledFeatures::Backup m_featuresBackup; |
| 56 std::unique_ptr<PaintArtifactCompositor> m_paintArtifactCompositor; | 54 OwnPtr<PaintArtifactCompositor> m_paintArtifactCompositor; |
| 57 }; | 55 }; |
| 58 | 56 |
| 59 TEST_F(PaintArtifactCompositorTest, EmptyPaintArtifact) | 57 TEST_F(PaintArtifactCompositorTest, EmptyPaintArtifact) |
| 60 { | 58 { |
| 61 PaintArtifact emptyArtifact; | 59 PaintArtifact emptyArtifact; |
| 62 update(emptyArtifact); | 60 update(emptyArtifact); |
| 63 EXPECT_TRUE(rootLayer()->children().empty()); | 61 EXPECT_TRUE(rootLayer()->children().empty()); |
| 64 } | 62 } |
| 65 | 63 |
| 66 TEST_F(PaintArtifactCompositorTest, OneChunkWithAnOffset) | 64 TEST_F(PaintArtifactCompositorTest, OneChunkWithAnOffset) |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 { | 378 { |
| 381 } | 379 } |
| 382 | 380 |
| 383 void SetUp() override | 381 void SetUp() override |
| 384 { | 382 { |
| 385 PaintArtifactCompositorTest::SetUp(); | 383 PaintArtifactCompositorTest::SetUp(); |
| 386 | 384 |
| 387 cc::LayerTreeSettings settings = WebLayerTreeViewImplForTesting::default
LayerTreeSettings(); | 385 cc::LayerTreeSettings settings = WebLayerTreeViewImplForTesting::default
LayerTreeSettings(); |
| 388 settings.single_thread_proxy_scheduler = false; | 386 settings.single_thread_proxy_scheduler = false; |
| 389 settings.use_layer_lists = true; | 387 settings.use_layer_lists = true; |
| 390 m_webLayerTreeView = wrapUnique(new WebLayerTreeViewWithOutputSurface(se
ttings)); | 388 m_webLayerTreeView = adoptPtr(new WebLayerTreeViewWithOutputSurface(sett
ings)); |
| 391 m_webLayerTreeView->setRootLayer(*getPaintArtifactCompositor().getWebLay
er()); | 389 m_webLayerTreeView->setRootLayer(*getPaintArtifactCompositor().getWebLay
er()); |
| 392 } | 390 } |
| 393 | 391 |
| 394 const cc::PropertyTrees& propertyTrees() | 392 const cc::PropertyTrees& propertyTrees() |
| 395 { | 393 { |
| 396 return *m_webLayerTreeView->layerTreeHost()->property_trees(); | 394 return *m_webLayerTreeView->layerTreeHost()->property_trees(); |
| 397 } | 395 } |
| 398 | 396 |
| 399 void update(const PaintArtifact& artifact) | 397 void update(const PaintArtifact& artifact) |
| 400 { | 398 { |
| 401 PaintArtifactCompositorTest::update(artifact); | 399 PaintArtifactCompositorTest::update(artifact); |
| 402 m_webLayerTreeView->layerTreeHost()->LayoutAndUpdateLayers(); | 400 m_webLayerTreeView->layerTreeHost()->LayoutAndUpdateLayers(); |
| 403 } | 401 } |
| 404 | 402 |
| 405 private: | 403 private: |
| 406 scoped_refptr<base::TestSimpleTaskRunner> m_taskRunner; | 404 scoped_refptr<base::TestSimpleTaskRunner> m_taskRunner; |
| 407 base::ThreadTaskRunnerHandle m_taskRunnerHandle; | 405 base::ThreadTaskRunnerHandle m_taskRunnerHandle; |
| 408 std::unique_ptr<WebLayerTreeViewWithOutputSurface> m_webLayerTreeView; | 406 OwnPtr<WebLayerTreeViewWithOutputSurface> m_webLayerTreeView; |
| 409 }; | 407 }; |
| 410 | 408 |
| 411 TEST_F(PaintArtifactCompositorTestWithPropertyTrees, EmptyPaintArtifact) | 409 TEST_F(PaintArtifactCompositorTestWithPropertyTrees, EmptyPaintArtifact) |
| 412 { | 410 { |
| 413 PaintArtifact emptyArtifact; | 411 PaintArtifact emptyArtifact; |
| 414 update(emptyArtifact); | 412 update(emptyArtifact); |
| 415 EXPECT_TRUE(rootLayer()->children().empty()); | 413 EXPECT_TRUE(rootLayer()->children().empty()); |
| 416 } | 414 } |
| 417 | 415 |
| 418 TEST_F(PaintArtifactCompositorTestWithPropertyTrees, OneChunkWithAnOffset) | 416 TEST_F(PaintArtifactCompositorTestWithPropertyTrees, OneChunkWithAnOffset) |
| 419 { | 417 { |
| 420 TestPaintArtifact artifact; | 418 TestPaintArtifact artifact; |
| 421 artifact.chunk(PaintChunkProperties()) | 419 artifact.chunk(PaintChunkProperties()) |
| 422 .rectDrawing(FloatRect(50, -50, 100, 100), Color::white); | 420 .rectDrawing(FloatRect(50, -50, 100, 100), Color::white); |
| 423 update(artifact.build()); | 421 update(artifact.build()); |
| 424 | 422 |
| 425 ASSERT_EQ(1u, rootLayer()->children().size()); | 423 ASSERT_EQ(1u, rootLayer()->children().size()); |
| 426 const cc::Layer* child = rootLayer()->child_at(0); | 424 const cc::Layer* child = rootLayer()->child_at(0); |
| 427 EXPECT_THAT(child->GetPicture(), | 425 EXPECT_THAT(child->GetPicture(), |
| 428 Pointee(drawsRectangle(FloatRect(0, 0, 100, 100), Color::white))); | 426 Pointee(drawsRectangle(FloatRect(0, 0, 100, 100), Color::white))); |
| 429 EXPECT_EQ(translation(50, -50), child->screen_space_transform()); | 427 EXPECT_EQ(translation(50, -50), child->screen_space_transform()); |
| 430 EXPECT_EQ(gfx::Size(100, 100), child->bounds()); | 428 EXPECT_EQ(gfx::Size(100, 100), child->bounds()); |
| 431 } | 429 } |
| 432 | 430 |
| 433 } // namespace | 431 } // namespace |
| 434 } // namespace blink | 432 } // namespace blink |
| OLD | NEW |