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

Commit 04d72abd authored by Clara Bayarri's avatar Clara Bayarri
Browse files

Expose fonts.xml via public API with a service

This change creates a new FontManagerService, in charge of providing
font management data. It exposes a public API to retrieve the
information in fonts.xml without accessing it directly. To do this,
it also refactors FontListParser's internal classes into a new public
FontConfig class holding all the font data.

getSystemFonts() returns all the available information in fonts.xml
as well as file descriptors for all the fonts. This allows us to
share the memory consumed by these files between all clients.

Bug: 34190490
Test: See attached CTS change in topic
Change-Id: I0e922f8bcc9a197a1988d04071eb485328d66fb7
parent b334b8f0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -346,6 +346,7 @@ LOCAL_SRC_FILES += \
	core/java/com/android/internal/appwidget/IAppWidgetHost.aidl \
	core/java/com/android/internal/backup/IBackupTransport.aidl \
	core/java/com/android/internal/backup/IObbBackupService.aidl \
	core/java/com/android/internal/font/IFontManager.aidl \
	core/java/com/android/internal/inputmethod/IInputContentUriToken.aidl \
	core/java/com/android/internal/policy/IKeyguardDrawnCallback.aidl \
	core/java/com/android/internal/policy/IKeyguardDismissCallback.aidl \
