@@ -21,6 +21,7 @@ namespace testing {
21
21
using DartIsolateTest = RuntimeTest;
22
22
23
23
TEST_F (DartIsolateTest, RootIsolateCreationAndShutdown) {
24
+ ASSERT_FALSE (DartVMRef::IsInstanceRunning ());
24
25
auto settings = CreateSettingsForFixture ();
25
26
auto vm_ref = DartVMRef::Create (settings);
26
27
ASSERT_TRUE (vm_ref);
@@ -50,6 +51,7 @@ TEST_F(DartIsolateTest, RootIsolateCreationAndShutdown) {
50
51
}
51
52
52
53
TEST_F (DartIsolateTest, IsolateShutdownCallbackIsInIsolateScope) {
54
+ ASSERT_FALSE (DartVMRef::IsInstanceRunning ());
53
55
auto settings = CreateSettingsForFixture ();
54
56
auto vm_ref = DartVMRef::Create (settings);
55
57
ASSERT_TRUE (vm_ref);
@@ -143,12 +145,12 @@ class AutoIsolateShutdown {
143
145
FML_DISALLOW_COPY_AND_ASSIGN (AutoIsolateShutdown);
144
146
};
145
147
146
- static void RunDartCodeInIsolate (std::unique_ptr<AutoIsolateShutdown>& result,
148
+ static void RunDartCodeInIsolate (DartVMRef& vm_ref,
149
+ std::unique_ptr<AutoIsolateShutdown>& result,
147
150
const Settings& settings,
148
151
fml::RefPtr<fml::TaskRunner> task_runner,
149
152
std::string entrypoint) {
150
153
FML_CHECK (task_runner->RunsTasksOnCurrentThread ());
151
- auto vm_ref = DartVMRef::Create (settings);
152
154
153
155
if (!vm_ref) {
154
156
return ;
@@ -249,36 +251,46 @@ static void RunDartCodeInIsolate(std::unique_ptr<AutoIsolateShutdown>& result,
249
251
}
250
252
251
253
static std::unique_ptr<AutoIsolateShutdown> RunDartCodeInIsolate (
254
+ DartVMRef& vm_ref,
252
255
const Settings& settings,
253
256
fml::RefPtr<fml::TaskRunner> task_runner,
254
257
std::string entrypoint) {
255
258
std::unique_ptr<AutoIsolateShutdown> result;
256
259
fml::AutoResetWaitableEvent latch;
257
260
fml::TaskRunner::RunNowOrPostTask (
258
261
task_runner, fml::MakeCopyable ([&]() mutable {
259
- RunDartCodeInIsolate (result, settings, task_runner, entrypoint);
262
+ RunDartCodeInIsolate (vm_ref, result, settings, task_runner, entrypoint);
260
263
latch.Signal ();
261
264
}));
262
265
latch.Wait ();
263
266
return result;
264
267
}
265
268
266
269
TEST_F (DartIsolateTest, IsolateCanLoadAndRunDartCode) {
267
- auto isolate = RunDartCodeInIsolate (CreateSettingsForFixture (),
268
- GetCurrentTaskRunner (), " main" );
270
+ ASSERT_FALSE (DartVMRef::IsInstanceRunning ());
271
+ const auto settings = CreateSettingsForFixture ();
272
+ auto vm_ref = DartVMRef::Create (settings);
273
+ auto isolate =
274
+ RunDartCodeInIsolate (vm_ref, settings, GetCurrentTaskRunner (), " main" );
269
275
ASSERT_TRUE (isolate);
270
276
ASSERT_EQ (isolate->get ()->GetPhase (), DartIsolate::Phase::Running);
271
277
}
272
278
273
279
TEST_F (DartIsolateTest, IsolateCannotLoadAndRunUnknownDartEntrypoint) {
274
- auto isolate = RunDartCodeInIsolate (
275
- CreateSettingsForFixture (), GetCurrentTaskRunner (), " thisShouldNotExist" );
280
+ ASSERT_FALSE (DartVMRef::IsInstanceRunning ());
281
+ const auto settings = CreateSettingsForFixture ();
282
+ auto vm_ref = DartVMRef::Create (settings);
283
+ auto isolate = RunDartCodeInIsolate (vm_ref, settings, GetCurrentTaskRunner (),
284
+ " thisShouldNotExist" );
276
285
ASSERT_FALSE (isolate);
277
286
}
278
287
279
288
TEST_F (DartIsolateTest, CanRunDartCodeCodeSynchronously) {
280
- auto isolate = RunDartCodeInIsolate (CreateSettingsForFixture (),
281
- GetCurrentTaskRunner (), " main" );
289
+ ASSERT_FALSE (DartVMRef::IsInstanceRunning ());
290
+ const auto settings = CreateSettingsForFixture ();
291
+ auto vm_ref = DartVMRef::Create (settings);
292
+ auto isolate =
293
+ RunDartCodeInIsolate (vm_ref, settings, GetCurrentTaskRunner (), " main" );
282
294
283
295
ASSERT_TRUE (isolate);
284
296
ASSERT_EQ (isolate->get ()->GetPhase (), DartIsolate::Phase::Running);
@@ -292,15 +304,17 @@ TEST_F(DartIsolateTest, CanRunDartCodeCodeSynchronously) {
292
304
}
293
305
294
306
TEST_F (DartIsolateTest, CanRegisterNativeCallback) {
307
+ ASSERT_FALSE (DartVMRef::IsInstanceRunning ());
295
308
fml::AutoResetWaitableEvent latch;
296
309
AddNativeCallback (" NotifyNative" ,
297
310
CREATE_NATIVE_ENTRY (([&latch](Dart_NativeArguments args) {
298
311
FML_LOG (ERROR) << " Hello from Dart!" ;
299
312
latch.Signal ();
300
313
})));
301
- auto isolate =
302
- RunDartCodeInIsolate (CreateSettingsForFixture (), GetThreadTaskRunner (),
303
- " canRegisterNativeCallback" );
314
+ const auto settings = CreateSettingsForFixture ();
315
+ auto vm_ref = DartVMRef::Create (settings);
316
+ auto isolate = RunDartCodeInIsolate (vm_ref, settings, GetThreadTaskRunner (),
317
+ " canRegisterNativeCallback" );
304
318
ASSERT_TRUE (isolate);
305
319
ASSERT_EQ (isolate->get ()->GetPhase (), DartIsolate::Phase::Running);
306
320
latch.Wait ();
0 commit comments