summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Seigo Nonaka <nona@google.com> 2022-07-21 14:12:14 +0900
committer Seigo Nonaka <nona@google.com> 2022-07-26 16:55:13 +0900
commita2ffe9084acf4102de59e62216f0b957dbe70a13 (patch)
tree1ae559fb0706e8063ff9c4eda25ae8f904235e70
parent9f7e72b9767105bfa6cf1fc40d0fa77b0fcdb1c4 (diff)
Add TestApi that change default typeface
Bug: 238597089 Test: atest android.theme.cts.ThemeHostTest#testThemes Change-Id: Ia56b4424ab27b2f8dd01c0e61a1f9d26bd661fc9
-rw-r--r--core/api/test-current.txt1
-rw-r--r--graphics/java/android/graphics/Typeface.java36
2 files changed, 37 insertions, 0 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index b13ebf388d1f..221cbdcfd4d7 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -1026,6 +1026,7 @@ package android.graphics {
}
public class Typeface {
+ method @NonNull public static android.util.Pair<java.util.List<android.graphics.Typeface>,java.util.List<android.graphics.Typeface>> changeDefaultFontForTest(@NonNull java.util.List<android.graphics.Typeface>, @NonNull java.util.List<android.graphics.Typeface>);
method @NonNull public static long[] deserializeFontMap(@NonNull java.nio.ByteBuffer, @NonNull java.util.Map<java.lang.String,android.graphics.Typeface>) throws java.io.IOException;
method @Nullable public static android.os.SharedMemory getSystemFontMapSharedMemory();
method @NonNull public static android.os.SharedMemory serializeFontMap(@NonNull java.util.Map<java.lang.String,android.graphics.Typeface>) throws android.system.ErrnoException, java.io.IOException;
diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java
index a2f5301e353f..d6692a968e45 100644
--- a/graphics/java/android/graphics/Typeface.java
+++ b/graphics/java/android/graphics/Typeface.java
@@ -50,6 +50,7 @@ import android.util.Base64;
import android.util.Log;
import android.util.LongSparseArray;
import android.util.LruCache;
+import android.util.Pair;
import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
@@ -1384,6 +1385,41 @@ public class Typeface {
}
}
+ /**
+ * Change default typefaces for testing purpose.
+ *
+ * Note: The existing TextView or Paint instance still holds the old Typeface.
+ *
+ * @param defaults array of [default, default_bold, default_italic, default_bolditalic].
+ * @param genericFamilies array of [sans-serif, serif, monospace]
+ * @return return the old defaults and genericFamilies
+ * @hide
+ */
+ @TestApi
+ @NonNull
+ public static Pair<List<Typeface>, List<Typeface>> changeDefaultFontForTest(
+ @NonNull List<Typeface> defaults,
+ @NonNull List<Typeface> genericFamilies
+ ) {
+ synchronized (SYSTEM_FONT_MAP_LOCK) {
+ List<Typeface> oldDefaults = Arrays.asList(sDefaults);
+ sDefaults = defaults.toArray(new Typeface[4]);
+ setDefault(defaults.get(0));
+
+ ArrayList<Typeface> oldGenerics = new ArrayList<>();
+ oldGenerics.add(sSystemFontMap.get("sans-serif"));
+ sSystemFontMap.put("sans-serif", genericFamilies.get(0));
+
+ oldGenerics.add(sSystemFontMap.get("serif"));
+ sSystemFontMap.put("serif", genericFamilies.get(1));
+
+ oldGenerics.add(sSystemFontMap.get("monospace"));
+ sSystemFontMap.put("monospace", genericFamilies.get(2));
+
+ return new Pair<>(oldDefaults, oldGenerics);
+ }
+ }
+
static {
// Preload Roboto-Regular.ttf in Zygote for improving app launch performance.
preloadFontFile("/system/fonts/Roboto-Regular.ttf");