Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit caf32d5

Browse files
Add a proc table version of embedder API (#21813)
1 parent 38f6665 commit caf32d5

File tree

10 files changed

+414
-62
lines changed

10 files changed

+414
-62
lines changed

BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ group("flutter") {
9595
"//flutter/lib/ui:ui_unittests",
9696
"//flutter/runtime:runtime_unittests",
9797
"//flutter/shell/common:shell_unittests",
98+
"//flutter/shell/platform/embedder:embedder_proctable_unittests",
9899
"//flutter/shell/platform/embedder:embedder_unittests",
99100
"//flutter/testing:testing_unittests",
100101
"//flutter/third_party/txt:txt_unittests",

ci/licenses_golden/licenses_flutter

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1093,7 +1093,7 @@ FILE: ../../../flutter/shell/platform/embedder/embedder_render_target.cc
10931093
FILE: ../../../flutter/shell/platform/embedder/embedder_render_target.h
10941094
FILE: ../../../flutter/shell/platform/embedder/embedder_render_target_cache.cc
10951095
FILE: ../../../flutter/shell/platform/embedder/embedder_render_target_cache.h
1096-
FILE: ../../../flutter/shell/platform/embedder/embedder_safe_access.h
1096+
FILE: ../../../flutter/shell/platform/embedder/embedder_struct_macros.h
10971097
FILE: ../../../flutter/shell/platform/embedder/embedder_surface.cc
10981098
FILE: ../../../flutter/shell/platform/embedder/embedder_surface.h
10991099
FILE: ../../../flutter/shell/platform/embedder/embedder_surface_gl.cc
@@ -1121,6 +1121,7 @@ FILE: ../../../flutter/shell/platform/embedder/fixtures/verifyb143464703.png
11211121
FILE: ../../../flutter/shell/platform/embedder/fixtures/verifyb143464703_soft_noxform.png
11221122
FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.cc
11231123
FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.h
1124+
FILE: ../../../flutter/shell/platform/embedder/test_utils/proc_table_replacement.h
11241125
FILE: ../../../flutter/shell/platform/embedder/vsync_waiter_embedder.cc
11251126
FILE: ../../../flutter/shell/platform/embedder/vsync_waiter_embedder.h
11261127
FILE: ../../../flutter/shell/platform/fuchsia/dart-pkg/fuchsia/lib/fuchsia.dart

shell/platform/embedder/BUILD.gn

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ template("embedder_source_set") {
4848
"embedder_render_target.h",
4949
"embedder_render_target_cache.cc",
5050
"embedder_render_target_cache.h",
51-
"embedder_safe_access.h",
51+
"embedder_struct_macros.h",
5252
"embedder_surface.cc",
5353
"embedder_surface.h",
5454
"embedder_surface_software.cc",
@@ -110,6 +110,14 @@ source_set("embedder_headers") {
110110
public_configs = [ "//flutter:config" ]
111111
}
112112

113+
source_set("embedder_test_utils") {
114+
public = [ "test_utils/proc_table_replacement.h" ]
115+
116+
deps = [ ":embedder_headers" ]
117+
118+
public_configs = [ "//flutter:config" ]
119+
}
120+
113121
# For using the embedder API as internal implementation detail of an
114122
# embedding.
115123
config("embedder_internal_library_config") {
@@ -200,6 +208,33 @@ if (enable_unittests) {
200208
deps += [ "//flutter/testing:opengl" ]
201209
}
202210
}
211+
212+
# Tests the build in FLUTTER_ENGINE_NO_PROTOTYPES mode.
213+
executable("embedder_proctable_unittests") {
214+
testonly = true
215+
216+
configs += [
217+
":embedder_gpu_configuration_config",
218+
"//flutter:export_dynamic_symbols",
219+
]
220+
221+
sources = [ "tests/embedder_unittests_proctable.cc" ]
222+
223+
defines = [ "FLUTTER_ENGINE_NO_PROTOTYPES" ]
224+
225+
deps = [
226+
":embedder",
227+
":embedder_gpu_configuration",
228+
":fixtures",
229+
"//flutter/testing",
230+
231+
#"//flutter/testing:dart",
232+
#"//flutter/testing:skia",
233+
#"//flutter/third_party/tonic",
234+
#"//third_party/dart/runtime/bin:elf_loader",
235+
#"//third_party/skia",
236+
]
237+
}
203238
}
204239

205240
shared_library("flutter_engine_library") {

shell/platform/embedder/embedder.cc

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extern const intptr_t kPlatformStrongDillSize;
5050
#include "flutter/shell/platform/embedder/embedder_engine.h"
5151
#include "flutter/shell/platform/embedder/embedder_platform_message_response.h"
5252
#include "flutter/shell/platform/embedder/embedder_render_target.h"
53-
#include "flutter/shell/platform/embedder/embedder_safe_access.h"
53+
#include "flutter/shell/platform/embedder/embedder_struct_macros.h"
5454
#include "flutter/shell/platform/embedder/embedder_task_runner.h"
5555
#include "flutter/shell/platform/embedder/embedder_thread_host.h"
5656
#include "flutter/shell/platform/embedder/platform_view_embedder.h"
@@ -2048,3 +2048,57 @@ FlutterEngineResult FlutterEngineNotifyDisplayUpdate(
20482048
"Invalid FlutterEngineDisplaysUpdateType type specified.");
20492049
}
20502050
}
2051+
2052+
FlutterEngineResult FlutterEngineGetProcAddresses(
2053+
FlutterEngineProcTable* table) {
2054+
if (!table) {
2055+
return LOG_EMBEDDER_ERROR(kInvalidArguments, "Null table specified.");
2056+
}
2057+
#define SET_PROC(member, function) \
2058+
if (STRUCT_HAS_MEMBER(table, member)) { \
2059+
table->member = &function; \
2060+
}
2061+
2062+
SET_PROC(CreateAOTData, FlutterEngineCreateAOTData);
2063+
SET_PROC(CollectAOTData, FlutterEngineCollectAOTData);
2064+
SET_PROC(Run, FlutterEngineRun);
2065+
SET_PROC(Shutdown, FlutterEngineShutdown);
2066+
SET_PROC(Initialize, FlutterEngineInitialize);
2067+
SET_PROC(Deinitialize, FlutterEngineDeinitialize);
2068+
SET_PROC(RunInitialized, FlutterEngineRunInitialized);
2069+
SET_PROC(SendWindowMetricsEvent, FlutterEngineSendWindowMetricsEvent);
2070+
SET_PROC(SendPointerEvent, FlutterEngineSendPointerEvent);
2071+
SET_PROC(SendPlatformMessage, FlutterEngineSendPlatformMessage);
2072+
SET_PROC(PlatformMessageCreateResponseHandle,
2073+
FlutterPlatformMessageCreateResponseHandle);
2074+
SET_PROC(PlatformMessageReleaseResponseHandle,
2075+
FlutterPlatformMessageReleaseResponseHandle);
2076+
SET_PROC(SendPlatformMessageResponse,
2077+
FlutterEngineSendPlatformMessageResponse);
2078+
SET_PROC(RegisterExternalTexture, FlutterEngineRegisterExternalTexture);
2079+
SET_PROC(UnregisterExternalTexture, FlutterEngineUnregisterExternalTexture);
2080+
SET_PROC(MarkExternalTextureFrameAvailable,
2081+
FlutterEngineMarkExternalTextureFrameAvailable);
2082+
SET_PROC(UpdateSemanticsEnabled, FlutterEngineUpdateSemanticsEnabled);
2083+
SET_PROC(UpdateAccessibilityFeatures,
2084+
FlutterEngineUpdateAccessibilityFeatures);
2085+
SET_PROC(DispatchSemanticsAction, FlutterEngineDispatchSemanticsAction);
2086+
SET_PROC(OnVsync, FlutterEngineOnVsync);
2087+
SET_PROC(ReloadSystemFonts, FlutterEngineReloadSystemFonts);
2088+
SET_PROC(TraceEventDurationBegin, FlutterEngineTraceEventDurationBegin);
2089+
SET_PROC(TraceEventDurationEnd, FlutterEngineTraceEventDurationEnd);
2090+
SET_PROC(TraceEventInstant, FlutterEngineTraceEventInstant);
2091+
SET_PROC(PostRenderThreadTask, FlutterEnginePostRenderThreadTask);
2092+
SET_PROC(GetCurrentTime, FlutterEngineGetCurrentTime);
2093+
SET_PROC(RunTask, FlutterEngineRunTask);
2094+
SET_PROC(UpdateLocales, FlutterEngineUpdateLocales);
2095+
SET_PROC(RunsAOTCompiledDartCode, FlutterEngineRunsAOTCompiledDartCode);
2096+
SET_PROC(PostDartObject, FlutterEnginePostDartObject);
2097+
SET_PROC(NotifyLowMemoryWarning, FlutterEngineNotifyLowMemoryWarning);
2098+
SET_PROC(PostCallbackOnAllNativeThreads,
2099+
FlutterEnginePostCallbackOnAllNativeThreads);
2100+
SET_PROC(NotifyDisplayUpdate, FlutterEngineNotifyDisplayUpdate);
2101+
#undef SET_PROC
2102+
2103+
return kSuccess;
2104+
}

0 commit comments

Comments
 (0)