heads_up_display_unittest.cc 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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
  3. // found in the LICENSE file.
  4. #include "cc/layers/heads_up_display_layer.h"
  5. #include "cc/layers/layer.h"
  6. #include "cc/test/layer_tree_test.h"
  7. #include "cc/trees/layer_tree_host.h"
  8. namespace cc {
  9. namespace {
  10. class HeadsUpDisplayTest : public LayerTreeTest {
  11. protected:
  12. void InitializeSettings(LayerTreeSettings* settings) override {
  13. // Enable the HUD without requiring text.
  14. settings->initial_debug_state.show_property_changed_rects = true;
  15. }
  16. };
  17. class HudWithRootLayerChange : public HeadsUpDisplayTest {
  18. public:
  19. void BeginTest() override {
  20. root_layer1_ = Layer::Create();
  21. root_layer2_ = Layer::Create();
  22. root_layer1_->SetBounds(gfx::Size(30, 30));
  23. root_layer2_->SetBounds(gfx::Size(30, 30));
  24. PostSetNeedsCommitToMainThread();
  25. }
  26. void DidCommit() override {
  27. ++num_commits_;
  28. ASSERT_TRUE(layer_tree_host()->hud_layer());
  29. switch (num_commits_) {
  30. case 1:
  31. // Change directly to a new root layer.
  32. layer_tree_host()->SetRootLayer(root_layer1_);
  33. break;
  34. case 2:
  35. EXPECT_EQ(root_layer1_.get(), layer_tree_host()->hud_layer()->parent());
  36. // Unset the root layer.
  37. layer_tree_host()->SetRootLayer(nullptr);
  38. break;
  39. case 3:
  40. EXPECT_EQ(nullptr, layer_tree_host()->hud_layer()->parent());
  41. // Change back to the previous root layer.
  42. layer_tree_host()->SetRootLayer(root_layer1_);
  43. break;
  44. case 4:
  45. EXPECT_EQ(root_layer1_.get(), layer_tree_host()->hud_layer()->parent());
  46. // Unset the root layer.
  47. layer_tree_host()->SetRootLayer(nullptr);
  48. break;
  49. case 5:
  50. EXPECT_EQ(nullptr, layer_tree_host()->hud_layer()->parent());
  51. // Change to a new root layer from a null root.
  52. layer_tree_host()->SetRootLayer(root_layer2_);
  53. break;
  54. case 6:
  55. EXPECT_EQ(root_layer2_.get(), layer_tree_host()->hud_layer()->parent());
  56. // Change directly back to the last root layer.
  57. layer_tree_host()->SetRootLayer(root_layer1_);
  58. break;
  59. case 7:
  60. EXPECT_EQ(root_layer1_.get(), layer_tree_host()->hud_layer()->parent());
  61. EndTest();
  62. break;
  63. }
  64. }
  65. private:
  66. scoped_refptr<Layer> root_layer1_;
  67. scoped_refptr<Layer> root_layer2_;
  68. int num_commits_ = 0;
  69. };
  70. SINGLE_AND_MULTI_THREAD_TEST_F(HudWithRootLayerChange);
  71. class HeadsUpDisplaySizeWithFPS : public LayerTreeTest {
  72. public:
  73. void InitializeSettings(LayerTreeSettings* settings) override {
  74. settings->initial_debug_state.show_fps_counter = true;
  75. }
  76. void BeginTest() override { PostSetNeedsCommitToMainThread(); }
  77. void DidCommit() override {
  78. ASSERT_TRUE(layer_tree_host()->hud_layer());
  79. EXPECT_EQ(gfx::Size(256, 256), layer_tree_host()->hud_layer()->bounds());
  80. EndTest();
  81. }
  82. };
  83. SINGLE_AND_MULTI_THREAD_TEST_F(HeadsUpDisplaySizeWithFPS);
  84. class HeadsUpDisplaySizeWithFPSWithScaleFactor : public LayerTreeTest {
  85. public:
  86. void InitializeSettings(LayerTreeSettings* settings) override {
  87. settings->use_painted_device_scale_factor = true;
  88. settings->initial_debug_state.show_fps_counter = true;
  89. }
  90. void SetupTree() override {
  91. SetInitialDeviceScaleFactor(3.f);
  92. LayerTreeTest::SetupTree();
  93. }
  94. void BeginTest() override { PostSetNeedsCommitToMainThread(); }
  95. void DidCommit() override {
  96. ASSERT_TRUE(layer_tree_host()->hud_layer());
  97. EXPECT_EQ(gfx::Size(768, 768), layer_tree_host()->hud_layer()->bounds());
  98. EndTest();
  99. }
  100. };
  101. SINGLE_AND_MULTI_THREAD_TEST_F(HeadsUpDisplaySizeWithFPSWithScaleFactor);
  102. } // namespace
  103. } // namespace cc