Flutter Engine
 
Loading...
Searching...
No Matches
flutter::testing::TestDartNativeResolver Class Reference

#include <test_dart_native_resolver.h>

Inheritance diagram for flutter::testing::TestDartNativeResolver:

Public Member Functions

 TestDartNativeResolver ()
 
 ~TestDartNativeResolver ()
 
void AddNativeCallback (const std::string &name, Dart_NativeFunction callback)
 
void AddFfiNativeCallback (const std::string &name, void *callback_ptr)
 
void SetNativeResolverForIsolate ()
 

Detailed Description

Definition at line 30 of file test_dart_native_resolver.h.

Constructor & Destructor Documentation

◆ TestDartNativeResolver()

flutter::testing::TestDartNativeResolver::TestDartNativeResolver ( )
default

◆ ~TestDartNativeResolver()

flutter::testing::TestDartNativeResolver::~TestDartNativeResolver ( )
default

Member Function Documentation

◆ AddFfiNativeCallback()

void flutter::testing::TestDartNativeResolver::AddFfiNativeCallback ( const std::string &  name,
void *  callback_ptr 
)

Definition at line 24 of file test_dart_native_resolver.cc.

25 {
26 ffi_native_callbacks_[name] = callback_ptr;
27}
DEF_SWITCHES_START aot vmservice shared library name
Definition switch_defs.h:27

References flutter::name.

◆ AddNativeCallback()

void flutter::testing::TestDartNativeResolver::AddNativeCallback ( const std::string &  name,
Dart_NativeFunction  callback 
)

Definition at line 20 of file test_dart_native_resolver.cc.

21 {
22 native_callbacks_[name] = callback;
23}
FlutterDesktopBinaryReply callback

References callback, and flutter::name.

◆ SetNativeResolverForIsolate()

void flutter::testing::TestDartNativeResolver::SetNativeResolverForIsolate ( )

Definition at line 99 of file test_dart_native_resolver.cc.

99 {
100 FML_CHECK(!Dart_IsError(Dart_RootLibrary()));
101 auto result = Dart_SetNativeResolver(Dart_RootLibrary(),
102 DartNativeEntryResolverCallback,
105 << "Could not set native resolver in test.";
106
107 result = Dart_SetFfiNativeResolver(Dart_RootLibrary(), &FfiNativeResolver);
109 << "Could not set FFI native resolver in test.";
110
111 std::scoped_lock lock(gIsolateResolversMutex);
112 gIsolateResolvers[Dart_CurrentIsolateGroup()] = shared_from_this();
113
114 std::vector<Dart_IsolateGroup> isolates_with_dead_resolvers;
115 for (const auto& entry : gIsolateResolvers) {
116 if (!entry.second.lock()) {
117 isolates_with_dead_resolvers.push_back(entry.first);
118 }
119 }
120
121 for (const auto& dead_isolate : isolates_with_dead_resolvers) {
122 gIsolateResolvers.erase(dead_isolate);
123 }
124}
#define FML_CHECK(condition)
Definition logging.h:104
static std::mutex gIsolateResolversMutex
static std::map< Dart_IsolateGroup, std::weak_ptr< TestDartNativeResolver > > gIsolateResolvers
static const uint8_t * DartNativeEntrySymbolCallback(Dart_NativeFunction function)
bool CheckAndHandleError(Dart_Handle handle)
Definition dart_error.cc:33

References tonic::CheckAndHandleError(), flutter::testing::DartNativeEntrySymbolCallback(), FML_CHECK, flutter::testing::gIsolateResolvers, and flutter::testing::gIsolateResolversMutex.


The documentation for this class was generated from the following files: