Merge Android 14 QPR1

Merged-In: If9d9e69ac0255ffb503b9e2a067f7be81ed6c139
Bug: 315507370
Change-Id: Ie657cdd67c85b40cfbd7ca02e4ab7065331bb9c9
diff --git a/main/src/com/google/android/setupdesign/util/ContentStyler.java b/main/src/com/google/android/setupdesign/util/ContentStyler.java
index 5fc1d1c..45d89ec 100644
--- a/main/src/com/google/android/setupdesign/util/ContentStyler.java
+++ b/main/src/com/google/android/setupdesign/util/ContentStyler.java
@@ -53,9 +53,10 @@
             PartnerConfig.CONFIG_CONTENT_LINK_TEXT_COLOR,
             PartnerConfig.CONFIG_CONTENT_TEXT_SIZE,
             PartnerConfig.CONFIG_CONTENT_FONT_FAMILY,
+            /* textFontWeightConfig= */ null,
             PartnerConfig.CONFIG_DESCRIPTION_LINK_FONT_FAMILY,
-            null,
-            null,
+            /* textMarginTopConfig= */ null,
+            /* textMarginBottomConfig= */ null,
             ContentStyler.getPartnerContentTextGravity(contentText.getContext())));
   }
 
@@ -90,16 +91,17 @@
     TextViewPartnerStyler.applyPartnerCustomizationStyle(
         infoText,
         new TextPartnerConfigs(
-            null,
-            null,
+            /* textColorConfig= */ null,
+            /* textLinkedColorConfig= */ null,
             textSizeConfigAvailable ? PartnerConfig.CONFIG_CONTENT_INFO_TEXT_SIZE : null,
             fontFamilyConfigAvailable ? PartnerConfig.CONFIG_CONTENT_INFO_FONT_FAMILY : null,
+            /* textFontWeightConfig= */ null,
             linkFontFamilyConfigAvailable
                 ? PartnerConfig.CONFIG_DESCRIPTION_LINK_FONT_FAMILY
                 : null,
-            null,
-            null,
-            0));
+            /* textMarginTopConfig= */ null,
+            /* textMarginBottomConfig= */ null,
+            /* textGravity= */ 0));
 
     // TODO: Move CONFIG_CONTENT_INFO_LINE_SPACING_EXTRA to TextPartnerConfigs for
     // customize
diff --git a/main/src/com/google/android/setupdesign/util/DescriptionStyler.java b/main/src/com/google/android/setupdesign/util/DescriptionStyler.java
index b779bc6..52a2e10 100644
--- a/main/src/com/google/android/setupdesign/util/DescriptionStyler.java
+++ b/main/src/com/google/android/setupdesign/util/DescriptionStyler.java
@@ -41,9 +41,10 @@
             PartnerConfig.CONFIG_DESCRIPTION_LINK_TEXT_COLOR,
             PartnerConfig.CONFIG_DESCRIPTION_TEXT_SIZE,
             PartnerConfig.CONFIG_DESCRIPTION_FONT_FAMILY,
+            PartnerConfig.CONFIG_DESCRIPTION_FONT_WEIGHT,
             PartnerConfig.CONFIG_DESCRIPTION_LINK_FONT_FAMILY,
-            null,
-            null,
+            /* textMarginTopConfig= */ null,
+            /* textMarginBottomConfig= */ null,
             PartnerStyleHelper.getLayoutGravity(description.getContext())));
   }
 
@@ -57,13 +58,14 @@
     TextViewPartnerStyler.applyPartnerCustomizationLightStyle(
         description,
         new TextPartnerConfigs(
-            null,
-            null,
-            null,
-            null,
-            null,
-            null,
-            null,
+            /* textColorConfig= */ null,
+            /* textLinkedColorConfig= */ null,
+            /* textSizeConfig= */ null,
+            /* textFontFamilyConfig= */ null,
+            /* textFontWeightConfig= */ null,
+            /* textLinkFontFamilyConfig= */ null,
+            /* textMarginTopConfig= */ null,
+            /* textMarginBottomConfig= */ null,
             PartnerStyleHelper.getLayoutGravity(description.getContext())));
   }
 
