Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Package Functions | List of all members
io.flutter.embedding.engine.renderer.FlutterRendererTest Class Reference

Public Member Functions

void init ()
 
void setup ()
 
void itForwardsSurfaceCreationNotificationToFlutterJNI ()
 
void itForwardsSurfaceChangeNotificationToFlutterJNI ()
 
void itForwardsSurfaceDestructionNotificationToFlutterJNI ()
 
void itStopsRenderingToOneSurfaceBeforeRenderingToANewSurface ()
 
void itStopsRenderingToSurfaceWhenRequested ()
 
void iStopsRenderingToSurfaceWhenSurfaceAlreadySet ()
 
void itNeverStopsRenderingToSurfaceWhenRequested ()
 
void itStopsSurfaceTextureCallbackWhenDetached ()
 
void itRegistersExistingSurfaceTexture ()
 
void itUnregistersTextureWhenSurfaceTextureFinalized ()
 
void itStopsUnregisteringTextureWhenDetached ()
 
void itConvertsDisplayFeatureArrayToPrimitiveArrays ()
 
void itNotifyImageFrameListener ()
 
void itAddsListenerWhenSurfaceTextureEntryCreated ()
 
void itRemovesListenerWhenSurfaceTextureEntryReleased ()
 
void itNotifySurfaceTextureEntryWhenMemoryPressureWarning ()
 
void itDoesDispatchSurfaceDestructionNotificationOnlyOnce ()
 
void itInvokesCreatesSurfaceWhenStartingRendering ()
 
void itDoesNotInvokeCreatesSurfaceWhenResumingRendering ()
 
void ImageReaderSurfaceProducerProducesImageOfCorrectSize ()
 
void ImageReaderSurfaceProducerDoesNotDropFramesWhenResizeInflight ()
 
void ImageReaderSurfaceProducerImageReadersAndImagesCount ()
 
void ImageReaderSurfaceProducerTrimMemoryCallback ()
 
void ImageReaderSurfaceProducerClampsWidthAndHeightTo1 ()
 
void SurfaceTextureSurfaceProducerCreatesAConnectedTexture ()
 

Package Functions

void runFinalization (FlutterRenderer.SurfaceTextureRegistryEntry entry)
 

Detailed Description

Definition at line 39 of file FlutterRendererTest.java.

Member Function Documentation

◆ ImageReaderSurfaceProducerClampsWidthAndHeightTo1()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.ImageReaderSurfaceProducerClampsWidthAndHeightTo1 ( )
inline

Definition at line 661 of file FlutterRendererTest.java.

661 {
662 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
663 FlutterRenderer.ImageReaderSurfaceProducer texture =
664 flutterRenderer.new ImageReaderSurfaceProducer(0);
665
666 // Default values.
667 assertEquals(texture.getWidth(), 1);
668 assertEquals(texture.getHeight(), 1);
669
670 // Try setting width and height to 0.
671 texture.setSize(0, 0);
672
673 // Ensure we can still create/get a surface without an exception being raised.
674 assertNotNull(texture.getSurface());
675
676 // Expect clamp to 1.
677 assertEquals(texture.getWidth(), 1);
678 assertEquals(texture.getHeight(), 1);
679 }
FlTexture * texture

◆ ImageReaderSurfaceProducerDoesNotDropFramesWhenResizeInflight()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.ImageReaderSurfaceProducerDoesNotDropFramesWhenResizeInflight ( )
inline

Definition at line 513 of file FlutterRendererTest.java.

