Chromium Code Reviews| Index: cc/layers/picture_layer_unittest.cc |
| diff --git a/cc/layers/picture_layer_unittest.cc b/cc/layers/picture_layer_unittest.cc |
| index ec0d88b22109386fe4949504610b73965e5c9b73..909552d2175dd6190a29813a5e965a57885b26cd 100644 |
| --- a/cc/layers/picture_layer_unittest.cc |
| +++ b/cc/layers/picture_layer_unittest.cc |
| @@ -15,6 +15,8 @@ |
| #include "cc/layers/picture_layer_impl.h" |
| #include "cc/playback/display_item_list_settings.h" |
| #include "cc/proto/layer.pb.h" |
| +#include "cc/test/fake_client_picture_cache.h" |
| +#include "cc/test/fake_engine_picture_cache.h" |
| #include "cc/test/fake_image_serialization_processor.h" |
| #include "cc/test/fake_layer_tree_host.h" |
| #include "cc/test/fake_output_surface.h" |
| @@ -27,6 +29,7 @@ |
| #include "cc/test/test_shared_bitmap_manager.h" |
| #include "cc/test/test_task_graph_runner.h" |
| #include "cc/trees/single_thread_proxy.h" |
| +#include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "third_party/skia/include/core/SkRefCnt.h" |
| @@ -61,25 +64,31 @@ class TestSerializationPictureLayer : public PictureLayer { |
| nearest_neighbor_ = nearest_neighbor; |
| } |
| - void ValidateSerialization() { |
| + void ValidateSerialization( |
| + ImageSerializationProcessor* image_serialization_processor, |
| + LayerTreeHost* host) { |
| + std::vector<uint32_t> engine_picture_ids = GetPictureIds(); |
| proto::LayerProperties proto; |
| LayerSpecificPropertiesToProto(&proto); |
| - FakeLayerTreeHostClient host_client(FakeLayerTreeHostClient::DIRECT_3D); |
| - TestTaskGraphRunner task_graph_runner; |
| - LayerTreeSettings settings; |
| - std::unique_ptr<FakeImageSerializationProcessor> |
| - fake_image_serialization_processor = |
| - base::WrapUnique(new FakeImageSerializationProcessor); |
| - std::unique_ptr<FakeLayerTreeHost> host = |
| - FakeLayerTreeHost::Create(&host_client, &task_graph_runner, settings, |
| - CompositorMode::SINGLE_THREADED, |
| - fake_image_serialization_processor.get()); |
| + FakeEnginePictureCache* engine_picture_cache = |
| + static_cast<FakeEnginePictureCache*>(host->engine_picture_cache()); |
| + EXPECT_THAT(engine_picture_ids, |
| + testing::UnorderedElementsAreArray( |
| + engine_picture_cache->GetAllUsedPictureIds())); |
| + |
| scoped_refptr<TestSerializationPictureLayer> layer = |
| TestSerializationPictureLayer::Create(recording_source_viewport_); |
| host->SetRootLayer(layer); |
| + |
| layer->FromLayerSpecificPropertiesProto(proto); |
| + FakeClientPictureCache* client_picture_cache = |
| + static_cast<FakeClientPictureCache*>(host->client_picture_cache()); |
| + EXPECT_THAT(engine_picture_ids, |
| + testing::UnorderedElementsAreArray( |
| + client_picture_cache->GetAllUsedPictureIds())); |
| + |
| // Validate that the PictureLayer specific fields are properly set. |
| EXPECT_TRUE(recording_source()->EqualsTo(*layer->recording_source())); |
| EXPECT_EQ(update_source_frame_number_, layer->update_source_frame_number_); |
| @@ -87,6 +96,23 @@ class TestSerializationPictureLayer : public PictureLayer { |
| EXPECT_EQ(nearest_neighbor_, layer->nearest_neighbor_); |
| } |
| + std::vector<uint32_t> GetPictureIds() { |
| + scoped_refptr<const DisplayItemList> display_list = |
| + recording_source()->GetDisplayItemList(); |
| + if (!display_list) |
| + return std::vector<uint32_t>(); |
|
vmpstr
2016/06/24 18:58:32
super nit: I wonder if you're ruining rvo by havin
nyquist
2016/06/24 20:31:23
Done.
|
| + |
| + std::vector<uint32_t> ids; |
| + for (auto it = display_list->begin(); it != display_list->end(); ++it) { |
| + sk_sp<const SkPicture> picture = it->GetPicture(); |
| + if (!picture) |
| + continue; |
| + |
| + ids.push_back(picture->uniqueID()); |
| + } |
| + return ids; |
| + } |
| + |
| private: |
| TestSerializationPictureLayer(ContentLayerClient* client, |
| std::unique_ptr<RecordingSource> source, |
| @@ -113,6 +139,7 @@ TEST(PictureLayerTest, TestSetAllPropsSerializationDeserialization) { |
| FakeLayerTreeHost::Create(&host_client, &task_graph_runner, settings, |
| CompositorMode::SINGLE_THREADED, |
| fake_image_serialization_processor.get()); |
| + host->InitializePictureCacheForTesting(); |
| gfx::Size recording_source_viewport(256, 256); |
| scoped_refptr<TestSerializationPictureLayer> layer = |
| @@ -131,7 +158,8 @@ TEST(PictureLayerTest, TestSetAllPropsSerializationDeserialization) { |
| gfx::Rect(recording_source_viewport)); |
| layer->recording_source()->SetGenerateDiscardableImagesMetadata(true); |
| layer->recording_source()->Rerecord(); |
| - layer->ValidateSerialization(); |
| + layer->ValidateSerialization(fake_image_serialization_processor.get(), |
| + host.get()); |
| } |
| TEST(PictureLayerTest, TestSerializationDeserialization) { |
| @@ -144,6 +172,8 @@ TEST(PictureLayerTest, TestSerializationDeserialization) { |
| &host_client, &task_graph_runner, LayerTreeSettings(), |
| CompositorMode::SINGLE_THREADED, |
| fake_image_serialization_processor.get()); |
| + host->InitializePictureCacheForTesting(); |
| + |
| gfx::Size recording_source_viewport(256, 256); |
| scoped_refptr<TestSerializationPictureLayer> layer = |
| TestSerializationPictureLayer::Create(recording_source_viewport); |
| @@ -156,20 +186,28 @@ TEST(PictureLayerTest, TestSerializationDeserialization) { |
| gfx::Rect(recording_source_viewport)); |
| layer->recording_source()->SetGenerateDiscardableImagesMetadata(true); |
| layer->recording_source()->Rerecord(); |
| - layer->ValidateSerialization(); |
| + layer->ValidateSerialization(fake_image_serialization_processor.get(), |
| + host.get()); |
| } |
| TEST(PictureLayerTest, TestEmptySerializationDeserialization) { |
| + std::unique_ptr<FakeImageSerializationProcessor> |
| + fake_image_serialization_processor = |
| + base::WrapUnique(new FakeImageSerializationProcessor); |
| FakeLayerTreeHostClient host_client(FakeLayerTreeHostClient::DIRECT_3D); |
| TestTaskGraphRunner task_graph_runner; |
| - std::unique_ptr<FakeLayerTreeHost> host = |
| - FakeLayerTreeHost::Create(&host_client, &task_graph_runner); |
| + std::unique_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create( |
| + &host_client, &task_graph_runner, LayerTreeSettings(), |
| + CompositorMode::SINGLE_THREADED, |
| + fake_image_serialization_processor.get()); |
| + host->InitializePictureCacheForTesting(); |
| gfx::Size recording_source_viewport(256, 256); |
| scoped_refptr<TestSerializationPictureLayer> layer = |
| TestSerializationPictureLayer::Create(recording_source_viewport); |
| host->SetRootLayer(layer); |
| - layer->ValidateSerialization(); |
| + layer->ValidateSerialization(fake_image_serialization_processor.get(), |
| + host.get()); |
| } |
| TEST(PictureLayerTest, NoTilesIfEmptyBounds) { |