Flutter Engine
test_dart_native_resolver.h
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 #ifndef FLUTTER_TESTING_TEST_DART_NATIVE_RESOLVER_H_
6 #define FLUTTER_TESTING_TEST_DART_NATIVE_RESOLVER_H_
7 
8 #include <functional>
9 #include <map>
10 #include <memory>
11 
12 #include "flutter/fml/macros.h"
13 #include "third_party/dart/runtime/include/dart_api.h"
14 
15 #define CREATE_NATIVE_ENTRY(native_entry) \
16  ([&]() { \
17  static ::flutter::testing::NativeEntry closure; \
18  static Dart_NativeFunction entrypoint = [](Dart_NativeArguments args) { \
19  closure(args); \
20  }; \
21  closure = (native_entry); \
22  return entrypoint; \
23  })()
24 
25 namespace flutter {
26 namespace testing {
27 
28 using NativeEntry = std::function<void(Dart_NativeArguments)>;
29 
31  : public std::enable_shared_from_this<TestDartNativeResolver> {
32  public:
34 
36 
37  void AddNativeCallback(std::string name, Dart_NativeFunction callback);
38 
40 
41  private:
42  std::map<std::string, Dart_NativeFunction> native_callbacks_;
43 
44  Dart_NativeFunction ResolveCallback(std::string name) const;
45 
46  static Dart_NativeFunction DartNativeEntryResolverCallback(
47  Dart_Handle dart_name,
48  int num_of_arguments,
49  bool* auto_setup_scope);
50 
51  FML_DISALLOW_COPY_AND_ASSIGN(TestDartNativeResolver);
52 };
53 
54 } // namespace testing
55 } // namespace flutter
56 
57 #endif // FLUTTER_TESTING_TEST_DART_NATIVE_RESOLVER_H_
void AddNativeCallback(std::string name, Dart_NativeFunction callback)
std::function< void(Dart_NativeArguments)> NativeEntry
const char * name
Definition: fuchsia.cc:50