55#include " flutter/fml/raster_thread_merger.h"
66#include " flutter/fml/thread.h"
77#include " flutter/shell/platform/android/external_view_embedder/external_view_embedder.h"
8+ #include " flutter/shell/platform/android/jni/mock_jni.h"
9+ #include " gmock/gmock.h"
810#include " gtest/gtest.h"
911
1012namespace flutter {
1113namespace testing {
1214
15+ using ::testing::Mock;
16+
1317TEST (AndroidExternalViewEmbedder, GetCurrentCanvases) {
14- auto embedder = new AndroidExternalViewEmbedder (nullptr , nullptr , nullptr );
18+ auto mock_jni = std::make_shared<MockJNI>();
19+
20+ EXPECT_CALL (*mock_jni, FlutterViewBeginFrame ());
1521
22+ auto embedder =
23+ std::make_unique<AndroidExternalViewEmbedder>(nullptr , mock_jni, nullptr );
1624 embedder->BeginFrame (SkISize::Make (10 , 20 ), nullptr , 1.0 );
1725
1826 embedder->PrerollCompositeEmbeddedView (
@@ -26,8 +34,28 @@ TEST(AndroidExternalViewEmbedder, GetCurrentCanvases) {
2634 ASSERT_EQ (SkISize::Make (10 , 20 ), canvases[1 ]->getBaseLayerSize ());
2735}
2836
37+ TEST (AndroidExternalViewEmbedder, GetCurrentCanvases__CompositeOrder) {
38+ auto mock_jni = std::make_shared<MockJNI>();
39+ EXPECT_CALL (*mock_jni, FlutterViewBeginFrame ());
40+
41+ auto embedder =
42+ std::make_unique<AndroidExternalViewEmbedder>(nullptr , mock_jni, nullptr );
43+ embedder->BeginFrame (SkISize::Make (10 , 20 ), nullptr , 1.0 );
44+
45+ embedder->PrerollCompositeEmbeddedView (
46+ 0 , std::make_unique<EmbeddedViewParams>());
47+ embedder->PrerollCompositeEmbeddedView (
48+ 1 , std::make_unique<EmbeddedViewParams>());
49+
50+ auto canvases = embedder->GetCurrentCanvases ();
51+ ASSERT_EQ (2UL , canvases.size ());
52+ ASSERT_EQ (embedder->CompositeEmbeddedView (0 ), canvases[0 ]);
53+ ASSERT_EQ (embedder->CompositeEmbeddedView (1 ), canvases[1 ]);
54+ }
55+
2956TEST (AndroidExternalViewEmbedder, CompositeEmbeddedView) {
30- auto embedder = new AndroidExternalViewEmbedder (nullptr , nullptr , nullptr );
57+ auto embedder =
58+ std::make_unique<AndroidExternalViewEmbedder>(nullptr , nullptr , nullptr );
3159
3260 ASSERT_EQ (nullptr , embedder->CompositeEmbeddedView (0 ));
3361 embedder->PrerollCompositeEmbeddedView (
@@ -41,7 +69,8 @@ TEST(AndroidExternalViewEmbedder, CompositeEmbeddedView) {
4169}
4270
4371TEST (AndroidExternalViewEmbedder, CancelFrame) {
44- auto embedder = new AndroidExternalViewEmbedder (nullptr , nullptr , nullptr );
72+ auto embedder =
73+ std::make_unique<AndroidExternalViewEmbedder>(nullptr , nullptr , nullptr );
4574
4675 embedder->PrerollCompositeEmbeddedView (
4776 0 , std::make_unique<EmbeddedViewParams>());
@@ -52,7 +81,12 @@ TEST(AndroidExternalViewEmbedder, CancelFrame) {
5281}
5382
5483TEST (AndroidExternalViewEmbedder, RasterizerRunsOnPlatformThread) {
55- auto embedder = new AndroidExternalViewEmbedder (nullptr , nullptr , nullptr );
84+ auto mock_jni = std::make_shared<MockJNI>();
85+ EXPECT_CALL (*mock_jni, FlutterViewBeginFrame ());
86+ EXPECT_CALL (*mock_jni, FlutterViewEndFrame ());
87+
88+ auto embedder =
89+ std::make_unique<AndroidExternalViewEmbedder>(nullptr , mock_jni, nullptr );
5690 auto platform_thread = new fml::Thread (" platform" );
5791 auto rasterizer_thread = new fml::Thread (" rasterizer" );
5892 auto platform_queue_id = platform_thread->GetTaskRunner ()->GetTaskQueueId ();
@@ -84,7 +118,11 @@ TEST(AndroidExternalViewEmbedder, RasterizerRunsOnPlatformThread) {
84118}
85119
86120TEST (AndroidExternalViewEmbedder, RasterizerRunsOnRasterizerThread) {
87- auto embedder = new AndroidExternalViewEmbedder (nullptr , nullptr , nullptr );
121+ auto mock_jni = std::make_shared<MockJNI>();
122+ EXPECT_CALL (*mock_jni, FlutterViewEndFrame ());
123+
124+ auto embedder =
125+ std::make_unique<AndroidExternalViewEmbedder>(nullptr , mock_jni, nullptr );
88126 auto platform_thread = new fml::Thread (" platform" );
89127 auto rasterizer_thread = new fml::Thread (" rasterizer" );
90128 auto platform_queue_id = platform_thread->GetTaskRunner ()->GetTaskQueueId ();
@@ -103,7 +141,11 @@ TEST(AndroidExternalViewEmbedder, RasterizerRunsOnRasterizerThread) {
103141}
104142
105143TEST (AndroidExternalViewEmbedder, PlatformViewRect) {
106- auto embedder = new AndroidExternalViewEmbedder (nullptr , nullptr , nullptr );
144+ auto mock_jni = std::make_shared<MockJNI>();
145+ EXPECT_CALL (*mock_jni, FlutterViewBeginFrame ());
146+
147+ auto embedder =
148+ std::make_unique<AndroidExternalViewEmbedder>(nullptr , mock_jni, nullptr );
107149 embedder->BeginFrame (SkISize::Make (100 , 100 ), nullptr , 1.5 );
108150
109151 auto view_params = std::make_unique<EmbeddedViewParams>();
@@ -116,7 +158,11 @@ TEST(AndroidExternalViewEmbedder, PlatformViewRect) {
116158}
117159
118160TEST (AndroidExternalViewEmbedder, PlatformViewRect__ChangedParams) {
119- auto embedder = new AndroidExternalViewEmbedder (nullptr , nullptr , nullptr );
161+ auto mock_jni = std::make_shared<MockJNI>();
162+ EXPECT_CALL (*mock_jni, FlutterViewBeginFrame ());
163+
164+ auto embedder =
165+ std::make_unique<AndroidExternalViewEmbedder>(nullptr , mock_jni, nullptr );
120166 embedder->BeginFrame (SkISize::Make (100 , 100 ), nullptr , 1.5 );
121167
122168 auto view_id = 0 ;
0 commit comments