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

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

Issue 2676923002: End-to-end prototype of compositor scrolling with slimming paint v2 (Closed)
Patch Set: Add SPV2 test of didScroll callback Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/layers/layer.cc ('k') | third_party/WebKit/Source/core/frame/FrameView.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include "base/location.h" 7 #include "base/location.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 case 1: 140 case 1:
141 EXPECT_VECTOR_EQ(second_scroll_, ScrollTreeForLayer(scroll_layer) 141 EXPECT_VECTOR_EQ(second_scroll_, ScrollTreeForLayer(scroll_layer)
142 ->GetScrollOffsetBaseForTesting( 142 ->GetScrollOffsetBaseForTesting(
143 scroll_layer->id())); 143 scroll_layer->id()));
144 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); 144 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer));
145 EndTest(); 145 EndTest();
146 break; 146 break;
147 } 147 }
148 } 148 }
149 149
150 void DidScrollOuterViewport() { num_scrolls_++; } 150 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; }
151 151
152 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } 152 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); }
153 153
154 private: 154 private:
155 gfx::ScrollOffset initial_scroll_; 155 gfx::ScrollOffset initial_scroll_;
156 gfx::ScrollOffset second_scroll_; 156 gfx::ScrollOffset second_scroll_;
157 gfx::Vector2dF scroll_amount_; 157 gfx::Vector2dF scroll_amount_;
158 int num_scrolls_; 158 int num_scrolls_;
159 int outer_viewport_container_layer_id_; 159 int outer_viewport_container_layer_id_;
160 }; 160 };
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 // Third or later draw after second commit. 223 // Third or later draw after second commit.
224 EXPECT_GE(impl->SourceAnimationFrameNumberForTesting(), 3u); 224 EXPECT_GE(impl->SourceAnimationFrameNumberForTesting(), 3u);
225 EXPECT_VECTOR_EQ( 225 EXPECT_VECTOR_EQ(
226 gfx::ScrollOffsetWithDelta(initial_scroll_, 226 gfx::ScrollOffsetWithDelta(initial_scroll_,
227 scroll_amount_ + scroll_amount_), 227 scroll_amount_ + scroll_amount_),
228 scroll_layer_->scroll_offset()); 228 scroll_layer_->scroll_offset());
229 EndTest(); 229 EndTest();
230 } 230 }
231 } 231 }
232 232
233 void DidScrollOuterViewport() { num_scrolls_++; } 233 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; }
234 234
235 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } 235 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); }
236 236
237 private: 237 private:
238 gfx::ScrollOffset initial_scroll_; 238 gfx::ScrollOffset initial_scroll_;
239 gfx::Vector2dF scroll_amount_; 239 gfx::Vector2dF scroll_amount_;
240 int num_scrolls_; 240 int num_scrolls_;
241 scoped_refptr<Layer> scroll_layer_; 241 scoped_refptr<Layer> scroll_layer_;
242 }; 242 };
243 243
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 gfx::ScrollOffsetWithDelta(initial_scroll_, delta), 405 gfx::ScrollOffsetWithDelta(initial_scroll_, delta),
406 ScrollTreeForLayer(root_scroll_layer) 406 ScrollTreeForLayer(root_scroll_layer)
407 ->GetScrollOffsetBaseForTesting(root_scroll_layer->id())); 407 ->GetScrollOffsetBaseForTesting(root_scroll_layer->id()));
408 EndTest(); 408 EndTest();
409 } else { 409 } else {
410 // Commit for source frame 3 is aborted. 410 // Commit for source frame 3 is aborted.
411 NOTREACHED(); 411 NOTREACHED();
412 } 412 }
413 } 413 }
414 414
415 void DidScrollOuterViewport() { num_impl_scrolls_++; } 415 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_impl_scrolls_++; }
416 416
417 void AfterTest() override { 417 void AfterTest() override {
418 EXPECT_EQ(3, num_impl_scrolls_); 418 EXPECT_EQ(3, num_impl_scrolls_);
419 // Verify that the embedder sees aborted commits as real commits. 419 // Verify that the embedder sees aborted commits as real commits.
420 EXPECT_EQ(4, num_will_begin_main_frames_); 420 EXPECT_EQ(4, num_will_begin_main_frames_);
421 EXPECT_EQ(4, num_did_begin_main_frames_); 421 EXPECT_EQ(4, num_did_begin_main_frames_);
422 EXPECT_EQ(4, num_will_commits_); 422 EXPECT_EQ(4, num_will_commits_);
423 EXPECT_EQ(4, num_did_commits_); 423 EXPECT_EQ(4, num_did_commits_);
424 // ...but the compositor thread only sees two real ones. 424 // ...but the compositor thread only sees two real ones.
425 EXPECT_EQ(2, num_impl_commits_); 425 EXPECT_EQ(2, num_impl_commits_);
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 623 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
624 624
625 void WillCommit() override { 625 void WillCommit() override {
626 // Keep the test committing (otherwise the early out for no update 626 // Keep the test committing (otherwise the early out for no update
627 // will stall the test). 627 // will stall the test).
628 if (layer_tree_host()->SourceFrameNumber() < 2) { 628 if (layer_tree_host()->SourceFrameNumber() < 2) {
629 layer_tree_host()->SetNeedsCommit(); 629 layer_tree_host()->SetNeedsCommit();
630 } 630 }
631 } 631 }
632 632
633 void DidScroll() { 633 void DidScroll(const gfx::ScrollOffset&) {
ajuma 2017/02/06 21:28:52 Perhaps this (or one of the other tests in this fi
pdr. 2017/02/07 22:14:34 I talked offline with both Ali and Walter and both
634 final_scroll_offset_ = expected_scroll_layer_->scroll_offset(); 634 final_scroll_offset_ = expected_scroll_layer_->scroll_offset();
635 } 635 }
636 636
637 void DidScrollOuterViewport() { num_scrolls_++; } 637 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; }
638 638
639 void UpdateLayerTreeHost() override { 639 void UpdateLayerTreeHost() override {
640 EXPECT_VECTOR_EQ(gfx::Vector2d(), 640 EXPECT_VECTOR_EQ(gfx::Vector2d(),
641 expected_no_scroll_layer_->scroll_offset()); 641 expected_no_scroll_layer_->scroll_offset());
642 642
643 switch (layer_tree_host()->SourceFrameNumber()) { 643 switch (layer_tree_host()->SourceFrameNumber()) {
644 case 0: 644 case 0:
645 EXPECT_VECTOR_EQ(initial_offset_, 645 EXPECT_VECTOR_EQ(initial_offset_,
646 expected_scroll_layer_->scroll_offset()); 646 expected_scroll_layer_->scroll_offset());
647 break; 647 break;
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
916 gfx::ScrollOffsetWithDelta( 916 gfx::ScrollOffsetWithDelta(
917 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), 917 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_),
918 ScrollTreeForLayer(scroll_layer) 918 ScrollTreeForLayer(scroll_layer)
919 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); 919 ->GetScrollOffsetBaseForTesting(scroll_layer->id()));
920 EXPECT_VECTOR_EQ(impl_thread_scroll2_, ScrollDelta(scroll_layer)); 920 EXPECT_VECTOR_EQ(impl_thread_scroll2_, ScrollDelta(scroll_layer));
921 EndTest(); 921 EndTest();
922 break; 922 break;
923 } 923 }
924 } 924 }
925 925
926 void DidScrollOuterViewport() { num_scrolls_++; } 926 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; }
927 927
928 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } 928 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); }
929 929
930 private: 930 private:
931 gfx::ScrollOffset initial_scroll_; 931 gfx::ScrollOffset initial_scroll_;
932 gfx::Vector2dF main_thread_scroll_; 932 gfx::Vector2dF main_thread_scroll_;
933 gfx::Vector2dF impl_thread_scroll1_; 933 gfx::Vector2dF impl_thread_scroll1_;
934 gfx::Vector2dF impl_thread_scroll2_; 934 gfx::Vector2dF impl_thread_scroll2_;
935 int num_scrolls_; 935 int num_scrolls_;
936 }; 936 };
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 layer_tree_host()->SetRootLayer(NULL); 1413 layer_tree_host()->SetRootLayer(NULL);
1414 EndTest(); 1414 EndTest();
1415 return; 1415 return;
1416 } 1416 }
1417 layer->RemoveFromParent(); 1417 layer->RemoveFromParent();
1418 } 1418 }
1419 1419
1420 protected: 1420 protected:
1421 class FakeLayerScrollClient { 1421 class FakeLayerScrollClient {
1422 public: 1422 public:
1423 void DidScroll() { 1423 void DidScroll(const gfx::ScrollOffset&) {
1424 owner_->DidScroll(layer_); 1424 owner_->DidScroll(layer_);
1425 } 1425 }
1426 LayerTreeHostScrollTestLayerStructureChange* owner_; 1426 LayerTreeHostScrollTestLayerStructureChange* owner_;
1427 Layer* layer_; 1427 Layer* layer_;
1428 }; 1428 };
1429 1429
1430 Layer* CreateScrollLayer(Layer* parent, FakeLayerScrollClient* client) { 1430 Layer* CreateScrollLayer(Layer* parent, FakeLayerScrollClient* client) {
1431 scoped_refptr<PictureLayer> scroll_layer = 1431 scoped_refptr<PictureLayer> scroll_layer =
1432 PictureLayer::Create(&fake_content_layer_client_); 1432 PictureLayer::Create(&fake_content_layer_client_);
1433 scroll_layer->SetBounds(gfx::Size(110, 110)); 1433 scroll_layer->SetBounds(gfx::Size(110, 110));
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1565 // The scroll hasn't been consumed by the main thread. 1565 // The scroll hasn't been consumed by the main thread.
1566 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); 1566 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer));
1567 EXPECT_VECTOR_EQ(third_scroll_, ScrollTreeForLayer(scroll_layer) 1567 EXPECT_VECTOR_EQ(third_scroll_, ScrollTreeForLayer(scroll_layer)
1568 ->GetScrollOffsetBaseForTesting( 1568 ->GetScrollOffsetBaseForTesting(
1569 scroll_layer->id())); 1569 scroll_layer->id()));
1570 EndTest(); 1570 EndTest();
1571 break; 1571 break;
1572 } 1572 }
1573 } 1573 }
1574 1574
1575 void DidScrollOuterViewport() { num_scrolls_++; } 1575 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; }
1576 1576
1577 void AfterTest() override { 1577 void AfterTest() override {
1578 EXPECT_EQ(3, num_commits_); 1578 EXPECT_EQ(3, num_commits_);
1579 EXPECT_EQ(1, num_scrolls_); 1579 EXPECT_EQ(1, num_scrolls_);
1580 } 1580 }
1581 1581
1582 private: 1582 private:
1583 void Scroll(LayerTreeHostImpl* impl) { 1583 void Scroll(LayerTreeHostImpl* impl) {
1584 LayerImpl* root = impl->active_tree()->root_layer_for_testing(); 1584 LayerImpl* root = impl->active_tree()->root_layer_for_testing();
1585 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); 1585 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer();
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
1784 EndTest(); 1784 EndTest();
1785 break; 1785 break;
1786 } 1786 }
1787 } 1787 }
1788 break; 1788 break;
1789 } 1789 }
1790 } 1790 }
1791 num_draws_++; 1791 num_draws_++;
1792 } 1792 }
1793 1793
1794 void DidScrollOuterViewport() { num_impl_scrolls_++; } 1794 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_impl_scrolls_++; }
1795 1795
1796 void AfterTest() override { 1796 void AfterTest() override {
1797 EXPECT_EQ(3, num_impl_scrolls_); 1797 EXPECT_EQ(3, num_impl_scrolls_);
1798 // Verify that the embedder sees aborted commits as real commits. 1798 // Verify that the embedder sees aborted commits as real commits.
1799 EXPECT_EQ(4, num_will_begin_main_frames_); 1799 EXPECT_EQ(4, num_will_begin_main_frames_);
1800 EXPECT_EQ(4, num_did_begin_main_frames_); 1800 EXPECT_EQ(4, num_did_begin_main_frames_);
1801 EXPECT_EQ(4, num_will_commits_); 1801 EXPECT_EQ(4, num_will_commits_);
1802 EXPECT_EQ(4, num_did_commits_); 1802 EXPECT_EQ(4, num_did_commits_);
1803 // ...but the compositor thread only sees two real ones. 1803 // ...but the compositor thread only sees two real ones.
1804 EXPECT_EQ(2, num_impl_commits_); 1804 EXPECT_EQ(2, num_impl_commits_);
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
2066 private: 2066 private:
2067 gfx::ScrollOffset initial_scroll_; 2067 gfx::ScrollOffset initial_scroll_;
2068 gfx::ScrollOffset second_scroll_; 2068 gfx::ScrollOffset second_scroll_;
2069 gfx::Vector2dF scroll_amount_; 2069 gfx::Vector2dF scroll_amount_;
2070 }; 2070 };
2071 2071
2072 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostScrollTestPropertyTreeUpdate); 2072 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostScrollTestPropertyTreeUpdate);
2073 2073
2074 } // namespace 2074 } // namespace
2075 } // namespace cc 2075 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/layer.cc ('k') | third_party/WebKit/Source/core/frame/FrameView.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698