127 auto mock_layer1 = std::make_shared<MockLayer>(child_path1, child_paint1);
128 mock_layer1->set_fake_has_platform_view(
true);
129 auto mock_layer2 = std::make_shared<MockLayer>(child_path2, child_paint2);
130 auto layer = std::make_shared<ContainerLayer>();
131 layer->Add(mock_layer1);
132 layer->Add(mock_layer2);
134 DlRect expected_total_bounds =
136 preroll_context()->state_stack.set_preroll_delegate(initial_transform);
137 layer->Preroll(preroll_context());
138 EXPECT_TRUE(preroll_context()->has_platform_view);
139 EXPECT_EQ(mock_layer1->paint_bounds(), child_path1.
GetBounds());
140 EXPECT_EQ(mock_layer2->paint_bounds(), child_path2.
GetBounds());
141 EXPECT_EQ(layer->paint_bounds(), expected_total_bounds);
142 EXPECT_EQ(layer->child_paint_bounds(), layer->paint_bounds());
143 EXPECT_TRUE(mock_layer1->needs_painting(paint_context()));
144 EXPECT_TRUE(mock_layer2->needs_painting(paint_context()));
145 EXPECT_TRUE(layer->needs_painting(paint_context()));
146 EXPECT_EQ(mock_layer1->parent_matrix(), initial_transform);
147 EXPECT_EQ(mock_layer2->parent_matrix(), initial_transform);
148 EXPECT_EQ(mock_layer1->parent_cull_rect(),
kGiantRect);
149 EXPECT_EQ(mock_layer2->parent_cull_rect(),
152 layer->Paint(display_list_paint_context());
156 expected_builder.
DrawPath(child_path1, child_paint1);
159 expected_builder.
DrawPath(child_path2, child_paint2);
171 auto mock_layer1 = std::make_shared<MockLayer>(child_path1, child_paint1);
172 auto mock_layer2 = std::make_shared<MockLayer>(
DlPath(), child_paint2);
173 auto layer = std::make_shared<ContainerLayer>();
174 layer->Add(mock_layer1);
175 layer->Add(mock_layer2);
177 preroll_context()->state_stack.set_preroll_delegate(initial_transform);
178 layer->Preroll(preroll_context());
179 EXPECT_FALSE(preroll_context()->has_platform_view);
180 EXPECT_EQ(mock_layer1->paint_bounds(), child_path1.
GetBounds());
181 EXPECT_EQ(mock_layer2->paint_bounds(),
DlPath().GetBounds());
182 EXPECT_EQ(layer->paint_bounds(), child_path1.
GetBounds());
183 EXPECT_EQ(layer->child_paint_bounds(), layer->paint_bounds());
184 EXPECT_TRUE(mock_layer1->needs_painting(paint_context()));
185 EXPECT_FALSE(mock_layer2->needs_painting(paint_context()));
186 EXPECT_TRUE(layer->needs_painting(paint_context()));
187 EXPECT_EQ(mock_layer1->parent_matrix(), initial_transform);
188 EXPECT_EQ(mock_layer2->parent_matrix(), initial_transform);
189 EXPECT_EQ(mock_layer1->parent_cull_rect(),
kGiantRect);
190 EXPECT_EQ(mock_layer2->parent_cull_rect(),
kGiantRect);
192 layer->Paint(display_list_paint_context());
196 expected_builder.
DrawPath(child_path1, child_paint1);
210 auto mock_layer1 = std::make_shared<MockLayer>(child_path1, child_paint1);
211 mock_layer1->set_fake_has_platform_view(
false);
212 auto mock_layer2 = std::make_shared<MockLayer>(child_path2, child_paint2);
213 auto layer = std::make_shared<ContainerLayer>();
214 layer->Add(mock_layer1);
215 layer->Add(mock_layer2);
217 DlRect expected_total_bounds =
219 preroll_context()->state_stack.set_preroll_delegate(initial_transform);
220 layer->Preroll(preroll_context());
221 EXPECT_FALSE(preroll_context()->has_platform_view);
222 EXPECT_EQ(mock_layer1->paint_bounds(), child_path1.
GetBounds());
223 EXPECT_EQ(mock_layer2->paint_bounds(), child_path2.
GetBounds());
224 EXPECT_EQ(layer->paint_bounds(), expected_total_bounds);
225 EXPECT_EQ(layer->child_paint_bounds(), layer->paint_bounds());
226 EXPECT_TRUE(mock_layer1->needs_painting(paint_context()));
227 EXPECT_TRUE(mock_layer2->needs_painting(paint_context()));
228 EXPECT_TRUE(layer->needs_painting(paint_context()));
229 EXPECT_EQ(mock_layer1->parent_matrix(), initial_transform);
230 EXPECT_EQ(mock_layer2->parent_matrix(), initial_transform);
231 EXPECT_EQ(mock_layer1->parent_cull_rect(),
kGiantRect);
232 EXPECT_EQ(mock_layer2->parent_cull_rect(),
kGiantRect);
234 layer->Paint(display_list_paint_context());
238 expected_builder.
DrawPath(child_path1, child_paint1);
241 expected_builder.
DrawPath(child_path2, child_paint2);
255 auto cacheable_container_layer1 =
257 auto cacheable_container_layer2 =
259 auto cacheable_container_layer11 =
262 auto cacheable_layer111 =
263 std::make_shared<MockCacheableLayer>(child_path3, paint);
266 auto cacheable_layer21 =
267 std::make_shared<MockCacheableLayer>(child_path1, paint, 2);
281 auto mock_layer1 = std::make_shared<MockLayer>(child_path1, child_paint1);
282 auto mock_layer2 = std::make_shared<MockLayer>(
DlPath(), child_paint2);
283 auto mock_layer3 = std::make_shared<MockLayer>(child_path2, paint);
285 cacheable_container_layer1->Add(mock_layer1);
286 cacheable_container_layer1->Add(mock_layer3);
288 cacheable_container_layer1->Add(cacheable_container_layer11);
289 cacheable_container_layer11->Add(cacheable_layer111);
291 cacheable_container_layer2->Add(cacheable_layer21);
292 auto layer = std::make_shared<ContainerLayer>();
293 layer->Add(cacheable_container_layer1);
294 layer->Add(mock_layer2);
295 layer->Add(cacheable_container_layer2);
301 layer->Preroll(preroll_context());
303 EXPECT_EQ(mock_layer1->paint_bounds(),
305 EXPECT_EQ(mock_layer3->paint_bounds(),
307 EXPECT_EQ(cacheable_layer111->paint_bounds(),
309 EXPECT_EQ(cacheable_container_layer1->paint_bounds(),
313 EXPECT_EQ(preroll_context()->raster_cached_entries->size(),
314 static_cast<unsigned long>(0));
317 use_mock_raster_cache();
318 preroll_context()->raster_cache->BeginFrame();
319 layer->Preroll(preroll_context());
320 preroll_context()->raster_cache->EvictUnusedCacheEntries();
325 EXPECT_EQ(preroll_context()->raster_cached_entries->size(),
326 static_cast<unsigned long>(5));
329 EXPECT_EQ(cacheable_container_layer1->raster_cache_item()->cache_state(),
331 EXPECT_TRUE(raster_cache()->HasEntry(
332 cacheable_container_layer1->raster_cache_item()->GetId().value(),
335 EXPECT_EQ(cacheable_container_layer11->raster_cache_item()->cache_state(),
337 EXPECT_TRUE(raster_cache()->HasEntry(
338 cacheable_container_layer11->raster_cache_item()->GetId().value(),
340 EXPECT_FALSE(raster_cache()->Draw(
341 cacheable_container_layer11->raster_cache_item()->GetId().value(),
342 cache_canvas, &paint));
345 EXPECT_EQ(cacheable_layer111->raster_cache_item()->cache_state(),
348 EXPECT_EQ(cacheable_container_layer2->raster_cache_item()->cache_state(),
350 preroll_context()->raster_cache->EndFrame();
357 preroll_context()->raster_cached_entries->clear();
358 preroll_context()->raster_cache->BeginFrame();
359 layer->Preroll(preroll_context());
360 preroll_context()->raster_cache->EvictUnusedCacheEntries();
365 EXPECT_EQ(preroll_context()->raster_cached_entries->size(),
366 static_cast<unsigned long>(5));
367 EXPECT_EQ(cacheable_container_layer1->raster_cache_item()->cache_state(),
369 EXPECT_TRUE(raster_cache()->HasEntry(
370 cacheable_container_layer1->raster_cache_item()->GetId().value(),
373 EXPECT_EQ(cacheable_container_layer11->raster_cache_item()->cache_state(),
375 EXPECT_TRUE(raster_cache()->HasEntry(
376 cacheable_container_layer11->raster_cache_item()->GetId().value(),
378 EXPECT_FALSE(raster_cache()->Draw(
379 cacheable_container_layer11->raster_cache_item()->GetId().value(),
380 cache_canvas, &paint));
382 EXPECT_EQ(cacheable_container_layer2->raster_cache_item()->cache_state(),
386 EXPECT_EQ(cacheable_layer21->raster_cache_item()->cache_state(),
388 EXPECT_TRUE(raster_cache()->HasEntry(
389 cacheable_layer21->raster_cache_item()->GetId().value(),
391 EXPECT_TRUE(raster_cache()->Draw(
392 cacheable_layer21->raster_cache_item()->GetId().value(), cache_canvas,
394 preroll_context()->raster_cache->EndFrame();
401 preroll_context()->raster_cache->BeginFrame();
402 preroll_context()->raster_cached_entries->clear();
403 layer->Preroll(preroll_context());
404 preroll_context()->raster_cache->EvictUnusedCacheEntries();
408 EXPECT_EQ(preroll_context()->raster_cached_entries->size(),
409 static_cast<unsigned long>(5));
410 EXPECT_EQ(cacheable_container_layer1->raster_cache_item()->cache_state(),
412 EXPECT_TRUE(raster_cache()->HasEntry(
413 cacheable_container_layer1->raster_cache_item()->GetId().value(),
415 EXPECT_TRUE(raster_cache()->HasEntry(
416 cacheable_container_layer11->raster_cache_item()->GetId().value(),
418 EXPECT_FALSE(raster_cache()->Draw(
419 cacheable_container_layer11->raster_cache_item()->GetId().value(),
420 cache_canvas, &paint));
423 EXPECT_TRUE(raster_cache()->HasEntry(
424 cacheable_layer111->raster_cache_item()->GetId().value(),
426 EXPECT_FALSE(raster_cache()->Draw(
427 cacheable_layer111->raster_cache_item()->GetId().value(), cache_canvas,
431 EXPECT_EQ(cacheable_container_layer2->raster_cache_item()->cache_state(),
434 EXPECT_TRUE(raster_cache()->HasEntry(
435 cacheable_layer21->raster_cache_item()->GetId().value(),
437 preroll_context()->raster_cache->EndFrame();
441 preroll_context()->raster_cache->BeginFrame();
443 preroll_context()->raster_cached_entries->clear();
444 layer->Preroll(preroll_context());
445 preroll_context()->raster_cache->EvictUnusedCacheEntries();
448 preroll_context()->raster_cache->EndFrame();
451 preroll_context()->raster_cache->BeginFrame();
452 preroll_context()->raster_cached_entries->clear();
453 layer->Preroll(preroll_context());
456 preroll_context()->raster_cache->EndFrame();
459 preroll_context()->raster_cache->BeginFrame();
460 preroll_context()->raster_cached_entries->clear();
461 layer->Preroll(preroll_context());
464 preroll_context()->raster_cache->EndFrame();