From d5287e60fbc09d3d0623d839f04da291d02b2de9 Mon Sep 17 00:00:00 2001 From: Seigo Nonaka Date: Wed, 10 Mar 2021 12:37:41 -0800 Subject: [PATCH] Add FontFamily.Builder instead of constructor Bug: 181124737 Test: atest FontFamilyUpdateRequestTest Change-Id: I6fd9b7cb40e6f4d168f95953cb488b2c43d6abef --- core/api/system-current.txt | 7 ++- .../fonts/FontFamilyUpdateRequest.java | 46 ++++++++++++++++--- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 5ca4d35d4c222..6f7a4d061248a 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -2881,11 +2881,16 @@ package android.graphics.fonts { } public static final class FontFamilyUpdateRequest.FontFamily { - ctor public FontFamilyUpdateRequest.FontFamily(@NonNull String, @NonNull java.util.List); method @NonNull public java.util.List getFonts(); method @NonNull public String getName(); } + public static final class FontFamilyUpdateRequest.FontFamily.Builder { + ctor public FontFamilyUpdateRequest.FontFamily.Builder(@NonNull String, @NonNull java.util.List); + method @NonNull public android.graphics.fonts.FontFamilyUpdateRequest.FontFamily.Builder addFont(@NonNull android.graphics.fonts.FontFamilyUpdateRequest.Font); + method @NonNull public android.graphics.fonts.FontFamilyUpdateRequest.FontFamily build(); + } + public final class FontFileUpdateRequest { ctor public FontFileUpdateRequest(@NonNull android.os.ParcelFileDescriptor, @NonNull byte[]); method @NonNull public android.os.ParcelFileDescriptor getParcelFileDescriptor(); diff --git a/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java b/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java index 25758e9d9a61c..8c7695ad5a5af 100644 --- a/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java +++ b/core/java/android/graphics/fonts/FontFamilyUpdateRequest.java @@ -72,6 +72,45 @@ public final class FontFamilyUpdateRequest { * A font family definition. */ public static final class FontFamily { + + /** + * Builds a {@link FontFamily}. + */ + public static final class Builder { + @NonNull private final String mName; + @NonNull private final List mFonts; + + /** + * Constructs a {@link FontFamily.Builder}. + */ + public Builder(@NonNull String name, @NonNull List fonts) { + Objects.requireNonNull(name); + Preconditions.checkStringNotEmpty(name); + Objects.requireNonNull(fonts); + Preconditions.checkCollectionElementsNotNull(fonts, "fonts"); + Preconditions.checkCollectionNotEmpty(fonts, "fonts"); + mName = name; + mFonts = new ArrayList<>(fonts); + } + + /** + * Adds a {@link Font} to the builder. + * + * @return This builder object. + */ + public @NonNull Builder addFont(@NonNull Font font) { + mFonts.add(font); + return this; + } + + /** + * Builds a {@link FontFamily}. + */ + public @NonNull FontFamily build() { + return new FontFamily(mName, mFonts); + } + } + @NonNull private final String mName; @NonNull @@ -90,12 +129,7 @@ public final class FontFamilyUpdateRequest { * @see android.graphics.Typeface#create(String, int) * @see Font */ - public FontFamily(@NonNull String name, @NonNull List fonts) { - Objects.requireNonNull(name); - Preconditions.checkStringNotEmpty(name); - Objects.requireNonNull(fonts); - Preconditions.checkCollectionElementsNotNull(fonts, "fonts"); - Preconditions.checkCollectionNotEmpty(fonts, "fonts"); + private FontFamily(@NonNull String name, @NonNull List fonts) { mName = name; mFonts = fonts; }