Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2ffe908 authored by Seigo Nonaka's avatar Seigo Nonaka
Browse files

Add TestApi that change default typeface

Bug: 238597089
Test: atest android.theme.cts.ThemeHostTest#testThemes
Change-Id: Ia56b4424ab27b2f8dd01c0e61a1f9d26bd661fc9
parent 9f7e72b9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+36 −0
Original line number Diff line number Diff line
@@ -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");