Pass the --enable-skparagraph=false flag if the EnableSkParagraph manifest metadata value is false (flutter/engine#33597)
This commit is contained in:
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user