Snap for 8720775 from 6882fd623436af57a685e609aed01a079af35a08 to mainline-sdkext-release

Change-Id: I9ba2af60452c518b8c2d17625153d37aaf6b842a
diff --git a/main/res/values-v22/styles.xml b/main/res/values-v22/styles.xml
index a3c7cee..b4d89b0 100644
--- a/main/res/values-v22/styles.xml
+++ b/main/res/values-v22/styles.xml
@@ -22,4 +22,10 @@
     </style>
 
     <style name="SudAlertDialogTheme.Light" parent="android:Theme.DeviceDefault.Light.Dialog.Alert" />
+    <style name="SudMaterialYouAlertDialogTheme" parent="SudAlertDialogTheme">
+        <item name="android:windowTitleStyle">@style/SudMaterialYouAlertDialogTitleStyle</item>
+    </style>
+    <style name="SudMaterialYouAlertDialogTheme.Light" parent="SudAlertDialogTheme.Light">
+        <item name="android:windowTitleStyle">@style/SudMaterialYouAlertDialogTitleStyle</item>
+    </style>
 </resources>
diff --git a/main/res/values/attrs.xml b/main/res/values/attrs.xml
index d739189..22aee0d 100644
--- a/main/res/values/attrs.xml
+++ b/main/res/values/attrs.xml
@@ -65,6 +65,21 @@
     <attr name="sudButtonAllCaps" format="boolean" />
     <attr name="sudButtonCornerRadius" format="dimension" />
     <attr name="sudButtonFontFamily" format="string|reference" />
+    <!-- Values copied from frameworks/base/core/res/res/values/attrs.xml -->
+    <attr name="sudButtonTertiaryGravity">
+        <!-- Push object to the left of its container, not changing its size. -->
+        <flag name="left" value="0x03" />
+        <!-- Push object to the right of its container, not changing its size. -->
+        <flag name="right" value="0x05" />
+        <!-- Place object in the horizontal center of its container, not changing its size. -->
+        <flag name="center_horizontal" value="0x01" />
+        <!-- Grow the horizontal size of the object if needed so it completely fills its container. -->
+        <flag name="fill_horizontal" value="0x07" />
+        <!-- Push object to the beginning of its container, not changing its size. -->
+        <flag name="start" value="0x00800003" />
+        <!-- Push object to the end of its container, not changing its size. -->
+        <flag name="end" value="0x00800005" />
+    </attr>
     <attr name="sudCardBackground" format="color|reference" />
     <attr name="sudDividerCondition">
         <enum name="either" value="0" />
diff --git a/main/res/values/styles.xml b/main/res/values/styles.xml
index d675c62..e33b305 100644
--- a/main/res/values/styles.xml
+++ b/main/res/values/styles.xml
@@ -155,6 +155,7 @@
         <item name="sudButtonCornerRadius">@dimen/sud_glif_button_corner_radius</item>
         <item name="sudButtonFontFamily">sans-serif-medium</item>
         <item name="sudButtonHighlightAlpha">0.24</item>
+        <item name="sudButtonTertiaryGravity">?attr/sudGlifHeaderGravity</item>
         <item name="sudColorPrimary">?attr/colorPrimary</item>
         <item name="sudContentFramePaddingTop">@dimen/sud_content_frame_padding_top</item>
         <item name="sudContentFramePaddingBottom">@dimen/sud_content_frame_padding_bottom</item>
@@ -248,6 +249,7 @@
         <item name="sudButtonCornerRadius">@dimen/sud_glif_button_corner_radius</item>
         <item name="sudButtonFontFamily">sans-serif-medium</item>
         <item name="sudButtonHighlightAlpha">0.12</item>
+        <item name="sudButtonTertiaryGravity">?attr/sudGlifHeaderGravity</item>
         <item name="sudColorPrimary">?attr/colorPrimary</item>
         <item name="sudContentFramePaddingTop">@dimen/sud_content_frame_padding_top</item>
         <item name="sudContentFramePaddingBottom">@dimen/sud_content_frame_padding_bottom</item>
@@ -393,6 +395,7 @@
         <item name="sucFooterBarButtonFontFamily">@string/sudFontSecondaryMediumMaterialYou</item>
         <item name="sucGlifIconMarginTop">@dimen/sud_glif_icon_margin_top_material_you</item>
         <item name="sudButtonCornerRadius">@dimen/sud_footer_bar_button_radius_material_you</item>
