Update defend tips card

 - Update defend tips card to unclickable
 - Update secondary button's action and content description
 screenshot: https://screenshot.googleplex.com/BYU8Mh5abJ9Tirh.png

Bug: 243769797
Bug: 243641857
Bug: 244219076
Test: make SettingsRoboTests
Change-Id: I7fdf5f7404d33f0374a992c83a7653a01b9f11bc
diff --git a/res/layout/card_preference.xml b/res/layout/card_preference.xml
index 39523eb..72e17ef 100644
--- a/res/layout/card_preference.xml
+++ b/res/layout/card_preference.xml
@@ -27,8 +27,6 @@
     android:clipToPadding="false"
     android:baselineAligned="false">
 
-    <include layout="@layout/card_preference_icon_frame"/>
-
     <RelativeLayout
         android:layout_width="0dp"
         android:layout_height="wrap_content"
@@ -36,10 +34,22 @@
         android:paddingTop="16dp"
         android:paddingBottom="16dp">
 
+        <LinearLayout
+            android:id="@+id/card_preference_parent"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignTop="@android:id/title"
+            android:layout_alignBottom="@android:id/summary"
+            android:gravity="center_vertical">
+
+            <include layout="@layout/card_preference_icon_frame"/>
+        </LinearLayout>
+
         <TextView
             android:id="@android:id/title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_toEndOf="@+id/card_preference_parent"
             android:maxLines="2"
             android:textAppearance="?android:attr/textAppearanceListItem"
             android:ellipsize="marquee"/>
@@ -61,7 +71,7 @@
             android:id="@+id/card_preference_buttons"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginTop="8dp"
+            android:layout_marginTop="24dp"
             android:layout_below="@android:id/summary"
             android:visibility="gone">
             <Button
@@ -69,7 +79,7 @@
                 style="@style/CardPreferencePrimaryButton"
                 android:layout_height="wrap_content"
                 android:layout_width="wrap_content"
-                android:layout_marginHorizontal="4dp"
+                android:layout_marginStart="20dp"
                 android:layout_toStartOf="@android:id/button2"
                 android:visibility="gone"/>
             <Button
@@ -77,7 +87,7 @@
                 style="@style/CardPreferenceBorderlessButton"
                 android:layout_height="wrap_content"
                 android:layout_width="wrap_content"
-                android:layout_marginHorizontal="4dp"
+                android:layout_marginHorizontal="20dp"
                 android:layout_alignParentEnd="true"
                 android:visibility="gone"/>
         </RelativeLayout>
diff --git a/res/layout/card_preference_layout.xml b/res/layout/card_preference_layout.xml
index 8373637..0cdcb17 100644
--- a/res/layout/card_preference_layout.xml
+++ b/res/layout/card_preference_layout.xml
@@ -20,7 +20,9 @@
     android:id="@+id/container"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_margin="8dp"
+    android:layout_marginVertical="8dp"
+    android:layout_marginStart="24dp"
+    android:layout_marginEnd="16dp"
     android:foreground="@drawable/contextual_card_background"
     android:clickable="true"
     style="@style/ContextualCardStyle">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1eaf28f..d2a3230 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6329,9 +6329,11 @@
     <!-- Title for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
     <string name="battery_tip_limited_temporarily_title">Charging is paused</string>
     <!-- Summary for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
-    <string name="battery_tip_limited_temporarily_summary">Protecting battery to extend battery lifespan\nTap to learn more</string>
+    <string name="battery_tip_limited_temporarily_summary">Protecting battery to extend battery lifespan</string>
     <!-- Summary for the battery limited temporarily extra tip [CHAR LIMIT=NONE] -->
     <string name="battery_tip_limited_temporarily_extra_summary"><xliff:g id="percent" example="10%">%1$s</xliff:g></string>
+    <!-- Content description for the battery limited temporarily tip secondary button [CHAR LIMIT=NONE] -->
+    <string name="battery_tip_limited_temporarily_sec_button_content_description">Learn more about charging is paused</string>
     <!-- Text of battery limited temporarily tip resume charge button. [CHAR LIMIT=NONE] -->
     <string name="battery_tip_limited_temporarily_dialog_resume_charge">Resume charging</string>
     <!-- Message of battery limited temporarily tip. [CHAR LIMIT=NONE] -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 8dee082..4fc6e9f 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -975,6 +975,7 @@
         <item name="android:textSize">14sp</item>
         <item name="android:textAllCaps">false</item>
         <item name="android:singleLine">true</item>
