@@ -43,15 +43,19 @@ class SurfaceMock : public Surface {
4343 (override ));
4444};
4545
46- fml::RefPtr<fml::RasterThreadMerger> GetThreadMergerFromPlatformThread () {
47- auto rasterizer_thread = new fml::Thread (" rasterizer" );
48- auto rasterizer_queue_id =
49- rasterizer_thread->GetTaskRunner ()->GetTaskQueueId ();
50-
46+ fml::RefPtr<fml::RasterThreadMerger> GetThreadMergerFromPlatformThread (
47+ bool merged = false ) {
5148 // Assume the current thread is the platform thread.
5249 fml::MessageLoop::EnsureInitializedForCurrentThread ();
5350 auto platform_queue_id = fml::MessageLoop::GetCurrentTaskQueueId ();
5451
52+ if (merged) {
53+ return fml::MakeRefCounted<fml::RasterThreadMerger>(platform_queue_id,
54+ platform_queue_id);
55+ }
56+ auto rasterizer_thread = new fml::Thread (" rasterizer" );
57+ auto rasterizer_queue_id =
58+ rasterizer_thread->GetTaskRunner ()->GetTaskQueueId ();
5559 return fml::MakeRefCounted<fml::RasterThreadMerger>(platform_queue_id,
5660 rasterizer_queue_id);
5761}
@@ -291,7 +295,9 @@ TEST(AndroidExternalViewEmbedder, SubmitFrame) {
291295 };
292296 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
293297 android_context, jni_mock, surface_factory);
294- auto raster_thread_merger = GetThreadMergerFromPlatformThread ();
298+
299+ auto raster_thread_merger =
300+ GetThreadMergerFromPlatformThread (/* merged=*/ true );
295301
296302 // ------------------ First frame ------------------ //
297303 {
@@ -309,6 +315,9 @@ TEST(AndroidExternalViewEmbedder, SubmitFrame) {
309315 embedder->SubmitFrame (gr_context.get (), std::move (surface_frame));
310316 // Submits frame if no Android view in the current frame.
311317 EXPECT_TRUE (did_submit_frame);
318+ // Doesn't resubmit frame.
319+ auto postpreroll_result = embedder->PostPrerollAction (raster_thread_merger);
320+ ASSERT_EQ (PostPrerollResult::kSuccess , postpreroll_result);
312321
313322 EXPECT_CALL (*jni_mock, FlutterViewEndFrame ());
314323 embedder->EndFrame (/* should_resubmit_frame=*/ false , raster_thread_merger);
@@ -373,6 +382,9 @@ TEST(AndroidExternalViewEmbedder, SubmitFrame) {
373382 embedder->SubmitFrame (gr_context.get (), std::move (surface_frame));
374383 // Doesn't submit frame if there aren't Android views in the previous frame.
375384 EXPECT_FALSE (did_submit_frame);
385+ // Resubmits frame.
386+ auto postpreroll_result = embedder->PostPrerollAction (raster_thread_merger);
387+ ASSERT_EQ (PostPrerollResult::kResubmitFrame , postpreroll_result);
376388
377389 EXPECT_CALL (*jni_mock, FlutterViewEndFrame ());
378390 embedder->EndFrame (/* should_resubmit_frame=*/ false , raster_thread_merger);
@@ -434,6 +446,9 @@ TEST(AndroidExternalViewEmbedder, SubmitFrame) {
434446 embedder->SubmitFrame (gr_context.get (), std::move (surface_frame));
435447 // Submits frame if there are Android views in the previous frame.
436448 EXPECT_TRUE (did_submit_frame);
449+ // Doesn't resubmit frame.
450+ auto postpreroll_result = embedder->PostPrerollAction (raster_thread_merger);
451+ ASSERT_EQ (PostPrerollResult::kSuccess , postpreroll_result);
437452
438453 EXPECT_CALL (*jni_mock, FlutterViewEndFrame ());
439454 embedder->EndFrame (/* should_resubmit_frame=*/ false , raster_thread_merger);
0 commit comments