|
21 | 21 | import android.content.Intent; |
22 | 22 | import android.content.pm.ActivityInfo; |
23 | 23 | import android.content.pm.PackageManager; |
| 24 | +import android.os.Build; |
24 | 25 | import android.os.Bundle; |
25 | 26 | import androidx.annotation.NonNull; |
26 | 27 | import androidx.annotation.Nullable; |
@@ -438,6 +439,32 @@ public void itWithMetadataWithoutSplashScreenResourceKeyDoesNotProvideSplashScre |
438 | 439 | assertNull(splashScreen); |
439 | 440 | } |
440 | 441 |
|
| 442 | + @Test |
| 443 | + public void fullyDrawn() { |
| 444 | + Intent intent = |
| 445 | + FlutterActivityWithReportFullyDrawn.createDefaultIntent(RuntimeEnvironment.application); |
| 446 | + ActivityController<FlutterActivityWithReportFullyDrawn> activityController = |
| 447 | + Robolectric.buildActivity(FlutterActivityWithReportFullyDrawn.class, intent); |
| 448 | + FlutterActivityWithReportFullyDrawn flutterActivity = activityController.get(); |
| 449 | + |
| 450 | + // See https://github.com/flutter/flutter/issues/46172, and |
| 451 | + // https://github.com/flutter/flutter/issues/88767. |
| 452 | + for (int version = Build.VERSION_CODES.JELLY_BEAN; version < Build.VERSION_CODES.Q; version++) { |
| 453 | + TestUtils.setApiVersion(version); |
| 454 | + flutterActivity.onFlutterUiDisplayed(); |
| 455 | + assertFalse( |
| 456 | + "reportFullyDrawn isn't used in API level " + version, flutterActivity.isFullyDrawn()); |
| 457 | + } |
| 458 | + |
| 459 | + for (int version = Build.VERSION_CODES.Q; version < Build.VERSION_CODES.S; version++) { |
| 460 | + TestUtils.setApiVersion(version); |
| 461 | + flutterActivity.onFlutterUiDisplayed(); |
| 462 | + assertTrue( |
| 463 | + "reportFullyDrawn is used in API level " + version, flutterActivity.isFullyDrawn()); |
| 464 | + flutterActivity.resetFullyDrawn(); |
| 465 | + } |
| 466 | + } |
| 467 | + |
441 | 468 | static class FlutterActivityWithProvidedEngine extends FlutterActivity { |
442 | 469 | @Override |
443 | 470 | @SuppressLint("MissingSuperCall") |
@@ -478,6 +505,23 @@ public RenderMode getRenderMode() { |
478 | 505 | } |
479 | 506 | } |
480 | 507 |
|
| 508 | + private static class FlutterActivityWithReportFullyDrawn extends FlutterActivity { |
| 509 | + private boolean fullyDrawn = false; |
| 510 | + |
| 511 | + @Override |
| 512 | + public void reportFullyDrawn() { |
| 513 | + fullyDrawn = true; |
| 514 | + } |
| 515 | + |
| 516 | + public boolean isFullyDrawn() { |
| 517 | + return fullyDrawn; |
| 518 | + } |
| 519 | + |
| 520 | + public void resetFullyDrawn() { |
| 521 | + fullyDrawn = false; |
| 522 | + } |
| 523 | + } |
| 524 | + |
481 | 525 | private static final class FakeFlutterPlugin |
482 | 526 | implements FlutterPlugin, |
483 | 527 | ActivityAware, |
|
0 commit comments