distilled_page_prefs_unittests.cc 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. // Copyright 2014 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 "components/dom_distiller/core/distilled_page_prefs.h"
  5. #include <memory>
  6. #include "base/run_loop.h"
  7. #include "base/test/task_environment.h"
  8. #include "components/sync_preferences/testing_pref_service_syncable.h"
  9. #include "testing/gtest/include/gtest/gtest.h"
  10. namespace dom_distiller {
  11. namespace {
  12. class TestingObserver : public DistilledPagePrefs::Observer {
  13. public:
  14. TestingObserver()
  15. : font_(mojom::FontFamily::kSansSerif), theme_(mojom::Theme::kLight) {}
  16. void OnChangeFontFamily(mojom::FontFamily new_font) override {
  17. font_ = new_font;
  18. }
  19. mojom::FontFamily GetFontFamily() { return font_; }
  20. void OnChangeTheme(mojom::Theme new_theme) override { theme_ = new_theme; }
  21. mojom::Theme GetTheme() { return theme_; }
  22. void OnChangeFontScaling(float new_scaling) override {
  23. scaling_ = new_scaling;
  24. }
  25. float GetFontScaling() { return scaling_; }
  26. private:
  27. mojom::FontFamily font_;
  28. mojom::Theme theme_;
  29. float scaling_{1.0f};
  30. };
  31. } // namespace
  32. class DistilledPagePrefsTest : public testing::Test {
  33. protected:
  34. void SetUp() override {
  35. pref_service_ =
  36. std::make_unique<sync_preferences::TestingPrefServiceSyncable>();
  37. DistilledPagePrefs::RegisterProfilePrefs(pref_service_->registry());
  38. distilled_page_prefs_ =
  39. std::make_unique<DistilledPagePrefs>(pref_service_.get());
  40. }
  41. std::unique_ptr<sync_preferences::TestingPrefServiceSyncable> pref_service_;
  42. std::unique_ptr<DistilledPagePrefs> distilled_page_prefs_;
  43. private:
  44. base::test::SingleThreadTaskEnvironment task_environment_;
  45. };
  46. TEST_F(DistilledPagePrefsTest, TestingOnChangeFontIsBeingCalled) {
  47. TestingObserver obs;
  48. distilled_page_prefs_->AddObserver(&obs);
  49. distilled_page_prefs_->SetFontFamily(mojom::FontFamily::kMonospace);
  50. EXPECT_EQ(mojom::FontFamily::kSansSerif, obs.GetFontFamily());
  51. base::RunLoop().RunUntilIdle();
  52. EXPECT_EQ(mojom::FontFamily::kMonospace, obs.GetFontFamily());
  53. distilled_page_prefs_->SetFontFamily(mojom::FontFamily::kSerif);
  54. base::RunLoop().RunUntilIdle();
  55. EXPECT_EQ(mojom::FontFamily::kSerif, obs.GetFontFamily());
  56. distilled_page_prefs_->RemoveObserver(&obs);
  57. }
  58. TEST_F(DistilledPagePrefsTest, TestingMultipleObserversFont) {
  59. TestingObserver obs;
  60. distilled_page_prefs_->AddObserver(&obs);
  61. TestingObserver obs2;
  62. distilled_page_prefs_->AddObserver(&obs2);
  63. distilled_page_prefs_->SetFontFamily(mojom::FontFamily::kSerif);
  64. base::RunLoop().RunUntilIdle();
  65. EXPECT_EQ(mojom::FontFamily::kSerif, obs.GetFontFamily());
  66. EXPECT_EQ(mojom::FontFamily::kSerif, obs2.GetFontFamily());
  67. distilled_page_prefs_->RemoveObserver(&obs);
  68. distilled_page_prefs_->SetFontFamily(mojom::FontFamily::kMonospace);
  69. base::RunLoop().RunUntilIdle();
  70. EXPECT_EQ(mojom::FontFamily::kSerif, obs.GetFontFamily());
  71. EXPECT_EQ(mojom::FontFamily::kMonospace, obs2.GetFontFamily());
  72. distilled_page_prefs_->RemoveObserver(&obs2);
  73. }
  74. TEST_F(DistilledPagePrefsTest, TestingOnChangeThemeIsBeingCalled) {
  75. TestingObserver obs;
  76. distilled_page_prefs_->AddObserver(&obs);
  77. distilled_page_prefs_->SetTheme(mojom::Theme::kSepia);
  78. EXPECT_EQ(mojom::Theme::kLight, obs.GetTheme());
  79. base::RunLoop().RunUntilIdle();
  80. EXPECT_EQ(mojom::Theme::kSepia, obs.GetTheme());
  81. distilled_page_prefs_->SetTheme(mojom::Theme::kDark);
  82. base::RunLoop().RunUntilIdle();
  83. EXPECT_EQ(mojom::Theme::kDark, obs.GetTheme());
  84. distilled_page_prefs_->RemoveObserver(&obs);
  85. }
  86. TEST_F(DistilledPagePrefsTest, TestingMultipleObserversTheme) {
  87. TestingObserver obs;
  88. distilled_page_prefs_->AddObserver(&obs);
  89. TestingObserver obs2;
  90. distilled_page_prefs_->AddObserver(&obs2);
  91. distilled_page_prefs_->SetTheme(mojom::Theme::kSepia);
  92. base::RunLoop().RunUntilIdle();
  93. EXPECT_EQ(mojom::Theme::kSepia, obs.GetTheme());
  94. EXPECT_EQ(mojom::Theme::kSepia, obs2.GetTheme());
  95. distilled_page_prefs_->RemoveObserver(&obs);
  96. distilled_page_prefs_->SetTheme(mojom::Theme::kLight);
  97. base::RunLoop().RunUntilIdle();
  98. EXPECT_EQ(mojom::Theme::kSepia, obs.GetTheme());
  99. EXPECT_EQ(mojom::Theme::kLight, obs2.GetTheme());
  100. distilled_page_prefs_->RemoveObserver(&obs2);
  101. }
  102. TEST_F(DistilledPagePrefsTest, TestingOnChangeFontScalingIsBeingCalled) {
  103. TestingObserver obs;
  104. distilled_page_prefs_->AddObserver(&obs);
  105. distilled_page_prefs_->SetFontScaling(1.5f);
  106. ASSERT_FLOAT_EQ(1.0f, obs.GetFontScaling());
  107. base::RunLoop().RunUntilIdle();
  108. ASSERT_FLOAT_EQ(1.5f, obs.GetFontScaling());
  109. distilled_page_prefs_->SetFontScaling(0.7f);
  110. base::RunLoop().RunUntilIdle();
  111. ASSERT_FLOAT_EQ(0.7f, obs.GetFontScaling());
  112. distilled_page_prefs_->RemoveObserver(&obs);
  113. }
  114. TEST_F(DistilledPagePrefsTest, TestingMultipleObserversFontScaling) {
  115. TestingObserver obs;
  116. distilled_page_prefs_->AddObserver(&obs);
  117. TestingObserver obs2;
  118. distilled_page_prefs_->AddObserver(&obs2);
  119. distilled_page_prefs_->SetFontScaling(1.3f);
  120. base::RunLoop().RunUntilIdle();
  121. ASSERT_FLOAT_EQ(1.3f, obs.GetFontScaling());
  122. ASSERT_FLOAT_EQ(1.3f, obs2.GetFontScaling());
  123. distilled_page_prefs_->RemoveObserver(&obs);
  124. distilled_page_prefs_->SetFontScaling(0.9f);
  125. base::RunLoop().RunUntilIdle();
  126. ASSERT_FLOAT_EQ(1.3f, obs.GetFontScaling());
  127. ASSERT_FLOAT_EQ(0.9f, obs2.GetFontScaling());
  128. distilled_page_prefs_->RemoveObserver(&obs2);
  129. }
  130. } // namespace dom_distiller