Migrate more subsetting launching to SubSettingLauncher
Bug: 73250851
Test: robotests
Change-Id: Ic0bf23f6ac6f717bdd3d477fdb84af68badae8e6
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 76b48d1..84b1071 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -59,6 +59,7 @@
import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.backup.BackupSettingsActivity;
import com.android.settings.core.FeatureFlags;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.gateway.SettingsGateway;
import com.android.settings.dashboard.DashboardFeatureProvider;
import com.android.settings.dashboard.DashboardSummary;
@@ -612,11 +613,10 @@
* @param fragmentClass Full name of the class implementing the fragment.
* @param args Any desired arguments to supply to the fragment.
* @param titleRes Optional resource identifier of the title of this fragment.
- * @param titleText Optional text of the title of this fragment.
* @param userHandle The user for which the panel has to be started.
*/
public void startPreferencePanelAsUser(Fragment caller, String fragmentClass,
- Bundle args, int titleRes, CharSequence titleText, UserHandle userHandle) {
+ Bundle args, int titleRes, UserHandle userHandle) {
// This is a workaround.
//
// Calling startWithFragmentAsUser() without specifying FLAG_ACTIVITY_NEW_TASK to the intent
@@ -628,19 +628,17 @@
// another check here to call startPreferencePanel() instead of startWithFragmentAsUser()
// when we're calling it as the same user.
if (userHandle.getIdentifier() == UserHandle.myUserId()) {
- startPreferencePanel(caller, fragmentClass, args, titleRes, titleText, null, 0);
+ startPreferencePanel(caller, fragmentClass, args, titleRes, null /* titleText */,
+ null, 0);
} else {
- String title = null;
- if (titleRes < 0) {
- if (titleText != null) {
- title = titleText.toString();
- } else {
- // There not much we can do in that case
- title = "";
- }
- }
- Utils.startWithFragmentAsUser(this, fragmentClass, args, titleRes, title,
- mIsShortcut, mMetricsFeatureProvider.getMetricsCategory(caller), userHandle);
+ new SubSettingLauncher(this)
+ .setDestination(fragmentClass)
+ .setArguments(args)
+ .setTitle(titleRes)
+ .setIsShortCut(mIsShortcut)
+ .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(caller))
+ .setUserHandle(userHandle)
+ .launch();
}
}
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index a989c34..7b3f73e 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -481,22 +481,6 @@
}
}
- public static void startWithFragmentAsUser(Context context, String fragmentName, Bundle args,
- int titleResId, CharSequence title, boolean isShortcut, int metricsCategory,
- UserHandle userHandle) {
- // workaround to avoid crash in b/17523189
- if (userHandle.getIdentifier() == UserHandle.myUserId()) {
- startWithFragment(context, fragmentName, args, null, 0, titleResId, title, isShortcut,
- metricsCategory);
- } else {
- Intent intent = onBuildStartFragmentIntent(context, fragmentName, args,
- null /* titleResPackageName */, titleResId, title, isShortcut, metricsCategory);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
- context.startActivityAsUser(intent, userHandle);
- }
- }
-
/**
* Build an Intent to launch a new activity showing the selected fragment.
* The implementation constructs an Intent that re-launches the current activity with the
diff --git a/src/com/android/settings/bluetooth/BluetoothMasterSwitchPreferenceController.java b/src/com/android/settings/bluetooth/BluetoothMasterSwitchPreferenceController.java
index 331907b..35b7c27 100644
--- a/src/com/android/settings/bluetooth/BluetoothMasterSwitchPreferenceController.java
+++ b/src/com/android/settings/bluetooth/BluetoothMasterSwitchPreferenceController.java
@@ -88,7 +88,7 @@
public boolean handlePreferenceTreeClick(Preference preference) {
if (KEY_TOGGLE_BLUETOOTH.equals(preference.getKey())) {
mActivity.startPreferencePanelAsUser(mFragment, BluetoothSettings.class.getName(), null,
- R.string.bluetooth, null, new UserHandle(UserHandle.myUserId()));
+ R.string.bluetooth, new UserHandle(UserHandle.myUserId()));
return true;
}
return super.handlePreferenceTreeClick(preference);
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java b/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java
index 8ac64e8..89826fe 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java
@@ -60,7 +60,7 @@
public boolean handlePreferenceTreeClick(Preference preference) {
if (KEY_PAIRING.equals(preference.getKey())) {
mActivity.startPreferencePanelAsUser(mFragment, BluetoothPairingDetail.class.getName(),
- null, R.string.bluetooth_pairing_page_title, null,
+ null, R.string.bluetooth_pairing_page_title,
new UserHandle(UserHandle.myUserId()));
return true;
}
diff --git a/src/com/android/settings/core/SubSettingLauncher.java b/src/com/android/settings/core/SubSettingLauncher.java
index a787972..8e0f859 100644
--- a/src/com/android/settings/core/SubSettingLauncher.java
+++ b/src/com/android/settings/core/SubSettingLauncher.java
@@ -23,6 +23,7 @@
import android.os.Bundle;
import android.os.UserHandle;
import android.support.annotation.VisibleForTesting;
+import android.text.TextUtils;
import com.android.settings.SettingsActivity;
import com.android.settings.SubSettings;
@@ -102,8 +103,17 @@
mLaunched = true;
final Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClass(mContext, SubSettings.class);
-
+ if (TextUtils.isEmpty(mLaunchRequest.destinationName)) {
+ throw new IllegalArgumentException("Destination fragment must be set");
+ }
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, mLaunchRequest.destinationName);
+
+ if (mLaunchRequest.sourceMetricsCategory <= 0) {
+ throw new IllegalArgumentException("Source metrics category must be set");
+ }
+ intent.putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY,
+ mLaunchRequest.sourceMetricsCategory);
+
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, mLaunchRequest.arguments);
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RES_PACKAGE_NAME,
mLaunchRequest.titleResPackageName);
@@ -112,8 +122,6 @@
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, mLaunchRequest.title);
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SHORTCUT,
mLaunchRequest.isShortCut);
- intent.putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY,
- mLaunchRequest.sourceMetricsCategory);
intent.addFlags(mLaunchRequest.flags);
if (mLaunchRequest.userHandle != null
@@ -150,7 +158,7 @@
String titleResPackageName;
CharSequence title;
boolean isShortCut;
- int sourceMetricsCategory;
+ int sourceMetricsCategory = -100;
int flags;
Fragment mResultListener;
int mRequestCode;
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index 981b0dc..6cf07a4 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -45,20 +45,20 @@
import com.android.settings.Utils;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.fuelgauge.anomaly.AnomalyUtils;
-import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
-import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
-import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settings.fuelgauge.anomaly.Anomaly;
import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment;
import com.android.settings.fuelgauge.anomaly.AnomalyLoader;
import com.android.settings.fuelgauge.anomaly.AnomalySummaryPreferenceController;
+import com.android.settings.fuelgauge.anomaly.AnomalyUtils;
+import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
+import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.widget.EntityHeaderController;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
-
import com.android.settingslib.utils.StringUtil;
+
import java.util.ArrayList;
import java.util.List;
@@ -158,7 +158,7 @@
args.putParcelableList(EXTRA_ANOMALY_LIST, anomalies);
caller.startPreferencePanelAsUser(fragment, AdvancedPowerUsageDetail.class.getName(), args,
- R.string.battery_details_title, null,
+ R.string.battery_details_title,
new UserHandle(getUserIdToLaunchAdvancePowerUsageDetail(sipper)));
}
@@ -189,7 +189,7 @@
}
caller.startPreferencePanelAsUser(fragment, AdvancedPowerUsageDetail.class.getName(), args,
- R.string.battery_details_title, null, new UserHandle(UserHandle.myUserId()));
+ R.string.battery_details_title, new UserHandle(UserHandle.myUserId()));
}
@Override
diff --git a/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java b/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java
index 143733d..c7972e2 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java
@@ -17,7 +17,6 @@
package com.android.settings.fuelgauge;
import android.content.Context;
-import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -69,8 +68,7 @@
args.putParcelableList(EXTRA_ANOMALY_LIST, anomalies);
caller.startPreferencePanelAsUser(fragment, PowerUsageAnomalyDetails.class.getName(), args,
- R.string.battery_abnormal_details_title, null,
- new UserHandle(UserHandle.myUserId()));
+ R.string.battery_abnormal_details_title, new UserHandle(UserHandle.myUserId()));
}
@Override
diff --git a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
index e09a8a3..3045261 100644
--- a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
+++ b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
@@ -66,7 +66,7 @@
args.putParcelableList(EXTRA_PACKAGE_OPS_LIST, packageOpsList);
caller.startPreferencePanelAsUser(fragment, RestrictedAppDetails.class.getName(), args,
- R.string.restricted_app_title, null /* titleText */,
+ R.string.restricted_app_title,
new UserHandle(UserHandle.myUserId()));
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java
index cbd1581..58a95ac 100644
--- a/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java
+++ b/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java
@@ -18,12 +18,10 @@
import android.app.Fragment;
import android.os.UserHandle;
-import android.support.v14.preference.PreferenceFragment;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.fuelgauge.SmartBatterySettings;
-import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class SmartBatteryAction extends BatteryTipAction {
private SettingsActivity mSettingsActivity;
@@ -42,7 +40,7 @@
public void handlePositiveAction() {
mSettingsActivity.startPreferencePanelAsUser(mFragment,
SmartBatterySettings.class.getName(), null /* args */,
- R.string.smart_battery_manager_title, null /* titleText */,
+ R.string.smart_battery_manager_title,
new UserHandle(UserHandle.myUserId()));
}
}
diff --git a/src/com/android/settings/location/RecentLocationRequestPreferenceController.java b/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
index b17d19e..afcdb64 100644
--- a/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
+++ b/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
@@ -60,7 +60,7 @@
((SettingsActivity) mFragment.getActivity()).startPreferencePanelAsUser(
mFragment,
AppInfoDashboardFragment.class.getName(), args,
- R.string.application_info_label, null, mUserHandle);
+ R.string.application_info_label, mUserHandle);
return true;
}
}
diff --git a/src/com/android/settings/vpn2/AppManagementFragment.java b/src/com/android/settings/vpn2/AppManagementFragment.java
index 9e215d1..b554c83 100644
--- a/src/com/android/settings/vpn2/AppManagementFragment.java
+++ b/src/com/android/settings/vpn2/AppManagementFragment.java
@@ -44,7 +44,7 @@
import com.android.internal.util.ArrayUtils;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.Utils;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.RestrictedSwitchPreference;
@@ -100,10 +100,15 @@
};
public static void show(Context context, AppPreference pref, int sourceMetricsCategory) {
- Bundle args = new Bundle();
+ final Bundle args = new Bundle();
args.putString(ARG_PACKAGE_NAME, pref.getPackageName());
- Utils.startWithFragmentAsUser(context, AppManagementFragment.class.getName(), args, -1,
- pref.getLabel(), false, sourceMetricsCategory, new UserHandle(pref.getUserId()));
+ new SubSettingLauncher(context)
+ .setDestination(AppManagementFragment.class.getName())
+ .setArguments(args)
+ .setTitle(pref.getLabel())
+ .setSourceMetricsCategory(sourceMetricsCategory)
+ .setUserHandle(new UserHandle(pref.getUserId()))
+ .launch();
}
@Override