diff options
| author | 2022-07-21 14:12:14 +0900 | |
|---|---|---|
| committer | 2022-07-26 16:55:13 +0900 | |
| commit | a2ffe9084acf4102de59e62216f0b957dbe70a13 (patch) | |
| tree | 1ae559fb0706e8063ff9c4eda25ae8f904235e70 | |
| parent | 9f7e72b9767105bfa6cf1fc40d0fa77b0fcdb1c4 (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.txt | 1 | ||||
| -rw-r--r-- | graphics/java/android/graphics/Typeface.java | 36 |
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"); |