Flutter Linux Embedder
fl_settings_handler_test.cc File Reference
#include "flutter/shell/platform/linux/fl_settings_handler.h"
#include "flutter/shell/platform/embedder/embedder.h"
#include "flutter/shell/platform/embedder/test_utils/proc_table_replacement.h"
#include "flutter/shell/platform/linux/fl_binary_messenger_private.h"
#include "flutter/shell/platform/linux/fl_engine_private.h"
#include "flutter/shell/platform/linux/testing/fl_mock_binary_messenger.h"
#include "flutter/shell/platform/linux/testing/mock_settings.h"
#include "flutter/testing/testing.h"
#include "flutter/shell/platform/linux/testing/linux_test.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"

Go to the source code of this file.

Classes

class  FlSettingsHandlerTest
 

Functions

 TEST_F (FlSettingsHandlerTest, AlwaysUse24HourFormat)
 
 TEST_F (FlSettingsHandlerTest, PlatformBrightness)
 
 TEST_F (FlSettingsHandlerTest, TextScaleFactor)
 
 TEST_F (FlSettingsHandlerTest, AccessibilityFeatures)
 

Function Documentation

◆ TEST_F() [1/4]

TEST_F ( FlSettingsHandlerTest  ,
AccessibilityFeatures   
)

Definition at line 184 of file fl_settings_handler_test.cc.

184  {
185  StartEngine();
186 
187  std::vector<FlutterAccessibilityFeature> calls;
188  fl_engine_get_embedder_api(engine)->UpdateAccessibilityFeatures =
189  MOCK_ENGINE_PROC(
190  UpdateAccessibilityFeatures,
191  ([&calls](auto engine, FlutterAccessibilityFeature features) {
192  calls.push_back(features);
193  return kSuccess;
194  }));
195 
196  EXPECT_CALL(settings, fl_settings_get_enable_animations(
197  ::testing::Eq<FlSettings*>(settings)))
198  .WillOnce(::testing::Return(false))
199  .WillOnce(::testing::Return(true))
200  .WillOnce(::testing::Return(false))
201  .WillOnce(::testing::Return(true));
202 
203  EXPECT_CALL(settings, fl_settings_get_high_contrast(
204  ::testing::Eq<FlSettings*>(settings)))
205  .WillOnce(::testing::Return(true))
206  .WillOnce(::testing::Return(false))
207  .WillOnce(::testing::Return(false))
208  .WillOnce(::testing::Return(true));
209 
210  fl_settings_handler_start(handler, settings);
211  EXPECT_THAT(calls, ::testing::SizeIs(1));
212  EXPECT_EQ(calls.back(), static_cast<FlutterAccessibilityFeature>(
213  kFlutterAccessibilityFeatureDisableAnimations |
214  kFlutterAccessibilityFeatureHighContrast));
215 
216  fl_settings_emit_changed(settings);
217  EXPECT_THAT(calls, ::testing::SizeIs(2));
218  EXPECT_EQ(calls.back(), static_cast<FlutterAccessibilityFeature>(0));
219 
220  fl_settings_emit_changed(settings);
221  EXPECT_THAT(calls, ::testing::SizeIs(3));
222  EXPECT_EQ(calls.back(), static_cast<FlutterAccessibilityFeature>(
223  kFlutterAccessibilityFeatureDisableAnimations));
224 
225  fl_settings_emit_changed(settings);
226  EXPECT_THAT(calls, ::testing::SizeIs(4));
227  EXPECT_EQ(calls.back(), static_cast<FlutterAccessibilityFeature>(
228  kFlutterAccessibilityFeatureHighContrast));
229 }
FlutterEngineProcTable * fl_engine_get_embedder_api(FlEngine *self)
Definition: fl_engine.cc:920
gboolean fl_settings_get_high_contrast(FlSettings *self)
Definition: fl_settings.cc:42
void fl_settings_emit_changed(FlSettings *self)
Definition: fl_settings.cc:50
gboolean fl_settings_get_enable_animations(FlSettings *self)
Definition: fl_settings.cc:38
void fl_settings_handler_start(FlSettingsHandler *self, FlSettings *settings)

References fl_engine_get_embedder_api(), fl_settings_emit_changed(), fl_settings_get_enable_animations(), fl_settings_get_high_contrast(), and fl_settings_handler_start().

