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

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 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 Region invalidation; 317 Region invalidation;
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(transform,
328 transform, viewport, viewport, resourceless_software_draw); 328 viewport,
329 viewport,
330 viewport,
331 transform,
332 resourceless_software_draw);
329 active_layer_->draw_properties().visible_content_rect = viewport; 333 active_layer_->draw_properties().visible_content_rect = viewport;
330 active_layer_->draw_properties().screen_space_transform = transform; 334 active_layer_->draw_properties().screen_space_transform = transform;
331 active_layer_->UpdateTiles(NULL); 335 active_layer_->UpdateTiles(NULL);
332 336
333 gfx::Rect visible_rect_for_tile_priority = 337 gfx::Rect visible_rect_for_tile_priority =
334 active_layer_->visible_rect_for_tile_priority(); 338 active_layer_->visible_rect_for_tile_priority();
335 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); 339 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
336 gfx::Size viewport_size_for_tile_priority = 340 gfx::Rect viewport_rect_for_tile_priority =
337 active_layer_->viewport_size_for_tile_priority(); 341 active_layer_->viewport_rect_for_tile_priority();
338 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); 342 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty());
339 gfx::Transform screen_space_transform_for_tile_priority = 343 gfx::Transform screen_space_transform_for_tile_priority =
340 active_layer_->screen_space_transform_for_tile_priority(); 344 active_layer_->screen_space_transform_for_tile_priority();
341 345
342 // Expand viewport and set it as invalid for prioritizing tiles. 346 // Expand viewport and set it as invalid for prioritizing tiles.
343 // Should not update tile viewport. 347 // Should not update tile viewport.
344 time_ticks += base::TimeDelta::FromMilliseconds(200); 348 time_ticks += base::TimeDelta::FromMilliseconds(200);
345 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 349 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
346 resourceless_software_draw = true; 350 resourceless_software_draw = true;
347 viewport = gfx::ScaleToEnclosingRect(viewport, 2); 351 viewport = gfx::ScaleToEnclosingRect(viewport, 2);
348 transform.Translate(1.f, 1.f); 352 transform.Translate(1.f, 1.f);
349 active_layer_->draw_properties().visible_content_rect = viewport; 353 active_layer_->draw_properties().visible_content_rect = viewport;
350 active_layer_->draw_properties().screen_space_transform = transform; 354 active_layer_->draw_properties().screen_space_transform = transform;
351 host_impl_.SetExternalDrawConstraints( 355 host_impl_.SetExternalDrawConstraints(transform,
352 transform, viewport, viewport, resourceless_software_draw); 356 viewport,
357 viewport,
358 viewport,
359 transform,
360 resourceless_software_draw);
353 active_layer_->UpdateTiles(NULL); 361 active_layer_->UpdateTiles(NULL);
354 362
355 EXPECT_RECT_EQ(visible_rect_for_tile_priority, 363 EXPECT_RECT_EQ(visible_rect_for_tile_priority,
356 active_layer_->visible_rect_for_tile_priority()); 364 active_layer_->visible_rect_for_tile_priority());
357 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, 365 EXPECT_RECT_EQ(viewport_rect_for_tile_priority,
358 active_layer_->viewport_size_for_tile_priority()); 366 active_layer_->viewport_rect_for_tile_priority());
359 EXPECT_TRANSFORMATION_MATRIX_EQ( 367 EXPECT_TRANSFORMATION_MATRIX_EQ(
360 screen_space_transform_for_tile_priority, 368 screen_space_transform_for_tile_priority,
361 active_layer_->screen_space_transform_for_tile_priority()); 369 active_layer_->screen_space_transform_for_tile_priority());
362 370
363 // Keep expanded viewport but mark it valid. Should update tile viewport. 371 // Keep expanded viewport but mark it valid. Should update tile viewport.
364 time_ticks += base::TimeDelta::FromMilliseconds(200); 372 time_ticks += base::TimeDelta::FromMilliseconds(200);
365 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 373 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
366 resourceless_software_draw = false; 374 resourceless_software_draw = false;
367 host_impl_.SetExternalDrawConstraints( 375 host_impl_.SetExternalDrawConstraints(transform,
368 transform, viewport, viewport, resourceless_software_draw); 376 viewport,
377 viewport,
378 viewport,
379 transform,
380 resourceless_software_draw);
369 active_layer_->UpdateTiles(NULL); 381 active_layer_->UpdateTiles(NULL);
370 382
371 EXPECT_FALSE(visible_rect_for_tile_priority == 383 EXPECT_FALSE(visible_rect_for_tile_priority ==
372 active_layer_->visible_rect_for_tile_priority()); 384 active_layer_->visible_rect_for_tile_priority());
373 EXPECT_FALSE(viewport_size_for_tile_priority == 385 EXPECT_FALSE(viewport_rect_for_tile_priority ==
374 active_layer_->viewport_size_for_tile_priority()); 386 active_layer_->viewport_rect_for_tile_priority());
375 EXPECT_FALSE(screen_space_transform_for_tile_priority == 387 EXPECT_FALSE(screen_space_transform_for_tile_priority ==
376 active_layer_->screen_space_transform_for_tile_priority()); 388 active_layer_->screen_space_transform_for_tile_priority());
377 } 389 }
378 390
379 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) { 391 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) {
380 base::TimeTicks time_ticks; 392 base::TimeTicks time_ticks;
381 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 393 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
382 394
383 gfx::Size tile_size(100, 100); 395 gfx::Size tile_size(100, 100);
384 gfx::Size layer_bounds(400, 400); 396 gfx::Size layer_bounds(400, 400);
385 397
386 scoped_refptr<FakePicturePileImpl> pending_pile = 398 scoped_refptr<FakePicturePileImpl> pending_pile =
387 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 399 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
388 scoped_refptr<FakePicturePileImpl> active_pile = 400 scoped_refptr<FakePicturePileImpl> active_pile =
389 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 401 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
390 402
391 SetupTrees(pending_pile, active_pile); 403 SetupTrees(pending_pile, active_pile);
392 404
393 Region invalidation; 405 Region invalidation;
394 AddDefaultTilingsWithInvalidation(invalidation); 406 AddDefaultTilingsWithInvalidation(invalidation);
395 407
396 bool resourceless_software_draw = true; 408 bool resourceless_software_draw = true;
397 gfx::Rect viewport = gfx::Rect(layer_bounds); 409 gfx::Rect viewport = gfx::Rect(layer_bounds);
398 host_impl_.SetExternalDrawConstraints( 410 gfx::Transform identity = gfx::Transform();
399 gfx::Transform(), viewport, viewport, resourceless_software_draw); 411 host_impl_.SetExternalDrawConstraints(identity,
412 viewport,
413 viewport,
414 viewport,
415 identity,
416 resourceless_software_draw);
400 ResetTilingsAndRasterScales(); 417 ResetTilingsAndRasterScales();
401 host_impl_.pending_tree()->UpdateDrawProperties(); 418 host_impl_.pending_tree()->UpdateDrawProperties();
402 host_impl_.active_tree()->UpdateDrawProperties(); 419 host_impl_.active_tree()->UpdateDrawProperties();
403 EXPECT_TRUE(active_layer_->HighResTiling()); 420 EXPECT_TRUE(active_layer_->HighResTiling());
404 421
405 size_t num_tilings = active_layer_->num_tilings(); 422 size_t num_tilings = active_layer_->num_tilings();
406 active_layer_->UpdateTiles(NULL); 423 active_layer_->UpdateTiles(NULL);
407 pending_layer_->AddTiling(0.5f); 424 pending_layer_->AddTiling(0.5f);
408 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); 425 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings());
409 } 426 }
(...skipping 2098 matching lines...) Expand 10 before | Expand all | Expand 10 after
2508 Region invalidation; 2525 Region invalidation;
2509 AddDefaultTilingsWithInvalidation(invalidation); 2526 AddDefaultTilingsWithInvalidation(invalidation);
2510 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); 2527 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false);
2511 2528
2512 // UpdateTiles with valid viewport. Should update tile viewport. 2529 // UpdateTiles with valid viewport. Should update tile viewport.
2513 // Note viewport is considered invalid if and only if in resourceless 2530 // Note viewport is considered invalid if and only if in resourceless
2514 // software draw. 2531 // software draw.
2515 bool resourceless_software_draw = false; 2532 bool resourceless_software_draw = false;
2516 gfx::Rect viewport = gfx::Rect(layer_bounds); 2533 gfx::Rect viewport = gfx::Rect(layer_bounds);
2517 gfx::Transform transform; 2534 gfx::Transform transform;
2518 host_impl_.SetExternalDrawConstraints( 2535 host_impl_.SetExternalDrawConstraints(transform,
2519 transform, viewport, viewport, resourceless_software_draw); 2536 viewport,
2537 viewport,
2538 viewport,
2539 transform,
2540 resourceless_software_draw);
2520 active_layer_->draw_properties().visible_content_rect = viewport; 2541 active_layer_->draw_properties().visible_content_rect = viewport;
2521 active_layer_->draw_properties().screen_space_transform = transform; 2542 active_layer_->draw_properties().screen_space_transform = transform;
2522 active_layer_->UpdateTiles(NULL); 2543 active_layer_->UpdateTiles(NULL);
2523 2544
2524 gfx::Rect visible_rect_for_tile_priority = 2545 gfx::Rect visible_rect_for_tile_priority =
2525 active_layer_->visible_rect_for_tile_priority(); 2546 active_layer_->visible_rect_for_tile_priority();
2526 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); 2547 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
2527 gfx::Size viewport_size_for_tile_priority = 2548 gfx::Rect viewport_rect_for_tile_priority =
2528 active_layer_->viewport_size_for_tile_priority(); 2549 active_layer_->viewport_rect_for_tile_priority();
2529 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); 2550 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty());
2530 gfx::Transform screen_space_transform_for_tile_priority = 2551 gfx::Transform screen_space_transform_for_tile_priority =
2531 active_layer_->screen_space_transform_for_tile_priority(); 2552 active_layer_->screen_space_transform_for_tile_priority();
2532 2553
2533 // Expand viewport and set it as invalid for prioritizing tiles. 2554 // Expand viewport and set it as invalid for prioritizing tiles.
2534 // Should not update tile viewport. 2555 // Should not update tile viewport.
2535 time_ticks += base::TimeDelta::FromMilliseconds(200); 2556 time_ticks += base::TimeDelta::FromMilliseconds(200);
2536 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 2557 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
2537 resourceless_software_draw = true; 2558 resourceless_software_draw = true;
2538 viewport = gfx::ScaleToEnclosingRect(viewport, 2); 2559 viewport = gfx::ScaleToEnclosingRect(viewport, 2);
2539 transform.Translate(1.f, 1.f); 2560 transform.Translate(1.f, 1.f);
2540 active_layer_->draw_properties().visible_content_rect = viewport; 2561 active_layer_->draw_properties().visible_content_rect = viewport;
2541 active_layer_->draw_properties().screen_space_transform = transform; 2562 active_layer_->draw_properties().screen_space_transform = transform;
2542 host_impl_.SetExternalDrawConstraints( 2563 host_impl_.SetExternalDrawConstraints(transform,
2543 transform, viewport, viewport, resourceless_software_draw); 2564 viewport,
2565 viewport,
2566 viewport,
2567 transform,
2568 resourceless_software_draw);
2544 active_layer_->UpdateTiles(NULL); 2569 active_layer_->UpdateTiles(NULL);
2545 2570
2546 EXPECT_RECT_EQ(visible_rect_for_tile_priority, 2571 EXPECT_RECT_EQ(visible_rect_for_tile_priority,
2547 active_layer_->visible_rect_for_tile_priority()); 2572 active_layer_->visible_rect_for_tile_priority());
2548 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, 2573 EXPECT_RECT_EQ(viewport_rect_for_tile_priority,
2549 active_layer_->viewport_size_for_tile_priority()); 2574 active_layer_->viewport_rect_for_tile_priority());
2550 EXPECT_TRANSFORMATION_MATRIX_EQ( 2575 EXPECT_TRANSFORMATION_MATRIX_EQ(
2551 screen_space_transform_for_tile_priority, 2576 screen_space_transform_for_tile_priority,
2552 active_layer_->screen_space_transform_for_tile_priority()); 2577 active_layer_->screen_space_transform_for_tile_priority());
2553 2578
2554 // Keep expanded viewport but mark it valid. Should update tile viewport. 2579 // Keep expanded viewport but mark it valid. Should update tile viewport.
2555 time_ticks += base::TimeDelta::FromMilliseconds(200); 2580 time_ticks += base::TimeDelta::FromMilliseconds(200);
2556 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 2581 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
2557 resourceless_software_draw = false; 2582 resourceless_software_draw = false;
2558 host_impl_.SetExternalDrawConstraints( 2583 host_impl_.SetExternalDrawConstraints(transform,
2559 transform, viewport, viewport, resourceless_software_draw); 2584 viewport,
2585 viewport,
2586 viewport,
2587 transform,
2588 resourceless_software_draw);
2560 active_layer_->UpdateTiles(NULL); 2589 active_layer_->UpdateTiles(NULL);
2561 2590
2562 EXPECT_FALSE(visible_rect_for_tile_priority == 2591 EXPECT_FALSE(visible_rect_for_tile_priority ==
2563 active_layer_->visible_rect_for_tile_priority()); 2592 active_layer_->visible_rect_for_tile_priority());
2564 EXPECT_FALSE(viewport_size_for_tile_priority == 2593 EXPECT_FALSE(viewport_rect_for_tile_priority ==
2565 active_layer_->viewport_size_for_tile_priority()); 2594 active_layer_->viewport_rect_for_tile_priority());
2566 EXPECT_FALSE(screen_space_transform_for_tile_priority == 2595 EXPECT_FALSE(screen_space_transform_for_tile_priority ==
2567 active_layer_->screen_space_transform_for_tile_priority()); 2596 active_layer_->screen_space_transform_for_tile_priority());
2568 } 2597 }
2569 2598
2570 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) { 2599 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) {
2571 base::TimeTicks time_ticks; 2600 base::TimeTicks time_ticks;
2572 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 2601 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
2573 2602
2574 gfx::Size tile_size(100, 100); 2603 gfx::Size tile_size(100, 100);
2575 gfx::Size layer_bounds(400, 400); 2604 gfx::Size layer_bounds(400, 400);
2576 2605
2577 scoped_refptr<FakePicturePileImpl> pending_pile = 2606 scoped_refptr<FakePicturePileImpl> pending_pile =
2578 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 2607 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
2579 scoped_refptr<FakePicturePileImpl> active_pile = 2608 scoped_refptr<FakePicturePileImpl> active_pile =
2580 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 2609 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
2581 2610
2582 SetupTrees(pending_pile, active_pile); 2611 SetupTrees(pending_pile, active_pile);
2583 2612
2584 Region invalidation; 2613 Region invalidation;
2585 AddDefaultTilingsWithInvalidation(invalidation); 2614 AddDefaultTilingsWithInvalidation(invalidation);
2586 2615
2587 bool resourceless_software_draw = true; 2616 bool resourceless_software_draw = true;
2588 gfx::Rect viewport = gfx::Rect(layer_bounds); 2617 gfx::Rect viewport = gfx::Rect(layer_bounds);
2589 host_impl_.SetExternalDrawConstraints( 2618 gfx::Transform identity = gfx::Transform();
2590 gfx::Transform(), viewport, viewport, resourceless_software_draw); 2619 host_impl_.SetExternalDrawConstraints(identity,
2620 viewport,
2621 viewport,
2622 viewport,
2623 identity,
2624 resourceless_software_draw);
2591 ResetTilingsAndRasterScales(); 2625 ResetTilingsAndRasterScales();
2592 host_impl_.pending_tree()->UpdateDrawProperties(); 2626 host_impl_.pending_tree()->UpdateDrawProperties();
2593 host_impl_.active_tree()->UpdateDrawProperties(); 2627 host_impl_.active_tree()->UpdateDrawProperties();
2594 EXPECT_TRUE(active_layer_->HighResTiling()); 2628 EXPECT_TRUE(active_layer_->HighResTiling());
2595 2629
2596 size_t num_tilings = active_layer_->num_tilings(); 2630 size_t num_tilings = active_layer_->num_tilings();
2597 active_layer_->UpdateTiles(NULL); 2631 active_layer_->UpdateTiles(NULL);
2598 pending_layer_->AddTiling(0.5f); 2632 pending_layer_->AddTiling(0.5f);
2599 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); 2633 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings());
2600 } 2634 }
(...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 3340 // Unshared tiles are occluded on the active tree iff they lie beneath
3307 // the occluding layer. 3341 // the occluding layer.
3308 EXPECT_EQ(tile->is_occluded(ACTIVE_TREE), 3342 EXPECT_EQ(tile->is_occluded(ACTIVE_TREE),
3309 scaled_content_rect.x() >= occluding_layer_position.x()); 3343 scaled_content_rect.x() >= occluding_layer_position.x());
3310 } 3344 }
3311 } 3345 }
3312 } 3346 }
3313 } 3347 }
3314 } // namespace 3348 } // namespace
3315 } // namespace cc 3349 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698