Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 3dce983

Browse files
author
Emmanuel Garcia
authored
Don't use rFD in pre-Q versions (#28593)
1 parent f52653b commit 3dce983

File tree

2 files changed

+51
-4
lines changed

2 files changed

+51
-4
lines changed

shell/platform/android/io/flutter/embedding/android/FlutterActivity.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,10 +1093,13 @@ public void onFlutterTextureViewCreated(@NonNull FlutterTextureView flutterTextu
10931093
@Override
10941094
public void onFlutterUiDisplayed() {
10951095
// Notifies Android that we're fully drawn so that performance metrics can be collected by
1096-
// Flutter performance tests.
1097-
// This was supported in KitKat (API 19), but has a bug around requiring
1098-
// permissions. See https://github.com/flutter/flutter/issues/46172
1099-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
1096+
// Flutter performance tests. A few considerations:
1097+
// * reportFullyDrawn was supported in KitKat (API 19), but has a bug around requiring
1098+
// permissions in some Android versions.
1099+
// * reportFullyDrawn behavior isn't tested on pre-Q versions.
1100+
// See https://github.com/flutter/flutter/issues/46172, and
1101+
// https://github.com/flutter/flutter/issues/88767.
1102+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
11001103
reportFullyDrawn();
11011104
}
11021105
}

shell/platform/android/test/io/flutter/embedding/android/FlutterActivityTest.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.content.Intent;
2222
import android.content.pm.ActivityInfo;
2323
import android.content.pm.PackageManager;
24+
import android.os.Build;
2425
import android.os.Bundle;
2526
import androidx.annotation.NonNull;
2627
import androidx.annotation.Nullable;
@@ -438,6 +439,32 @@ public void itWithMetadataWithoutSplashScreenResourceKeyDoesNotProvideSplashScre
438439
assertNull(splashScreen);
439440
}
440441

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+
441468
static class FlutterActivityWithProvidedEngine extends FlutterActivity {
442469
@Override
443470
@SuppressLint("MissingSuperCall")
@@ -478,6 +505,23 @@ public RenderMode getRenderMode() {
478505
}
479506
}
480507

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+
481525
private static final class FakeFlutterPlugin
482526
implements FlutterPlugin,
483527
ActivityAware,

0 commit comments

Comments
 (0)