Flutter Engine
 
Loading...
Searching...
No Matches
mock_gtk.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <dlfcn.h>
6#include <gdk/gdkwayland.h>
7
9
10using namespace flutter::testing;
11
12G_DECLARE_FINAL_TYPE(FlMockKeymap, fl_mock_keymap, FL, MOCK_KEYMAP, GObject)
13
16};
17
18G_DEFINE_TYPE(FlMockKeymap, fl_mock_keymap, G_TYPE_OBJECT)
19
20static void fl_mock_keymap_class_init(FlMockKeymapClass* klass) {
21 g_signal_new("keys-changed", fl_mock_keymap_get_type(), G_SIGNAL_RUN_LAST, 0,
22 nullptr, nullptr, nullptr, G_TYPE_NONE, 0);
23}
24
25static void fl_mock_keymap_init(FlMockKeymap* self) {}
26
27// Override GdkKeymap
29 return fl_mock_keymap_get_type();
30}
31
32static MockGtk* mock = nullptr;
33
35 thread = g_thread_self();
36 mock = this;
37}
38
40 if (mock == this) {
41 mock = nullptr;
42 }
43}
44
45// Check we are running on the GTK thread.
46static void check_thread() {
47 if (mock != nullptr) {
48 EXPECT_EQ(mock->thread, g_thread_self());
49 }
50}
51
52GdkKeymap* gdk_keymap_get_for_display(GdkDisplay* display) {
54 FlMockKeymap* keymap =
55 FL_MOCK_KEYMAP(g_object_new(fl_mock_keymap_get_type(), nullptr));
56 (void)FL_IS_MOCK_KEYMAP(keymap);
57 return reinterpret_cast<GdkKeymap*>(keymap);
58}
59
60guint gdk_keymap_lookup_key(GdkKeymap* keymap, const GdkKeymapKey* key) {
62 return mock->gdk_keymap_lookup_key(keymap, key);
63}
64
67 return GDK_DISPLAY(g_object_new(gdk_wayland_display_get_type(), nullptr));
68}
69
70void gdk_display_beep(GdkDisplay* display) {
72}
73
76 return 100;
77}
78
81 return 100;
82}
83
86 return 1;
87}
88
89GdkWindowState gdk_window_get_state(GdkWindow* window) {
91 return mock->gdk_window_get_state(window);
92}
93
94GdkDisplay* gdk_window_get_display(GdkWindow* window) {
96 return GDK_DISPLAY(g_object_new(gdk_wayland_display_get_type(), nullptr));
97}
98
99int gdk_display_get_n_monitors(GdkDisplay* display) {
100 check_thread();
101 return 1;
102}
103
104GdkMonitor* gdk_display_get_monitor(GdkDisplay* display, int n) {
105 check_thread();
106 return GDK_MONITOR(g_object_new(gdk_monitor_get_type(), nullptr));
107}
108
109GdkMonitor* gdk_display_get_monitor_at_window(GdkDisplay* display,
110 GdkWindow* window) {
111 check_thread();
112 return nullptr;
113}
114
115void gdk_monitor_get_geometry(GdkMonitor* monitor, GdkRectangle* geometry) {
116 check_thread();
117}
118
119int gdk_monitor_get_refresh_rate(GdkMonitor* monitor) {
120 check_thread();
121 return 60000;
122}
123
124int gdk_monitor_get_scale_factor(GdkMonitor* monitor) {
125 check_thread();
126 return 1;
127}
128
129GdkCursor* gdk_cursor_new_from_name(GdkDisplay* display, const gchar* name) {
130 check_thread();
131 return nullptr;
132}
133
134void gdk_window_set_cursor(GdkWindow* window, GdkCursor* cursor) {
135 check_thread();
136}
137
138GdkGLContext* gdk_window_create_gl_context(GdkWindow* window, GError** error) {
139 check_thread();
140 return nullptr;
141}
142
143void gdk_cairo_set_source_rgba(cairo_t* cr, const GdkRGBA* rgba) {
144 check_thread();
145}
146
147void gdk_gl_context_realize(GdkGLContext* context) {
148 check_thread();
149}
150
151void gdk_gl_context_clear_current(GdkGLContext* context) {
152 check_thread();
153}
154
155void gdk_gl_context_make_current(GdkGLContext* context) {
156 check_thread();
157}
158
159void gdk_cairo_draw_from_gl(cairo_t* cr,
160 GdkWindow* window,
161 int source,
162 int source_type,
163 int buffer_scale,
164 int x,
165 int y,
166 int width,
167 int height) {
168 check_thread();
169}
170
171GtkWidget* gtk_window_new(GtkWindowType type) {
172 check_thread();
173 GtkWindow* window = GTK_WINDOW(g_object_new(gtk_window_get_type(), nullptr));
174 mock->gtk_window_new(window, type);
175 return GTK_WIDGET(window);
176}
177
178void gtk_window_set_default_size(GtkWindow* window, gint width, gint height) {
179 check_thread();
180 mock->gtk_window_set_default_size(window, width, height);
181}
182
183void gtk_window_set_title(GtkWindow* window, const gchar* title) {
184 check_thread();
185 mock->gtk_window_set_title(window, title);
186}
187
189 GtkWidget* widget,
190 GdkGeometry* geometry,
191 GdkWindowHints geometry_mask) {
192 check_thread();
193 mock->gtk_window_set_geometry_hints(window, widget, geometry, geometry_mask);
194}
195
196void gtk_window_resize(GtkWindow* window, gint width, gint height) {
197 check_thread();
198 mock->gtk_window_resize(window, width, height);
199}
200
201void gtk_window_maximize(GtkWindow* window) {
202 check_thread();
203 mock->gtk_window_maximize(window);
204}
205
207 check_thread();
208 mock->gtk_window_unmaximize(window);
209}
210
211gboolean gtk_window_is_maximized(GtkWindow* window) {
212 check_thread();
213 return mock->gtk_window_is_maximized(window);
214}
215
216void gtk_window_iconify(GtkWindow* window) {
217 check_thread();
218 mock->gtk_window_iconify(window);
219}
220
221void gtk_window_deiconify(GtkWindow* window) {
222 check_thread();
223 mock->gtk_window_deiconify(window);
224}
225
226void gtk_widget_add_events(GtkWidget* widget, gint events) {
227 check_thread();
228}
229
230void gtk_widget_class_set_accessible_type(GtkWidget* widget, GType type) {
231 check_thread();
232}
233
234void gtk_widget_get_allocation(GtkWidget* widget, GtkAllocation* allocation) {
235 check_thread();
236 allocation->x = 0;
237 allocation->y = 0;
238 allocation->width = 100;
239 allocation->height = 100;
240}
241
242GdkDisplay* gtk_widget_get_display(GtkWidget* widget) {
243 check_thread();
244 return nullptr;
245}
246
247gint gtk_widget_get_scale_factor(GtkWidget* widget) {
248 check_thread();
249 return 1;
250}
251
252void gtk_widget_realize(GtkWidget* widget) {
253 check_thread();
254}
255
256void gtk_widget_show(GtkWidget* widget) {
257 check_thread();
258}
259
260void gtk_widget_queue_draw(GtkWidget* widget) {
261 check_thread();
262}
263
264void gtk_widget_destroy(GtkWidget* widget) {
265 check_thread();
266 mock->gtk_widget_destroy(widget);
267}
268
269void fl_gtk_widget_destroy(GtkWidget* widget) {
270 check_thread();
271 void (*destroy)(GtkWidget*) = reinterpret_cast<void (*)(GtkWidget*)>(
272 dlsym(RTLD_NEXT, "gtk_widget_destroy"));
273 destroy(widget);
274}
275
276gboolean gtk_widget_translate_coordinates(GtkWidget* src_widget,
277 GtkWidget* dest_widget,
278 gint src_x,
279 gint src_y,
280 gint* dest_x,
281 gint* dest_y) {
282 check_thread();
283 if (mock == nullptr) {
284 *dest_x = src_x;
285 *dest_y = src_y;
286 return TRUE;
287 }
288
289 return mock->gtk_widget_translate_coordinates(src_widget, dest_widget, src_x,
290 src_y, dest_x, dest_y);
291}
292
293GtkWidget* gtk_widget_get_toplevel(GtkWidget* widget) {
294 check_thread();
295 return widget;
296}
297
298GdkWindow* gtk_widget_get_window(GtkWidget* widget) {
299 check_thread();
300 return nullptr;
301}
302
303void gtk_im_context_set_client_window(GtkIMContext* context,
304 GdkWindow* window) {
305 check_thread();
306 if (mock != nullptr) {
307 mock->gtk_im_context_set_client_window(context, window);
308 }
309}
310
311void gtk_im_context_get_preedit_string(GtkIMContext* context,
312 gchar** str,
313 PangoAttrList** attrs,
314 gint* cursor_pos) {
315 check_thread();
316 if (mock != nullptr) {
317 mock->gtk_im_context_get_preedit_string(context, str, attrs, cursor_pos);
318 }
319}
320
321gboolean gtk_im_context_filter_keypress(GtkIMContext* context,
322 GdkEventKey* event) {
323 check_thread();
324 if (mock == nullptr) {
325 return TRUE;
326 }
327
328 return mock->gtk_im_context_filter_keypress(context, event);
329}
330
331void gtk_im_context_focus_in(GtkIMContext* context) {
332 check_thread();
333 if (mock != nullptr) {
334 mock->gtk_im_context_focus_in(context);
335 }
336}
337
338void gtk_im_context_focus_out(GtkIMContext* context) {
339 check_thread();
340 if (mock != nullptr) {
341 mock->gtk_im_context_focus_out(context);
342 }
343}
344
345void gtk_im_context_set_cursor_location(GtkIMContext* context,
346 const GdkRectangle* area) {
347 check_thread();
348 if (mock != nullptr) {
349 mock->gtk_im_context_set_cursor_location(context, area);
350 }
351}
352
353void gtk_im_context_set_surrounding(GtkIMContext* context,
354 const gchar* text,
355 gint len,
356 gint cursor_index) {
357 check_thread();
358 if (mock != nullptr) {
359 mock->gtk_im_context_set_surrounding(context, text, len, cursor_index);
360 }
361}
362
363GtkClipboard* gtk_clipboard_get_default(GdkDisplay* display) {
364 check_thread();
365 return nullptr;
366}
367
368void gtk_clipboard_set_text(GtkClipboard* clipboard,
369 const gchar* text,
370 gint len) {
371 check_thread();
372}
373
374void gtk_clipboard_request_text(GtkClipboard* clipboard,
375 GtkClipboardTextReceivedFunc callback,
376 gpointer user_data) {
377 check_thread();
378}
379
380void atk_object_notify_state_change(AtkObject* accessible,
381 AtkState state,
382 gboolean value) {
383 check_thread();
384 if (mock != nullptr) {
385 mock->atk_object_notify_state_change(accessible, state, value);
386 }
387}
GLenum type
int32_t value
int32_t x
GLFWwindow * window
Definition main.cc:60
G_BEGIN_DECLS G_DECLARE_FINAL_TYPE(FlAccessibleTextField, fl_accessible_text_field, FL, ACCESSIBLE_TEXT_FIELD, FlAccessibleNode)
G_DEFINE_TYPE(FlBasicMessageChannelResponseHandle, fl_basic_message_channel_response_handle, G_TYPE_OBJECT) static void fl_basic_message_channel_response_handle_dispose(GObject *object)
return TRUE
const uint8_t uint32_t uint32_t GError ** error
FlutterDesktopBinaryReply callback
std::u16string text
static MockEpoxy * mock
Definition mock_epoxy.cc:53
GdkDisplay * gdk_display_get_default()
Definition mock_gtk.cc:65
GdkCursor * gdk_cursor_new_from_name(GdkDisplay *display, const gchar *name)
Definition mock_gtk.cc:129
GtkClipboard * gtk_clipboard_get_default(GdkDisplay *display)
Definition mock_gtk.cc:363
void gtk_widget_class_set_accessible_type(GtkWidget *widget, GType type)
Definition mock_gtk.cc:230
void gtk_widget_destroy(GtkWidget *widget)
Definition mock_gtk.cc:264
void gtk_im_context_set_client_window(GtkIMContext *context, GdkWindow *window)
Definition mock_gtk.cc:303
GdkDisplay * gtk_widget_get_display(GtkWidget *widget)
Definition mock_gtk.cc:242
void gdk_window_set_cursor(GdkWindow *window, GdkCursor *cursor)
Definition mock_gtk.cc:134
void gtk_clipboard_request_text(GtkClipboard *clipboard, GtkClipboardTextReceivedFunc callback, gpointer user_data)
Definition mock_gtk.cc:374
void gtk_im_context_focus_in(GtkIMContext *context)
Definition mock_gtk.cc:331
int gdk_monitor_get_scale_factor(GdkMonitor *monitor)
Definition mock_gtk.cc:124
GdkDisplay * gdk_window_get_display(GdkWindow *window)
Definition mock_gtk.cc:94
gboolean gtk_window_is_maximized(GtkWindow *window)
Definition mock_gtk.cc:211
void gtk_widget_queue_draw(GtkWidget *widget)
Definition mock_gtk.cc:260
static void check_thread()
Definition mock_gtk.cc:46
void gtk_im_context_set_cursor_location(GtkIMContext *context, const GdkRectangle *area)
Definition mock_gtk.cc:345
void atk_object_notify_state_change(AtkObject *accessible, AtkState state, gboolean value)
Definition mock_gtk.cc:380
void gtk_widget_show(GtkWidget *widget)
Definition mock_gtk.cc:256
void gdk_cairo_draw_from_gl(cairo_t *cr, GdkWindow *window, int source, int source_type, int buffer_scale, int x, int y, int width, int height)
Definition mock_gtk.cc:159
void gtk_window_resize(GtkWindow *window, gint width, gint height)
Definition mock_gtk.cc:196
void gtk_window_deiconify(GtkWindow *window)
Definition mock_gtk.cc:221
void gdk_gl_context_clear_current(GdkGLContext *context)
Definition mock_gtk.cc:151
guint gdk_keymap_lookup_key(GdkKeymap *keymap, const GdkKeymapKey *key)
Definition mock_gtk.cc:60
GdkMonitor * gdk_display_get_monitor_at_window(GdkDisplay *display, GdkWindow *window)
Definition mock_gtk.cc:109
int gdk_window_get_width(GdkWindow *window)
Definition mock_gtk.cc:74
void gtk_window_maximize(GtkWindow *window)
Definition mock_gtk.cc:201
int gdk_display_get_n_monitors(GdkDisplay *display)
Definition mock_gtk.cc:99
void gtk_widget_get_allocation(GtkWidget *widget, GtkAllocation *allocation)
Definition mock_gtk.cc:234
void gtk_widget_add_events(GtkWidget *widget, gint events)
Definition mock_gtk.cc:226
void gdk_display_beep(GdkDisplay *display)
Definition mock_gtk.cc:70
void gtk_im_context_focus_out(GtkIMContext *context)
Definition mock_gtk.cc:338
void gtk_window_unmaximize(GtkWindow *window)
Definition mock_gtk.cc:206
void gtk_clipboard_set_text(GtkClipboard *clipboard, const gchar *text, gint len)
Definition mock_gtk.cc:368
gint gdk_window_get_scale_factor(GdkWindow *window)
Definition mock_gtk.cc:84
int gdk_monitor_get_refresh_rate(GdkMonitor *monitor)
Definition mock_gtk.cc:119
static void fl_mock_keymap_class_init(FlMockKeymapClass *klass)
Definition mock_gtk.cc:20
void gtk_window_iconify(GtkWindow *window)
Definition mock_gtk.cc:216
GType gdk_keymap_get_type()
Definition mock_gtk.cc:28
GdkMonitor * gdk_display_get_monitor(GdkDisplay *display, int n)
Definition mock_gtk.cc:104
void gtk_window_set_default_size(GtkWindow *window, gint width, gint height)
Definition mock_gtk.cc:178
void gtk_im_context_get_preedit_string(GtkIMContext *context, gchar **str, PangoAttrList **attrs, gint *cursor_pos)
Definition mock_gtk.cc:311
static void fl_mock_keymap_init(FlMockKeymap *self)
Definition mock_gtk.cc:25
GtkWidget * gtk_window_new(GtkWindowType type)
Definition mock_gtk.cc:171
void gdk_gl_context_make_current(GdkGLContext *context)
Definition mock_gtk.cc:155
int gdk_window_get_height(GdkWindow *window)
Definition mock_gtk.cc:79
static MockGtk * mock
Definition mock_gtk.cc:32
GtkWidget * gtk_widget_get_toplevel(GtkWidget *widget)
Definition mock_gtk.cc:293
GdkGLContext * gdk_window_create_gl_context(GdkWindow *window, GError **error)
Definition mock_gtk.cc:138
void fl_gtk_widget_destroy(GtkWidget *widget)
Definition mock_gtk.cc:269
void gdk_gl_context_realize(GdkGLContext *context)
Definition mock_gtk.cc:147
GdkWindow * gtk_widget_get_window(GtkWidget *widget)
Definition mock_gtk.cc:298
void gdk_monitor_get_geometry(GdkMonitor *monitor, GdkRectangle *geometry)
Definition mock_gtk.cc:115
void gtk_im_context_set_surrounding(GtkIMContext *context, const gchar *text, gint len, gint cursor_index)
Definition mock_gtk.cc:353
void gtk_window_set_geometry_hints(GtkWindow *window, GtkWidget *widget, GdkGeometry *geometry, GdkWindowHints geometry_mask)
Definition mock_gtk.cc:188
GdkWindowState gdk_window_get_state(GdkWindow *window)
Definition mock_gtk.cc:89
GdkKeymap * gdk_keymap_get_for_display(GdkDisplay *display)
Definition mock_gtk.cc:52
gboolean gtk_im_context_filter_keypress(GtkIMContext *context, GdkEventKey *event)
Definition mock_gtk.cc:321
void gtk_window_set_title(GtkWindow *window, const gchar *title)
Definition mock_gtk.cc:183
gint gtk_widget_get_scale_factor(GtkWidget *widget)
Definition mock_gtk.cc:247
void gdk_cairo_set_source_rgba(cairo_t *cr, const GdkRGBA *rgba)
Definition mock_gtk.cc:143
void gtk_widget_realize(GtkWidget *widget)
Definition mock_gtk.cc:252
gboolean gtk_widget_translate_coordinates(GtkWidget *src_widget, GtkWidget *dest_widget, gint src_x, gint src_y, gint *dest_x, gint *dest_y)
Definition mock_gtk.cc:276
double y
DEF_SWITCHES_START aot vmservice shared library name
Definition switch_defs.h:27
int32_t height
int32_t width
GObject parent_instance
Definition mock_gtk.cc:15
int_closure destroy