+        <item name="android:paddingHorizontal">24dp</item>
     </style>
 
     <style name="CardPreferenceBorderlessButton"
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java
index d12784f..4dcdc0c 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java
@@ -29,7 +29,6 @@
 import com.android.internal.util.CollectionUtils;
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.InstrumentedPreferenceFragment;
-import com.android.settings.fuelgauge.batterytip.actions.BatteryDefenderAction;
 import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
 import com.android.settings.fuelgauge.batterytip.actions.OpenBatterySaverAction;
 import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
@@ -107,8 +106,6 @@
                 }
             case BatteryTip.TipType.REMOVE_APP_RESTRICTION:
                 return new UnrestrictAppAction(settingsActivity, (UnrestrictAppTip) batteryTip);
-            case BatteryTip.TipType.BATTERY_DEFENDER:
-                return new BatteryDefenderAction(settingsActivity);
             default:
                 return null;
         }
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
index 5c0fc58..2fb5650 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
@@ -29,6 +29,7 @@
 import com.android.settings.R;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.widget.CardPreference;
+import com.android.settingslib.HelpUtils;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
 import java.text.NumberFormat;
@@ -48,6 +49,7 @@
     public BatteryDefenderTip(@StateType int state, boolean extraDefend) {
         super(TipType.BATTERY_DEFENDER, state, true /* showDialog */);
         mExtraDefend = extraDefend;
+        mShowDialog = false;
     }
 
     private BatteryDefenderTip(Parcel in) {
@@ -99,6 +101,7 @@
             return;
         }
 
+        cardPreference.setSelectable(false);
         cardPreference.setPrimaryButtonText(
                 context.getString(R.string.battery_tip_charge_to_full_button));
         cardPreference.setPrimaryButtonClickListener(
@@ -109,8 +112,15 @@
         cardPreference.setPrimaryButtonVisible(isPluggedIn(context));
 
         cardPreference.setSecondaryButtonText(context.getString(R.string.learn_more));
-        cardPreference.setSecondaryButtonClickListener(unused -> cardPreference.performClick());
+        cardPreference.setSecondaryButtonClickListener(
+                button -> button.startActivityForResult(
+                        HelpUtils.getHelpIntent(
+                                context,
+                                context.getString(R.string.help_url_battery_defender),
+                                /* backupContext */ ""), /* requestCode */ 0));
         cardPreference.setSecondaryButtonVisible(true);
+        cardPreference.setSecondaryButtonContentDescription(context.getString(
+                R.string.battery_tip_limited_temporarily_sec_button_content_description));
     }
 
     private CardPreference castToCardPreferenceSafely(Preference preference) {
diff --git a/src/com/android/settings/widget/CardPreference.java b/src/com/android/settings/widget/CardPreference.java
index afccfac..862a943 100644
--- a/src/com/android/settings/widget/CardPreference.java
+++ b/src/com/android/settings/widget/CardPreference.java
@@ -140,6 +140,15 @@
         updateButtonGroupsVisibility();
     }
 
+    /**
+     * Sets the text of content description on secondary button.
+     *
+     * @param text text for the content description
+     */
+    public void setSecondaryButtonContentDescription(String text) {
+        mSecondaryButton.ifPresent(button -> button.setContentDescription(text));
+    }
+
     private void updateButtonGroupsVisibility() {
         int visibility =
                 (mPrimaryButtonVisible || mSecondaryButtonVisible) ? View.VISIBLE : View.GONE;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java
index 29f4f14..3bb33c6 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java
@@ -23,7 +23,6 @@
 
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.InstrumentedPreferenceFragment;
-import com.android.settings.fuelgauge.batterytip.actions.BatteryDefenderAction;
 import com.android.settings.fuelgauge.batterytip.actions.OpenBatterySaverAction;
 import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
 import com.android.settings.fuelgauge.batterytip.actions.RestrictAppAction;
@@ -105,10 +104,10 @@
 
     @Test
     public void
-            testGetActionForBatteryTip_typeBatteryDefenderStateNew_returnActionBatteryDefender() {
+            testGetActionForBatteryTip_typeBatteryDefenderStateNew_returnNullAction() {
         when(mBatteryDefenderTip.getState()).thenReturn(BatteryTip.StateType.NEW);
 
         assertThat(BatteryTipUtils.getActionForBatteryTip(mBatteryDefenderTip, mSettingsActivity,
-                mFragment)).isInstanceOf(BatteryDefenderAction.class);
+                mFragment)).isNull();
     }
 }