513 {
514 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
515 FlutterRenderer.ImageReaderSurfaceProducer texture =
516 flutterRenderer.new ImageReaderSurfaceProducer(0);
517 texture.disableFenceForTest();
518
519 // Returns a null image when one hasn't been produced.
520 assertNull(texture.acquireLatestImage());
521
522 // Give the texture an initial size.
523 texture.setSize(1, 1);
524
525 // Render a frame.
526 Surface surface = texture.getSurface();
527 assertNotNull(surface);
528 Canvas canvas = surface.lockHardwareCanvas();
529 canvas.drawARGB(255, 255, 0, 0);
530 surface.unlockCanvasAndPost(canvas);
531
532 // Resize.
533 texture.setSize(4, 4);
534
535 // Let callbacks run. The rendered frame will manifest here.
536 shadowOf(Looper.getMainLooper()).idle();
537
538 // We acquired the frame produced above.
539 assertNotNull(texture.acquireLatestImage());
540 }
VkSurfaceKHR surface
Definition main.cc:49

◆ ImageReaderSurfaceProducerImageReadersAndImagesCount()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.ImageReaderSurfaceProducerImageReadersAndImagesCount ( )
inline

Definition at line 543 of file FlutterRendererTest.java.

543 {
544 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
545 FlutterRenderer.ImageReaderSurfaceProducer texture =
546 flutterRenderer.new ImageReaderSurfaceProducer(0);
547 texture.disableFenceForTest();
548
549 // Returns a null image when one hasn't been produced.
550 assertNull(texture.acquireLatestImage());
551
552 // Give the texture an initial size.
553 texture.setSize(1, 1);
554
555 // Grab the surface so we can render a frame at 1x1 after resizing.
556 Surface surface = texture.getSurface();
557 assertNotNull(surface);
558 Canvas canvas = surface.lockHardwareCanvas();
559 canvas.drawARGB(255, 255, 0, 0);
560 surface.unlockCanvasAndPost(canvas);
561
562 // Let callbacks run, this will produce a single frame.
563 shadowOf(Looper.getMainLooper()).idle();
564
565 assertEquals(1, texture.numImageReaders());
566 assertEquals(1, texture.numImages());
567
568 // Resize.
569 texture.setSize(4, 4);
570
571 // Render a frame at the old size (by using the pre-resized Surface)
572 canvas = surface.lockHardwareCanvas();
573 canvas.drawARGB(255, 255, 0, 0);
574 surface.unlockCanvasAndPost(canvas);
575
576 // Let callbacks run.
577 shadowOf(Looper.getMainLooper()).idle();
578
579 assertEquals(1, texture.numImageReaders());
580 assertEquals(2, texture.numImages());
581
582 // Render a new frame with the current size.
583 surface = texture.getSurface();
584 assertNotNull(surface);
585 canvas = surface.lockHardwareCanvas();
586 canvas.drawARGB(255, 255, 0, 0);
587 surface.unlockCanvasAndPost(canvas);
588
589 // Let callbacks run.
590 shadowOf(Looper.getMainLooper()).idle();
591
592 assertEquals(2, texture.numImageReaders());
593 assertEquals(3, texture.numImages());
594
595 // Acquire first frame.
596 Image produced = texture.acquireLatestImage();
597 assertNotNull(produced);
598 assertEquals(1, produced.getWidth());
599 assertEquals(1, produced.getHeight());
600 assertEquals(2, texture.numImageReaders());
601 assertEquals(2, texture.numImages());
602 // Acquire second frame. This won't result in the first reader being closed because it has
603 // an active image from it.
604 produced = texture.acquireLatestImage();
605 assertNotNull(produced);
606 assertEquals(1, produced.getWidth());
607 assertEquals(1, produced.getHeight());
608 assertEquals(2, texture.numImageReaders());
609 assertEquals(1, texture.numImages());
610 // Acquire third frame. We will now close the first reader.
611 produced = texture.acquireLatestImage();
612 assertNotNull(produced);
613 assertEquals(4, produced.getWidth());
614 assertEquals(4, produced.getHeight());
615 assertEquals(1, texture.numImageReaders());
616 assertEquals(0, texture.numImages());
617
618 // Returns null image when no more images are queued.
619 assertNull(texture.acquireLatestImage());
620 assertEquals(1, texture.numImageReaders());
621 assertEquals(0, texture.numImages());
622 }
CanvasImage Image
Definition dart_ui.cc:55

