| 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..a5c7ede269ee12eb914f74ea00d68e39b72ec6f3 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() {
|
| + std::vector<uint32_t> ids;
|
| + const DisplayItemList* display_list =
|
| + recording_source()->GetDisplayItemList();
|
| + if (!display_list)
|
| + return 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) {
|
|
|