@@ -28,48 +28,52 @@ TEST_F(ClipPathLayerTest, PaintingEmptyLayerDies) {
2828 EXPECT_EQ (preroll_context ()->cull_rect , kGiantRect ); // Untouched
2929 EXPECT_TRUE (preroll_context ()->mutators_stack .is_empty ()); // Untouched
3030 EXPECT_EQ (layer->paint_bounds (), kEmptyRect );
31- EXPECT_FALSE (layer->needs_painting ());
31+ EXPECT_FALSE (layer->needs_painting (paint_context () ));
3232
3333 EXPECT_DEATH_IF_SUPPORTED (layer->Paint (paint_context ()),
34- " needs_painting\\ (\\ )" );
34+ " needs_painting\\ (context \\ )" );
3535}
3636
3737TEST_F (ClipPathLayerTest, PaintBeforePrerollDies) {
3838 const SkRect layer_bounds = SkRect::MakeXYWH (0.5 , 1.0 , 5.0 , 6.0 );
3939 const SkPath layer_path = SkPath ().addRect (layer_bounds);
4040 auto layer = std::make_shared<ClipPathLayer>(layer_path, Clip::hardEdge);
4141 EXPECT_EQ (layer->paint_bounds (), kEmptyRect );
42- EXPECT_FALSE (layer->needs_painting ());
42+ EXPECT_FALSE (layer->needs_painting (paint_context () ));
4343
4444 EXPECT_DEATH_IF_SUPPORTED (layer->Paint (paint_context ()),
45- " needs_painting\\ (\\ )" );
45+ " needs_painting\\ (context \\ )" );
4646}
4747
4848TEST_F (ClipPathLayerTest, PaintingCulledLayerDies) {
4949 const SkMatrix initial_matrix = SkMatrix::Translate (0 .5f , 1 .0f );
5050 const SkRect child_bounds = SkRect::MakeXYWH (1.0 , 2.0 , 2.0 , 2.0 );
5151 const SkRect layer_bounds = SkRect::MakeXYWH (0.5 , 1.0 , 5.0 , 6.0 );
52+ const SkRect distant_bounds = SkRect::MakeXYWH (100.0 , 100.0 , 10.0 , 10.0 );
5253 const SkPath child_path = SkPath ().addRect (child_bounds);
5354 const SkPath layer_path = SkPath ().addRect (layer_bounds);
5455 auto mock_layer = std::make_shared<MockLayer>(child_path);
5556 auto layer = std::make_shared<ClipPathLayer>(layer_path, Clip::hardEdge);
5657 layer->Add (mock_layer);
5758
58- preroll_context ()->cull_rect = kEmptyRect ; // Cull everything
59+ preroll_context ()->cull_rect = distant_bounds ; // Cull these children
5960
6061 layer->Preroll (preroll_context (), initial_matrix);
61- EXPECT_EQ (preroll_context ()->cull_rect , kEmptyRect ); // Untouched
62+ EXPECT_EQ (preroll_context ()->cull_rect , distant_bounds); // Untouched
6263 EXPECT_TRUE (preroll_context ()->mutators_stack .is_empty ()); // Untouched
63- EXPECT_EQ (mock_layer->paint_bounds (), kEmptyRect );
64- EXPECT_EQ (layer->paint_bounds (), kEmptyRect );
65- EXPECT_FALSE (mock_layer->needs_painting ());
66- EXPECT_FALSE (layer->needs_painting ());
67- EXPECT_EQ (mock_layer->parent_cull_rect (), kEmptyRect );
68- EXPECT_EQ (mock_layer->parent_matrix (), SkMatrix () );
69- EXPECT_EQ (mock_layer->parent_mutators (), std::vector< Mutator>( ));
64+ EXPECT_EQ (mock_layer->paint_bounds (), child_bounds );
65+ EXPECT_EQ (layer->paint_bounds (), child_bounds );
66+ EXPECT_TRUE (mock_layer->needs_painting (paint_context () ));
67+ EXPECT_TRUE (layer->needs_painting (paint_context () ));
68+ EXPECT_EQ (mock_layer->parent_cull_rect (), distant_bounds );
69+ EXPECT_EQ (mock_layer->parent_matrix (), initial_matrix );
70+ EXPECT_EQ (mock_layer->parent_mutators (), std::vector ({ Mutator (layer_path)} ));
7071
72+ paint_context ().internal_nodes_canvas ->clipRect (distant_bounds, false );
73+ EXPECT_FALSE (mock_layer->needs_painting (paint_context ()));
74+ EXPECT_FALSE (layer->needs_painting (paint_context ()));
7175 EXPECT_DEATH_IF_SUPPORTED (layer->Paint (paint_context ()),
72- " needs_painting\\ (\\ )" );
76+ " needs_painting\\ (context \\ )" );
7377}
7478#endif
7579
@@ -96,8 +100,8 @@ TEST_F(ClipPathLayerTest, ChildOutsideBounds) {
96100 EXPECT_TRUE (preroll_context ()->mutators_stack .is_empty ()); // Untouched
97101 EXPECT_EQ (mock_layer->paint_bounds (), child_bounds);
98102 EXPECT_EQ (layer->paint_bounds (), child_intersect_bounds);
99- EXPECT_TRUE (mock_layer->needs_painting ());
100- EXPECT_TRUE (layer->needs_painting ());
103+ EXPECT_TRUE (mock_layer->needs_painting (paint_context () ));
104+ EXPECT_TRUE (layer->needs_painting (paint_context () ));
101105 EXPECT_EQ (mock_layer->parent_cull_rect (), intersect_bounds);
102106 EXPECT_EQ (mock_layer->parent_matrix (), initial_matrix);
103107 EXPECT_EQ (mock_layer->parent_mutators (), std::vector ({Mutator (layer_path)}));
@@ -131,8 +135,8 @@ TEST_F(ClipPathLayerTest, FullyContainedChild) {
131135 EXPECT_TRUE (preroll_context ()->mutators_stack .is_empty ()); // Untouched
132136 EXPECT_EQ (mock_layer->paint_bounds (), child_bounds);
133137 EXPECT_EQ (layer->paint_bounds (), mock_layer->paint_bounds ());
134- EXPECT_TRUE (mock_layer->needs_painting ());
135- EXPECT_TRUE (layer->needs_painting ());
138+ EXPECT_TRUE (mock_layer->needs_painting (paint_context () ));
139+ EXPECT_TRUE (layer->needs_painting (paint_context () ));
136140 EXPECT_EQ (mock_layer->parent_cull_rect (), layer_bounds);
137141 EXPECT_EQ (mock_layer->parent_matrix (), initial_matrix);
138142 EXPECT_EQ (mock_layer->parent_mutators (), std::vector ({Mutator (layer_path)}));
@@ -173,8 +177,8 @@ TEST_F(ClipPathLayerTest, PartiallyContainedChild) {
173177 EXPECT_TRUE (preroll_context ()->mutators_stack .is_empty ()); // Untouched
174178 EXPECT_EQ (mock_layer->paint_bounds (), child_bounds);
175179 EXPECT_EQ (layer->paint_bounds (), child_intersect_bounds);
176- EXPECT_TRUE (mock_layer->needs_painting ());
177- EXPECT_TRUE (layer->needs_painting ());
180+ EXPECT_TRUE (mock_layer->needs_painting (paint_context () ));
181+ EXPECT_TRUE (layer->needs_painting (paint_context () ));
178182 EXPECT_EQ (mock_layer->parent_cull_rect (), intersect_bounds);
179183 EXPECT_EQ (mock_layer->parent_matrix (), initial_matrix);
180184 EXPECT_EQ (mock_layer->parent_mutators (), std::vector ({Mutator (layer_path)}));
0 commit comments