◆ ImageReaderSurfaceProducerProducesImageOfCorrectSize()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.ImageReaderSurfaceProducerProducesImageOfCorrectSize ( )
inline

Definition at line 460 of file FlutterRendererTest.java.

460 {
461 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
462 FlutterRenderer.ImageReaderSurfaceProducer texture =
463 flutterRenderer.new ImageReaderSurfaceProducer(0);
464 texture.disableFenceForTest();
465
466 // Returns a null image when one hasn't been produced.
467 assertNull(texture.acquireLatestImage());
468
469 // Give the texture an initial size.
470 texture.setSize(1, 1);
471
472 // Render a frame.
473 Surface surface = texture.getSurface();
474 assertNotNull(surface);
475 Canvas canvas = surface.lockHardwareCanvas();
476 canvas.drawARGB(255, 255, 0, 0);
477 surface.unlockCanvasAndPost(canvas);
478
479 // Let callbacks run.
480 shadowOf(Looper.getMainLooper()).idle();
481
482 // Extract the image and check its size.
483 Image image = texture.acquireLatestImage();
484 assertEquals(1, image.getWidth());
485 assertEquals(1, image.getHeight());
486 image.close();
487
488 // Resize the texture.
489 texture.setSize(5, 5);
490
491 // Render a frame.
492 surface = texture.getSurface();
493 assertNotNull(surface);
494 canvas = surface.lockHardwareCanvas();
495 canvas.drawARGB(255, 255, 0, 0);
496 surface.unlockCanvasAndPost(canvas);
497
498 // Let callbacks run.
499 shadowOf(Looper.getMainLooper()).idle();
500
501 // Extract the image and check its size.
502 image = texture.acquireLatestImage();
503 assertEquals(5, image.getWidth());
504 assertEquals(5, image.getHeight());
505 image.close();
506
507 assertNull(texture.acquireLatestImage());
508
509 texture.release();
510 }
sk_sp< SkImage > image
Definition examples.cpp:29

◆ ImageReaderSurfaceProducerTrimMemoryCallback()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.ImageReaderSurfaceProducerTrimMemoryCallback ( )
inline

Definition at line 625 of file FlutterRendererTest.java.

625 {
626 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
627 FlutterRenderer.ImageReaderSurfaceProducer texture =
628 flutterRenderer.new ImageReaderSurfaceProducer(0);
629 texture.disableFenceForTest();
630
631 // Returns a null image when one hasn't been produced.
632 assertNull(texture.acquireLatestImage());
633
634 // Give the texture an initial size.
635 texture.setSize(1, 1);
636
637 // Grab the surface so we can render a frame at 1x1 after resizing.
638 Surface surface = texture.getSurface();
639 assertNotNull(surface);
640 Canvas canvas = surface.lockHardwareCanvas();
641 canvas.drawARGB(255, 255, 0, 0);
642 surface.unlockCanvasAndPost(canvas);
643
644 // Let callbacks run, this will produce a single frame.
645 shadowOf(Looper.getMainLooper()).idle();
646
647 assertEquals(1, texture.numImageReaders());
648 assertEquals(1, texture.numImages());
649
650 // Invoke the onTrimMemory callback.
651 // This should do nothing.
652 texture.onTrimMemory(0);
653 shadowOf(Looper.getMainLooper()).idle();
654
655 assertEquals(1, texture.numImageReaders());
656 assertEquals(1, texture.numImages());
657 }

◆ init()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.init ( )
inline

Definition at line 46 of file FlutterRendererTest.java.

46 {
47 // Uncomment the following line to enable logging output in test.
48 // ShadowLog.stream = System.out;
49 }

◆ iStopsRenderingToSurfaceWhenSurfaceAlreadySet()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.iStopsRenderingToSurfaceWhenSurfaceAlreadySet ( )
inline

