6 #include "flutter/shell/platform/embedder/test_utils/proc_table_replacement.h"
11 #include "flutter/shell/platform/linux/testing/linux_test.h"
12 #include "flutter/shell/platform/linux/testing/mock_texture_registrar.h"
13 #include "gtest/gtest.h"
26 fl_test_registrar_texture,
28 TEST_REGISTRAR_TEXTURE,
32 struct _FlTestRegistrarTexture {
33 FlTextureGL parent_instance;
37 fl_test_registrar_texture,
38 fl_texture_gl_get_type())
40 static gboolean fl_test_registrar_texture_populate(FlTextureGL* texture,
46 EXPECT_TRUE(FL_IS_TEST_REGISTRAR_TEXTURE(texture));
59 FlTestRegistrarTextureClass* klass) {
60 FL_TEXTURE_GL_CLASS(klass)->populate = fl_test_registrar_texture_populate;
66 return FL_TEST_REGISTRAR_TEXTURE(
67 g_object_new(fl_test_registrar_texture_get_type(),
nullptr));
71 g_return_val_if_fail(FL_IS_TEXTURE_REGISTRAR(pointer),
nullptr);
72 FlTextureRegistrar* registrar = FL_TEXTURE_REGISTRAR(pointer);
75 int64_t*
id = g_new0(int64_t, 1);
85 g_autoptr(FlMockTextureRegistrar) registrar = fl_mock_texture_registrar_new();
86 EXPECT_TRUE(FL_IS_MOCK_TEXTURE_REGISTRAR(registrar));
89 FL_TEXTURE_REGISTRAR(registrar), texture));
90 EXPECT_EQ(fl_mock_texture_registrar_get_texture(registrar), texture);
92 FL_TEXTURE_REGISTRAR(registrar), texture));
93 EXPECT_TRUE(fl_mock_texture_registrar_get_frame_available(registrar));
95 FL_TEXTURE_REGISTRAR(registrar), texture));
96 EXPECT_EQ(fl_mock_texture_registrar_get_texture(registrar),
nullptr);
101 bool register_called =
false;
103 MOCK_ENGINE_PROC(RegisterExternalTexture,
104 ([®ister_called](
auto engine, int64_t
texture_id) {
105 register_called =
true;
108 bool unregister_called =
false;
110 MOCK_ENGINE_PROC(UnregisterExternalTexture,
111 ([&unregister_called](
auto engine, int64_t
texture_id) {
112 unregister_called =
true;
120 EXPECT_FALSE(register_called);
122 EXPECT_TRUE(register_called);
123 EXPECT_FALSE(unregister_called);
125 EXPECT_TRUE(unregister_called);
130 bool register_called =
false;
132 MOCK_ENGINE_PROC(RegisterExternalTexture,
133 ([®ister_called](
auto engine, int64_t
texture_id) {
134 register_called =
true;
139 UnregisterExternalTexture,
140 ([](
auto engine, int64_t
texture_id) {
return kSuccess; }));
143 MarkExternalTextureFrameAvailable,
144 ([](
auto engine, int64_t
texture_id) {
return kSuccess; }));
150 EXPECT_TRUE(register_called);
159 RegisterExternalTexture,
160 ([](
auto engine, int64_t
texture_id) {
return kSuccess; }));
163 UnregisterExternalTexture,
164 ([](
auto engine, int64_t
texture_id) {
return kSuccess; }));
166 MOCK_ENGINE_PROC(MarkExternalTextureFrameAvailable,
168 return kInternalInconsistency;
184 RegisterExternalTexture,
185 ([](
auto engine, int64_t
texture_id) {
return kSuccess; }));
188 UnregisterExternalTexture,
189 ([](
auto engine, int64_t
texture_id) {
return kSuccess; }));
198 ASSERT_NE(threads[t],
nullptr);
201 g_autofree int64_t*
id =
static_cast<int64_t*
>(g_thread_join(threads[t]));
202 ASSERT_NE(
id,
nullptr);
g_autoptr(FlEngine) engine
FlutterEngineProcTable * fl_engine_get_embedder_api(FlEngine *self)
G_MODULE_EXPORT int64_t fl_texture_get_id(FlTexture *self)
G_MODULE_EXPORT gboolean fl_texture_registrar_register_texture(FlTextureRegistrar *self, FlTexture *texture)
G_MODULE_EXPORT gboolean fl_texture_registrar_unregister_texture(FlTextureRegistrar *self, FlTexture *texture)
G_MODULE_EXPORT gboolean fl_texture_registrar_mark_texture_frame_available(FlTextureRegistrar *self, FlTexture *texture)
FlTextureRegistrar * fl_texture_registrar_new(FlEngine *engine)
FlTexture * fl_texture_registrar_lookup_texture(FlTextureRegistrar *self, int64_t texture_id)
uint32_t uint32_t uint32_t uint32_t GError ** error
TEST_F(FlTextureRegistrarTest, MockRegistrar)
static void fl_test_registrar_texture_init(FlTestRegistrarTexture *self)
static FlTestRegistrarTexture * fl_test_registrar_texture_new()
static gpointer add_mock_texture_to_registrar(gpointer pointer)
static constexpr uint32_t kBufferWidth
uint32_t uint32_t uint32_t uint32_t * height
uint32_t uint32_t * format
uint32_t uint32_t uint32_t * width
G_DEFINE_TYPE(FlTestRegistrarTexture, fl_test_registrar_texture, fl_texture_gl_get_type()) static gboolean fl_test_registrar_texture_populate(FlTextureGL *texture
static constexpr uint32_t kRealBufferHeight
G_DECLARE_FINAL_TYPE(FlTestRegistrarTexture, fl_test_registrar_texture, FL, TEST_REGISTRAR_TEXTURE, FlTextureGL) struct _FlTestRegistrarTexture
A simple texture.
static void fl_test_registrar_texture_class_init(FlTestRegistrarTextureClass *klass)
static constexpr uint32_t kBufferHeight
static constexpr uint64_t kThreadCount
static constexpr uint32_t kRealBufferWidth