+60 −0
Original line number Diff line number Diff line
@@ -8472,6 +8472,7 @@ package android.content {
    field public static final java.lang.String DOWNLOAD_SERVICE = "download";
    field public static final java.lang.String DROPBOX_SERVICE = "dropbox";
    field public static final java.lang.String FINGERPRINT_SERVICE = "fingerprint";
    field public static final java.lang.String FONT_SERVICE = "font";
    field public static final java.lang.String HARDWARE_PROPERTIES_SERVICE = "hardware_properties";
    field public static final java.lang.String INPUT_METHOD_SERVICE = "input_method";
    field public static final java.lang.String INPUT_SERVICE = "input";
@@ -39449,6 +39450,65 @@ package android.text {
    method public android.text.Editable newEditable(java.lang.CharSequence);
  }
  public final class FontConfig implements android.os.Parcelable {
    ctor public FontConfig();
    ctor public FontConfig(android.text.FontConfig);
    method public int describeContents();
    method public java.util.List<android.text.FontConfig.Alias> getAliases();
    method public java.util.List<android.text.FontConfig.Family> getFamilies();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig> CREATOR;
  }
  public static final class FontConfig.Alias implements android.os.Parcelable {
    ctor public FontConfig.Alias(java.lang.String, java.lang.String, int);
    method public int describeContents();
    method public java.lang.String getName();
    method public java.lang.String getToName();
    method public int getWeight();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Alias> CREATOR;
  }
  public static final class FontConfig.Axis implements android.os.Parcelable {
    ctor public FontConfig.Axis(int, float);
    method public int describeContents();
    method public float getStyleValue();
    method public int getTag();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Axis> CREATOR;
  }
  public static final class FontConfig.Family implements android.os.Parcelable {
    ctor public FontConfig.Family(java.lang.String, java.util.List<android.text.FontConfig.Font>, java.lang.String, java.lang.String);
    ctor public FontConfig.Family(android.text.FontConfig.Family);
    method public int describeContents();
    method public java.util.List<android.text.FontConfig.Font> getFonts();
    method public java.lang.String getLanguage();
    method public java.lang.String getName();
    method public java.lang.String getVariant();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Family> CREATOR;
  }
  public static final class FontConfig.Font implements android.os.Parcelable {
    ctor public FontConfig.Font(java.lang.String, int, java.util.List<android.text.FontConfig.Axis>, int, boolean);
    ctor public FontConfig.Font(android.text.FontConfig.Font);
    method public int describeContents();
    method public java.util.List<android.text.FontConfig.Axis> getAxes();
    method public android.os.ParcelFileDescriptor getFd();
    method public java.lang.String getFontName();
    method public int getTtcIndex();
    method public int getWeight();
    method public boolean isItalic();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Font> CREATOR;
  }
  public final class FontManager {
    method public android.text.FontConfig getSystemFonts();
  }
  public abstract interface GetChars implements java.lang.CharSequence {
    method public abstract void getChars(int, int, char[], int);
  }
+60 −0
Original line number Diff line number Diff line
@@ -8847,6 +8847,7 @@ package android.content {
    field public static final java.lang.String DOWNLOAD_SERVICE = "download";
    field public static final java.lang.String DROPBOX_SERVICE = "dropbox";
    field public static final java.lang.String FINGERPRINT_SERVICE = "fingerprint";
    field public static final java.lang.String FONT_SERVICE = "font";
    field public static final java.lang.String HARDWARE_PROPERTIES_SERVICE = "hardware_properties";
    field public static final java.lang.String HDMI_CONTROL_SERVICE = "hdmi_control";
    field public static final java.lang.String INPUT_METHOD_SERVICE = "input_method";
@@ -42724,6 +42725,65 @@ package android.text {
    method public android.text.Editable newEditable(java.lang.CharSequence);
  }
  public final class FontConfig implements android.os.Parcelable {
    ctor public FontConfig();
    ctor public FontConfig(android.text.FontConfig);
    method public int describeContents();
    method public java.util.List<android.text.FontConfig.Alias> getAliases();
    method public java.util.List<android.text.FontConfig.Family> getFamilies();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig> CREATOR;
  }
  public static final class FontConfig.Alias implements android.os.Parcelable {
    ctor public FontConfig.Alias(java.lang.String, java.lang.String, int);
    method public int describeContents();
    method public java.lang.String getName();
    method public java.lang.String getToName();
    method public int getWeight();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Alias> CREATOR;
  }
  public static final class FontConfig.Axis implements android.os.Parcelable {
    ctor public FontConfig.Axis(int, float);
    method public int describeContents();
    method public float getStyleValue();
    method public int getTag();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Axis> CREATOR;
  }
  public static final class FontConfig.Family implements android.os.Parcelable {
    ctor public FontConfig.Family(java.lang.String, java.util.List<android.text.FontConfig.Font>, java.lang.String, java.lang.String);
    ctor public FontConfig.Family(android.text.FontConfig.Family);
    method public int describeContents();
    method public java.util.List<android.text.FontConfig.Font> getFonts();
    method public java.lang.String getLanguage();
    method public java.lang.String getName();
    method public java.lang.String getVariant();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Family> CREATOR;
  }
  public static final class FontConfig.Font implements android.os.Parcelable {
    ctor public FontConfig.Font(java.lang.String, int, java.util.List<android.text.FontConfig.Axis>, int, boolean);
    ctor public FontConfig.Font(android.text.FontConfig.Font);
    method public int describeContents();
    method public java.util.List<android.text.FontConfig.Axis> getAxes();
    method public android.os.ParcelFileDescriptor getFd();
    method public java.lang.String getFontName();
    method public int getTtcIndex();
    method public int getWeight();
    method public boolean isItalic();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Font> CREATOR;
  }
  public final class FontManager {
    method public android.text.FontConfig getSystemFonts();
  }
  public abstract interface GetChars implements java.lang.CharSequence {
    method public abstract void getChars(int, int, char[], int);
  }
+60 −0
Original line number Diff line number Diff line
@@ -8496,6 +8496,7 @@ package android.content {
    field public static final java.lang.String DOWNLOAD_SERVICE = "download";
    field public static final java.lang.String DROPBOX_SERVICE = "dropbox";
    field public static final java.lang.String FINGERPRINT_SERVICE = "fingerprint";
    field public static final java.lang.String FONT_SERVICE = "font";
    field public static final java.lang.String HARDWARE_PROPERTIES_SERVICE = "hardware_properties";
    field public static final java.lang.String INPUT_METHOD_SERVICE = "input_method";
    field public static final java.lang.String INPUT_SERVICE = "input";
@@ -39573,6 +39574,65 @@ package android.text {
    method public android.text.Editable newEditable(java.lang.CharSequence);
  }
  public final class FontConfig implements android.os.Parcelable {
    ctor public FontConfig();
    ctor public FontConfig(android.text.FontConfig);
    method public int describeContents();
    method public java.util.List<android.text.FontConfig.Alias> getAliases();
    method public java.util.List<android.text.FontConfig.Family> getFamilies();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig> CREATOR;
  }
  public static final class FontConfig.Alias implements android.os.Parcelable {
    ctor public FontConfig.Alias(java.lang.String, java.lang.String, int);
    method public int describeContents();
    method public java.lang.String getName();
    method public java.lang.String getToName();
    method public int getWeight();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Alias> CREATOR;
  }
  public static final class FontConfig.Axis implements android.os.Parcelable {
    ctor public FontConfig.Axis(int, float);
    method public int describeContents();
    method public float getStyleValue();
    method public int getTag();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Axis> CREATOR;
  }
  public static final class FontConfig.Family implements android.os.Parcelable {
    ctor public FontConfig.Family(java.lang.String, java.util.List<android.text.FontConfig.Font>, java.lang.String, java.lang.String);
    ctor public FontConfig.Family(android.text.FontConfig.Family);
    method public int describeContents();
    method public java.util.List<android.text.FontConfig.Font> getFonts();
    method public java.lang.String getLanguage();
    method public java.lang.String getName();
    method public java.lang.String getVariant();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Family> CREATOR;
  }
  public static final class FontConfig.Font implements android.os.Parcelable {
    ctor public FontConfig.Font(java.lang.String, int, java.util.List<android.text.FontConfig.Axis>, int, boolean);
    ctor public FontConfig.Font(android.text.FontConfig.Font);
    method public int describeContents();
    method public java.util.List<android.text.FontConfig.Axis> getAxes();
    method public android.os.ParcelFileDescriptor getFd();
    method public java.lang.String getFontName();
    method public int getTtcIndex();
    method public int getWeight();
    method public boolean isItalic();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.text.FontConfig.Font> CREATOR;
  }
  public final class FontManager {
    method public android.text.FontConfig getSystemFonts();
  }
  public abstract interface GetChars implements java.lang.CharSequence {
    method public abstract void getChars(int, int, char[], int);
  }
+5 −5
Original line number Diff line number Diff line
@@ -1195,13 +1195,13 @@ android.graphics.DashPathEffect
android.graphics.DiscretePathEffect
android.graphics.DrawFilter
android.graphics.EmbossMaskFilter
android.graphics.FontConfig
android.graphics.FontConfig$Alias
android.graphics.FontConfig$Axis
android.graphics.FontConfig$Family
android.graphics.FontConfig$Font
android.graphics.FontFamily
android.graphics.FontListParser
android.graphics.FontListParser$Alias
android.graphics.FontListParser$Axis
android.graphics.FontListParser$Config
android.graphics.FontListParser$Family
android.graphics.FontListParser$Font
android.graphics.ImageFormat
android.graphics.Insets
android.graphics.Interpolator
Loading