Definition at line 131 of file FlutterRendererTest.java.

131 {
132 // Setup the test.
133 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
134
135 flutterRenderer.startRenderingToSurface(fakeSurface, false);
136
137 flutterRenderer.startRenderingToSurface(fakeSurface, false);
138
139 // Verify behavior under test.
140 verify(fakeFlutterJNI, times(1)).onSurfaceDestroyed();
141 }
static SkISize times(const SkISize &size, float factor)

◆ itAddsListenerWhenSurfaceTextureEntryCreated()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itAddsListenerWhenSurfaceTextureEntryCreated ( )
inline

Definition at line 358 of file FlutterRendererTest.java.

358 {
359 // Setup the test.
360 FlutterRenderer flutterRenderer = spy(new FlutterRenderer(fakeFlutterJNI));
361
362 // Execute the behavior under test.
363 FlutterRenderer.SurfaceTextureRegistryEntry entry =
364 (FlutterRenderer.SurfaceTextureRegistryEntry) flutterRenderer.createSurfaceTexture();
365
366 // Verify behavior under test.
367 verify(flutterRenderer, times(1)).addOnTrimMemoryListener(entry);
368 }

◆ itConvertsDisplayFeatureArrayToPrimitiveArrays()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itConvertsDisplayFeatureArrayToPrimitiveArrays ( )
inline

Definition at line 272 of file FlutterRendererTest.java.

272 {
273 // Setup the test.
274 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
275 FlutterRenderer.ViewportMetrics metrics = new FlutterRenderer.ViewportMetrics();
276 metrics.width = 1000;
277 metrics.height = 1000;
278 metrics.devicePixelRatio = 2;
279 metrics.displayFeatures.add(
280 new FlutterRenderer.DisplayFeature(
281 new Rect(10, 20, 30, 40),
282 FlutterRenderer.DisplayFeatureType.FOLD,
283 FlutterRenderer.DisplayFeatureState.POSTURE_HALF_OPENED));
284 metrics.displayFeatures.add(
285 new FlutterRenderer.DisplayFeature(
286 new Rect(50, 60, 70, 80), FlutterRenderer.DisplayFeatureType.CUTOUT));
287
288 // Execute the behavior under test.
289 flutterRenderer.setViewportMetrics(metrics);
290
291 // Verify behavior under test.
292 ArgumentCaptor<int[]> boundsCaptor = ArgumentCaptor.forClass(int[].class);
293 ArgumentCaptor<int[]> typeCaptor = ArgumentCaptor.forClass(int[].class);
294 ArgumentCaptor<int[]> stateCaptor = ArgumentCaptor.forClass(int[].class);
295 verify(fakeFlutterJNI)
296 .setViewportMetrics(
297 anyFloat(),
298 anyInt(),
299 anyInt(),
300 anyInt(),
301 anyInt(),
302 anyInt(),
303 anyInt(),
304 anyInt(),
305 anyInt(),
306 anyInt(),
307 anyInt(),
308 anyInt(),
309 anyInt(),
310 anyInt(),
311 anyInt(),
312 anyInt(),
313 boundsCaptor.capture(),
314 typeCaptor.capture(),
315 stateCaptor.capture());
316
317 assertArrayEquals(new int[] {10, 20, 30, 40, 50, 60, 70, 80}, boundsCaptor.getValue());
318 assertArrayEquals(
319 new int[] {
320 FlutterRenderer.DisplayFeatureType.FOLD.encodedValue,
321 FlutterRenderer.DisplayFeatureType.CUTOUT.encodedValue
322 },
323 typeCaptor.getValue());
324 assertArrayEquals(
325 new int[] {
326 FlutterRenderer.DisplayFeatureState.POSTURE_HALF_OPENED.encodedValue,
327 FlutterRenderer.DisplayFeatureState.UNKNOWN.encodedValue
328 },
329 stateCaptor.getValue());
330 }
TRect< Scalar > Rect
Definition rect.h:746