diff --git a/main/src/com/google/android/setupdesign/util/HeaderAreaStyler.java b/main/src/com/google/android/setupdesign/util/HeaderAreaStyler.java
index bb1c667..a52101d 100644
--- a/main/src/com/google/android/setupdesign/util/HeaderAreaStyler.java
+++ b/main/src/com/google/android/setupdesign/util/HeaderAreaStyler.java
@@ -70,10 +70,11 @@
         header,
         new TextPartnerConfigs(
             PartnerConfig.CONFIG_HEADER_TEXT_COLOR,
-            null,
+            /* textLinkedColorConfig= */ null,
             PartnerConfig.CONFIG_HEADER_TEXT_SIZE,
             PartnerConfig.CONFIG_HEADER_FONT_FAMILY,
-            null,
+            PartnerConfig.CONFIG_HEADER_FONT_WEIGHT,
+            /* textLinkFontFamilyConfig= */ null,
             PartnerConfig.CONFIG_HEADER_TEXT_MARGIN_TOP,
             PartnerConfig.CONFIG_HEADER_TEXT_MARGIN_BOTTOM,
             PartnerStyleHelper.getLayoutGravity(header.getContext())));
@@ -97,6 +98,7 @@
             PartnerConfig.CONFIG_DESCRIPTION_LINK_TEXT_COLOR,
             PartnerConfig.CONFIG_DESCRIPTION_TEXT_SIZE,
             PartnerConfig.CONFIG_DESCRIPTION_FONT_FAMILY,
+            PartnerConfig.CONFIG_DESCRIPTION_FONT_WEIGHT,
             PartnerConfig.CONFIG_DESCRIPTION_LINK_FONT_FAMILY,
             PartnerConfig.CONFIG_DESCRIPTION_TEXT_MARGIN_TOP,
             PartnerConfig.CONFIG_DESCRIPTION_TEXT_MARGIN_BOTTOM,
diff --git a/main/src/com/google/android/setupdesign/util/ItemStyler.java b/main/src/com/google/android/setupdesign/util/ItemStyler.java
index 5dbf0a4..e6d0131 100644
--- a/main/src/com/google/android/setupdesign/util/ItemStyler.java
+++ b/main/src/com/google/android/setupdesign/util/ItemStyler.java
@@ -89,13 +89,14 @@
     TextViewPartnerStyler.applyPartnerCustomizationStyle(
         titleTextView,
         new TextPartnerConfigs(
-            null,
-            null,
+            /* textColorConfig= */ null,
+            /* textLinkedColorConfig= */ null,
             PartnerConfig.CONFIG_ITEMS_TITLE_TEXT_SIZE,
             PartnerConfig.CONFIG_ITEMS_TITLE_FONT_FAMILY,
-            null,
-            null,
-            null,
+            /* textFontWeightConfig= */ null,
+            /* textLinkFontFamilyConfig= */ null,
+            /* textMarginTopConfig= */ null,
+            /* textMarginBottomConfig= */ null,
             PartnerStyleHelper.getLayoutGravity(titleTextView.getContext())));
   }
 
@@ -113,13 +114,14 @@
     TextViewPartnerStyler.applyPartnerCustomizationStyle(
         summaryTextView,
         new TextPartnerConfigs(
-            null,
-            null,
+            /* textColorConfig= */ null,
+            /* textLinkedColorConfig= */ null,
             PartnerConfig.CONFIG_ITEMS_SUMMARY_TEXT_SIZE,
             PartnerConfig.CONFIG_ITEMS_SUMMARY_FONT_FAMILY,
-            null,
+            /* textFontWeightConfig= */ null,
+            /* textLinkFontFamilyConfig= */ null,
             PartnerConfig.CONFIG_ITEMS_SUMMARY_MARGIN_TOP,
-            null,
+            /* textMarginBottomConfig= */ null,
             PartnerStyleHelper.getLayoutGravity(summaryTextView.getContext())));
   }
 
diff --git a/main/src/com/google/android/setupdesign/util/TextViewPartnerStyler.java b/main/src/com/google/android/setupdesign/util/TextViewPartnerStyler.java
index b56d09a..ced6fd4 100644
--- a/main/src/com/google/android/setupdesign/util/TextViewPartnerStyler.java
+++ b/main/src/com/google/android/setupdesign/util/TextViewPartnerStyler.java
@@ -16,6 +16,9 @@
 
 package com.google.android.setupdesign.util;
 
