| // Copyright 2013 The Flutter 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 "flutter/shell/platform/windows/settings_plugin.h" | |
| #include "flutter/fml/macros.h" | |
| #include "flutter/shell/platform/windows/task_runner.h" | |
| #include "flutter/shell/platform/windows/testing/test_binary_messenger.h" | |
| #include "gmock/gmock.h" | |
| #include "gtest/gtest.h" | |
| namespace flutter { | |
| namespace testing { | |
| namespace { | |
| class MockSettingsPlugin : public SettingsPlugin { | |
| public: | |
| explicit MockSettingsPlugin(BinaryMessenger* messenger, | |
| TaskRunner* task_runner) | |
| : SettingsPlugin(messenger, task_runner) {} | |
| virtual ~MockSettingsPlugin() = default; | |
| bool is_high_contrast() { return is_high_contrast_; } | |
| // |SettingsPlugin| | |
| MOCK_METHOD(bool, GetAlwaysUse24HourFormat, (), (override)); | |
| MOCK_METHOD(float, GetTextScaleFactor, (), (override)); | |
| MOCK_METHOD(PlatformBrightness, GetPreferredBrightness, (), (override)); | |
| MOCK_METHOD(void, WatchPreferredBrightnessChanged, (), (override)); | |
| MOCK_METHOD(void, WatchTextScaleFactorChanged, (), (override)); | |
| private: | |
| FML_DISALLOW_COPY_AND_ASSIGN(MockSettingsPlugin); | |
| }; | |
| } // namespace | |
| TEST(SettingsPluginTest, SendSettingsSendsMessage) { | |
| bool message_is_sent = false; | |
| TestBinaryMessenger messenger( | |
| [&message_is_sent](const std::string& channel, const uint8_t* message, | |
| size_t message_size, | |
| BinaryReply reply) { message_is_sent = true; }); | |
| ::testing::NiceMock<MockSettingsPlugin> settings_plugin(&messenger, nullptr); | |
| settings_plugin.SendSettings(); | |
| EXPECT_TRUE(message_is_sent); | |
| } | |
| TEST(SettingsPluginTest, SendSettingsGetsSettings) { | |
| TestBinaryMessenger messenger([](const std::string& channel, | |
| const uint8_t* message, size_t message_size, | |
| BinaryReply reply) {}); | |
| ::testing::NiceMock<MockSettingsPlugin> settings_plugin(&messenger, nullptr); | |
| EXPECT_CALL(settings_plugin, GetAlwaysUse24HourFormat).Times(1); | |
| EXPECT_CALL(settings_plugin, GetTextScaleFactor).Times(1); | |
| EXPECT_CALL(settings_plugin, GetPreferredBrightness).Times(1); | |
| settings_plugin.SendSettings(); | |
| } | |
| TEST(SettingsPluginTest, StartWatchingStartsWatchingChanges) { | |
| TestBinaryMessenger messenger([](const std::string& channel, | |
| const uint8_t* message, size_t message_size, | |
| BinaryReply reply) {}); | |
| ::testing::NiceMock<MockSettingsPlugin> settings_plugin(&messenger, nullptr); | |
| EXPECT_CALL(settings_plugin, WatchPreferredBrightnessChanged).Times(1); | |
| EXPECT_CALL(settings_plugin, WatchTextScaleFactorChanged).Times(1); | |
| settings_plugin.StartWatching(); | |
| } | |
| TEST(SettingsPluginTest, HighContrastModeHonored) { | |
| int times = 0; | |
| TestBinaryMessenger messenger( | |
| [×](const std::string& channel, const uint8_t* message, | |
| size_t message_size, BinaryReply reply) { | |
| ASSERT_EQ(channel, "flutter/settings"); | |
| times++; | |
| }); | |
| ::testing::NiceMock<MockSettingsPlugin> settings_plugin(&messenger, nullptr); | |
| settings_plugin.UpdateHighContrastMode(true); | |
| EXPECT_TRUE(settings_plugin.is_high_contrast()); | |
| settings_plugin.UpdateHighContrastMode(false); | |
| EXPECT_FALSE(settings_plugin.is_high_contrast()); | |
| EXPECT_EQ(times, 2); | |
| } | |
| } // namespace testing | |
| } // namespace flutter |