8 #include "flutter/shell/platform/linux/testing/fl_mock_binary_messenger.h"
9 #include "flutter/shell/platform/linux/testing/mock_gtk.h"
11 #include "flutter/shell/platform/linux/testing/linux_test.h"
12 #include "gtest/gtest.h"
18 messenger = fl_mock_binary_messenger_new();
27 ::testing::NiceMock<flutter::testing::MockGtk>
mock_gtk;
31 EXPECT_CALL(mock_gtk, gdk_window_get_state)
32 .WillOnce(::testing::Return(
static_cast<GdkWindowState
>(0)));
34 gboolean called =
TRUE;
35 fl_mock_binary_messenger_set_string_message_channel(
36 messenger,
"flutter/lifecycle",
37 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
39 gboolean* called =
static_cast<gboolean*
>(
user_data);
46 GtkWindow* window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
47 gtk_widget_show(GTK_WIDGET(window));
52 .window_state = {.new_window_state = GDK_WINDOW_STATE_FOCUSED}};
54 g_signal_emit_by_name(window,
"window-state-event", &event, &handled);
59 EXPECT_CALL(mock_gtk, gdk_window_get_state)
60 .WillOnce(::testing::Return(GDK_WINDOW_STATE_FOCUSED));
61 gboolean called =
TRUE;
62 fl_mock_binary_messenger_set_string_message_channel(
63 messenger,
"flutter/lifecycle",
64 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
66 gboolean* called =
static_cast<gboolean*
>(
user_data);
69 "AppLifecycleState.inactive");
74 GtkWindow* window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
75 gtk_widget_show(GTK_WIDGET(window));
80 .window_state = {.new_window_state =
static_cast<GdkWindowState
>(0)}};
82 g_signal_emit_by_name(window,
"window-state-event", &event, &handled);
87 EXPECT_CALL(mock_gtk, gdk_window_get_state)
88 .WillOnce(::testing::Return(
static_cast<GdkWindowState
>(0)));
89 gboolean called =
TRUE;
90 fl_mock_binary_messenger_set_string_message_channel(
91 messenger,
"flutter/lifecycle",
92 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
94 gboolean* called =
static_cast<gboolean*
>(
user_data);
101 GtkWindow* window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
102 gtk_widget_show(GTK_WIDGET(window));
103 g_autoptr(FlWindowStateMonitor) monitor =
107 .window_state = {.new_window_state = GDK_WINDOW_STATE_ICONIFIED}};
109 g_signal_emit_by_name(window,
"window-state-event", &event, &handled);
114 EXPECT_CALL(mock_gtk, gdk_window_get_state)
115 .WillOnce(::testing::Return(GDK_WINDOW_STATE_ICONIFIED));
116 gboolean called =
TRUE;
117 fl_mock_binary_messenger_set_string_message_channel(
118 messenger,
"flutter/lifecycle",
119 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
121 gboolean* called =
static_cast<gboolean*
>(
user_data);
124 "AppLifecycleState.inactive");
129 GtkWindow* window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
130 gtk_widget_show(GTK_WIDGET(window));
131 g_autoptr(FlWindowStateMonitor) monitor =
135 .window_state = {.new_window_state =
static_cast<GdkWindowState
>(0)}};
137 g_signal_emit_by_name(window,
"window-state-event", &event, &handled);
142 EXPECT_CALL(mock_gtk, gdk_window_get_state)
143 .WillOnce(::testing::Return(GDK_WINDOW_STATE_ICONIFIED));
144 gboolean called =
TRUE;
145 fl_mock_binary_messenger_set_string_message_channel(
146 messenger,
"flutter/lifecycle",
147 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
149 gboolean* called =
static_cast<gboolean*
>(
user_data);
156 GtkWindow* window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
157 gtk_widget_show(GTK_WIDGET(window));
158 g_autoptr(FlWindowStateMonitor) monitor =
162 .window_state = {.new_window_state =
static_cast<GdkWindowState
>(
163 GDK_WINDOW_STATE_FOCUSED)}};
165 g_signal_emit_by_name(window,
"window-state-event", &event, &handled);
170 EXPECT_CALL(mock_gtk, gdk_window_get_state)
171 .WillOnce(::testing::Return(
static_cast<GdkWindowState
>(0)));
172 gboolean called =
TRUE;
173 fl_mock_binary_messenger_set_string_message_channel(
174 messenger,
"flutter/lifecycle",
175 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
177 gboolean* called =
static_cast<gboolean*
>(
user_data);
184 GtkWindow* window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
185 gtk_widget_show(GTK_WIDGET(window));
186 g_autoptr(FlWindowStateMonitor) monitor =
190 .window_state = {.new_window_state = GDK_WINDOW_STATE_WITHDRAWN}};
192 g_signal_emit_by_name(window,
"window-state-event", &event, &handled);
197 EXPECT_CALL(mock_gtk, gdk_window_get_state)
198 .WillOnce(::testing::Return(GDK_WINDOW_STATE_WITHDRAWN));
199 gboolean called =
TRUE;
200 fl_mock_binary_messenger_set_string_message_channel(
201 messenger,
"flutter/lifecycle",
202 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
204 gboolean* called =
static_cast<gboolean*
>(
user_data);
207 "AppLifecycleState.inactive");
212 GtkWindow* window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
213 gtk_widget_show(GTK_WIDGET(window));
214 g_autoptr(FlWindowStateMonitor) monitor =
218 .window_state = {.new_window_state =
static_cast<GdkWindowState
>(0)}};
220 g_signal_emit_by_name(window,
"window-state-event", &event, &handled);
225 EXPECT_CALL(mock_gtk, gdk_window_get_state)
226 .WillOnce(::testing::Return(GDK_WINDOW_STATE_WITHDRAWN));
227 gboolean called =
TRUE;
228 fl_mock_binary_messenger_set_string_message_channel(
229 messenger,
"flutter/lifecycle",
230 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue*
message,
232 gboolean* called =
static_cast<gboolean*
>(
user_data);
239 GtkWindow* window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
240 gtk_widget_show(GTK_WIDGET(window));
241 g_autoptr(FlWindowStateMonitor) monitor =
245 .window_state = {.new_window_state =
static_cast<GdkWindowState
>(
246 GDK_WINDOW_STATE_FOCUSED)}};
248 g_signal_emit_by_name(window,
"window-state-event", &event, &handled);
FlMockBinaryMessenger * messenger
~FlWindowStateMonitorTest()
::testing::NiceMock< flutter::testing::MockGtk > mock_gtk
g_autoptr(FlEngine) engine
const char FlTextDirection FlAssertiveness gpointer user_data
void fl_binary_messenger_shutdown(FlBinaryMessenger *self)
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_F(FlWindowStateMonitorTest, GainFocus)