◆ itDoesDispatchSurfaceDestructionNotificationOnlyOnce()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itDoesDispatchSurfaceDestructionNotificationOnlyOnce ( )
inline

Definition at line 410 of file FlutterRendererTest.java.

410 {
411 // Setup the test.
412 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
413
414 flutterRenderer.startRenderingToSurface(fakeSurface, false);
415
416 // Execute the behavior under test.
417 // Simulate calling |FlutterRenderer#stopRenderingToSurface| twice with different code paths.
418 flutterRenderer.stopRenderingToSurface();
419 flutterRenderer.stopRenderingToSurface();
420
421 // Verify behavior under test.
422 verify(fakeFlutterJNI, times(1)).onSurfaceDestroyed();
423 }

◆ itDoesNotInvokeCreatesSurfaceWhenResumingRendering()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itDoesNotInvokeCreatesSurfaceWhenResumingRendering ( )
inline

Definition at line 434 of file FlutterRendererTest.java.

434 {
435 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
436
437 // The following call sequence mimics the behaviour of FlutterView when it exits from hybrid
438 // composition mode.
439
440 // Install initial rendering surface.
441 flutterRenderer.startRenderingToSurface(fakeSurface, false);
442 verify(fakeFlutterJNI, times(1)).onSurfaceCreated(eq(fakeSurface));
443 verify(fakeFlutterJNI, times(0)).onSurfaceWindowChanged(eq(fakeSurface));
444
445 // Install the image view.
446 flutterRenderer.startRenderingToSurface(fakeSurface2, true);
447 verify(fakeFlutterJNI, times(1)).onSurfaceCreated(eq(fakeSurface));
448 verify(fakeFlutterJNI, times(0)).onSurfaceWindowChanged(eq(fakeSurface));
449 verify(fakeFlutterJNI, times(0)).onSurfaceCreated(eq(fakeSurface2));
450 verify(fakeFlutterJNI, times(1)).onSurfaceWindowChanged(eq(fakeSurface2));
451
452 flutterRenderer.startRenderingToSurface(fakeSurface, true);
453 verify(fakeFlutterJNI, times(1)).onSurfaceCreated(eq(fakeSurface));
454 verify(fakeFlutterJNI, times(1)).onSurfaceWindowChanged(eq(fakeSurface));
455 verify(fakeFlutterJNI, times(0)).onSurfaceCreated(eq(fakeSurface2));
456 verify(fakeFlutterJNI, times(1)).onSurfaceWindowChanged(eq(fakeSurface2));
457 }
static bool eq(const SkM44 &a, const SkM44 &b, float tol)
Definition M44Test.cpp:18

◆ itForwardsSurfaceChangeNotificationToFlutterJNI()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itForwardsSurfaceChangeNotificationToFlutterJNI ( )
inline

Definition at line 72 of file FlutterRendererTest.java.

72 {
73 // Setup the test.
74 Surface fakeSurface = mock(Surface.class);
75 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
76
77 flutterRenderer.startRenderingToSurface(fakeSurface, false);
78
79 // Execute the behavior under test.
80 flutterRenderer.surfaceChanged(100, 50);
81
82 // Verify the behavior under test.
83 verify(fakeFlutterJNI, times(1)).onSurfaceChanged(eq(100), eq(50));
84 }

◆ itForwardsSurfaceCreationNotificationToFlutterJNI()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itForwardsSurfaceCreationNotificationToFlutterJNI ( )
inline

Definition at line 59 of file FlutterRendererTest.java.

59 {
60 // Setup the test.
61 Surface fakeSurface = mock(Surface.class);
62 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
63
64 // Execute the behavior under test.
65 flutterRenderer.startRenderingToSurface(fakeSurface, false);
66
67 // Verify the behavior under test.
68 verify(fakeFlutterJNI, times(1)).onSurfaceCreated(eq(fakeSurface));
69 }

