22// Use of this source code is governed by a BSD-style license that can be
33// found in the LICENSE file.
44
5- #define FML_USED_ON_EMBEDDER
6-
75#include < memory>
86#include " flutter/shell/platform/android/external_view_embedder/external_view_embedder.h"
97
@@ -89,24 +87,12 @@ fml::RefPtr<fml::RasterThreadMerger> GetThreadMergerFromRasterThread(
8987 rasterizer_queue_id);
9088}
9189
92- TaskRunners GetTaskRunnersForFixture () {
93- fml::MessageLoop::EnsureInitializedForCurrentThread ();
94- auto & loop = fml::MessageLoop::GetCurrent ();
95- return {
96- " test" ,
97- loop.GetTaskRunner (), // platform
98- loop.GetTaskRunner (), // raster
99- loop.GetTaskRunner (), // ui
100- loop.GetTaskRunner () // io
101- };
102- }
103-
10490TEST (AndroidExternalViewEmbedder, GetCurrentCanvases) {
10591 auto jni_mock = std::make_shared<JNIMock>();
10692
10793 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
10894 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
109- android_context, jni_mock, nullptr , GetTaskRunnersForFixture () );
95+ android_context, jni_mock, nullptr );
11096 fml::Thread rasterizer_thread (" rasterizer" );
11197 auto raster_thread_merger =
11298 GetThreadMergerFromPlatformThread (&rasterizer_thread);
@@ -131,7 +117,7 @@ TEST(AndroidExternalViewEmbedder, GetCurrentCanvasesCompositeOrder) {
131117
132118 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
133119 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
134- android_context, jni_mock, nullptr , GetTaskRunnersForFixture () );
120+ android_context, jni_mock, nullptr );
135121 fml::Thread rasterizer_thread (" rasterizer" );
136122 auto raster_thread_merger =
137123 GetThreadMergerFromPlatformThread (&rasterizer_thread);
@@ -154,7 +140,7 @@ TEST(AndroidExternalViewEmbedder, GetCurrentCanvasesCompositeOrder) {
154140TEST (AndroidExternalViewEmbedder, CompositeEmbeddedView) {
155141 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
156142 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
157- android_context, nullptr , nullptr , GetTaskRunnersForFixture () );
143+ android_context, nullptr , nullptr );
158144
159145 ASSERT_EQ (nullptr , embedder->CompositeEmbeddedView (0 ));
160146 embedder->PrerollCompositeEmbeddedView (
@@ -170,7 +156,7 @@ TEST(AndroidExternalViewEmbedder, CompositeEmbeddedView) {
170156TEST (AndroidExternalViewEmbedder, CancelFrame) {
171157 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
172158 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
173- android_context, nullptr , nullptr , GetTaskRunnersForFixture () );
159+ android_context, nullptr , nullptr );
174160
175161 embedder->PrerollCompositeEmbeddedView (
176162 0 , std::make_unique<EmbeddedViewParams>());
@@ -184,7 +170,7 @@ TEST(AndroidExternalViewEmbedder, RasterizerRunsOnPlatformThread) {
184170 auto jni_mock = std::make_shared<JNIMock>();
185171 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
186172 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
187- android_context, jni_mock, nullptr , GetTaskRunnersForFixture () );
173+ android_context, jni_mock, nullptr );
188174
189175 fml::Thread rasterizer_thread (" rasterizer" );
190176 auto raster_thread_merger =
@@ -218,7 +204,7 @@ TEST(AndroidExternalViewEmbedder, RasterizerRunsOnRasterizerThread) {
218204 auto jni_mock = std::make_shared<JNIMock>();
219205 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
220206 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
221- android_context, jni_mock, nullptr , GetTaskRunnersForFixture () );
207+ android_context, jni_mock, nullptr );
222208
223209 fml::Thread rasterizer_thread (" rasterizer" );
224210 auto raster_thread_merger =
@@ -239,7 +225,7 @@ TEST(AndroidExternalViewEmbedder, PlatformViewRect) {
239225
240226 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
241227 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
242- android_context, jni_mock, nullptr , GetTaskRunnersForFixture () );
228+ android_context, jni_mock, nullptr );
243229 fml::Thread rasterizer_thread (" rasterizer" );
244230 auto raster_thread_merger =
245231 GetThreadMergerFromPlatformThread (&rasterizer_thread);
@@ -267,7 +253,7 @@ TEST(AndroidExternalViewEmbedder, PlatformViewRectChangedParams) {
267253
268254 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
269255 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
270- android_context, jni_mock, nullptr , GetTaskRunnersForFixture () );
256+ android_context, jni_mock, nullptr );
271257 fml::Thread rasterizer_thread (" rasterizer" );
272258 auto raster_thread_merger =
273259 GetThreadMergerFromPlatformThread (&rasterizer_thread);
@@ -342,7 +328,7 @@ TEST(AndroidExternalViewEmbedder, SubmitFrame) {
342328 return android_surface_mock;
343329 });
344330 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
345- *android_context, jni_mock, surface_factory, GetTaskRunnersForFixture () );
331+ *android_context, jni_mock, surface_factory);
346332
347333 auto raster_thread_merger = GetThreadMergerFromPlatformThread ();
348334
@@ -535,7 +521,7 @@ TEST(AndroidExternalViewEmbedder, SubmitFrameOverlayComposition) {
535521 return android_surface_mock;
536522 });
537523 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
538- *android_context, jni_mock, surface_factory, GetTaskRunnersForFixture () );
524+ *android_context, jni_mock, surface_factory);
539525
540526 auto raster_thread_merger = GetThreadMergerFromPlatformThread ();
541527
@@ -637,7 +623,7 @@ TEST(AndroidExternalViewEmbedder, SubmitFramePlatformViewWithoutAnyOverlay) {
637623 return android_surface_mock;
638624 });
639625 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
640- *android_context, jni_mock, surface_factory, GetTaskRunnersForFixture () );
626+ *android_context, jni_mock, surface_factory);
641627
642628 auto raster_thread_merger = GetThreadMergerFromPlatformThread ();
643629
@@ -676,7 +662,7 @@ TEST(AndroidExternalViewEmbedder, DoesNotCallJNIPlatformThreadOnlyMethods) {
676662
677663 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
678664 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
679- android_context, jni_mock, nullptr , GetTaskRunnersForFixture () );
665+ android_context, jni_mock, nullptr );
680666
681667 // While on the raster thread, don't make JNI calls as these methods can only
682668 // run on the platform thread.
@@ -725,7 +711,7 @@ TEST(AndroidExternalViewEmbedder, DestroyOverlayLayersOnSizeChange) {
725711 });
726712
727713 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
728- *android_context, jni_mock, surface_factory, GetTaskRunnersForFixture () );
714+ *android_context, jni_mock, surface_factory);
729715 fml::Thread rasterizer_thread (" rasterizer" );
730716 auto raster_thread_merger =
731717 GetThreadMergerFromPlatformThread (&rasterizer_thread);
@@ -812,7 +798,7 @@ TEST(AndroidExternalViewEmbedder, DoesNotDestroyOverlayLayersOnSizeChange) {
812798 });
813799
814800 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
815- *android_context, jni_mock, surface_factory, GetTaskRunnersForFixture () );
801+ *android_context, jni_mock, surface_factory);
816802
817803 // ------------------ First frame ------------------ //
818804 {
@@ -857,7 +843,9 @@ TEST(AndroidExternalViewEmbedder, DoesNotDestroyOverlayLayersOnSizeChange) {
857843 embedder->EndFrame (/* should_resubmit_frame=*/ false , raster_thread_merger);
858844 }
859845
860- EXPECT_CALL (*jni_mock, FlutterViewDestroyOverlaySurfaces ()).Times (1 );
846+ // Changing the frame size from the raster thread does not make JNI calls.
847+
848+ EXPECT_CALL (*jni_mock, FlutterViewDestroyOverlaySurfaces ()).Times (0 );
861849 EXPECT_CALL (*jni_mock, FlutterViewBeginFrame ()).Times (0 );
862850
863851 fml::Thread platform_thread (" platform" );
@@ -869,15 +857,15 @@ TEST(AndroidExternalViewEmbedder, SupportsDynamicThreadMerging) {
869857 auto jni_mock = std::make_shared<JNIMock>();
870858 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
871859 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
872- android_context, jni_mock, nullptr , GetTaskRunnersForFixture () );
860+ android_context, jni_mock, nullptr );
873861 ASSERT_TRUE (embedder->SupportsDynamicThreadMerging ());
874862}
875863
876864TEST (AndroidExternalViewEmbedder, DisableThreadMerger) {
877865 auto jni_mock = std::make_shared<JNIMock>();
878866 auto android_context = AndroidContext (AndroidRenderingAPI::kSoftware );
879867 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
880- android_context, jni_mock, nullptr , GetTaskRunnersForFixture () );
868+ android_context, jni_mock, nullptr );
881869
882870 fml::Thread platform_thread (" platform" );
883871 auto raster_thread_merger = GetThreadMergerFromRasterThread (&platform_thread);
@@ -933,7 +921,7 @@ TEST(AndroidExternalViewEmbedder, Teardown) {
933921 });
934922
935923 auto embedder = std::make_unique<AndroidExternalViewEmbedder>(
936- *android_context, jni_mock, surface_factory, GetTaskRunnersForFixture () );
924+ *android_context, jni_mock, surface_factory);
937925 fml::Thread rasterizer_thread (" rasterizer" );
938926 auto raster_thread_merger =
939927 GetThreadMergerFromPlatformThread (&rasterizer_thread);
0 commit comments