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

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

Issue 671653005: SetNeedsRedraw directly when updating a visible tile. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: pinchblurmerge-test: . Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host_unittest.cc ('k') | cc/trees/single_thread_proxy.h » ('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/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/message_loop/message_loop_proxy.h" 10 #include "base/message_loop/message_loop_proxy.h"
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 } 522 }
523 } 523 }
524 524
525 void AfterTest() override { EXPECT_EQ(3, did_swaps_); } 525 void AfterTest() override { EXPECT_EQ(3, did_swaps_); }
526 526
527 int did_swaps_; 527 int did_swaps_;
528 }; 528 };
529 529
530 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestScrollbarCommitDoesNoDamage); 530 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestScrollbarCommitDoesNoDamage);
531 531
532 class LayerTreeHostDamageTestVisibleTilesStillTriggerDraws
533 : public LayerTreeHostDamageTest {
534 void InitializeSettings(LayerTreeSettings* settings) override {
535 settings->impl_side_painting = true;
536 }
537
538 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
539
540 void SetupTree() override {
541 scoped_refptr<FakePictureLayer> root = FakePictureLayer::Create(&client_);
542 root->SetBounds(gfx::Size(500, 500));
543 layer_tree_host()->SetRootLayer(root);
544 LayerTreeHostDamageTest::SetupTree();
545
546 swap_count_ = 0;
547 prepare_to_draw_count_ = 0;
548 update_visible_tile_count_ = 0;
549 }
550
551 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
552 LayerTreeHostImpl::FrameData* frame_data,
553 DrawResult draw_result) override {
554 EXPECT_EQ(DRAW_SUCCESS, draw_result);
555 prepare_to_draw_count_++;
556 switch (prepare_to_draw_count_) {
557 case 1:
558 // Detect that we have an incomplete tile, during the first frame.
559 // The first frame should have damage.
560 frame_data->contains_incomplete_tile = true;
561 DCHECK(!frame_data->has_no_damage);
562 break;
563 case 2:
564 // Make a no-damage frame. We early out and can't detect
565 // incomplete tiles, even if they still exist.
566 frame_data->contains_incomplete_tile = false;
567 frame_data->has_no_damage = true;
568 break;
569 case 3:
570 // Trigger the last swap for the completed tile.
571 frame_data->contains_incomplete_tile = false;
572 frame_data->has_no_damage = false;
573 EndTest();
574 break;
575 default:
576 NOTREACHED();
577 break;
578 }
579
580 return draw_result;
581 }
582
583 void UpdateVisibleTilesOnThread(LayerTreeHostImpl* host_impl) override {
584 // Simulate creating some visible tiles (that trigger prepare-to-draws).
585 // The first we make into a no-damage-frame during prepare-to-draw (see
586 // above). This is to ensure we still get UpdateVisibleTiles calls after
587 // a no-damage or aborted frame.
588 update_visible_tile_count_++;
589 switch (update_visible_tile_count_) {
590 case 3:
591 case 6:
592 host_impl->DidInitializeVisibleTileForTesting();
593 break;
594 case 7:
595 NOTREACHED();
596 break;
597 }
598 }
599
600 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl,
601 bool didSwap) override {
602 if (!didSwap)
603 return;
604 ++swap_count_;
605 }
606
607 void AfterTest() override {
608 // We should keep getting update-visible-tiles calls
609 // until we report there are no more incomplete-tiles.
610 EXPECT_EQ(update_visible_tile_count_, 6);
611 // First frame, plus two triggered by DidInitializeVisibleTile()
612 EXPECT_EQ(prepare_to_draw_count_, 3);
613 // First swap, plus final swap (contained damage).
614 EXPECT_EQ(swap_count_, 2);
615 }
616
617 FakeContentLayerClient client_;
618 int swap_count_;
619 int prepare_to_draw_count_;
620 int update_visible_tile_count_;
621 };
622
623 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestVisibleTilesStillTriggerDraws);
624
625 } // namespace 532 } // namespace
626 } // namespace cc 533 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_unittest.cc ('k') | cc/trees/single_thread_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698