◆ itForwardsSurfaceDestructionNotificationToFlutterJNI()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itForwardsSurfaceDestructionNotificationToFlutterJNI ( )
inline

Definition at line 87 of file FlutterRendererTest.java.

87 {
88 // Setup the test.
89 Surface fakeSurface = mock(Surface.class);
90 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
91
92 flutterRenderer.startRenderingToSurface(fakeSurface, false);
93
94 // Execute the behavior under test.
95 flutterRenderer.stopRenderingToSurface();
96
97 // Verify the behavior under test.
98 verify(fakeFlutterJNI, times(1)).onSurfaceDestroyed();
99 }

◆ itInvokesCreatesSurfaceWhenStartingRendering()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itInvokesCreatesSurfaceWhenStartingRendering ( )
inline

Definition at line 426 of file FlutterRendererTest.java.

426 {
427 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
428
429 flutterRenderer.startRenderingToSurface(fakeSurface, false);
430 verify(fakeFlutterJNI, times(1)).onSurfaceCreated(eq(fakeSurface));
431 }

◆ itNeverStopsRenderingToSurfaceWhenRequested()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itNeverStopsRenderingToSurfaceWhenRequested ( )
inline

Definition at line 144 of file FlutterRendererTest.java.

144 {
145 // Setup the test.
146 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
147
148 flutterRenderer.startRenderingToSurface(fakeSurface, false);
149
150 flutterRenderer.startRenderingToSurface(fakeSurface, true);
151
152 // Verify behavior under test.
153 verify(fakeFlutterJNI, never()).onSurfaceDestroyed();
154 }

◆ itNotifyImageFrameListener()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itNotifyImageFrameListener ( )
inline

Definition at line 333 of file FlutterRendererTest.java.

333 {
334 // Setup the test.
335 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
336
337 AtomicInteger invocationCount = new AtomicInteger(0);
338 final TextureRegistry.OnFrameConsumedListener listener =
339 new TextureRegistry.OnFrameConsumedListener() {
340 @Override
341 public void onFrameConsumed() {
342 invocationCount.incrementAndGet();
343 }
344 };
345
346 FlutterRenderer.SurfaceTextureRegistryEntry entry =
347 (FlutterRenderer.SurfaceTextureRegistryEntry) flutterRenderer.createSurfaceTexture();
348 entry.setOnFrameConsumedListener(listener);
349
350 // Execute the behavior under test.
351 entry.textureWrapper().updateTexImage();
352
353 // Verify behavior under test.
354 assertEquals(1, invocationCount.get());
355 }

◆ itNotifySurfaceTextureEntryWhenMemoryPressureWarning()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itNotifySurfaceTextureEntryWhenMemoryPressureWarning ( )
inline

Definition at line 385 of file FlutterRendererTest.java.

385 {
386 // Setup the test.
387 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
388
389 AtomicInteger invocationCount = new AtomicInteger(0);
390 final TextureRegistry.OnTrimMemoryListener listener =
391 new TextureRegistry.OnTrimMemoryListener() {
392 @Override
393 public void onTrimMemory(int level) {
394 invocationCount.incrementAndGet();
395 }
396 };
397
398 FlutterRenderer.SurfaceTextureRegistryEntry entry =
399 (FlutterRenderer.SurfaceTextureRegistryEntry) flutterRenderer.createSurfaceTexture();
400 entry.setOnTrimMemoryListener(listener);
401
402 // Execute the behavior under test.
403 flutterRenderer.onTrimMemory(TRIM_MEMORY_COMPLETE);
404
405 // Verify behavior under test.
406 assertEquals(1, invocationCount.get());
407 }

◆ itRegistersExistingSurfaceTexture()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itRegistersExistingSurfaceTexture ( )
inline

Definition at line 176 of file FlutterRendererTest.java.