+        <item name="sudButtonTertiaryGravity">center_horizontal</item>
         <item name="sudGlifIconSize">@dimen/sud_glif_icon_max_height_material_you</item>
         <item name="sudGlifHeaderTitleStyle">@style/SudGlifHeaderTitleMaterialYou</item>
         <item name="sudGlifHeaderGravity">start</item>
@@ -426,6 +429,7 @@
         <item name="sucFooterBarButtonFontFamily">@string/sudFontSecondaryMediumMaterialYou</item>
         <item name="sucGlifIconMarginTop">@dimen/sud_glif_icon_margin_top_material_you</item>
         <item name="sudButtonCornerRadius">@dimen/sud_footer_bar_button_radius_material_you</item>
+        <item name="sudButtonTertiaryGravity">center_horizontal</item>
         <item name="sudGlifIconSize">@dimen/sud_glif_icon_max_height_material_you</item>
         <item name="sudGlifHeaderTitleStyle">@style/SudGlifHeaderTitleMaterialYou</item>
         <item name="sudGlifHeaderGravity">start</item>
@@ -668,7 +672,7 @@
         <item name="android:theme">@style/SudGlifButton.Tertiary</item>
 
         <item name="android:fontFamily" tools:targetApi="jelly_bean">sans-serif</item>
-        <item name="android:layout_gravity">?attr/sudGlifHeaderGravity</item>
+        <item name="android:layout_gravity">?attr/sudButtonTertiaryGravity</item>
         <item name="android:layout_marginLeft">@dimen/sud_glif_negative_button_padding</item>
         <item name="android:layout_marginRight">@dimen/sud_glif_negative_button_padding</item>
         <!-- Always lowercase instead of reading attr/sudButtonAllCaps, since this is a tertiary
diff --git a/main/src/com/google/android/setupdesign/util/LayoutStyler.java b/main/src/com/google/android/setupdesign/util/LayoutStyler.java
index b377327..9e1d66b 100644
--- a/main/src/com/google/android/setupdesign/util/LayoutStyler.java
+++ b/main/src/com/google/android/setupdesign/util/LayoutStyler.java
@@ -21,8 +21,7 @@
 import android.content.res.TypedArray;
 import android.os.Build.VERSION_CODES;
 import android.view.View;
-import android.widget.LinearLayout;
-import android.widget.LinearLayout.LayoutParams;
+import android.view.ViewGroup;
 import androidx.annotation.Nullable;
 import com.google.android.setupcompat.partnerconfig.PartnerConfig;
 import com.google.android.setupcompat.partnerconfig.PartnerConfigHelper;
@@ -121,8 +120,8 @@
       if (partnerMarginStartAvailable) {
         extraPaddingStart =
             ((int)
-                PartnerConfigHelper.get(context)
-                    .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_START))
+                    PartnerConfigHelper.get(context)
+                        .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_START))
                 - layoutMarginStart;
       } else {
         extraPaddingStart = view.getPaddingStart();
@@ -131,15 +130,15 @@
       if (partnerMarginEndAvailable) {
         extraPaddingEnd =
             ((int)
-                PartnerConfigHelper.get(context)
-                    .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_END))
+                    PartnerConfigHelper.get(context)
+                        .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_END))
                 - layoutMarginEnd;
         // If the view is a content view, padding start and padding end will be the same.
         if (view.getId() == R.id.sud_layout_content) {
           extraPaddingEnd =
               ((int)
-                  PartnerConfigHelper.get(context)
-                      .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_START))
+                      PartnerConfigHelper.get(context)
+                          .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_START))
                   - layoutMarginEnd;
         }
       } else {
@@ -156,8 +155,14 @@
           // The framelayout background maybe infected by this change.
           // Currently the content background is same as the activity background, and there is no
           // partner config to customize it.
-          LinearLayout.LayoutParams layoutParams = (LayoutParams) view.getLayoutParams();
-          layoutParams.setMargins(
+          ViewGroup.LayoutParams params = view.getLayoutParams();
+          ViewGroup.MarginLayoutParams marginLayoutParams;
+          if (params instanceof ViewGroup.MarginLayoutParams) {
+            marginLayoutParams = (ViewGroup.MarginLayoutParams) params;
+          } else {
+            marginLayoutParams = new ViewGroup.MarginLayoutParams(params);
+          }
+          marginLayoutParams.setMargins(
               extraPaddingStart, view.getPaddingTop(), extraPaddingEnd, view.getPaddingBottom());
         } else {
           view.setPadding(