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

Side by Side Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 394113002: Tiling priorities in Android Webview. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 AddDefaultTilingsWithInvalidation(invalidation); 318 AddDefaultTilingsWithInvalidation(invalidation);
319 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); 319 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false);
320 320
321 // UpdateTiles with valid viewport. Should update tile viewport. 321 // UpdateTiles with valid viewport. Should update tile viewport.
322 // Note viewport is considered invalid if and only if in resourceless 322 // Note viewport is considered invalid if and only if in resourceless
323 // software draw. 323 // software draw.
324 bool resourceless_software_draw = false; 324 bool resourceless_software_draw = false;
325 gfx::Rect viewport = gfx::Rect(layer_bounds); 325 gfx::Rect viewport = gfx::Rect(layer_bounds);
326 gfx::Transform transform; 326 gfx::Transform transform;
327 host_impl_.SetExternalDrawConstraints( 327 host_impl_.SetExternalDrawConstraints(
328 transform, viewport, viewport, resourceless_software_draw); 328 transform, viewport, viewport, viewport, resourceless_software_draw);
329 active_layer_->draw_properties().visible_content_rect = viewport; 329 active_layer_->draw_properties().visible_content_rect = viewport;
330 active_layer_->draw_properties().screen_space_transform = transform; 330 active_layer_->draw_properties().screen_space_transform = transform;
331 active_layer_->UpdateTiles(NULL); 331 active_layer_->UpdateTiles(NULL);
332 332
333 gfx::Rect visible_rect_for_tile_priority = 333 gfx::Rect visible_rect_for_tile_priority =
334 active_layer_->visible_rect_for_tile_priority(); 334 active_layer_->visible_rect_for_tile_priority();
335 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); 335 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
336 gfx::Size viewport_size_for_tile_priority = 336 gfx::Rect viewport_rect_for_tile_priority =
337 active_layer_->viewport_size_for_tile_priority(); 337 active_layer_->viewport_rect_for_tile_priority();
338 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); 338 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty());
339 gfx::Transform screen_space_transform_for_tile_priority = 339 gfx::Transform screen_space_transform_for_tile_priority =
340 active_layer_->screen_space_transform_for_tile_priority(); 340 active_layer_->screen_space_transform_for_tile_priority();
341 341
342 // Expand viewport and set it as invalid for prioritizing tiles. 342 // Expand viewport and set it as invalid for prioritizing tiles.
343 // Should not update tile viewport. 343 // Should not update tile viewport.
344 time_ticks += base::TimeDelta::FromMilliseconds(200); 344 time_ticks += base::TimeDelta::FromMilliseconds(200);
345 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 345 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
346 resourceless_software_draw = true; 346 resourceless_software_draw = true;
347 viewport = gfx::ScaleToEnclosingRect(viewport, 2); 347 viewport = gfx::ScaleToEnclosingRect(viewport, 2);
348 transform.Translate(1.f, 1.f); 348 transform.Translate(1.f, 1.f);
349 active_layer_->draw_properties().visible_content_rect = viewport; 349 active_layer_->draw_properties().visible_content_rect = viewport;
350 active_layer_->draw_properties().screen_space_transform = transform; 350 active_layer_->draw_properties().screen_space_transform = transform;
351 host_impl_.SetExternalDrawConstraints( 351 host_impl_.SetExternalDrawConstraints(
352 transform, viewport, viewport, resourceless_software_draw); 352 transform, viewport, viewport, viewport, resourceless_software_draw);
353 active_layer_->UpdateTiles(NULL); 353 active_layer_->UpdateTiles(NULL);
354 354
355 EXPECT_RECT_EQ(visible_rect_for_tile_priority, 355 EXPECT_RECT_EQ(visible_rect_for_tile_priority,
356 active_layer_->visible_rect_for_tile_priority()); 356 active_layer_->visible_rect_for_tile_priority());
357 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, 357 EXPECT_RECT_EQ(viewport_rect_for_tile_priority,
358 active_layer_->viewport_size_for_tile_priority()); 358 active_layer_->viewport_rect_for_tile_priority());
359 EXPECT_TRANSFORMATION_MATRIX_EQ( 359 EXPECT_TRANSFORMATION_MATRIX_EQ(
360 screen_space_transform_for_tile_priority, 360 screen_space_transform_for_tile_priority,
361 active_layer_->screen_space_transform_for_tile_priority()); 361 active_layer_->screen_space_transform_for_tile_priority());
362 362
363 // Keep expanded viewport but mark it valid. Should update tile viewport. 363 // Keep expanded viewport but mark it valid. Should update tile viewport.
364 time_ticks += base::TimeDelta::FromMilliseconds(200); 364 time_ticks += base::TimeDelta::FromMilliseconds(200);
365 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 365 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
366 resourceless_software_draw = false; 366 resourceless_software_draw = false;
367 host_impl_.SetExternalDrawConstraints( 367 host_impl_.SetExternalDrawConstraints(
368 transform, viewport, viewport, resourceless_software_draw); 368 transform, viewport, viewport, viewport, resourceless_software_draw);
369 active_layer_->UpdateTiles(NULL); 369 active_layer_->UpdateTiles(NULL);
370 370
371 EXPECT_FALSE(visible_rect_for_tile_priority == 371 EXPECT_FALSE(visible_rect_for_tile_priority ==
372 active_layer_->visible_rect_for_tile_priority()); 372 active_layer_->visible_rect_for_tile_priority());
373 EXPECT_FALSE(viewport_size_for_tile_priority == 373 EXPECT_FALSE(viewport_rect_for_tile_priority ==
374 active_layer_->viewport_size_for_tile_priority()); 374 active_layer_->viewport_rect_for_tile_priority());
375 EXPECT_FALSE(screen_space_transform_for_tile_priority == 375 EXPECT_FALSE(screen_space_transform_for_tile_priority ==
376 active_layer_->screen_space_transform_for_tile_priority()); 376 active_layer_->screen_space_transform_for_tile_priority());
377 } 377 }
378 378
379 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) { 379 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) {
380 base::TimeTicks time_ticks; 380 base::TimeTicks time_ticks;
381 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 381 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
382 382
383 gfx::Size tile_size(100, 100); 383 gfx::Size tile_size(100, 100);
384 gfx::Size layer_bounds(400, 400); 384 gfx::Size layer_bounds(400, 400);
385 385
386 scoped_refptr<FakePicturePileImpl> pending_pile = 386 scoped_refptr<FakePicturePileImpl> pending_pile =
387 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 387 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
388 scoped_refptr<FakePicturePileImpl> active_pile = 388 scoped_refptr<FakePicturePileImpl> active_pile =
389 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 389 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
390 390
391 SetupTrees(pending_pile, active_pile); 391 SetupTrees(pending_pile, active_pile);
392 392
393 Region invalidation; 393 Region invalidation;
394 AddDefaultTilingsWithInvalidation(invalidation); 394 AddDefaultTilingsWithInvalidation(invalidation);
395 395
396 bool resourceless_software_draw = true; 396 bool resourceless_software_draw = true;
397 gfx::Rect viewport = gfx::Rect(layer_bounds); 397 gfx::Rect viewport = gfx::Rect(layer_bounds);
398 host_impl_.SetExternalDrawConstraints( 398 host_impl_.SetExternalDrawConstraints(gfx::Transform(),
399 gfx::Transform(), viewport, viewport, resourceless_software_draw); 399 viewport,
400 viewport,
401 viewport,
402 resourceless_software_draw);
400 ResetTilingsAndRasterScales(); 403 ResetTilingsAndRasterScales();
401 host_impl_.pending_tree()->UpdateDrawProperties(); 404 host_impl_.pending_tree()->UpdateDrawProperties();
402 host_impl_.active_tree()->UpdateDrawProperties(); 405 host_impl_.active_tree()->UpdateDrawProperties();
403 EXPECT_TRUE(active_layer_->HighResTiling()); 406 EXPECT_TRUE(active_layer_->HighResTiling());
404 407
405 size_t num_tilings = active_layer_->num_tilings(); 408 size_t num_tilings = active_layer_->num_tilings();
406 active_layer_->UpdateTiles(NULL); 409 active_layer_->UpdateTiles(NULL);
407 pending_layer_->AddTiling(0.5f); 410 pending_layer_->AddTiling(0.5f);
408 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); 411 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings());
409 } 412 }
(...skipping 2099 matching lines...) Expand 10 before | Expand all | Expand 10 after
2509 AddDefaultTilingsWithInvalidation(invalidation); 2512 AddDefaultTilingsWithInvalidation(invalidation);
2510 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); 2513 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false);
2511 2514
2512 // UpdateTiles with valid viewport. Should update tile viewport. 2515 // UpdateTiles with valid viewport. Should update tile viewport.
2513 // Note viewport is considered invalid if and only if in resourceless 2516 // Note viewport is considered invalid if and only if in resourceless
2514 // software draw. 2517 // software draw.
2515 bool resourceless_software_draw = false; 2518 bool resourceless_software_draw = false;
2516 gfx::Rect viewport = gfx::Rect(layer_bounds); 2519 gfx::Rect viewport = gfx::Rect(layer_bounds);
2517 gfx::Transform transform; 2520 gfx::Transform transform;
2518 host_impl_.SetExternalDrawConstraints( 2521 host_impl_.SetExternalDrawConstraints(
2519 transform, viewport, viewport, resourceless_software_draw); 2522 transform, viewport, viewport, viewport, resourceless_software_draw);
2520 active_layer_->draw_properties().visible_content_rect = viewport; 2523 active_layer_->draw_properties().visible_content_rect = viewport;
2521 active_layer_->draw_properties().screen_space_transform = transform; 2524 active_layer_->draw_properties().screen_space_transform = transform;
2522 active_layer_->UpdateTiles(NULL); 2525 active_layer_->UpdateTiles(NULL);
2523 2526
2524 gfx::Rect visible_rect_for_tile_priority = 2527 gfx::Rect visible_rect_for_tile_priority =
2525 active_layer_->visible_rect_for_tile_priority(); 2528 active_layer_->visible_rect_for_tile_priority();
2526 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); 2529 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
2527 gfx::Size viewport_size_for_tile_priority = 2530 gfx::Rect viewport_rect_for_tile_priority =
2528 active_layer_->viewport_size_for_tile_priority(); 2531 active_layer_->viewport_rect_for_tile_priority();
2529 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); 2532 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty());
2530 gfx::Transform screen_space_transform_for_tile_priority = 2533 gfx::Transform screen_space_transform_for_tile_priority =
2531 active_layer_->screen_space_transform_for_tile_priority(); 2534 active_layer_->screen_space_transform_for_tile_priority();
2532 2535
2533 // Expand viewport and set it as invalid for prioritizing tiles. 2536 // Expand viewport and set it as invalid for prioritizing tiles.
2534 // Should not update tile viewport. 2537 // Should not update tile viewport.
2535 time_ticks += base::TimeDelta::FromMilliseconds(200); 2538 time_ticks += base::TimeDelta::FromMilliseconds(200);
2536 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 2539 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
2537 resourceless_software_draw = true; 2540 resourceless_software_draw = true;
2538 viewport = gfx::ScaleToEnclosingRect(viewport, 2); 2541 viewport = gfx::ScaleToEnclosingRect(viewport, 2);
2539 transform.Translate(1.f, 1.f); 2542 transform.Translate(1.f, 1.f);
2540 active_layer_->draw_properties().visible_content_rect = viewport; 2543 active_layer_->draw_properties().visible_content_rect = viewport;
2541 active_layer_->draw_properties().screen_space_transform = transform; 2544 active_layer_->draw_properties().screen_space_transform = transform;
2542 host_impl_.SetExternalDrawConstraints( 2545 host_impl_.SetExternalDrawConstraints(
2543 transform, viewport, viewport, resourceless_software_draw); 2546 transform, viewport, viewport, viewport, resourceless_software_draw);
2544 active_layer_->UpdateTiles(NULL); 2547 active_layer_->UpdateTiles(NULL);
2545 2548
2546 EXPECT_RECT_EQ(visible_rect_for_tile_priority, 2549 EXPECT_RECT_EQ(visible_rect_for_tile_priority,
2547 active_layer_->visible_rect_for_tile_priority()); 2550 active_layer_->visible_rect_for_tile_priority());
2548 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, 2551 EXPECT_RECT_EQ(viewport_rect_for_tile_priority,
2549 active_layer_->viewport_size_for_tile_priority()); 2552 active_layer_->viewport_rect_for_tile_priority());
2550 EXPECT_TRANSFORMATION_MATRIX_EQ( 2553 EXPECT_TRANSFORMATION_MATRIX_EQ(
2551 screen_space_transform_for_tile_priority, 2554 screen_space_transform_for_tile_priority,
2552 active_layer_->screen_space_transform_for_tile_priority()); 2555 active_layer_->screen_space_transform_for_tile_priority());
2553 2556
2554 // Keep expanded viewport but mark it valid. Should update tile viewport. 2557 // Keep expanded viewport but mark it valid. Should update tile viewport.
2555 time_ticks += base::TimeDelta::FromMilliseconds(200); 2558 time_ticks += base::TimeDelta::FromMilliseconds(200);
2556 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 2559 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
2557 resourceless_software_draw = false; 2560 resourceless_software_draw = false;
2558 host_impl_.SetExternalDrawConstraints( 2561 host_impl_.SetExternalDrawConstraints(
2559 transform, viewport, viewport, resourceless_software_draw); 2562 transform, viewport, viewport, viewport, resourceless_software_draw);
2560 active_layer_->UpdateTiles(NULL); 2563 active_layer_->UpdateTiles(NULL);
2561 2564
2562 EXPECT_FALSE(visible_rect_for_tile_priority == 2565 EXPECT_FALSE(visible_rect_for_tile_priority ==
2563 active_layer_->visible_rect_for_tile_priority()); 2566 active_layer_->visible_rect_for_tile_priority());
2564 EXPECT_FALSE(viewport_size_for_tile_priority == 2567 EXPECT_FALSE(viewport_rect_for_tile_priority ==
2565 active_layer_->viewport_size_for_tile_priority()); 2568 active_layer_->viewport_rect_for_tile_priority());
2566 EXPECT_FALSE(screen_space_transform_for_tile_priority == 2569 EXPECT_FALSE(screen_space_transform_for_tile_priority ==
2567 active_layer_->screen_space_transform_for_tile_priority()); 2570 active_layer_->screen_space_transform_for_tile_priority());
2568 } 2571 }
2569 2572
2570 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) { 2573 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) {
2571 base::TimeTicks time_ticks; 2574 base::TimeTicks time_ticks;
2572 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 2575 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
2573 2576
2574 gfx::Size tile_size(100, 100); 2577 gfx::Size tile_size(100, 100);
2575 gfx::Size layer_bounds(400, 400); 2578 gfx::Size layer_bounds(400, 400);
2576 2579
2577 scoped_refptr<FakePicturePileImpl> pending_pile = 2580 scoped_refptr<FakePicturePileImpl> pending_pile =
2578 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 2581 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
2579 scoped_refptr<FakePicturePileImpl> active_pile = 2582 scoped_refptr<FakePicturePileImpl> active_pile =
2580 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 2583 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
2581 2584
2582 SetupTrees(pending_pile, active_pile); 2585 SetupTrees(pending_pile, active_pile);
2583 2586
2584 Region invalidation; 2587 Region invalidation;
2585 AddDefaultTilingsWithInvalidation(invalidation); 2588 AddDefaultTilingsWithInvalidation(invalidation);
2586 2589
2587 bool resourceless_software_draw = true; 2590 bool resourceless_software_draw = true;
2588 gfx::Rect viewport = gfx::Rect(layer_bounds); 2591 gfx::Rect viewport = gfx::Rect(layer_bounds);
2589 host_impl_.SetExternalDrawConstraints( 2592 host_impl_.SetExternalDrawConstraints(gfx::Transform(),
2590 gfx::Transform(), viewport, viewport, resourceless_software_draw); 2593 viewport,
2594 viewport,
2595 viewport,
2596 resourceless_software_draw);
2591 ResetTilingsAndRasterScales(); 2597 ResetTilingsAndRasterScales();
2592 host_impl_.pending_tree()->UpdateDrawProperties(); 2598 host_impl_.pending_tree()->UpdateDrawProperties();
2593 host_impl_.active_tree()->UpdateDrawProperties(); 2599 host_impl_.active_tree()->UpdateDrawProperties();
2594 EXPECT_TRUE(active_layer_->HighResTiling()); 2600 EXPECT_TRUE(active_layer_->HighResTiling());
2595 2601
2596 size_t num_tilings = active_layer_->num_tilings(); 2602 size_t num_tilings = active_layer_->num_tilings();
2597 active_layer_->UpdateTiles(NULL); 2603 active_layer_->UpdateTiles(NULL);
2598 pending_layer_->AddTiling(0.5f); 2604 pending_layer_->AddTiling(0.5f);
2599 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); 2605 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings());
2600 } 2606 }
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after
3306 // Unshared tiles are occluded on the active tree iff they lie beneath 3312 // Unshared tiles are occluded on the active tree iff they lie beneath
3307 // the occluding layer. 3313 // the occluding layer.
3308 EXPECT_EQ(tile->is_occluded(ACTIVE_TREE), 3314 EXPECT_EQ(tile->is_occluded(ACTIVE_TREE),
3309 scaled_content_rect.x() >= occluding_layer_position.x()); 3315 scaled_content_rect.x() >= occluding_layer_position.x());
3310 } 3316 }
3311 } 3317 }
3312 } 3318 }
3313 } 3319 }
3314 } // namespace 3320 } // namespace
3315 } // namespace cc 3321 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698