From d01a515f551475c32a625de94187e8c9b9e05c1c Mon Sep 17 00:00:00 2001 From: Seigo Nonaka Date: Thu, 24 Jan 2019 17:03:01 -0800 Subject: [PATCH] Suppress IllegalArgumentException on API 28 or before The suppression was added to FontsContract by I7fba3e4d21fc895dfee4300db7d7e3000095ff92 but not in Resources.getFont. This CL adds suppression for Resources.getFont too. Bug: 122262093 Test: locally verified Change-Id: I15159dadc7e3694be5d90435a7a24cd626086656 --- graphics/java/android/graphics/Typeface.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java index 25f6775f81b4b..cb1f69c0ada3a 100644 --- a/graphics/java/android/graphics/Typeface.java +++ b/graphics/java/android/graphics/Typeface.java @@ -33,6 +33,7 @@ import android.graphics.fonts.FontStyle; import android.graphics.fonts.FontVariationAxis; import android.graphics.fonts.SystemFonts; import android.os.Build; +import android.os.Build.VERSION_CODES; import android.provider.FontRequest; import android.provider.FontsContract; import android.text.FontConfig; @@ -46,6 +47,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.Preconditions; import dalvik.annotation.optimization.CriticalNative; +import dalvik.system.VMRuntime; import libcore.util.NativeAllocationRegistry; @@ -243,7 +245,16 @@ public class Typeface { if (familyBuilder == null) { familyBuilder = new FontFamily.Builder(fontBuilder.build()); } else { - familyBuilder.addFont(fontBuilder.build()); + try { + familyBuilder.addFont(fontBuilder.build()); + } catch (IllegalArgumentException e) { + if (VMRuntime.getRuntime().getTargetSdkVersion() <= VERSION_CODES.P) { + // Surpress the IllegalArgumentException for keeping the backward + // compatibility. + continue; + } + throw e; + } } } if (familyBuilder == null) {