123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- // Copyright 2014 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "components/dom_distiller/core/distilled_page_prefs.h"
- #include <memory>
- #include "base/run_loop.h"
- #include "base/test/task_environment.h"
- #include "components/sync_preferences/testing_pref_service_syncable.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace dom_distiller {
- namespace {
- class TestingObserver : public DistilledPagePrefs::Observer {
- public:
- TestingObserver()
- : font_(mojom::FontFamily::kSansSerif), theme_(mojom::Theme::kLight) {}
- void OnChangeFontFamily(mojom::FontFamily new_font) override {
- font_ = new_font;
- }
- mojom::FontFamily GetFontFamily() { return font_; }
- void OnChangeTheme(mojom::Theme new_theme) override { theme_ = new_theme; }
- mojom::Theme GetTheme() { return theme_; }
- void OnChangeFontScaling(float new_scaling) override {
- scaling_ = new_scaling;
- }
- float GetFontScaling() { return scaling_; }
- private:
- mojom::FontFamily font_;
- mojom::Theme theme_;
- float scaling_{1.0f};
- };
- } // namespace
- class DistilledPagePrefsTest : public testing::Test {
- protected:
- void SetUp() override {
- pref_service_ =
- std::make_unique<sync_preferences::TestingPrefServiceSyncable>();
- DistilledPagePrefs::RegisterProfilePrefs(pref_service_->registry());
- distilled_page_prefs_ =
- std::make_unique<DistilledPagePrefs>(pref_service_.get());
- }
- std::unique_ptr<sync_preferences::TestingPrefServiceSyncable> pref_service_;
- std::unique_ptr<DistilledPagePrefs> distilled_page_prefs_;
- private:
- base::test::SingleThreadTaskEnvironment task_environment_;
- };
- TEST_F(DistilledPagePrefsTest, TestingOnChangeFontIsBeingCalled) {
- TestingObserver obs;
- distilled_page_prefs_->AddObserver(&obs);
- distilled_page_prefs_->SetFontFamily(mojom::FontFamily::kMonospace);
- EXPECT_EQ(mojom::FontFamily::kSansSerif, obs.GetFontFamily());
- base::RunLoop().RunUntilIdle();
- EXPECT_EQ(mojom::FontFamily::kMonospace, obs.GetFontFamily());
- distilled_page_prefs_->SetFontFamily(mojom::FontFamily::kSerif);
- base::RunLoop().RunUntilIdle();
- EXPECT_EQ(mojom::FontFamily::kSerif, obs.GetFontFamily());
- distilled_page_prefs_->RemoveObserver(&obs);
- }
- TEST_F(DistilledPagePrefsTest, TestingMultipleObserversFont) {
- TestingObserver obs;
- distilled_page_prefs_->AddObserver(&obs);
- TestingObserver obs2;
- distilled_page_prefs_->AddObserver(&obs2);
- distilled_page_prefs_->SetFontFamily(mojom::FontFamily::kSerif);
- base::RunLoop().RunUntilIdle();
- EXPECT_EQ(mojom::FontFamily::kSerif, obs.GetFontFamily());
- EXPECT_EQ(mojom::FontFamily::kSerif, obs2.GetFontFamily());
- distilled_page_prefs_->RemoveObserver(&obs);
- distilled_page_prefs_->SetFontFamily(mojom::FontFamily::kMonospace);
- base::RunLoop().RunUntilIdle();
- EXPECT_EQ(mojom::FontFamily::kSerif, obs.GetFontFamily());
- EXPECT_EQ(mojom::FontFamily::kMonospace, obs2.GetFontFamily());
- distilled_page_prefs_->RemoveObserver(&obs2);
- }
- TEST_F(DistilledPagePrefsTest, TestingOnChangeThemeIsBeingCalled) {
- TestingObserver obs;
- distilled_page_prefs_->AddObserver(&obs);
- distilled_page_prefs_->SetTheme(mojom::Theme::kSepia);
- EXPECT_EQ(mojom::Theme::kLight, obs.GetTheme());
- base::RunLoop().RunUntilIdle();
- EXPECT_EQ(mojom::Theme::kSepia, obs.GetTheme());
- distilled_page_prefs_->SetTheme(mojom::Theme::kDark);
- base::RunLoop().RunUntilIdle();
- EXPECT_EQ(mojom::Theme::kDark, obs.GetTheme());
- distilled_page_prefs_->RemoveObserver(&obs);
- }
- TEST_F(DistilledPagePrefsTest, TestingMultipleObserversTheme) {
- TestingObserver obs;
- distilled_page_prefs_->AddObserver(&obs);
- TestingObserver obs2;
- distilled_page_prefs_->AddObserver(&obs2);
- distilled_page_prefs_->SetTheme(mojom::Theme::kSepia);
- base::RunLoop().RunUntilIdle();
- EXPECT_EQ(mojom::Theme::kSepia, obs.GetTheme());
- EXPECT_EQ(mojom::Theme::kSepia, obs2.GetTheme());
- distilled_page_prefs_->RemoveObserver(&obs);
- distilled_page_prefs_->SetTheme(mojom::Theme::kLight);
- base::RunLoop().RunUntilIdle();
- EXPECT_EQ(mojom::Theme::kSepia, obs.GetTheme());
- EXPECT_EQ(mojom::Theme::kLight, obs2.GetTheme());
- distilled_page_prefs_->RemoveObserver(&obs2);
- }
- TEST_F(DistilledPagePrefsTest, TestingOnChangeFontScalingIsBeingCalled) {
- TestingObserver obs;
- distilled_page_prefs_->AddObserver(&obs);
- distilled_page_prefs_->SetFontScaling(1.5f);
- ASSERT_FLOAT_EQ(1.0f, obs.GetFontScaling());
- base::RunLoop().RunUntilIdle();
- ASSERT_FLOAT_EQ(1.5f, obs.GetFontScaling());
- distilled_page_prefs_->SetFontScaling(0.7f);
- base::RunLoop().RunUntilIdle();
- ASSERT_FLOAT_EQ(0.7f, obs.GetFontScaling());
- distilled_page_prefs_->RemoveObserver(&obs);
- }
- TEST_F(DistilledPagePrefsTest, TestingMultipleObserversFontScaling) {
- TestingObserver obs;
- distilled_page_prefs_->AddObserver(&obs);
- TestingObserver obs2;
- distilled_page_prefs_->AddObserver(&obs2);
- distilled_page_prefs_->SetFontScaling(1.3f);
- base::RunLoop().RunUntilIdle();
- ASSERT_FLOAT_EQ(1.3f, obs.GetFontScaling());
- ASSERT_FLOAT_EQ(1.3f, obs2.GetFontScaling());
- distilled_page_prefs_->RemoveObserver(&obs);
- distilled_page_prefs_->SetFontScaling(0.9f);
- base::RunLoop().RunUntilIdle();
- ASSERT_FLOAT_EQ(1.3f, obs.GetFontScaling());
- ASSERT_FLOAT_EQ(0.9f, obs2.GetFontScaling());
- distilled_page_prefs_->RemoveObserver(&obs2);
- }
- } // namespace dom_distiller
|