From 105858cb31428fc7bfe7337b3eba10dd09b9b644 Mon Sep 17 00:00:00 2001 From: Pajace Chen Date: Wed, 22 May 2024 05:21:21 +0000 Subject: [PATCH] Revert^2 "Fix "Free up space" not clickable issue" 4916f22ad5a5c89c40deaf166d326337c76b418c Test: http://ab/I09800010279460954 Test: Build Pass Merged-In: I36062703b7ab5c21083459616234e3a86500719b Change-Id: Ib5d46196cf5f0326c7bb1686c609be386016f73d --- res/xml/power_usage_summary.xml | 2 +- .../BatteryTipPreferenceController.java | 4 +- .../batterytip/tips/BatteryDefenderTip.java | 5 +- .../fuelgauge/batterytip/tips/BatteryTip.java | 11 +- .../tips/IncompatibleChargerTip.java | 3 +- .../settings/widget/CardPreference.java | 164 ++++++++++ ...CardPreference.kt => TipCardPreference.kt} | 2 +- ...BatteryHeaderPreferenceControllerTest.java | 1 + .../settings/fuelgauge/BatteryInfoTest.java | 12 +- .../BatteryTipPreferenceControllerTest.java | 6 +- .../tips/BatteryDefenderTipTest.java | 8 +- .../batterytip/tips/BatteryTipTest.java | 4 +- .../tips/IncompatibleChargerTipTest.java | 6 +- .../settings/widget/CardPreferenceTest.java | 293 ++++++++++++++++++ ...erenceTest.kt => TipCardPreferenceTest.kt} | 8 +- 15 files changed, 494 insertions(+), 35 deletions(-) create mode 100644 src/com/android/settings/widget/CardPreference.java rename src/com/android/settings/widget/{CardPreference.kt => TipCardPreference.kt} (99%) create mode 100644 tests/robotests/src/com/android/settings/widget/CardPreferenceTest.java rename tests/spa_unit/src/com/android/settings/widget/{CardPreferenceTest.kt => TipCardPreferenceTest.kt} (98%) diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml index 1af8a8c2410..77c6b7322c2 100644 --- a/res/xml/power_usage_summary.xml +++ b/res/xml/power_usage_summary.xml @@ -33,7 +33,7 @@ android:selectable="false" settings:searchable="false" /> - diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java index 31cec6a46ba..e6f622cf00b 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java @@ -33,7 +33,7 @@ import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.overlay.FeatureFactory; -import com.android.settings.widget.CardPreference; +import com.android.settings.widget.TipCardPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import java.util.List; @@ -55,7 +55,7 @@ public class BatteryTipPreferenceController extends BasePreferenceController { private SettingsActivity mSettingsActivity; private MetricsFeatureProvider mMetricsFeatureProvider; private boolean mNeedUpdate; - @VisibleForTesting CardPreference mCardPreference; + @VisibleForTesting TipCardPreference mCardPreference; @VisibleForTesting Context mPrefContext; InstrumentedPreferenceFragment mFragment; diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java index 37162448b1b..dbe2722ebea 100644 --- a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java +++ b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java @@ -28,7 +28,6 @@ import androidx.preference.Preference; 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; @@ -80,9 +79,9 @@ public class BatteryDefenderTip extends BatteryTip { super.updatePreference(preference); final Context context = preference.getContext(); - CardPreference cardPreference = castToCardPreferenceSafely(preference); + var cardPreference = castToTipCardPreferenceSafely(preference); if (cardPreference == null) { - Log.e(TAG, "cast Preference to CardPreference failed"); + Log.e(TAG, "cast Preference to TipCardPreference failed"); return; } diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java index 1d08617a421..fe98708930c 100644 --- a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java +++ b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java @@ -23,10 +23,11 @@ import android.util.SparseIntArray; import androidx.annotation.DrawableRes; import androidx.annotation.IntDef; +import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; -import com.android.settings.widget.CardPreference; +import com.android.settings.widget.TipCardPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import java.lang.annotation.Retention; @@ -168,7 +169,7 @@ public abstract class BatteryTip implements Comparable, Parcelable { preference.setTitle(getTitle(context)); preference.setSummary(getSummary(context)); preference.setIcon(getIconId()); - final CardPreference cardPreference = castToCardPreferenceSafely(preference); + final TipCardPreference cardPreference = castToTipCardPreferenceSafely(preference); if (cardPreference != null) { cardPreference.resetLayoutState(); } @@ -209,7 +210,9 @@ public abstract class BatteryTip implements Comparable, Parcelable { return "type=" + mType + " state=" + mState; } - public CardPreference castToCardPreferenceSafely(Preference preference) { - return preference instanceof CardPreference ? (CardPreference) preference : null; + /** Returns the converted {@link TipCardPreference} if it is valid. */ + @Nullable + public TipCardPreference castToTipCardPreferenceSafely(Preference preference) { + return preference instanceof TipCardPreference ? (TipCardPreference) preference : null; } } diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java index 72c710c023f..7453dedf41c 100644 --- a/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java +++ b/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java @@ -26,7 +26,6 @@ import androidx.core.app.ActivityCompat; import androidx.preference.Preference; import com.android.settings.R; -import com.android.settings.widget.CardPreference; import com.android.settingslib.HelpUtils; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; @@ -74,7 +73,7 @@ public final class IncompatibleChargerTip extends BatteryTip { public void updatePreference(Preference preference) { super.updatePreference(preference); final Context context = preference.getContext(); - final CardPreference cardPreference = castToCardPreferenceSafely(preference); + final var cardPreference = castToTipCardPreferenceSafely(preference); if (cardPreference == null) { Log.e(TAG, "cast Preference to CardPreference failed"); return; diff --git a/src/com/android/settings/widget/CardPreference.java b/src/com/android/settings/widget/CardPreference.java new file mode 100644 index 00000000000..db6827efab8 --- /dev/null +++ b/src/com/android/settings/widget/CardPreference.java @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2019 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 com.android.settings.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.widget.Button; + +import androidx.annotation.Nullable; +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; + +import com.android.settings.R; + +import com.google.android.material.card.MaterialCardView; + +import java.util.Optional; + +/** Preference that wrapped by {@link MaterialCardView} */ +public class CardPreference extends Preference { + @Nullable private View.OnClickListener mPrimaryBtnClickListener = null; + @Nullable private View.OnClickListener mSecondaryBtnClickListener = null; + @Nullable private String mPrimaryButtonText = null; + @Nullable private String mSecondaryButtonText = null; + private Optional