11#include "gtest/gtest.h"
13TEST(FlWindowStateMonitorTest, GainFocus) {
15 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
20 .WillOnce(::testing::Return(
static_cast<GdkWindowState
>(0)));
22 gboolean called =
TRUE;
24 messenger,
"flutter/lifecycle",
25 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
27 gboolean* called =
static_cast<gboolean*
>(
user_data);
40 .window_state = {.new_window_state = GDK_WINDOW_STATE_FOCUSED}};
42 g_signal_emit_by_name(
window,
"window-state-event", &event, &handled);
48TEST(FlWindowStateMonitorTest, LoseFocus) {
50 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
55 .WillOnce(::testing::Return(GDK_WINDOW_STATE_FOCUSED));
56 gboolean called =
TRUE;
58 messenger,
"flutter/lifecycle",
59 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
61 gboolean* called =
static_cast<gboolean*
>(
user_data);
64 "AppLifecycleState.inactive");
75 .window_state = {.new_window_state =
static_cast<GdkWindowState
>(0)}};
77 g_signal_emit_by_name(
window,
"window-state-event", &event, &handled);
83TEST(FlWindowStateMonitorTest, EnterIconified) {
85 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
90 .WillOnce(::testing::Return(
static_cast<GdkWindowState
>(0)));
91 gboolean called =
TRUE;
93 messenger,
"flutter/lifecycle",
94 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
96 gboolean* called =
static_cast<gboolean*
>(
user_data);
105 g_autoptr(FlWindowStateMonitor) monitor =
109 .window_state = {.new_window_state = GDK_WINDOW_STATE_ICONIFIED}};
111 g_signal_emit_by_name(
window,
"window-state-event", &event, &handled);
117TEST(FlWindowStateMonitorTest, LeaveIconified) {
119 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
121 gtk_init(0,
nullptr);
124 .WillOnce(::testing::Return(GDK_WINDOW_STATE_ICONIFIED));
125 gboolean called =
TRUE;
127 messenger,
"flutter/lifecycle",
128 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
130 gboolean* called =
static_cast<gboolean*
>(
user_data);
133 "AppLifecycleState.inactive");
140 g_autoptr(FlWindowStateMonitor) monitor =
144 .window_state = {.new_window_state =
static_cast<GdkWindowState
>(0)}};
146 g_signal_emit_by_name(
window,
"window-state-event", &event, &handled);
152TEST(FlWindowStateMonitorTest, LeaveIconifiedFocused) {
154 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
156 gtk_init(0,
nullptr);
159 .WillOnce(::testing::Return(GDK_WINDOW_STATE_ICONIFIED));
160 gboolean called =
TRUE;
162 messenger,
"flutter/lifecycle",
163 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
165 gboolean* called =
static_cast<gboolean*
>(
user_data);
174 g_autoptr(FlWindowStateMonitor) monitor =
178 .window_state = {.new_window_state =
static_cast<GdkWindowState
>(
179 GDK_WINDOW_STATE_FOCUSED)}};
181 g_signal_emit_by_name(
window,
"window-state-event", &event, &handled);
187TEST(FlWindowStateMonitorTest, EnterWithdrawn) {
189 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
191 gtk_init(0,
nullptr);
194 .WillOnce(::testing::Return(
static_cast<GdkWindowState
>(0)));
195 gboolean called =
TRUE;
197 messenger,
"flutter/lifecycle",
198 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
200 gboolean* called =
static_cast<gboolean*
>(
user_data);
209 g_autoptr(FlWindowStateMonitor) monitor =
213 .window_state = {.new_window_state = GDK_WINDOW_STATE_WITHDRAWN}};
215 g_signal_emit_by_name(
window,
"window-state-event", &event, &handled);
221TEST(FlWindowStateMonitorTest, LeaveWithdrawn) {
223 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
225 gtk_init(0,
nullptr);
228 .WillOnce(::testing::Return(GDK_WINDOW_STATE_WITHDRAWN));
229 gboolean called =
TRUE;
231 messenger,
"flutter/lifecycle",
232 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
234 gboolean* called =
static_cast<gboolean*
>(
user_data);
237 "AppLifecycleState.inactive");
244 g_autoptr(FlWindowStateMonitor) monitor =
248 .window_state = {.new_window_state =
static_cast<GdkWindowState
>(0)}};
250 g_signal_emit_by_name(
window,
"window-state-event", &event, &handled);
256TEST(FlWindowStateMonitorTest, LeaveWithdrawnFocused) {
258 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
260 gtk_init(0,
nullptr);
263 .WillOnce(::testing::Return(GDK_WINDOW_STATE_WITHDRAWN));
264 gboolean called =
TRUE;
266 messenger,
"flutter/lifecycle",
267 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
269 gboolean* called =
static_cast<gboolean*
>(
user_data);
278 g_autoptr(FlWindowStateMonitor) monitor =
282 .window_state = {.new_window_state =
static_cast<GdkWindowState
>(
283 GDK_WINDOW_STATE_FOCUSED)}};
285 g_signal_emit_by_name(
window,
"window-state-event", &event, &handled);
void fl_binary_messenger_shutdown(FlBinaryMessenger *self)
g_autoptr(GMutexLocker) locker
FlMockBinaryMessenger * fl_mock_binary_messenger_new()
void fl_mock_binary_messenger_set_string_message_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMockBinaryMessengerMessageChannelHandler handler, gpointer user_data)
G_BEGIN_DECLS GBytes * message
G_MODULE_EXPORT FlValue * fl_value_new_string(const gchar *value)
G_MODULE_EXPORT const gchar * fl_value_get_string(FlValue *self)
typedefG_BEGIN_DECLS struct _FlValue FlValue
FlWindowStateMonitor * fl_window_state_monitor_new(FlBinaryMessenger *messenger, GtkWindow *window)
TEST(FlWindowStateMonitorTest, GainFocus)
void gtk_widget_show(GtkWidget *widget)
GtkWidget * gtk_window_new(GtkWindowType type)
GdkWindowState gdk_window_get_state(GdkWindow *window)