13#include "gmock/gmock.h"
14#include "gtest/gtest.h"
33 EXPECT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
36 FL_METHOD_SUCCESS_RESPONSE(response));
40 EXPECT_NE(view_id_value,
nullptr);
46 EXPECT_NE(size_value,
nullptr);
55 EXPECT_NE(state_value,
nullptr);
73TEST(FlWindowingHandlerTest, CreateRegular) {
75 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
87 gboolean called = FALSE;
89 messenger,
"flutter/windowing",
"createRegular",
args,
90 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
93 gboolean* called =
static_cast<gboolean*
>(
user_data);
102TEST(FlWindowingHandlerTest, CreateRegularMinSize) {
104 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
112 EXPECT_CALL(mock_gtk,
114 ::testing::_,
nullptr,
115 ::testing::Pointee(::testing::AllOf(
116 ::testing::Field(&GdkGeometry::min_width, 100),
117 ::testing::Field(&GdkGeometry::min_height, 200))),
123 gboolean called = FALSE;
125 messenger,
"flutter/windowing",
"createRegular",
args,
126 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
129 gboolean* called =
static_cast<gboolean*
>(
user_data);
138TEST(FlWindowingHandlerTest, CreateRegularMaxSize) {
140 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
148 EXPECT_CALL(mock_gtk,
150 ::testing::_,
nullptr,
151 ::testing::Pointee(::testing::AllOf(
152 ::testing::Field(&GdkGeometry::max_width, 1000),
153 ::testing::Field(&GdkGeometry::max_height, 2000))),
159 gboolean called = FALSE;
161 messenger,
"flutter/windowing",
"createRegular",
args,
162 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
165 gboolean* called =
static_cast<gboolean*
>(
user_data);
174TEST(FlWindowingHandlerTest, CreateRegularWithTitle) {
176 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
184 EXPECT_CALL(mock_gtk,
190 gboolean called = FALSE;
192 messenger,
"flutter/windowing",
"createRegular",
args,
193 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
196 gboolean* called =
static_cast<gboolean*
>(
user_data);
205TEST(FlWindowingHandlerTest, CreateRegularMaximized) {
207 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
221 gboolean called = FALSE;
223 messenger,
"flutter/windowing",
"createRegular",
args,
224 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
227 gboolean* called =
static_cast<gboolean*
>(
user_data);
236TEST(FlWindowingHandlerTest, CreateRegularMinimized) {
238 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
252 gboolean called = FALSE;
254 messenger,
"flutter/windowing",
"createRegular",
args,
255 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
258 gboolean* called =
static_cast<gboolean*
>(
user_data);
267TEST(FlWindowingHandlerTest, ModifyRegularSize) {
269 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
283 messenger,
"flutter/windowing",
"createRegular", create_args,
284 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
295 gboolean modify_called = FALSE;
297 messenger,
"flutter/windowing",
"modifyRegular", modify_args,
298 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
300 EXPECT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
301 gboolean* called =
static_cast<gboolean*
>(
user_data);
305 EXPECT_TRUE(modify_called);
310TEST(FlWindowingHandlerTest, ModifyRegularTitle) {
312 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
320 EXPECT_CALL(mock_gtk,
327 messenger,
"flutter/windowing",
"createRegular", create_args,
328 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
339 gboolean modify_called = FALSE;
341 messenger,
"flutter/windowing",
"modifyRegular", modify_args,
342 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
344 EXPECT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
345 gboolean* called =
static_cast<gboolean*
>(
user_data);
349 EXPECT_TRUE(modify_called);
354TEST(FlWindowingHandlerTest, ModifyRegularMaximize) {
356 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
369 messenger,
"flutter/windowing",
"createRegular", create_args,
370 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
384 gboolean modify_called = FALSE;
386 messenger,
"flutter/windowing",
"modifyRegular", modify_args,
387 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
389 EXPECT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
390 gboolean* called =
static_cast<gboolean*
>(
user_data);
394 EXPECT_TRUE(modify_called);
399TEST(FlWindowingHandlerTest, ModifyRegularUnmaximize) {
401 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
417 messenger,
"flutter/windowing",
"createRegular", create_args,
418 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
427 .WillOnce(::testing::Return(
TRUE));
434 gboolean modify_called = FALSE;
436 messenger,
"flutter/windowing",
"modifyRegular", modify_args,
437 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
439 EXPECT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
440 gboolean* called =
static_cast<gboolean*
>(
user_data);
444 EXPECT_TRUE(modify_called);
449TEST(FlWindowingHandlerTest, ModifyRegularMinimize) {
451 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
464 messenger,
"flutter/windowing",
"createRegular", create_args,
465 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
479 gboolean modify_called = FALSE;
481 messenger,
"flutter/windowing",
"modifyRegular", modify_args,
482 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
484 EXPECT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
485 gboolean* called =
static_cast<gboolean*
>(
user_data);
489 EXPECT_TRUE(modify_called);
494TEST(FlWindowingHandlerTest, ModifyRegularUnminimize) {
496 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
512 messenger,
"flutter/windowing",
"createRegular", create_args,
513 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
522 .WillOnce(::testing::Return(GDK_WINDOW_STATE_ICONIFIED));
529 gboolean modify_called = FALSE;
531 messenger,
"flutter/windowing",
"modifyRegular", modify_args,
532 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
534 EXPECT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
535 gboolean* called =
static_cast<gboolean*
>(
user_data);
539 EXPECT_TRUE(modify_called);
544TEST(FlWindowingHandlerTest, ModifyUnknownWindow) {
552 gboolean called = FALSE;
554 messenger,
"flutter/windowing",
"modifyRegular",
args,
555 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
557 EXPECT_TRUE(FL_IS_METHOD_ERROR_RESPONSE(response));
559 FL_METHOD_ERROR_RESPONSE(response)),
562 FL_METHOD_ERROR_RESPONSE(response)),
563 "No window with given view ID");
564 gboolean* called =
static_cast<gboolean*
>(
user_data);
573TEST(FlWindowingHandlerTest, DestroyWindow) {
575 ::testing::NiceMock<flutter::testing::MockGtk> mock_gtk;
589 messenger,
"flutter/windowing",
"createRegular", create_args,
590 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
599 gboolean destroy_called = FALSE;
601 messenger,
"flutter/windowing",
"destroyWindow", destroy_args,
602 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
604 EXPECT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
605 gboolean* called =
static_cast<gboolean*
>(
user_data);
609 EXPECT_TRUE(destroy_called);
614TEST(FlWindowingHandlerTest, DestroyUnknownWindow) {
621 gboolean called = FALSE;
623 messenger,
"flutter/windowing",
"destroyWindow",
args,
624 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
626 EXPECT_TRUE(FL_IS_METHOD_ERROR_RESPONSE(response));
628 FL_METHOD_ERROR_RESPONSE(response)),
631 FL_METHOD_ERROR_RESPONSE(response)),
632 "No window with given view ID");
633 gboolean* called =
static_cast<gboolean*
>(
user_data);
void fl_binary_messenger_shutdown(FlBinaryMessenger *self)
g_autoptr(GMutexLocker) locker
FlEngine * fl_engine_new_with_binary_messenger(FlBinaryMessenger *binary_messenger)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
G_MODULE_EXPORT FlValue * fl_method_success_response_get_result(FlMethodSuccessResponse *self)
G_MODULE_EXPORT const gchar * fl_method_error_response_get_message(FlMethodErrorResponse *self)
G_MODULE_EXPORT const gchar * fl_method_error_response_get_code(FlMethodErrorResponse *self)
void fl_mock_binary_messenger_invoke_standard_method(FlMockBinaryMessenger *self, const gchar *channel, const char *name, FlValue *args, FlMockBinaryMessengerMethodCallback callback, gpointer user_data)
const gchar FlBinaryMessengerMessageHandler handler
FlMockBinaryMessenger * fl_mock_binary_messenger_new()
G_MODULE_EXPORT void fl_value_set_string(FlValue *self, const gchar *key, FlValue *value)
G_MODULE_EXPORT FlValue * fl_value_new_map()
G_MODULE_EXPORT void fl_value_set_string_take(FlValue *self, const gchar *key, FlValue *value)
G_MODULE_EXPORT FlValue * fl_value_lookup_string(FlValue *self, const gchar *key)
G_MODULE_EXPORT int64_t fl_value_get_int(FlValue *self)
G_MODULE_EXPORT FlValueType fl_value_get_type(FlValue *self)
G_MODULE_EXPORT FlValue * fl_value_new_string(const gchar *value)
G_MODULE_EXPORT FlValue * fl_value_new_int(int64_t value)
G_MODULE_EXPORT FlValue * fl_value_new_float(double value)
G_MODULE_EXPORT void fl_value_append_take(FlValue *self, FlValue *value)
G_MODULE_EXPORT FlValue * fl_value_get_list_value(FlValue *self, size_t index)
G_MODULE_EXPORT FlValue * fl_value_new_list()
G_MODULE_EXPORT size_t fl_value_get_length(FlValue *self)
typedefG_BEGIN_DECLS struct _FlValue FlValue
G_BEGIN_DECLS FlutterViewId view_id
FlWindowingHandler * fl_windowing_handler_new(FlEngine *engine)
TEST(FlWindowingHandlerTest, CreateRegular)
static int64_t parse_create_regular_response(FlMethodResponse *response)
static FlValue * make_modify_regular_args(int64_t view_id)
static FlValue * make_destroy_window_args(int64_t view_id)
static FlValue * make_create_regular_args(double width, double height)
static void set_size_arg(FlValue *args, const gchar *name, double width, double height)
void gtk_widget_destroy(GtkWidget *widget)
gboolean gtk_window_is_maximized(GtkWindow *window)
void gtk_window_resize(GtkWindow *window, gint width, gint height)
void gtk_window_deiconify(GtkWindow *window)
void gtk_window_maximize(GtkWindow *window)
void gtk_window_unmaximize(GtkWindow *window)
void gtk_window_iconify(GtkWindow *window)
void gtk_window_set_default_size(GtkWindow *window, gint width, gint height)
GtkWidget * gtk_window_new(GtkWindowType type)
void gtk_window_set_geometry_hints(GtkWindow *window, GtkWidget *widget, GdkGeometry *geometry, GdkWindowHints geometry_mask)
GdkWindowState gdk_window_get_state(GdkWindow *window)
void gtk_window_set_title(GtkWindow *window, const gchar *title)
void fl_ensure_gtk_init(GLogWriterFunc writer)
Ensures that GTK has been initialized and starts monitoring logs.