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

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

Issue 1944623002: CC Animation: Use ElementId to attach CC animation players. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@erasedomids
Patch Set: Let CC clients generate their own ElementIds locally. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 // Create both an inner viewport scroll layer and an outer viewport scroll 274 // Create both an inner viewport scroll layer and an outer viewport scroll
275 // layer. The MaxScrollOffset of the outer viewport scroll layer will be 275 // layer. The MaxScrollOffset of the outer viewport scroll layer will be
276 // 0x0, so the scrolls will be applied directly to the inner viewport. 276 // 0x0, so the scrolls will be applied directly to the inner viewport.
277 const int kOuterViewportClipLayerId = 116; 277 const int kOuterViewportClipLayerId = 116;
278 const int kOuterViewportScrollLayerId = 117; 278 const int kOuterViewportScrollLayerId = 117;
279 const int kContentLayerId = 118; 279 const int kContentLayerId = 118;
280 const int kInnerViewportScrollLayerId = 2; 280 const int kInnerViewportScrollLayerId = 2;
281 const int kInnerViewportClipLayerId = 4; 281 const int kInnerViewportClipLayerId = 4;
282 const int kPageScaleLayerId = 5; 282 const int kPageScaleLayerId = 5;
283 283
284 std::unique_ptr<LayerImpl> root = LayerImpl::Create(layer_tree_impl, 1); 284 std::unique_ptr<LayerImpl> root = CreateTestLayerImpl(layer_tree_impl, 1);
285 root->SetBounds(content_size); 285 root->SetBounds(content_size);
286 root->SetPosition(gfx::PointF()); 286 root->SetPosition(gfx::PointF());
287 root->test_properties()->force_render_surface = true; 287 root->test_properties()->force_render_surface = true;
288 288
289 std::unique_ptr<LayerImpl> inner_scroll = 289 std::unique_ptr<LayerImpl> inner_scroll =
290 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); 290 CreateTestLayerImpl(layer_tree_impl, kInnerViewportScrollLayerId);
291 inner_scroll->test_properties()->is_container_for_fixed_position_layers = 291 inner_scroll->test_properties()->is_container_for_fixed_position_layers =
292 true; 292 true;
293 inner_scroll->layer_tree_impl() 293 inner_scroll->layer_tree_impl()
294 ->property_trees() 294 ->property_trees()
295 ->scroll_tree.UpdateScrollOffsetBaseForTesting(inner_scroll->id(), 295 ->scroll_tree.UpdateScrollOffsetBaseForTesting(inner_scroll->id(),
296 gfx::ScrollOffset()); 296 gfx::ScrollOffset());
297 297
298 std::unique_ptr<LayerImpl> inner_clip = 298 std::unique_ptr<LayerImpl> inner_clip =
299 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); 299 CreateTestLayerImpl(layer_tree_impl, kInnerViewportClipLayerId);
300 inner_clip->SetBounds( 300 inner_clip->SetBounds(
301 gfx::Size(content_size.width() / 2, content_size.height() / 2)); 301 gfx::Size(content_size.width() / 2, content_size.height() / 2));
302 302
303 std::unique_ptr<LayerImpl> page_scale = 303 std::unique_ptr<LayerImpl> page_scale =
304 LayerImpl::Create(layer_tree_impl, kPageScaleLayerId); 304 CreateTestLayerImpl(layer_tree_impl, kPageScaleLayerId);
305 305
306 inner_scroll->SetScrollClipLayer(inner_clip->id()); 306 inner_scroll->SetScrollClipLayer(inner_clip->id());
307 inner_scroll->SetBounds(content_size); 307 inner_scroll->SetBounds(content_size);
308 inner_scroll->SetPosition(gfx::PointF()); 308 inner_scroll->SetPosition(gfx::PointF());
309 309
310 std::unique_ptr<LayerImpl> outer_clip = 310 std::unique_ptr<LayerImpl> outer_clip =
311 LayerImpl::Create(layer_tree_impl, kOuterViewportClipLayerId); 311 CreateTestLayerImpl(layer_tree_impl, kOuterViewportClipLayerId);
312 outer_clip->SetBounds(content_size); 312 outer_clip->SetBounds(content_size);
313 outer_clip->test_properties()->is_container_for_fixed_position_layers = 313 outer_clip->test_properties()->is_container_for_fixed_position_layers =
314 true; 314 true;
315 315
316 std::unique_ptr<LayerImpl> outer_scroll = 316 std::unique_ptr<LayerImpl> outer_scroll =
317 LayerImpl::Create(layer_tree_impl, kOuterViewportScrollLayerId); 317 CreateTestLayerImpl(layer_tree_impl, kOuterViewportScrollLayerId);
318 outer_scroll->SetScrollClipLayer(outer_clip->id()); 318 outer_scroll->SetScrollClipLayer(outer_clip->id());
319 outer_scroll->layer_tree_impl() 319 outer_scroll->layer_tree_impl()
320 ->property_trees() 320 ->property_trees()
321 ->scroll_tree.UpdateScrollOffsetBaseForTesting(outer_scroll->id(), 321 ->scroll_tree.UpdateScrollOffsetBaseForTesting(outer_scroll->id(),
322 gfx::ScrollOffset()); 322 gfx::ScrollOffset());
323 outer_scroll->SetBounds(content_size); 323 outer_scroll->SetBounds(content_size);
324 outer_scroll->SetPosition(gfx::PointF()); 324 outer_scroll->SetPosition(gfx::PointF());
325 325
326 std::unique_ptr<LayerImpl> contents = 326 std::unique_ptr<LayerImpl> contents =
327 LayerImpl::Create(layer_tree_impl, kContentLayerId); 327 CreateTestLayerImpl(layer_tree_impl, kContentLayerId);
328 contents->SetDrawsContent(true); 328 contents->SetDrawsContent(true);
329 contents->SetBounds(content_size); 329 contents->SetBounds(content_size);
330 contents->SetPosition(gfx::PointF()); 330 contents->SetPosition(gfx::PointF());
331 331
332 outer_scroll->AddChild(std::move(contents)); 332 outer_scroll->AddChild(std::move(contents));
333 outer_clip->AddChild(std::move(outer_scroll)); 333 outer_clip->AddChild(std::move(outer_scroll));
334 inner_scroll->AddChild(std::move(outer_clip)); 334 inner_scroll->AddChild(std::move(outer_clip));
335 page_scale->AddChild(std::move(inner_scroll)); 335 page_scale->AddChild(std::move(inner_scroll));
336 inner_clip->AddChild(std::move(page_scale)); 336 inner_clip->AddChild(std::move(page_scale));
337 root->AddChild(std::move(inner_clip)); 337 root->AddChild(std::move(inner_clip));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 382
383 return content_layer; 383 return content_layer;
384 } 384 }
385 385
386 std::unique_ptr<LayerImpl> CreateScrollableLayer(int id, 386 std::unique_ptr<LayerImpl> CreateScrollableLayer(int id,
387 const gfx::Size& size, 387 const gfx::Size& size,
388 LayerImpl* clip_layer) { 388 LayerImpl* clip_layer) {
389 DCHECK(clip_layer); 389 DCHECK(clip_layer);
390 DCHECK(id != clip_layer->id()); 390 DCHECK(id != clip_layer->id());
391 std::unique_ptr<LayerImpl> layer = 391 std::unique_ptr<LayerImpl> layer =
392 LayerImpl::Create(host_impl_->active_tree(), id); 392 CreateTestLayerImpl(host_impl_->active_tree(), id);
393 layer->SetScrollClipLayer(clip_layer->id()); 393 layer->SetScrollClipLayer(clip_layer->id());
394 layer->SetDrawsContent(true); 394 layer->SetDrawsContent(true);
395 layer->SetBounds(size); 395 layer->SetBounds(size);
396 clip_layer->SetBounds(gfx::Size(size.width() / 2, size.height() / 2)); 396 clip_layer->SetBounds(gfx::Size(size.width() / 2, size.height() / 2));
397 return layer; 397 return layer;
398 } 398 }
399 399
400 std::unique_ptr<ScrollState> BeginState(const gfx::Point& point) { 400 std::unique_ptr<ScrollState> BeginState(const gfx::Point& point) {
401 ScrollStateData scroll_state_data; 401 ScrollStateData scroll_state_data;
402 scroll_state_data.is_beginning = true; 402 scroll_state_data.is_beginning = true;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor); 452 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor);
453 void pinch_zoom_pan_viewport_test(float device_scale_factor); 453 void pinch_zoom_pan_viewport_test(float device_scale_factor);
454 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor); 454 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor);
455 void pinch_zoom_pan_viewport_and_scroll_boundary_test( 455 void pinch_zoom_pan_viewport_and_scroll_boundary_test(
456 float device_scale_factor); 456 float device_scale_factor);
457 457
458 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor); 458 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor);
459 459
460 scoped_refptr<AnimationTimeline> timeline() { return timeline_; } 460 scoped_refptr<AnimationTimeline> timeline() { return timeline_; }
461 461
462 std::unique_ptr<LayerImpl> CreateTestLayerImpl(LayerTreeImpl* tree_impl,
463 int id) {
464 auto layer = LayerImpl::Create(tree_impl, id);
465 layer->SetElementId(NextTestElementId());
466 return layer;
467 }
468
462 protected: 469 protected:
463 virtual std::unique_ptr<OutputSurface> CreateOutputSurface() { 470 virtual std::unique_ptr<OutputSurface> CreateOutputSurface() {
464 return FakeOutputSurface::Create3d(); 471 return FakeOutputSurface::Create3d();
465 } 472 }
466 473
467 void DrawOneFrame() { 474 void DrawOneFrame() {
468 LayerTreeHostImpl::FrameData frame_data; 475 LayerTreeHostImpl::FrameData frame_data;
469 PrepareToDrawFrame(&frame_data); 476 PrepareToDrawFrame(&frame_data);
470 host_impl_->DidDrawAllLayers(frame_data); 477 host_impl_->DidDrawAllLayers(frame_data);
471 } 478 }
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 ASSERT_FALSE(host_impl_->active_tree()->root_layer()); 590 ASSERT_FALSE(host_impl_->active_tree()->root_layer());
584 591
585 std::unique_ptr<ScrollAndScaleSet> scroll_info = 592 std::unique_ptr<ScrollAndScaleSet> scroll_info =
586 host_impl_->ProcessScrollDeltas(); 593 host_impl_->ProcessScrollDeltas();
587 ASSERT_EQ(scroll_info->scrolls.size(), 0u); 594 ASSERT_EQ(scroll_info->scrolls.size(), 0u);
588 } 595 }
589 596
590 TEST_F(LayerTreeHostImplTest, ScrollDeltaTreeButNoChanges) { 597 TEST_F(LayerTreeHostImplTest, ScrollDeltaTreeButNoChanges) {
591 { 598 {
592 std::unique_ptr<LayerImpl> root = 599 std::unique_ptr<LayerImpl> root =
593 LayerImpl::Create(host_impl_->active_tree(), 1); 600 CreateTestLayerImpl(host_impl_->active_tree(), 1);
594 root->AddChild(LayerImpl::Create(host_impl_->active_tree(), 2)); 601 root->AddChild(CreateTestLayerImpl(host_impl_->active_tree(), 2));
595 root->AddChild(LayerImpl::Create(host_impl_->active_tree(), 3)); 602 root->AddChild(CreateTestLayerImpl(host_impl_->active_tree(), 3));
596 root->children()[1]->AddChild( 603 root->children()[1]->AddChild(
597 LayerImpl::Create(host_impl_->active_tree(), 4)); 604 CreateTestLayerImpl(host_impl_->active_tree(), 4));
598 root->children()[1]->AddChild( 605 root->children()[1]->AddChild(
599 LayerImpl::Create(host_impl_->active_tree(), 5)); 606 CreateTestLayerImpl(host_impl_->active_tree(), 5));
600 root->children()[1]->children()[0]->AddChild( 607 root->children()[1]->children()[0]->AddChild(
601 LayerImpl::Create(host_impl_->active_tree(), 6)); 608 CreateTestLayerImpl(host_impl_->active_tree(), 6));
602 host_impl_->active_tree()->SetRootLayer(std::move(root)); 609 host_impl_->active_tree()->SetRootLayer(std::move(root));
603 } 610 }
604 LayerImpl* root = host_impl_->active_tree()->root_layer(); 611 LayerImpl* root = host_impl_->active_tree()->root_layer();
605 612
606 ExpectClearedScrollDeltasRecursive(root); 613 ExpectClearedScrollDeltasRecursive(root);
607 614
608 std::unique_ptr<ScrollAndScaleSet> scroll_info; 615 std::unique_ptr<ScrollAndScaleSet> scroll_info;
609 616
610 scroll_info = host_impl_->ProcessScrollDeltas(); 617 scroll_info = host_impl_->ProcessScrollDeltas();
611 ASSERT_EQ(scroll_info->scrolls.size(), 0u); 618 ASSERT_EQ(scroll_info->scrolls.size(), 0u);
612 ExpectClearedScrollDeltasRecursive(root); 619 ExpectClearedScrollDeltasRecursive(root);
613 620
614 scroll_info = host_impl_->ProcessScrollDeltas(); 621 scroll_info = host_impl_->ProcessScrollDeltas();
615 ASSERT_EQ(scroll_info->scrolls.size(), 0u); 622 ASSERT_EQ(scroll_info->scrolls.size(), 0u);
616 ExpectClearedScrollDeltasRecursive(root); 623 ExpectClearedScrollDeltasRecursive(root);
617 } 624 }
618 625
619 TEST_F(LayerTreeHostImplTest, ScrollDeltaRepeatedScrolls) { 626 TEST_F(LayerTreeHostImplTest, ScrollDeltaRepeatedScrolls) {
620 gfx::ScrollOffset scroll_offset(20, 30); 627 gfx::ScrollOffset scroll_offset(20, 30);
621 gfx::Vector2d scroll_delta(11, -15); 628 gfx::Vector2d scroll_delta(11, -15);
622 { 629 {
623 std::unique_ptr<LayerImpl> root_clip = 630 std::unique_ptr<LayerImpl> root_clip =
624 LayerImpl::Create(host_impl_->active_tree(), 2); 631 CreateTestLayerImpl(host_impl_->active_tree(), 2);
625 std::unique_ptr<LayerImpl> root = 632 std::unique_ptr<LayerImpl> root =
626 LayerImpl::Create(host_impl_->active_tree(), 1); 633 CreateTestLayerImpl(host_impl_->active_tree(), 1);
627 root_clip->SetBounds(gfx::Size(10, 10)); 634 root_clip->SetBounds(gfx::Size(10, 10));
628 LayerImpl* root_layer = root.get(); 635 LayerImpl* root_layer = root.get();
629 root_clip->AddChild(std::move(root)); 636 root_clip->AddChild(std::move(root));
630 root_layer->SetBounds(gfx::Size(110, 110)); 637 root_layer->SetBounds(gfx::Size(110, 110));
631 root_layer->SetScrollClipLayer(root_clip->id()); 638 root_layer->SetScrollClipLayer(root_clip->id());
632 root_layer->layer_tree_impl() 639 root_layer->layer_tree_impl()
633 ->property_trees() 640 ->property_trees()
634 ->scroll_tree.UpdateScrollOffsetBaseForTesting(root_layer->id(), 641 ->scroll_tree.UpdateScrollOffsetBaseForTesting(root_layer->id(),
635 scroll_offset); 642 scroll_offset);
636 host_impl_->active_tree()->SetRootLayer(std::move(root_clip)); 643 host_impl_->active_tree()->SetRootLayer(std::move(root_clip));
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 809
803 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnTouchEventHandlers) { 810 TEST_F(LayerTreeHostImplTest, ScrollBlocksOnTouchEventHandlers) {
804 LayerImpl* scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 811 LayerImpl* scroll = SetupScrollAndContentsLayers(gfx::Size(100, 100));
805 host_impl_->SetViewportSize(gfx::Size(50, 50)); 812 host_impl_->SetViewportSize(gfx::Size(50, 50));
806 DrawFrame(); 813 DrawFrame();
807 LayerImpl* root = host_impl_->active_tree()->root_layer(); 814 LayerImpl* root = host_impl_->active_tree()->root_layer();
808 815
809 LayerImpl* child = 0; 816 LayerImpl* child = 0;
810 { 817 {
811 std::unique_ptr<LayerImpl> child_layer = 818 std::unique_ptr<LayerImpl> child_layer =
812 LayerImpl::Create(host_impl_->active_tree(), 6); 819 CreateTestLayerImpl(host_impl_->active_tree(), 6);
813 child = child_layer.get(); 820 child = child_layer.get();
814 child_layer->SetDrawsContent(true); 821 child_layer->SetDrawsContent(true);
815 child_layer->SetPosition(gfx::PointF(0, 20)); 822 child_layer->SetPosition(gfx::PointF(0, 20));
816 child_layer->SetBounds(gfx::Size(50, 50)); 823 child_layer->SetBounds(gfx::Size(50, 50));
817 scroll->AddChild(std::move(child_layer)); 824 scroll->AddChild(std::move(child_layer));
818 SetNeedsRebuildPropertyTrees(); 825 SetNeedsRebuildPropertyTrees();
819 RebuildPropertyTrees(); 826 RebuildPropertyTrees();
820 } 827 }
821 828
822 // Touch handler regions determine whether touch events block scroll. 829 // Touch handler regions determine whether touch events block scroll.
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 status.main_thread_scrolling_reasons); 943 status.main_thread_scrolling_reasons);
937 } 944 }
938 945
939 TEST_F(LayerTreeHostImplTest, ScrollWithOverlappingNonScrollableLayer) { 946 TEST_F(LayerTreeHostImplTest, ScrollWithOverlappingNonScrollableLayer) {
940 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree(); 947 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree();
941 gfx::Size content_size = gfx::Size(360, 600); 948 gfx::Size content_size = gfx::Size(360, 600);
942 gfx::Size scroll_content_size = gfx::Size(345, 3800); 949 gfx::Size scroll_content_size = gfx::Size(345, 3800);
943 gfx::Size scrollbar_size = gfx::Size(15, 600); 950 gfx::Size scrollbar_size = gfx::Size(15, 600);
944 951
945 host_impl_->SetViewportSize(content_size); 952 host_impl_->SetViewportSize(content_size);
946 std::unique_ptr<LayerImpl> root = LayerImpl::Create(layer_tree_impl, 1); 953 std::unique_ptr<LayerImpl> root = CreateTestLayerImpl(layer_tree_impl, 1);
947 root->SetBounds(content_size); 954 root->SetBounds(content_size);
948 root->SetPosition(gfx::PointF()); 955 root->SetPosition(gfx::PointF());
949 956
950 std::unique_ptr<LayerImpl> clip = LayerImpl::Create(layer_tree_impl, 2); 957 std::unique_ptr<LayerImpl> clip = CreateTestLayerImpl(layer_tree_impl, 2);
951 clip->SetBounds(content_size); 958 clip->SetBounds(content_size);
952 clip->SetPosition(gfx::PointF()); 959 clip->SetPosition(gfx::PointF());
953 960
954 std::unique_ptr<LayerImpl> scroll = LayerImpl::Create(layer_tree_impl, 3); 961 std::unique_ptr<LayerImpl> scroll = CreateTestLayerImpl(layer_tree_impl, 3);
955 scroll->SetBounds(scroll_content_size); 962 scroll->SetBounds(scroll_content_size);
956 scroll->SetScrollClipLayer(clip->id()); 963 scroll->SetScrollClipLayer(clip->id());
957 scroll->SetDrawsContent(true); 964 scroll->SetDrawsContent(true);
958 965
959 std::unique_ptr<SolidColorScrollbarLayerImpl> scrollbar = 966 std::unique_ptr<SolidColorScrollbarLayerImpl> scrollbar =
960 SolidColorScrollbarLayerImpl::Create(layer_tree_impl, 4, VERTICAL, 10, 0, 967 SolidColorScrollbarLayerImpl::Create(layer_tree_impl, 4, VERTICAL, 10, 0,
961 false, true); 968 false, true);
962 scrollbar->SetBounds(scrollbar_size); 969 scrollbar->SetBounds(scrollbar_size);
963 scrollbar->SetPosition(gfx::PointF(345, 0)); 970 scrollbar->SetPosition(gfx::PointF(345, 0));
964 scrollbar->SetScrollLayerId(scroll->id()); 971 scrollbar->SetScrollLayerId(scroll->id());
965 scrollbar->SetDrawsContent(true); 972 scrollbar->SetDrawsContent(true);
966 scrollbar->SetOpacity(1.f); 973 scrollbar->SetOpacity(1.f);
967 974
968 std::unique_ptr<LayerImpl> squash1 = LayerImpl::Create(layer_tree_impl, 5); 975 std::unique_ptr<LayerImpl> squash1 = CreateTestLayerImpl(layer_tree_impl, 5);
969 squash1->SetBounds(gfx::Size(140, 300)); 976 squash1->SetBounds(gfx::Size(140, 300));
970 squash1->SetPosition(gfx::PointF(220, 0)); 977 squash1->SetPosition(gfx::PointF(220, 0));
971 squash1->SetDrawsContent(true); 978 squash1->SetDrawsContent(true);
972 979
973 std::unique_ptr<LayerImpl> squash2 = LayerImpl::Create(layer_tree_impl, 6); 980 std::unique_ptr<LayerImpl> squash2 = CreateTestLayerImpl(layer_tree_impl, 6);
974 squash2->SetBounds(gfx::Size(140, 300)); 981 squash2->SetBounds(gfx::Size(140, 300));
975 squash2->SetPosition(gfx::PointF(220, 300)); 982 squash2->SetPosition(gfx::PointF(220, 300));
976 squash2->SetDrawsContent(true); 983 squash2->SetDrawsContent(true);
977 984
978 scroll->AddChild(std::move(squash2)); 985 scroll->AddChild(std::move(squash2));
979 clip->AddChild(std::move(scroll)); 986 clip->AddChild(std::move(scroll));
980 clip->AddChild(std::move(scrollbar)); 987 clip->AddChild(std::move(scrollbar));
981 clip->AddChild(std::move(squash1)); 988 clip->AddChild(std::move(squash1));
982 root->AddChild(std::move(clip)); 989 root->AddChild(std::move(clip));
983 990
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
1296 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset()); 1303 EXPECT_VECTOR_EQ(gfx::Vector2dF(10, 20), overflow->CurrentScrollOffset());
1297 } 1304 }
1298 1305
1299 TEST_F(LayerTreeHostImplTest, AnimationSchedulingPendingTree) { 1306 TEST_F(LayerTreeHostImplTest, AnimationSchedulingPendingTree) {
1300 EXPECT_FALSE(host_impl_->CommitToActiveTree()); 1307 EXPECT_FALSE(host_impl_->CommitToActiveTree());
1301 1308
1302 host_impl_->SetViewportSize(gfx::Size(50, 50)); 1309 host_impl_->SetViewportSize(gfx::Size(50, 50));
1303 1310
1304 host_impl_->CreatePendingTree(); 1311 host_impl_->CreatePendingTree();
1305 host_impl_->pending_tree()->SetRootLayer( 1312 host_impl_->pending_tree()->SetRootLayer(
1306 LayerImpl::Create(host_impl_->pending_tree(), 1)); 1313 CreateTestLayerImpl(host_impl_->pending_tree(), 1));
1307 LayerImpl* root = host_impl_->pending_tree()->root_layer(); 1314 LayerImpl* root = host_impl_->pending_tree()->root_layer();
1308 root->SetBounds(gfx::Size(50, 50)); 1315 root->SetBounds(gfx::Size(50, 50));
1309 root->test_properties()->force_render_surface = true; 1316 root->test_properties()->force_render_surface = true;
1310 1317
1311 root->AddChild(LayerImpl::Create(host_impl_->pending_tree(), 2)); 1318 root->AddChild(CreateTestLayerImpl(host_impl_->pending_tree(), 2));
1312 LayerImpl* child = root->children()[0]; 1319 LayerImpl* child = root->children()[0];
1313 child->SetBounds(gfx::Size(10, 10)); 1320 child->SetBounds(gfx::Size(10, 10));
1314 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); 1321 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10);
1315 child->SetDrawsContent(true); 1322 child->SetDrawsContent(true);
1316 AddAnimatedTransformToLayerWithPlayer(child->id(), timeline(), 10.0, 3, 0); 1323 AddAnimatedTransformToElementWithPlayer(child->element_id(), timeline(), 10.0,
1324 3, 0);
1317 1325
1318 EXPECT_FALSE(did_request_next_frame_); 1326 EXPECT_FALSE(did_request_next_frame_);
1319 EXPECT_FALSE(did_request_redraw_); 1327 EXPECT_FALSE(did_request_redraw_);
1320 EXPECT_FALSE(did_request_commit_); 1328 EXPECT_FALSE(did_request_commit_);
1321 1329
1322 host_impl_->AnimatePendingTreeAfterCommit(); 1330 host_impl_->AnimatePendingTreeAfterCommit();
1323 1331
1324 // An animation exists on the pending layer. Doing 1332 // An animation exists on the pending layer. Doing
1325 // AnimatePendingTreeAfterCommit() requests another frame. 1333 // AnimatePendingTreeAfterCommit() requests another frame.
1326 // In reality, animations without has_set_start_time() == true do not need to 1334 // In reality, animations without has_set_start_time() == true do not need to
(...skipping 19 matching lines...) Expand all
1346 EXPECT_FALSE(did_request_redraw_); 1354 EXPECT_FALSE(did_request_redraw_);
1347 EXPECT_FALSE(did_request_commit_); 1355 EXPECT_FALSE(did_request_commit_);
1348 } 1356 }
1349 1357
1350 TEST_F(LayerTreeHostImplTest, AnimationSchedulingActiveTree) { 1358 TEST_F(LayerTreeHostImplTest, AnimationSchedulingActiveTree) {
1351 EXPECT_FALSE(host_impl_->CommitToActiveTree()); 1359 EXPECT_FALSE(host_impl_->CommitToActiveTree());
1352 1360
1353 host_impl_->SetViewportSize(gfx::Size(50, 50)); 1361 host_impl_->SetViewportSize(gfx::Size(50, 50));
1354 1362
1355 host_impl_->active_tree()->SetRootLayer( 1363 host_impl_->active_tree()->SetRootLayer(
1356 LayerImpl::Create(host_impl_->active_tree(), 1)); 1364 CreateTestLayerImpl(host_impl_->active_tree(), 1));
1357 LayerImpl* root = host_impl_->active_tree()->root_layer(); 1365 LayerImpl* root = host_impl_->active_tree()->root_layer();
1358 root->SetBounds(gfx::Size(50, 50)); 1366 root->SetBounds(gfx::Size(50, 50));
1359 root->test_properties()->force_render_surface = true; 1367 root->test_properties()->force_render_surface = true;
1360 1368
1361 root->AddChild(LayerImpl::Create(host_impl_->active_tree(), 2)); 1369 root->AddChild(CreateTestLayerImpl(host_impl_->active_tree(), 2));
1362 LayerImpl* child = root->children()[0]; 1370 LayerImpl* child = root->children()[0];
1363 child->SetBounds(gfx::Size(10, 10)); 1371 child->SetBounds(gfx::Size(10, 10));
1364 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); 1372 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10);
1365 child->SetDrawsContent(true); 1373 child->SetDrawsContent(true);
1366 1374
1367 // Add a translate from 6,7 to 8,9. 1375 // Add a translate from 6,7 to 8,9.
1368 TransformOperations start; 1376 TransformOperations start;
1369 start.AppendTranslate(6.f, 7.f, 0.f); 1377 start.AppendTranslate(6.f, 7.f, 0.f);
1370 TransformOperations end; 1378 TransformOperations end;
1371 end.AppendTranslate(8.f, 9.f, 0.f); 1379 end.AppendTranslate(8.f, 9.f, 0.f);
1372 AddAnimatedTransformToLayerWithPlayer(child->id(), timeline(), 4.0, start, 1380 AddAnimatedTransformToElementWithPlayer(child->element_id(), timeline(), 4.0,
1373 end); 1381 start, end);
1374 1382
1375 base::TimeTicks now = base::TimeTicks::Now(); 1383 base::TimeTicks now = base::TimeTicks::Now();
1376 host_impl_->WillBeginImplFrame( 1384 host_impl_->WillBeginImplFrame(
1377 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, now)); 1385 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, now));
1378 1386
1379 // TODO(crbug.com/551134): We always request a new frame and a draw for 1387 // TODO(crbug.com/551134): We always request a new frame and a draw for
1380 // animations that are on the pending tree, but we don't need to do that 1388 // animations that are on the pending tree, but we don't need to do that
1381 // unless they are waiting for some future time to start. 1389 // unless they are waiting for some future time to start.
1382 EXPECT_TRUE(did_request_next_frame_); 1390 EXPECT_TRUE(did_request_next_frame_);
1383 EXPECT_TRUE(did_request_redraw_); 1391 EXPECT_TRUE(did_request_redraw_);
(...skipping 26 matching lines...) Expand all
1410 1418
1411 TEST_F(LayerTreeHostImplTest, AnimationSchedulingCommitToActiveTree) { 1419 TEST_F(LayerTreeHostImplTest, AnimationSchedulingCommitToActiveTree) {
1412 FakeImplTaskRunnerProvider provider(nullptr); 1420 FakeImplTaskRunnerProvider provider(nullptr);
1413 CreateHostImplWithTaskRunnerProvider(DefaultSettings(), CreateOutputSurface(), 1421 CreateHostImplWithTaskRunnerProvider(DefaultSettings(), CreateOutputSurface(),
1414 &provider); 1422 &provider);
1415 EXPECT_TRUE(host_impl_->CommitToActiveTree()); 1423 EXPECT_TRUE(host_impl_->CommitToActiveTree());
1416 1424
1417 host_impl_->SetViewportSize(gfx::Size(50, 50)); 1425 host_impl_->SetViewportSize(gfx::Size(50, 50));
1418 1426
1419 host_impl_->active_tree()->SetRootLayer( 1427 host_impl_->active_tree()->SetRootLayer(
1420 LayerImpl::Create(host_impl_->active_tree(), 1)); 1428 CreateTestLayerImpl(host_impl_->active_tree(), 1));
1421 LayerImpl* root = host_impl_->active_tree()->root_layer(); 1429 LayerImpl* root = host_impl_->active_tree()->root_layer();
1422 root->SetBounds(gfx::Size(50, 50)); 1430 root->SetBounds(gfx::Size(50, 50));
1423 root->SetHasRenderSurface(true); 1431 root->SetHasRenderSurface(true);
1424 1432
1425 root->AddChild(LayerImpl::Create(host_impl_->active_tree(), 2)); 1433 root->AddChild(CreateTestLayerImpl(host_impl_->active_tree(), 2));
1426 LayerImpl* child = root->children()[0]; 1434 LayerImpl* child = root->children()[0];
1427 child->SetBounds(gfx::Size(10, 10)); 1435 child->SetBounds(gfx::Size(10, 10));
1428 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); 1436 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10);
1429 child->SetDrawsContent(true); 1437 child->SetDrawsContent(true);
1430 AddAnimatedTransformToLayerWithPlayer(child->id(), timeline(), 10.0, 3, 0); 1438 AddAnimatedTransformToElementWithPlayer(child->element_id(), timeline(), 10.0,
1439 3, 0);
1431 1440
1432 // Set up the property trees so that UpdateDrawProperties will work in 1441 // Set up the property trees so that UpdateDrawProperties will work in
1433 // CommitComplete below. 1442 // CommitComplete below.
1434 LayerImplList list; 1443 LayerImplList list;
1435 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 1444 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
1436 root, gfx::Size(50, 50), &list); 1445 root, gfx::Size(50, 50), &list);
1437 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); 1446 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
1438 1447
1439 EXPECT_FALSE(did_request_next_frame_); 1448 EXPECT_FALSE(did_request_next_frame_);
1440 EXPECT_FALSE(did_request_redraw_); 1449 EXPECT_FALSE(did_request_redraw_);
1441 EXPECT_FALSE(did_request_commit_); 1450 EXPECT_FALSE(did_request_commit_);
1442 1451
1443 host_impl_->CommitComplete(); 1452 host_impl_->CommitComplete();
1444 1453
1445 // Animations on the active tree should be started and ticked, and a new frame 1454 // Animations on the active tree should be started and ticked, and a new frame
1446 // should be requested to continue ticking them. 1455 // should be requested to continue ticking them.
1447 EXPECT_TRUE(did_request_next_frame_); 1456 EXPECT_TRUE(did_request_next_frame_);
1448 EXPECT_TRUE(did_request_redraw_); 1457 EXPECT_TRUE(did_request_redraw_);
1449 EXPECT_FALSE(did_request_commit_); 1458 EXPECT_FALSE(did_request_commit_);
1450 1459
1451 // Delete the LayerTreeHostImpl before the TaskRunnerProvider goes away. 1460 // Delete the LayerTreeHostImpl before the TaskRunnerProvider goes away.
1452 host_impl_ = nullptr; 1461 host_impl_ = nullptr;
1453 } 1462 }
1454 1463
1455 class MissingTilesLayer : public LayerImpl { 1464 class MissingTilesLayer : public LayerImpl {
1456 public: 1465 public:
1457 MissingTilesLayer(LayerTreeImpl* layer_tree_impl, int id) 1466 MissingTilesLayer(LayerTreeImpl* layer_tree_impl, int id)
1458 : LayerImpl(layer_tree_impl, id), has_missing_tiles_(true) {} 1467 : LayerImpl(layer_tree_impl, id), has_missing_tiles_(true) {
1468 SetElementId(NextTestElementId());
1469 }
1459 1470
1460 void set_has_missing_tiles(bool has_missing_tiles) { 1471 void set_has_missing_tiles(bool has_missing_tiles) {
1461 has_missing_tiles_ = has_missing_tiles; 1472 has_missing_tiles_ = has_missing_tiles;
1462 } 1473 }
1463 1474
1464 void AppendQuads(RenderPass* render_pass, 1475 void AppendQuads(RenderPass* render_pass,
1465 AppendQuadsData* append_quads_data) override { 1476 AppendQuadsData* append_quads_data) override {
1466 append_quads_data->num_missing_tiles += has_missing_tiles_; 1477 append_quads_data->num_missing_tiles += has_missing_tiles_;
1467 } 1478 }
1468 1479
1469 private: 1480 private:
1470 bool has_missing_tiles_; 1481 bool has_missing_tiles_;
1471 }; 1482 };
1472 1483
1473 TEST_F(LayerTreeHostImplTest, AnimationMarksLayerNotReady) { 1484 TEST_F(LayerTreeHostImplTest, AnimationMarksLayerNotReady) {
1474 host_impl_->SetViewportSize(gfx::Size(50, 50)); 1485 host_impl_->SetViewportSize(gfx::Size(50, 50));
1475 1486
1476 host_impl_->active_tree()->SetRootLayer( 1487 host_impl_->active_tree()->SetRootLayer(
1477 LayerImpl::Create(host_impl_->active_tree(), 1)); 1488 CreateTestLayerImpl(host_impl_->active_tree(), 1));
1478 LayerImpl* root = host_impl_->active_tree()->root_layer(); 1489 LayerImpl* root = host_impl_->active_tree()->root_layer();
1479 root->SetBounds(gfx::Size(50, 50)); 1490 root->SetBounds(gfx::Size(50, 50));
1480 root->SetHasRenderSurface(true); 1491 root->SetHasRenderSurface(true);
1481 1492
1482 root->AddChild(std::unique_ptr<MissingTilesLayer>( 1493 root->AddChild(std::unique_ptr<MissingTilesLayer>(
1483 new MissingTilesLayer(host_impl_->active_tree(), 2))); 1494 new MissingTilesLayer(host_impl_->active_tree(), 2)));
1484 MissingTilesLayer* child = 1495 MissingTilesLayer* child =
1485 static_cast<MissingTilesLayer*>(root->children()[0]); 1496 static_cast<MissingTilesLayer*>(root->children()[0]);
1486 child->SetBounds(gfx::Size(10, 10)); 1497 child->SetBounds(gfx::Size(10, 10));
1487 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); 1498 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10);
1488 child->SetDrawsContent(true); 1499 child->SetDrawsContent(true);
1489 1500
1490 EXPECT_TRUE(child->was_ever_ready_since_last_transform_animation()); 1501 EXPECT_TRUE(child->was_ever_ready_since_last_transform_animation());
1491 1502
1492 // Add a translate from 6,7 to 8,9. 1503 // Add a translate from 6,7 to 8,9.
1493 TransformOperations start; 1504 TransformOperations start;
1494 start.AppendTranslate(6.f, 7.f, 0.f); 1505 start.AppendTranslate(6.f, 7.f, 0.f);
1495 TransformOperations end; 1506 TransformOperations end;
1496 end.AppendTranslate(8.f, 9.f, 0.f); 1507 end.AppendTranslate(8.f, 9.f, 0.f);
1497 int animation_id = AddAnimatedTransformToLayerWithPlayer( 1508 int animation_id = AddAnimatedTransformToElementWithPlayer(
1498 child->id(), timeline(), 4.0, start, end); 1509 child->element_id(), timeline(), 4.0, start, end);
1499 1510
1500 base::TimeTicks now = base::TimeTicks::Now(); 1511 base::TimeTicks now = base::TimeTicks::Now();
1501 host_impl_->WillBeginImplFrame( 1512 host_impl_->WillBeginImplFrame(
1502 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, now)); 1513 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, now));
1503 1514
1504 host_impl_->ActivateAnimations(); 1515 host_impl_->ActivateAnimations();
1505 host_impl_->Animate(); 1516 host_impl_->Animate();
1506 1517
1507 EXPECT_FALSE(child->was_ever_ready_since_last_transform_animation()); 1518 EXPECT_FALSE(child->was_ever_ready_since_last_transform_animation());
1508 1519
(...skipping 10 matching lines...) Expand all
1519 child->set_has_missing_tiles(false); 1530 child->set_has_missing_tiles(false);
1520 1531
1521 // Child layer has an animating and no missing tiles. 1532 // Child layer has an animating and no missing tiles.
1522 result = host_impl_->PrepareToDraw(&frame); 1533 result = host_impl_->PrepareToDraw(&frame);
1523 EXPECT_EQ(DRAW_SUCCESS, result); 1534 EXPECT_EQ(DRAW_SUCCESS, result);
1524 EXPECT_TRUE(child->was_ever_ready_since_last_transform_animation()); 1535 EXPECT_TRUE(child->was_ever_ready_since_last_transform_animation());
1525 host_impl_->DidDrawAllLayers(frame); 1536 host_impl_->DidDrawAllLayers(frame);
1526 1537
1527 // Remove the animation. 1538 // Remove the animation.
1528 child->set_has_missing_tiles(true); 1539 child->set_has_missing_tiles(true);
1529 RemoveAnimationFromLayerWithExistingPlayer(child->id(), timeline(), 1540 RemoveAnimationFromElementWithExistingPlayer(child->element_id(), timeline(),
1530 animation_id); 1541 animation_id);
1531 child->draw_properties().screen_space_transform_is_animating = false; 1542 child->draw_properties().screen_space_transform_is_animating = false;
1532 1543
1533 // Child layer doesn't have an animation, but was never ready since the last 1544 // Child layer doesn't have an animation, but was never ready since the last
1534 // time it animated (and has missing tiles). 1545 // time it animated (and has missing tiles).
1535 result = host_impl_->PrepareToDraw(&frame); 1546 result = host_impl_->PrepareToDraw(&frame);
1536 EXPECT_EQ(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, result); 1547 EXPECT_EQ(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, result);
1537 EXPECT_FALSE(child->was_ever_ready_since_last_transform_animation()); 1548 EXPECT_FALSE(child->was_ever_ready_since_last_transform_animation());
1538 host_impl_->DidDrawAllLayers(frame); 1549 host_impl_->DidDrawAllLayers(frame);
1539 1550
1540 child->set_has_missing_tiles(false); 1551 child->set_has_missing_tiles(false);
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
1987 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 1998 SetupScrollAndContentsLayers(gfx::Size(100, 100));
1988 host_impl_->SetViewportSize(gfx::Size(50, 50)); 1999 host_impl_->SetViewportSize(gfx::Size(50, 50));
1989 2000
1990 // Set up two scrolling children of the root, one of which is a scroll parent 2001 // Set up two scrolling children of the root, one of which is a scroll parent
1991 // to the other. Scrolls shouldn't bubbling from the child. 2002 // to the other. Scrolls shouldn't bubbling from the child.
1992 LayerImpl *parent; 2003 LayerImpl *parent;
1993 LayerImpl *child; 2004 LayerImpl *child;
1994 LayerImpl *child_clip; 2005 LayerImpl *child_clip;
1995 2006
1996 std::unique_ptr<LayerImpl> scroll_parent_clip = 2007 std::unique_ptr<LayerImpl> scroll_parent_clip =
1997 LayerImpl::Create(host_impl_->active_tree(), 6); 2008 CreateTestLayerImpl(host_impl_->active_tree(), 6);
1998 std::unique_ptr<LayerImpl> scroll_parent = 2009 std::unique_ptr<LayerImpl> scroll_parent =
1999 CreateScrollableLayer(7, gfx::Size(10, 10), scroll_parent_clip.get()); 2010 CreateScrollableLayer(7, gfx::Size(10, 10), scroll_parent_clip.get());
2000 parent = scroll_parent.get(); 2011 parent = scroll_parent.get();
2001 scroll_parent_clip->AddChild(std::move(scroll_parent)); 2012 scroll_parent_clip->AddChild(std::move(scroll_parent));
2002 2013
2003 viewport_scroll->AddChild(std::move(scroll_parent_clip)); 2014 viewport_scroll->AddChild(std::move(scroll_parent_clip));
2004 2015
2005 std::unique_ptr<LayerImpl> scroll_child_clip = 2016 std::unique_ptr<LayerImpl> scroll_child_clip =
2006 LayerImpl::Create(host_impl_->active_tree(), 8); 2017 CreateTestLayerImpl(host_impl_->active_tree(), 8);
2007 std::unique_ptr<LayerImpl> scroll_child = 2018 std::unique_ptr<LayerImpl> scroll_child =
2008 CreateScrollableLayer(9, gfx::Size(10, 10), scroll_child_clip.get()); 2019 CreateScrollableLayer(9, gfx::Size(10, 10), scroll_child_clip.get());
2009 child = scroll_child.get(); 2020 child = scroll_child.get();
2010 scroll_child->SetPosition(gfx::PointF(20.f, 20.f)); 2021 scroll_child->SetPosition(gfx::PointF(20.f, 20.f));
2011 scroll_child_clip->AddChild(std::move(scroll_child)); 2022 scroll_child_clip->AddChild(std::move(scroll_child));
2012 2023
2013 child_clip = scroll_child_clip.get(); 2024 child_clip = scroll_child_clip.get();
2014 viewport_scroll->AddChild(std::move(scroll_child_clip)); 2025 viewport_scroll->AddChild(std::move(scroll_child_clip));
2015 2026
2016 child_clip->test_properties()->scroll_parent = parent; 2027 child_clip->test_properties()->scroll_parent = parent;
(...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after
2922 host_impl_->active_tree()->InnerViewportContainerLayer()->SetBounds( 2933 host_impl_->active_tree()->InnerViewportContainerLayer()->SetBounds(
2923 inner_viewport_size); 2934 inner_viewport_size);
2924 host_impl_->active_tree()->OuterViewportContainerLayer()->SetBounds( 2935 host_impl_->active_tree()->OuterViewportContainerLayer()->SetBounds(
2925 outer_viewport_size); 2936 outer_viewport_size);
2926 LayerImpl* root_scroll = 2937 LayerImpl* root_scroll =
2927 host_impl_->active_tree()->OuterViewportScrollLayer(); 2938 host_impl_->active_tree()->OuterViewportScrollLayer();
2928 std::unique_ptr<SolidColorScrollbarLayerImpl> horiz_scrollbar = 2939 std::unique_ptr<SolidColorScrollbarLayerImpl> horiz_scrollbar =
2929 SolidColorScrollbarLayerImpl::Create(host_impl_->active_tree(), horiz_id, 2940 SolidColorScrollbarLayerImpl::Create(host_impl_->active_tree(), horiz_id,
2930 HORIZONTAL, 5, 5, true, true); 2941 HORIZONTAL, 5, 5, true, true);
2931 std::unique_ptr<LayerImpl> child = 2942 std::unique_ptr<LayerImpl> child =
2932 LayerImpl::Create(host_impl_->active_tree(), child_scroll_id); 2943 CreateTestLayerImpl(host_impl_->active_tree(), child_scroll_id);
2933 child->SetBounds(content_size); 2944 child->SetBounds(content_size);
2934 std::unique_ptr<LayerImpl> child_clip = 2945 std::unique_ptr<LayerImpl> child_clip =
2935 LayerImpl::Create(host_impl_->active_tree(), child_clip_id); 2946 CreateTestLayerImpl(host_impl_->active_tree(), child_clip_id);
2936 child->SetBounds(inner_viewport_size); 2947 child->SetBounds(inner_viewport_size);
2937 2948
2938 horiz_scrollbar->SetScrollLayerId(root_scroll->id()); 2949 horiz_scrollbar->SetScrollLayerId(root_scroll->id());
2939 2950
2940 EXPECT_EQ(300, horiz_scrollbar->clip_layer_length()); 2951 EXPECT_EQ(300, horiz_scrollbar->clip_layer_length());
2941 } 2952 }
2942 2953
2943 TEST_F(LayerTreeHostImplTest, ScrollbarRegistration) { 2954 TEST_F(LayerTreeHostImplTest, ScrollbarRegistration) {
2944 LayerTreeSettings settings = DefaultSettings(); 2955 LayerTreeSettings settings = DefaultSettings();
2945 settings.scrollbar_animator = LayerTreeSettings::LINEAR_FADE; 2956 settings.scrollbar_animator = LayerTreeSettings::LINEAR_FADE;
(...skipping 22 matching lines...) Expand all
2968 std::unique_ptr<SolidColorScrollbarLayerImpl> horiz_1_scrollbar = 2979 std::unique_ptr<SolidColorScrollbarLayerImpl> horiz_1_scrollbar =
2969 SolidColorScrollbarLayerImpl::Create( 2980 SolidColorScrollbarLayerImpl::Create(
2970 host_impl_->active_tree(), horiz_1_id, HORIZONTAL, 5, 5, true, true); 2981 host_impl_->active_tree(), horiz_1_id, HORIZONTAL, 5, 5, true, true);
2971 std::unique_ptr<SolidColorScrollbarLayerImpl> vert_2_scrollbar = 2982 std::unique_ptr<SolidColorScrollbarLayerImpl> vert_2_scrollbar =
2972 SolidColorScrollbarLayerImpl::Create(host_impl_->active_tree(), vert_2_id, 2983 SolidColorScrollbarLayerImpl::Create(host_impl_->active_tree(), vert_2_id,
2973 VERTICAL, 5, 5, true, true); 2984 VERTICAL, 5, 5, true, true);
2974 std::unique_ptr<SolidColorScrollbarLayerImpl> horiz_2_scrollbar = 2985 std::unique_ptr<SolidColorScrollbarLayerImpl> horiz_2_scrollbar =
2975 SolidColorScrollbarLayerImpl::Create( 2986 SolidColorScrollbarLayerImpl::Create(
2976 host_impl_->active_tree(), horiz_2_id, HORIZONTAL, 5, 5, true, true); 2987 host_impl_->active_tree(), horiz_2_id, HORIZONTAL, 5, 5, true, true);
2977 std::unique_ptr<LayerImpl> child = 2988 std::unique_ptr<LayerImpl> child =
2978 LayerImpl::Create(host_impl_->active_tree(), child_scroll_id); 2989 CreateTestLayerImpl(host_impl_->active_tree(), child_scroll_id);
2979 child->SetBounds(content_size); 2990 child->SetBounds(content_size);
2980 std::unique_ptr<LayerImpl> child_clip = 2991 std::unique_ptr<LayerImpl> child_clip =
2981 LayerImpl::Create(host_impl_->active_tree(), child_clip_id); 2992 CreateTestLayerImpl(host_impl_->active_tree(), child_clip_id);
2982 child->SetBounds(viewport_size); 2993 child->SetBounds(viewport_size);
2983 LayerImpl* child_ptr = child.get(); 2994 LayerImpl* child_ptr = child.get();
2984 LayerImpl* child_clip_ptr = child_clip.get(); 2995 LayerImpl* child_clip_ptr = child_clip.get();
2985 2996
2986 // Check scrollbar registration on the viewport layers. 2997 // Check scrollbar registration on the viewport layers.
2987 EXPECT_EQ(0ul, host_impl_->ScrollbarsFor(root_scroll->id()).size()); 2998 EXPECT_EQ(0ul, host_impl_->ScrollbarsFor(root_scroll->id()).size());
2988 EXPECT_EQ(nullptr, 2999 EXPECT_EQ(nullptr,
2989 host_impl_->ScrollbarAnimationControllerForId(root_scroll->id())); 3000 host_impl_->ScrollbarAnimationControllerForId(root_scroll->id()));
2990 vert_1_scrollbar->SetScrollLayerId(root_scroll->id()); 3001 vert_1_scrollbar->SetScrollLayerId(root_scroll->id());
2991 EXPECT_EQ(1ul, host_impl_->ScrollbarsFor(root_scroll->id()).size()); 3002 EXPECT_EQ(1ul, host_impl_->ScrollbarsFor(root_scroll->id()).size());
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
3303 PassCopyRequests(&requests); 3314 PassCopyRequests(&requests);
3304 } 3315 }
3305 3316
3306 protected: 3317 protected:
3307 DidDrawCheckLayer(LayerTreeImpl* tree_impl, int id) 3318 DidDrawCheckLayer(LayerTreeImpl* tree_impl, int id)
3308 : LayerImpl(tree_impl, id), 3319 : LayerImpl(tree_impl, id),
3309 will_draw_returns_false_(false), 3320 will_draw_returns_false_(false),
3310 will_draw_called_(false), 3321 will_draw_called_(false),
3311 append_quads_called_(false), 3322 append_quads_called_(false),
3312 did_draw_called_(false) { 3323 did_draw_called_(false) {
3324 SetElementId(NextTestElementId());
3313 SetBounds(gfx::Size(10, 10)); 3325 SetBounds(gfx::Size(10, 10));
3314 SetDrawsContent(true); 3326 SetDrawsContent(true);
3315 draw_properties().visible_layer_rect = gfx::Rect(0, 0, 10, 10); 3327 draw_properties().visible_layer_rect = gfx::Rect(0, 0, 10, 10);
3316 } 3328 }
3317 3329
3318 private: 3330 private:
3319 bool will_draw_returns_false_; 3331 bool will_draw_returns_false_;
3320 bool will_draw_called_; 3332 bool will_draw_called_;
3321 bool append_quads_called_; 3333 bool append_quads_called_;
3322 bool did_draw_called_; 3334 bool did_draw_called_;
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
3518 int id, 3530 int id,
3519 bool tile_missing, 3531 bool tile_missing,
3520 bool had_incomplete_tile, 3532 bool had_incomplete_tile,
3521 bool animating, 3533 bool animating,
3522 ResourceProvider* resource_provider, 3534 ResourceProvider* resource_provider,
3523 scoped_refptr<AnimationTimeline> timeline) 3535 scoped_refptr<AnimationTimeline> timeline)
3524 : DidDrawCheckLayer(tree_impl, id), 3536 : DidDrawCheckLayer(tree_impl, id),
3525 tile_missing_(tile_missing), 3537 tile_missing_(tile_missing),
3526 had_incomplete_tile_(had_incomplete_tile) { 3538 had_incomplete_tile_(had_incomplete_tile) {
3527 if (animating) 3539 if (animating)
3528 AddAnimatedTransformToLayerWithPlayer(this->id(), timeline, 10.0, 3, 0); 3540 AddAnimatedTransformToElementWithPlayer(this->element_id(), timeline,
3541 10.0, 3, 0);
3529 } 3542 }
3530 3543
3531 bool tile_missing_; 3544 bool tile_missing_;
3532 bool had_incomplete_tile_; 3545 bool had_incomplete_tile_;
3533 }; 3546 };
3534 3547
3535 struct PrepareToDrawSuccessTestCase { 3548 struct PrepareToDrawSuccessTestCase {
3536 struct State { 3549 struct State {
3537 bool has_missing_tile = false; 3550 bool has_missing_tile = false;
3538 bool has_incomplete_tile = false; 3551 bool has_incomplete_tile = false;
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
3775 host_impl_->SetRequiresHighResToDraw(); 3788 host_impl_->SetRequiresHighResToDraw();
3776 3789
3777 SetNeedsRebuildPropertyTrees(); 3790 SetNeedsRebuildPropertyTrees();
3778 host_impl_->OnDraw(external_transform, external_viewport, external_clip, 3791 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
3779 resourceless_software_draw); 3792 resourceless_software_draw);
3780 } 3793 }
3781 } 3794 }
3782 3795
3783 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { 3796 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) {
3784 std::unique_ptr<LayerImpl> root = 3797 std::unique_ptr<LayerImpl> root =
3785 LayerImpl::Create(host_impl_->active_tree(), 1); 3798 CreateTestLayerImpl(host_impl_->active_tree(), 1);
3786 root->SetScrollClipLayer(Layer::INVALID_ID); 3799 root->SetScrollClipLayer(Layer::INVALID_ID);
3787 root->test_properties()->force_render_surface = true; 3800 root->test_properties()->force_render_surface = true;
3788 host_impl_->active_tree()->SetRootLayer(std::move(root)); 3801 host_impl_->active_tree()->SetRootLayer(std::move(root));
3789 SetNeedsRebuildPropertyTrees(); 3802 SetNeedsRebuildPropertyTrees();
3790 DrawFrame(); 3803 DrawFrame();
3791 3804
3792 // Scroll event is ignored because layer is not scrollable. 3805 // Scroll event is ignored because layer is not scrollable.
3793 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( 3806 InputHandler::ScrollStatus status = host_impl_->ScrollBegin(
3794 BeginState(gfx::Point()).get(), InputHandler::WHEEL); 3807 BeginState(gfx::Point()).get(), InputHandler::WHEEL);
3795 EXPECT_EQ(InputHandler::SCROLL_IGNORED, status.thread); 3808 EXPECT_EQ(InputHandler::SCROLL_IGNORED, status.thread);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
3862 LayerTreeImpl* tree_impl, 3875 LayerTreeImpl* tree_impl,
3863 const gfx::Size& inner_viewport_size, 3876 const gfx::Size& inner_viewport_size,
3864 const gfx::Size& outer_viewport_size, 3877 const gfx::Size& outer_viewport_size,
3865 const gfx::Size& scroll_layer_size) { 3878 const gfx::Size& scroll_layer_size) {
3866 tree_impl->set_top_controls_shrink_blink_size(true); 3879 tree_impl->set_top_controls_shrink_blink_size(true);
3867 tree_impl->set_top_controls_height(top_controls_height_); 3880 tree_impl->set_top_controls_height(top_controls_height_);
3868 tree_impl->SetCurrentTopControlsShownRatio(1.f); 3881 tree_impl->SetCurrentTopControlsShownRatio(1.f);
3869 tree_impl->PushPageScaleFromMainThread(1.f, 1.f, 1.f); 3882 tree_impl->PushPageScaleFromMainThread(1.f, 1.f, 1.f);
3870 host_impl_->DidChangeTopControlsPosition(); 3883 host_impl_->DidChangeTopControlsPosition();
3871 3884
3872 std::unique_ptr<LayerImpl> root = LayerImpl::Create(tree_impl, 1); 3885 std::unique_ptr<LayerImpl> root = CreateTestLayerImpl(tree_impl, 1);
3873 std::unique_ptr<LayerImpl> root_clip = LayerImpl::Create(tree_impl, 2); 3886 std::unique_ptr<LayerImpl> root_clip = CreateTestLayerImpl(tree_impl, 2);
3874 std::unique_ptr<LayerImpl> page_scale = LayerImpl::Create(tree_impl, 3); 3887 std::unique_ptr<LayerImpl> page_scale = CreateTestLayerImpl(tree_impl, 3);
3875 3888
3876 std::unique_ptr<LayerImpl> outer_scroll = LayerImpl::Create(tree_impl, 4); 3889 std::unique_ptr<LayerImpl> outer_scroll = CreateTestLayerImpl(tree_impl, 4);
3877 std::unique_ptr<LayerImpl> outer_clip = LayerImpl::Create(tree_impl, 5); 3890 std::unique_ptr<LayerImpl> outer_clip = CreateTestLayerImpl(tree_impl, 5);
3878 3891
3879 root_clip->SetBounds(inner_viewport_size); 3892 root_clip->SetBounds(inner_viewport_size);
3880 root->SetScrollClipLayer(root_clip->id()); 3893 root->SetScrollClipLayer(root_clip->id());
3881 root->SetBounds(outer_viewport_size); 3894 root->SetBounds(outer_viewport_size);
3882 root->SetPosition(gfx::PointF()); 3895 root->SetPosition(gfx::PointF());
3883 root->SetDrawsContent(false); 3896 root->SetDrawsContent(false);
3884 root_clip->test_properties()->force_render_surface = true; 3897 root_clip->test_properties()->force_render_surface = true;
3885 root->test_properties()->is_container_for_fixed_position_layers = true; 3898 root->test_properties()->is_container_for_fixed_position_layers = true;
3886 outer_clip->SetBounds(outer_viewport_size); 3899 outer_clip->SetBounds(outer_viewport_size);
3887 outer_scroll->SetScrollClipLayer(outer_clip->id()); 3900 outer_scroll->SetScrollClipLayer(outer_clip->id());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
3928 TEST_F(LayerTreeHostImplTopControlsTest, 3941 TEST_F(LayerTreeHostImplTopControlsTest,
3929 HidingTopControlsExpandsScrollableSize) { 3942 HidingTopControlsExpandsScrollableSize) {
3930 SetupTopControlsAndScrollLayerWithVirtualViewport( 3943 SetupTopControlsAndScrollLayerWithVirtualViewport(
3931 gfx::Size(50, 50), gfx::Size(50, 50), gfx::Size(50, 50)); 3944 gfx::Size(50, 50), gfx::Size(50, 50), gfx::Size(50, 50));
3932 3945
3933 LayerTreeImpl* active_tree = host_impl_->active_tree(); 3946 LayerTreeImpl* active_tree = host_impl_->active_tree();
3934 3947
3935 // Create a content layer beneath the outer viewport scroll layer. 3948 // Create a content layer beneath the outer viewport scroll layer.
3936 int id = host_impl_->OuterViewportScrollLayer()->id(); 3949 int id = host_impl_->OuterViewportScrollLayer()->id();
3937 host_impl_->OuterViewportScrollLayer()->AddChild( 3950 host_impl_->OuterViewportScrollLayer()->AddChild(
3938 LayerImpl::Create(host_impl_->active_tree(), id + 2)); 3951 CreateTestLayerImpl(host_impl_->active_tree(), id + 2));
3939 LayerImpl* content = active_tree->OuterViewportScrollLayer()->children()[0]; 3952 LayerImpl* content = active_tree->OuterViewportScrollLayer()->children()[0];
3940 content->SetBounds(gfx::Size(50, 50)); 3953 content->SetBounds(gfx::Size(50, 50));
3941 3954
3942 SetNeedsRebuildPropertyTrees(); 3955 SetNeedsRebuildPropertyTrees();
3943 DrawFrame(); 3956 DrawFrame();
3944 3957
3945 LayerImpl* inner_container = active_tree->InnerViewportContainerLayer(); 3958 LayerImpl* inner_container = active_tree->InnerViewportContainerLayer();
3946 LayerImpl* outer_container = active_tree->OuterViewportContainerLayer(); 3959 LayerImpl* outer_container = active_tree->OuterViewportContainerLayer();
3947 3960
3948 // The top controls should start off showing so the viewport should be shrunk. 3961 // The top controls should start off showing so the viewport should be shrunk.
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
4191 DrawFrame(); 4204 DrawFrame();
4192 4205
4193 // Show top controls 4206 // Show top controls
4194 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4207 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio());
4195 4208
4196 LayerImpl* outer_viewport_scroll_layer = 4209 LayerImpl* outer_viewport_scroll_layer =
4197 host_impl_->active_tree()->OuterViewportScrollLayer(); 4210 host_impl_->active_tree()->OuterViewportScrollLayer();
4198 int id = outer_viewport_scroll_layer->id(); 4211 int id = outer_viewport_scroll_layer->id();
4199 4212
4200 std::unique_ptr<LayerImpl> child = 4213 std::unique_ptr<LayerImpl> child =
4201 LayerImpl::Create(host_impl_->active_tree(), id + 2); 4214 CreateTestLayerImpl(host_impl_->active_tree(), id + 2);
4202 std::unique_ptr<LayerImpl> child_clip = 4215 std::unique_ptr<LayerImpl> child_clip =
4203 LayerImpl::Create(host_impl_->active_tree(), id + 3); 4216 CreateTestLayerImpl(host_impl_->active_tree(), id + 3);
4204 4217
4205 child_clip->SetBounds(sub_content_layer_size); 4218 child_clip->SetBounds(sub_content_layer_size);
4206 child->SetScrollClipLayer(child_clip->id()); 4219 child->SetScrollClipLayer(child_clip->id());
4207 child->SetBounds(sub_content_size); 4220 child->SetBounds(sub_content_size);
4208 child->SetPosition(gfx::PointF()); 4221 child->SetPosition(gfx::PointF());
4209 child->SetDrawsContent(true); 4222 child->SetDrawsContent(true);
4210 child->test_properties()->is_container_for_fixed_position_layers = true; 4223 child->test_properties()->is_container_for_fixed_position_layers = true;
4211 4224
4212 // scroll child to limit 4225 // scroll child to limit
4213 SetScrollOffsetDelta(child.get(), gfx::Vector2dF(0, 100.f)); 4226 SetScrollOffsetDelta(child.get(), gfx::Vector2dF(0, 100.f));
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after
4669 EXPECT_EQ(800, outer_scroll->CurrentScrollOffset().y()); 4682 EXPECT_EQ(800, outer_scroll->CurrentScrollOffset().y());
4670 } 4683 }
4671 4684
4672 TEST_F(LayerTreeHostImplTest, ScrollNonCompositedRoot) { 4685 TEST_F(LayerTreeHostImplTest, ScrollNonCompositedRoot) {
4673 // Test the configuration where a non-composited root layer is embedded in a 4686 // Test the configuration where a non-composited root layer is embedded in a
4674 // scrollable outer layer. 4687 // scrollable outer layer.
4675 gfx::Size surface_size(10, 10); 4688 gfx::Size surface_size(10, 10);
4676 gfx::Size contents_size(20, 20); 4689 gfx::Size contents_size(20, 20);
4677 4690
4678 std::unique_ptr<LayerImpl> content_layer = 4691 std::unique_ptr<LayerImpl> content_layer =
4679 LayerImpl::Create(host_impl_->active_tree(), 1); 4692 CreateTestLayerImpl(host_impl_->active_tree(), 1);
4680 content_layer->SetDrawsContent(true); 4693 content_layer->SetDrawsContent(true);
4681 content_layer->SetPosition(gfx::PointF()); 4694 content_layer->SetPosition(gfx::PointF());
4682 content_layer->SetBounds(contents_size); 4695 content_layer->SetBounds(contents_size);
4683 4696
4684 std::unique_ptr<LayerImpl> scroll_clip_layer = 4697 std::unique_ptr<LayerImpl> scroll_clip_layer =
4685 LayerImpl::Create(host_impl_->active_tree(), 3); 4698 CreateTestLayerImpl(host_impl_->active_tree(), 3);
4686 scroll_clip_layer->SetBounds(surface_size); 4699 scroll_clip_layer->SetBounds(surface_size);
4687 4700
4688 std::unique_ptr<LayerImpl> scroll_layer = 4701 std::unique_ptr<LayerImpl> scroll_layer =
4689 LayerImpl::Create(host_impl_->active_tree(), 2); 4702 CreateTestLayerImpl(host_impl_->active_tree(), 2);
4690 scroll_layer->SetScrollClipLayer(3); 4703 scroll_layer->SetScrollClipLayer(3);
4691 scroll_layer->SetBounds(contents_size); 4704 scroll_layer->SetBounds(contents_size);
4692 scroll_layer->SetPosition(gfx::PointF()); 4705 scroll_layer->SetPosition(gfx::PointF());
4693 scroll_layer->AddChild(std::move(content_layer)); 4706 scroll_layer->AddChild(std::move(content_layer));
4694 scroll_clip_layer->AddChild(std::move(scroll_layer)); 4707 scroll_clip_layer->AddChild(std::move(scroll_layer));
4695 4708
4696 scroll_clip_layer->test_properties()->force_render_surface = true; 4709 scroll_clip_layer->test_properties()->force_render_surface = true;
4697 host_impl_->active_tree()->SetRootLayer(std::move(scroll_clip_layer)); 4710 host_impl_->active_tree()->SetRootLayer(std::move(scroll_clip_layer));
4698 host_impl_->SetViewportSize(surface_size); 4711 host_impl_->SetViewportSize(surface_size);
4699 SetNeedsRebuildPropertyTrees(); 4712 SetNeedsRebuildPropertyTrees();
4700 DrawFrame(); 4713 DrawFrame();
4701 4714
4702 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4715 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4703 host_impl_->ScrollBegin(BeginState(gfx::Point(5, 5)).get(), 4716 host_impl_->ScrollBegin(BeginState(gfx::Point(5, 5)).get(),
4704 InputHandler::WHEEL) 4717 InputHandler::WHEEL)
4705 .thread); 4718 .thread);
4706 host_impl_->ScrollBy(UpdateState(gfx::Point(), gfx::Vector2d(0, 10)).get()); 4719 host_impl_->ScrollBy(UpdateState(gfx::Point(), gfx::Vector2d(0, 10)).get());
4707 host_impl_->ScrollEnd(EndState().get()); 4720 host_impl_->ScrollEnd(EndState().get());
4708 EXPECT_TRUE(did_request_redraw_); 4721 EXPECT_TRUE(did_request_redraw_);
4709 EXPECT_TRUE(did_request_commit_); 4722 EXPECT_TRUE(did_request_commit_);
4710 } 4723 }
4711 4724
4712 TEST_F(LayerTreeHostImplTest, ScrollChildCallsCommitAndRedraw) { 4725 TEST_F(LayerTreeHostImplTest, ScrollChildCallsCommitAndRedraw) {
4713 gfx::Size surface_size(10, 10); 4726 gfx::Size surface_size(10, 10);
4714 gfx::Size contents_size(20, 20); 4727 gfx::Size contents_size(20, 20);
4715 std::unique_ptr<LayerImpl> root = 4728 std::unique_ptr<LayerImpl> root =
4716 LayerImpl::Create(host_impl_->active_tree(), 1); 4729 CreateTestLayerImpl(host_impl_->active_tree(), 1);
4717 root->SetBounds(surface_size); 4730 root->SetBounds(surface_size);
4718 root->AddChild(CreateScrollableLayer(2, contents_size, root.get())); 4731 root->AddChild(CreateScrollableLayer(2, contents_size, root.get()));
4719 root->test_properties()->force_render_surface = true; 4732 root->test_properties()->force_render_surface = true;
4720 host_impl_->active_tree()->SetRootLayer(std::move(root)); 4733 host_impl_->active_tree()->SetRootLayer(std::move(root));
4721 host_impl_->SetViewportSize(surface_size); 4734 host_impl_->SetViewportSize(surface_size);
4722 SetNeedsRebuildPropertyTrees(); 4735 SetNeedsRebuildPropertyTrees();
4723 DrawFrame(); 4736 DrawFrame();
4724 4737
4725 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4738 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4726 host_impl_->ScrollBegin(BeginState(gfx::Point(5, 5)).get(), 4739 host_impl_->ScrollBegin(BeginState(gfx::Point(5, 5)).get(),
4727 InputHandler::WHEEL) 4740 InputHandler::WHEEL)
4728 .thread); 4741 .thread);
4729 host_impl_->ScrollBy(UpdateState(gfx::Point(), gfx::Vector2d(0, 10)).get()); 4742 host_impl_->ScrollBy(UpdateState(gfx::Point(), gfx::Vector2d(0, 10)).get());
4730 host_impl_->ScrollEnd(EndState().get()); 4743 host_impl_->ScrollEnd(EndState().get());
4731 EXPECT_TRUE(did_request_redraw_); 4744 EXPECT_TRUE(did_request_redraw_);
4732 EXPECT_TRUE(did_request_commit_); 4745 EXPECT_TRUE(did_request_commit_);
4733 } 4746 }
4734 4747
4735 TEST_F(LayerTreeHostImplTest, ScrollMissesChild) { 4748 TEST_F(LayerTreeHostImplTest, ScrollMissesChild) {
4736 gfx::Size surface_size(10, 10); 4749 gfx::Size surface_size(10, 10);
4737 std::unique_ptr<LayerImpl> root = 4750 std::unique_ptr<LayerImpl> root =
4738 LayerImpl::Create(host_impl_->active_tree(), 1); 4751 CreateTestLayerImpl(host_impl_->active_tree(), 1);
4739 root->AddChild(CreateScrollableLayer(2, surface_size, root.get())); 4752 root->AddChild(CreateScrollableLayer(2, surface_size, root.get()));
4740 root->test_properties()->force_render_surface = true; 4753 root->test_properties()->force_render_surface = true;
4741 host_impl_->active_tree()->SetRootLayer(std::move(root)); 4754 host_impl_->active_tree()->SetRootLayer(std::move(root));
4742 host_impl_->SetViewportSize(surface_size); 4755 host_impl_->SetViewportSize(surface_size);
4743 SetNeedsRebuildPropertyTrees(); 4756 SetNeedsRebuildPropertyTrees();
4744 DrawFrame(); 4757 DrawFrame();
4745 4758
4746 // Scroll event is ignored because the input coordinate is outside the layer 4759 // Scroll event is ignored because the input coordinate is outside the layer
4747 // boundaries. 4760 // boundaries.
4748 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( 4761 InputHandler::ScrollStatus status = host_impl_->ScrollBegin(
4749 BeginState(gfx::Point(15, 5)).get(), InputHandler::WHEEL); 4762 BeginState(gfx::Point(15, 5)).get(), InputHandler::WHEEL);
4750 EXPECT_EQ(InputHandler::SCROLL_IGNORED, status.thread); 4763 EXPECT_EQ(InputHandler::SCROLL_IGNORED, status.thread);
4751 EXPECT_EQ(MainThreadScrollingReason::kNoScrollingLayer, 4764 EXPECT_EQ(MainThreadScrollingReason::kNoScrollingLayer,
4752 status.main_thread_scrolling_reasons); 4765 status.main_thread_scrolling_reasons);
4753 4766
4754 EXPECT_FALSE(did_request_redraw_); 4767 EXPECT_FALSE(did_request_redraw_);
4755 EXPECT_FALSE(did_request_commit_); 4768 EXPECT_FALSE(did_request_commit_);
4756 } 4769 }
4757 4770
4758 TEST_F(LayerTreeHostImplTest, ScrollMissesBackfacingChild) { 4771 TEST_F(LayerTreeHostImplTest, ScrollMissesBackfacingChild) {
4759 gfx::Size surface_size(10, 10); 4772 gfx::Size surface_size(10, 10);
4760 std::unique_ptr<LayerImpl> root = 4773 std::unique_ptr<LayerImpl> root =
4761 LayerImpl::Create(host_impl_->active_tree(), 1); 4774 CreateTestLayerImpl(host_impl_->active_tree(), 1);
4762 root->test_properties()->force_render_surface = true; 4775 root->test_properties()->force_render_surface = true;
4763 std::unique_ptr<LayerImpl> child = 4776 std::unique_ptr<LayerImpl> child =
4764 CreateScrollableLayer(2, surface_size, root.get()); 4777 CreateScrollableLayer(2, surface_size, root.get());
4765 host_impl_->SetViewportSize(surface_size); 4778 host_impl_->SetViewportSize(surface_size);
4766 4779
4767 gfx::Transform matrix; 4780 gfx::Transform matrix;
4768 matrix.RotateAboutXAxis(180.0); 4781 matrix.RotateAboutXAxis(180.0);
4769 child->SetTransform(matrix); 4782 child->SetTransform(matrix);
4770 child->test_properties()->double_sided = false; 4783 child->test_properties()->double_sided = false;
4771 4784
(...skipping 10 matching lines...) Expand all
4782 EXPECT_EQ(MainThreadScrollingReason::kNoScrollingLayer, 4795 EXPECT_EQ(MainThreadScrollingReason::kNoScrollingLayer,
4783 status.main_thread_scrolling_reasons); 4796 status.main_thread_scrolling_reasons);
4784 4797
4785 EXPECT_FALSE(did_request_redraw_); 4798 EXPECT_FALSE(did_request_redraw_);
4786 EXPECT_FALSE(did_request_commit_); 4799 EXPECT_FALSE(did_request_commit_);
4787 } 4800 }
4788 4801
4789 TEST_F(LayerTreeHostImplTest, ScrollBlockedByContentLayer) { 4802 TEST_F(LayerTreeHostImplTest, ScrollBlockedByContentLayer) {
4790 gfx::Size surface_size(10, 10); 4803 gfx::Size surface_size(10, 10);
4791 std::unique_ptr<LayerImpl> clip_layer = 4804 std::unique_ptr<LayerImpl> clip_layer =
4792 LayerImpl::Create(host_impl_->active_tree(), 3); 4805 CreateTestLayerImpl(host_impl_->active_tree(), 3);
4793 std::unique_ptr<LayerImpl> content_layer = 4806 std::unique_ptr<LayerImpl> content_layer =
4794 CreateScrollableLayer(1, surface_size, clip_layer.get()); 4807 CreateScrollableLayer(1, surface_size, clip_layer.get());
4795 content_layer->set_main_thread_scrolling_reasons( 4808 content_layer->set_main_thread_scrolling_reasons(
4796 MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects); 4809 MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects);
4797 content_layer->SetScrollClipLayer(Layer::INVALID_ID); 4810 content_layer->SetScrollClipLayer(Layer::INVALID_ID);
4798 4811
4799 // Note: we can use the same clip layer for both since both calls to 4812 // Note: we can use the same clip layer for both since both calls to
4800 // CreateScrollableLayer() use the same surface size. 4813 // CreateScrollableLayer() use the same surface size.
4801 std::unique_ptr<LayerImpl> scroll_layer = 4814 std::unique_ptr<LayerImpl> scroll_layer =
4802 CreateScrollableLayer(2, surface_size, clip_layer.get()); 4815 CreateScrollableLayer(2, surface_size, clip_layer.get());
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
4928 new_page_scale_matrix.Scale(new_page_scale, new_page_scale); 4941 new_page_scale_matrix.Scale(new_page_scale, new_page_scale);
4929 4942
4930 // Create a normal scrollable root layer and another scrollable child layer. 4943 // Create a normal scrollable root layer and another scrollable child layer.
4931 LayerImpl* scroll = SetupScrollAndContentsLayers(surface_size); 4944 LayerImpl* scroll = SetupScrollAndContentsLayers(surface_size);
4932 scroll->SetDrawsContent(true); 4945 scroll->SetDrawsContent(true);
4933 LayerImpl* root = host_impl_->active_tree()->root_layer(); 4946 LayerImpl* root = host_impl_->active_tree()->root_layer();
4934 LayerImpl* child = scroll->children()[0]; 4947 LayerImpl* child = scroll->children()[0];
4935 child->SetDrawsContent(true); 4948 child->SetDrawsContent(true);
4936 4949
4937 std::unique_ptr<LayerImpl> scrollable_child_clip = 4950 std::unique_ptr<LayerImpl> scrollable_child_clip =
4938 LayerImpl::Create(host_impl_->active_tree(), 6); 4951 CreateTestLayerImpl(host_impl_->active_tree(), 6);
4939 std::unique_ptr<LayerImpl> scrollable_child = 4952 std::unique_ptr<LayerImpl> scrollable_child =
4940 CreateScrollableLayer(7, surface_size, scrollable_child_clip.get()); 4953 CreateScrollableLayer(7, surface_size, scrollable_child_clip.get());
4941 scrollable_child_clip->AddChild(std::move(scrollable_child)); 4954 scrollable_child_clip->AddChild(std::move(scrollable_child));
4942 child->AddChild(std::move(scrollable_child_clip)); 4955 child->AddChild(std::move(scrollable_child_clip));
4943 LayerImpl* grand_child = child->children()[0]; 4956 LayerImpl* grand_child = child->children()[0];
4944 grand_child->SetDrawsContent(true); 4957 grand_child->SetDrawsContent(true);
4945 4958
4946 // Set new page scale on impl thread by pinching. 4959 // Set new page scale on impl thread by pinching.
4947 SetNeedsRebuildPropertyTrees(); 4960 SetNeedsRebuildPropertyTrees();
4948 RebuildPropertyTrees(); 4961 RebuildPropertyTrees();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
5012 // scale. 5025 // scale.
5013 EXPECT_EQ(1.f, host_impl_->active_tree()->page_scale_delta()); 5026 EXPECT_EQ(1.f, host_impl_->active_tree()->page_scale_delta());
5014 } 5027 }
5015 5028
5016 TEST_F(LayerTreeHostImplTest, ScrollChildBeyondLimit) { 5029 TEST_F(LayerTreeHostImplTest, ScrollChildBeyondLimit) {
5017 // Scroll a child layer beyond its maximum scroll range and make sure the 5030 // Scroll a child layer beyond its maximum scroll range and make sure the
5018 // parent layer isn't scrolled. 5031 // parent layer isn't scrolled.
5019 gfx::Size surface_size(10, 10); 5032 gfx::Size surface_size(10, 10);
5020 gfx::Size content_size(20, 20); 5033 gfx::Size content_size(20, 20);
5021 std::unique_ptr<LayerImpl> root = 5034 std::unique_ptr<LayerImpl> root =
5022 LayerImpl::Create(host_impl_->active_tree(), 1); 5035 CreateTestLayerImpl(host_impl_->active_tree(), 1);
5023 root->SetBounds(surface_size); 5036 root->SetBounds(surface_size);
5024 root->test_properties()->force_render_surface = true; 5037 root->test_properties()->force_render_surface = true;
5025 std::unique_ptr<LayerImpl> grand_child = 5038 std::unique_ptr<LayerImpl> grand_child =
5026 CreateScrollableLayer(3, content_size, root.get()); 5039 CreateScrollableLayer(3, content_size, root.get());
5027 5040
5028 std::unique_ptr<LayerImpl> child = 5041 std::unique_ptr<LayerImpl> child =
5029 CreateScrollableLayer(2, content_size, root.get()); 5042 CreateScrollableLayer(2, content_size, root.get());
5030 LayerImpl* grand_child_layer = grand_child.get(); 5043 LayerImpl* grand_child_layer = grand_child.get();
5031 child->AddChild(std::move(grand_child)); 5044 child->AddChild(std::move(grand_child));
5032 5045
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
5068 ExpectNone(*scroll_info.get(), child->id()); 5081 ExpectNone(*scroll_info.get(), child->id());
5069 } 5082 }
5070 } 5083 }
5071 5084
5072 TEST_F(LayerTreeHostImplTest, ScrollWithoutBubbling) { 5085 TEST_F(LayerTreeHostImplTest, ScrollWithoutBubbling) {
5073 // Scroll a child layer beyond its maximum scroll range and make sure the 5086 // Scroll a child layer beyond its maximum scroll range and make sure the
5074 // the scroll doesn't bubble up to the parent layer. 5087 // the scroll doesn't bubble up to the parent layer.
5075 gfx::Size surface_size(20, 20); 5088 gfx::Size surface_size(20, 20);
5076 gfx::Size viewport_size(10, 10); 5089 gfx::Size viewport_size(10, 10);
5077 std::unique_ptr<LayerImpl> root_ptr = 5090 std::unique_ptr<LayerImpl> root_ptr =
5078 LayerImpl::Create(host_impl_->active_tree(), 1); 5091 CreateTestLayerImpl(host_impl_->active_tree(), 1);
5079 std::unique_ptr<LayerImpl> root_clip = 5092 std::unique_ptr<LayerImpl> root_clip =
5080 LayerImpl::Create(host_impl_->active_tree(), 2); 5093 CreateTestLayerImpl(host_impl_->active_tree(), 2);
5081 root_clip->test_properties()->force_render_surface = true; 5094 root_clip->test_properties()->force_render_surface = true;
5082 std::unique_ptr<LayerImpl> root_scrolling = 5095 std::unique_ptr<LayerImpl> root_scrolling =
5083 CreateScrollableLayer(3, surface_size, root_clip.get()); 5096 CreateScrollableLayer(3, surface_size, root_clip.get());
5084 root_scrolling->test_properties()->is_container_for_fixed_position_layers = 5097 root_scrolling->test_properties()->is_container_for_fixed_position_layers =
5085 true; 5098 true;
5086 5099
5087 std::unique_ptr<LayerImpl> grand_child = 5100 std::unique_ptr<LayerImpl> grand_child =
5088 CreateScrollableLayer(5, surface_size, root_clip.get()); 5101 CreateScrollableLayer(5, surface_size, root_clip.get());
5089 5102
5090 std::unique_ptr<LayerImpl> child = 5103 std::unique_ptr<LayerImpl> child =
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
5201 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), grand_child->id(), 5214 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), grand_child->id(),
5202 gfx::Vector2d(0, 4))); 5215 gfx::Vector2d(0, 4)));
5203 } 5216 }
5204 } 5217 }
5205 TEST_F(LayerTreeHostImplTest, ScrollEventBubbling) { 5218 TEST_F(LayerTreeHostImplTest, ScrollEventBubbling) {
5206 // When we try to scroll a non-scrollable child layer, the scroll delta 5219 // When we try to scroll a non-scrollable child layer, the scroll delta
5207 // should be applied to one of its ancestors if possible. 5220 // should be applied to one of its ancestors if possible.
5208 gfx::Size surface_size(10, 10); 5221 gfx::Size surface_size(10, 10);
5209 gfx::Size content_size(20, 20); 5222 gfx::Size content_size(20, 20);
5210 std::unique_ptr<LayerImpl> root_ptr = 5223 std::unique_ptr<LayerImpl> root_ptr =
5211 LayerImpl::Create(host_impl_->active_tree(), 4); 5224 CreateTestLayerImpl(host_impl_->active_tree(), 4);
5212 std::unique_ptr<LayerImpl> root_clip = 5225 std::unique_ptr<LayerImpl> root_clip =
5213 LayerImpl::Create(host_impl_->active_tree(), 3); 5226 CreateTestLayerImpl(host_impl_->active_tree(), 3);
5214 root_clip->test_properties()->force_render_surface = true; 5227 root_clip->test_properties()->force_render_surface = true;
5215 std::unique_ptr<LayerImpl> root_scroll = 5228 std::unique_ptr<LayerImpl> root_scroll =
5216 CreateScrollableLayer(1, content_size, root_clip.get()); 5229 CreateScrollableLayer(1, content_size, root_clip.get());
5217 // Make 'root' the clip layer for child: since they have the same sizes the 5230 // Make 'root' the clip layer for child: since they have the same sizes the
5218 // child will have zero max_scroll_offset and scrolls will bubble. 5231 // child will have zero max_scroll_offset and scrolls will bubble.
5219 std::unique_ptr<LayerImpl> child = 5232 std::unique_ptr<LayerImpl> child =
5220 CreateScrollableLayer(2, content_size, root_scroll.get()); 5233 CreateScrollableLayer(2, content_size, root_scroll.get());
5221 child->test_properties()->is_container_for_fixed_position_layers = true; 5234 child->test_properties()->is_container_for_fixed_position_layers = true;
5222 root_scroll->SetBounds(content_size); 5235 root_scroll->SetBounds(content_size);
5223 5236
(...skipping 24 matching lines...) Expand all
5248 // Only the root scroll should have scrolled. 5261 // Only the root scroll should have scrolled.
5249 ASSERT_EQ(scroll_info->scrolls.size(), 1u); 5262 ASSERT_EQ(scroll_info->scrolls.size(), 1u);
5250 EXPECT_TRUE( 5263 EXPECT_TRUE(
5251 ScrollInfoContains(*scroll_info.get(), root_scroll_id, scroll_delta)); 5264 ScrollInfoContains(*scroll_info.get(), root_scroll_id, scroll_delta));
5252 } 5265 }
5253 } 5266 }
5254 5267
5255 TEST_F(LayerTreeHostImplTest, ScrollBeforeRedraw) { 5268 TEST_F(LayerTreeHostImplTest, ScrollBeforeRedraw) {
5256 gfx::Size surface_size(10, 10); 5269 gfx::Size surface_size(10, 10);
5257 std::unique_ptr<LayerImpl> root_ptr = 5270 std::unique_ptr<LayerImpl> root_ptr =
5258 LayerImpl::Create(host_impl_->active_tree(), 1); 5271 CreateTestLayerImpl(host_impl_->active_tree(), 1);
5259 std::unique_ptr<LayerImpl> root_clip = 5272 std::unique_ptr<LayerImpl> root_clip =
5260 LayerImpl::Create(host_impl_->active_tree(), 2); 5273 CreateTestLayerImpl(host_impl_->active_tree(), 2);
5261 std::unique_ptr<LayerImpl> root_scroll = 5274 std::unique_ptr<LayerImpl> root_scroll =
5262 CreateScrollableLayer(3, surface_size, root_clip.get()); 5275 CreateScrollableLayer(3, surface_size, root_clip.get());
5263 root_clip->test_properties()->force_render_surface = true; 5276 root_clip->test_properties()->force_render_surface = true;
5264 root_scroll->test_properties()->is_container_for_fixed_position_layers = true; 5277 root_scroll->test_properties()->is_container_for_fixed_position_layers = true;
5265 root_clip->AddChild(std::move(root_scroll)); 5278 root_clip->AddChild(std::move(root_scroll));
5266 root_ptr->AddChild(std::move(root_clip)); 5279 root_ptr->AddChild(std::move(root_clip));
5267 host_impl_->active_tree()->SetRootLayer(std::move(root_ptr)); 5280 host_impl_->active_tree()->SetRootLayer(std::move(root_ptr));
5268 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 3, 5281 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 3,
5269 Layer::INVALID_ID); 5282 Layer::INVALID_ID);
5270 host_impl_->active_tree()->DidBecomeActive(); 5283 host_impl_->active_tree()->DidBecomeActive();
5271 host_impl_->SetViewportSize(surface_size); 5284 host_impl_->SetViewportSize(surface_size);
5272 5285
5273 // Draw one frame and then immediately rebuild the layer tree to mimic a tree 5286 // Draw one frame and then immediately rebuild the layer tree to mimic a tree
5274 // synchronization. 5287 // synchronization.
5275 SetNeedsRebuildPropertyTrees(); 5288 SetNeedsRebuildPropertyTrees();
5276 DrawFrame(); 5289 DrawFrame();
5277 host_impl_->active_tree()->ClearLayers(); 5290 host_impl_->active_tree()->ClearLayers();
5278 std::unique_ptr<LayerImpl> root_ptr2 = 5291 std::unique_ptr<LayerImpl> root_ptr2 =
5279 LayerImpl::Create(host_impl_->active_tree(), 4); 5292 CreateTestLayerImpl(host_impl_->active_tree(), 4);
5280 std::unique_ptr<LayerImpl> root_clip2 = 5293 std::unique_ptr<LayerImpl> root_clip2 =
5281 LayerImpl::Create(host_impl_->active_tree(), 5); 5294 CreateTestLayerImpl(host_impl_->active_tree(), 5);
5282 std::unique_ptr<LayerImpl> root_scroll2 = 5295 std::unique_ptr<LayerImpl> root_scroll2 =
5283 CreateScrollableLayer(6, surface_size, root_clip2.get()); 5296 CreateScrollableLayer(6, surface_size, root_clip2.get());
5284 root_scroll2->test_properties()->is_container_for_fixed_position_layers = 5297 root_scroll2->test_properties()->is_container_for_fixed_position_layers =
5285 true; 5298 true;
5286 root_clip2->AddChild(std::move(root_scroll2)); 5299 root_clip2->AddChild(std::move(root_scroll2));
5287 root_clip2->test_properties()->force_render_surface = true; 5300 root_clip2->test_properties()->force_render_surface = true;
5288 root_ptr2->AddChild(std::move(root_clip2)); 5301 root_ptr2->AddChild(std::move(root_clip2));
5289 host_impl_->active_tree()->SetRootLayer(std::move(root_ptr2)); 5302 host_impl_->active_tree()->SetRootLayer(std::move(root_ptr2));
5290 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 4, 6, 5303 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 4, 6,
5291 Layer::INVALID_ID); 5304 Layer::INVALID_ID);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
5347 } 5360 }
5348 5361
5349 TEST_F(LayerTreeHostImplTest, ScrollNonAxisAlignedRotatedLayer) { 5362 TEST_F(LayerTreeHostImplTest, ScrollNonAxisAlignedRotatedLayer) {
5350 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 5363 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
5351 int child_clip_layer_id = 6; 5364 int child_clip_layer_id = 6;
5352 int child_layer_id = 7; 5365 int child_layer_id = 7;
5353 float child_layer_angle = -20.f; 5366 float child_layer_angle = -20.f;
5354 5367
5355 // Create a child layer that is rotated to a non-axis-aligned angle. 5368 // Create a child layer that is rotated to a non-axis-aligned angle.
5356 std::unique_ptr<LayerImpl> clip_layer = 5369 std::unique_ptr<LayerImpl> clip_layer =
5357 LayerImpl::Create(host_impl_->active_tree(), child_clip_layer_id); 5370 CreateTestLayerImpl(host_impl_->active_tree(), child_clip_layer_id);
5358 std::unique_ptr<LayerImpl> child = CreateScrollableLayer( 5371 std::unique_ptr<LayerImpl> child = CreateScrollableLayer(
5359 child_layer_id, scroll_layer->bounds(), clip_layer.get()); 5372 child_layer_id, scroll_layer->bounds(), clip_layer.get());
5360 gfx::Transform rotate_transform; 5373 gfx::Transform rotate_transform;
5361 rotate_transform.Translate(-50.0, -50.0); 5374 rotate_transform.Translate(-50.0, -50.0);
5362 rotate_transform.Rotate(child_layer_angle); 5375 rotate_transform.Rotate(child_layer_angle);
5363 rotate_transform.Translate(50.0, 50.0); 5376 rotate_transform.Translate(50.0, 50.0);
5364 clip_layer->SetTransform(rotate_transform); 5377 clip_layer->SetTransform(rotate_transform);
5365 5378
5366 // Only allow vertical scrolling. 5379 // Only allow vertical scrolling.
5367 clip_layer->SetBounds( 5380 clip_layer->SetBounds(
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
5432 5445
5433 TEST_F(LayerTreeHostImplTest, ScrollPerspectiveTransformedLayer) { 5446 TEST_F(LayerTreeHostImplTest, ScrollPerspectiveTransformedLayer) {
5434 // When scrolling an element with perspective, the distance scrolled 5447 // When scrolling an element with perspective, the distance scrolled
5435 // depends on the point at which the scroll begins. 5448 // depends on the point at which the scroll begins.
5436 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 5449 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
5437 int child_clip_layer_id = 6; 5450 int child_clip_layer_id = 6;
5438 int child_layer_id = 7; 5451 int child_layer_id = 7;
5439 5452
5440 // Create a child layer that is rotated on its x axis, with perspective. 5453 // Create a child layer that is rotated on its x axis, with perspective.
5441 std::unique_ptr<LayerImpl> clip_layer = 5454 std::unique_ptr<LayerImpl> clip_layer =
5442 LayerImpl::Create(host_impl_->active_tree(), child_clip_layer_id); 5455 CreateTestLayerImpl(host_impl_->active_tree(), child_clip_layer_id);
5443 std::unique_ptr<LayerImpl> child = CreateScrollableLayer( 5456 std::unique_ptr<LayerImpl> child = CreateScrollableLayer(
5444 child_layer_id, scroll_layer->bounds(), clip_layer.get()); 5457 child_layer_id, scroll_layer->bounds(), clip_layer.get());
5445 LayerImpl* child_ptr = child.get(); 5458 LayerImpl* child_ptr = child.get();
5446 gfx::Transform perspective_transform; 5459 gfx::Transform perspective_transform;
5447 perspective_transform.Translate(-50.0, -50.0); 5460 perspective_transform.Translate(-50.0, -50.0);
5448 perspective_transform.ApplyPerspectiveDepth(20); 5461 perspective_transform.ApplyPerspectiveDepth(20);
5449 perspective_transform.RotateAboutXAxis(45); 5462 perspective_transform.RotateAboutXAxis(45);
5450 perspective_transform.Translate(50.0, 50.0); 5463 perspective_transform.Translate(50.0, 50.0);
5451 clip_layer->SetTransform(perspective_transform); 5464 clip_layer->SetTransform(perspective_transform);
5452 5465
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
5903 host_impl_->ScrollEnd(EndState().get()); 5916 host_impl_->ScrollEnd(EndState().get());
5904 } 5917 }
5905 5918
5906 5919
5907 TEST_F(LayerTreeHostImplTest, OverscrollChildWithoutBubbling) { 5920 TEST_F(LayerTreeHostImplTest, OverscrollChildWithoutBubbling) {
5908 // Scroll child layers beyond their maximum scroll range and make sure root 5921 // Scroll child layers beyond their maximum scroll range and make sure root
5909 // overscroll does not accumulate. 5922 // overscroll does not accumulate.
5910 InputHandlerScrollResult scroll_result; 5923 InputHandlerScrollResult scroll_result;
5911 gfx::Size surface_size(10, 10); 5924 gfx::Size surface_size(10, 10);
5912 std::unique_ptr<LayerImpl> root_clip = 5925 std::unique_ptr<LayerImpl> root_clip =
5913 LayerImpl::Create(host_impl_->active_tree(), 4); 5926 CreateTestLayerImpl(host_impl_->active_tree(), 4);
5914 root_clip->test_properties()->force_render_surface = true; 5927 root_clip->test_properties()->force_render_surface = true;
5915 5928
5916 std::unique_ptr<LayerImpl> root = 5929 std::unique_ptr<LayerImpl> root =
5917 CreateScrollableLayer(1, surface_size, root_clip.get()); 5930 CreateScrollableLayer(1, surface_size, root_clip.get());
5918 5931
5919 std::unique_ptr<LayerImpl> grand_child = 5932 std::unique_ptr<LayerImpl> grand_child =
5920 CreateScrollableLayer(3, surface_size, root_clip.get()); 5933 CreateScrollableLayer(3, surface_size, root_clip.get());
5921 5934
5922 std::unique_ptr<LayerImpl> child = 5935 std::unique_ptr<LayerImpl> child =
5923 CreateScrollableLayer(2, surface_size, root_clip.get()); 5936 CreateScrollableLayer(2, surface_size, root_clip.get());
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
6190 bool quads_appended_; 6203 bool quads_appended_;
6191 gfx::Rect quad_rect_; 6204 gfx::Rect quad_rect_;
6192 gfx::Rect opaque_content_rect_; 6205 gfx::Rect opaque_content_rect_;
6193 gfx::Rect quad_visible_rect_; 6206 gfx::Rect quad_visible_rect_;
6194 ResourceId resource_id_; 6207 ResourceId resource_id_;
6195 }; 6208 };
6196 6209
6197 TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { 6210 TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
6198 { 6211 {
6199 std::unique_ptr<LayerImpl> root = 6212 std::unique_ptr<LayerImpl> root =
6200 LayerImpl::Create(host_impl_->active_tree(), 1); 6213 CreateTestLayerImpl(host_impl_->active_tree(), 1);
6201 root->SetBounds(gfx::Size(10, 10)); 6214 root->SetBounds(gfx::Size(10, 10));
6202 root->SetDrawsContent(false); 6215 root->SetDrawsContent(false);
6203 root->test_properties()->force_render_surface = true; 6216 root->test_properties()->force_render_surface = true;
6204 host_impl_->active_tree()->SetRootLayer(std::move(root)); 6217 host_impl_->active_tree()->SetRootLayer(std::move(root));
6205 } 6218 }
6206 LayerImpl* root = host_impl_->active_tree()->root_layer(); 6219 LayerImpl* root = host_impl_->active_tree()->root_layer();
6207 6220
6208 root->AddChild( 6221 root->AddChild(
6209 BlendStateCheckLayer::Create(host_impl_->active_tree(), 6222 BlendStateCheckLayer::Create(host_impl_->active_tree(),
6210 2, 6223 2,
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
6458 if (software) { 6471 if (software) {
6459 return FakeOutputSurface::CreateSoftware( 6472 return FakeOutputSurface::CreateSoftware(
6460 base::WrapUnique(new SoftwareOutputDevice())); 6473 base::WrapUnique(new SoftwareOutputDevice()));
6461 } 6474 }
6462 return FakeOutputSurface::Create3d(); 6475 return FakeOutputSurface::Create3d();
6463 } 6476 }
6464 6477
6465 void SetupActiveTreeLayers() { 6478 void SetupActiveTreeLayers() {
6466 host_impl_->active_tree()->set_background_color(SK_ColorGRAY); 6479 host_impl_->active_tree()->set_background_color(SK_ColorGRAY);
6467 host_impl_->active_tree()->SetRootLayer( 6480 host_impl_->active_tree()->SetRootLayer(
6468 LayerImpl::Create(host_impl_->active_tree(), 1)); 6481 CreateTestLayerImpl(host_impl_->active_tree(), 1));
6469 host_impl_->active_tree() 6482 host_impl_->active_tree()
6470 ->root_layer() 6483 ->root_layer()
6471 ->test_properties() 6484 ->test_properties()
6472 ->force_render_surface = true; 6485 ->force_render_surface = true;
6473 host_impl_->active_tree()->root_layer()->AddChild( 6486 host_impl_->active_tree()->root_layer()->AddChild(
6474 BlendStateCheckLayer::Create(host_impl_->active_tree(), 6487 BlendStateCheckLayer::Create(host_impl_->active_tree(),
6475 2, 6488 2,
6476 host_impl_->resource_provider())); 6489 host_impl_->resource_provider()));
6477 child_ = static_cast<BlendStateCheckLayer*>( 6490 child_ = static_cast<BlendStateCheckLayer*>(
6478 host_impl_->active_tree()->root_layer()->children()[0]); 6491 host_impl_->active_tree()->root_layer()->children()[0]);
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
6749 EXPECT_SCOPED(TestLayerIsLargerThanViewportWithOnDraw()); 6762 EXPECT_SCOPED(TestLayerIsLargerThanViewportWithOnDraw());
6750 } 6763 }
6751 6764
6752 class FakeDrawableLayerImpl: public LayerImpl { 6765 class FakeDrawableLayerImpl: public LayerImpl {
6753 public: 6766 public:
6754 static std::unique_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { 6767 static std::unique_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) {
6755 return base::WrapUnique(new FakeDrawableLayerImpl(tree_impl, id)); 6768 return base::WrapUnique(new FakeDrawableLayerImpl(tree_impl, id));
6756 } 6769 }
6757 protected: 6770 protected:
6758 FakeDrawableLayerImpl(LayerTreeImpl* tree_impl, int id) 6771 FakeDrawableLayerImpl(LayerTreeImpl* tree_impl, int id)
6759 : LayerImpl(tree_impl, id) {} 6772 : LayerImpl(tree_impl, id) {
6773 SetElementId(NextTestElementId());
6774 }
6760 }; 6775 };
6761 6776
6762 // Only reshape when we know we are going to draw. Otherwise, the reshape 6777 // Only reshape when we know we are going to draw. Otherwise, the reshape
6763 // can leave the window at the wrong size if we never draw and the proper 6778 // can leave the window at the wrong size if we never draw and the proper
6764 // viewport size is never set. 6779 // viewport size is never set.
6765 TEST_F(LayerTreeHostImplTest, ReshapeNotCalledUntilDraw) { 6780 TEST_F(LayerTreeHostImplTest, ReshapeNotCalledUntilDraw) {
6766 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); 6781 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create());
6767 std::unique_ptr<OutputSurface> output_surface( 6782 std::unique_ptr<OutputSurface> output_surface(
6768 FakeOutputSurface::Create3d(provider)); 6783 FakeOutputSurface::Create3d(provider));
6769 CreateHostImpl(DefaultSettings(), std::move(output_surface)); 6784 CreateHostImpl(DefaultSettings(), std::move(output_surface));
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
7144 | | | | 7159 | | | |
7145 | +-----------+ | 7160 | +-----------+ |
7146 | | 7161 | |
7147 | | 7162 | |
7148 +--------------------+ 7163 +--------------------+
7149 7164
7150 Layers 1, 2 have render surfaces 7165 Layers 1, 2 have render surfaces
7151 */ 7166 */
7152 std::unique_ptr<LayerImpl> root = 7167 std::unique_ptr<LayerImpl> root =
7153 LayerImpl::Create(my_host_impl->active_tree(), 1); 7168 LayerImpl::Create(my_host_impl->active_tree(), 1);
7169 root->SetElementId(NextTestElementId());
7170
7154 std::unique_ptr<LayerImpl> child = 7171 std::unique_ptr<LayerImpl> child =
7155 LayerImpl::Create(my_host_impl->active_tree(), 2); 7172 LayerImpl::Create(my_host_impl->active_tree(), 2);
7173 child->SetElementId(NextTestElementId());
7174
7156 std::unique_ptr<LayerImpl> grand_child = 7175 std::unique_ptr<LayerImpl> grand_child =
7157 FakeLayerWithQuads::Create(my_host_impl->active_tree(), 3); 7176 FakeLayerWithQuads::Create(my_host_impl->active_tree(), 3);
7158 7177
7159 gfx::Rect root_rect(0, 0, 100, 100); 7178 gfx::Rect root_rect(0, 0, 100, 100);
7160 gfx::Rect child_rect(10, 10, 50, 50); 7179 gfx::Rect child_rect(10, 10, 50, 50);
7161 gfx::Rect grand_child_rect(5, 5, 150, 150); 7180 gfx::Rect grand_child_rect(5, 5, 150, 150);
7162 7181
7163 root->test_properties()->force_render_surface = true; 7182 root->test_properties()->force_render_surface = true;
7164 root->SetPosition(gfx::PointF(root_rect.origin())); 7183 root->SetPosition(gfx::PointF(root_rect.origin()));
7165 root->SetBounds(root_rect.size()); 7184 root->SetBounds(root_rect.size());
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
7248 7267
7249 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { 7268 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) {
7250 std::unique_ptr<TestWebGraphicsContext3D> context = 7269 std::unique_ptr<TestWebGraphicsContext3D> context =
7251 TestWebGraphicsContext3D::Create(); 7270 TestWebGraphicsContext3D::Create();
7252 TestWebGraphicsContext3D* context3d = context.get(); 7271 TestWebGraphicsContext3D* context3d = context.get();
7253 std::unique_ptr<OutputSurface> output_surface( 7272 std::unique_ptr<OutputSurface> output_surface(
7254 FakeOutputSurface::Create3d(std::move(context))); 7273 FakeOutputSurface::Create3d(std::move(context)));
7255 CreateHostImpl(DefaultSettings(), std::move(output_surface)); 7274 CreateHostImpl(DefaultSettings(), std::move(output_surface));
7256 7275
7257 std::unique_ptr<LayerImpl> root_layer = 7276 std::unique_ptr<LayerImpl> root_layer =
7258 LayerImpl::Create(host_impl_->active_tree(), 1); 7277 CreateTestLayerImpl(host_impl_->active_tree(), 1);
7259 root_layer->SetBounds(gfx::Size(10, 10)); 7278 root_layer->SetBounds(gfx::Size(10, 10));
7260 root_layer->test_properties()->force_render_surface = true; 7279 root_layer->test_properties()->force_render_surface = true;
7261 7280
7262 scoped_refptr<VideoFrame> softwareFrame = 7281 scoped_refptr<VideoFrame> softwareFrame =
7263 media::VideoFrame::CreateColorFrame( 7282 media::VideoFrame::CreateColorFrame(
7264 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta()); 7283 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta());
7265 FakeVideoFrameProvider provider; 7284 FakeVideoFrameProvider provider;
7266 provider.set_frame(softwareFrame); 7285 provider.set_frame(softwareFrame);
7267 std::unique_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( 7286 std::unique_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create(
7268 host_impl_->active_tree(), 4, &provider, media::VIDEO_ROTATION_0); 7287 host_impl_->active_tree(), 4, &provider, media::VIDEO_ROTATION_0);
7288 video_layer->SetElementId(NextTestElementId());
7269 video_layer->SetBounds(gfx::Size(10, 10)); 7289 video_layer->SetBounds(gfx::Size(10, 10));
7270 video_layer->SetDrawsContent(true); 7290 video_layer->SetDrawsContent(true);
7271 root_layer->AddChild(std::move(video_layer)); 7291 root_layer->AddChild(std::move(video_layer));
7272 7292
7273 host_impl_->active_tree()->SetRootLayer(std::move(root_layer)); 7293 host_impl_->active_tree()->SetRootLayer(std::move(root_layer));
7274 7294
7275 EXPECT_EQ(0u, context3d->NumTextures()); 7295 EXPECT_EQ(0u, context3d->NumTextures());
7276 7296
7277 LayerTreeHostImpl::FrameData frame; 7297 LayerTreeHostImpl::FrameData frame;
7278 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); 7298 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame));
7279 host_impl_->DrawLayers(&frame); 7299 host_impl_->DrawLayers(&frame);
7280 host_impl_->DidDrawAllLayers(frame); 7300 host_impl_->DidDrawAllLayers(frame);
7281 host_impl_->SwapBuffers(frame); 7301 host_impl_->SwapBuffers(frame);
7282 7302
7283 EXPECT_GT(context3d->NumTextures(), 0u); 7303 EXPECT_GT(context3d->NumTextures(), 0u);
7284 7304
7285 // Kill the layer tree. 7305 // Kill the layer tree.
7286 host_impl_->active_tree()->SetRootLayer( 7306 host_impl_->active_tree()->SetRootLayer(
7287 LayerImpl::Create(host_impl_->active_tree(), 100)); 7307 CreateTestLayerImpl(host_impl_->active_tree(), 100));
7288 // There should be no textures left in use after. 7308 // There should be no textures left in use after.
7289 EXPECT_EQ(0u, context3d->NumTextures()); 7309 EXPECT_EQ(0u, context3d->NumTextures());
7290 } 7310 }
7291 7311
7292 class MockDrawQuadsToFillScreenContext : public TestWebGraphicsContext3D { 7312 class MockDrawQuadsToFillScreenContext : public TestWebGraphicsContext3D {
7293 public: 7313 public:
7294 MOCK_METHOD1(useProgram, void(GLuint program)); 7314 MOCK_METHOD1(useProgram, void(GLuint program));
7295 MOCK_METHOD4(drawElements, void(GLenum mode, 7315 MOCK_METHOD4(drawElements, void(GLenum mode,
7296 GLsizei count, 7316 GLsizei count,
7297 GLenum type, 7317 GLenum type,
7298 GLintptr offset)); 7318 GLintptr offset));
7299 }; 7319 };
7300 7320
7301 TEST_F(LayerTreeHostImplTest, HasTransparentBackground) { 7321 TEST_F(LayerTreeHostImplTest, HasTransparentBackground) {
7302 std::unique_ptr<MockDrawQuadsToFillScreenContext> mock_context_owned( 7322 std::unique_ptr<MockDrawQuadsToFillScreenContext> mock_context_owned(
7303 new MockDrawQuadsToFillScreenContext); 7323 new MockDrawQuadsToFillScreenContext);
7304 MockDrawQuadsToFillScreenContext* mock_context = mock_context_owned.get(); 7324 MockDrawQuadsToFillScreenContext* mock_context = mock_context_owned.get();
7305 7325
7306 // Run test case 7326 // Run test case
7307 LayerTreeSettings settings = DefaultSettings(); 7327 LayerTreeSettings settings = DefaultSettings();
7308 settings.renderer_settings.partial_swap_enabled = false; 7328 settings.renderer_settings.partial_swap_enabled = false;
7309 CreateHostImpl(settings, 7329 CreateHostImpl(settings,
7310 FakeOutputSurface::Create3d(std::move(mock_context_owned))); 7330 FakeOutputSurface::Create3d(std::move(mock_context_owned)));
7311 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 7331 SetupRootLayerImpl(CreateTestLayerImpl(host_impl_->active_tree(), 1));
7312 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); 7332 host_impl_->active_tree()->set_background_color(SK_ColorWHITE);
7313 7333
7314 // Verify one quad is drawn when transparent background set is not set. 7334 // Verify one quad is drawn when transparent background set is not set.
7315 host_impl_->active_tree()->set_has_transparent_background(false); 7335 host_impl_->active_tree()->set_has_transparent_background(false);
7316 EXPECT_CALL(*mock_context, useProgram(_)) 7336 EXPECT_CALL(*mock_context, useProgram(_))
7317 .Times(1); 7337 .Times(1);
7318 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) 7338 EXPECT_CALL(*mock_context, drawElements(_, _, _, _))
7319 .Times(1); 7339 .Times(1);
7320 LayerTreeHostImpl::FrameData frame; 7340 LayerTreeHostImpl::FrameData frame;
7321 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); 7341 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame));
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
7372 7392
7373 host_impl_->DrawLayers(&frame); 7393 host_impl_->DrawLayers(&frame);
7374 host_impl_->DidDrawAllLayers(frame); 7394 host_impl_->DidDrawAllLayers(frame);
7375 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); 7395 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame));
7376 } 7396 }
7377 }; 7397 };
7378 7398
7379 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { 7399 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) {
7380 std::unique_ptr<SolidColorLayerImpl> root = 7400 std::unique_ptr<SolidColorLayerImpl> root =
7381 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); 7401 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
7402 root->SetElementId(NextTestElementId());
7382 root->SetPosition(gfx::PointF()); 7403 root->SetPosition(gfx::PointF());
7383 root->SetBounds(gfx::Size(10, 10)); 7404 root->SetBounds(gfx::Size(10, 10));
7384 root->SetDrawsContent(true); 7405 root->SetDrawsContent(true);
7385 root->test_properties()->force_render_surface = true; 7406 root->test_properties()->force_render_surface = true;
7386 7407
7387 // Child layer is in the bottom right corner. 7408 // Child layer is in the bottom right corner.
7388 std::unique_ptr<SolidColorLayerImpl> child = 7409 std::unique_ptr<SolidColorLayerImpl> child =
7389 SolidColorLayerImpl::Create(host_impl_->active_tree(), 2); 7410 SolidColorLayerImpl::Create(host_impl_->active_tree(), 2);
7411 child->SetElementId(NextTestElementId());
7390 child->SetPosition(gfx::PointF(9.f, 9.f)); 7412 child->SetPosition(gfx::PointF(9.f, 9.f));
7391 child->SetBounds(gfx::Size(1, 1)); 7413 child->SetBounds(gfx::Size(1, 1));
7392 child->SetDrawsContent(true); 7414 child->SetDrawsContent(true);
7393 root->AddChild(std::move(child)); 7415 root->AddChild(std::move(child));
7394 7416
7395 host_impl_->active_tree()->SetRootLayer(std::move(root)); 7417 host_impl_->active_tree()->SetRootLayer(std::move(root));
7396 7418
7397 // Draw a frame. In the first frame, the entire viewport should be damaged. 7419 // Draw a frame. In the first frame, the entire viewport should be damaged.
7398 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); 7420 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize());
7399 DrawFrameAndTestDamage(full_frame_damage); 7421 DrawFrameAndTestDamage(full_frame_damage);
(...skipping 30 matching lines...) Expand all
7430 gfx::Size device_viewport_size = 7452 gfx::Size device_viewport_size =
7431 gfx::ScaleToCeiledSize(root_size, device_scale_factor); 7453 gfx::ScaleToCeiledSize(root_size, device_scale_factor);
7432 host_impl_->SetViewportSize(device_viewport_size); 7454 host_impl_->SetViewportSize(device_viewport_size);
7433 7455
7434 host_impl_->CreatePendingTree(); 7456 host_impl_->CreatePendingTree();
7435 host_impl_->pending_tree()->SetDeviceScaleFactor(device_scale_factor); 7457 host_impl_->pending_tree()->SetDeviceScaleFactor(device_scale_factor);
7436 host_impl_->pending_tree()->PushPageScaleFromMainThread(1.f, 1.f / 16.f, 7458 host_impl_->pending_tree()->PushPageScaleFromMainThread(1.f, 1.f / 16.f,
7437 16.f); 7459 16.f);
7438 7460
7439 std::unique_ptr<LayerImpl> scoped_root = 7461 std::unique_ptr<LayerImpl> scoped_root =
7440 LayerImpl::Create(host_impl_->pending_tree(), 1); 7462 CreateTestLayerImpl(host_impl_->pending_tree(), 1);
7441 LayerImpl* root = scoped_root.get(); 7463 LayerImpl* root = scoped_root.get();
7442 root->test_properties()->force_render_surface = true; 7464 root->test_properties()->force_render_surface = true;
7443 7465
7444 host_impl_->pending_tree()->SetRootLayer(std::move(scoped_root)); 7466 host_impl_->pending_tree()->SetRootLayer(std::move(scoped_root));
7445 7467
7446 std::unique_ptr<LayerImpl> scoped_scrolling_layer = 7468 std::unique_ptr<LayerImpl> scoped_scrolling_layer =
7447 LayerImpl::Create(host_impl_->pending_tree(), 2); 7469 CreateTestLayerImpl(host_impl_->pending_tree(), 2);
7448 LayerImpl* scrolling_layer = scoped_scrolling_layer.get(); 7470 LayerImpl* scrolling_layer = scoped_scrolling_layer.get();
7449 root->AddChild(std::move(scoped_scrolling_layer)); 7471 root->AddChild(std::move(scoped_scrolling_layer));
7450 7472
7451 gfx::Size content_layer_bounds(100000, 100); 7473 gfx::Size content_layer_bounds(100000, 100);
7452 scoped_refptr<FakeRasterSource> raster_source( 7474 scoped_refptr<FakeRasterSource> raster_source(
7453 FakeRasterSource::CreateFilled(content_layer_bounds)); 7475 FakeRasterSource::CreateFilled(content_layer_bounds));
7454 7476
7455 std::unique_ptr<FakePictureLayerImpl> scoped_content_layer = 7477 std::unique_ptr<FakePictureLayerImpl> scoped_content_layer =
7456 FakePictureLayerImpl::CreateWithRasterSource(host_impl_->pending_tree(), 7478 FakePictureLayerImpl::CreateWithRasterSource(host_impl_->pending_tree(),
7457 3, raster_source); 7479 3, raster_source);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
7584 const gfx::Transform external_transform; 7606 const gfx::Transform external_transform;
7585 const gfx::Rect external_viewport; 7607 const gfx::Rect external_viewport;
7586 const gfx::Rect external_clip; 7608 const gfx::Rect external_clip;
7587 const bool resourceless_software_draw = true; 7609 const bool resourceless_software_draw = true;
7588 host_impl_->SetExternalTilePriorityConstraints(external_viewport, 7610 host_impl_->SetExternalTilePriorityConstraints(external_viewport,
7589 external_transform); 7611 external_transform);
7590 7612
7591 // SolidColorLayerImpl will be drawn. 7613 // SolidColorLayerImpl will be drawn.
7592 std::unique_ptr<SolidColorLayerImpl> root_layer = 7614 std::unique_ptr<SolidColorLayerImpl> root_layer =
7593 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); 7615 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
7616 root_layer->SetElementId(NextTestElementId());
7594 7617
7595 // VideoLayerImpl will not be drawn. 7618 // VideoLayerImpl will not be drawn.
7596 FakeVideoFrameProvider provider; 7619 FakeVideoFrameProvider provider;
7597 std::unique_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( 7620 std::unique_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create(
7598 host_impl_->active_tree(), 2, &provider, media::VIDEO_ROTATION_0); 7621 host_impl_->active_tree(), 2, &provider, media::VIDEO_ROTATION_0);
7622 video_layer->SetElementId(NextTestElementId());
7599 video_layer->SetBounds(gfx::Size(10, 10)); 7623 video_layer->SetBounds(gfx::Size(10, 10));
7600 video_layer->SetDrawsContent(true); 7624 video_layer->SetDrawsContent(true);
7601 root_layer->AddChild(std::move(video_layer)); 7625 root_layer->AddChild(std::move(video_layer));
7602 SetupRootLayerImpl(std::move(root_layer)); 7626 SetupRootLayerImpl(std::move(root_layer));
7603 7627
7604 host_impl_->OnDraw(external_transform, external_viewport, external_clip, 7628 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
7605 resourceless_software_draw); 7629 resourceless_software_draw);
7606 7630
7607 EXPECT_EQ(1u, last_on_draw_frame_->will_draw_layers.size()); 7631 EXPECT_EQ(1u, last_on_draw_frame_->will_draw_layers.size());
7608 EXPECT_EQ(host_impl_->active_tree()->root_layer(), 7632 EXPECT_EQ(host_impl_->active_tree()->root_layer(),
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
7770 void ShutdownReleasesContext_Callback( 7794 void ShutdownReleasesContext_Callback(
7771 std::unique_ptr<CopyOutputResult> result) {} 7795 std::unique_ptr<CopyOutputResult> result) {}
7772 7796
7773 TEST_F(LayerTreeHostImplTest, ShutdownReleasesContext) { 7797 TEST_F(LayerTreeHostImplTest, ShutdownReleasesContext) {
7774 scoped_refptr<TestContextProvider> context_provider = 7798 scoped_refptr<TestContextProvider> context_provider =
7775 TestContextProvider::Create(); 7799 TestContextProvider::Create();
7776 7800
7777 CreateHostImpl(DefaultSettings(), 7801 CreateHostImpl(DefaultSettings(),
7778 FakeOutputSurface::Create3d(context_provider)); 7802 FakeOutputSurface::Create3d(context_provider));
7779 7803
7780 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 7804 SetupRootLayerImpl(CreateTestLayerImpl(host_impl_->active_tree(), 1));
7781 7805
7782 std::vector<std::unique_ptr<CopyOutputRequest>> requests; 7806 std::vector<std::unique_ptr<CopyOutputRequest>> requests;
7783 requests.push_back(CopyOutputRequest::CreateRequest( 7807 requests.push_back(CopyOutputRequest::CreateRequest(
7784 base::Bind(&ShutdownReleasesContext_Callback))); 7808 base::Bind(&ShutdownReleasesContext_Callback)));
7785 7809
7786 LayerImpl* root = host_impl_->active_tree()->root_layer(); 7810 LayerImpl* root = host_impl_->active_tree()->root_layer();
7787 root->PassCopyRequests(&requests); 7811 root->PassCopyRequests(&requests);
7788 7812
7789 LayerTreeHostImpl::FrameData frame; 7813 LayerTreeHostImpl::FrameData frame;
7790 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); 7814 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame));
(...skipping 12 matching lines...) Expand all
7803 EXPECT_TRUE(context_provider->HasOneRef()); 7827 EXPECT_TRUE(context_provider->HasOneRef());
7804 EXPECT_EQ(0u, context_provider->TestContext3d()->NumTextures()); 7828 EXPECT_EQ(0u, context_provider->TestContext3d()->NumTextures());
7805 } 7829 }
7806 7830
7807 TEST_F(LayerTreeHostImplTest, TouchFlingShouldNotBubble) { 7831 TEST_F(LayerTreeHostImplTest, TouchFlingShouldNotBubble) {
7808 // When flinging via touch, only the child should scroll (we should not 7832 // When flinging via touch, only the child should scroll (we should not
7809 // bubble). 7833 // bubble).
7810 gfx::Size surface_size(10, 10); 7834 gfx::Size surface_size(10, 10);
7811 gfx::Size content_size(20, 20); 7835 gfx::Size content_size(20, 20);
7812 std::unique_ptr<LayerImpl> root_ptr = 7836 std::unique_ptr<LayerImpl> root_ptr =
7813 LayerImpl::Create(host_impl_->active_tree(), 4); 7837 CreateTestLayerImpl(host_impl_->active_tree(), 4);
7814 std::unique_ptr<LayerImpl> root_clip = 7838 std::unique_ptr<LayerImpl> root_clip =
7815 LayerImpl::Create(host_impl_->active_tree(), 3); 7839 CreateTestLayerImpl(host_impl_->active_tree(), 3);
7816 root_clip->test_properties()->force_render_surface = true; 7840 root_clip->test_properties()->force_render_surface = true;
7817 7841
7818 std::unique_ptr<LayerImpl> root_scroll = 7842 std::unique_ptr<LayerImpl> root_scroll =
7819 CreateScrollableLayer(1, content_size, root_clip.get()); 7843 CreateScrollableLayer(1, content_size, root_clip.get());
7820 root_scroll->test_properties()->is_container_for_fixed_position_layers = true; 7844 root_scroll->test_properties()->is_container_for_fixed_position_layers = true;
7821 std::unique_ptr<LayerImpl> child = 7845 std::unique_ptr<LayerImpl> child =
7822 CreateScrollableLayer(2, content_size, root_clip.get()); 7846 CreateScrollableLayer(2, content_size, root_clip.get());
7823 7847
7824 root_scroll->AddChild(std::move(child)); 7848 root_scroll->AddChild(std::move(child));
7825 int root_id = root_scroll->id(); 7849 int root_id = root_scroll->id();
(...skipping 30 matching lines...) Expand all
7856 ASSERT_EQ(1u, scroll_info->scrolls.size()); 7880 ASSERT_EQ(1u, scroll_info->scrolls.size());
7857 ExpectNone(*scroll_info.get(), root_id); 7881 ExpectNone(*scroll_info.get(), root_id);
7858 } 7882 }
7859 } 7883 }
7860 7884
7861 TEST_F(LayerTreeHostImplTest, TouchFlingShouldContinueScrollingCurrentLayer) { 7885 TEST_F(LayerTreeHostImplTest, TouchFlingShouldContinueScrollingCurrentLayer) {
7862 // Scroll a child layer beyond its maximum scroll range and make sure the 7886 // Scroll a child layer beyond its maximum scroll range and make sure the
7863 // the scroll doesn't bubble up to the parent layer. 7887 // the scroll doesn't bubble up to the parent layer.
7864 gfx::Size surface_size(10, 10); 7888 gfx::Size surface_size(10, 10);
7865 std::unique_ptr<LayerImpl> root = 7889 std::unique_ptr<LayerImpl> root =
7866 LayerImpl::Create(host_impl_->active_tree(), 1); 7890 CreateTestLayerImpl(host_impl_->active_tree(), 1);
7867 root->test_properties()->force_render_surface = true; 7891 root->test_properties()->force_render_surface = true;
7868 std::unique_ptr<LayerImpl> root_scrolling = 7892 std::unique_ptr<LayerImpl> root_scrolling =
7869 CreateScrollableLayer(2, surface_size, root.get()); 7893 CreateScrollableLayer(2, surface_size, root.get());
7870 7894
7871 std::unique_ptr<LayerImpl> grand_child = 7895 std::unique_ptr<LayerImpl> grand_child =
7872 CreateScrollableLayer(4, surface_size, root.get()); 7896 CreateScrollableLayer(4, surface_size, root.get());
7873 grand_child->layer_tree_impl() 7897 grand_child->layer_tree_impl()
7874 ->property_trees() 7898 ->property_trees()
7875 ->scroll_tree.UpdateScrollOffsetBaseForTesting(grand_child->id(), 7899 ->scroll_tree.UpdateScrollOffsetBaseForTesting(grand_child->id(),
7876 gfx::ScrollOffset(0, 2)); 7900 gfx::ScrollOffset(0, 2));
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
7945 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child); 7969 EXPECT_EQ(host_impl_->CurrentlyScrollingLayer(), grand_child);
7946 host_impl_->ScrollEnd(EndState().get()); 7970 host_impl_->ScrollEnd(EndState().get());
7947 } 7971 }
7948 } 7972 }
7949 7973
7950 TEST_F(LayerTreeHostImplTest, WheelFlingShouldntBubble) { 7974 TEST_F(LayerTreeHostImplTest, WheelFlingShouldntBubble) {
7951 // When flinging via wheel, we shouldn't bubble. 7975 // When flinging via wheel, we shouldn't bubble.
7952 gfx::Size surface_size(10, 10); 7976 gfx::Size surface_size(10, 10);
7953 gfx::Size content_size(20, 20); 7977 gfx::Size content_size(20, 20);
7954 std::unique_ptr<LayerImpl> root_clip = 7978 std::unique_ptr<LayerImpl> root_clip =
7955 LayerImpl::Create(host_impl_->active_tree(), 3); 7979 CreateTestLayerImpl(host_impl_->active_tree(), 3);
7956 root_clip->test_properties()->force_render_surface = true; 7980 root_clip->test_properties()->force_render_surface = true;
7957 std::unique_ptr<LayerImpl> root_scroll = 7981 std::unique_ptr<LayerImpl> root_scroll =
7958 CreateScrollableLayer(1, content_size, root_clip.get()); 7982 CreateScrollableLayer(1, content_size, root_clip.get());
7959 int root_scroll_id = root_scroll->id(); 7983 int root_scroll_id = root_scroll->id();
7960 std::unique_ptr<LayerImpl> child = 7984 std::unique_ptr<LayerImpl> child =
7961 CreateScrollableLayer(2, content_size, root_clip.get()); 7985 CreateScrollableLayer(2, content_size, root_clip.get());
7962 7986
7963 root_scroll->AddChild(std::move(child)); 7987 root_scroll->AddChild(std::move(child));
7964 root_clip->AddChild(std::move(root_scroll)); 7988 root_clip->AddChild(std::move(root_scroll));
7965 7989
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
8002 LayerImpl* scroll_layer = 8026 LayerImpl* scroll_layer =
8003 host_impl_->active_tree()->LayerById(scroll_layer_id); 8027 host_impl_->active_tree()->LayerById(scroll_layer_id);
8004 scroll_layer->SetDrawsContent(true); 8028 scroll_layer->SetDrawsContent(true);
8005 8029
8006 int page_scale_layer_id = 5; 8030 int page_scale_layer_id = 5;
8007 LayerImpl* page_scale_layer = 8031 LayerImpl* page_scale_layer =
8008 host_impl_->active_tree()->LayerById(page_scale_layer_id); 8032 host_impl_->active_tree()->LayerById(page_scale_layer_id);
8009 8033
8010 int occluder_layer_id = 6; 8034 int occluder_layer_id = 6;
8011 std::unique_ptr<LayerImpl> occluder_layer = 8035 std::unique_ptr<LayerImpl> occluder_layer =
8012 LayerImpl::Create(host_impl_->active_tree(), occluder_layer_id); 8036 CreateTestLayerImpl(host_impl_->active_tree(), occluder_layer_id);
8013 occluder_layer->SetDrawsContent(true); 8037 occluder_layer->SetDrawsContent(true);
8014 occluder_layer->SetBounds(content_size); 8038 occluder_layer->SetBounds(content_size);
8015 occluder_layer->SetPosition(gfx::PointF()); 8039 occluder_layer->SetPosition(gfx::PointF());
8016 8040
8017 // The parent of the occluder is *above* the scroller. 8041 // The parent of the occluder is *above* the scroller.
8018 page_scale_layer->AddChild(std::move(occluder_layer)); 8042 page_scale_layer->AddChild(std::move(occluder_layer));
8019 8043
8020 SetNeedsRebuildPropertyTrees(); 8044 SetNeedsRebuildPropertyTrees();
8021 DrawFrame(); 8045 DrawFrame();
8022 8046
(...skipping 11 matching lines...) Expand all
8034 gfx::Size content_size(100, 100); 8058 gfx::Size content_size(100, 100);
8035 SetupScrollAndContentsLayers(content_size); 8059 SetupScrollAndContentsLayers(content_size);
8036 8060
8037 int scroll_layer_id = 2; 8061 int scroll_layer_id = 2;
8038 LayerImpl* scroll_layer = 8062 LayerImpl* scroll_layer =
8039 host_impl_->active_tree()->LayerById(scroll_layer_id); 8063 host_impl_->active_tree()->LayerById(scroll_layer_id);
8040 scroll_layer->SetDrawsContent(true); 8064 scroll_layer->SetDrawsContent(true);
8041 8065
8042 int occluder_layer_id = 6; 8066 int occluder_layer_id = 6;
8043 std::unique_ptr<LayerImpl> occluder_layer = 8067 std::unique_ptr<LayerImpl> occluder_layer =
8044 LayerImpl::Create(host_impl_->active_tree(), occluder_layer_id); 8068 CreateTestLayerImpl(host_impl_->active_tree(), occluder_layer_id);
8045 occluder_layer->SetDrawsContent(true); 8069 occluder_layer->SetDrawsContent(true);
8046 occluder_layer->SetBounds(content_size); 8070 occluder_layer->SetBounds(content_size);
8047 occluder_layer->SetPosition(gfx::PointF(-10.f, -10.f)); 8071 occluder_layer->SetPosition(gfx::PointF(-10.f, -10.f));
8048 8072
8049 int child_scroll_clip_layer_id = 7; 8073 int child_scroll_clip_layer_id = 7;
8050 std::unique_ptr<LayerImpl> child_scroll_clip = 8074 std::unique_ptr<LayerImpl> child_scroll_clip = CreateTestLayerImpl(
8051 LayerImpl::Create(host_impl_->active_tree(), child_scroll_clip_layer_id); 8075 host_impl_->active_tree(), child_scroll_clip_layer_id);
8052 8076
8053 int child_scroll_layer_id = 8; 8077 int child_scroll_layer_id = 8;
8054 std::unique_ptr<LayerImpl> child_scroll = CreateScrollableLayer( 8078 std::unique_ptr<LayerImpl> child_scroll = CreateScrollableLayer(
8055 child_scroll_layer_id, content_size, child_scroll_clip.get()); 8079 child_scroll_layer_id, content_size, child_scroll_clip.get());
8056 8080
8057 child_scroll->SetPosition(gfx::PointF(10.f, 10.f)); 8081 child_scroll->SetPosition(gfx::PointF(10.f, 10.f));
8058 8082
8059 child_scroll->AddChild(std::move(occluder_layer)); 8083 child_scroll->AddChild(std::move(occluder_layer));
8060 child_scroll_clip->AddChild(std::move(child_scroll)); 8084 child_scroll_clip->AddChild(std::move(child_scroll));
8061 scroll_layer->AddChild(std::move(child_scroll_clip)); 8085 scroll_layer->AddChild(std::move(child_scroll_clip));
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
8109 SetupScrollAndContentsLayers(content_size); 8133 SetupScrollAndContentsLayers(content_size);
8110 8134
8111 LayerImpl* root = host_impl_->active_tree()->LayerById(1); 8135 LayerImpl* root = host_impl_->active_tree()->LayerById(1);
8112 LayerImpl* root_scroll_layer = host_impl_->active_tree()->LayerById(2); 8136 LayerImpl* root_scroll_layer = host_impl_->active_tree()->LayerById(2);
8113 8137
8114 std::unique_ptr<LayerImpl> invisible_scroll_layer = 8138 std::unique_ptr<LayerImpl> invisible_scroll_layer =
8115 CreateScrollableLayer(7, content_size, root); 8139 CreateScrollableLayer(7, content_size, root);
8116 invisible_scroll_layer->SetDrawsContent(false); 8140 invisible_scroll_layer->SetDrawsContent(false);
8117 8141
8118 std::unique_ptr<LayerImpl> child_layer = 8142 std::unique_ptr<LayerImpl> child_layer =
8119 LayerImpl::Create(host_impl_->active_tree(), 8); 8143 CreateTestLayerImpl(host_impl_->active_tree(), 8);
8120 child_layer->SetDrawsContent(false); 8144 child_layer->SetDrawsContent(false);
8121 8145
8122 std::unique_ptr<LayerImpl> grand_child_layer = 8146 std::unique_ptr<LayerImpl> grand_child_layer =
8123 LayerImpl::Create(host_impl_->active_tree(), 9); 8147 CreateTestLayerImpl(host_impl_->active_tree(), 9);
8124 grand_child_layer->SetDrawsContent(true); 8148 grand_child_layer->SetDrawsContent(true);
8125 grand_child_layer->SetBounds(content_size); 8149 grand_child_layer->SetBounds(content_size);
8126 // Move the grand child so it's not hit by our test point. 8150 // Move the grand child so it's not hit by our test point.
8127 grand_child_layer->SetPosition(gfx::PointF(10.f, 10.f)); 8151 grand_child_layer->SetPosition(gfx::PointF(10.f, 10.f));
8128 8152
8129 child_layer->AddChild(std::move(grand_child_layer)); 8153 child_layer->AddChild(std::move(grand_child_layer));
8130 invisible_scroll_layer->AddChild(std::move(child_layer)); 8154 invisible_scroll_layer->AddChild(std::move(child_layer));
8131 root_scroll_layer->AddChild(std::move(invisible_scroll_layer)); 8155 root_scroll_layer->AddChild(std::move(invisible_scroll_layer));
8132 8156
8133 SetNeedsRebuildPropertyTrees(); 8157 SetNeedsRebuildPropertyTrees();
(...skipping 18 matching lines...) Expand all
8152 SetupScrollAndContentsLayers(content_size); 8176 SetupScrollAndContentsLayers(content_size);
8153 8177
8154 LayerImpl* root = host_impl_->active_tree()->LayerById(1); 8178 LayerImpl* root = host_impl_->active_tree()->LayerById(1);
8155 8179
8156 int scroll_layer_id = 2; 8180 int scroll_layer_id = 2;
8157 LayerImpl* scroll_layer = 8181 LayerImpl* scroll_layer =
8158 host_impl_->active_tree()->LayerById(scroll_layer_id); 8182 host_impl_->active_tree()->LayerById(scroll_layer_id);
8159 8183
8160 int scroll_child_id = 6; 8184 int scroll_child_id = 6;
8161 std::unique_ptr<LayerImpl> scroll_child = 8185 std::unique_ptr<LayerImpl> scroll_child =
8162 LayerImpl::Create(host_impl_->active_tree(), scroll_child_id); 8186 CreateTestLayerImpl(host_impl_->active_tree(), scroll_child_id);
8163 scroll_child->SetDrawsContent(true); 8187 scroll_child->SetDrawsContent(true);
8164 scroll_child->SetBounds(content_size); 8188 scroll_child->SetBounds(content_size);
8165 // Move the scroll child so it's not hit by our test point. 8189 // Move the scroll child so it's not hit by our test point.
8166 scroll_child->SetPosition(gfx::PointF(10.f, 10.f)); 8190 scroll_child->SetPosition(gfx::PointF(10.f, 10.f));
8167 8191
8168 int invisible_scroll_layer_id = 7; 8192 int invisible_scroll_layer_id = 7;
8169 std::unique_ptr<LayerImpl> invisible_scroll = 8193 std::unique_ptr<LayerImpl> invisible_scroll =
8170 CreateScrollableLayer(invisible_scroll_layer_id, content_size, root); 8194 CreateScrollableLayer(invisible_scroll_layer_id, content_size, root);
8171 invisible_scroll->SetDrawsContent(false); 8195 invisible_scroll->SetDrawsContent(false);
8172 8196
8173 int container_id = 8; 8197 int container_id = 8;
8174 std::unique_ptr<LayerImpl> container = 8198 std::unique_ptr<LayerImpl> container =
8175 LayerImpl::Create(host_impl_->active_tree(), container_id); 8199 CreateTestLayerImpl(host_impl_->active_tree(), container_id);
8176 8200
8177 std::unique_ptr<std::set<LayerImpl*>> scroll_children( 8201 std::unique_ptr<std::set<LayerImpl*>> scroll_children(
8178 new std::set<LayerImpl*>); 8202 new std::set<LayerImpl*>);
8179 scroll_children->insert(scroll_child.get()); 8203 scroll_children->insert(scroll_child.get());
8180 invisible_scroll->test_properties()->scroll_children.reset( 8204 invisible_scroll->test_properties()->scroll_children.reset(
8181 scroll_children.release()); 8205 scroll_children.release());
8182 8206
8183 scroll_child->test_properties()->scroll_parent = invisible_scroll.get(); 8207 scroll_child->test_properties()->scroll_parent = invisible_scroll.get();
8184 8208
8185 container->AddChild(std::move(invisible_scroll)); 8209 container->AddChild(std::move(invisible_scroll));
(...skipping 13 matching lines...) Expand all
8199 .thread); 8223 .thread);
8200 8224
8201 EXPECT_EQ(7, host_impl_->CurrentlyScrollingLayer()->id()); 8225 EXPECT_EQ(7, host_impl_->CurrentlyScrollingLayer()->id());
8202 } 8226 }
8203 8227
8204 // Make sure LatencyInfo carried by LatencyInfoSwapPromise are passed 8228 // Make sure LatencyInfo carried by LatencyInfoSwapPromise are passed
8205 // to CompositorFrameMetadata after SwapBuffers(); 8229 // to CompositorFrameMetadata after SwapBuffers();
8206 TEST_F(LayerTreeHostImplTest, LatencyInfoPassedToCompositorFrameMetadata) { 8230 TEST_F(LayerTreeHostImplTest, LatencyInfoPassedToCompositorFrameMetadata) {
8207 std::unique_ptr<SolidColorLayerImpl> root = 8231 std::unique_ptr<SolidColorLayerImpl> root =
8208 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); 8232 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
8233 root->SetElementId(NextTestElementId());
8209 root->SetPosition(gfx::PointF()); 8234 root->SetPosition(gfx::PointF());
8210 root->SetBounds(gfx::Size(10, 10)); 8235 root->SetBounds(gfx::Size(10, 10));
8211 root->SetDrawsContent(true); 8236 root->SetDrawsContent(true);
8212 root->test_properties()->force_render_surface = true; 8237 root->test_properties()->force_render_surface = true;
8213 8238
8214 host_impl_->active_tree()->SetRootLayer(std::move(root)); 8239 host_impl_->active_tree()->SetRootLayer(std::move(root));
8215 8240
8216 FakeOutputSurface* fake_output_surface = 8241 FakeOutputSurface* fake_output_surface =
8217 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); 8242 static_cast<FakeOutputSurface*>(host_impl_->output_surface());
8218 8243
(...skipping 20 matching lines...) Expand all
8239 fake_output_surface->last_sent_frame().metadata.latency_info; 8264 fake_output_surface->last_sent_frame().metadata.latency_info;
8240 EXPECT_EQ(1u, metadata_latency_after.size()); 8265 EXPECT_EQ(1u, metadata_latency_after.size());
8241 EXPECT_TRUE(metadata_latency_after[0].FindLatency( 8266 EXPECT_TRUE(metadata_latency_after[0].FindLatency(
8242 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL)); 8267 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL));
8243 } 8268 }
8244 8269
8245 TEST_F(LayerTreeHostImplTest, SelectionBoundsPassedToCompositorFrameMetadata) { 8270 TEST_F(LayerTreeHostImplTest, SelectionBoundsPassedToCompositorFrameMetadata) {
8246 int root_layer_id = 1; 8271 int root_layer_id = 1;
8247 std::unique_ptr<SolidColorLayerImpl> root = 8272 std::unique_ptr<SolidColorLayerImpl> root =
8248 SolidColorLayerImpl::Create(host_impl_->active_tree(), root_layer_id); 8273 SolidColorLayerImpl::Create(host_impl_->active_tree(), root_layer_id);
8274 root->SetElementId(NextTestElementId());
8249 root->SetPosition(gfx::PointF()); 8275 root->SetPosition(gfx::PointF());
8250 root->SetBounds(gfx::Size(10, 10)); 8276 root->SetBounds(gfx::Size(10, 10));
8251 root->SetDrawsContent(true); 8277 root->SetDrawsContent(true);
8252 root->test_properties()->force_render_surface = true; 8278 root->test_properties()->force_render_surface = true;
8253 8279
8254 host_impl_->active_tree()->SetRootLayer(std::move(root)); 8280 host_impl_->active_tree()->SetRootLayer(std::move(root));
8255 8281
8256 // Ensure the default frame selection bounds are empty. 8282 // Ensure the default frame selection bounds are empty.
8257 FakeOutputSurface* fake_output_surface = 8283 FakeOutputSurface* fake_output_surface =
8258 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); 8284 static_cast<FakeOutputSurface*>(host_impl_->output_surface());
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after
8894 const gfx::Size& outer_viewport, 8920 const gfx::Size& outer_viewport,
8895 const gfx::Size& inner_viewport) { 8921 const gfx::Size& inner_viewport) {
8896 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree(); 8922 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree();
8897 const int kOuterViewportClipLayerId = 6; 8923 const int kOuterViewportClipLayerId = 6;
8898 const int kOuterViewportScrollLayerId = 7; 8924 const int kOuterViewportScrollLayerId = 7;
8899 const int kInnerViewportScrollLayerId = 2; 8925 const int kInnerViewportScrollLayerId = 2;
8900 const int kInnerViewportClipLayerId = 4; 8926 const int kInnerViewportClipLayerId = 4;
8901 const int kPageScaleLayerId = 5; 8927 const int kPageScaleLayerId = 5;
8902 8928
8903 std::unique_ptr<LayerImpl> inner_scroll = 8929 std::unique_ptr<LayerImpl> inner_scroll =
8904 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); 8930 CreateTestLayerImpl(layer_tree_impl, kInnerViewportScrollLayerId);
8905 inner_scroll->test_properties()->is_container_for_fixed_position_layers = 8931 inner_scroll->test_properties()->is_container_for_fixed_position_layers =
8906 true; 8932 true;
8907 inner_scroll->layer_tree_impl() 8933 inner_scroll->layer_tree_impl()
8908 ->property_trees() 8934 ->property_trees()
8909 ->scroll_tree.UpdateScrollOffsetBaseForTesting(inner_scroll->id(), 8935 ->scroll_tree.UpdateScrollOffsetBaseForTesting(inner_scroll->id(),
8910 gfx::ScrollOffset()); 8936 gfx::ScrollOffset());
8911 8937
8912 std::unique_ptr<LayerImpl> inner_clip = 8938 std::unique_ptr<LayerImpl> inner_clip =
8913 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); 8939 CreateTestLayerImpl(layer_tree_impl, kInnerViewportClipLayerId);
8914 inner_clip->SetBounds(inner_viewport); 8940 inner_clip->SetBounds(inner_viewport);
8915 8941
8916 std::unique_ptr<LayerImpl> page_scale = 8942 std::unique_ptr<LayerImpl> page_scale =
8917 LayerImpl::Create(layer_tree_impl, kPageScaleLayerId); 8943 CreateTestLayerImpl(layer_tree_impl, kPageScaleLayerId);
8918 8944
8919 inner_scroll->SetScrollClipLayer(inner_clip->id()); 8945 inner_scroll->SetScrollClipLayer(inner_clip->id());
8920 inner_scroll->SetBounds(outer_viewport); 8946 inner_scroll->SetBounds(outer_viewport);
8921 inner_scroll->SetPosition(gfx::PointF()); 8947 inner_scroll->SetPosition(gfx::PointF());
8922 8948
8923 std::unique_ptr<LayerImpl> outer_clip = 8949 std::unique_ptr<LayerImpl> outer_clip =
8924 LayerImpl::Create(layer_tree_impl, kOuterViewportClipLayerId); 8950 CreateTestLayerImpl(layer_tree_impl, kOuterViewportClipLayerId);
8925 outer_clip->SetBounds(outer_viewport); 8951 outer_clip->SetBounds(outer_viewport);
8926 outer_clip->test_properties()->is_container_for_fixed_position_layers = 8952 outer_clip->test_properties()->is_container_for_fixed_position_layers =
8927 true; 8953 true;
8928 8954
8929 std::unique_ptr<LayerImpl> outer_scroll = 8955 std::unique_ptr<LayerImpl> outer_scroll =
8930 LayerImpl::Create(layer_tree_impl, kOuterViewportScrollLayerId); 8956 CreateTestLayerImpl(layer_tree_impl, kOuterViewportScrollLayerId);
8931 outer_scroll->SetScrollClipLayer(outer_clip->id()); 8957 outer_scroll->SetScrollClipLayer(outer_clip->id());
8932 outer_scroll->layer_tree_impl() 8958 outer_scroll->layer_tree_impl()
8933 ->property_trees() 8959 ->property_trees()
8934 ->scroll_tree.UpdateScrollOffsetBaseForTesting(outer_scroll->id(), 8960 ->scroll_tree.UpdateScrollOffsetBaseForTesting(outer_scroll->id(),
8935 gfx::ScrollOffset()); 8961 gfx::ScrollOffset());
8936 outer_scroll->SetBounds(content_size); 8962 outer_scroll->SetBounds(content_size);
8937 outer_scroll->SetPosition(gfx::PointF()); 8963 outer_scroll->SetPosition(gfx::PointF());
8938 8964
8939 std::unique_ptr<LayerImpl> contents = LayerImpl::Create(layer_tree_impl, 8); 8965 std::unique_ptr<LayerImpl> contents =
8966 CreateTestLayerImpl(layer_tree_impl, 8);
8940 contents->SetDrawsContent(true); 8967 contents->SetDrawsContent(true);
8941 contents->SetBounds(content_size); 8968 contents->SetBounds(content_size);
8942 contents->SetPosition(gfx::PointF()); 8969 contents->SetPosition(gfx::PointF());
8943 8970
8944 outer_scroll->AddChild(std::move(contents)); 8971 outer_scroll->AddChild(std::move(contents));
8945 outer_clip->AddChild(std::move(outer_scroll)); 8972 outer_clip->AddChild(std::move(outer_scroll));
8946 inner_scroll->AddChild(std::move(outer_clip)); 8973 inner_scroll->AddChild(std::move(outer_clip));
8947 page_scale->AddChild(std::move(inner_scroll)); 8974 page_scale->AddChild(std::move(inner_scroll));
8948 inner_clip->AddChild(std::move(page_scale)); 8975 inner_clip->AddChild(std::move(page_scale));
8949 8976
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
9289 external_transform.Translate(20, 20); 9316 external_transform.Translate(20, 20);
9290 host_impl_->SetExternalTilePriorityConstraints(external_viewport, 9317 host_impl_->SetExternalTilePriorityConstraints(external_viewport,
9291 external_transform); 9318 external_transform);
9292 host_impl_->OnDraw(external_transform, external_viewport, external_clip, 9319 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
9293 resourceless_software_draw); 9320 resourceless_software_draw);
9294 EXPECT_TRANSFORMATION_MATRIX_EQ( 9321 EXPECT_TRANSFORMATION_MATRIX_EQ(
9295 external_transform, layer->draw_properties().target_space_transform); 9322 external_transform, layer->draw_properties().target_space_transform);
9296 } 9323 }
9297 9324
9298 TEST_F(LayerTreeHostImplTest, ExternalTransformSetNeedsRedraw) { 9325 TEST_F(LayerTreeHostImplTest, ExternalTransformSetNeedsRedraw) {
9299 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 9326 SetupRootLayerImpl(CreateTestLayerImpl(host_impl_->active_tree(), 1));
9300 9327
9301 const gfx::Size viewport_size(100, 100); 9328 const gfx::Size viewport_size(100, 100);
9302 host_impl_->SetViewportSize(viewport_size); 9329 host_impl_->SetViewportSize(viewport_size);
9303 9330
9304 const gfx::Transform transform_for_tile_priority; 9331 const gfx::Transform transform_for_tile_priority;
9305 const gfx::Transform draw_transform; 9332 const gfx::Transform draw_transform;
9306 const gfx::Rect viewport_for_tile_priority1(viewport_size); 9333 const gfx::Rect viewport_for_tile_priority1(viewport_size);
9307 const gfx::Rect viewport_for_tile_priority2(50, 50); 9334 const gfx::Rect viewport_for_tile_priority2(50, 50);
9308 const gfx::Rect draw_viewport(viewport_size); 9335 const gfx::Rect draw_viewport(viewport_size);
9309 const gfx::Rect clip(viewport_size); 9336 const gfx::Rect clip(viewport_size);
(...skipping 10 matching lines...) Expand all
9320 did_request_redraw_ = false; 9347 did_request_redraw_ = false;
9321 host_impl_->SetExternalTilePriorityConstraints(viewport_for_tile_priority2, 9348 host_impl_->SetExternalTilePriorityConstraints(viewport_for_tile_priority2,
9322 transform_for_tile_priority); 9349 transform_for_tile_priority);
9323 EXPECT_TRUE(did_request_redraw_); 9350 EXPECT_TRUE(did_request_redraw_);
9324 host_impl_->OnDraw(draw_transform, draw_viewport, clip, 9351 host_impl_->OnDraw(draw_transform, draw_viewport, clip,
9325 resourceless_software_draw); 9352 resourceless_software_draw);
9326 EXPECT_FALSE(last_on_draw_frame_->has_no_damage); 9353 EXPECT_FALSE(last_on_draw_frame_->has_no_damage);
9327 } 9354 }
9328 9355
9329 TEST_F(LayerTreeHostImplTest, OnDrawConstraintSetNeedsRedraw) { 9356 TEST_F(LayerTreeHostImplTest, OnDrawConstraintSetNeedsRedraw) {
9330 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 9357 SetupRootLayerImpl(CreateTestLayerImpl(host_impl_->active_tree(), 1));
9331 9358
9332 const gfx::Size viewport_size(100, 100); 9359 const gfx::Size viewport_size(100, 100);
9333 host_impl_->SetViewportSize(viewport_size); 9360 host_impl_->SetViewportSize(viewport_size);
9334 9361
9335 const gfx::Transform draw_transform; 9362 const gfx::Transform draw_transform;
9336 const gfx::Rect draw_viewport1(viewport_size); 9363 const gfx::Rect draw_viewport1(viewport_size);
9337 const gfx::Rect draw_viewport2(50, 50); 9364 const gfx::Rect draw_viewport2(50, 50);
9338 const gfx::Rect clip(viewport_size); 9365 const gfx::Rect clip(viewport_size);
9339 bool resourceless_software_draw = false; 9366 bool resourceless_software_draw = false;
9340 9367
(...skipping 20 matching lines...) Expand all
9361 9388
9362 class ResourcelessSoftwareLayerTreeHostImplTest : public LayerTreeHostImplTest { 9389 class ResourcelessSoftwareLayerTreeHostImplTest : public LayerTreeHostImplTest {
9363 protected: 9390 protected:
9364 std::unique_ptr<OutputSurface> CreateOutputSurface() override { 9391 std::unique_ptr<OutputSurface> CreateOutputSurface() override {
9365 return FakeOutputSurface::Create3dWithResourcelessSoftwareSupport(); 9392 return FakeOutputSurface::Create3dWithResourcelessSoftwareSupport();
9366 } 9393 }
9367 }; 9394 };
9368 9395
9369 TEST_F(ResourcelessSoftwareLayerTreeHostImplTest, 9396 TEST_F(ResourcelessSoftwareLayerTreeHostImplTest,
9370 ResourcelessSoftwareSetNeedsRedraw) { 9397 ResourcelessSoftwareSetNeedsRedraw) {
9371 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 9398 SetupRootLayerImpl(CreateTestLayerImpl(host_impl_->active_tree(), 1));
9372 9399
9373 const gfx::Size viewport_size(100, 100); 9400 const gfx::Size viewport_size(100, 100);
9374 host_impl_->SetViewportSize(viewport_size); 9401 host_impl_->SetViewportSize(viewport_size);
9375 9402
9376 const gfx::Transform draw_transform; 9403 const gfx::Transform draw_transform;
9377 const gfx::Rect draw_viewport(viewport_size); 9404 const gfx::Rect draw_viewport(viewport_size);
9378 const gfx::Rect clip(viewport_size); 9405 const gfx::Rect clip(viewport_size);
9379 bool resourceless_software_draw = false; 9406 bool resourceless_software_draw = false;
9380 9407
9381 // Clear any damage. 9408 // Clear any damage.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
9438 9465
9439 TEST_F(LayerTreeHostImplTest, ExternalTileConstraintReflectedInPendingTree) { 9466 TEST_F(LayerTreeHostImplTest, ExternalTileConstraintReflectedInPendingTree) {
9440 EXPECT_FALSE(host_impl_->CommitToActiveTree()); 9467 EXPECT_FALSE(host_impl_->CommitToActiveTree());
9441 const gfx::Size layer_size(100, 100); 9468 const gfx::Size layer_size(100, 100);
9442 host_impl_->SetViewportSize(layer_size); 9469 host_impl_->SetViewportSize(layer_size);
9443 bool update_lcd_text = false; 9470 bool update_lcd_text = false;
9444 9471
9445 // Set up active and pending tree. 9472 // Set up active and pending tree.
9446 host_impl_->CreatePendingTree(); 9473 host_impl_->CreatePendingTree();
9447 host_impl_->pending_tree()->SetRootLayer( 9474 host_impl_->pending_tree()->SetRootLayer(
9448 LayerImpl::Create(host_impl_->pending_tree(), 1)); 9475 CreateTestLayerImpl(host_impl_->pending_tree(), 1));
9449 host_impl_->pending_tree()->BuildPropertyTreesForTesting(); 9476 host_impl_->pending_tree()->BuildPropertyTreesForTesting();
9450 host_impl_->pending_tree()->UpdateDrawProperties(update_lcd_text); 9477 host_impl_->pending_tree()->UpdateDrawProperties(update_lcd_text);
9451 9478
9452 host_impl_->ActivateSyncTree(); 9479 host_impl_->ActivateSyncTree();
9453 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 9480 host_impl_->active_tree()->BuildPropertyTreesForTesting();
9454 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 9481 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text);
9455 9482
9456 host_impl_->CreatePendingTree(); 9483 host_impl_->CreatePendingTree();
9457 host_impl_->pending_tree()->UpdateDrawProperties(update_lcd_text); 9484 host_impl_->pending_tree()->UpdateDrawProperties(update_lcd_text);
9458 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 9485 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text);
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
9541 host_impl_->OnDraw(external_transform, external_viewport, external_clip, 9568 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
9542 resourceless_software_draw); 9569 resourceless_software_draw);
9543 EXPECT_EQ(gfx::Rect(50, 50), content_layer->visible_layer_rect()); 9570 EXPECT_EQ(gfx::Rect(50, 50), content_layer->visible_layer_rect());
9544 } 9571 }
9545 9572
9546 TEST_F(LayerTreeHostImplTest, ExternalTransformAffectsSublayerScaleFactor) { 9573 TEST_F(LayerTreeHostImplTest, ExternalTransformAffectsSublayerScaleFactor) {
9547 const gfx::Size layer_size(100, 100); 9574 const gfx::Size layer_size(100, 100);
9548 SetupScrollAndContentsLayers(layer_size); 9575 SetupScrollAndContentsLayers(layer_size);
9549 LayerImpl* content_layer = 9576 LayerImpl* content_layer =
9550 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0]; 9577 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0];
9551 content_layer->AddChild(LayerImpl::Create(host_impl_->active_tree(), 100)); 9578 content_layer->AddChild(CreateTestLayerImpl(host_impl_->active_tree(), 100));
9552 LayerImpl* test_layer = host_impl_->active_tree()->LayerById(100); 9579 LayerImpl* test_layer = host_impl_->active_tree()->LayerById(100);
9553 test_layer->test_properties()->force_render_surface = true; 9580 test_layer->test_properties()->force_render_surface = true;
9554 test_layer->SetDrawsContent(true); 9581 test_layer->SetDrawsContent(true);
9555 test_layer->SetBounds(layer_size); 9582 test_layer->SetBounds(layer_size);
9556 gfx::Transform perspective_transform; 9583 gfx::Transform perspective_transform;
9557 perspective_transform.ApplyPerspectiveDepth(2); 9584 perspective_transform.ApplyPerspectiveDepth(2);
9558 test_layer->SetTransform(perspective_transform); 9585 test_layer->SetTransform(perspective_transform);
9559 9586
9560 SetNeedsRebuildPropertyTrees(); 9587 SetNeedsRebuildPropertyTrees();
9561 RebuildPropertyTrees(); 9588 RebuildPropertyTrees();
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
9684 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 50)).thread); 9711 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 50)).thread);
9685 9712
9686 LayerImpl* scrolling_layer = host_impl_->CurrentlyScrollingLayer(); 9713 LayerImpl* scrolling_layer = host_impl_->CurrentlyScrollingLayer();
9687 9714
9688 begin_frame_args.frame_time = start_time; 9715 begin_frame_args.frame_time = start_time;
9689 host_impl_->WillBeginImplFrame(begin_frame_args); 9716 host_impl_->WillBeginImplFrame(begin_frame_args);
9690 host_impl_->Animate(); 9717 host_impl_->Animate();
9691 host_impl_->UpdateAnimationState(true); 9718 host_impl_->UpdateAnimationState(true);
9692 9719
9693 EXPECT_TRUE(host_impl_->animation_host()->HasAnyAnimationTargetingProperty( 9720 EXPECT_TRUE(host_impl_->animation_host()->HasAnyAnimationTargetingProperty(
9694 scrolling_layer->id(), TargetProperty::SCROLL_OFFSET)); 9721 scrolling_layer->element_id(), TargetProperty::SCROLL_OFFSET));
9695 9722
9696 EXPECT_EQ(gfx::ScrollOffset(), scrolling_layer->CurrentScrollOffset()); 9723 EXPECT_EQ(gfx::ScrollOffset(), scrolling_layer->CurrentScrollOffset());
9697 host_impl_->DidFinishImplFrame(); 9724 host_impl_->DidFinishImplFrame();
9698 9725
9699 begin_frame_args.frame_time = 9726 begin_frame_args.frame_time =
9700 start_time + base::TimeDelta::FromMilliseconds(50); 9727 start_time + base::TimeDelta::FromMilliseconds(50);
9701 host_impl_->WillBeginImplFrame(begin_frame_args); 9728 host_impl_->WillBeginImplFrame(begin_frame_args);
9702 host_impl_->Animate(); 9729 host_impl_->Animate();
9703 host_impl_->UpdateAnimationState(true); 9730 host_impl_->UpdateAnimationState(true);
9704 9731
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
9755 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 100)).thread); 9782 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 100)).thread);
9756 9783
9757 LayerImpl* scrolling_layer = host_impl_->CurrentlyScrollingLayer(); 9784 LayerImpl* scrolling_layer = host_impl_->CurrentlyScrollingLayer();
9758 9785
9759 begin_frame_args.frame_time = start_time; 9786 begin_frame_args.frame_time = start_time;
9760 host_impl_->WillBeginImplFrame(begin_frame_args); 9787 host_impl_->WillBeginImplFrame(begin_frame_args);
9761 host_impl_->Animate(); 9788 host_impl_->Animate();
9762 host_impl_->UpdateAnimationState(true); 9789 host_impl_->UpdateAnimationState(true);
9763 9790
9764 EXPECT_TRUE(host_impl_->animation_host()->HasAnyAnimationTargetingProperty( 9791 EXPECT_TRUE(host_impl_->animation_host()->HasAnyAnimationTargetingProperty(
9765 scrolling_layer->id(), TargetProperty::SCROLL_OFFSET)); 9792 scrolling_layer->element_id(), TargetProperty::SCROLL_OFFSET));
9766 9793
9767 EXPECT_EQ(gfx::ScrollOffset(), scrolling_layer->CurrentScrollOffset()); 9794 EXPECT_EQ(gfx::ScrollOffset(), scrolling_layer->CurrentScrollOffset());
9768 host_impl_->DidFinishImplFrame(); 9795 host_impl_->DidFinishImplFrame();
9769 9796
9770 begin_frame_args.frame_time = 9797 begin_frame_args.frame_time =
9771 start_time + base::TimeDelta::FromMilliseconds(50); 9798 start_time + base::TimeDelta::FromMilliseconds(50);
9772 host_impl_->WillBeginImplFrame(begin_frame_args); 9799 host_impl_->WillBeginImplFrame(begin_frame_args);
9773 host_impl_->Animate(); 9800 host_impl_->Animate();
9774 host_impl_->UpdateAnimationState(true); 9801 host_impl_->UpdateAnimationState(true);
9775 9802
(...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after
10630 page_scale_layer->transform_tree_index()); 10657 page_scale_layer->transform_tree_index());
10631 EXPECT_EQ(active_tree_node->data.post_local_scale_factor, 2.f); 10658 EXPECT_EQ(active_tree_node->data.post_local_scale_factor, 2.f);
10632 } 10659 }
10633 10660
10634 TEST_F(LayerTreeHostImplTest, SubLayerScaleForNodeInSubtreeOfPageScaleLayer) { 10661 TEST_F(LayerTreeHostImplTest, SubLayerScaleForNodeInSubtreeOfPageScaleLayer) {
10635 // Checks that the sublayer scale of a transform node in the subtree of the 10662 // Checks that the sublayer scale of a transform node in the subtree of the
10636 // page scale layer is updated without a property tree rebuild. 10663 // page scale layer is updated without a property tree rebuild.
10637 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 3.f); 10664 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 3.f);
10638 CreateScrollAndContentsLayers(host_impl_->active_tree(), gfx::Size(100, 100)); 10665 CreateScrollAndContentsLayers(host_impl_->active_tree(), gfx::Size(100, 100));
10639 LayerImpl* page_scale_layer = host_impl_->active_tree()->PageScaleLayer(); 10666 LayerImpl* page_scale_layer = host_impl_->active_tree()->PageScaleLayer();
10640 page_scale_layer->AddChild(LayerImpl::Create(host_impl_->active_tree(), 100)); 10667 page_scale_layer->AddChild(
10668 CreateTestLayerImpl(host_impl_->active_tree(), 100));
10641 10669
10642 LayerImpl* in_subtree_of_page_scale_layer = 10670 LayerImpl* in_subtree_of_page_scale_layer =
10643 host_impl_->active_tree()->LayerById(100); 10671 host_impl_->active_tree()->LayerById(100);
10644 in_subtree_of_page_scale_layer->test_properties()->force_render_surface = 10672 in_subtree_of_page_scale_layer->test_properties()->force_render_surface =
10645 true; 10673 true;
10646 SetNeedsRebuildPropertyTrees(); 10674 SetNeedsRebuildPropertyTrees();
10647 RebuildPropertyTrees(); 10675 RebuildPropertyTrees();
10648 DrawFrame(); 10676 DrawFrame();
10649 TransformNode* node = 10677 TransformNode* node =
10650 host_impl_->active_tree()->property_trees()->transform_tree.Node( 10678 host_impl_->active_tree()->property_trees()->transform_tree.Node(
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
10746 10774
10747 // Re-initialize with a software output surface. 10775 // Re-initialize with a software output surface.
10748 output_surface_ = FakeOutputSurface::CreateSoftware( 10776 output_surface_ = FakeOutputSurface::CreateSoftware(
10749 base::WrapUnique(new SoftwareOutputDevice)); 10777 base::WrapUnique(new SoftwareOutputDevice));
10750 host_impl_->InitializeRenderer(output_surface_.get()); 10778 host_impl_->InitializeRenderer(output_surface_.get());
10751 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 10779 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
10752 } 10780 }
10753 10781
10754 } // namespace 10782 } // namespace
10755 } // namespace cc 10783 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698