27 auto settings = CreateSettingsForFixture();
30 GetCurrentTaskRunner(),
31 CreateNewThread(
"raster"),
32 CreateNewThread(
"ui"),
36 auto message_latch = std::make_shared<fml::AutoResetWaitableEvent>();
38 std::unique_ptr<Shell> shell = CreateShell(settings, task_runners);
39 ASSERT_TRUE(shell->IsSetup());
41 auto call_hook = [](Dart_NativeArguments
args) {
42 Dart_Handle hook_name = Dart_GetNativeArgument(
args, 0);
45 Dart_Handle ui_library = Dart_LookupLibrary(
tonic::ToDart(
"dart:ui"));
48 Dart_Handle hook = Dart_GetField(ui_library, hook_name);
51 Dart_Handle arg_count_handle = Dart_GetNativeArgument(
args, 1);
55 Dart_IntegerToInt64(arg_count_handle, &arg_count);
57 std::vector<Dart_Handle> hook_args;
58 for (
int i = 0; i < static_cast<int>(arg_count);
i++) {
59 hook_args.push_back(Dart_GetNativeArgument(
args, 2 +
i));
63 Dart_Handle hook_result =
64 Dart_InvokeClosure(hook, hook_args.size(), hook_args.data());
68 auto finished = [&message_latch](Dart_NativeArguments
args) {
69 message_latch->Signal();
75 configuration.SetEntrypoint(
"hooksTests");
77 shell->RunEngine(std::move(configuration), [](
auto result) {
81 message_latch->Wait();
82 DestroyShell(std::move(shell), task_runners);
static RunConfiguration InferFromSettings(const Settings &settings, const fml::RefPtr< fml::TaskRunner > &io_worker=nullptr, IsolateLaunchType launch_type=IsolateLaunchType::kNewGroup)
Attempts to infer a run configuration from the settings object. This tries to create a run configurat...