Merge "Support Settings deep links highlighting the menu entries" into sc-v2-dev
diff --git a/libs/window_ext_lib.aar b/libs/window_ext_lib.aar
index c576270..ca58b36 100644
--- a/libs/window_ext_lib.aar
+++ b/libs/window_ext_lib.aar
Binary files differ
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 957efdf..c216258 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -370,8 +370,9 @@
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;
}
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
index d3d53a8..4060e53 100644
--- a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
+++ b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
@@ -29,6 +29,7 @@
import androidx.window.embedding.SplitPairFilter;
import androidx.window.embedding.SplitPairRule;
import androidx.window.embedding.SplitPlaceholderRule;
+import androidx.window.embedding.SplitRule;
import com.android.settings.Settings;
import com.android.settings.SubSettings;
@@ -81,8 +82,8 @@
secondaryIntentAction));
SplitController.getInstance().registerRule(new SplitPairRule(filters,
- finishPrimaryWithSecondary,
- finishSecondaryWithPrimary,
+ finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
+ finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
clearTop,
ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context),
ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context),
@@ -154,6 +155,8 @@
final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule(
activityFilters,
intent,
+ true /* stickyPlaceholder */,
+ SplitRule.FINISH_ADJACENT,
ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(mContext),
ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(mContext),
ActivityEmbeddingUtils.SPLIT_RATIO,
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index cd518a6..3741bfe 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -29,7 +29,6 @@
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 @@
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 @@
}
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 4249c44..90a86f1 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
@@ -28,7 +28,6 @@
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 @@
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 @@
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/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java
index f2e28a3..bd28e70 100644
--- a/src/com/android/settings/network/MobileNetworkSummaryController.java
+++ b/src/com/android/settings/network/MobileNetworkSummaryController.java
@@ -33,9 +33,9 @@
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 @@
|| 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;
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
index db002cb..0a48cd1 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 @@
verify(mMetricsFeatureProvider)
.action(
- mContext,
+ SettingsEnums.OPEN_APP_BATTERY_USAGE,
SettingsEnums.ACTION_APP_BATTERY_USAGE_OPTIMIZED,
- (Pair<Integer, Object>[]) 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 a9a743b..1d74491 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 @@
assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick(
mPowerGaugePreference)).isTrue();
verify(mMetricsFeatureProvider)
- .action(
- mContext,
- SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM,
- (Pair<Integer, Object>[]) 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 @@
assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick(
mPowerGaugePreference)).isTrue();
verify(mMetricsFeatureProvider)
- .action(
- mContext,
- SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM,
- (Pair<Integer, Object>[]) 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