+import static com.google.android.setupcompat.partnerconfig.PartnerConfigHelper.isFontWeightEnabled;
+
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.graphics.Typeface;
 import android.util.TypedValue;
@@ -31,7 +34,11 @@
 /** Helper class to apply partner configurations to a textView. */
 final class TextViewPartnerStyler {
 
+  /** Normal font weight. */
+  private static final int FONT_WEIGHT_NORMAL = 400;
+
   /** Applies given partner configurations {@code textPartnerConfigs} to the {@code textView}. */
+  @SuppressLint("NewApi") // Applying partner config should be guarded before Android S
   public static void applyPartnerCustomizationStyle(
       @NonNull TextView textView, @NonNull TextPartnerConfigs textPartnerConfigs) {
 
@@ -74,16 +81,35 @@
       }
     }
 
+    Typeface fontFamily = null;
     if (textPartnerConfigs.getTextFontFamilyConfig() != null
         && PartnerConfigHelper.get(context)
             .isPartnerConfigAvailable(textPartnerConfigs.getTextFontFamilyConfig())) {
       String fontFamilyName =
           PartnerConfigHelper.get(context)
               .getString(context, textPartnerConfigs.getTextFontFamilyConfig());
-      Typeface font = Typeface.create(fontFamilyName, Typeface.NORMAL);
-      if (font != null) {
-        textView.setTypeface(font);
+      fontFamily = Typeface.create(fontFamilyName, Typeface.NORMAL);
+    }
+
+    Typeface font;
+    if (isFontWeightEnabled(context)
+        && textPartnerConfigs.getTextFontWeightConfig() != null
+        && PartnerConfigHelper.get(context)
+            .isPartnerConfigAvailable(textPartnerConfigs.getTextFontWeightConfig())) {
+      int weight =
+          PartnerConfigHelper.get(context)
+              .getInteger(
+                  context, textPartnerConfigs.getTextFontWeightConfig(), FONT_WEIGHT_NORMAL);
+      if (fontFamily == null) {
+        fontFamily = textView.getTypeface();
       }
+      font = Typeface.create(fontFamily, weight, /* italic= */ false);
+    } else {
+      font = fontFamily;
+    }
+
+    if (font != null) {
+      textView.setTypeface(font);
     }
 
     if (textView instanceof RichTextView && textPartnerConfigs.getLinkTextFontFamilyConfig() != null
@@ -162,6 +188,7 @@
     private final PartnerConfig textLinkedColorConfig;
     private final PartnerConfig textSizeConfig;
     private final PartnerConfig textFontFamilyConfig;
+    private final PartnerConfig textFontWeightConfig;
     private final PartnerConfig textLinkFontFamilyConfig;
     private final PartnerConfig textMarginTopConfig;
     private final PartnerConfig textMarginBottomConfig;
@@ -172,6 +199,7 @@
         @Nullable PartnerConfig textLinkedColorConfig,
         @Nullable PartnerConfig textSizeConfig,
         @Nullable PartnerConfig textFontFamilyConfig,
+        @Nullable PartnerConfig textFontWeightConfig,
         @Nullable PartnerConfig textLinkFontFamilyConfig,
         @Nullable PartnerConfig textMarginTopConfig,
         @Nullable PartnerConfig textMarginBottomConfig,
@@ -180,6 +208,7 @@
       this.textLinkedColorConfig = textLinkedColorConfig;
       this.textSizeConfig = textSizeConfig;
       this.textFontFamilyConfig = textFontFamilyConfig;
+      this.textFontWeightConfig = textFontWeightConfig;
       this.textLinkFontFamilyConfig = textLinkFontFamilyConfig;
       this.textMarginTopConfig = textMarginTopConfig;
       this.textMarginBottomConfig = textMarginBottomConfig;
@@ -202,6 +231,10 @@
       return textFontFamilyConfig;
     }
 
+    public PartnerConfig getTextFontWeightConfig() {
+      return textFontWeightConfig;
+    }
+
     public PartnerConfig getLinkTextFontFamilyConfig() {
       return textLinkFontFamilyConfig;
     }