◆ TEST_F() [2/4]

TEST_F ( FlSettingsHandlerTest  ,
AlwaysUse24HourFormat   
)

Definition at line 39 of file fl_settings_handler_test.cc.

39  {
40  EXPECT_CALL(settings, fl_settings_get_clock_format(
41  ::testing::Eq<FlSettings*>(settings)))
42  .WillOnce(::testing::Return(FL_CLOCK_FORMAT_12H))
43  .WillOnce(::testing::Return(FL_CLOCK_FORMAT_24H));
44 
45  gboolean called = FALSE;
46  fl_mock_binary_messenger_set_json_message_channel(
47  messenger, "flutter/settings",
48  [](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
49  gpointer user_data) {
50  gboolean* called = static_cast<gboolean*>(user_data);
51  *called = TRUE;
52 
54  FlValue* value =
55  fl_value_lookup_string(message, "alwaysUse24HourFormat");
56  EXPECT_NE(value, nullptr);
58  EXPECT_FALSE(fl_value_get_bool(value));
59 
60  return fl_value_new_null();
61  },
62  &called);
63  fl_settings_handler_start(handler, settings);
64  EXPECT_TRUE(called);
65 
66  called = FALSE;
67  fl_mock_binary_messenger_set_json_message_channel(
68  messenger, "flutter/settings",
69  [](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
70  gpointer user_data) {
71  gboolean* called = static_cast<gboolean*>(user_data);
72  *called = TRUE;
73 
75  FlValue* value =
76  fl_value_lookup_string(message, "alwaysUse24HourFormat");
77  EXPECT_NE(value, nullptr);
79  EXPECT_TRUE(fl_value_get_bool(value));
80 
81  return fl_value_new_null();
82  },
83  &called);
84  fl_settings_emit_changed(settings);
85  EXPECT_TRUE(called);
86 }
const char * message
const char FlTextDirection FlAssertiveness gpointer user_data
return TRUE
FlClockFormat fl_settings_get_clock_format(FlSettings *self)
Definition: fl_settings.cc:30
@ FL_CLOCK_FORMAT_12H
Definition: fl_settings.h:22
@ FL_CLOCK_FORMAT_24H
Definition: fl_settings.h:23
uint8_t value
G_MODULE_EXPORT FlValue * fl_value_lookup_string(FlValue *self, const gchar *key)
Definition: fl_value.cc:811
G_MODULE_EXPORT FlValueType fl_value_get_type(FlValue *self)
Definition: fl_value.cc:466
G_MODULE_EXPORT bool fl_value_get_bool(FlValue *self)
Definition: fl_value.cc:661
G_MODULE_EXPORT FlValue * fl_value_new_null()
Definition: fl_value.cc:251
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42
@ FL_VALUE_TYPE_BOOL
Definition: fl_value.h:65
@ FL_VALUE_TYPE_MAP
Definition: fl_value.h:74

References FL_CLOCK_FORMAT_12H, FL_CLOCK_FORMAT_24H, fl_settings_emit_changed(), fl_settings_get_clock_format(), fl_settings_handler_start(), fl_value_get_bool(), fl_value_get_type(), fl_value_lookup_string(), fl_value_new_null(), FL_VALUE_TYPE_BOOL, FL_VALUE_TYPE_MAP, message, TRUE, user_data, and value.

◆ TEST_F() [3/4]

TEST_F ( FlSettingsHandlerTest  ,
PlatformBrightness   
)

Definition at line 88 of file fl_settings_handler_test.cc.