176 {
177 // Setup the test.
178 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
179
181
182 SurfaceTexture surfaceTexture = new SurfaceTexture(0);
183
184 // Execute the behavior under test.
185 FlutterRenderer.SurfaceTextureRegistryEntry entry =
186 (FlutterRenderer.SurfaceTextureRegistryEntry)
187 flutterRenderer.registerSurfaceTexture(surfaceTexture);
188
189 flutterRenderer.startRenderingToSurface(fakeSurface, false);
190
191 // Verify behavior under test.
192 assertEquals(surfaceTexture, entry.surfaceTexture());
193
194 verify(fakeFlutterJNI, times(1)).registerTexture(eq(entry.id()), eq(entry.textureWrapper()));
195 }

◆ itRemovesListenerWhenSurfaceTextureEntryReleased()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itRemovesListenerWhenSurfaceTextureEntryReleased ( )
inline

Definition at line 371 of file FlutterRendererTest.java.

371 {
372 // Setup the test.
373 FlutterRenderer flutterRenderer = spy(new FlutterRenderer(fakeFlutterJNI));
374 FlutterRenderer.SurfaceTextureRegistryEntry entry =
375 (FlutterRenderer.SurfaceTextureRegistryEntry) flutterRenderer.createSurfaceTexture();
376
377 // Execute the behavior under test.
378 entry.release();
379
380 // Verify behavior under test.
381 verify(flutterRenderer, times(1)).removeOnTrimMemoryListener(entry);
382 }

◆ itStopsRenderingToOneSurfaceBeforeRenderingToANewSurface()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itStopsRenderingToOneSurfaceBeforeRenderingToANewSurface ( )
inline

Definition at line 102 of file FlutterRendererTest.java.

102 {
103 // Setup the test.
104 Surface fakeSurface2 = mock(Surface.class);
105 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
106
107 flutterRenderer.startRenderingToSurface(fakeSurface, false);
108
109 // Execute behavior under test.
110 flutterRenderer.startRenderingToSurface(fakeSurface2, false);
111
112 // Verify behavior under test.
113 verify(fakeFlutterJNI, times(1)).onSurfaceDestroyed(); // notification of 1st surface's removal.
114 }

◆ itStopsRenderingToSurfaceWhenRequested()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itStopsRenderingToSurfaceWhenRequested ( )
inline

Definition at line 117 of file FlutterRendererTest.java.

117 {
118 // Setup the test.
119 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
120
121 flutterRenderer.startRenderingToSurface(fakeSurface, false);
122
123 // Execute the behavior under test.
124 flutterRenderer.stopRenderingToSurface();
125
126 // Verify behavior under test.
127 verify(fakeFlutterJNI, times(1)).onSurfaceDestroyed();
128 }

◆ itStopsSurfaceTextureCallbackWhenDetached()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itStopsSurfaceTextureCallbackWhenDetached ( )
inline

Definition at line 157 of file FlutterRendererTest.java.

157 {
158 // Setup the test.
159 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
160
162
163 FlutterRenderer.SurfaceTextureRegistryEntry entry =
164 (FlutterRenderer.SurfaceTextureRegistryEntry) flutterRenderer.createSurfaceTexture();
165
166 flutterRenderer.startRenderingToSurface(fakeSurface, false);
167
168 // Execute the behavior under test.
169 flutterRenderer.stopRenderingToSurface();
170
171 // Verify behavior under test.
172 verify(fakeFlutterJNI, times(0)).markTextureFrameAvailable(eq(entry.id()));
173 }

◆ itStopsUnregisteringTextureWhenDetached()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itStopsUnregisteringTextureWhenDetached ( )
inline

Definition at line 224 of file FlutterRendererTest.java.

