Pass the --enable-skparagraph=false flag if the EnableSkParagraph manifest metadata value is false (flutter/engine#33597)

This commit is contained in:
Jason Simmons
2022-05-25 10:38:02 -07:00
committed by GitHub
parent 30eab9522b
commit 6714554f40
2 changed files with 42 additions and 3 deletions

View File

@@ -317,9 +317,10 @@ public class FlutterLoader {
shellArgs.add("--prefetched-default-font-manager");
if (metaData == null || metaData.getBoolean(ENABLE_SKPARAGRAPH_META_DATA_KEY, true)) {
shellArgs.add("--enable-skparagraph");
}
boolean enableSkParagraph =
metaData == null || metaData.getBoolean(ENABLE_SKPARAGRAPH_META_DATA_KEY, true);
shellArgs.add("--enable-skparagraph=" + enableSkParagraph);
if (metaData != null && metaData.getBoolean(ENABLE_IMPELLER_META_DATA_KEY, false)) {
shellArgs.add("--enable-impeller");
}

View File

@@ -197,6 +197,44 @@ public class FlutterLoaderTest {
assertTrue(arguments.contains(enableImpellerArg));
}
@Test
public void itSetsEnableSkParagraphByDefault() {
// SkParagraph is enabled by default
FlutterJNI mockFlutterJNI = mock(FlutterJNI.class);
FlutterLoader flutterLoader = new FlutterLoader(mockFlutterJNI);
FlutterLoader.Settings settings = new FlutterLoader.Settings();
flutterLoader.startInitialization(ctx, settings);
flutterLoader.ensureInitializationComplete(ctx, null);
shadowOf(getMainLooper()).idle();
ArgumentCaptor<String[]> shellArgsCaptor = ArgumentCaptor.forClass(String[].class);
verify(mockFlutterJNI, times(1))
.init(eq(ctx), shellArgsCaptor.capture(), anyString(), anyString(), anyString(), anyLong());
List<String> arguments = Arrays.asList(shellArgsCaptor.getValue());
assertTrue(arguments.contains("--enable-skparagraph=true"));
}
@Test
public void itSetsEnableSkParagraphFromMetaData() {
// SkParagraph can be disabled using metadata.
FlutterJNI mockFlutterJNI = mock(FlutterJNI.class);
FlutterLoader flutterLoader = new FlutterLoader(mockFlutterJNI);
Bundle metaData = new Bundle();
metaData.putBoolean("io.flutter.embedding.android.EnableSkParagraph", false);
ctx.getApplicationInfo().metaData = metaData;
FlutterLoader.Settings settings = new FlutterLoader.Settings();
flutterLoader.startInitialization(ctx, settings);
flutterLoader.ensureInitializationComplete(ctx, null);
shadowOf(getMainLooper()).idle();
ArgumentCaptor<String[]> shellArgsCaptor = ArgumentCaptor.forClass(String[].class);
verify(mockFlutterJNI, times(1))
.init(eq(ctx), shellArgsCaptor.capture(), anyString(), anyString(), anyString(), anyLong());
List<String> arguments = Arrays.asList(shellArgsCaptor.getValue());
assertTrue(arguments.contains("--enable-skparagraph=false"));
}
@Test
@TargetApi(23)
@Config(sdk = 23)