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

Side by Side Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 13637017: Delete layout_viewport_size. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Android Created 7 years, 8 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_perftest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 76
77 virtual void SetUp() OVERRIDE { 77 virtual void SetUp() OVERRIDE {
78 LayerTreeSettings settings; 78 LayerTreeSettings settings;
79 settings.minimum_occlusion_tracking_size = gfx::Size(); 79 settings.minimum_occlusion_tracking_size = gfx::Size();
80 80
81 host_impl_ = LayerTreeHostImpl::Create(settings, 81 host_impl_ = LayerTreeHostImpl::Create(settings,
82 this, 82 this,
83 &proxy_, 83 &proxy_,
84 &stats_instrumentation_); 84 &stats_instrumentation_);
85 host_impl_->InitializeRenderer(CreateOutputSurface()); 85 host_impl_->InitializeRenderer(CreateOutputSurface());
86 host_impl_->SetViewportSize(gfx::Size(10, 10), gfx::Size(10, 10)); 86 host_impl_->SetViewportSize(gfx::Size(10, 10));
87 } 87 }
88 88
89 virtual void TearDown() OVERRIDE {} 89 virtual void TearDown() OVERRIDE {}
90 90
91 virtual void DidLoseOutputSurfaceOnImplThread() OVERRIDE {} 91 virtual void DidLoseOutputSurfaceOnImplThread() OVERRIDE {}
92 virtual void OnSwapBuffersCompleteOnImplThread() OVERRIDE {} 92 virtual void OnSwapBuffersCompleteOnImplThread() OVERRIDE {}
93 virtual void OnVSyncParametersChanged(base::TimeTicks timebase, 93 virtual void OnVSyncParametersChanged(base::TimeTicks timebase,
94 base::TimeDelta interval) OVERRIDE {} 94 base::TimeDelta interval) OVERRIDE {}
95 virtual void DidVSync(base::TimeTicks frame_time) OVERRIDE {} 95 virtual void DidVSync(base::TimeTicks frame_time) OVERRIDE {}
96 virtual void OnCanDrawStateChanged(bool can_draw) OVERRIDE { 96 virtual void OnCanDrawStateChanged(bool can_draw) OVERRIDE {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 LayerTreeSettings settings; 132 LayerTreeSettings settings;
133 settings.minimum_occlusion_tracking_size = gfx::Size(); 133 settings.minimum_occlusion_tracking_size = gfx::Size();
134 settings.partial_swap_enabled = partial_swap; 134 settings.partial_swap_enabled = partial_swap;
135 135
136 host_impl_ = LayerTreeHostImpl::Create(settings, 136 host_impl_ = LayerTreeHostImpl::Create(settings,
137 this, 137 this,
138 &proxy_, 138 &proxy_,
139 &stats_instrumentation_); 139 &stats_instrumentation_);
140 140
141 host_impl_->InitializeRenderer(output_surface.Pass()); 141 host_impl_->InitializeRenderer(output_surface.Pass());
142 host_impl_->SetViewportSize(gfx::Size(10, 10), gfx::Size(10, 10)); 142 host_impl_->SetViewportSize(gfx::Size(10, 10));
143 } 143 }
144 144
145 void SetupRootLayerImpl(scoped_ptr<LayerImpl> root) { 145 void SetupRootLayerImpl(scoped_ptr<LayerImpl> root) {
146 root->SetAnchorPoint(gfx::PointF()); 146 root->SetAnchorPoint(gfx::PointF());
147 root->SetPosition(gfx::PointF()); 147 root->SetPosition(gfx::PointF());
148 root->SetBounds(gfx::Size(10, 10)); 148 root->SetBounds(gfx::Size(10, 10));
149 root->SetContentBounds(gfx::Size(10, 10)); 149 root->SetContentBounds(gfx::Size(10, 10));
150 root->SetDrawsContent(true); 150 root->SetDrawsContent(true);
151 root->draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); 151 root->draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10);
152 host_impl_->active_tree()->SetRootLayer(root.Pass()); 152 host_impl_->active_tree()->SetRootLayer(root.Pass());
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 EXPECT_FALSE(host_impl_->CanDraw()); 283 EXPECT_FALSE(host_impl_->CanDraw());
284 EXPECT_TRUE(on_can_draw_state_changed_called_); 284 EXPECT_TRUE(on_can_draw_state_changed_called_);
285 on_can_draw_state_changed_called_ = false; 285 on_can_draw_state_changed_called_ = false;
286 286
287 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 287 SetupScrollAndContentsLayers(gfx::Size(100, 100));
288 EXPECT_TRUE(host_impl_->CanDraw()); 288 EXPECT_TRUE(host_impl_->CanDraw());
289 EXPECT_TRUE(on_can_draw_state_changed_called_); 289 EXPECT_TRUE(on_can_draw_state_changed_called_);
290 on_can_draw_state_changed_called_ = false; 290 on_can_draw_state_changed_called_ = false;
291 291
292 // Toggle the device viewport size to make sure it toggles can_draw. 292 // Toggle the device viewport size to make sure it toggles can_draw.
293 host_impl_->SetViewportSize(gfx::Size(100, 100), gfx::Size()); 293 host_impl_->SetViewportSize(gfx::Size());
294 EXPECT_FALSE(host_impl_->CanDraw()); 294 EXPECT_FALSE(host_impl_->CanDraw());
295 EXPECT_TRUE(on_can_draw_state_changed_called_); 295 EXPECT_TRUE(on_can_draw_state_changed_called_);
296 on_can_draw_state_changed_called_ = false; 296 on_can_draw_state_changed_called_ = false;
297 297
298 host_impl_->SetViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); 298 host_impl_->SetViewportSize(gfx::Size(100, 100));
299 EXPECT_TRUE(host_impl_->CanDraw()); 299 EXPECT_TRUE(host_impl_->CanDraw());
300 EXPECT_TRUE(on_can_draw_state_changed_called_); 300 EXPECT_TRUE(on_can_draw_state_changed_called_);
301 on_can_draw_state_changed_called_ = false; 301 on_can_draw_state_changed_called_ = false;
302 302
303 // Toggle contents textures purged without causing any evictions, 303 // Toggle contents textures purged without causing any evictions,
304 // and make sure that it does not change can_draw. 304 // and make sure that it does not change can_draw.
305 set_reduce_memory_result(false); 305 set_reduce_memory_result(false);
306 host_impl_->SetManagedMemoryPolicy(ManagedMemoryPolicy( 306 host_impl_->SetManagedMemoryPolicy(ManagedMemoryPolicy(
307 host_impl_->memory_allocation_limit_bytes() - 1)); 307 host_impl_->memory_allocation_limit_bytes() - 1));
308 EXPECT_TRUE(host_impl_->CanDraw()); 308 EXPECT_TRUE(host_impl_->CanDraw());
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 EXPECT_VECTOR_EQ(root->sent_scroll_delta(), scroll_delta + scroll_delta2); 387 EXPECT_VECTOR_EQ(root->sent_scroll_delta(), scroll_delta + scroll_delta2);
388 ExpectContains(*scroll_info, root->id(), scroll_delta + scroll_delta2); 388 ExpectContains(*scroll_info, root->id(), scroll_delta + scroll_delta2);
389 389
390 root->ScrollBy(gfx::Vector2d()); 390 root->ScrollBy(gfx::Vector2d());
391 scroll_info = host_impl_->ProcessScrollDeltas(); 391 scroll_info = host_impl_->ProcessScrollDeltas();
392 EXPECT_EQ(root->sent_scroll_delta(), scroll_delta + scroll_delta2); 392 EXPECT_EQ(root->sent_scroll_delta(), scroll_delta + scroll_delta2);
393 } 393 }
394 394
395 TEST_F(LayerTreeHostImplTest, ScrollRootCallsCommitAndRedraw) { 395 TEST_F(LayerTreeHostImplTest, ScrollRootCallsCommitAndRedraw) {
396 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 396 SetupScrollAndContentsLayers(gfx::Size(100, 100));
397 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 397 host_impl_->SetViewportSize(gfx::Size(50, 50));
398 InitializeRendererAndDrawFrame(); 398 InitializeRendererAndDrawFrame();
399 399
400 EXPECT_EQ(InputHandlerClient::ScrollStarted, 400 EXPECT_EQ(InputHandlerClient::ScrollStarted,
401 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel)); 401 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel));
402 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 402 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
403 host_impl_->ScrollEnd(); 403 host_impl_->ScrollEnd();
404 EXPECT_TRUE(did_request_redraw_); 404 EXPECT_TRUE(did_request_redraw_);
405 EXPECT_TRUE(did_request_commit_); 405 EXPECT_TRUE(did_request_commit_);
406 } 406 }
407 407
408 TEST_F(LayerTreeHostImplTest, ScrollWithoutRootLayer) { 408 TEST_F(LayerTreeHostImplTest, ScrollWithoutRootLayer) {
409 // We should not crash when trying to scroll an empty layer tree. 409 // We should not crash when trying to scroll an empty layer tree.
410 EXPECT_EQ(InputHandlerClient::ScrollIgnored, 410 EXPECT_EQ(InputHandlerClient::ScrollIgnored,
411 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel)); 411 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel));
412 } 412 }
413 413
414 TEST_F(LayerTreeHostImplTest, ScrollWithoutRenderer) { 414 TEST_F(LayerTreeHostImplTest, ScrollWithoutRenderer) {
415 LayerTreeSettings settings; 415 LayerTreeSettings settings;
416 host_impl_ = LayerTreeHostImpl::Create(settings, 416 host_impl_ = LayerTreeHostImpl::Create(settings,
417 this, 417 this,
418 &proxy_, 418 &proxy_,
419 &stats_instrumentation_); 419 &stats_instrumentation_);
420 420
421 // Initialization will fail here. 421 // Initialization will fail here.
422 host_impl_->InitializeRenderer(FakeOutputSurface::Create3d( 422 host_impl_->InitializeRenderer(FakeOutputSurface::Create3d(
423 scoped_ptr<WebKit::WebGraphicsContext3D>( 423 scoped_ptr<WebKit::WebGraphicsContext3D>(
424 new TestWebGraphicsContext3DMakeCurrentFails)) 424 new TestWebGraphicsContext3DMakeCurrentFails))
425 .PassAs<OutputSurface>()); 425 .PassAs<OutputSurface>());
426 host_impl_->SetViewportSize(gfx::Size(10, 10), gfx::Size(10, 10)); 426 host_impl_->SetViewportSize(gfx::Size(10, 10));
427 427
428 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 428 SetupScrollAndContentsLayers(gfx::Size(100, 100));
429 429
430 // We should not crash when trying to scroll after the renderer initialization 430 // We should not crash when trying to scroll after the renderer initialization
431 // fails. 431 // fails.
432 EXPECT_EQ(InputHandlerClient::ScrollIgnored, 432 EXPECT_EQ(InputHandlerClient::ScrollIgnored,
433 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel)); 433 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel));
434 } 434 }
435 435
436 TEST_F(LayerTreeHostImplTest, ReplaceTreeWhileScrolling) { 436 TEST_F(LayerTreeHostImplTest, ReplaceTreeWhileScrolling) {
437 int scroll_layer_id = 1; 437 int scroll_layer_id = 1;
438 438
439 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 439 SetupScrollAndContentsLayers(gfx::Size(100, 100));
440 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 440 host_impl_->SetViewportSize(gfx::Size(50, 50));
441 InitializeRendererAndDrawFrame(); 441 InitializeRendererAndDrawFrame();
442 442
443 // We should not crash if the tree is replaced while we are scrolling. 443 // We should not crash if the tree is replaced while we are scrolling.
444 EXPECT_EQ(InputHandlerClient::ScrollStarted, 444 EXPECT_EQ(InputHandlerClient::ScrollStarted,
445 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel)); 445 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel));
446 host_impl_->active_tree()->DetachLayerTree(); 446 host_impl_->active_tree()->DetachLayerTree();
447 447
448 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 448 SetupScrollAndContentsLayers(gfx::Size(100, 100));
449 449
450 // We should still be scrolling, because the scrolled layer also exists in the 450 // We should still be scrolling, because the scrolled layer also exists in the
451 // new tree. 451 // new tree.
452 gfx::Vector2d scroll_delta(0, 10); 452 gfx::Vector2d scroll_delta(0, 10);
453 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 453 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
454 host_impl_->ScrollEnd(); 454 host_impl_->ScrollEnd();
455 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 455 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
456 ExpectContains(*scroll_info, scroll_layer_id, scroll_delta); 456 ExpectContains(*scroll_info, scroll_layer_id, scroll_delta);
457 } 457 }
458 458
459 TEST_F(LayerTreeHostImplTest, ClearRootRenderSurfaceAndScroll) { 459 TEST_F(LayerTreeHostImplTest, ClearRootRenderSurfaceAndScroll) {
460 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 460 SetupScrollAndContentsLayers(gfx::Size(100, 100));
461 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 461 host_impl_->SetViewportSize(gfx::Size(50, 50));
462 InitializeRendererAndDrawFrame(); 462 InitializeRendererAndDrawFrame();
463 463
464 // We should be able to scroll even if the root layer loses its render surface 464 // We should be able to scroll even if the root layer loses its render surface
465 // after the most recent render. 465 // after the most recent render.
466 host_impl_->active_tree()->root_layer()->ClearRenderSurface(); 466 host_impl_->active_tree()->root_layer()->ClearRenderSurface();
467 host_impl_->active_tree()->set_needs_update_draw_properties(); 467 host_impl_->active_tree()->set_needs_update_draw_properties();
468 468
469 EXPECT_EQ(InputHandlerClient::ScrollStarted, 469 EXPECT_EQ(InputHandlerClient::ScrollStarted,
470 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel)); 470 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel));
471 } 471 }
472 472
473 TEST_F(LayerTreeHostImplTest, WheelEventHandlers) { 473 TEST_F(LayerTreeHostImplTest, WheelEventHandlers) {
474 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 474 SetupScrollAndContentsLayers(gfx::Size(100, 100));
475 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 475 host_impl_->SetViewportSize(gfx::Size(50, 50));
476 InitializeRendererAndDrawFrame(); 476 InitializeRendererAndDrawFrame();
477 LayerImpl* root = host_impl_->active_tree()->root_layer(); 477 LayerImpl* root = host_impl_->active_tree()->root_layer();
478 478
479 root->SetHaveWheelEventHandlers(true); 479 root->SetHaveWheelEventHandlers(true);
480 480
481 // With registered event handlers, wheel scrolls have to go to the main 481 // With registered event handlers, wheel scrolls have to go to the main
482 // thread. 482 // thread.
483 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread, 483 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread,
484 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel)); 484 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel));
485 485
486 // But gesture scrolls can still be handled. 486 // But gesture scrolls can still be handled.
487 EXPECT_EQ(InputHandlerClient::ScrollStarted, 487 EXPECT_EQ(InputHandlerClient::ScrollStarted,
488 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Gesture)); 488 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Gesture));
489 } 489 }
490 490
491 TEST_F(LayerTreeHostImplTest, ShouldScrollOnMainThread) { 491 TEST_F(LayerTreeHostImplTest, ShouldScrollOnMainThread) {
492 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 492 SetupScrollAndContentsLayers(gfx::Size(100, 100));
493 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 493 host_impl_->SetViewportSize(gfx::Size(50, 50));
494 InitializeRendererAndDrawFrame(); 494 InitializeRendererAndDrawFrame();
495 LayerImpl* root = host_impl_->active_tree()->root_layer(); 495 LayerImpl* root = host_impl_->active_tree()->root_layer();
496 496
497 root->SetShouldScrollOnMainThread(true); 497 root->SetShouldScrollOnMainThread(true);
498 498
499 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread, 499 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread,
500 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel)); 500 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Wheel));
501 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread, 501 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread,
502 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Gesture)); 502 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Gesture));
503 } 503 }
504 504
505 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionBasic) { 505 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionBasic) {
506 SetupScrollAndContentsLayers(gfx::Size(200, 200)); 506 SetupScrollAndContentsLayers(gfx::Size(200, 200));
507 host_impl_->SetViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); 507 host_impl_->SetViewportSize(gfx::Size(100, 100));
508 508
509 LayerImpl* root = host_impl_->active_tree()->root_layer(); 509 LayerImpl* root = host_impl_->active_tree()->root_layer();
510 root->SetContentsScale(2.f, 2.f); 510 root->SetContentsScale(2.f, 2.f);
511 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); 511 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50));
512 512
513 InitializeRendererAndDrawFrame(); 513 InitializeRendererAndDrawFrame();
514 514
515 // All scroll types inside the non-fast scrollable region should fail. 515 // All scroll types inside the non-fast scrollable region should fail.
516 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread, 516 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread,
517 host_impl_->ScrollBegin(gfx::Point(25, 25), 517 host_impl_->ScrollBegin(gfx::Point(25, 25),
(...skipping 10 matching lines...) Expand all
528 host_impl_->ScrollEnd(); 528 host_impl_->ScrollEnd();
529 EXPECT_EQ(InputHandlerClient::ScrollStarted, 529 EXPECT_EQ(InputHandlerClient::ScrollStarted,
530 host_impl_->ScrollBegin(gfx::Point(75, 75), 530 host_impl_->ScrollBegin(gfx::Point(75, 75),
531 InputHandlerClient::Gesture)); 531 InputHandlerClient::Gesture));
532 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 532 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
533 host_impl_->ScrollEnd(); 533 host_impl_->ScrollEnd();
534 } 534 }
535 535
536 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionWithOffset) { 536 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionWithOffset) {
537 SetupScrollAndContentsLayers(gfx::Size(200, 200)); 537 SetupScrollAndContentsLayers(gfx::Size(200, 200));
538 host_impl_->SetViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); 538 host_impl_->SetViewportSize(gfx::Size(100, 100));
539 539
540 LayerImpl* root = host_impl_->active_tree()->root_layer(); 540 LayerImpl* root = host_impl_->active_tree()->root_layer();
541 root->SetContentsScale(2.f, 2.f); 541 root->SetContentsScale(2.f, 2.f);
542 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); 542 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50));
543 root->SetPosition(gfx::PointF(-25.f, 0.f)); 543 root->SetPosition(gfx::PointF(-25.f, 0.f));
544 544
545 InitializeRendererAndDrawFrame(); 545 InitializeRendererAndDrawFrame();
546 546
547 // This point would fall into the non-fast scrollable region except that we've 547 // This point would fall into the non-fast scrollable region except that we've
548 // moved the layer down by 25 pixels. 548 // moved the layer down by 25 pixels.
549 EXPECT_EQ(InputHandlerClient::ScrollStarted, 549 EXPECT_EQ(InputHandlerClient::ScrollStarted,
550 host_impl_->ScrollBegin(gfx::Point(40, 10), 550 host_impl_->ScrollBegin(gfx::Point(40, 10),
551 InputHandlerClient::Wheel)); 551 InputHandlerClient::Wheel));
552 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 1)); 552 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 1));
553 host_impl_->ScrollEnd(); 553 host_impl_->ScrollEnd();
554 554
555 // This point is still inside the non-fast region. 555 // This point is still inside the non-fast region.
556 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread, 556 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread,
557 host_impl_->ScrollBegin(gfx::Point(10, 10), 557 host_impl_->ScrollBegin(gfx::Point(10, 10),
558 InputHandlerClient::Wheel)); 558 InputHandlerClient::Wheel));
559 } 559 }
560 560
561 TEST_F(LayerTreeHostImplTest, ScrollByReturnsCorrectValue) { 561 TEST_F(LayerTreeHostImplTest, ScrollByReturnsCorrectValue) {
562 SetupScrollAndContentsLayers(gfx::Size(200, 200)); 562 SetupScrollAndContentsLayers(gfx::Size(200, 200));
563 host_impl_->SetViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); 563 host_impl_->SetViewportSize(gfx::Size(100, 100));
564 564
565 InitializeRendererAndDrawFrame(); 565 InitializeRendererAndDrawFrame();
566 566
567 EXPECT_EQ(InputHandlerClient::ScrollStarted, 567 EXPECT_EQ(InputHandlerClient::ScrollStarted,
568 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Gesture)); 568 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Gesture));
569 569
570 // Trying to scroll to the left/top will not succeed. 570 // Trying to scroll to the left/top will not succeed.
571 EXPECT_FALSE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, 0))); 571 EXPECT_FALSE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, 0)));
572 EXPECT_FALSE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, -10))); 572 EXPECT_FALSE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, -10)));
573 EXPECT_FALSE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, -10))); 573 EXPECT_FALSE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, -10)));
(...skipping 12 matching lines...) Expand all
586 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(10, -10))); 586 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(10, -10)));
587 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, 0))); 587 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, 0)));
588 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, 10))); 588 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(-10, 10)));
589 589
590 // Trying to scroll more than the available space will also succeed. 590 // Trying to scroll more than the available space will also succeed.
591 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(5000, 5000))); 591 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(5000, 5000)));
592 } 592 }
593 593
594 TEST_F(LayerTreeHostImplTest, ScrollVerticallyByPageReturnsCorrectValue) { 594 TEST_F(LayerTreeHostImplTest, ScrollVerticallyByPageReturnsCorrectValue) {
595 SetupScrollAndContentsLayers(gfx::Size(200, 2000)); 595 SetupScrollAndContentsLayers(gfx::Size(200, 2000));
596 host_impl_->SetViewportSize(gfx::Size(100, 1000), gfx::Size(100, 1000)); 596 host_impl_->SetViewportSize(gfx::Size(100, 1000));
597 597
598 InitializeRendererAndDrawFrame(); 598 InitializeRendererAndDrawFrame();
599 599
600 EXPECT_EQ(InputHandlerClient::ScrollStarted, 600 EXPECT_EQ(InputHandlerClient::ScrollStarted,
601 host_impl_->ScrollBegin(gfx::Point(), 601 host_impl_->ScrollBegin(gfx::Point(),
602 InputHandlerClient::Wheel)); 602 InputHandlerClient::Wheel));
603 603
604 // Trying to scroll without a vertical scrollbar will fail. 604 // Trying to scroll without a vertical scrollbar will fail.
605 EXPECT_FALSE(host_impl_->ScrollVerticallyByPage( 605 EXPECT_FALSE(host_impl_->ScrollVerticallyByPage(
606 gfx::Point(), WebKit::WebScrollbar::ScrollForward)); 606 gfx::Point(), WebKit::WebScrollbar::ScrollForward));
(...skipping 13 matching lines...) Expand all
620 EXPECT_TRUE(host_impl_->ScrollVerticallyByPage( 620 EXPECT_TRUE(host_impl_->ScrollVerticallyByPage(
621 gfx::Point(), WebKit::WebScrollbar::ScrollForward)); 621 gfx::Point(), WebKit::WebScrollbar::ScrollForward));
622 EXPECT_FLOAT_EQ(875.f, host_impl_->RootScrollLayer()->scroll_delta().y()); 622 EXPECT_FLOAT_EQ(875.f, host_impl_->RootScrollLayer()->scroll_delta().y());
623 EXPECT_TRUE(host_impl_->ScrollVerticallyByPage( 623 EXPECT_TRUE(host_impl_->ScrollVerticallyByPage(
624 gfx::Point(), WebKit::WebScrollbar::ScrollBackward)); 624 gfx::Point(), WebKit::WebScrollbar::ScrollBackward));
625 } 625 }
626 626
627 TEST_F(LayerTreeHostImplTest, 627 TEST_F(LayerTreeHostImplTest,
628 ClearRootRenderSurfaceAndHitTestTouchHandlerRegion) { 628 ClearRootRenderSurfaceAndHitTestTouchHandlerRegion) {
629 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 629 SetupScrollAndContentsLayers(gfx::Size(100, 100));
630 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 630 host_impl_->SetViewportSize(gfx::Size(50, 50));
631 InitializeRendererAndDrawFrame(); 631 InitializeRendererAndDrawFrame();
632 632
633 // We should be able to hit test for touch event handlers even if the root 633 // We should be able to hit test for touch event handlers even if the root
634 // layer loses its render surface after the most recent render. 634 // layer loses its render surface after the most recent render.
635 host_impl_->active_tree()->root_layer()->ClearRenderSurface(); 635 host_impl_->active_tree()->root_layer()->ClearRenderSurface();
636 host_impl_->active_tree()->set_needs_update_draw_properties(); 636 host_impl_->active_tree()->set_needs_update_draw_properties();
637 637
638 EXPECT_EQ(host_impl_->HaveTouchEventHandlersAt(gfx::Point()), false); 638 EXPECT_EQ(host_impl_->HaveTouchEventHandlersAt(gfx::Point()), false);
639 } 639 }
640 640
641 TEST_F(LayerTreeHostImplTest, ImplPinchZoom) { 641 TEST_F(LayerTreeHostImplTest, ImplPinchZoom) {
642 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 642 SetupScrollAndContentsLayers(gfx::Size(100, 100));
643 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 643 host_impl_->SetViewportSize(gfx::Size(50, 50));
644 InitializeRendererAndDrawFrame(); 644 InitializeRendererAndDrawFrame();
645 645
646 LayerImpl* scroll_layer = host_impl_->RootScrollLayer(); 646 LayerImpl* scroll_layer = host_impl_->RootScrollLayer();
647 DCHECK(scroll_layer); 647 DCHECK(scroll_layer);
648 648
649 float min_page_scale = 1.f, max_page_scale = 4.f; 649 float min_page_scale = 1.f, max_page_scale = 4.f;
650 gfx::Transform identity_scale_transform; 650 gfx::Transform identity_scale_transform;
651 651
652 // The impl-based pinch zoom should adjust the max scroll position. 652 // The impl-based pinch zoom should adjust the max scroll position.
653 { 653 {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 scoped_ptr<ScrollAndScaleSet> scroll_info = 698 scoped_ptr<ScrollAndScaleSet> scroll_info =
699 host_impl_->ProcessScrollDeltas(); 699 host_impl_->ProcessScrollDeltas();
700 ExpectContains(*scroll_info.get(), 700 ExpectContains(*scroll_info.get(),
701 host_impl_->active_tree()->root_layer()->id(), 701 host_impl_->active_tree()->root_layer()->id(),
702 scroll_delta); 702 scroll_delta);
703 } 703 }
704 } 704 }
705 705
706 TEST_F(LayerTreeHostImplTest, PinchGesture) { 706 TEST_F(LayerTreeHostImplTest, PinchGesture) {
707 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 707 SetupScrollAndContentsLayers(gfx::Size(100, 100));
708 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 708 host_impl_->SetViewportSize(gfx::Size(50, 50));
709 InitializeRendererAndDrawFrame(); 709 InitializeRendererAndDrawFrame();
710 710
711 LayerImpl* scroll_layer = host_impl_->RootScrollLayer(); 711 LayerImpl* scroll_layer = host_impl_->RootScrollLayer();
712 DCHECK(scroll_layer); 712 DCHECK(scroll_layer);
713 713
714 float min_page_scale = 1.f; 714 float min_page_scale = 1.f;
715 float max_page_scale = 4.f; 715 float max_page_scale = 4.f;
716 gfx::Transform identity_scale_transform; 716 gfx::Transform identity_scale_transform;
717 717
718 // Basic pinch zoom in gesture 718 // Basic pinch zoom in gesture
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 815
816 scoped_ptr<ScrollAndScaleSet> scroll_info = 816 scoped_ptr<ScrollAndScaleSet> scroll_info =
817 host_impl_->ProcessScrollDeltas(); 817 host_impl_->ProcessScrollDeltas();
818 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); 818 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta);
819 ExpectContains(*scroll_info, scroll_layer->id(), gfx::Vector2d(-10, -10)); 819 ExpectContains(*scroll_info, scroll_layer->id(), gfx::Vector2d(-10, -10));
820 } 820 }
821 } 821 }
822 822
823 TEST_F(LayerTreeHostImplTest, PageScaleAnimation) { 823 TEST_F(LayerTreeHostImplTest, PageScaleAnimation) {
824 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 824 SetupScrollAndContentsLayers(gfx::Size(100, 100));
825 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 825 host_impl_->SetViewportSize(gfx::Size(50, 50));
826 InitializeRendererAndDrawFrame(); 826 InitializeRendererAndDrawFrame();
827 827
828 LayerImpl* scroll_layer = host_impl_->RootScrollLayer(); 828 LayerImpl* scroll_layer = host_impl_->RootScrollLayer();
829 DCHECK(scroll_layer); 829 DCHECK(scroll_layer);
830 830
831 float min_page_scale = 0.5f; 831 float min_page_scale = 0.5f;
832 float max_page_scale = 4.f; 832 float max_page_scale = 4.f;
833 base::TimeTicks start_time = base::TimeTicks() + 833 base::TimeTicks start_time = base::TimeTicks() +
834 base::TimeDelta::FromSeconds(1); 834 base::TimeDelta::FromSeconds(1);
835 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); 835 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 scoped_ptr<ScrollAndScaleSet> scroll_info = 880 scoped_ptr<ScrollAndScaleSet> scroll_info =
881 host_impl_->ProcessScrollDeltas(); 881 host_impl_->ProcessScrollDeltas();
882 EXPECT_EQ(scroll_info->page_scale_delta, min_page_scale); 882 EXPECT_EQ(scroll_info->page_scale_delta, min_page_scale);
883 // Pushed to (0,0) via clamping against contents layer size. 883 // Pushed to (0,0) via clamping against contents layer size.
884 ExpectContains(*scroll_info, scroll_layer->id(), gfx::Vector2d(-50, -50)); 884 ExpectContains(*scroll_info, scroll_layer->id(), gfx::Vector2d(-50, -50));
885 } 885 }
886 } 886 }
887 887
888 TEST_F(LayerTreeHostImplTest, PageScaleAnimationNoOp) { 888 TEST_F(LayerTreeHostImplTest, PageScaleAnimationNoOp) {
889 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 889 SetupScrollAndContentsLayers(gfx::Size(100, 100));
890 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 890 host_impl_->SetViewportSize(gfx::Size(50, 50));
891 InitializeRendererAndDrawFrame(); 891 InitializeRendererAndDrawFrame();
892 892
893 LayerImpl* scroll_layer = host_impl_->RootScrollLayer(); 893 LayerImpl* scroll_layer = host_impl_->RootScrollLayer();
894 DCHECK(scroll_layer); 894 DCHECK(scroll_layer);
895 895
896 float min_page_scale = 0.5f; 896 float min_page_scale = 0.5f;
897 float max_page_scale = 4.f; 897 float max_page_scale = 4.f;
898 base::TimeTicks start_time = base::TimeTicks() + 898 base::TimeTicks start_time = base::TimeTicks() +
899 base::TimeDelta::FromSeconds(1); 899 base::TimeDelta::FromSeconds(1);
900 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); 900 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100);
(...skipping 21 matching lines...) Expand all
922 922
923 scoped_ptr<ScrollAndScaleSet> scroll_info = 923 scoped_ptr<ScrollAndScaleSet> scroll_info =
924 host_impl_->ProcessScrollDeltas(); 924 host_impl_->ProcessScrollDeltas();
925 EXPECT_EQ(scroll_info->page_scale_delta, 1); 925 EXPECT_EQ(scroll_info->page_scale_delta, 1);
926 ExpectNone(*scroll_info, scroll_layer->id()); 926 ExpectNone(*scroll_info, scroll_layer->id());
927 } 927 }
928 } 928 }
929 929
930 TEST_F(LayerTreeHostImplTest, CompositorFrameMetadata) { 930 TEST_F(LayerTreeHostImplTest, CompositorFrameMetadata) {
931 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 931 SetupScrollAndContentsLayers(gfx::Size(100, 100));
932 host_impl_->SetViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 932 host_impl_->SetViewportSize(gfx::Size(50, 50));
933 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); 933 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f);
934 InitializeRendererAndDrawFrame(); 934 InitializeRendererAndDrawFrame();
935 { 935 {
936 CompositorFrameMetadata metadata = 936 CompositorFrameMetadata metadata =
937 host_impl_->MakeCompositorFrameMetadata(); 937 host_impl_->MakeCompositorFrameMetadata();
938 EXPECT_EQ(gfx::Vector2dF(), metadata.root_scroll_offset); 938 EXPECT_EQ(gfx::Vector2dF(), metadata.root_scroll_offset);
939 EXPECT_EQ(1.f, metadata.page_scale_factor); 939 EXPECT_EQ(1.f, metadata.page_scale_factor);
940 EXPECT_EQ(gfx::SizeF(50.f, 50.f), metadata.viewport_size); 940 EXPECT_EQ(gfx::SizeF(50.f, 50.f), metadata.viewport_size);
941 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size); 941 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size);
942 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); 942 EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1078 host_impl_->DidDrawAllLayers(frame); 1078 host_impl_->DidDrawAllLayers(frame);
1079 1079
1080 EXPECT_TRUE(layer->will_draw_called()); 1080 EXPECT_TRUE(layer->will_draw_called());
1081 EXPECT_TRUE(layer->did_draw_called()); 1081 EXPECT_TRUE(layer->did_draw_called());
1082 1082
1083 EXPECT_FALSE(layer->visible_content_rect().IsEmpty()); 1083 EXPECT_FALSE(layer->visible_content_rect().IsEmpty());
1084 } 1084 }
1085 1085
1086 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) { 1086 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) {
1087 gfx::Size big_size(1000, 1000); 1087 gfx::Size big_size(1000, 1000);
1088 host_impl_->SetViewportSize(big_size, big_size); 1088 host_impl_->SetViewportSize(big_size);
1089 1089
1090 host_impl_->active_tree()->SetRootLayer( 1090 host_impl_->active_tree()->SetRootLayer(
1091 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1091 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1092 DidDrawCheckLayer* root = 1092 DidDrawCheckLayer* root =
1093 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 1093 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
1094 1094
1095 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); 1095 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2));
1096 DidDrawCheckLayer* occluded_layer = 1096 DidDrawCheckLayer* occluded_layer =
1097 static_cast<DidDrawCheckLayer*>(root->children()[0]); 1097 static_cast<DidDrawCheckLayer*>(root->children()[0]);
1098 1098
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1290 TEST_F(LayerTreeHostImplTest, ScrollNonScrollableRootWithTopControls) { 1290 TEST_F(LayerTreeHostImplTest, ScrollNonScrollableRootWithTopControls) {
1291 LayerTreeSettings settings; 1291 LayerTreeSettings settings;
1292 settings.calculate_top_controls_position = true; 1292 settings.calculate_top_controls_position = true;
1293 settings.top_controls_height = 50; 1293 settings.top_controls_height = 50;
1294 1294
1295 host_impl_ = LayerTreeHostImpl::Create(settings, 1295 host_impl_ = LayerTreeHostImpl::Create(settings,
1296 this, 1296 this,
1297 &proxy_, 1297 &proxy_,
1298 &stats_instrumentation_); 1298 &stats_instrumentation_);
1299 host_impl_->InitializeRenderer(CreateOutputSurface()); 1299 host_impl_->InitializeRenderer(CreateOutputSurface());
1300 host_impl_->SetViewportSize(gfx::Size(10, 10), gfx::Size(10, 10)); 1300 host_impl_->SetViewportSize(gfx::Size(10, 10));
1301 1301
1302 gfx::Size layer_size(5, 5); 1302 gfx::Size layer_size(5, 5);
1303 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 1303 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
1304 root->SetScrollable(true); 1304 root->SetScrollable(true);
1305 root->SetMaxScrollOffset(gfx::Vector2d(layer_size.width(), 1305 root->SetMaxScrollOffset(gfx::Vector2d(layer_size.width(),
1306 layer_size.height())); 1306 layer_size.height()));
1307 root->SetBounds(layer_size); 1307 root->SetBounds(layer_size);
1308 root->SetContentBounds(layer_size); 1308 root->SetContentBounds(layer_size);
1309 root->SetPosition(gfx::PointF()); 1309 root->SetPosition(gfx::PointF());
1310 root->SetAnchorPoint(gfx::PointF()); 1310 root->SetAnchorPoint(gfx::PointF());
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 scroll_layer->SetScrollable(true); 1346 scroll_layer->SetScrollable(true);
1347 scroll_layer->SetMaxScrollOffset(gfx::Vector2d(surface_size.width(), 1347 scroll_layer->SetMaxScrollOffset(gfx::Vector2d(surface_size.width(),
1348 surface_size.height())); 1348 surface_size.height()));
1349 scroll_layer->SetBounds(surface_size); 1349 scroll_layer->SetBounds(surface_size);
1350 scroll_layer->SetContentBounds(surface_size); 1350 scroll_layer->SetContentBounds(surface_size);
1351 scroll_layer->SetPosition(gfx::PointF()); 1351 scroll_layer->SetPosition(gfx::PointF());
1352 scroll_layer->SetAnchorPoint(gfx::PointF()); 1352 scroll_layer->SetAnchorPoint(gfx::PointF());
1353 scroll_layer->AddChild(content_layer.Pass()); 1353 scroll_layer->AddChild(content_layer.Pass());
1354 1354
1355 host_impl_->active_tree()->SetRootLayer(scroll_layer.Pass()); 1355 host_impl_->active_tree()->SetRootLayer(scroll_layer.Pass());
1356 host_impl_->SetViewportSize(surface_size, surface_size); 1356 host_impl_->SetViewportSize(surface_size);
1357 InitializeRendererAndDrawFrame(); 1357 InitializeRendererAndDrawFrame();
1358 1358
1359 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1359 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1360 host_impl_->ScrollBegin(gfx::Point(5, 5), 1360 host_impl_->ScrollBegin(gfx::Point(5, 5),
1361 InputHandlerClient::Wheel)); 1361 InputHandlerClient::Wheel));
1362 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 1362 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
1363 host_impl_->ScrollEnd(); 1363 host_impl_->ScrollEnd();
1364 EXPECT_TRUE(did_request_redraw_); 1364 EXPECT_TRUE(did_request_redraw_);
1365 EXPECT_TRUE(did_request_commit_); 1365 EXPECT_TRUE(did_request_commit_);
1366 } 1366 }
1367 1367
1368 TEST_F(LayerTreeHostImplTest, ScrollChildCallsCommitAndRedraw) { 1368 TEST_F(LayerTreeHostImplTest, ScrollChildCallsCommitAndRedraw) {
1369 gfx::Size surface_size(10, 10); 1369 gfx::Size surface_size(10, 10);
1370 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 1370 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
1371 root->SetBounds(surface_size); 1371 root->SetBounds(surface_size);
1372 root->SetContentBounds(surface_size); 1372 root->SetContentBounds(surface_size);
1373 root->AddChild(CreateScrollableLayer(2, surface_size)); 1373 root->AddChild(CreateScrollableLayer(2, surface_size));
1374 host_impl_->active_tree()->SetRootLayer(root.Pass()); 1374 host_impl_->active_tree()->SetRootLayer(root.Pass());
1375 host_impl_->SetViewportSize(surface_size, surface_size); 1375 host_impl_->SetViewportSize(surface_size);
1376 InitializeRendererAndDrawFrame(); 1376 InitializeRendererAndDrawFrame();
1377 1377
1378 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1378 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1379 host_impl_->ScrollBegin(gfx::Point(5, 5), 1379 host_impl_->ScrollBegin(gfx::Point(5, 5),
1380 InputHandlerClient::Wheel)); 1380 InputHandlerClient::Wheel));
1381 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); 1381 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10));
1382 host_impl_->ScrollEnd(); 1382 host_impl_->ScrollEnd();
1383 EXPECT_TRUE(did_request_redraw_); 1383 EXPECT_TRUE(did_request_redraw_);
1384 EXPECT_TRUE(did_request_commit_); 1384 EXPECT_TRUE(did_request_commit_);
1385 } 1385 }
1386 1386
1387 TEST_F(LayerTreeHostImplTest, ScrollMissesChild) { 1387 TEST_F(LayerTreeHostImplTest, ScrollMissesChild) {
1388 gfx::Size surface_size(10, 10); 1388 gfx::Size surface_size(10, 10);
1389 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 1389 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
1390 root->AddChild(CreateScrollableLayer(2, surface_size)); 1390 root->AddChild(CreateScrollableLayer(2, surface_size));
1391 host_impl_->active_tree()->SetRootLayer(root.Pass()); 1391 host_impl_->active_tree()->SetRootLayer(root.Pass());
1392 host_impl_->SetViewportSize(surface_size, surface_size); 1392 host_impl_->SetViewportSize(surface_size);
1393 InitializeRendererAndDrawFrame(); 1393 InitializeRendererAndDrawFrame();
1394 1394
1395 // Scroll event is ignored because the input coordinate is outside the layer 1395 // Scroll event is ignored because the input coordinate is outside the layer
1396 // boundaries. 1396 // boundaries.
1397 EXPECT_EQ(InputHandlerClient::ScrollIgnored, 1397 EXPECT_EQ(InputHandlerClient::ScrollIgnored,
1398 host_impl_->ScrollBegin(gfx::Point(15, 5), 1398 host_impl_->ScrollBegin(gfx::Point(15, 5),
1399 InputHandlerClient::Wheel)); 1399 InputHandlerClient::Wheel));
1400 EXPECT_FALSE(did_request_redraw_); 1400 EXPECT_FALSE(did_request_redraw_);
1401 EXPECT_FALSE(did_request_commit_); 1401 EXPECT_FALSE(did_request_commit_);
1402 } 1402 }
1403 1403
1404 TEST_F(LayerTreeHostImplTest, ScrollMissesBackfacingChild) { 1404 TEST_F(LayerTreeHostImplTest, ScrollMissesBackfacingChild) {
1405 gfx::Size surface_size(10, 10); 1405 gfx::Size surface_size(10, 10);
1406 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 1406 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
1407 scoped_ptr<LayerImpl> child = CreateScrollableLayer(2, surface_size); 1407 scoped_ptr<LayerImpl> child = CreateScrollableLayer(2, surface_size);
1408 host_impl_->SetViewportSize(surface_size, surface_size); 1408 host_impl_->SetViewportSize(surface_size);
1409 1409
1410 gfx::Transform matrix; 1410 gfx::Transform matrix;
1411 matrix.RotateAboutXAxis(180.0); 1411 matrix.RotateAboutXAxis(180.0);
1412 child->SetTransform(matrix); 1412 child->SetTransform(matrix);
1413 child->SetDoubleSided(false); 1413 child->SetDoubleSided(false);
1414 1414
1415 root->AddChild(child.Pass()); 1415 root->AddChild(child.Pass());
1416 host_impl_->active_tree()->SetRootLayer(root.Pass()); 1416 host_impl_->active_tree()->SetRootLayer(root.Pass());
1417 InitializeRendererAndDrawFrame(); 1417 InitializeRendererAndDrawFrame();
1418 1418
1419 // Scroll event is ignored because the scrollable layer is not facing the 1419 // Scroll event is ignored because the scrollable layer is not facing the
1420 // viewer and there is nothing scrollable behind it. 1420 // viewer and there is nothing scrollable behind it.
1421 EXPECT_EQ(InputHandlerClient::ScrollIgnored, 1421 EXPECT_EQ(InputHandlerClient::ScrollIgnored,
1422 host_impl_->ScrollBegin(gfx::Point(5, 5), 1422 host_impl_->ScrollBegin(gfx::Point(5, 5),
1423 InputHandlerClient::Wheel)); 1423 InputHandlerClient::Wheel));
1424 EXPECT_FALSE(did_request_redraw_); 1424 EXPECT_FALSE(did_request_redraw_);
1425 EXPECT_FALSE(did_request_commit_); 1425 EXPECT_FALSE(did_request_commit_);
1426 } 1426 }
1427 1427
1428 TEST_F(LayerTreeHostImplTest, ScrollBlockedByContentLayer) { 1428 TEST_F(LayerTreeHostImplTest, ScrollBlockedByContentLayer) {
1429 gfx::Size surface_size(10, 10); 1429 gfx::Size surface_size(10, 10);
1430 scoped_ptr<LayerImpl> content_layer = CreateScrollableLayer(1, surface_size); 1430 scoped_ptr<LayerImpl> content_layer = CreateScrollableLayer(1, surface_size);
1431 content_layer->SetShouldScrollOnMainThread(true); 1431 content_layer->SetShouldScrollOnMainThread(true);
1432 content_layer->SetScrollable(false); 1432 content_layer->SetScrollable(false);
1433 1433
1434 scoped_ptr<LayerImpl> scroll_layer = CreateScrollableLayer(2, surface_size); 1434 scoped_ptr<LayerImpl> scroll_layer = CreateScrollableLayer(2, surface_size);
1435 scroll_layer->AddChild(content_layer.Pass()); 1435 scroll_layer->AddChild(content_layer.Pass());
1436 1436
1437 host_impl_->active_tree()->SetRootLayer(scroll_layer.Pass()); 1437 host_impl_->active_tree()->SetRootLayer(scroll_layer.Pass());
1438 host_impl_->SetViewportSize(surface_size, surface_size); 1438 host_impl_->SetViewportSize(surface_size);
1439 InitializeRendererAndDrawFrame(); 1439 InitializeRendererAndDrawFrame();
1440 1440
1441 // Scrolling fails because the content layer is asking to be scrolled on the 1441 // Scrolling fails because the content layer is asking to be scrolled on the
1442 // main thread. 1442 // main thread.
1443 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread, 1443 EXPECT_EQ(InputHandlerClient::ScrollOnMainThread,
1444 host_impl_->ScrollBegin(gfx::Point(5, 5), 1444 host_impl_->ScrollBegin(gfx::Point(5, 5),
1445 InputHandlerClient::Wheel)); 1445 InputHandlerClient::Wheel));
1446 } 1446 }
1447 1447
1448 TEST_F(LayerTreeHostImplTest, ScrollRootAndChangePageScaleOnMainThread) { 1448 TEST_F(LayerTreeHostImplTest, ScrollRootAndChangePageScaleOnMainThread) {
1449 gfx::Size surface_size(10, 10); 1449 gfx::Size surface_size(10, 10);
1450 float page_scale = 2.f; 1450 float page_scale = 2.f;
1451 scoped_ptr<LayerImpl> root = CreateScrollableLayer(1, surface_size); 1451 scoped_ptr<LayerImpl> root = CreateScrollableLayer(1, surface_size);
1452 host_impl_->active_tree()->SetRootLayer(root.Pass()); 1452 host_impl_->active_tree()->SetRootLayer(root.Pass());
1453 host_impl_->active_tree()->DidBecomeActive(); 1453 host_impl_->active_tree()->DidBecomeActive();
1454 host_impl_->SetViewportSize(surface_size, surface_size); 1454 host_impl_->SetViewportSize(surface_size);
1455 InitializeRendererAndDrawFrame(); 1455 InitializeRendererAndDrawFrame();
1456 1456
1457 gfx::Vector2d scroll_delta(0, 10); 1457 gfx::Vector2d scroll_delta(0, 10);
1458 gfx::Vector2d expected_scroll_delta = scroll_delta; 1458 gfx::Vector2d expected_scroll_delta = scroll_delta;
1459 gfx::Vector2d expected_max_scroll = 1459 gfx::Vector2d expected_max_scroll =
1460 host_impl_->active_tree()->root_layer()->max_scroll_offset(); 1460 host_impl_->active_tree()->root_layer()->max_scroll_offset();
1461 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1461 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1462 host_impl_->ScrollBegin(gfx::Point(5, 5), 1462 host_impl_->ScrollBegin(gfx::Point(5, 5),
1463 InputHandlerClient::Wheel)); 1463 InputHandlerClient::Wheel));
1464 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 1464 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1533 host_impl_->active_tree()->root_layer()-> 1533 host_impl_->active_tree()->root_layer()->
1534 impl_transform().matrix().getDouble(3, 3)); 1534 impl_transform().matrix().getDouble(3, 3));
1535 } 1535 }
1536 1536
1537 TEST_F(LayerTreeHostImplTest, ScrollRootAndChangePageScaleOnImplThread) { 1537 TEST_F(LayerTreeHostImplTest, ScrollRootAndChangePageScaleOnImplThread) {
1538 gfx::Size surface_size(10, 10); 1538 gfx::Size surface_size(10, 10);
1539 float page_scale = 2.f; 1539 float page_scale = 2.f;
1540 scoped_ptr<LayerImpl> root = CreateScrollableLayer(1, surface_size); 1540 scoped_ptr<LayerImpl> root = CreateScrollableLayer(1, surface_size);
1541 host_impl_->active_tree()->SetRootLayer(root.Pass()); 1541 host_impl_->active_tree()->SetRootLayer(root.Pass());
1542 host_impl_->active_tree()->DidBecomeActive(); 1542 host_impl_->active_tree()->DidBecomeActive();
1543 host_impl_->SetViewportSize(surface_size, surface_size); 1543 host_impl_->SetViewportSize(surface_size);
1544 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 1.f, page_scale); 1544 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 1.f, page_scale);
1545 InitializeRendererAndDrawFrame(); 1545 InitializeRendererAndDrawFrame();
1546 1546
1547 gfx::Vector2d scroll_delta(0, 10); 1547 gfx::Vector2d scroll_delta(0, 10);
1548 gfx::Vector2d expected_scroll_delta = scroll_delta; 1548 gfx::Vector2d expected_scroll_delta = scroll_delta;
1549 gfx::Vector2d expected_max_scroll = 1549 gfx::Vector2d expected_max_scroll =
1550 host_impl_->active_tree()->root_layer()->max_scroll_offset(); 1550 host_impl_->active_tree()->root_layer()->max_scroll_offset();
1551 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1551 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1552 host_impl_->ScrollBegin(gfx::Point(5, 5), 1552 host_impl_->ScrollBegin(gfx::Point(5, 5),
1553 InputHandlerClient::Wheel)); 1553 InputHandlerClient::Wheel));
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1629 gfx::Size surface_size(10, 10); 1629 gfx::Size surface_size(10, 10);
1630 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 1630 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
1631 root->SetBounds(surface_size); 1631 root->SetBounds(surface_size);
1632 root->SetContentBounds(surface_size); 1632 root->SetContentBounds(surface_size);
1633 // Also mark the root scrollable so it becomes the root scroll layer. 1633 // Also mark the root scrollable so it becomes the root scroll layer.
1634 root->SetScrollable(true); 1634 root->SetScrollable(true);
1635 int scroll_layer_id = 2; 1635 int scroll_layer_id = 2;
1636 root->AddChild(CreateScrollableLayer(scroll_layer_id, surface_size)); 1636 root->AddChild(CreateScrollableLayer(scroll_layer_id, surface_size));
1637 host_impl_->active_tree()->SetRootLayer(root.Pass()); 1637 host_impl_->active_tree()->SetRootLayer(root.Pass());
1638 host_impl_->active_tree()->DidBecomeActive(); 1638 host_impl_->active_tree()->DidBecomeActive();
1639 host_impl_->SetViewportSize(surface_size, surface_size); 1639 host_impl_->SetViewportSize(surface_size);
1640 InitializeRendererAndDrawFrame(); 1640 InitializeRendererAndDrawFrame();
1641 1641
1642 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; 1642 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0];
1643 1643
1644 gfx::Vector2d scroll_delta(0, 10); 1644 gfx::Vector2d scroll_delta(0, 10);
1645 gfx::Vector2d expected_scroll_delta(scroll_delta); 1645 gfx::Vector2d expected_scroll_delta(scroll_delta);
1646 gfx::Vector2d expected_max_scroll(child->max_scroll_offset()); 1646 gfx::Vector2d expected_max_scroll(child->max_scroll_offset());
1647 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1647 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1648 host_impl_->ScrollBegin(gfx::Point(5, 5), 1648 host_impl_->ScrollBegin(gfx::Point(5, 5),
1649 InputHandlerClient::Wheel)); 1649 InputHandlerClient::Wheel));
(...skipping 29 matching lines...) Expand all
1679 scoped_ptr<LayerImpl> grand_child = CreateScrollableLayer(3, surface_size); 1679 scoped_ptr<LayerImpl> grand_child = CreateScrollableLayer(3, surface_size);
1680 grand_child->SetScrollOffset(gfx::Vector2d(0, 5)); 1680 grand_child->SetScrollOffset(gfx::Vector2d(0, 5));
1681 1681
1682 scoped_ptr<LayerImpl> child = CreateScrollableLayer(2, surface_size); 1682 scoped_ptr<LayerImpl> child = CreateScrollableLayer(2, surface_size);
1683 child->SetScrollOffset(gfx::Vector2d(3, 0)); 1683 child->SetScrollOffset(gfx::Vector2d(3, 0));
1684 child->AddChild(grand_child.Pass()); 1684 child->AddChild(grand_child.Pass());
1685 1685
1686 root->AddChild(child.Pass()); 1686 root->AddChild(child.Pass());
1687 host_impl_->active_tree()->SetRootLayer(root.Pass()); 1687 host_impl_->active_tree()->SetRootLayer(root.Pass());
1688 host_impl_->active_tree()->DidBecomeActive(); 1688 host_impl_->active_tree()->DidBecomeActive();
1689 host_impl_->SetViewportSize(surface_size, surface_size); 1689 host_impl_->SetViewportSize(surface_size);
1690 InitializeRendererAndDrawFrame(); 1690 InitializeRendererAndDrawFrame();
1691 { 1691 {
1692 gfx::Vector2d scroll_delta(-8, -7); 1692 gfx::Vector2d scroll_delta(-8, -7);
1693 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1693 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1694 host_impl_->ScrollBegin(gfx::Point(5, 5), 1694 host_impl_->ScrollBegin(gfx::Point(5, 5),
1695 InputHandlerClient::Wheel)); 1695 InputHandlerClient::Wheel));
1696 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 1696 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
1697 host_impl_->ScrollEnd(); 1697 host_impl_->ScrollEnd();
1698 1698
1699 scoped_ptr<ScrollAndScaleSet> scroll_info = 1699 scoped_ptr<ScrollAndScaleSet> scroll_info =
(...skipping 18 matching lines...) Expand all
1718 scoped_ptr<LayerImpl> grand_child = CreateScrollableLayer(3, surface_size); 1718 scoped_ptr<LayerImpl> grand_child = CreateScrollableLayer(3, surface_size);
1719 grand_child->SetScrollOffset(gfx::Vector2d(0, 2)); 1719 grand_child->SetScrollOffset(gfx::Vector2d(0, 2));
1720 1720
1721 scoped_ptr<LayerImpl> child = CreateScrollableLayer(2, surface_size); 1721 scoped_ptr<LayerImpl> child = CreateScrollableLayer(2, surface_size);
1722 child->SetScrollOffset(gfx::Vector2d(0, 3)); 1722 child->SetScrollOffset(gfx::Vector2d(0, 3));
1723 child->AddChild(grand_child.Pass()); 1723 child->AddChild(grand_child.Pass());
1724 1724
1725 root->AddChild(child.Pass()); 1725 root->AddChild(child.Pass());
1726 host_impl_->active_tree()->SetRootLayer(root.Pass()); 1726 host_impl_->active_tree()->SetRootLayer(root.Pass());
1727 host_impl_->active_tree()->DidBecomeActive(); 1727 host_impl_->active_tree()->DidBecomeActive();
1728 host_impl_->SetViewportSize(surface_size, surface_size); 1728 host_impl_->SetViewportSize(surface_size);
1729 InitializeRendererAndDrawFrame(); 1729 InitializeRendererAndDrawFrame();
1730 { 1730 {
1731 gfx::Vector2d scroll_delta(0, -10); 1731 gfx::Vector2d scroll_delta(0, -10);
1732 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1732 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1733 host_impl_->ScrollBegin(gfx::Point(5, 5), 1733 host_impl_->ScrollBegin(gfx::Point(5, 5),
1734 InputHandlerClient::NonBubblingGesture)); 1734 InputHandlerClient::NonBubblingGesture));
1735 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 1735 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
1736 host_impl_->ScrollEnd(); 1736 host_impl_->ScrollEnd();
1737 1737
1738 scoped_ptr<ScrollAndScaleSet> scroll_info = 1738 scoped_ptr<ScrollAndScaleSet> scroll_info =
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1810 // When we try to scroll a non-scrollable child layer, the scroll delta 1810 // When we try to scroll a non-scrollable child layer, the scroll delta
1811 // should be applied to one of its ancestors if possible. 1811 // should be applied to one of its ancestors if possible.
1812 gfx::Size surface_size(10, 10); 1812 gfx::Size surface_size(10, 10);
1813 gfx::Size content_size(20, 20); 1813 gfx::Size content_size(20, 20);
1814 scoped_ptr<LayerImpl> root = CreateScrollableLayer(1, content_size); 1814 scoped_ptr<LayerImpl> root = CreateScrollableLayer(1, content_size);
1815 scoped_ptr<LayerImpl> child = CreateScrollableLayer(2, content_size); 1815 scoped_ptr<LayerImpl> child = CreateScrollableLayer(2, content_size);
1816 1816
1817 child->SetScrollable(false); 1817 child->SetScrollable(false);
1818 root->AddChild(child.Pass()); 1818 root->AddChild(child.Pass());
1819 1819
1820 host_impl_->SetViewportSize(surface_size, surface_size); 1820 host_impl_->SetViewportSize(surface_size);
1821 host_impl_->active_tree()->SetRootLayer(root.Pass()); 1821 host_impl_->active_tree()->SetRootLayer(root.Pass());
1822 host_impl_->active_tree()->DidBecomeActive(); 1822 host_impl_->active_tree()->DidBecomeActive();
1823 InitializeRendererAndDrawFrame(); 1823 InitializeRendererAndDrawFrame();
1824 { 1824 {
1825 gfx::Vector2d scroll_delta(0, 4); 1825 gfx::Vector2d scroll_delta(0, 4);
1826 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1826 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1827 host_impl_->ScrollBegin(gfx::Point(5, 5), 1827 host_impl_->ScrollBegin(gfx::Point(5, 5),
1828 InputHandlerClient::Wheel)); 1828 InputHandlerClient::Wheel));
1829 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 1829 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
1830 host_impl_->ScrollEnd(); 1830 host_impl_->ScrollEnd();
1831 1831
1832 scoped_ptr<ScrollAndScaleSet> scroll_info = 1832 scoped_ptr<ScrollAndScaleSet> scroll_info =
1833 host_impl_->ProcessScrollDeltas(); 1833 host_impl_->ProcessScrollDeltas();
1834 1834
1835 // Only the root should have scrolled. 1835 // Only the root should have scrolled.
1836 ASSERT_EQ(scroll_info->scrolls.size(), 1u); 1836 ASSERT_EQ(scroll_info->scrolls.size(), 1u);
1837 ExpectContains(*scroll_info.get(), 1837 ExpectContains(*scroll_info.get(),
1838 host_impl_->active_tree()->root_layer()->id(), 1838 host_impl_->active_tree()->root_layer()->id(),
1839 scroll_delta); 1839 scroll_delta);
1840 } 1840 }
1841 } 1841 }
1842 1842
1843 TEST_F(LayerTreeHostImplTest, ScrollBeforeRedraw) { 1843 TEST_F(LayerTreeHostImplTest, ScrollBeforeRedraw) {
1844 gfx::Size surface_size(10, 10); 1844 gfx::Size surface_size(10, 10);
1845 host_impl_->active_tree()->SetRootLayer( 1845 host_impl_->active_tree()->SetRootLayer(
1846 CreateScrollableLayer(1, surface_size)); 1846 CreateScrollableLayer(1, surface_size));
1847 host_impl_->active_tree()->DidBecomeActive(); 1847 host_impl_->active_tree()->DidBecomeActive();
1848 host_impl_->SetViewportSize(surface_size, surface_size); 1848 host_impl_->SetViewportSize(surface_size);
1849 1849
1850 // Draw one frame and then immediately rebuild the layer tree to mimic a tree 1850 // Draw one frame and then immediately rebuild the layer tree to mimic a tree
1851 // synchronization. 1851 // synchronization.
1852 InitializeRendererAndDrawFrame(); 1852 InitializeRendererAndDrawFrame();
1853 host_impl_->active_tree()->DetachLayerTree(); 1853 host_impl_->active_tree()->DetachLayerTree();
1854 host_impl_->active_tree()->SetRootLayer( 1854 host_impl_->active_tree()->SetRootLayer(
1855 CreateScrollableLayer(2, surface_size)); 1855 CreateScrollableLayer(2, surface_size));
1856 host_impl_->active_tree()->DidBecomeActive(); 1856 host_impl_->active_tree()->DidBecomeActive();
1857 1857
1858 // Scrolling should still work even though we did not draw yet. 1858 // Scrolling should still work even though we did not draw yet.
1859 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1859 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1860 host_impl_->ScrollBegin(gfx::Point(5, 5), 1860 host_impl_->ScrollBegin(gfx::Point(5, 5),
1861 InputHandlerClient::Wheel)); 1861 InputHandlerClient::Wheel));
1862 } 1862 }
1863 1863
1864 TEST_F(LayerTreeHostImplTest, ScrollAxisAlignedRotatedLayer) { 1864 TEST_F(LayerTreeHostImplTest, ScrollAxisAlignedRotatedLayer) {
1865 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 1865 SetupScrollAndContentsLayers(gfx::Size(100, 100));
1866 1866
1867 // Rotate the root layer 90 degrees counter-clockwise about its center. 1867 // Rotate the root layer 90 degrees counter-clockwise about its center.
1868 gfx::Transform rotate_transform; 1868 gfx::Transform rotate_transform;
1869 rotate_transform.Rotate(-90.0); 1869 rotate_transform.Rotate(-90.0);
1870 host_impl_->active_tree()->root_layer()->SetTransform(rotate_transform); 1870 host_impl_->active_tree()->root_layer()->SetTransform(rotate_transform);
1871 1871
1872 gfx::Size surface_size(50, 50); 1872 gfx::Size surface_size(50, 50);
1873 host_impl_->SetViewportSize(surface_size, surface_size); 1873 host_impl_->SetViewportSize(surface_size);
1874 InitializeRendererAndDrawFrame(); 1874 InitializeRendererAndDrawFrame();
1875 1875
1876 // Scroll to the right in screen coordinates with a gesture. 1876 // Scroll to the right in screen coordinates with a gesture.
1877 gfx::Vector2d gesture_scroll_delta(10, 0); 1877 gfx::Vector2d gesture_scroll_delta(10, 0);
1878 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1878 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1879 host_impl_->ScrollBegin(gfx::Point(), 1879 host_impl_->ScrollBegin(gfx::Point(),
1880 InputHandlerClient::Gesture)); 1880 InputHandlerClient::Gesture));
1881 host_impl_->ScrollBy(gfx::Point(), gesture_scroll_delta); 1881 host_impl_->ScrollBy(gfx::Point(), gesture_scroll_delta);
1882 host_impl_->ScrollEnd(); 1882 host_impl_->ScrollEnd();
1883 1883
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1916 rotate_transform.Translate(-50.0, -50.0); 1916 rotate_transform.Translate(-50.0, -50.0);
1917 rotate_transform.Rotate(child_layer_angle); 1917 rotate_transform.Rotate(child_layer_angle);
1918 rotate_transform.Translate(50.0, 50.0); 1918 rotate_transform.Translate(50.0, 50.0);
1919 child->SetTransform(rotate_transform); 1919 child->SetTransform(rotate_transform);
1920 1920
1921 // Only allow vertical scrolling. 1921 // Only allow vertical scrolling.
1922 child->SetMaxScrollOffset(gfx::Vector2d(0, child->content_bounds().height())); 1922 child->SetMaxScrollOffset(gfx::Vector2d(0, child->content_bounds().height()));
1923 host_impl_->active_tree()->root_layer()->AddChild(child.Pass()); 1923 host_impl_->active_tree()->root_layer()->AddChild(child.Pass());
1924 1924
1925 gfx::Size surface_size(50, 50); 1925 gfx::Size surface_size(50, 50);
1926 host_impl_->SetViewportSize(surface_size, surface_size); 1926 host_impl_->SetViewportSize(surface_size);
1927 InitializeRendererAndDrawFrame(); 1927 InitializeRendererAndDrawFrame();
1928 { 1928 {
1929 // Scroll down in screen coordinates with a gesture. 1929 // Scroll down in screen coordinates with a gesture.
1930 gfx::Vector2d gesture_scroll_delta(0, 10); 1930 gfx::Vector2d gesture_scroll_delta(0, 10);
1931 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1931 EXPECT_EQ(InputHandlerClient::ScrollStarted,
1932 host_impl_->ScrollBegin(gfx::Point(), 1932 host_impl_->ScrollBegin(gfx::Point(),
1933 InputHandlerClient::Gesture)); 1933 InputHandlerClient::Gesture));
1934 host_impl_->ScrollBy(gfx::Point(), gesture_scroll_delta); 1934 host_impl_->ScrollBy(gfx::Point(), gesture_scroll_delta);
1935 host_impl_->ScrollEnd(); 1935 host_impl_->ScrollEnd();
1936 1936
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 TEST_F(LayerTreeHostImplTest, ScrollScaledLayer) { 1984 TEST_F(LayerTreeHostImplTest, ScrollScaledLayer) {
1985 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 1985 SetupScrollAndContentsLayers(gfx::Size(100, 100));
1986 1986
1987 // Scale the layer to twice its normal size. 1987 // Scale the layer to twice its normal size.
1988 int scale = 2; 1988 int scale = 2;
1989 gfx::Transform scale_transform; 1989 gfx::Transform scale_transform;
1990 scale_transform.Scale(scale, scale); 1990 scale_transform.Scale(scale, scale);
1991 host_impl_->active_tree()->root_layer()->SetTransform(scale_transform); 1991 host_impl_->active_tree()->root_layer()->SetTransform(scale_transform);
1992 1992
1993 gfx::Size surface_size(50, 50); 1993 gfx::Size surface_size(50, 50);
1994 host_impl_->SetViewportSize(surface_size, surface_size); 1994 host_impl_->SetViewportSize(surface_size);
1995 InitializeRendererAndDrawFrame(); 1995 InitializeRendererAndDrawFrame();
1996 1996
1997 // Scroll down in screen coordinates with a gesture. 1997 // Scroll down in screen coordinates with a gesture.
1998 gfx::Vector2d scroll_delta(0, 10); 1998 gfx::Vector2d scroll_delta(0, 10);
1999 EXPECT_EQ(InputHandlerClient::ScrollStarted, 1999 EXPECT_EQ(InputHandlerClient::ScrollStarted,
2000 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Gesture)); 2000 host_impl_->ScrollBegin(gfx::Point(), InputHandlerClient::Gesture));
2001 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 2001 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
2002 host_impl_->ScrollEnd(); 2002 host_impl_->ScrollEnd();
2003 2003
2004 // The layer should have scrolled down in its local coordinates, but half the 2004 // The layer should have scrolled down in its local coordinates, but half the
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
2344 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 2344 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
2345 EXPECT_TRUE(layer1->quads_appended()); 2345 EXPECT_TRUE(layer1->quads_appended());
2346 host_impl_->DidDrawAllLayers(frame); 2346 host_impl_->DidDrawAllLayers(frame);
2347 } 2347 }
2348 2348
2349 TEST_F(LayerTreeHostImplTest, ViewportCovered) { 2349 TEST_F(LayerTreeHostImplTest, ViewportCovered) {
2350 host_impl_->InitializeRenderer(CreateOutputSurface()); 2350 host_impl_->InitializeRenderer(CreateOutputSurface());
2351 host_impl_->active_tree()->set_background_color(SK_ColorGRAY); 2351 host_impl_->active_tree()->set_background_color(SK_ColorGRAY);
2352 2352
2353 gfx::Size viewport_size(1000, 1000); 2353 gfx::Size viewport_size(1000, 1000);
2354 host_impl_->SetViewportSize(viewport_size, viewport_size); 2354 host_impl_->SetViewportSize(viewport_size);
2355 2355
2356 host_impl_->active_tree()->SetRootLayer( 2356 host_impl_->active_tree()->SetRootLayer(
2357 LayerImpl::Create(host_impl_->active_tree(), 1)); 2357 LayerImpl::Create(host_impl_->active_tree(), 1));
2358 host_impl_->active_tree()->root_layer()->AddChild( 2358 host_impl_->active_tree()->root_layer()->AddChild(
2359 BlendStateCheckLayer::Create(host_impl_->active_tree(), 2359 BlendStateCheckLayer::Create(host_impl_->active_tree(),
2360 2, 2360 2,
2361 host_impl_->resource_provider())); 2361 host_impl_->resource_provider()));
2362 BlendStateCheckLayer* child = static_cast<BlendStateCheckLayer*>( 2362 BlendStateCheckLayer* child = static_cast<BlendStateCheckLayer*>(
2363 host_impl_->active_tree()->root_layer()->children()[0]); 2363 host_impl_->active_tree()->root_layer()->children()[0]);
2364 child->SetExpectation(false, false); 2364 child->SetExpectation(false, false);
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
2526 // This test creates its own LayerTreeHostImpl, so 2526 // This test creates its own LayerTreeHostImpl, so
2527 // that we can force partial swap enabled. 2527 // that we can force partial swap enabled.
2528 LayerTreeSettings settings; 2528 LayerTreeSettings settings;
2529 settings.partial_swap_enabled = true; 2529 settings.partial_swap_enabled = true;
2530 scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl = 2530 scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl =
2531 LayerTreeHostImpl::Create(settings, 2531 LayerTreeHostImpl::Create(settings,
2532 this, 2532 this,
2533 &proxy_, 2533 &proxy_,
2534 &stats_instrumentation_); 2534 &stats_instrumentation_);
2535 layer_tree_host_impl->InitializeRenderer(output_surface.Pass()); 2535 layer_tree_host_impl->InitializeRenderer(output_surface.Pass());
2536 layer_tree_host_impl->SetViewportSize(gfx::Size(500, 500), 2536 layer_tree_host_impl->SetViewportSize(gfx::Size(500, 500));
2537 gfx::Size(500, 500));
2538 2537
2539 scoped_ptr<LayerImpl> root = 2538 scoped_ptr<LayerImpl> root =
2540 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 1); 2539 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 1);
2541 scoped_ptr<LayerImpl> child = 2540 scoped_ptr<LayerImpl> child =
2542 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 2); 2541 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 2);
2543 child->SetPosition(gfx::PointF(12.f, 13.f)); 2542 child->SetPosition(gfx::PointF(12.f, 13.f));
2544 child->SetAnchorPoint(gfx::PointF()); 2543 child->SetAnchorPoint(gfx::PointF());
2545 child->SetBounds(gfx::Size(14, 15)); 2544 child->SetBounds(gfx::Size(14, 15));
2546 child->SetContentBounds(gfx::Size(14, 15)); 2545 child->SetContentBounds(gfx::Size(14, 15));
2547 child->SetDrawsContent(true); 2546 child->SetDrawsContent(true);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2579 actual_swap_rect = partial_swap_tracker->partial_swap_rect(); 2578 actual_swap_rect = partial_swap_tracker->partial_swap_rect();
2580 expected_swap_rect = gfx::Rect(0, 500-28, 26, 28); 2579 expected_swap_rect = gfx::Rect(0, 500-28, 26, 28);
2581 EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); 2580 EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x());
2582 EXPECT_EQ(expected_swap_rect.y(), actual_swap_rect.y()); 2581 EXPECT_EQ(expected_swap_rect.y(), actual_swap_rect.y());
2583 EXPECT_EQ(expected_swap_rect.width(), actual_swap_rect.width()); 2582 EXPECT_EQ(expected_swap_rect.width(), actual_swap_rect.width());
2584 EXPECT_EQ(expected_swap_rect.height(), actual_swap_rect.height()); 2583 EXPECT_EQ(expected_swap_rect.height(), actual_swap_rect.height());
2585 2584
2586 // Make sure that partial swap is constrained to the viewport dimensions 2585 // Make sure that partial swap is constrained to the viewport dimensions
2587 // expected damage rect: gfx::Rect(500, 500); 2586 // expected damage rect: gfx::Rect(500, 500);
2588 // expected swap rect: flipped damage rect, but also clamped to viewport 2587 // expected swap rect: flipped damage rect, but also clamped to viewport
2589 layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10), gfx::Size(10, 10)); 2588 layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10));
2590 // This will damage everything. 2589 // This will damage everything.
2591 layer_tree_host_impl->active_tree()->root_layer()->SetOpacity(0.7f); 2590 layer_tree_host_impl->active_tree()->root_layer()->SetOpacity(0.7f);
2592 EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); 2591 EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect()));
2593 layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); 2592 layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now());
2594 host_impl_->DidDrawAllLayers(frame); 2593 host_impl_->DidDrawAllLayers(frame);
2595 layer_tree_host_impl->SwapBuffers(frame); 2594 layer_tree_host_impl->SwapBuffers(frame);
2596 actual_swap_rect = partial_swap_tracker->partial_swap_rect(); 2595 actual_swap_rect = partial_swap_tracker->partial_swap_rect();
2597 expected_swap_rect = gfx::Rect(10, 10); 2596 expected_swap_rect = gfx::Rect(10, 10);
2598 EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); 2597 EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x());
2599 EXPECT_EQ(expected_swap_rect.y(), actual_swap_rect.y()); 2598 EXPECT_EQ(expected_swap_rect.y(), actual_swap_rect.y());
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
2852 RenderingStatsInstrumentation* stats_instrumentation) { 2851 RenderingStatsInstrumentation* stats_instrumentation) {
2853 scoped_ptr<OutputSurface> output_surface = 2852 scoped_ptr<OutputSurface> output_surface =
2854 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>( 2853 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>(
2855 new PartialSwapContext)).PassAs<OutputSurface>(); 2854 new PartialSwapContext)).PassAs<OutputSurface>();
2856 2855
2857 LayerTreeSettings settings; 2856 LayerTreeSettings settings;
2858 settings.partial_swap_enabled = partial_swap; 2857 settings.partial_swap_enabled = partial_swap;
2859 scoped_ptr<LayerTreeHostImpl> my_host_impl = 2858 scoped_ptr<LayerTreeHostImpl> my_host_impl =
2860 LayerTreeHostImpl::Create(settings, client, proxy, stats_instrumentation); 2859 LayerTreeHostImpl::Create(settings, client, proxy, stats_instrumentation);
2861 my_host_impl->InitializeRenderer(output_surface.Pass()); 2860 my_host_impl->InitializeRenderer(output_surface.Pass());
2862 my_host_impl->SetViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); 2861 my_host_impl->SetViewportSize(gfx::Size(100, 100));
2863 2862
2864 /* 2863 /*
2865 Layers are created as follows: 2864 Layers are created as follows:
2866 2865
2867 +--------------------+ 2866 +--------------------+
2868 | 1 | 2867 | 1 |
2869 | +-----------+ | 2868 | +-----------+ |
2870 | | 2 | | 2869 | | 2 | |
2871 | | +-------------------+ 2870 | | +-------------------+
2872 | | | 3 | 2871 | | | 3 |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
3123 LayerImpl*& root_ptr, 3122 LayerImpl*& root_ptr,
3124 LayerImpl*& intermediate_layer_ptr, 3123 LayerImpl*& intermediate_layer_ptr,
3125 LayerImpl*& surface_layer_ptr, 3124 LayerImpl*& surface_layer_ptr,
3126 LayerImpl*& child_ptr, 3125 LayerImpl*& child_ptr,
3127 gfx::Size root_size) { 3126 gfx::Size root_size) {
3128 scoped_ptr<OutputSurface> output_surface = 3127 scoped_ptr<OutputSurface> output_surface =
3129 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>( 3128 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>(
3130 new PartialSwapContext)).PassAs<OutputSurface>(); 3129 new PartialSwapContext)).PassAs<OutputSurface>();
3131 3130
3132 layer_tree_host_impl->InitializeRenderer(output_surface.Pass()); 3131 layer_tree_host_impl->InitializeRenderer(output_surface.Pass());
3133 layer_tree_host_impl->SetViewportSize(root_size, root_size); 3132 layer_tree_host_impl->SetViewportSize(root_size);
3134 3133
3135 scoped_ptr<LayerImpl> root = 3134 scoped_ptr<LayerImpl> root =
3136 LayerImpl::Create(layer_tree_host_impl->active_tree(), 1); 3135 LayerImpl::Create(layer_tree_host_impl->active_tree(), 1);
3137 root_ptr = root.get(); 3136 root_ptr = root.get();
3138 3137
3139 root->SetAnchorPoint(gfx::PointF()); 3138 root->SetAnchorPoint(gfx::PointF());
3140 root->SetPosition(gfx::PointF()); 3139 root->SetPosition(gfx::PointF());
3141 root->SetBounds(root_size); 3140 root->SetBounds(root_size);
3142 root->SetContentBounds(root_size); 3141 root->SetContentBounds(root_size);
3143 root->SetDrawsContent(true); 3142 root->SetDrawsContent(true);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
3204 LayerImpl* layer_s1_ptr; 3203 LayerImpl* layer_s1_ptr;
3205 LayerImpl* layer_s2_ptr; 3204 LayerImpl* layer_s2_ptr;
3206 3205
3207 scoped_ptr<OutputSurface> output_surface = 3206 scoped_ptr<OutputSurface> output_surface =
3208 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>( 3207 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>(
3209 new PartialSwapContext)).PassAs<OutputSurface>(); 3208 new PartialSwapContext)).PassAs<OutputSurface>();
3210 3209
3211 gfx::Size root_size(1000, 1000); 3210 gfx::Size root_size(1000, 1000);
3212 3211
3213 my_host_impl->InitializeRenderer(output_surface.Pass()); 3212 my_host_impl->InitializeRenderer(output_surface.Pass());
3214 my_host_impl->SetViewportSize(root_size, root_size); 3213 my_host_impl->SetViewportSize(root_size);
3215 3214
3216 scoped_ptr<LayerImpl> root = 3215 scoped_ptr<LayerImpl> root =
3217 LayerImpl::Create(my_host_impl->active_tree(), 1); 3216 LayerImpl::Create(my_host_impl->active_tree(), 1);
3218 root_ptr = root.get(); 3217 root_ptr = root.get();
3219 3218
3220 root->SetAnchorPoint(gfx::PointF()); 3219 root->SetAnchorPoint(gfx::PointF());
3221 root->SetPosition(gfx::PointF()); 3220 root->SetPosition(gfx::PointF());
3222 root->SetBounds(root_size); 3221 root->SetBounds(root_size);
3223 root->SetContentBounds(root_size); 3222 root->SetContentBounds(root_size);
3224 root->SetDrawsContent(true); 3223 root->SetDrawsContent(true);
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
3323 LayerImpl* layer_s1_ptr; 3322 LayerImpl* layer_s1_ptr;
3324 LayerImpl* layer_s2_ptr; 3323 LayerImpl* layer_s2_ptr;
3325 3324
3326 scoped_ptr<OutputSurface> output_surface = 3325 scoped_ptr<OutputSurface> output_surface =
3327 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>( 3326 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>(
3328 new PartialSwapContext)).PassAs<OutputSurface>(); 3327 new PartialSwapContext)).PassAs<OutputSurface>();
3329 3328
3330 gfx::Size root_size(1000, 1000); 3329 gfx::Size root_size(1000, 1000);
3331 3330
3332 my_host_impl->InitializeRenderer(output_surface.Pass()); 3331 my_host_impl->InitializeRenderer(output_surface.Pass());
3333 my_host_impl->SetViewportSize(root_size, root_size); 3332 my_host_impl->SetViewportSize(root_size);
3334 3333
3335 scoped_ptr<LayerImpl> root = 3334 scoped_ptr<LayerImpl> root =
3336 LayerImpl::Create(my_host_impl->active_tree(), 1); 3335 LayerImpl::Create(my_host_impl->active_tree(), 1);
3337 root_ptr = root.get(); 3336 root_ptr = root.get();
3338 3337
3339 root->SetAnchorPoint(gfx::PointF()); 3338 root->SetAnchorPoint(gfx::PointF());
3340 root->SetPosition(gfx::PointF()); 3339 root->SetPosition(gfx::PointF());
3341 root->SetBounds(root_size); 3340 root->SetBounds(root_size);
3342 root->SetContentBounds(root_size); 3341 root->SetContentBounds(root_size);
3343 root->SetDrawsContent(true); 3342 root->SetDrawsContent(true);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
3444 LayerImpl* layer_s1_ptr; 3443 LayerImpl* layer_s1_ptr;
3445 LayerImpl* layer_s2_ptr; 3444 LayerImpl* layer_s2_ptr;
3446 3445
3447 scoped_ptr<OutputSurface> output_surface = 3446 scoped_ptr<OutputSurface> output_surface =
3448 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>( 3447 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>(
3449 new PartialSwapContext)).PassAs<OutputSurface>(); 3448 new PartialSwapContext)).PassAs<OutputSurface>();
3450 3449
3451 gfx::Size root_size(1000, 1000); 3450 gfx::Size root_size(1000, 1000);
3452 3451
3453 my_host_impl->InitializeRenderer(output_surface.Pass()); 3452 my_host_impl->InitializeRenderer(output_surface.Pass());
3454 my_host_impl->SetViewportSize(root_size, root_size); 3453 my_host_impl->SetViewportSize(root_size);
3455 3454
3456 scoped_ptr<LayerImpl> root = 3455 scoped_ptr<LayerImpl> root =
3457 LayerImpl::Create(my_host_impl->active_tree(), 1); 3456 LayerImpl::Create(my_host_impl->active_tree(), 1);
3458 root_ptr = root.get(); 3457 root_ptr = root.get();
3459 3458
3460 root->SetAnchorPoint(gfx::PointF()); 3459 root->SetAnchorPoint(gfx::PointF());
3461 root->SetPosition(gfx::PointF()); 3460 root->SetPosition(gfx::PointF());
3462 root->SetBounds(root_size); 3461 root->SetBounds(root_size);
3463 root->SetContentBounds(root_size); 3462 root->SetContentBounds(root_size);
3464 root->SetDrawsContent(true); 3463 root->SetDrawsContent(true);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
3534 LayerImpl* root_ptr; 3533 LayerImpl* root_ptr;
3535 LayerImpl* layer_s1_ptr; 3534 LayerImpl* layer_s1_ptr;
3536 3535
3537 scoped_ptr<OutputSurface> output_surface = 3536 scoped_ptr<OutputSurface> output_surface =
3538 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>( 3537 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>(
3539 new PartialSwapContext)).PassAs<OutputSurface>(); 3538 new PartialSwapContext)).PassAs<OutputSurface>();
3540 3539
3541 gfx::Size root_size(1000, 1000); 3540 gfx::Size root_size(1000, 1000);
3542 3541
3543 my_host_impl->InitializeRenderer(output_surface.Pass()); 3542 my_host_impl->InitializeRenderer(output_surface.Pass());
3544 my_host_impl->SetViewportSize(root_size, root_size); 3543 my_host_impl->SetViewportSize(root_size);
3545 3544
3546 scoped_ptr<LayerImpl> root = 3545 scoped_ptr<LayerImpl> root =
3547 LayerImpl::Create(my_host_impl->active_tree(), 1); 3546 LayerImpl::Create(my_host_impl->active_tree(), 1);
3548 root_ptr = root.get(); 3547 root_ptr = root.get();
3549 3548
3550 root->SetAnchorPoint(gfx::PointF()); 3549 root->SetAnchorPoint(gfx::PointF());
3551 root->SetPosition(gfx::PointF()); 3550 root->SetPosition(gfx::PointF());
3552 root->SetBounds(root_size); 3551 root->SetBounds(root_size);
3553 root->SetContentBounds(root_size); 3552 root->SetContentBounds(root_size);
3554 root->SetDrawsContent(true); 3553 root->SetDrawsContent(true);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
3625 LayerImpl* layer_s1_ptr; 3624 LayerImpl* layer_s1_ptr;
3626 LayerImpl* layer_s2_ptr; 3625 LayerImpl* layer_s2_ptr;
3627 3626
3628 scoped_ptr<OutputSurface> output_surface = 3627 scoped_ptr<OutputSurface> output_surface =
3629 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>( 3628 FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>(
3630 new PartialSwapContext)).PassAs<OutputSurface>(); 3629 new PartialSwapContext)).PassAs<OutputSurface>();
3631 3630
3632 gfx::Size root_size(1000, 1000); 3631 gfx::Size root_size(1000, 1000);
3633 3632
3634 my_host_impl->InitializeRenderer(output_surface.Pass()); 3633 my_host_impl->InitializeRenderer(output_surface.Pass());
3635 my_host_impl->SetViewportSize(root_size, root_size); 3634 my_host_impl->SetViewportSize(root_size);
3636 3635
3637 scoped_ptr<LayerImpl> root = 3636 scoped_ptr<LayerImpl> root =
3638 LayerImpl::Create(my_host_impl->active_tree(), 1); 3637 LayerImpl::Create(my_host_impl->active_tree(), 1);
3639 root_ptr = root.get(); 3638 root_ptr = root.get();
3640 3639
3641 root->SetAnchorPoint(gfx::PointF()); 3640 root->SetAnchorPoint(gfx::PointF());
3642 root->SetPosition(gfx::PointF()); 3641 root->SetPosition(gfx::PointF());
3643 root->SetBounds(root_size); 3642 root->SetBounds(root_size);
3644 root->SetContentBounds(root_size); 3643 root->SetContentBounds(root_size);
3645 root->SetDrawsContent(true); 3644 root->SetDrawsContent(true);
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
3787 grand_child->SetBounds(grand_child_rect.size()); 3786 grand_child->SetBounds(grand_child_rect.size());
3788 grand_child->SetContentBounds(grand_child->bounds()); 3787 grand_child->SetContentBounds(grand_child->bounds());
3789 grand_child->SetDrawsContent(true); 3788 grand_child->SetDrawsContent(true);
3790 3789
3791 TiledLayerImpl* child_ptr = child.get(); 3790 TiledLayerImpl* child_ptr = child.get();
3792 RenderPass::Id child_pass_id(child_ptr->id(), 0); 3791 RenderPass::Id child_pass_id(child_ptr->id(), 0);
3793 3792
3794 child->AddChild(grand_child.Pass()); 3793 child->AddChild(grand_child.Pass());
3795 root->AddChild(child.PassAs<LayerImpl>()); 3794 root->AddChild(child.PassAs<LayerImpl>());
3796 my_host_impl->active_tree()->SetRootLayer(root.Pass()); 3795 my_host_impl->active_tree()->SetRootLayer(root.Pass());
3797 my_host_impl->SetViewportSize(root_rect.size(), root_rect.size()); 3796 my_host_impl->SetViewportSize(root_rect.size());
3798 3797
3799 EXPECT_FALSE(my_host_impl->renderer()->HaveCachedResourcesForRenderPassId( 3798 EXPECT_FALSE(my_host_impl->renderer()->HaveCachedResourcesForRenderPassId(
3800 child_pass_id)); 3799 child_pass_id));
3801 { 3800 {
3802 LayerTreeHostImpl::FrameData frame; 3801 LayerTreeHostImpl::FrameData frame;
3803 host_impl_->SetFullRootLayerDamage(); 3802 host_impl_->SetFullRootLayerDamage();
3804 EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); 3803 EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect()));
3805 my_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); 3804 my_host_impl->DrawLayers(&frame, base::TimeTicks::Now());
3806 my_host_impl->DidDrawAllLayers(frame); 3805 my_host_impl->DidDrawAllLayers(frame);
3807 } 3806 }
(...skipping 1006 matching lines...) Expand 10 before | Expand all | Expand 10 after
4814 mask_layer->SetBounds(scaling_layer_size); 4813 mask_layer->SetBounds(scaling_layer_size);
4815 mask_layer->SetContentBounds(scaling_layer_size); 4814 mask_layer->SetContentBounds(scaling_layer_size);
4816 mask_layer->SetPosition(gfx::PointF()); 4815 mask_layer->SetPosition(gfx::PointF());
4817 mask_layer->SetAnchorPoint(gfx::PointF()); 4816 mask_layer->SetAnchorPoint(gfx::PointF());
4818 mask_layer->SetDrawsContent(true); 4817 mask_layer->SetDrawsContent(true);
4819 4818
4820 4819
4821 // Check that the tree scaling is correctly taken into account for the mask, 4820 // Check that the tree scaling is correctly taken into account for the mask,
4822 // that should fully map onto the quad. 4821 // that should fully map onto the quad.
4823 float device_scale_factor = 1.f; 4822 float device_scale_factor = 1.f;
4824 host_impl_->SetViewportSize(root_size, root_size); 4823 host_impl_->SetViewportSize(root_size);
4825 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4824 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4826 { 4825 {
4827 LayerTreeHostImpl::FrameData frame; 4826 LayerTreeHostImpl::FrameData frame;
4828 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4827 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4829 4828
4830 ASSERT_EQ(1u, frame.render_passes.size()); 4829 ASSERT_EQ(1u, frame.render_passes.size());
4831 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4830 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4832 ASSERT_EQ(DrawQuad::RENDER_PASS, 4831 ASSERT_EQ(DrawQuad::RENDER_PASS,
4833 frame.render_passes[0]->quad_list[0]->material); 4832 frame.render_passes[0]->quad_list[0]->material);
4834 const RenderPassDrawQuad* render_pass_quad = 4833 const RenderPassDrawQuad* render_pass_quad =
4835 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4834 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4836 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 4835 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
4837 render_pass_quad->rect.ToString()); 4836 render_pass_quad->rect.ToString());
4838 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4837 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
4839 render_pass_quad->mask_uv_rect.ToString()); 4838 render_pass_quad->mask_uv_rect.ToString());
4840 4839
4841 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 4840 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
4842 host_impl_->DidDrawAllLayers(frame); 4841 host_impl_->DidDrawAllLayers(frame);
4843 } 4842 }
4844 4843
4845 4844
4846 // Applying a DSF should change the render surface size, but won't affect 4845 // Applying a DSF should change the render surface size, but won't affect
4847 // which part of the mask is used. 4846 // which part of the mask is used.
4848 device_scale_factor = 2.f; 4847 device_scale_factor = 2.f;
4849 gfx::Size device_viewport = 4848 gfx::Size device_viewport =
4850 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 4849 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
4851 host_impl_->SetViewportSize(root_size, device_viewport); 4850 host_impl_->SetViewportSize(device_viewport);
4852 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4851 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4853 host_impl_->active_tree()->set_needs_update_draw_properties(); 4852 host_impl_->active_tree()->set_needs_update_draw_properties();
4854 { 4853 {
4855 LayerTreeHostImpl::FrameData frame; 4854 LayerTreeHostImpl::FrameData frame;
4856 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4855 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4857 4856
4858 ASSERT_EQ(1u, frame.render_passes.size()); 4857 ASSERT_EQ(1u, frame.render_passes.size());
4859 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4858 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4860 ASSERT_EQ(DrawQuad::RENDER_PASS, 4859 ASSERT_EQ(DrawQuad::RENDER_PASS,
4861 frame.render_passes[0]->quad_list[0]->material); 4860 frame.render_passes[0]->quad_list[0]->material);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
4936 gfx::Size mask_size(100, 100); 4935 gfx::Size mask_size(100, 100);
4937 mask_layer->SetBounds(mask_size); 4936 mask_layer->SetBounds(mask_size);
4938 mask_layer->SetContentBounds(mask_size); 4937 mask_layer->SetContentBounds(mask_size);
4939 mask_layer->SetPosition(gfx::PointF()); 4938 mask_layer->SetPosition(gfx::PointF());
4940 mask_layer->SetAnchorPoint(gfx::PointF()); 4939 mask_layer->SetAnchorPoint(gfx::PointF());
4941 mask_layer->SetDrawsContent(true); 4940 mask_layer->SetDrawsContent(true);
4942 4941
4943 4942
4944 // Check that the mask fills the surface. 4943 // Check that the mask fills the surface.
4945 float device_scale_factor = 1.f; 4944 float device_scale_factor = 1.f;
4946 host_impl_->SetViewportSize(root_size, root_size); 4945 host_impl_->SetViewportSize(root_size);
4947 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4946 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4948 { 4947 {
4949 LayerTreeHostImpl::FrameData frame; 4948 LayerTreeHostImpl::FrameData frame;
4950 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4949 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4951 4950
4952 ASSERT_EQ(1u, frame.render_passes.size()); 4951 ASSERT_EQ(1u, frame.render_passes.size());
4953 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4952 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4954 ASSERT_EQ(DrawQuad::RENDER_PASS, 4953 ASSERT_EQ(DrawQuad::RENDER_PASS,
4955 frame.render_passes[0]->quad_list[0]->material); 4954 frame.render_passes[0]->quad_list[0]->material);
4956 const RenderPassDrawQuad* render_pass_quad = 4955 const RenderPassDrawQuad* render_pass_quad =
4957 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4956 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]);
4958 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), 4957 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(),
4959 render_pass_quad->rect.ToString()); 4958 render_pass_quad->rect.ToString());
4960 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4959 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
4961 render_pass_quad->mask_uv_rect.ToString()); 4960 render_pass_quad->mask_uv_rect.ToString());
4962 4961
4963 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 4962 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
4964 host_impl_->DidDrawAllLayers(frame); 4963 host_impl_->DidDrawAllLayers(frame);
4965 } 4964 }
4966 4965
4967 4966
4968 // Applying a DSF should change the render surface size, but won't affect 4967 // Applying a DSF should change the render surface size, but won't affect
4969 // which part of the mask is used. 4968 // which part of the mask is used.
4970 device_scale_factor = 2.f; 4969 device_scale_factor = 2.f;
4971 gfx::Size device_viewport = 4970 gfx::Size device_viewport =
4972 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 4971 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
4973 host_impl_->SetViewportSize(root_size, device_viewport); 4972 host_impl_->SetViewportSize(device_viewport);
4974 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4973 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4975 host_impl_->active_tree()->set_needs_update_draw_properties(); 4974 host_impl_->active_tree()->set_needs_update_draw_properties();
4976 { 4975 {
4977 LayerTreeHostImpl::FrameData frame; 4976 LayerTreeHostImpl::FrameData frame;
4978 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); 4977 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
4979 4978
4980 ASSERT_EQ(1u, frame.render_passes.size()); 4979 ASSERT_EQ(1u, frame.render_passes.size());
4981 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4980 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4982 ASSERT_EQ(DrawQuad::RENDER_PASS, 4981 ASSERT_EQ(DrawQuad::RENDER_PASS,
4983 frame.render_passes[0]->quad_list[0]->material); 4982 frame.render_passes[0]->quad_list[0]->material);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
5043 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5042 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5044 render_pass_quad->mask_uv_rect.ToString()); 5043 render_pass_quad->mask_uv_rect.ToString());
5045 5044
5046 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); 5045 host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
5047 host_impl_->DidDrawAllLayers(frame); 5046 host_impl_->DidDrawAllLayers(frame);
5048 } 5047 }
5049 } 5048 }
5050 5049
5051 } // namespace 5050 } // namespace
5052 } // namespace cc 5051 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698