224 {
225 // Setup the test.
226 FlutterJNI fakeFlutterJNI = mock(FlutterJNI.class);
227 when(fakeFlutterJNI.isAttached()).thenReturn(false);
228 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
229
230 fakeFlutterJNI.detachFromNativeAndReleaseResources();
231
232 FlutterRenderer.SurfaceTextureRegistryEntry entry =
233 (FlutterRenderer.SurfaceTextureRegistryEntry) flutterRenderer.createSurfaceTexture();
234 long id = entry.id();
235
236 flutterRenderer.startRenderingToSurface(fakeSurface, false);
237
238 flutterRenderer.stopRenderingToSurface();
239
240 // Execute the behavior under test.
241 runFinalization(entry);
242
243 shadowOf(Looper.getMainLooper()).idle();
244
245 // Verify behavior under test.
246 verify(fakeFlutterJNI, times(0)).unregisterTexture(eq(id));
247 }
void runFinalization(FlutterRenderer.SurfaceTextureRegistryEntry entry)

◆ itUnregistersTextureWhenSurfaceTextureFinalized()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.itUnregistersTextureWhenSurfaceTextureFinalized ( )
inline

Definition at line 198 of file FlutterRendererTest.java.

198 {
199 // Setup the test.
200 FlutterJNI fakeFlutterJNI = mock(FlutterJNI.class);
201 when(fakeFlutterJNI.isAttached()).thenReturn(true);
202 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
203
204 fakeFlutterJNI.detachFromNativeAndReleaseResources();
205
206 FlutterRenderer.SurfaceTextureRegistryEntry entry =
207 (FlutterRenderer.SurfaceTextureRegistryEntry) flutterRenderer.createSurfaceTexture();
208 long id = entry.id();
209
210 flutterRenderer.startRenderingToSurface(fakeSurface, false);
211
212 // Execute the behavior under test.
213 runFinalization(entry);
214
215 shadowOf(Looper.getMainLooper()).idle();
216
217 flutterRenderer.stopRenderingToSurface();
218
219 // Verify behavior under test.
220 verify(fakeFlutterJNI, times(1)).unregisterTexture(eq(id));
221 }

◆ runFinalization()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.runFinalization ( FlutterRenderer.SurfaceTextureRegistryEntry  entry)
inlinepackage

Definition at line 249 of file FlutterRendererTest.java.

249 {
250 CountDownLatch latch = new CountDownLatch(1);
251 Thread fakeFinalizer =
252 new Thread(
253 new Runnable() {
254 public void run() {
255 try {
256 entry.finalize();
257 latch.countDown();
258 } catch (Throwable e) {
259 // do nothing
260 }
261 }
262 });
263 fakeFinalizer.start();
264 try {
265 latch.await();
266 } catch (InterruptedException e) {
267 // do nothing
268 }
269 }
Definition run.py:1

◆ setup()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.setup ( )
inline

Definition at line 52 of file FlutterRendererTest.java.

52 {
53 fakeFlutterJNI = mock(FlutterJNI.class);
54 fakeSurface = mock(Surface.class);
55 fakeSurface2 = mock(Surface.class);
56 }

◆ SurfaceTextureSurfaceProducerCreatesAConnectedTexture()

void io.flutter.embedding.engine.renderer.FlutterRendererTest.SurfaceTextureSurfaceProducerCreatesAConnectedTexture ( )
inline

Definition at line 682 of file FlutterRendererTest.java.

682 {
683 // Force creating a SurfaceTextureSurfaceProducer regardless of Android API version.
684 FlutterRenderer.debugForceSurfaceProducerGlTextures = true;
685
686 FlutterRenderer flutterRenderer = new FlutterRenderer(fakeFlutterJNI);
687 TextureRegistry.SurfaceProducer producer = flutterRenderer.createSurfaceProducer();
688
689 flutterRenderer.startRenderingToSurface(fakeSurface, false);
690
691 // Verify behavior under test.
692 assertEquals(producer.id(), 0);
693 verify(fakeFlutterJNI, times(1)).registerTexture(eq(producer.id()), any());
694 }
SIT bool any(const Vec< 1, T > &x)
Definition SkVx.h:530

The documentation for this class was generated from the following file: