13#include "gtest/gtest.h"
18 *first_frame_emitted =
TRUE;
22TEST(FlViewTest, GetEngine) {
30 EXPECT_NE(
engine,
nullptr);
33TEST(FlViewTest, StateUpdateDoesNotHappenInInit) {
51TEST(FlViewTest, FirstFrameSignal) {
56 gboolean first_frame_emitted = FALSE;
58 &first_frame_emitted);
60 EXPECT_FALSE(first_frame_emitted);
65 while (g_main_context_iteration(g_main_context_default(), FALSE)) {
70 EXPECT_TRUE(first_frame_emitted);
75TEST(FlViewTest, SemanticsUpdate) {
87 .
id = 0, .label =
"root", .flags2 = &flags};
90 .
node_count = 1, .nodes = nodes, .view_id = 0};
91 g_signal_emit_by_name(
engine,
"update-semantics", &update);
94 EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(accessible)), 1);
95 AtkObject* root_object =
96 atk_object_ref_accessible_child(ATK_OBJECT(accessible), 0);
97 EXPECT_STREQ(atk_object_get_name(root_object),
"root");
101TEST(FlViewTest, SemanticsUpdateOtherView) {
113 .
id = 0, .label =
"root", .flags2 = &flags};
116 .
node_count = 1, .nodes = nodes, .view_id = 99};
117 g_signal_emit_by_name(
engine,
"update-semantics", &update);
120 EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(accessible)), 0);
124TEST(FlViewTest, SecondaryView) {
152TEST(FlViewTest, SecondaryViewError) {
183 g_autoptr(GPtrArray) removed_views = g_ptr_array_new();
187 g_ptr_array_add(removed_views, GINT_TO_POINTER(info->
view_id));
202 EXPECT_EQ(removed_views->len, 2u);
203 EXPECT_EQ(GPOINTER_TO_INT(g_ptr_array_index(removed_views, 0)),
205 EXPECT_EQ(GPOINTER_TO_INT(g_ptr_array_index(removed_views, 1)),
210TEST(FlViewTest, ViewDestroyError) {
static void first_frame_cb(FlApplication *self, FlView *view)
g_autoptr(GMutexLocker) locker
G_MODULE_EXPORT FlDartProject * fl_dart_project_new()
FlutterEngineProcTable * fl_engine_get_embedder_api(FlEngine *self)
gboolean fl_engine_start(FlEngine *self, GError **error)
const uint8_t uint32_t uint32_t GError ** error
void fl_renderable_present_layers(FlRenderable *self, const FlutterLayer **layers, size_t layers_count)
G_MODULE_EXPORT FlView * fl_view_new_for_engine(FlEngine *engine)
FlViewAccessible * fl_view_get_accessible(FlView *self)
G_MODULE_EXPORT FlView * fl_view_new(FlDartProject *project)
G_MODULE_EXPORT FlEngine * fl_view_get_engine(FlView *self)
G_MODULE_EXPORT int64_t fl_view_get_id(FlView *self)
G_BEGIN_DECLS FlutterViewId view_id
TEST(FlViewTest, GetEngine)
void fl_gtk_widget_destroy(GtkWidget *widget)
GLogLevelFlags fl_get_received_gtk_log_levels()
Returns the recorded log levels.
void fl_ensure_gtk_init(GLogWriterFunc writer)
Ensures that GTK has been initialized and starts monitoring logs.
#define MOCK_ENGINE_PROC(proc, mock_impl)
FlutterAddViewCallback add_view_callback
FlutterViewId view_id
The identifier for the view to add. This must be unique.
FlutterEngineAddViewFnPtr AddView
FlutterEngineRemoveViewFnPtr RemoveView
int32_t id
The unique identifier for this node.
A batch of updates to semantics nodes and custom actions.
size_t node_count
The number of semantics node updates.