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

Commit 791ecf44 authored by Seigo Nonaka's avatar Seigo Nonaka Committed by Android (Google) Code Review
Browse files

Merge "Add FontManager API and font manager shell commands"

parents 11dca194 46d6a3f9
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -1927,6 +1927,7 @@ package android.content {
    field public static final String CONTEXTHUB_SERVICE = "contexthub";
    field public static final String ETHERNET_SERVICE = "ethernet";
    field public static final String EUICC_CARD_SERVICE = "euicc_card";
    field public static final String FONT_SERVICE = "font";
    field public static final String HDMI_CONTROL_SERVICE = "hdmi_control";
    field public static final String MEDIA_TRANSCODING_SERVICE = "media_transcoding";
    field public static final String MUSIC_RECOGNITION_SERVICE = "music_recognition";
@@ -2588,6 +2589,14 @@ package android.graphics.drawable {
}
package android.graphics.fonts {
  public class FontManager {
    method @Nullable public android.text.FontConfig getFontConfig();
  }
}
package android.hardware {
  public final class Sensor {
@@ -13451,6 +13460,51 @@ package android.telephony.mbms.vendor {
}
package android.text {
  public final class FontConfig implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.text.FontConfig.Alias> getAliases();
    method @NonNull public java.util.List<android.text.FontConfig.FontFamily> getFontFamilies();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig> CREATOR;
  }
  public static final class FontConfig.Alias implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public String getName();
    method @NonNull public String getOriginal();
    method @IntRange(from=0, to=1000) public int getWeight();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig.Alias> CREATOR;
  }
  public static final class FontConfig.Font implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.io.File getFile();
    method @Nullable public String getFontFamilyName();
    method @NonNull public String getFontVariationSettings();
    method @NonNull public android.graphics.fonts.FontStyle getStyle();
    method public int getTtcIndex();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig.Font> CREATOR;
  }
  public static final class FontConfig.FontFamily implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.text.FontConfig.Font> getFontList();
    method @NonNull public android.os.LocaleList getLocaleList();
    method @Nullable public String getName();
    method public int getVariant();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig.FontFamily> CREATOR;
    field public static final int VARIANT_COMPACT = 1; // 0x1
    field public static final int VARIANT_DEFAULT = 0; // 0x0
    field public static final int VARIANT_ELEGANT = 2; // 0x2
  }
}
package android.util {
  public class EventLog {
+50 −0
Original line number Diff line number Diff line
@@ -627,6 +627,7 @@ package android.content {
    field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture";
    field public static final String DEVICE_IDLE_CONTROLLER = "deviceidle";
    field public static final String DREAM_SERVICE = "dream";
    field public static final String FONT_SERVICE = "font";
    field public static final String POWER_WHITELIST_MANAGER = "power_whitelist";
    field public static final String TEST_NETWORK_SERVICE = "test_network";
  }
@@ -819,6 +820,14 @@ package android.graphics.drawable {

}

package android.graphics.fonts {

  public class FontManager {
    method @Nullable public android.text.FontConfig getFontConfig();
  }

}

package android.hardware {

  public final class SensorPrivacyManager {
@@ -2019,6 +2028,47 @@ package android.telephony.ims.feature {

package android.text {

  public final class FontConfig implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.text.FontConfig.Alias> getAliases();
    method @NonNull public java.util.List<android.text.FontConfig.FontFamily> getFontFamilies();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig> CREATOR;
  }

  public static final class FontConfig.Alias implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public String getName();
    method @NonNull public String getOriginal();
    method @IntRange(from=0, to=1000) public int getWeight();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig.Alias> CREATOR;
  }

  public static final class FontConfig.Font implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.io.File getFile();
    method @Nullable public String getFontFamilyName();
    method @NonNull public String getFontVariationSettings();
    method @NonNull public android.graphics.fonts.FontStyle getStyle();
    method public int getTtcIndex();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig.Font> CREATOR;
  }

  public static final class FontConfig.FontFamily implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.text.FontConfig.Font> getFontList();
    method @NonNull public android.os.LocaleList getLocaleList();
    method @Nullable public String getName();
    method public int getVariant();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.text.FontConfig.FontFamily> CREATOR;
    field public static final int VARIANT_COMPACT = 1; // 0x1
    field public static final int VARIANT_DEFAULT = 0; // 0x0
    field public static final int VARIANT_ELEGANT = 2; // 0x2
  }

  public static final class Selection.MemoryTextWatcher implements android.text.TextWatcher {
    ctor public Selection.MemoryTextWatcher();
    method public void afterTextChanged(android.text.Editable);
+10 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ import android.content.res.Resources;
import android.content.rollback.RollbackManagerFrameworkInitializer;
import android.debug.AdbManager;
import android.debug.IAdbManager;
import android.graphics.fonts.FontManager;
import android.hardware.ConsumerIrManager;
import android.hardware.ISerialManager;
import android.hardware.SensorManager;
@@ -216,6 +217,7 @@ import com.android.internal.app.IAppOpsService;
import com.android.internal.app.IBatteryStats;
import com.android.internal.app.ISoundTriggerService;
import com.android.internal.appwidget.IAppWidgetService;
import com.android.internal.graphics.fonts.IFontManager;
import com.android.internal.net.INetworkWatchlistManager;
import com.android.internal.os.IDropBoxManagerService;
import com.android.internal.policy.PhoneLayoutInflater;
@@ -344,6 +346,14 @@ public final class SystemServiceRegistry {
                return new TextClassificationManager(ctx);
            }});

        registerService(Context.FONT_SERVICE, FontManager.class,
                new CachedServiceFetcher<FontManager>() {
            @Override
            public FontManager createService(ContextImpl ctx) throws ServiceNotFoundException {
                IBinder b = ServiceManager.getServiceOrThrow(Context.FONT_SERVICE);
                return FontManager.create(IFontManager.Stub.asInterface(b));
            }});

        registerService(Context.CLIPBOARD_SERVICE, ClipboardManager.class,
                new CachedServiceFetcher<ClipboardManager>() {
            @Override
+12 −0
Original line number Diff line number Diff line
@@ -4476,6 +4476,18 @@ public abstract class Context {
     */
    public static final String TEXT_CLASSIFICATION_SERVICE = "textclassification";

    /**
     * Use with {@link #getSystemService(String)} to retrieve a
     * {@link android.graphics.fonts.FontManager} for font services.
     *
     * @see #getSystemService(String)
     * @see android.graphics.fonts.FontManager
     * @hide
     */
    @SystemApi
    @TestApi
    public static final String FONT_SERVICE = "font";

    /**
     * Use with {@link #getSystemService(String)} to retrieve a
     * {@link com.android.server.attention.AttentionManagerService} for attention services.
+79 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.graphics.fonts;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
import android.content.Context;
import android.os.RemoteException;
import android.text.FontConfig;
import android.util.Log;

import com.android.internal.graphics.fonts.IFontManager;

import java.util.Objects;

/**
 * This class gives you control of system installed font files.
 * @hide
 */
@SystemApi
@TestApi
@SystemService(Context.FONT_SERVICE)
public class FontManager {
    private static final String TAG = "FontManager";
    private final @NonNull IFontManager mIFontManager;

    private FontManager(@NonNull IFontManager iFontManager) {
        mIFontManager = iFontManager;
    }

    /**
     * Returns the system font configuration.
     *
     * This information is expected to be used by system font updater. If you are looking for APIs
     * about drawing text and/or high-level system font information, use
     * {@link android.graphics.Typeface} or {@link SystemFonts} instead.
     *
     * @return The current font configuration. null if failed to fetch information from the system
     *         service.
     */
    public @Nullable FontConfig getFontConfig() {
        try {
            return mIFontManager.getFontConfig();
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to call getFontConfig", e);
            return null;
        }
    }

    /**
     * Factory method of the FontManager.
     *
     * Do not use this method directly. Use getSystemService(Context.FONT_SERVICE) instead.
     *
     * @return A new instance of FontManager
     * @hide
     */
    public static FontManager create(@NonNull IFontManager iFontManager) {
        Objects.requireNonNull(iFontManager);
        return new FontManager(iFontManager);
    }
}
Loading