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

Unified Diff: cc/layers/layer_unittest.cc

Issue 2493523003: cc: Remove unused proto conversion code. (Closed)
Patch Set: test Created 4 years, 1 month 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
« no previous file with comments | « cc/layers/layer_proto_converter_unittest.cc ('k') | cc/layers/picture_layer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/layer_unittest.cc
diff --git a/cc/layers/layer_unittest.cc b/cc/layers/layer_unittest.cc
index 79f6198ca92e0648819ff5bf42a9d447fdadc78e..0c2858f5505b23653145dc78400dda29bbc1b221 100644
--- a/cc/layers/layer_unittest.cc
+++ b/cc/layers/layer_unittest.cc
@@ -16,7 +16,6 @@
#include "cc/layers/solid_color_scrollbar_layer.h"
#include "cc/output/copy_output_request.h"
#include "cc/output/copy_output_result.h"
-#include "cc/proto/layer.pb.h"
#include "cc/test/animation_test_common.h"
#include "cc/test/fake_impl_task_runner_provider.h"
#include "cc/test/fake_layer_tree_host.h"
@@ -82,793 +81,6 @@ using ::testing::_;
namespace cc {
-// This class is a friend of Layer, and is used as a wrapper for all the tests
-// related to proto serialization. This is done so that it is unnecessary to
-// add FRIEND_TEST_ALL_PREFIXES in //cc/layers/layer.h for all the tests.
-// It is in the cc namespace so that it can be a friend of Layer.
-// The tests still have helpful names, and a test with the name FooBar would
-// have a wrapper method in this class called RunFooBarTest.
-class LayerSerializationTest : public testing::Test {
- protected:
- void SetUp() override {
- animation_host_ = AnimationHost::CreateForTesting(ThreadInstance::MAIN);
- layer_tree_host_ = FakeLayerTreeHost::Create(
- &fake_client_, &task_graph_runner_, animation_host_.get());
- }
-
- void TearDown() override {
- layer_tree_host_->SetRootLayer(nullptr);
- layer_tree_host_ = nullptr;
- }
-
- // Serializes |src| to proto and back again to a Layer, then verifies that
- // the two Layers are equal for serialization purposes.
- void VerifyBaseLayerPropertiesSerializationAndDeserialization(Layer* src) {
- // This is required to ensure that properties are serialized.
- src->SetNeedsPushProperties();
- src->SetLayerTreeHost(layer_tree_host_.get());
-
- // The following member is reset during serialization, so store the original
- // values.
- gfx::Rect update_rect = src->inputs_.update_rect;
-
- // Serialize |src| to protobuf and read the first entry in the
- // LayerUpdate. There are no descendants, so the serialization
- // of |src| is the only entry.
- proto::LayerUpdate layer_update;
- src->ToLayerPropertiesProto(&layer_update, false);
- ASSERT_EQ(1, layer_update.layers_size());
- proto::LayerProperties props = layer_update.layers(0);
-
- // The |dest| layer needs to be able to lookup the scroll and clip parents.
- LayerTree* layer_tree = layer_tree_host_->GetLayerTree();
- if (src->inputs_.scroll_parent)
- layer_tree->RegisterLayer(src->inputs_.scroll_parent);
- if (src->scroll_children_) {
- for (auto* child : *(src->scroll_children_))
- layer_tree->RegisterLayer(child);
- }
- if (src->inputs_.clip_parent)
- layer_tree->RegisterLayer(src->inputs_.clip_parent);
- if (src->clip_children_) {
- for (auto* child : *(src->clip_children_))
- layer_tree->RegisterLayer(child);
- }
- // Reset the LayerTreeHost registration for the |src| layer so
- // it can be re-used for the |dest| layer.
- src->SetLayerTreeHost(nullptr);
-
- scoped_refptr<Layer> dest = Layer::Create();
- dest->inputs_.layer_id = src->inputs_.layer_id;
- dest->SetLayerTreeHost(layer_tree_host_.get());
- dest->FromLayerPropertiesProto(props);
-
- // Verify that both layers are equal.
- EXPECT_EQ(src->inputs_.transform_origin, dest->inputs_.transform_origin);
- EXPECT_EQ(src->inputs_.background_color, dest->inputs_.background_color);
- EXPECT_EQ(src->inputs_.bounds, dest->inputs_.bounds);
- EXPECT_EQ(src->transform_tree_index_, dest->transform_tree_index_);
- EXPECT_EQ(src->effect_tree_index_, dest->effect_tree_index_);
- EXPECT_EQ(src->clip_tree_index_, dest->clip_tree_index_);
- EXPECT_EQ(src->offset_to_transform_parent_,
- dest->offset_to_transform_parent_);
- EXPECT_EQ(src->inputs_.double_sided, dest->inputs_.double_sided);
- EXPECT_EQ(src->draws_content_, dest->draws_content_);
- EXPECT_EQ(src->may_contain_video_, dest->may_contain_video_);
- EXPECT_EQ(src->inputs_.hide_layer_and_subtree,
- dest->inputs_.hide_layer_and_subtree);
- EXPECT_EQ(src->inputs_.masks_to_bounds, dest->inputs_.masks_to_bounds);
- EXPECT_EQ(src->inputs_.main_thread_scrolling_reasons,
- dest->inputs_.main_thread_scrolling_reasons);
- EXPECT_EQ(src->inputs_.non_fast_scrollable_region,
- dest->inputs_.non_fast_scrollable_region);
- EXPECT_EQ(src->inputs_.touch_event_handler_region,
- dest->inputs_.touch_event_handler_region);
- EXPECT_EQ(src->inputs_.contents_opaque, dest->inputs_.contents_opaque);
- EXPECT_EQ(src->inputs_.opacity, dest->inputs_.opacity);
- EXPECT_EQ(src->inputs_.blend_mode, dest->inputs_.blend_mode);
- EXPECT_EQ(src->inputs_.is_root_for_isolated_group,
- dest->inputs_.is_root_for_isolated_group);
- EXPECT_EQ(src->inputs_.position, dest->inputs_.position);
- EXPECT_EQ(src->inputs_.is_container_for_fixed_position_layers,
- dest->inputs_.is_container_for_fixed_position_layers);
- EXPECT_EQ(src->inputs_.position_constraint,
- dest->inputs_.position_constraint);
- EXPECT_EQ(src->inputs_.should_flatten_transform,
- dest->inputs_.should_flatten_transform);
- EXPECT_EQ(src->should_flatten_transform_from_property_tree_,
- dest->should_flatten_transform_from_property_tree_);
- EXPECT_EQ(src->draw_blend_mode_, dest->draw_blend_mode_);
- EXPECT_EQ(src->inputs_.use_parent_backface_visibility,
- dest->inputs_.use_parent_backface_visibility);
- EXPECT_EQ(src->inputs_.transform, dest->inputs_.transform);
- EXPECT_EQ(src->inputs_.sorting_context_id,
- dest->inputs_.sorting_context_id);
- EXPECT_EQ(src->num_descendants_that_draw_content_,
- dest->num_descendants_that_draw_content_);
- EXPECT_EQ(src->inputs_.scroll_clip_layer_id,
- dest->inputs_.scroll_clip_layer_id);
- EXPECT_EQ(src->inputs_.user_scrollable_horizontal,
- dest->inputs_.user_scrollable_horizontal);
- EXPECT_EQ(src->inputs_.user_scrollable_vertical,
- dest->inputs_.user_scrollable_vertical);
- EXPECT_EQ(src->inputs_.scroll_offset, dest->inputs_.scroll_offset);
- EXPECT_EQ(update_rect, dest->inputs_.update_rect);
-
- if (src->inputs_.scroll_parent) {
- ASSERT_TRUE(dest->inputs_.scroll_parent);
- EXPECT_EQ(src->inputs_.scroll_parent->id(),
- dest->inputs_.scroll_parent->id());
- } else {
- EXPECT_FALSE(dest->inputs_.scroll_parent);
- }
- if (src->scroll_children_) {
- ASSERT_TRUE(dest->scroll_children_);
- EXPECT_EQ(*(src->scroll_children_), *(dest->scroll_children_));
- } else {
- EXPECT_FALSE(dest->scroll_children_);
- }
-
- if (src->inputs_.clip_parent) {
- ASSERT_TRUE(dest->inputs_.clip_parent);
- EXPECT_EQ(src->inputs_.clip_parent->id(),
- dest->inputs_.clip_parent->id());
- } else {
- ASSERT_FALSE(dest->inputs_.clip_parent);
- }
- if (src->clip_children_) {
- ASSERT_TRUE(dest->clip_children_);
- EXPECT_EQ(*(src->clip_children_), *(dest->clip_children_));
- } else {
- EXPECT_FALSE(dest->clip_children_);
- }
-
- // The following member should have been reset during serialization.
- EXPECT_EQ(gfx::Rect(), src->inputs_.update_rect);
-
- // Before deleting |dest|, the LayerTreeHost must be unset.
- dest->SetLayerTreeHost(nullptr);
-
- // Cleanup scroll tree.
- if (src->inputs_.scroll_parent)
- layer_tree->UnregisterLayer(src->inputs_.scroll_parent);
- src->inputs_.scroll_parent = nullptr;
- dest->inputs_.scroll_parent = nullptr;
- if (src->scroll_children_) {
- for (auto* child : *(src->scroll_children_))
- layer_tree->UnregisterLayer(child);
- src->scroll_children_.reset();
- dest->scroll_children_.reset();
- }
-
- // Cleanup clip tree.
- if (src->inputs_.clip_parent)
- layer_tree->UnregisterLayer(src->inputs_.clip_parent);
- src->inputs_.clip_parent = nullptr;
- dest->inputs_.clip_parent = nullptr;
- if (src->clip_children_) {
- for (auto* child : *(src->clip_children_))
- layer_tree->UnregisterLayer(child);
- src->clip_children_.reset();
- dest->clip_children_.reset();
- }
- }
-
- void RunNoMembersChangedTest() {
- scoped_refptr<Layer> layer = Layer::Create();
- VerifyBaseLayerPropertiesSerializationAndDeserialization(layer.get());
- }
-
- void RunArbitraryMembersChangedTest() {
- scoped_refptr<Layer> layer = Layer::Create();
- layer->inputs_.transform_origin = gfx::Point3F(3.0f, 1.0f, 4.0f);
- layer->inputs_.background_color = SK_ColorRED;
- layer->inputs_.bounds = gfx::Size(3, 14);
- layer->transform_tree_index_ = -1;
- layer->effect_tree_index_ = -1;
- layer->clip_tree_index_ = 71;
- layer->offset_to_transform_parent_ = gfx::Vector2dF(3.14f, 1.618f);
- layer->inputs_.double_sided = true;
- layer->draws_content_ = true;
- layer->may_contain_video_ = true;
- layer->inputs_.hide_layer_and_subtree = false;
- layer->inputs_.masks_to_bounds = true;
- layer->inputs_.main_thread_scrolling_reasons =
- MainThreadScrollingReason::kNotScrollingOnMain;
- layer->inputs_.non_fast_scrollable_region = Region(gfx::Rect(5, 1, 14, 3));
- layer->inputs_.touch_event_handler_region = Region(gfx::Rect(3, 14, 1, 5));
- layer->inputs_.contents_opaque = true;
- layer->inputs_.opacity = 1.f;
- layer->inputs_.blend_mode = SkXfermode::kSrcOver_Mode;
- layer->inputs_.is_root_for_isolated_group = true;
- layer->inputs_.position = gfx::PointF(3.14f, 6.28f);
- layer->inputs_.is_container_for_fixed_position_layers = true;
- LayerPositionConstraint pos_con;
- pos_con.set_is_fixed_to_bottom_edge(true);
- layer->inputs_.position_constraint = pos_con;
- layer->inputs_.should_flatten_transform = true;
- layer->should_flatten_transform_from_property_tree_ = true;
- layer->draw_blend_mode_ = SkXfermode::kSrcOut_Mode;
- layer->inputs_.use_parent_backface_visibility = true;
- gfx::Transform transform;
- transform.Rotate(90);
- layer->inputs_.transform = transform;
- layer->inputs_.sorting_context_id = 0;
- layer->num_descendants_that_draw_content_ = 5;
- layer->inputs_.scroll_clip_layer_id = Layer::INVALID_ID;
- layer->inputs_.user_scrollable_horizontal = false;
- layer->inputs_.user_scrollable_vertical = true;
- layer->inputs_.scroll_offset = gfx::ScrollOffset(3, 14);
- layer->inputs_.update_rect = gfx::Rect(14, 15);
-
- VerifyBaseLayerPropertiesSerializationAndDeserialization(layer.get());
- }
-
- void RunAllMembersChangedTest() {
- scoped_refptr<Layer> layer = Layer::Create();
- layer->inputs_.transform_origin = gfx::Point3F(3.0f, 1.0f, 4.0f);
- layer->inputs_.background_color = SK_ColorRED;
- layer->inputs_.bounds = gfx::Size(3, 14);
- layer->transform_tree_index_ = 39;
- layer->effect_tree_index_ = 17;
- layer->clip_tree_index_ = 71;
- layer->offset_to_transform_parent_ = gfx::Vector2dF(3.14f, 1.618f);
- layer->inputs_.double_sided = !layer->inputs_.double_sided;
- layer->draws_content_ = !layer->draws_content_;
- layer->may_contain_video_ = !layer->may_contain_video_;
- layer->inputs_.hide_layer_and_subtree =
- !layer->inputs_.hide_layer_and_subtree;
- layer->inputs_.masks_to_bounds = !layer->inputs_.masks_to_bounds;
- layer->inputs_.main_thread_scrolling_reasons =
- MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects;
- layer->inputs_.non_fast_scrollable_region = Region(gfx::Rect(5, 1, 14, 3));
- layer->inputs_.touch_event_handler_region = Region(gfx::Rect(3, 14, 1, 5));
- layer->inputs_.contents_opaque = !layer->inputs_.contents_opaque;
- layer->inputs_.opacity = 3.14f;
- layer->inputs_.blend_mode = SkXfermode::kSrcIn_Mode;
- layer->inputs_.is_root_for_isolated_group =
- !layer->inputs_.is_root_for_isolated_group;
- layer->inputs_.position = gfx::PointF(3.14f, 6.28f);
- layer->inputs_.is_container_for_fixed_position_layers =
- !layer->inputs_.is_container_for_fixed_position_layers;
- LayerPositionConstraint pos_con;
- pos_con.set_is_fixed_to_bottom_edge(true);
- layer->inputs_.position_constraint = pos_con;
- layer->inputs_.should_flatten_transform =
- !layer->inputs_.should_flatten_transform;
- layer->should_flatten_transform_from_property_tree_ =
- !layer->should_flatten_transform_from_property_tree_;
- layer->draw_blend_mode_ = SkXfermode::kSrcOut_Mode;
- layer->inputs_.use_parent_backface_visibility =
- !layer->inputs_.use_parent_backface_visibility;
- gfx::Transform transform;
- transform.Rotate(90);
- layer->inputs_.transform = transform;
- layer->inputs_.sorting_context_id = 42;
- layer->num_descendants_that_draw_content_ = 5;
- layer->inputs_.scroll_clip_layer_id = 17;
- layer->inputs_.user_scrollable_horizontal =
- !layer->inputs_.user_scrollable_horizontal;
- layer->inputs_.user_scrollable_vertical =
- !layer->inputs_.user_scrollable_vertical;
- layer->inputs_.scroll_offset = gfx::ScrollOffset(3, 14);
- layer->inputs_.update_rect = gfx::Rect(14, 15);
-
- VerifyBaseLayerPropertiesSerializationAndDeserialization(layer.get());
- }
-
- void VerifySolidColorScrollbarLayerAfterSerializationAndDeserialization(
- scoped_refptr<SolidColorScrollbarLayer> source_scrollbar) {
- proto::LayerNode serialized_scrollbar_node;
- source_scrollbar->ToLayerNodeProto(&serialized_scrollbar_node);
-
- scoped_refptr<SolidColorScrollbarLayer> deserialized_scrollbar =
- SolidColorScrollbarLayer::Create(ScrollbarOrientation::HORIZONTAL, -1,
- -1, false, Layer::INVALID_ID);
- deserialized_scrollbar->inputs_.layer_id =
- source_scrollbar->inputs_.layer_id;
-
- // FromLayerSpecificPropertiesProto expects a non-null LayerTreeHost to be
- // set.
- Layer::LayerIdMap layer_map;
- deserialized_scrollbar->FromLayerNodeProto(
- serialized_scrollbar_node, layer_map, layer_tree_host_.get());
-
- EXPECT_EQ(source_scrollbar->solid_color_scrollbar_layer_inputs_.track_start,
- deserialized_scrollbar->solid_color_scrollbar_layer_inputs_
- .track_start);
- EXPECT_EQ(
- source_scrollbar->solid_color_scrollbar_layer_inputs_.thumb_thickness,
- deserialized_scrollbar->solid_color_scrollbar_layer_inputs_
- .thumb_thickness);
- EXPECT_EQ(
- source_scrollbar->solid_color_scrollbar_layer_inputs_.scroll_layer_id,
- deserialized_scrollbar->solid_color_scrollbar_layer_inputs_
- .scroll_layer_id);
- EXPECT_EQ(source_scrollbar->solid_color_scrollbar_layer_inputs_
- .is_left_side_vertical_scrollbar,
- deserialized_scrollbar->solid_color_scrollbar_layer_inputs_
- .is_left_side_vertical_scrollbar);
- EXPECT_EQ(source_scrollbar->solid_color_scrollbar_layer_inputs_.orientation,
- deserialized_scrollbar->solid_color_scrollbar_layer_inputs_
- .orientation);
-
- deserialized_scrollbar->SetLayerTreeHost(nullptr);
- }
-
- void RunScrollAndClipLayersTest() {
- scoped_refptr<Layer> layer = Layer::Create();
-
- scoped_refptr<Layer> scroll_parent = Layer::Create();
- layer->inputs_.scroll_parent = scroll_parent.get();
- scoped_refptr<Layer> scroll_child = Layer::Create();
- layer->scroll_children_.reset(new std::set<Layer*>);
- layer->scroll_children_->insert(scroll_child.get());
-
- scoped_refptr<Layer> clip_parent = Layer::Create();
- layer->inputs_.clip_parent = clip_parent.get();
- layer->clip_children_.reset(new std::set<Layer*>);
- scoped_refptr<Layer> clip_child1 = Layer::Create();
- layer->clip_children_->insert(clip_child1.get());
- scoped_refptr<Layer> clip_child2 = Layer::Create();
- layer->clip_children_->insert(clip_child2.get());
-
- VerifyBaseLayerPropertiesSerializationAndDeserialization(layer.get());
- }
-
- void RunHierarchyDeserializationWithLayerTreeHostTest() {
- /* Testing serialization and deserialization of a tree that looks like this:
- root
- \
- a
- \
- b
- \
- c
- The root layer has a LayerTreeHost, and it should propagate to all the
- children.
- */
- scoped_refptr<Layer> layer_src_root = Layer::Create();
- scoped_refptr<Layer> layer_src_a = Layer::Create();
- scoped_refptr<Layer> layer_src_b = Layer::Create();
- scoped_refptr<Layer> layer_src_c = Layer::Create();
- layer_src_root->AddChild(layer_src_a);
- layer_src_a->AddChild(layer_src_b);
- layer_src_b->AddChild(layer_src_c);
-
- proto::LayerNode proto;
- layer_src_root->ToLayerNodeProto(&proto);
-
- Layer::LayerIdMap empty_dest_layer_map;
- scoped_refptr<Layer> layer_dest_root = Layer::Create();
-
- layer_dest_root->FromLayerNodeProto(proto, empty_dest_layer_map,
- layer_tree_host_.get());
-
- EXPECT_EQ(layer_src_root->id(), layer_dest_root->id());
- EXPECT_EQ(nullptr, layer_dest_root->parent());
- ASSERT_EQ(1u, layer_dest_root->children().size());
- EXPECT_EQ(layer_tree_host_.get(), layer_dest_root->layer_tree_host_);
-
- scoped_refptr<Layer> layer_dest_a = layer_dest_root->children()[0];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- EXPECT_EQ(layer_src_root->id(), layer_dest_a->parent()->id());
- EXPECT_EQ(1u, layer_dest_a->children().size());
- EXPECT_EQ(layer_tree_host_.get(), layer_dest_a->layer_tree_host_);
-
- scoped_refptr<Layer> layer_dest_b = layer_dest_a->children()[0];
- EXPECT_EQ(layer_src_b->id(), layer_dest_b->id());
- EXPECT_EQ(layer_src_a->id(), layer_dest_b->parent()->id());
- ASSERT_EQ(1u, layer_dest_b->children().size());
- EXPECT_EQ(layer_tree_host_.get(), layer_dest_b->layer_tree_host_);
-
- scoped_refptr<Layer> layer_dest_c = layer_dest_b->children()[0];
- EXPECT_EQ(layer_src_c->id(), layer_dest_c->id());
- EXPECT_EQ(layer_src_b->id(), layer_dest_c->parent()->id());
- EXPECT_EQ(0u, layer_dest_c->children().size());
- EXPECT_EQ(layer_tree_host_.get(), layer_dest_c->layer_tree_host_);
-
- // The layers have not been added to the LayerTreeHost layer map, so the
- // LTH pointers must be cleared manually.
- layer_dest_root->layer_tree_host_ = nullptr;
- layer_dest_a->layer_tree_host_ = nullptr;
- layer_dest_b->layer_tree_host_ = nullptr;
- layer_dest_c->layer_tree_host_ = nullptr;
- }
-
- void RunNonDestructiveDeserializationBaseCaseTest() {
- /* Testing serialization and deserialization of a tree that initially looks
- like this:
- root
- /
- a
- The source tree is then deserialized from the same structure which should
- re-use the Layers from last deserialization and importantly it should
- not have called InvalidatePropertyTreesIndices() for any of the layers,
- which would happen in for example SetLayerTreeHost(...) calls.
- */
- scoped_refptr<Layer> layer_root = Layer::Create();
- scoped_refptr<Layer> layer_src_a = Layer::Create();
- layer_root->AddChild(layer_src_a);
- layer_root->transform_tree_index_ = 33;
- layer_src_a->transform_tree_index_ = 42;
-
- proto::LayerNode root_proto;
- layer_root->ToLayerNodeProto(&root_proto);
-
- Layer::LayerIdMap dest_layer_map;
- layer_root->ClearLayerTreePropertiesForDeserializationAndAddToMap(
- &dest_layer_map);
- layer_root->FromLayerNodeProto(root_proto, dest_layer_map,
- layer_tree_host_.get());
-
- EXPECT_EQ(33, layer_root->transform_tree_index_);
- ASSERT_EQ(1u, layer_root->children().size());
- scoped_refptr<Layer> layer_dest_a = layer_root->children()[0];
- EXPECT_EQ(layer_src_a, layer_dest_a);
- EXPECT_EQ(42, layer_dest_a->transform_tree_index_);
-
- // Clear the reference to the LTH for all the layers.
- layer_root->SetLayerTreeHost(nullptr);
- }
-
- void RunNonDestructiveDeserializationReorderChildrenTest() {
- /* Testing serialization and deserialization of a tree that initially looks
- like this:
- root
- / \
- a b
- The children are then re-ordered to:
- root
- / \
- b a
- The tree is then serialized and deserialized again, and the the end
- result should have the same structure and importantly it should
- not have called InvalidatePropertyTreesIndices() for any of the layers,
- which would happen in for example SetLayerTreeHost(...) calls.
- */
- scoped_refptr<Layer> layer_src_root = Layer::Create();
- scoped_refptr<Layer> layer_src_a = Layer::Create();
- scoped_refptr<Layer> layer_src_b = Layer::Create();
- layer_src_root->AddChild(layer_src_a);
- layer_src_root->AddChild(layer_src_b);
-
- // Copy tree-structure to new root.
- proto::LayerNode root_proto_1;
- layer_src_root->ToLayerNodeProto(&root_proto_1);
- Layer::LayerIdMap dest_layer_map;
- scoped_refptr<Layer> layer_dest_root = Layer::Create();
- layer_dest_root->FromLayerNodeProto(root_proto_1, dest_layer_map,
- layer_tree_host_.get());
-
- // Ensure initial copy is correct.
- ASSERT_EQ(2u, layer_dest_root->children().size());
- scoped_refptr<Layer> layer_dest_a = layer_dest_root->children()[0];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- scoped_refptr<Layer> layer_dest_b = layer_dest_root->children()[1];
- EXPECT_EQ(layer_src_b->id(), layer_dest_b->id());
-
- // Swap order of the children.
- scoped_refptr<Layer> tmp_a = layer_src_root->inputs_.children[0];
- layer_src_root->inputs_.children[0] = layer_src_root->inputs_.children[1];
- layer_src_root->inputs_.children[1] = tmp_a;
-
- // Fake the fact that the destination layers have valid indexes.
- layer_dest_root->transform_tree_index_ = 33;
- layer_dest_a->transform_tree_index_ = 42;
- layer_dest_b->transform_tree_index_ = 24;
-
- // Now serialize and deserialize again.
- proto::LayerNode root_proto_2;
- layer_src_root->ToLayerNodeProto(&root_proto_2);
- layer_dest_root->ClearLayerTreePropertiesForDeserializationAndAddToMap(
- &dest_layer_map);
- layer_dest_root->FromLayerNodeProto(root_proto_2, dest_layer_map,
- layer_tree_host_.get());
-
- // Ensure second copy is correct.
- EXPECT_EQ(33, layer_dest_root->transform_tree_index_);
- ASSERT_EQ(2u, layer_dest_root->children().size());
- layer_dest_b = layer_dest_root->children()[0];
- EXPECT_EQ(layer_src_b->id(), layer_dest_b->id());
- EXPECT_EQ(24, layer_dest_b->transform_tree_index_);
- layer_dest_a = layer_dest_root->children()[1];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- EXPECT_EQ(42, layer_dest_a->transform_tree_index_);
-
- layer_dest_root->SetLayerTreeHost(nullptr);
- }
-
- void RunNonDestructiveDeserializationAddChildTest() {
- /* Testing serialization and deserialization of a tree that initially looks
- like this:
- root
- /
- a
- A child is then added to the root:
- root
- / \
- b a
- The tree is then serialized and deserialized again, and the the end
- result should have the same structure and importantly it should
- not have called InvalidatePropertyTreesIndices() for any of the layers,
- which would happen in for example SetLayerTreeHost(...) calls.
- */
- scoped_refptr<Layer> layer_src_root = Layer::Create();
- scoped_refptr<Layer> layer_src_a = Layer::Create();
- layer_src_root->AddChild(layer_src_a);
-
- // Copy tree-structure to new root.
- proto::LayerNode root_proto_1;
- layer_src_root->ToLayerNodeProto(&root_proto_1);
- Layer::LayerIdMap dest_layer_map;
- scoped_refptr<Layer> layer_dest_root = Layer::Create();
- layer_dest_root->FromLayerNodeProto(root_proto_1, dest_layer_map,
- layer_tree_host_.get());
-
- // Ensure initial copy is correct.
- ASSERT_EQ(1u, layer_dest_root->children().size());
- scoped_refptr<Layer> layer_dest_a = layer_dest_root->children()[0];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
-
- // Fake the fact that the destination layer |a| now has a valid index.
- layer_dest_root->transform_tree_index_ = 33;
- layer_dest_a->transform_tree_index_ = 42;
-
- // Add another child.
- scoped_refptr<Layer> layer_src_b = Layer::Create();
- layer_src_root->AddChild(layer_src_b);
-
- // Now serialize and deserialize again.
- proto::LayerNode root_proto_2;
- layer_src_root->ToLayerNodeProto(&root_proto_2);
- layer_dest_root->ClearLayerTreePropertiesForDeserializationAndAddToMap(
- &dest_layer_map);
- layer_dest_root->FromLayerNodeProto(root_proto_2, dest_layer_map,
- layer_tree_host_.get());
-
- // Ensure second copy is correct.
- EXPECT_EQ(33, layer_dest_root->transform_tree_index_);
- ASSERT_EQ(2u, layer_dest_root->children().size());
- layer_dest_a = layer_dest_root->children()[0];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- EXPECT_EQ(42, layer_dest_a->transform_tree_index_);
- scoped_refptr<Layer> layer_dest_b = layer_dest_root->children()[1];
- EXPECT_EQ(layer_src_b->id(), layer_dest_b->id());
-
- layer_dest_root->SetLayerTreeHost(nullptr);
- }
-
- void RunNonDestructiveDeserializationRemoveChildTest() {
- /* Testing serialization and deserialization of a tree that initially looks
- like this:
- root
- / \
- a b
- The |b| child is the removed from the root:
- root
- /
- b
- The tree is then serialized and deserialized again, and the the end
- result should have the same structure and importantly it should
- not have called InvalidatePropertyTreesIndices() for any of the layers,
- which would happen in for example SetLayerTreeHost(...) calls.
- */
- scoped_refptr<Layer> layer_src_root = Layer::Create();
- scoped_refptr<Layer> layer_src_a = Layer::Create();
- scoped_refptr<Layer> layer_src_b = Layer::Create();
- layer_src_root->AddChild(layer_src_a);
- layer_src_root->AddChild(layer_src_b);
-
- // Copy tree-structure to new root.
- proto::LayerNode root_proto_1;
- layer_src_root->ToLayerNodeProto(&root_proto_1);
- Layer::LayerIdMap dest_layer_map;
- scoped_refptr<Layer> layer_dest_root = Layer::Create();
- layer_dest_root->FromLayerNodeProto(root_proto_1, dest_layer_map,
- layer_tree_host_.get());
-
- // Ensure initial copy is correct.
- ASSERT_EQ(2u, layer_dest_root->children().size());
- scoped_refptr<Layer> layer_dest_a = layer_dest_root->children()[0];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- scoped_refptr<Layer> layer_dest_b = layer_dest_root->children()[1];
- EXPECT_EQ(layer_src_b->id(), layer_dest_b->id());
-
- // Remove one child.
- layer_src_b->RemoveFromParent();
-
- // Fake the fact that the destination layers have valid indexes.
- layer_dest_root->transform_tree_index_ = 33;
- layer_dest_a->transform_tree_index_ = 42;
- layer_dest_b->transform_tree_index_ = 24;
-
- // Now serialize and deserialize again.
- proto::LayerNode root_proto_2;
- layer_src_root->ToLayerNodeProto(&root_proto_2);
- layer_dest_root->ClearLayerTreePropertiesForDeserializationAndAddToMap(
- &dest_layer_map);
- layer_dest_root->FromLayerNodeProto(root_proto_2, dest_layer_map,
- layer_tree_host_.get());
-
- // Ensure second copy is correct.
- EXPECT_EQ(33, layer_dest_root->transform_tree_index_);
- ASSERT_EQ(1u, layer_dest_root->children().size());
- layer_dest_a = layer_dest_root->children()[0];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- EXPECT_EQ(42, layer_dest_a->transform_tree_index_);
-
- layer_dest_root->SetLayerTreeHost(nullptr);
- }
-
- void RunNonDestructiveDeserializationMoveChildEarlierTest() {
- /* Testing serialization and deserialization of a tree that initially looks
- like this:
- root
- / \
- a b
- \
- c
- The |c| child of |b| is then moved to become a child of |a|:
- root
- / \
- a b
- /
- c
- The tree is then serialized and deserialized again, and the the end
- result should have the same structure and importantly it should
- not have called InvalidatePropertyTreesIndices() for any of the layers,
- which would happen in for example SetLayerTreeHost(...) calls.
- */
- scoped_refptr<Layer> layer_src_root = Layer::Create();
- scoped_refptr<Layer> layer_src_a = Layer::Create();
- scoped_refptr<Layer> layer_src_b = Layer::Create();
- scoped_refptr<Layer> layer_src_c = Layer::Create();
- layer_src_root->AddChild(layer_src_a);
- layer_src_root->AddChild(layer_src_b);
- layer_src_b->AddChild(layer_src_c);
-
- // Copy tree-structure to new root.
- proto::LayerNode root_proto_1;
- layer_src_root->ToLayerNodeProto(&root_proto_1);
- Layer::LayerIdMap dest_layer_map;
- scoped_refptr<Layer> layer_dest_root = Layer::Create();
- layer_dest_root->FromLayerNodeProto(root_proto_1, dest_layer_map,
- layer_tree_host_.get());
-
- // Ensure initial copy is correct.
- ASSERT_EQ(2u, layer_dest_root->children().size());
- scoped_refptr<Layer> layer_dest_a = layer_dest_root->children()[0];
- scoped_refptr<Layer> layer_dest_b = layer_dest_root->children()[1];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- EXPECT_EQ(layer_src_b->id(), layer_dest_b->id());
- ASSERT_EQ(1u, layer_dest_b->children().size());
- scoped_refptr<Layer> layer_dest_c = layer_dest_b->children()[0];
- EXPECT_EQ(layer_src_c->id(), layer_dest_c->id());
-
- // Move child |c| from |b| to |a|.
- layer_src_c->RemoveFromParent();
- layer_src_a->AddChild(layer_src_c);
-
- // Moving a child invalidates the |transform_tree_index_|, so forcefully
- // set it afterwards on the destination layer.
- layer_dest_root->transform_tree_index_ = 33;
- layer_dest_a->transform_tree_index_ = 42;
- layer_dest_b->transform_tree_index_ = 24;
- layer_dest_c->transform_tree_index_ = 99;
-
- // Now serialize and deserialize again.
- proto::LayerNode root_proto_2;
- layer_src_root->ToLayerNodeProto(&root_proto_2);
- layer_dest_root->ClearLayerTreePropertiesForDeserializationAndAddToMap(
- &dest_layer_map);
- layer_dest_root->FromLayerNodeProto(root_proto_2, dest_layer_map,
- layer_tree_host_.get());
-
- // Ensure second copy is correct.
- EXPECT_EQ(33, layer_dest_root->transform_tree_index_);
- ASSERT_EQ(2u, layer_dest_root->children().size());
- layer_dest_a = layer_dest_root->children()[0];
- layer_dest_b = layer_dest_root->children()[1];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- EXPECT_EQ(42, layer_dest_a->transform_tree_index_);
- EXPECT_EQ(layer_src_b->id(), layer_dest_b->id());
- EXPECT_EQ(24, layer_dest_b->transform_tree_index_);
- ASSERT_EQ(1u, layer_dest_a->children().size());
- layer_dest_c = layer_dest_a->children()[0];
- EXPECT_EQ(layer_src_c->id(), layer_dest_c->id());
- EXPECT_EQ(99, layer_dest_c->transform_tree_index_);
-
- layer_dest_root->SetLayerTreeHost(nullptr);
- }
-
- void RunNonDestructiveDeserializationMoveChildLaterTest() {
- /* Testing serialization and deserialization of a tree that initially looks
- like this:
- root
- / \
- a b
- /
- c
- The |c| child of |a| is then moved to become a child of |b|:
- root
- / \
- a b
- \
- c
- The tree is then serialized and deserialized again, and the the end
- result should have the same structure and importantly it should
- not have called InvalidatePropertyTreesIndices() for any of the layers,
- which would happen in for example SetLayerTreeHost(...) calls.
- */
- scoped_refptr<Layer> layer_src_root = Layer::Create();
- scoped_refptr<Layer> layer_src_a = Layer::Create();
- scoped_refptr<Layer> layer_src_b = Layer::Create();
- scoped_refptr<Layer> layer_src_c = Layer::Create();
- layer_src_root->AddChild(layer_src_a);
- layer_src_root->AddChild(layer_src_b);
- layer_src_a->AddChild(layer_src_c);
-
- // Copy tree-structure to new root.
- proto::LayerNode root_proto_1;
- layer_src_root->ToLayerNodeProto(&root_proto_1);
- Layer::LayerIdMap dest_layer_map;
- scoped_refptr<Layer> layer_dest_root = Layer::Create();
- layer_dest_root->FromLayerNodeProto(root_proto_1, dest_layer_map,
- layer_tree_host_.get());
-
- // Ensure initial copy is correct.
- ASSERT_EQ(2u, layer_dest_root->children().size());
- scoped_refptr<Layer> layer_dest_a = layer_dest_root->children()[0];
- scoped_refptr<Layer> layer_dest_b = layer_dest_root->children()[1];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- EXPECT_EQ(layer_src_b->id(), layer_dest_b->id());
- ASSERT_EQ(1u, layer_dest_a->children().size());
- scoped_refptr<Layer> layer_dest_c = layer_dest_a->children()[0];
- EXPECT_EQ(layer_src_c->id(), layer_dest_c->id());
-
- // Move child |c| from |b| to |a|.
- layer_src_c->RemoveFromParent();
- layer_src_b->AddChild(layer_src_c);
-
- // Moving a child invalidates the |transform_tree_index_|, so forcefully
- // set it afterwards on the destination layer.
- layer_dest_root->transform_tree_index_ = 33;
- layer_dest_a->transform_tree_index_ = 42;
- layer_dest_b->transform_tree_index_ = 24;
- layer_dest_c->transform_tree_index_ = 99;
-
- // Now serialize and deserialize again.
- proto::LayerNode root_proto_2;
- layer_src_root->ToLayerNodeProto(&root_proto_2);
- layer_dest_root->ClearLayerTreePropertiesForDeserializationAndAddToMap(
- &dest_layer_map);
- layer_dest_root->FromLayerNodeProto(root_proto_2, dest_layer_map,
- layer_tree_host_.get());
-
- // Ensure second copy is correct.
- EXPECT_EQ(33, layer_dest_root->transform_tree_index_);
- ASSERT_EQ(2u, layer_dest_root->children().size());
- layer_dest_a = layer_dest_root->children()[0];
- layer_dest_b = layer_dest_root->children()[1];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- EXPECT_EQ(42, layer_dest_a->transform_tree_index_);
- EXPECT_EQ(layer_src_b->id(), layer_dest_b->id());
- EXPECT_EQ(24, layer_dest_b->transform_tree_index_);
- ASSERT_EQ(1u, layer_dest_b->children().size());
- layer_dest_c = layer_dest_b->children()[0];
- EXPECT_EQ(layer_src_c->id(), layer_dest_c->id());
- EXPECT_EQ(99, layer_dest_c->transform_tree_index_);
-
- layer_dest_root->SetLayerTreeHost(nullptr);
- }
-
- TestTaskGraphRunner task_graph_runner_;
- FakeLayerTreeHostClient fake_client_;
- std::unique_ptr<AnimationHost> animation_host_;
- std::unique_ptr<FakeLayerTreeHost> layer_tree_host_;
-};
-
namespace {
class MockLayerTree : public LayerTree {
@@ -2197,286 +1409,6 @@ TEST_F(LayerTest, AnimationSchedulesLayerUpdate) {
Mock::VerifyAndClearExpectations(layer_tree_host_.get());
}
-TEST_F(LayerTest, RecursiveHierarchySerialization) {
- /* Testing serialization and deserialization of a tree that looks like this:
- root
- / \
- a b
- \
- c
- Layer c also has a mask layer.
- */
- scoped_refptr<Layer> layer_src_root = Layer::Create();
- scoped_refptr<Layer> layer_src_a = Layer::Create();
- scoped_refptr<Layer> layer_src_b = Layer::Create();
- scoped_refptr<Layer> layer_src_c = Layer::Create();
- scoped_refptr<Layer> layer_src_c_mask = Layer::Create();
- layer_src_root->AddChild(layer_src_a);
- layer_src_root->AddChild(layer_src_b);
- layer_src_b->AddChild(layer_src_c);
- layer_src_c->SetMaskLayer(layer_src_c_mask.get());
-
- proto::LayerNode proto;
- layer_src_root->ToLayerNodeProto(&proto);
-
- Layer::LayerIdMap empty_dest_layer_map;
- scoped_refptr<Layer> layer_dest_root = Layer::Create();
- layer_dest_root->FromLayerNodeProto(proto, empty_dest_layer_map,
- layer_tree_host_.get());
-
- EXPECT_EQ(layer_src_root->id(), layer_dest_root->id());
- EXPECT_EQ(nullptr, layer_dest_root->parent());
- ASSERT_EQ(2u, layer_dest_root->children().size());
-
- scoped_refptr<Layer> layer_dest_a = layer_dest_root->children()[0];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a->id());
- EXPECT_EQ(layer_src_root->id(), layer_dest_a->parent()->id());
- EXPECT_EQ(0u, layer_dest_a->children().size());
-
- scoped_refptr<Layer> layer_dest_b = layer_dest_root->children()[1];
- EXPECT_EQ(layer_src_b->id(), layer_dest_b->id());
- EXPECT_EQ(layer_src_root->id(), layer_dest_b->parent()->id());
- ASSERT_EQ(1u, layer_dest_b->children().size());
-
- scoped_refptr<Layer> layer_dest_c = layer_dest_b->children()[0];
- EXPECT_EQ(layer_src_c->id(), layer_dest_c->id());
- EXPECT_EQ(layer_src_b->id(), layer_dest_c->parent()->id());
- EXPECT_EQ(0u, layer_dest_c->children().size());
- EXPECT_EQ(layer_src_c_mask->id(), layer_dest_c->mask_layer()->id());
-
- layer_dest_root->SetLayerTreeHost(nullptr);
-}
-
-TEST_F(LayerTest, RecursiveHierarchySerializationWithNodeReuse) {
- /* Testing serialization and deserialization of a tree that initially looks
- like this:
- root
- /
- a
- The source tree is then updated by adding layer |b|:
- root
- / \
- a b
- The deserialization should then re-use the Layers from last
- deserialization.
- */
- scoped_refptr<Layer> layer_src_root = Layer::Create();
- scoped_refptr<Layer> layer_src_a = Layer::Create();
- layer_src_root->AddChild(layer_src_a);
-
- proto::LayerNode root_proto_1;
- layer_src_root->ToLayerNodeProto(&root_proto_1);
-
- Layer::LayerIdMap dest_layer_map_1;
- scoped_refptr<Layer> layer_dest_root = Layer::Create();
- layer_dest_root->FromLayerNodeProto(root_proto_1, dest_layer_map_1,
- layer_tree_host_.get());
-
- EXPECT_EQ(layer_src_root->id(), layer_dest_root->id());
- ASSERT_EQ(1u, layer_dest_root->children().size());
- scoped_refptr<Layer> layer_dest_a_1 = layer_dest_root->children()[0];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a_1->id());
-
- // Setup new destination layer map.
- Layer::LayerIdMap dest_layer_map_2;
- layer_dest_root->ClearLayerTreePropertiesForDeserializationAndAddToMap(
- &dest_layer_map_2);
-
- // Add Layer |b|.
- scoped_refptr<Layer> layer_src_b = Layer::Create();
- layer_src_root->AddChild(layer_src_b);
-
- // Second serialization.
- proto::LayerNode root_proto_2;
- layer_src_root->ToLayerNodeProto(&root_proto_2);
-
- // Second deserialization.
- layer_dest_root->FromLayerNodeProto(root_proto_2, dest_layer_map_2,
- layer_tree_host_.get());
-
- EXPECT_EQ(layer_src_root->id(), layer_dest_root->id());
- ASSERT_EQ(2u, layer_dest_root->children().size());
-
- scoped_refptr<Layer> layer_dest_a_2 = layer_dest_root->children()[0];
- EXPECT_EQ(layer_src_a->id(), layer_dest_a_2->id());
- EXPECT_EQ(layer_src_root->id(), layer_dest_a_2->parent()->id());
- EXPECT_EQ(0u, layer_dest_a_2->children().size());
-
- scoped_refptr<Layer> layer_dest_b_2 = layer_dest_root->children()[1];
- EXPECT_EQ(layer_src_b->id(), layer_dest_b_2->id());
- EXPECT_EQ(layer_src_root->id(), layer_dest_b_2->parent()->id());
- EXPECT_EQ(0u, layer_dest_b_2->children().size());
-
- // Layer |a| should be the same.
- EXPECT_EQ(layer_dest_a_1.get(), layer_dest_a_2.get());
-
- layer_dest_root->SetLayerTreeHost(nullptr);
-}
-
-TEST_F(LayerTest, DeletingSubtreeDeletesLayers) {
- /* Testing serialization and deserialization of a tree that initially
- looks like this:
- root
- / \
- a b
- \
- c
- \
- d
- Then the subtree rooted at node |b| is deleted in the next update.
- */
- scoped_refptr<Layer> layer_src_root = Layer::Create();
- scoped_refptr<Layer> layer_src_a = Layer::Create();
- scoped_refptr<Layer> layer_src_b = Layer::Create();
- scoped_refptr<Layer> layer_src_c = Layer::Create();
- scoped_refptr<Layer> layer_src_d = Layer::Create();
- layer_src_root->AddChild(layer_src_a);
- layer_src_root->AddChild(layer_src_b);
- layer_src_b->AddChild(layer_src_c);
- layer_src_c->AddChild(layer_src_d);
-
- // Serialization 1.
- proto::LayerNode proto1;
- layer_src_root->ToLayerNodeProto(&proto1);
-
- // Deserialization 1.
- Layer::LayerIdMap empty_dest_layer_map;
- scoped_refptr<Layer> layer_dest_root = Layer::Create();
- layer_dest_root->FromLayerNodeProto(proto1, empty_dest_layer_map,
- layer_tree_host_.get());
-
- EXPECT_EQ(layer_src_root->id(), layer_dest_root->id());
- ASSERT_EQ(2u, layer_dest_root->children().size());
- scoped_refptr<Layer> layer_dest_a = layer_dest_root->children()[0];
- scoped_refptr<Layer> layer_dest_b = layer_dest_root->children()[1];
- ASSERT_EQ(1u, layer_dest_b->children().size());
- scoped_refptr<Layer> layer_dest_c = layer_dest_b->children()[0];
- ASSERT_EQ(1u, layer_dest_c->children().size());
- scoped_refptr<Layer> layer_dest_d = layer_dest_c->children()[0];
-
- // Delete the Layer |b| subtree.
- layer_src_b->RemoveAllChildren();
-
- // Serialization 2.
- proto::LayerNode proto2;
- layer_src_root->ToLayerNodeProto(&proto2);
-
- // Deserialization 2.
- Layer::LayerIdMap dest_layer_map_2;
- layer_dest_root->ClearLayerTreePropertiesForDeserializationAndAddToMap(
- &dest_layer_map_2);
- layer_dest_root->FromLayerNodeProto(proto2, dest_layer_map_2,
- layer_tree_host_.get());
-
- EXPECT_EQ(0u, layer_dest_a->children().size());
- EXPECT_EQ(0u, layer_dest_b->children().size());
-
- layer_dest_root->SetLayerTreeHost(nullptr);
-}
-
-TEST_F(LayerTest, DeleteMaskLayer) {
- scoped_refptr<Layer> layer_src_root = Layer::Create();
- scoped_refptr<Layer> layer_src_mask = Layer::Create();
- layer_src_root->SetMaskLayer(layer_src_mask.get());
-
- // Serialization 1.
- proto::LayerNode proto1;
- layer_src_root->ToLayerNodeProto(&proto1);
-
- // Deserialization 1.
- Layer::LayerIdMap dest_layer_map;
- scoped_refptr<Layer> layer_dest_root = Layer::Create();
- layer_dest_root->FromLayerNodeProto(proto1, dest_layer_map,
- layer_tree_host_.get());
-
- EXPECT_EQ(layer_src_root->id(), layer_dest_root->id());
- ASSERT_TRUE(layer_dest_root->mask_layer());
- EXPECT_EQ(layer_src_root->mask_layer()->id(),
- layer_dest_root->mask_layer()->id());
- // TODO(nyquist): Add test for is_mask_ when PictureLayer is supported.
-
- // Clear mask layer.
- layer_src_root->mask_layer()->RemoveFromParent();
-
- // Serialization 2.
- proto::LayerNode proto2;
- layer_src_root->ToLayerNodeProto(&proto2);
-
- // Deserialization 2.
- layer_dest_root->ClearLayerTreePropertiesForDeserializationAndAddToMap(
- &dest_layer_map);
- layer_dest_root->FromLayerNodeProto(proto2, dest_layer_map,
- layer_tree_host_.get());
-
- EXPECT_EQ(nullptr, layer_dest_root->mask_layer());
-
- layer_dest_root->SetLayerTreeHost(nullptr);
-}
-
-TEST_F(LayerSerializationTest, HierarchyDeserializationWithLayerTreeHost) {
- RunHierarchyDeserializationWithLayerTreeHostTest();
-}
-
-TEST_F(LayerSerializationTest, NonDestructiveDeserializationBaseCase) {
- RunNonDestructiveDeserializationBaseCaseTest();
-}
-
-TEST_F(LayerSerializationTest, NonDestructiveDeserializationReorderChildren) {
- RunNonDestructiveDeserializationReorderChildrenTest();
-}
-
-TEST_F(LayerSerializationTest, NonDestructiveDeserializationAddChild) {
- RunNonDestructiveDeserializationAddChildTest();
-}
-
-TEST_F(LayerSerializationTest, NonDestructiveDeserializationRemoveChild) {
- RunNonDestructiveDeserializationRemoveChildTest();
-}
-
-TEST_F(LayerSerializationTest,
- NonDestructiveDeserializationMoveChildEarlierTest) {
- RunNonDestructiveDeserializationMoveChildEarlierTest();
-}
-
-TEST_F(LayerSerializationTest,
- NonDestructiveDeserializationMoveChildLaterTest) {
- RunNonDestructiveDeserializationMoveChildLaterTest();
-}
-
-TEST_F(LayerSerializationTest, NoMembersChanged) {
- RunNoMembersChangedTest();
-}
-
-TEST_F(LayerSerializationTest, ArbitraryMembersChanged) {
- RunArbitraryMembersChangedTest();
-}
-
-TEST_F(LayerSerializationTest, AllMembersChanged) {
- RunAllMembersChangedTest();
-}
-
-TEST_F(LayerSerializationTest, ScrollAndClipLayers) {
- RunScrollAndClipLayersTest();
-}
-
-TEST_F(LayerSerializationTest, SolidColorScrollbarSerialization) {
- std::vector<scoped_refptr<SolidColorScrollbarLayer>> scrollbar_layers;
-
- scrollbar_layers.push_back(SolidColorScrollbarLayer::Create(
- ScrollbarOrientation::HORIZONTAL, 20, 5, true, 3));
- scrollbar_layers.push_back(SolidColorScrollbarLayer::Create(
- ScrollbarOrientation::VERTICAL, 20, 5, false, 3));
- scrollbar_layers.push_back(SolidColorScrollbarLayer::Create(
- ScrollbarOrientation::HORIZONTAL, 0, 0, true, 0));
- scrollbar_layers.push_back(SolidColorScrollbarLayer::Create(
- ScrollbarOrientation::VERTICAL, 10, 35, true, 3));
-
- for (size_t i = 0; i < scrollbar_layers.size(); i++) {
- VerifySolidColorScrollbarLayerAfterSerializationAndDeserialization(
- scrollbar_layers[i]);
- }
-}
-
TEST_F(LayerTest, ElementIdAndMutablePropertiesArePushed) {
scoped_refptr<Layer> test_layer = Layer::Create();
std::unique_ptr<LayerImpl> impl_layer =
« no previous file with comments | « cc/layers/layer_proto_converter_unittest.cc ('k') | cc/layers/picture_layer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698