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

Commit 2a0f7e94 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add TestApi that change default typeface"

parents 1fd3f396 a2ffe908
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;
@@ -1396,6 +1397,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");