@@ -218,6 +218,16 @@ static void TestDartVmFlags(std::vector<const char*>& flags) {
218
218
}
219
219
}
220
220
221
+ static void PostSync (const fml::RefPtr<fml::TaskRunner>& task_runner,
222
+ const fml::closure& task) {
223
+ fml::AutoResetWaitableEvent latch;
224
+ fml::TaskRunner::RunNowOrPostTask (task_runner, [&latch, &task] {
225
+ task ();
226
+ latch.Signal ();
227
+ });
228
+ latch.Wait ();
229
+ }
230
+
221
231
TEST_F (ShellTest, InitializeWithInvalidThreads) {
222
232
ASSERT_FALSE (DartVMRef::IsInstanceRunning ());
223
233
Settings settings = CreateSettingsForFixture ();
@@ -2437,30 +2447,30 @@ TEST_F(ShellTest, Spawn) {
2437
2447
main_latch.Wait ();
2438
2448
ASSERT_TRUE (DartVMRef::IsInstanceRunning ());
2439
2449
2440
- {
2441
- fml::AutoResetWaitableEvent latch;
2442
- fml::TaskRunner::RunNowOrPostTask (
2443
- shell-> GetTaskRunners (). GetPlatformTaskRunner (),
2444
- [ this , &spawner = shell, &latch, settings]() {
2445
- MockPlatformViewDelegate platform_view_delegate;
2446
- auto spawn = spawner-> Spawn (
2447
- settings,
2448
- [& platform_view_delegate](Shell& shell) {
2449
- auto result = std::make_unique<MockPlatformView>(
2450
- platform_view_delegate, shell. GetTaskRunners ());
2451
- ON_CALL (*result, CreateRenderingSurface ())
2452
- . WillByDefault (:: testing::Invoke (
2453
- [] { return std::make_unique<MockSurface>(); }));
2454
- return result ;
2455
- },
2456
- [](Shell& shell) { return std::make_unique<Rasterizer>(shell); } );
2457
- ASSERT_NE ( nullptr , spawn. get ());
2458
- ASSERT_TRUE ( ValidateShell (spawn. get ()));
2459
- DestroyShell ( std::move (spawn));
2460
- latch. Signal ( );
2461
- });
2462
- latch. Wait ( );
2463
- }
2450
+ PostSync (shell-> GetTaskRunners (). GetPlatformTaskRunner (), [ this ,
2451
+ &spawner = shell,
2452
+ settings]() {
2453
+ MockPlatformViewDelegate platform_view_delegate;
2454
+ auto spawn = spawner-> Spawn (
2455
+ settings,
2456
+ [&platform_view_delegate](Shell& shell) {
2457
+ auto result = std::make_unique<MockPlatformView>(
2458
+ platform_view_delegate, shell. GetTaskRunners ());
2459
+ ON_CALL (* result, CreateRenderingSurface ())
2460
+ . WillByDefault (:: testing::Invoke (
2461
+ [] { return std::make_unique<MockSurface>(); }));
2462
+ return result;
2463
+ },
2464
+ [](Shell& shell) { return std::make_unique<Rasterizer>(shell); }) ;
2465
+ ASSERT_NE ( nullptr , spawn. get ());
2466
+ ASSERT_TRUE ( ValidateShell (spawn. get ()) );
2467
+
2468
+ PostSync (spawner-> GetTaskRunners (). GetIOTaskRunner (), [&spawner, &spawn] {
2469
+ ASSERT_EQ (spawner-> GetIOManager ()-> GetResourceContext (). get (),
2470
+ spawn-> GetIOManager ()-> GetResourceContext (). get () );
2471
+ });
2472
+ DestroyShell ( std::move (spawn) );
2473
+ });
2464
2474
2465
2475
DestroyShell (std::move (shell));
2466
2476
ASSERT_FALSE (DartVMRef::IsInstanceRunning ());
0 commit comments