From 0c0daf7034277012be2dd4d4ba9ce58cf2eaa272 Mon Sep 17 00:00:00 2001 From: tom hsu Date: Tue, 9 Nov 2021 21:11:56 +0800 Subject: [PATCH 1/5] Let activity of "add language" fit settingsactivity style. Bug: 202104027 Test: Maunal test. see b/202104027#5 Change-Id: I1f087885912179bb501ae72d0eb50bb8280dcbc0 --- .../localepicker/LocalePickerWithRegionActivity.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java b/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java index 6ddcf2396c9..bcc55e3a2db 100644 --- a/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java +++ b/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java @@ -16,7 +16,6 @@ package com.android.settings.localepicker; -import android.app.Activity; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; @@ -24,8 +23,11 @@ import android.view.MenuItem; import com.android.internal.app.LocalePickerWithRegion; import com.android.internal.app.LocaleStore; +import com.android.settings.R; +import com.android.settings.core.SettingsBaseActivity; -public class LocalePickerWithRegionActivity extends Activity +/** A activity to show the locale picker page. */ +public class LocalePickerWithRegionActivity extends SettingsBaseActivity implements LocalePickerWithRegion.LocaleSelectedListener { private static final String PARENT_FRAGMENT_NAME = "localeListEditor"; @@ -40,7 +42,7 @@ public class LocalePickerWithRegionActivity extends Activity getFragmentManager() .beginTransaction() .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) - .replace(android.R.id.content, selector) + .replace(R.id.content_frame, selector) .addToBackStack(PARENT_FRAGMENT_NAME) .commit(); } From 64e49a93936203aa68e3f5f81de6a2994e6c9d60 Mon Sep 17 00:00:00 2001 From: ykhung Date: Wed, 10 Nov 2021 00:03:21 +0800 Subject: [PATCH 2/5] Fix "battery saver" not in the top seaching result for indexing Bug: 204964119 Test: make SettingsRoboTests Change-Id: Ifbbf979abe9e96e7af66ec20173e996793d2703e --- .../android/settings/fuelgauge/BatterySaverController.java | 2 +- .../settings/fuelgauge/BatterySaverControllerTest.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/fuelgauge/BatterySaverController.java b/src/com/android/settings/fuelgauge/BatterySaverController.java index 15070c3e8d2..c712ab0f752 100644 --- a/src/com/android/settings/fuelgauge/BatterySaverController.java +++ b/src/com/android/settings/fuelgauge/BatterySaverController.java @@ -63,7 +63,7 @@ public class BatterySaverController extends BasePreferenceController @Override public int getAvailabilityStatus() { - return AVAILABLE_UNSEARCHABLE; + return AVAILABLE; } @Override diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java index 52060a0dbcf..ddb9860838e 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java @@ -117,4 +117,10 @@ public class BatterySaverControllerTest { assertThat(mBatterySaverController.getSummary()).isEqualTo("Off"); } + + @Test + public void getAvailabilityStatus_returnAvailable() { + assertThat(mBatterySaverController.getAvailabilityStatus()) + .isEqualTo(BatterySaverController.AVAILABLE); + } } From 80887b6be3c043ed04f93a6c57fe6a1dfe2e0a4c Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Wed, 10 Nov 2021 14:38:55 +0800 Subject: [PATCH 3/5] [Large screen] Shows MobileNetworkActivity in 2-pane MobileNetworkActivity has launchMode singleTask, it makes the Activity shows in full screen instead of 2-pane. This change register SplitPairRule for the Activity to show in 2-pane. However, there are other objects which starts MobileNetworkActivity, it still needs later CL to refine and register SplitPairRule for other objects which starts MobileNetworkActivity. Bug: 204039043 Test: manual Settings -> Network & Internet -> SIMs Change-Id: Ia15c17c88efd46c5bb2b41aa21848293b9ff5610 --- .../settings/network/MobileNetworkSummaryController.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java index f2e28a33888..bd28e70255d 100644 --- a/src/com/android/settings/network/MobileNetworkSummaryController.java +++ b/src/com/android/settings/network/MobileNetworkSummaryController.java @@ -33,9 +33,9 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; +import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.network.helper.SelectableSubscriptions; import com.android.settings.network.helper.SubscriptionAnnotation; import com.android.settings.network.telephony.MobileNetworkActivity; import com.android.settings.overlay.FeatureFactory; @@ -202,6 +202,12 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController || mStatusCache.isPhysicalSimDisableSupport()) { final Intent intent = new Intent(mContext, MobileNetworkActivity.class); intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId()); + // MobilenetworkActivity is singleTask, set SplitPairRule to show in 2-pane. + ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome( + mContext, + intent.getComponent(), + null /* secondaryIntentAction */, + false /* clearTop */); mContext.startActivity(intent); return true; } From 101dc6878af72ae991044648272cc48bead81d47 Mon Sep 17 00:00:00 2001 From: ykhung Date: Wed, 10 Nov 2021 10:28:26 +0800 Subject: [PATCH 4/5] Fix incorrect usage for the logging method to cause no data in WW Fix incorrect usage for the logging method to cause the schedule type and percentage data is not logged into the WW, since MetricsFeatureProvider doesn't support log Pair.of() data into the WestWorld or Clearcut directly, it is used for EventLogWriter only Bug: 202906853 Test: make SettingsRoboTests Change-Id: I9f1d157c77df9bd74f441105318790a2505a9c01 --- .../fuelgauge/AdvancedPowerUsageDetail.java | 14 +++++----- .../BatteryChartPreferenceController.java | 16 +++++------ .../AdvancedPowerUsageDetailTest.java | 9 +++--- .../BatteryChartPreferenceControllerTest.java | 28 ++++++++----------- 4 files changed, 31 insertions(+), 36 deletions(-) diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java index cd518a6018f..3741bfe8045 100644 --- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java @@ -29,7 +29,6 @@ import android.os.UserHandle; import android.text.TextUtils; import android.text.format.DateUtils; import android.util.Log; -import android.util.Pair; import android.view.View; import androidx.annotation.VisibleForTesting; @@ -87,6 +86,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements private static final String KEY_PREF_OPTIMIZED = "optimized_pref"; private static final String KEY_PREF_RESTRICTED = "restricted_pref"; private static final String KEY_FOOTER_PREFERENCE = "app_usage_footer_preference"; + private static final String PACKAGE_NAME_NONE = "none"; private static final int REQUEST_UNINSTALL = 0; private static final int REQUEST_REMOVE_DEVICE_ADMIN = 1; @@ -484,14 +484,14 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements } if (metricCategory != 0) { + final String packageName = mBatteryOptimizeUtils.getPackageName(); FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider() .action( - getContext(), - metricCategory, - new Pair(ConvertUtils.METRIC_KEY_PACKAGE, - mBatteryOptimizeUtils.getPackageName()), - new Pair(ConvertUtils.METRIC_KEY_BATTERY_USAGE, - getArguments().getString(EXTRA_POWER_USAGE_PERCENT))); + /* attribution */ SettingsEnums.OPEN_APP_BATTERY_USAGE, + /* action */ metricCategory, + /* pageId */ SettingsEnums.OPEN_APP_BATTERY_USAGE, + TextUtils.isEmpty(packageName) ? PACKAGE_NAME_NONE : packageName, + getArguments().getInt(EXTRA_POWER_USAGE_AMOUNT)); } } diff --git a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java index 4249c44493f..90a86f165c4 100644 --- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java @@ -28,7 +28,6 @@ import android.text.TextUtils; import android.text.format.DateFormat; import android.text.format.DateUtils; import android.util.Log; -import android.util.Pair; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; @@ -65,6 +64,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll ExpandDividerPreference.OnExpandListener { private static final String TAG = "BatteryChartPreferenceController"; private static final String KEY_FOOTER_PREF = "battery_graph_footer"; + private static final String PACKAGE_NAME_NONE = "none"; /** Desired battery history size for timestamp slots. */ public static final int DESIRED_HISTORY_SIZE = 25; @@ -223,13 +223,13 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll final String packageName = histEntry.mPackageName; final boolean isAppEntry = histEntry.isAppEntry(); mMetricsFeatureProvider.action( - mPrefContext, - isAppEntry - ? SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM - : SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM, - new Pair(ConvertUtils.METRIC_KEY_PACKAGE, packageName), - new Pair(ConvertUtils.METRIC_KEY_BATTERY_LEVEL, histEntry.mBatteryLevel), - new Pair(ConvertUtils.METRIC_KEY_BATTERY_USAGE, powerPref.getPercent())); + /* attribution */ SettingsEnums.OPEN_BATTERY_USAGE, + /* action */ isAppEntry + ? SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM + : SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM, + /* pageId */ SettingsEnums.OPEN_BATTERY_USAGE, + TextUtils.isEmpty(packageName) ? PACKAGE_NAME_NONE : packageName, + (int) Math.round(diffEntry.getPercentOfTotal())); Log.d(TAG, String.format("handleClick() label=%s key=%s package=%s", diffEntry.getAppLabel(), histEntry.getKey(), histEntry.mPackageName)); AdvancedPowerUsageDetail.startBatteryDetailPage( diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java index db002cb047f..0a48cd1b12f 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java @@ -806,12 +806,11 @@ public class AdvancedPowerUsageDetailTest { verify(mMetricsFeatureProvider) .action( - mContext, + SettingsEnums.OPEN_APP_BATTERY_USAGE, SettingsEnums.ACTION_APP_BATTERY_USAGE_OPTIMIZED, - (Pair[]) new Pair[] { - new Pair(ConvertUtils.METRIC_KEY_PACKAGE, null), - new Pair(ConvertUtils.METRIC_KEY_BATTERY_USAGE, "app label") - }); + SettingsEnums.OPEN_APP_BATTERY_USAGE, + /* package name*/ "none", + /* consumed battery */ 0); } @Test diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java index a9a743b2af2..1d74491a0e1 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java @@ -343,14 +343,12 @@ public final class BatteryChartPreferenceControllerTest { assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick( mPowerGaugePreference)).isTrue(); verify(mMetricsFeatureProvider) - .action( - mContext, - SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM, - (Pair[]) new Pair[] { - new Pair(ConvertUtils.METRIC_KEY_PACKAGE, null), - new Pair(ConvertUtils.METRIC_KEY_BATTERY_LEVEL, 0), - new Pair(ConvertUtils.METRIC_KEY_BATTERY_USAGE, null) - }); + .action( + SettingsEnums.OPEN_BATTERY_USAGE, + SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM, + SettingsEnums.OPEN_BATTERY_USAGE, + /* package name */ "none", + /* percentage of total */ 0); } @Test @@ -362,14 +360,12 @@ public final class BatteryChartPreferenceControllerTest { assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick( mPowerGaugePreference)).isTrue(); verify(mMetricsFeatureProvider) - .action( - mContext, - SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM, - (Pair[]) new Pair[] { - new Pair(ConvertUtils.METRIC_KEY_PACKAGE, null), - new Pair(ConvertUtils.METRIC_KEY_BATTERY_LEVEL, 0), - new Pair(ConvertUtils.METRIC_KEY_BATTERY_USAGE, null) - }); + .action( + SettingsEnums.OPEN_BATTERY_USAGE, + SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM, + SettingsEnums.OPEN_BATTERY_USAGE, + /* package name */ "none", + /* percentage of total */ 0); } @Test From 0f5e75e098188f1864755428ea9424bc37603ea6 Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Wed, 10 Nov 2021 12:02:46 +0800 Subject: [PATCH 5/5] [Large sceen] Don't go Settings 2-pane deep link flow if not task root When a full screen or a non-Settings-app ActivityA starts ActivityB of a SettingsActivity, splitInfos will be empty and it unexpectedly goes Settings 2-pane deep link flow. This change checks if an Activity is not task root, don't go Settings 2-pane deep link flow. Bug: 205497007 Test: manual SUW -> Vision settings Check if it goes Settings 2-pane deep link flow. Change-Id: I0822fbe71fdde47ce7c070986371a4dfea84992c --- src/com/android/settings/SettingsActivity.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 957efdf7bed..c21625881fa 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -370,8 +370,9 @@ public class SettingsActivity extends SettingsBaseActivity final SplitStateObserver splitStateObserver = new SplitStateObserver(this /* activity*/, true /* listenOnce */, splitInfos -> { - if (!splitInfos.isEmpty()) { - // It's already in 2-pane and no need to go 2-pane deep link flow. + if (!splitInfos.isEmpty() || !SettingsActivity.this.isTaskRoot()) { + // It's already in 2-pane or in a non-empty task, there is no need to go + // 2-pane deep link flow. return; }