66import static org .mockito .ArgumentMatchers .anyInt ;
77import static org .mockito .ArgumentMatchers .eq ;
88import static org .mockito .Mockito .mock ;
9+ import static org .mockito .Mockito .never ;
910import static org .mockito .Mockito .times ;
1011import static org .mockito .Mockito .verify ;
1112import static org .mockito .Mockito .when ;
@@ -45,7 +46,7 @@ public void itForwardsSurfaceCreationNotificationToFlutterJNI() {
4546 FlutterRenderer flutterRenderer = new FlutterRenderer (fakeFlutterJNI );
4647
4748 // Execute the behavior under test.
48- flutterRenderer .startRenderingToSurface (fakeSurface );
49+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
4950
5051 // Verify the behavior under test.
5152 verify (fakeFlutterJNI , times (1 )).onSurfaceCreated (eq (fakeSurface ));
@@ -57,7 +58,7 @@ public void itForwardsSurfaceChangeNotificationToFlutterJNI() {
5758 Surface fakeSurface = mock (Surface .class );
5859 FlutterRenderer flutterRenderer = new FlutterRenderer (fakeFlutterJNI );
5960
60- flutterRenderer .startRenderingToSurface (fakeSurface );
61+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
6162
6263 // Execute the behavior under test.
6364 flutterRenderer .surfaceChanged (100 , 50 );
@@ -72,7 +73,7 @@ public void itForwardsSurfaceDestructionNotificationToFlutterJNI() {
7273 Surface fakeSurface = mock (Surface .class );
7374 FlutterRenderer flutterRenderer = new FlutterRenderer (fakeFlutterJNI );
7475
75- flutterRenderer .startRenderingToSurface (fakeSurface );
76+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
7677
7778 // Execute the behavior under test.
7879 flutterRenderer .stopRenderingToSurface ();
@@ -87,10 +88,10 @@ public void itStopsRenderingToOneSurfaceBeforeRenderingToANewSurface() {
8788 Surface fakeSurface2 = mock (Surface .class );
8889 FlutterRenderer flutterRenderer = new FlutterRenderer (fakeFlutterJNI );
8990
90- flutterRenderer .startRenderingToSurface (fakeSurface );
91+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
9192
9293 // Execute behavior under test.
93- flutterRenderer .startRenderingToSurface (fakeSurface2 );
94+ flutterRenderer .startRenderingToSurface (fakeSurface2 , /*keepCurrentSurface=*/ false );
9495
9596 // Verify behavior under test.
9697 verify (fakeFlutterJNI , times (1 )).onSurfaceDestroyed (); // notification of 1st surface's removal.
@@ -101,7 +102,7 @@ public void itStopsRenderingToSurfaceWhenRequested() {
101102 // Setup the test.
102103 FlutterRenderer flutterRenderer = new FlutterRenderer (fakeFlutterJNI );
103104
104- flutterRenderer .startRenderingToSurface (fakeSurface );
105+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
105106
106107 // Execute the behavior under test.
107108 flutterRenderer .stopRenderingToSurface ();
@@ -110,6 +111,32 @@ public void itStopsRenderingToSurfaceWhenRequested() {
110111 verify (fakeFlutterJNI , times (1 )).onSurfaceDestroyed ();
111112 }
112113
114+ @ Test
115+ public void iStopsRenderingToSurfaceWhenSurfaceAlreadySet () {
116+ // Setup the test.
117+ FlutterRenderer flutterRenderer = new FlutterRenderer (fakeFlutterJNI );
118+
119+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
120+
121+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
122+
123+ // Verify behavior under test.
124+ verify (fakeFlutterJNI , times (1 )).onSurfaceDestroyed ();
125+ }
126+
127+ @ Test
128+ public void itNeverStopsRenderingToSurfaceWhenRequested () {
129+ // Setup the test.
130+ FlutterRenderer flutterRenderer = new FlutterRenderer (fakeFlutterJNI );
131+
132+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
133+
134+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ true );
135+
136+ // Verify behavior under test.
137+ verify (fakeFlutterJNI , never ()).onSurfaceDestroyed ();
138+ }
139+
113140 @ Test
114141 public void itStopsSurfaceTextureCallbackWhenDetached () {
115142 // Setup the test.
@@ -120,7 +147,7 @@ public void itStopsSurfaceTextureCallbackWhenDetached() {
120147 FlutterRenderer .SurfaceTextureRegistryEntry entry =
121148 (FlutterRenderer .SurfaceTextureRegistryEntry ) flutterRenderer .createSurfaceTexture ();
122149
123- flutterRenderer .startRenderingToSurface (fakeSurface );
150+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
124151
125152 // Execute the behavior under test.
126153 flutterRenderer .stopRenderingToSurface ();
@@ -143,7 +170,7 @@ public void itRegistersExistingSurfaceTexture() {
143170 (FlutterRenderer .SurfaceTextureRegistryEntry )
144171 flutterRenderer .registerSurfaceTexture (surfaceTexture );
145172
146- flutterRenderer .startRenderingToSurface (fakeSurface );
173+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
147174
148175 // Verify behavior under test.
149176 assertEquals (surfaceTexture , entry .surfaceTexture ());
@@ -164,7 +191,7 @@ public void itUnregistersTextureWhenSurfaceTextureFinalized() {
164191 (FlutterRenderer .SurfaceTextureRegistryEntry ) flutterRenderer .createSurfaceTexture ();
165192 long id = entry .id ();
166193
167- flutterRenderer .startRenderingToSurface (fakeSurface );
194+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
168195
169196 // Execute the behavior under test.
170197 runFinalization (entry );
@@ -190,7 +217,7 @@ public void itStopsUnregisteringTextureWhenDetached() {
190217 (FlutterRenderer .SurfaceTextureRegistryEntry ) flutterRenderer .createSurfaceTexture ();
191218 long id = entry .id ();
192219
193- flutterRenderer .startRenderingToSurface (fakeSurface );
220+ flutterRenderer .startRenderingToSurface (fakeSurface , /*keepCurrentSurface=*/ false );
194221
195222 flutterRenderer .stopRenderingToSurface ();
196223
0 commit comments