Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2842)

Unified Diff: cc/layers/picture_layer_unittest.cc

Issue 1982893002: [blimp] Add SkPicture caching support. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge origin/master Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698