77
88import android .content .Context ;
99import android .content .res .AssetManager ;
10- import android .util .SparseArray ;
1110import android .view .MotionEvent ;
1211import android .view .Surface ;
1312import android .view .SurfaceHolder ;
2928import io .flutter .embedding .engine .systemchannels .MouseCursorChannel ;
3029import io .flutter .embedding .engine .systemchannels .SettingsChannel ;
3130import io .flutter .embedding .engine .systemchannels .TextInputChannel ;
32- import io .flutter .plugin .common .FlutterException ;
3331import io .flutter .plugin .common .MethodCall ;
34- import io .flutter .plugin .common .StandardMessageCodec ;
3532import io .flutter .plugin .common .StandardMethodCodec ;
3633import io .flutter .plugin .localization .LocalizationPlugin ;
3734import java .nio .ByteBuffer ;
@@ -245,29 +242,7 @@ public void getPlatformViewById__hybridComposition() {
245242
246243 @ Test
247244 @ Config (shadows = {ShadowFlutterJNI .class })
248- public void createPlatformViewMessage__initializesAndroidView () {
249- PlatformViewsController platformViewsController = new PlatformViewsController ();
250-
251- int platformViewId = 0 ;
252- assertNull (platformViewsController .getPlatformViewById (platformViewId ));
253-
254- PlatformViewFactory viewFactory = mock (PlatformViewFactory .class );
255- PlatformView platformView = mock (PlatformView .class );
256- when (platformView .getView ()).thenReturn (mock (View .class ));
257- when (viewFactory .create (any (), eq (platformViewId ), any ())).thenReturn (platformView );
258- platformViewsController .getRegistry ().registerViewFactory ("testType" , viewFactory );
259-
260- FlutterJNI jni = new FlutterJNI ();
261- attach (jni , platformViewsController );
262-
263- // Simulate create call from the framework.
264- createPlatformView (jni , platformViewsController , platformViewId , "testType" );
265- verify (platformView , times (1 )).getView ();
266- }
267-
268- @ Test
269- @ Config (shadows = {ShadowFlutterJNI .class })
270- public void createPlatformViewMessage__throwsIfViewIsNull () {
245+ public void initializePlatformViewIfNeeded__throwsIfViewIsNull () {
271246 PlatformViewsController platformViewsController = new PlatformViewsController ();
272247
273248 int platformViewId = 0 ;
@@ -284,28 +259,22 @@ public void createPlatformViewMessage__throwsIfViewIsNull() {
284259
285260 // Simulate create call from the framework.
286261 createPlatformView (jni , platformViewsController , platformViewId , "testType" );
287- assertEquals (ShadowFlutterJNI .getResponses ().size (), 1 );
288262
289- final ByteBuffer responseBuffer = ShadowFlutterJNI .getResponses ().get (0 );
290- responseBuffer .rewind ();
291-
292- StandardMethodCodec methodCodec = new StandardMethodCodec (new StandardMessageCodec ());
293263 try {
294- methodCodec .decodeEnvelope (responseBuffer );
295- } catch (FlutterException exception ) {
296- assertTrue (
297- exception
298- .getMessage ()
299- .contains (
300- "PlatformView#getView() returned null, but an Android view reference was expected." ));
264+ platformViewsController .initializePlatformViewIfNeeded (platformViewId );
265+ } catch (Exception exception ) {
266+ assertTrue (exception instanceof IllegalStateException );
267+ assertEquals (
268+ exception .getMessage (),
269+ "PlatformView#getView() returned null, but an Android view reference was expected." );
301270 return ;
302271 }
303- assertFalse ( true );
272+ assertTrue ( false );
304273 }
305274
306275 @ Test
307276 @ Config (shadows = {ShadowFlutterJNI .class })
308- public void createPlatformViewMessage__throwsIfViewHasParent () {
277+ public void initializePlatformViewIfNeeded__throwsIfViewHasParent () {
309278 PlatformViewsController platformViewsController = new PlatformViewsController ();
310279
311280 int platformViewId = 0 ;
@@ -324,23 +293,16 @@ public void createPlatformViewMessage__throwsIfViewHasParent() {
324293
325294 // Simulate create call from the framework.
326295 createPlatformView (jni , platformViewsController , platformViewId , "testType" );
327- assertEquals (ShadowFlutterJNI .getResponses ().size (), 1 );
328-
329- final ByteBuffer responseBuffer = ShadowFlutterJNI .getResponses ().get (0 );
330- responseBuffer .rewind ();
331-
332- StandardMethodCodec methodCodec = new StandardMethodCodec (new StandardMessageCodec ());
333296 try {
334- methodCodec .decodeEnvelope (responseBuffer );
335- } catch (FlutterException exception ) {
336- assertTrue (
337- exception
338- .getMessage ()
339- .contains (
340- "The Android view returned from PlatformView#getView() was already added to a parent view." ));
297+ platformViewsController .initializePlatformViewIfNeeded (platformViewId );
298+ } catch (Exception exception ) {
299+ assertTrue (exception instanceof IllegalStateException );
300+ assertEquals (
301+ exception .getMessage (),
302+ "The Android view returned from PlatformView#getView() was already added to a parent view." );
341303 return ;
342304 }
343- assertFalse ( true );
305+ assertTrue ( false );
344306 }
345307
346308 @ Test
@@ -519,7 +481,6 @@ public FlutterImageView createImageView() {
519481
520482 @ Implements (FlutterJNI .class )
521483 public static class ShadowFlutterJNI {
522- private static SparseArray <ByteBuffer > replies = new SparseArray <>();
523484
524485 public ShadowFlutterJNI () {}
525486
@@ -566,13 +527,7 @@ public void setViewportMetrics(
566527
567528 @ Implementation
568529 public void invokePlatformMessageResponseCallback (
569- int responseId , ByteBuffer message , int position ) {
570- replies .put (responseId , message );
571- }
572-
573- public static SparseArray <ByteBuffer > getResponses () {
574- return replies ;
575- }
530+ int responseId , ByteBuffer message , int position ) {}
576531 }
577532
578533 @ Implements (SurfaceView .class )
0 commit comments