88  {
89  EXPECT_CALL(settings, fl_settings_get_color_scheme(
90  ::testing::Eq<FlSettings*>(settings)))
91  .WillOnce(::testing::Return(FL_COLOR_SCHEME_LIGHT))
92  .WillOnce(::testing::Return(FL_COLOR_SCHEME_DARK));
93 
94  gboolean called = FALSE;
95  fl_mock_binary_messenger_set_json_message_channel(
96  messenger, "flutter/settings",
97  [](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
98  gpointer user_data) {
99  gboolean* called = static_cast<gboolean*>(user_data);
100  *called = TRUE;
101 
103  FlValue* value = fl_value_lookup_string(message, "platformBrightness");
104  EXPECT_NE(value, nullptr);
106  EXPECT_STREQ(fl_value_get_string(value), "light");
107 
108  return fl_value_new_null();
109  },
110  &called);
111  fl_settings_handler_start(handler, settings);
112  EXPECT_TRUE(called);
113 
114  called = FALSE;
115  fl_mock_binary_messenger_set_json_message_channel(
116  messenger, "flutter/settings",
117  [](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
118  gpointer user_data) {
119  gboolean* called = static_cast<gboolean*>(user_data);
120  *called = TRUE;
121 
123  FlValue* value = fl_value_lookup_string(message, "platformBrightness");
124  EXPECT_NE(value, nullptr);
126  EXPECT_STREQ(fl_value_get_string(value), "dark");
127 
128  return fl_value_new_null();
129  },
130  &called);
131  fl_settings_emit_changed(settings);
132  EXPECT_TRUE(called);
133 }
FlColorScheme fl_settings_get_color_scheme(FlSettings *self)
Definition: fl_settings.cc:34
@ FL_COLOR_SCHEME_DARK
Definition: fl_settings.h:35
@ FL_COLOR_SCHEME_LIGHT
Definition: fl_settings.h:34
G_MODULE_EXPORT const gchar * fl_value_get_string(FlValue *self)
Definition: fl_value.cc:682
@ FL_VALUE_TYPE_STRING
Definition: fl_value.h:68

References FL_COLOR_SCHEME_DARK, FL_COLOR_SCHEME_LIGHT, fl_settings_emit_changed(), fl_settings_get_color_scheme(), fl_settings_handler_start(), fl_value_get_string(), fl_value_get_type(), fl_value_lookup_string(), fl_value_new_null(), FL_VALUE_TYPE_MAP, FL_VALUE_TYPE_STRING, message, TRUE, user_data, and value.

◆ TEST_F() [4/4]

TEST_F ( FlSettingsHandlerTest  ,
TextScaleFactor   
)

Definition at line 135 of file fl_settings_handler_test.cc.

135  {
136  EXPECT_CALL(settings, fl_settings_get_text_scaling_factor(
137  ::testing::Eq<FlSettings*>(settings)))
138  .WillOnce(::testing::Return(1.0))
139  .WillOnce(::testing::Return(2.0));
140 
141  gboolean called = FALSE;
142  fl_mock_binary_messenger_set_json_message_channel(
143  messenger, "flutter/settings",
144  [](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
145  gpointer user_data) {
146  gboolean* called = static_cast<gboolean*>(user_data);
147  *called = TRUE;
148 
150  FlValue* value = fl_value_lookup_string(message, "textScaleFactor");
151  EXPECT_NE(value, nullptr);
153  EXPECT_EQ(fl_value_get_float(value), 1.0);
154 
155  return fl_value_new_null();
156  },
157  &called);
158  fl_settings_handler_start(handler, settings);
159  EXPECT_TRUE(called);
160 
161  called = FALSE;
162  fl_mock_binary_messenger_set_json_message_channel(
163  messenger, "flutter/settings",
164  [](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
165  gpointer user_data) {
166  gboolean* called = static_cast<gboolean*>(user_data);
167  *called = TRUE;
168 
170  FlValue* value = fl_value_lookup_string(message, "textScaleFactor");
171  EXPECT_NE(value, nullptr);
173  EXPECT_EQ(fl_value_get_float(value), 2.0);
174 
175  return fl_value_new_null();
176  },
177  &called);
178  fl_settings_emit_changed(settings);
179  EXPECT_TRUE(called);
180 }
gdouble fl_settings_get_text_scaling_factor(FlSettings *self)
Definition: fl_settings.cc:46
G_MODULE_EXPORT double fl_value_get_float(FlValue *self)
Definition: fl_value.cc:675
@ FL_VALUE_TYPE_FLOAT
Definition: fl_value.h:67

References fl_settings_emit_changed(), fl_settings_get_text_scaling_factor(), fl_settings_handler_start(), fl_value_get_float(), fl_value_get_type(), fl_value_lookup_string(), fl_value_new_null(), FL_VALUE_TYPE_FLOAT, FL_VALUE_TYPE_MAP, message, TRUE, user_data, and value.