Migrate more settings to use SubSettingsLauncher

Bug: 73250851
Test: robotests
Change-Id: I08f6f380489646231d6d8ceb1488e2efb036bf69
This commit is contained in:
Fan Zhang
2018-02-16 10:37:37 -08:00
parent 6f367a79ce
commit 7cf99f5f12
26 changed files with 260 additions and 197 deletions

View File

@@ -56,6 +56,7 @@ import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.ConfirmLockPattern; import com.android.settings.password.ConfirmLockPattern;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
@@ -156,12 +157,15 @@ public class MasterClear extends InstrumentedFragment {
@VisibleForTesting @VisibleForTesting
void showFinalConfirmation() { void showFinalConfirmation() {
Bundle args = new Bundle(); final Bundle args = new Bundle();
args.putBoolean(ERASE_EXTERNAL_EXTRA, mExternalStorage.isChecked()); args.putBoolean(ERASE_EXTERNAL_EXTRA, mExternalStorage.isChecked());
args.putBoolean(ERASE_ESIMS_EXTRA, mEsimStorage.isChecked()); args.putBoolean(ERASE_ESIMS_EXTRA, mEsimStorage.isChecked());
((SettingsActivity) getActivity()).startPreferencePanel( new SubSettingLauncher(getContext())
this, MasterClearConfirm.class.getName(), .setDestination(MasterClearConfirm.class.getName())
args, R.string.master_clear_confirm_title, null, null, 0); .setArguments(args)
.setTitle(R.string.master_clear_confirm_title)
.setSourceMetricsCategory(getMetricsCategory())
.launch();
} }
@VisibleForTesting @VisibleForTesting

View File

@@ -44,6 +44,7 @@ import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.PhoneConstants;
import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.ConfirmLockPattern; import com.android.settings.password.ConfirmLockPattern;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
@@ -118,9 +119,12 @@ public class ResetNetwork extends InstrumentedFragment {
args.putInt(PhoneConstants.SUBSCRIPTION_KEY, subscription.getSubscriptionId()); args.putInt(PhoneConstants.SUBSCRIPTION_KEY, subscription.getSubscriptionId());
} }
args.putBoolean(MasterClear.ERASE_ESIMS_EXTRA, mEsimCheckbox.isChecked()); args.putBoolean(MasterClear.ERASE_ESIMS_EXTRA, mEsimCheckbox.isChecked());
((SettingsActivity) getActivity()).startPreferencePanel( new SubSettingLauncher(getContext())
this, ResetNetworkConfirm.class.getName(), .setDestination(ResetNetworkConfirm.class.getName())
args, R.string.reset_network_confirm_title, null, null, 0); .setArguments(args)
.setTitle(R.string.reset_network_confirm_title)
.setSourceMetricsCategory(getMetricsCategory())
.launch();
} }
/** /**

View File

@@ -66,6 +66,7 @@ import com.android.settings.dashboard.DashboardSummary;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wfd.WifiDisplaySettings; import com.android.settings.wfd.WifiDisplaySettings;
import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBar;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.instrumentation.SharedPreferencesLogger; import com.android.settingslib.core.instrumentation.SharedPreferencesLogger;
import com.android.settingslib.development.DevelopmentSettingsEnabler; import com.android.settingslib.development.DevelopmentSettingsEnabler;
@@ -200,7 +201,14 @@ public class SettingsActivity extends SettingsDrawerActivity
@Override @Override
public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) { public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) {
startPreferencePanel(caller, pref.getFragment(), pref.getExtras(), -1, null, null, 0); new SubSettingLauncher(this)
.setDestination(pref.getFragment())
.setArguments(pref.getExtras())
.setSourceMetricsCategory(caller instanceof Instrumentable
? ((Instrumentable) caller).getMetricsCategory()
: Instrumentable.METRICS_CATEGORY_UNKNOWN)
.setTitle(-1)
.launch();
return true; return true;
} }
@@ -594,6 +602,7 @@ public class SettingsActivity extends SettingsDrawerActivity
* @param resultRequestCode If resultTo is non-null, this is the caller's * @param resultRequestCode If resultTo is non-null, this is the caller's
* request code to be received with the result. * request code to be received with the result.
*/ */
@Deprecated
public void startPreferencePanel(Fragment caller, String fragmentClass, Bundle args, public void startPreferencePanel(Fragment caller, String fragmentClass, Bundle args,
int titleRes, CharSequence titleText, Fragment resultTo, int resultRequestCode) { int titleRes, CharSequence titleText, Fragment resultTo, int resultRequestCode) {
String title = null; String title = null;

View File

@@ -47,10 +47,10 @@ import android.util.SparseArray;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.AccessiblePreferenceCategory; import com.android.settings.AccessiblePreferenceCategory;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.SearchIndexableRaw; import com.android.settings.search.SearchIndexableRaw;
import com.android.settingslib.RestrictedPreference; import com.android.settingslib.RestrictedPreference;
@@ -246,19 +246,19 @@ public class AccountPreferenceController extends AbstractPreferenceController
if (preference == profileData.managedProfilePreference) { if (preference == profileData.managedProfilePreference) {
Bundle arguments = new Bundle(); Bundle arguments = new Bundle();
arguments.putParcelable(Intent.EXTRA_USER, profileData.userInfo.getUserHandle()); arguments.putParcelable(Intent.EXTRA_USER, profileData.userInfo.getUserHandle());
((SettingsActivity) mParent.getActivity()).startPreferencePanel(mParent, new SubSettingLauncher(mContext)
ManagedProfileSettings.class.getName(), arguments, .setSourceMetricsCategory(mParent.getMetricsCategory())
R.string.managed_profile_settings_title, null, null, 0); .setDestination(ManagedProfileSettings.class.getName())
.setTitle(R.string.managed_profile_settings_title)
.setArguments(arguments)
.launch();
return true; return true;
} }
} }
return false; return false;
} }
SparseArray<ProfileData> getProfileData() {
return mProfiles;
}
private void updateUi() { private void updateUi() {
if (!isAvailable()) { if (!isAvailable()) {
// This should not happen // This should not happen

View File

@@ -38,10 +38,11 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.location.LocationSettings; import com.android.settings.location.LocationSettings;
import com.android.settings.utils.LocalClassLoaderContextThemeWrapper; import com.android.settings.utils.LocalClassLoaderContextThemeWrapper;
import com.android.settingslib.accounts.AuthenticatorHelper; import com.android.settingslib.accounts.AuthenticatorHelper;
import com.android.settingslib.core.instrumentation.Instrumentable;
/** /**
* Class to load the preference screen to be added to the settings page for the specific account * Class to load the preference screen to be added to the settings page for the specific account
@@ -230,8 +231,15 @@ public class AccountTypePreferenceLoader {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
((SettingsActivity) mFragment.getActivity()).startPreferencePanel(mFragment, final int metricsCategory = (mFragment instanceof Instrumentable)
mClass, null, mTitleRes, null, null, 0); ? ((Instrumentable) mFragment).getMetricsCategory()
: Instrumentable.METRICS_CATEGORY_UNKNOWN;
new SubSettingLauncher(preference.getContext())
.setTitle(mTitleRes)
.setDestination(mClass)
.setSourceMetricsCategory(metricsCategory)
.launch();
// Hack: announce that the Google account preferences page is launching the location // Hack: announce that the Google account preferences page is launching the location
// settings // settings
if (mClass.equals(LocationSettings.class.getName())) { if (mClass.equals(LocationSettings.class.getName())) {

View File

@@ -27,15 +27,14 @@ import android.widget.Button;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.password.ChooseLockSettingsHelper;
/* Class to prompt for conversion of userdata to file based encryption /* Class to prompt for conversion of userdata to file based encryption
*/ */
public class ConvertToFbe extends InstrumentedFragment { public class ConvertToFbe extends InstrumentedFragment {
static final String TAG = "ConvertToFBE"; static final String TAG = "ConvertToFBE";
static final String CONVERT_FBE_EXTRA = "ConvertFBE";
private static final int KEYGUARD_REQUEST = 55; private static final int KEYGUARD_REQUEST = 55;
private boolean runKeyguardConfirmation(int request) { private boolean runKeyguardConfirmation(int request) {
@@ -56,13 +55,11 @@ public class ConvertToFbe extends InstrumentedFragment {
Bundle savedInstanceState) { Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.convert_fbe, null); View rootView = inflater.inflate(R.layout.convert_fbe, null);
final Button button = (Button) rootView.findViewById(R.id.button_convert_fbe); final Button button = rootView.findViewById(R.id.button_convert_fbe);
button.setOnClickListener(new View.OnClickListener() { button.setOnClickListener(v -> {
public void onClick(View v) { if (!runKeyguardConfirmation(KEYGUARD_REQUEST)) {
if(!runKeyguardConfirmation(KEYGUARD_REQUEST)) {
convert(); convert();
} }
}
}); });
return rootView; return rootView;
@@ -84,9 +81,11 @@ public class ConvertToFbe extends InstrumentedFragment {
} }
private void convert() { private void convert() {
SettingsActivity sa = (SettingsActivity) getActivity(); new SubSettingLauncher(getContext())
sa.startPreferencePanel(this, ConfirmConvertToFbe.class.getName(), null, .setDestination(ConfirmConvertToFbe.class.getName())
R.string.convert_to_file_encryption, null, null, 0); .setTitle(R.string.convert_to_file_encryption)
.setSourceMetricsCategory(getMetricsCategory())
.launch();
} }
@Override @Override

View File

@@ -28,6 +28,8 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.ProcStatsData.MemInfo; import com.android.settings.applications.ProcStatsData.MemInfo;
import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.core.instrumentation.Instrumentable;
public abstract class ProcessStatsBase extends SettingsPreferenceFragment public abstract class ProcessStatsBase extends SettingsPreferenceFragment
implements OnItemSelectedListener { implements OnItemSelectedListener {
@@ -45,7 +47,7 @@ public abstract class ProcessStatsBase extends SettingsPreferenceFragment
// beyond it. // beyond it.
private static final long DURATION_QUANTUM = ProcessStats.COMMIT_PERIOD; private static final long DURATION_QUANTUM = ProcessStats.COMMIT_PERIOD;
public static long[] sDurations = new long[] { public static long[] sDurations = new long[] {
3 * 60 * 60 * 1000 - DURATION_QUANTUM / 2, 6 * 60 *60 * 1000 - DURATION_QUANTUM / 2, 3 * 60 * 60 * 1000 - DURATION_QUANTUM / 2, 6 * 60 * 60 * 1000 - DURATION_QUANTUM / 2,
12 * 60 * 60 * 1000 - DURATION_QUANTUM / 2, 24 * 60 * 60 * 1000 - DURATION_QUANTUM / 2 12 * 60 * 60 * 1000 - DURATION_QUANTUM / 2, 24 * 60 * 60 * 1000 - DURATION_QUANTUM / 2
}; };
protected static int[] sDurationLabels = new int[] { protected static int[] sDurationLabels = new int[] {
@@ -137,7 +139,11 @@ public abstract class ProcessStatsBase extends SettingsPreferenceFragment
args.putDouble(ProcessStatsDetail.EXTRA_MAX_MEMORY_USAGE, args.putDouble(ProcessStatsDetail.EXTRA_MAX_MEMORY_USAGE,
memInfo.usedWeight * memInfo.weightToRam); memInfo.usedWeight * memInfo.weightToRam);
args.putDouble(ProcessStatsDetail.EXTRA_TOTAL_SCALE, memInfo.totalScale); args.putDouble(ProcessStatsDetail.EXTRA_TOTAL_SCALE, memInfo.totalScale);
activity.startPreferencePanel(null, ProcessStatsDetail.class.getName(), args, new SubSettingLauncher(activity)
R.string.memory_usage, null, null, 0); .setDestination(ProcessStatsDetail.class.getName())
.setTitle(R.string.memory_usage)
.setArguments(args)
.setSourceMetricsCategory(Instrumentable.METRICS_CATEGORY_UNKNOWN)
.launch();
} }
} }

View File

@@ -18,7 +18,6 @@ package com.android.settings.applications;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.Dialog; import android.app.Dialog;
import android.app.Fragment;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Bundle; import android.os.Bundle;
@@ -41,8 +40,9 @@ import android.widget.TextView;
import com.android.internal.util.MemInfoReader; import com.android.internal.util.MemInfoReader;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.widget.LinearColorBar; import com.android.settings.widget.LinearColorBar;
import java.util.ArrayList; import java.util.ArrayList;
@@ -64,7 +64,7 @@ public class RunningProcessesView extends FrameLayout
RunningState mState; RunningState mState;
Fragment mOwner; SettingsPreferenceFragment mOwner;
Runnable mDataAvail; Runnable mDataAvail;
@@ -411,9 +411,12 @@ public class RunningProcessesView extends FrameLayout
args.putInt(RunningServiceDetails.KEY_USER_ID, mi.mUserId); args.putInt(RunningServiceDetails.KEY_USER_ID, mi.mUserId);
args.putBoolean(RunningServiceDetails.KEY_BACKGROUND, mAdapter.mShowBackground); args.putBoolean(RunningServiceDetails.KEY_BACKGROUND, mAdapter.mShowBackground);
SettingsActivity sa = (SettingsActivity) mOwner.getActivity(); new SubSettingLauncher(getContext())
sa.startPreferencePanel(mOwner, RunningServiceDetails.class.getName(), args, .setDestination(RunningServiceDetails.class.getName())
R.string.runningservicedetails_settings_title, null, null, 0); .setArguments(args)
.setTitle(R.string.runningservicedetails_settings_title)
.setSourceMetricsCategory(mOwner.getMetricsCategory())
.launch();
} }
} }
@@ -466,7 +469,7 @@ public class RunningProcessesView extends FrameLayout
mOwner = null; mOwner = null;
} }
public boolean doResume(Fragment owner, Runnable dataAvail) { public boolean doResume(SettingsPreferenceFragment owner, Runnable dataAvail) {
mOwner = owner; mOwner = owner;
mState.resume(this); mState.resume(this);
if (mState.hasData()) { if (mState.hasData()) {

View File

@@ -51,6 +51,7 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.manageapplications.ManageApplications; import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.PreferenceCategoryController; import com.android.settings.widget.PreferenceCategoryController;
@@ -513,10 +514,13 @@ public class AppInfoDashboardFragment extends DashboardFragment
} }
args.putString(ARG_PACKAGE_NAME, appEntry.info.packageName); args.putString(ARG_PACKAGE_NAME, appEntry.info.packageName);
args.putInt(ARG_PACKAGE_UID, appEntry.info.uid); args.putInt(ARG_PACKAGE_UID, appEntry.info.uid);
new SubSettingLauncher(caller.getContext())
final SettingsActivity sa = (SettingsActivity) caller.getActivity(); .setDestination(fragment.getName())
sa.startPreferencePanel(caller, fragment.getName(), args, title, null, caller, .setArguments(args)
SUB_INFO_FRAGMENT); .setTitle(title)
.setResultListener(caller, SUB_INFO_FRAGMENT)
.setSourceMetricsCategory(caller.getMetricsCategory())
.launch();
} }
void handleUninstallButtonClick() { void handleUninstallButtonClick() {

View File

@@ -78,18 +78,18 @@ import com.android.settings.SettingsActivity;
import com.android.settings.applications.AppInfoBase; import com.android.settings.applications.AppInfoBase;
import com.android.settings.applications.AppStateAppOpsBridge.PermissionState; import com.android.settings.applications.AppStateAppOpsBridge.PermissionState;
import com.android.settings.applications.AppStateBaseBridge; import com.android.settings.applications.AppStateBaseBridge;
import com.android.settings.applications.AppStateDirectoryAccessBridge;
import com.android.settings.applications.AppStateInstallAppsBridge; import com.android.settings.applications.AppStateInstallAppsBridge;
import com.android.settings.applications.AppStateNotificationBridge; import com.android.settings.applications.AppStateNotificationBridge;
import com.android.settings.applications.AppStateOverlayBridge; import com.android.settings.applications.AppStateOverlayBridge;
import com.android.settings.applications.AppStatePowerBridge; import com.android.settings.applications.AppStatePowerBridge;
import com.android.settings.applications.AppStateDirectoryAccessBridge;
import com.android.settings.applications.AppStateUsageBridge; import com.android.settings.applications.AppStateUsageBridge;
import com.android.settings.applications.AppStateUsageBridge.UsageState; import com.android.settings.applications.AppStateUsageBridge.UsageState;
import com.android.settings.applications.AppStateWriteSettingsBridge; import com.android.settings.applications.AppStateWriteSettingsBridge;
import com.android.settings.applications.AppStorageSettings; import com.android.settings.applications.AppStorageSettings;
import com.android.settings.applications.DefaultAppSettings; import com.android.settings.applications.DefaultAppSettings;
import com.android.settings.applications.InstalledAppCounter;
import com.android.settings.applications.DirectoryAccessDetails; import com.android.settings.applications.DirectoryAccessDetails;
import com.android.settings.applications.InstalledAppCounter;
import com.android.settings.applications.UsageAccessDetails; import com.android.settings.applications.UsageAccessDetails;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment; import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.AppNotificationPreferenceController; import com.android.settings.applications.appinfo.AppNotificationPreferenceController;
@@ -97,6 +97,7 @@ import com.android.settings.applications.appinfo.DrawOverlayDetails;
import com.android.settings.applications.appinfo.ExternalSourcesDetails; import com.android.settings.applications.appinfo.ExternalSourcesDetails;
import com.android.settings.applications.appinfo.WriteSettingsDetails; import com.android.settings.applications.appinfo.WriteSettingsDetails;
import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.SummaryLoader; import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.fuelgauge.HighPowerDetail; import com.android.settings.fuelgauge.HighPowerDetail;
import com.android.settings.notification.AppNotificationSettings; import com.android.settings.notification.AppNotificationSettings;
@@ -628,14 +629,19 @@ public class ManageApplications extends InstrumentedPreferenceFragment
return true; return true;
case R.id.advanced: case R.id.advanced:
if (mListType == LIST_TYPE_NOTIFICATION) { if (mListType == LIST_TYPE_NOTIFICATION) {
((SettingsActivity) getActivity()).startPreferencePanel(this, new SubSettingLauncher(getContext())
ConfigureNotificationSettings.class.getName(), null, .setDestination(ConfigureNotificationSettings.class.getName())
R.string.configure_notification_settings, null, this, .setTitle(R.string.configure_notification_settings)
ADVANCED_SETTINGS); .setSourceMetricsCategory(getMetricsCategory())
.setResultListener(this, ADVANCED_SETTINGS)
.launch();
} else { } else {
((SettingsActivity) getActivity()).startPreferencePanel(this, new SubSettingLauncher(getContext())
DefaultAppSettings.class.getName(), null, R.string.configure_apps, .setDestination(DefaultAppSettings.class.getName())
null, this, ADVANCED_SETTINGS); .setTitle(R.string.configure_apps)
.setSourceMetricsCategory(getMetricsCategory())
.setResultListener(this, ADVANCED_SETTINGS)
.launch();
} }
return true; return true;
default: default:

View File

@@ -21,11 +21,12 @@ import android.os.Bundle;
import android.os.SystemProperties; import android.os.SystemProperties;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.util.Log;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.connecteddevice.DevicePreferenceCallback;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.GearPreference; import com.android.settings.widget.GearPreference;
import com.android.settingslib.bluetooth.A2dpProfile; import com.android.settingslib.bluetooth.A2dpProfile;
import com.android.settingslib.bluetooth.BluetoothCallback; import com.android.settingslib.bluetooth.BluetoothCallback;
@@ -39,8 +40,6 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import android.util.Log;
/** /**
* Update the bluetooth devices. It gets bluetooth event from {@link LocalBluetoothManager} using * Update the bluetooth devices. It gets bluetooth event from {@link LocalBluetoothManager} using
* {@link BluetoothCallback}. It notifies the upper level whether to add/remove the preference * {@link BluetoothCallback}. It notifies the upper level whether to add/remove the preference
@@ -73,10 +72,13 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback {
final Bundle args = new Bundle(); final Bundle args = new Bundle();
args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS, args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS,
device.getDevice().getAddress()); device.getDevice().getAddress());
final SettingsActivity activity = (SettingsActivity) mFragment.getActivity();
activity.startPreferencePanel(mFragment, new SubSettingLauncher(mFragment.getContext())
BluetoothDeviceDetailsFragment.class.getName(), args, .setDestination(BluetoothDeviceDetailsFragment.class.getName())
R.string.device_details_title, null, null, 0); .setArguments(args)
.setTitle(R.string.device_details_title)
.setSourceMetricsCategory(mFragment.getMetricsCategory())
.launch();
}; };

View File

@@ -39,6 +39,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.LinkifyUtils; import com.android.settings.LinkifyUtils;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.SummaryLoader; import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.location.ScanningSettings; import com.android.settings.location.ScanningSettings;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
@@ -248,11 +249,11 @@ public class BluetoothSettings extends DeviceListPreferenceFragment implements I
LinkifyUtils.linkify(emptyView, contentBuilder, new LinkifyUtils.OnClickListener() { LinkifyUtils.linkify(emptyView, contentBuilder, new LinkifyUtils.OnClickListener() {
@Override @Override
public void onClick() { public void onClick() {
final SettingsActivity activity = new SubSettingLauncher(getActivity())
(SettingsActivity) BluetoothSettings.this.getActivity(); .setSourceMetricsCategory(getMetricsCategory())
activity.startPreferencePanel(BluetoothSettings.this, .setDestination(ScanningSettings.class.getName())
ScanningSettings.class.getName(), null, .setTitle(R.string.location_scanning_screen_title)
R.string.location_scanning_screen_title, null, null, 0); .launch();
} }
}); });
} }
@@ -322,11 +323,12 @@ public class BluetoothSettings extends DeviceListPreferenceFragment implements I
// New version - uses a separate screen. // New version - uses a separate screen.
args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS, args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS,
device.getDevice().getAddress()); device.getDevice().getAddress());
final SettingsActivity activity = new SubSettingLauncher(context)
(SettingsActivity) BluetoothSettings.this.getActivity(); .setDestination(BluetoothDeviceDetailsFragment.class.getName())
activity.startPreferencePanel(this, .setArguments(args)
BluetoothDeviceDetailsFragment.class.getName(), args, .setTitle(R.string.device_details_title)
R.string.device_details_title, null, null, 0); .setSourceMetricsCategory(getMetricsCategory())
.launch();
} }
}; };

View File

@@ -16,13 +16,11 @@
package com.android.settings.connecteddevice.usb; package com.android.settings.connecteddevice.usb;
import android.content.Context; import android.content.Context;
import android.os.Bundle;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.PreferenceFragment;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.connecteddevice.DevicePreferenceCallback;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.GearPreference; import com.android.settings.widget.GearPreference;
@@ -30,7 +28,7 @@ import com.android.settings.widget.GearPreference;
* Controller to maintain connected usb device * Controller to maintain connected usb device
*/ */
public class ConnectedUsbDeviceUpdater { public class ConnectedUsbDeviceUpdater {
private PreferenceFragment mFragment; private DashboardFragment mFragment;
private UsbBackend mUsbBackend; private UsbBackend mUsbBackend;
private DevicePreferenceCallback mDevicePreferenceCallback; private DevicePreferenceCallback mDevicePreferenceCallback;
@VisibleForTesting @VisibleForTesting
@@ -81,11 +79,11 @@ public class ConnectedUsbDeviceUpdater {
mUsbPreference.setSelectable(false); mUsbPreference.setSelectable(false);
mUsbPreference.setOnGearClickListener((GearPreference p) -> { mUsbPreference.setOnGearClickListener((GearPreference p) -> {
// New version - uses a separate screen. // New version - uses a separate screen.
final Bundle args = new Bundle(); new SubSettingLauncher(mFragment.getContext())
final SettingsActivity activity = (SettingsActivity) mFragment.getContext(); .setDestination(UsbDetailsFragment.class.getName())
activity.startPreferencePanel(mFragment, .setTitle(R.string.device_details_title)
UsbDetailsFragment.class.getName(), args, .setSourceMetricsCategory(mFragment.getMetricsCategory())
R.string.device_details_title, null /* titleText */, null /* resultTo */, 0); .launch();
}); });
forceUpdate(); forceUpdate();

View File

@@ -108,7 +108,7 @@ public class SubSettingLauncher {
} }
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, mLaunchRequest.destinationName); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, mLaunchRequest.destinationName);
if (mLaunchRequest.sourceMetricsCategory <= 0) { if (mLaunchRequest.sourceMetricsCategory < 0) {
throw new IllegalArgumentException("Source metrics category must be set"); throw new IllegalArgumentException("Source metrics category must be set");
} }
intent.putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY, intent.putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY,

View File

@@ -14,7 +14,6 @@
package com.android.settings.fuelgauge; package com.android.settings.fuelgauge;
import android.app.Fragment;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
@@ -24,6 +23,8 @@ import com.android.settings.Settings;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.applications.manageapplications.ManageApplications; import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.fuelgauge.PowerWhitelistBackend; import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
@@ -37,12 +38,12 @@ public class BatteryOptimizationPreferenceController extends AbstractPreferenceC
private PowerWhitelistBackend mBackend; private PowerWhitelistBackend mBackend;
private Fragment mFragment; private DashboardFragment mFragment;
private SettingsActivity mSettingsActivity; private SettingsActivity mSettingsActivity;
private String mPackageName; private String mPackageName;
public BatteryOptimizationPreferenceController(SettingsActivity settingsActivity, public BatteryOptimizationPreferenceController(SettingsActivity settingsActivity,
Fragment fragment, String packageName) { DashboardFragment fragment, String packageName) {
super(settingsActivity); super(settingsActivity);
mFragment = fragment; mFragment = fragment;
mSettingsActivity = settingsActivity; mSettingsActivity = settingsActivity;
@@ -52,7 +53,7 @@ public class BatteryOptimizationPreferenceController extends AbstractPreferenceC
@VisibleForTesting @VisibleForTesting
BatteryOptimizationPreferenceController(SettingsActivity settingsActivity, BatteryOptimizationPreferenceController(SettingsActivity settingsActivity,
Fragment fragment, String packageName, PowerWhitelistBackend backend) { DashboardFragment fragment, String packageName, PowerWhitelistBackend backend) {
super(settingsActivity); super(settingsActivity);
mFragment = fragment; mFragment = fragment;
mSettingsActivity = settingsActivity; mSettingsActivity = settingsActivity;
@@ -82,11 +83,16 @@ public class BatteryOptimizationPreferenceController extends AbstractPreferenceC
return false; return false;
} }
Bundle args = new Bundle(1); final Bundle args = new Bundle();
args.putString(ManageApplications.EXTRA_CLASSNAME, args.putString(ManageApplications.EXTRA_CLASSNAME,
Settings.HighPowerApplicationsActivity.class.getName()); Settings.HighPowerApplicationsActivity.class.getName());
mSettingsActivity.startPreferencePanel(mFragment, ManageApplications.class.getName(), args, new SubSettingLauncher(mSettingsActivity)
R.string.high_power_apps, null, null, 0); .setDestination(ManageApplications.class.getName())
.setArguments(args)
.setTitle(R.string.high_power_apps)
.setSourceMetricsCategory(mFragment.getMetricsCategory())
.launch();
return true; return true;
} }

View File

@@ -54,6 +54,7 @@ import com.android.settings.SettingsActivity;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.applications.LayoutPreference; import com.android.settings.applications.LayoutPreference;
import com.android.settings.applications.manageapplications.ManageApplications; import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.SummaryLoader; import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.display.AmbientDisplayPreferenceController; import com.android.settings.display.AmbientDisplayPreferenceController;
import com.android.settings.display.AutoBrightnessPreferenceController; import com.android.settings.display.AutoBrightnessPreferenceController;
@@ -365,8 +366,12 @@ public class PowerUsageSummaryLegacy extends PowerUsageBase implements
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString(ManageApplications.EXTRA_CLASSNAME, args.putString(ManageApplications.EXTRA_CLASSNAME,
HighPowerApplicationsActivity.class.getName()); HighPowerApplicationsActivity.class.getName());
sa.startPreferencePanel(this, ManageApplications.class.getName(), args, new SubSettingLauncher(context)
R.string.high_power_apps, null, null, 0); .setDestination(ManageApplications.class.getName())
.setArguments(args)
.setTitle(R.string.high_power_apps)
.setSourceMetricsCategory(getMetricsCategory())
.launch();
metricsFeatureProvider.action(context, metricsFeatureProvider.action(context,
MetricsEvent.ACTION_SETTINGS_MENU_BATTERY_OPTIMIZATION); MetricsEvent.ACTION_SETTINGS_MENU_BATTERY_OPTIMIZATION);
return true; return true;

View File

@@ -42,9 +42,9 @@ import android.widget.SimpleCursorAdapter;
import android.widget.TextView; import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.Instrumentable; import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
@@ -187,10 +187,14 @@ public class UserDictionarySettings extends ListFragment implements Instrumentab
args.putString(UserDictionaryAddWordContents.EXTRA_WORD, editingWord); args.putString(UserDictionaryAddWordContents.EXTRA_WORD, editingWord);
args.putString(UserDictionaryAddWordContents.EXTRA_SHORTCUT, editingShortcut); args.putString(UserDictionaryAddWordContents.EXTRA_SHORTCUT, editingShortcut);
args.putString(UserDictionaryAddWordContents.EXTRA_LOCALE, mLocale); args.putString(UserDictionaryAddWordContents.EXTRA_LOCALE, mLocale);
SettingsActivity sa = (SettingsActivity) getActivity();
sa.startPreferencePanel(this, new SubSettingLauncher(getContext())
com.android.settings.inputmethod.UserDictionaryAddWordFragment.class.getName(), .setDestination(UserDictionaryAddWordFragment.class.getName())
args, R.string.user_dict_settings_add_dialog_title, null, null, 0); .setArguments(args)
.setTitle(R.string.user_dict_settings_add_dialog_title)
.setSourceMetricsCategory(getMetricsCategory())
.launch();
} }
private String getWord(final int position) { private String getWord(final int position) {

View File

@@ -61,9 +61,9 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.util.UserIcons; import com.android.internal.util.UserIcons;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.SummaryLoader; import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.password.ChooseLockGeneric; import com.android.settings.password.ChooseLockGeneric;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
@@ -484,9 +484,12 @@ public class UserSettings extends SettingsPreferenceFragment
if (userId == UserPreference.USERID_GUEST_DEFAULTS) { if (userId == UserPreference.USERID_GUEST_DEFAULTS) {
Bundle extras = new Bundle(); Bundle extras = new Bundle();
extras.putBoolean(UserDetailsSettings.EXTRA_USER_GUEST, true); extras.putBoolean(UserDetailsSettings.EXTRA_USER_GUEST, true);
((SettingsActivity) getActivity()).startPreferencePanel(this, new SubSettingLauncher(getContext())
UserDetailsSettings.class.getName(), .setDestination(UserDetailsSettings.class.getName())
extras, R.string.user_guest, null, null, 0); .setArguments(extras)
.setTitle(R.string.user_guest)
.setSourceMetricsCategory(getMetricsCategory())
.launch();
return; return;
} }
UserInfo info = mUserManager.getUserInfo(userId); UserInfo info = mUserManager.getUserInfo(userId);
@@ -494,23 +497,24 @@ public class UserSettings extends SettingsPreferenceFragment
Bundle extras = new Bundle(); Bundle extras = new Bundle();
extras.putInt(RestrictedProfileSettings.EXTRA_USER_ID, userId); extras.putInt(RestrictedProfileSettings.EXTRA_USER_ID, userId);
extras.putBoolean(RestrictedProfileSettings.EXTRA_NEW_USER, newUser); extras.putBoolean(RestrictedProfileSettings.EXTRA_NEW_USER, newUser);
((SettingsActivity) getActivity()).startPreferencePanel(this, new SubSettingLauncher(getContext())
RestrictedProfileSettings.class.getName(), .setDestination(RestrictedProfileSettings.class.getName())
extras, R.string.user_restrictions_title, null, .setArguments(extras)
null, 0); .setTitle(R.string.user_restrictions_title)
.setSourceMetricsCategory(getMetricsCategory())
.launch();
} else if (info.id == UserHandle.myUserId()) { } else if (info.id == UserHandle.myUserId()) {
// Jump to owner info panel // Jump to owner info panel
OwnerInfoSettings.show(this); OwnerInfoSettings.show(this);
} else if (mUserCaps.mIsAdmin) { } else if (mUserCaps.mIsAdmin) {
Bundle extras = new Bundle(); final Bundle extras = new Bundle();
extras.putInt(UserDetailsSettings.EXTRA_USER_ID, userId); extras.putInt(UserDetailsSettings.EXTRA_USER_ID, userId);
((SettingsActivity) getActivity()).startPreferencePanel(this, new SubSettingLauncher(getContext())
UserDetailsSettings.class.getName(), .setDestination(UserDetailsSettings.class.getName())
extras, .setArguments(extras)
-1, /* No title res id */ .setTitle(info.name)
info.name, /* title */ .setSourceMetricsCategory(getMetricsCategory())
null, /* resultTo */ .launch();
0 /* resultRequestCode */);
} }
} }

View File

@@ -30,7 +30,6 @@ import android.net.NetworkInfo;
import android.net.NetworkInfo.State; import android.net.NetworkInfo.State;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.net.wifi.WpsInfo;
import android.nfc.NfcAdapter; import android.nfc.NfcAdapter;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@@ -52,6 +51,7 @@ import com.android.settings.LinkifyUtils;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.RestrictedSettingsFragment; import com.android.settings.RestrictedSettingsFragment;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.SummaryLoader; import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.location.ScanningSettings; import com.android.settings.location.ScanningSettings;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
@@ -861,10 +861,12 @@ public class WifiSettings extends RestrictedSettingsFragment
pref.setOnPreferenceClickListener(preference -> { pref.setOnPreferenceClickListener(preference -> {
pref.getAccessPoint().saveWifiState(pref.getExtras()); pref.getAccessPoint().saveWifiState(pref.getExtras());
SettingsActivity activity = (SettingsActivity) WifiSettings.this.getActivity(); new SubSettingLauncher(getContext())
activity.startPreferencePanel(this, .setTitle(pref.getTitle())
WifiNetworkDetailsFragment.class.getName(), pref.getExtras(), .setDestination(WifiNetworkDetailsFragment.class.getName())
-1 /* resId */, pref.getTitle(), null, 0 /* resultRequestCode */); .setArguments(pref.getExtras())
.setSourceMetricsCategory(getMetricsCategory())
.launch();
return true; return true;
}); });
@@ -922,15 +924,12 @@ public class WifiSettings extends RestrictedSettingsFragment
Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1; Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1;
final CharSequence description = wifiScanningMode ? getText(R.string.wifi_scan_notify_text) final CharSequence description = wifiScanningMode ? getText(R.string.wifi_scan_notify_text)
: getText(R.string.wifi_scan_notify_text_scanning_off); : getText(R.string.wifi_scan_notify_text_scanning_off);
final LinkifyUtils.OnClickListener clickListener = new LinkifyUtils.OnClickListener() { final LinkifyUtils.OnClickListener clickListener =
@Override () -> new SubSettingLauncher(getContext())
public void onClick() { .setDestination(ScanningSettings.class.getName())
final SettingsActivity activity = (SettingsActivity) getActivity(); .setTitle(R.string.location_scanning_screen_title)
activity.startPreferencePanel(WifiSettings.this, .setSourceMetricsCategory(getMetricsCategory())
ScanningSettings.class.getName(), .launch();
null, R.string.location_scanning_screen_title, null, null, 0);
}
};
mStatusMessagePreference.setText(title, description, clickListener); mStatusMessagePreference.setText(title, description, clickListener);
removeConnectedAccessPointPreference(); removeConnectedAccessPointPreference();
mAccessPointsPreferenceCategory.removeAll(); mAccessPointsPreferenceCategory.removeAll();

View File

@@ -23,6 +23,7 @@ import static org.mockito.Mockito.any;
import static org.mockito.Mockito.eq; import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@@ -48,12 +49,14 @@ import android.widget.CheckBox;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ScrollView; import android.widget.ScrollView;
import com.android.settings.SettingsActivity;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowUtils; import com.android.settings.testutils.shadow.ShadowUtils;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
@@ -97,27 +100,12 @@ public class MasterClearTest {
private Activity mActivity; private Activity mActivity;
private View mContentView; private View mContentView;
private class ActivityForTest extends SettingsActivity {
private Bundle mArgs;
@Override
public void startPreferencePanel(Fragment caller, String fragmentClass, Bundle args,
int titleRes, CharSequence titleText, Fragment resultTo, int resultRequestCode) {
mArgs = args;
}
public Bundle getArgs() {
return mArgs;
}
}
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mMasterClear = spy(new MasterClear()); mMasterClear = spy(new MasterClear());
mActivity = Robolectric.setupActivity(Activity.class); mActivity = Robolectric.setupActivity(Activity.class);
mShadowActivity = shadowOf(mActivity);https://stackoverflow.com/questions/14889951/how-to-verify-a-method-is-called-two-times-with-mockito-verify mShadowActivity = shadowOf(mActivity);
// mShadowAccountManager = shadowOf(AccountManager.get(mActivity));
mContentView = LayoutInflater.from(mActivity).inflate(R.layout.master_clear, null); mContentView = LayoutInflater.from(mActivity).inflate(R.layout.master_clear, null);
// Make scrollView only have one child // Make scrollView only have one child
@@ -127,27 +115,36 @@ public class MasterClearTest {
@Test @Test
public void testShowFinalConfirmation_eraseEsimChecked() { public void testShowFinalConfirmation_eraseEsimChecked() {
ActivityForTest testActivity = new ActivityForTest(); final Context context = mock(Context.class);
when(mMasterClear.getActivity()).thenReturn(testActivity); when(mMasterClear.getContext()).thenReturn(context);
mMasterClear.mEsimStorage = mContentView.findViewById(R.id.erase_esim); mMasterClear.mEsimStorage = mContentView.findViewById(R.id.erase_esim);
mMasterClear.mExternalStorage = mContentView.findViewById(R.id.erase_external); mMasterClear.mExternalStorage = mContentView.findViewById(R.id.erase_external);
mMasterClear.mEsimStorage.setChecked(true); mMasterClear.mEsimStorage.setChecked(true);
mMasterClear.showFinalConfirmation(); mMasterClear.showFinalConfirmation();
assertThat(testActivity.getArgs().getBoolean(MasterClear.ERASE_ESIMS_EXTRA, false))
final ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
verify(context).startActivity(intent.capture());
assertThat(intent.getValue().getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.getBoolean(MasterClear.ERASE_ESIMS_EXTRA, false))
.isTrue(); .isTrue();
} }
@Test @Test
public void testShowFinalConfirmation_eraseEsimUnchecked() { public void testShowFinalConfirmation_eraseEsimUnchecked() {
ActivityForTest testActivity = new ActivityForTest(); final Context context = mock(Context.class);
when(mMasterClear.getActivity()).thenReturn(testActivity); when(mMasterClear.getContext()).thenReturn(context);
mMasterClear.mEsimStorage = mContentView.findViewById(R.id.erase_esim); mMasterClear.mEsimStorage = mContentView.findViewById(R.id.erase_esim);
mMasterClear.mExternalStorage = mContentView.findViewById(R.id.erase_external); mMasterClear.mExternalStorage = mContentView.findViewById(R.id.erase_external);
mMasterClear.mEsimStorage.setChecked(false); mMasterClear.mEsimStorage.setChecked(false);
mMasterClear.showFinalConfirmation(); mMasterClear.showFinalConfirmation();
assertThat(testActivity.getArgs().getBoolean(MasterClear.ERASE_ESIMS_EXTRA, true)) final ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
verify(context).startActivity(intent.capture());
assertThat(intent.getValue().getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.getBoolean(MasterClear.ERASE_ESIMS_EXTRA, false))
.isFalse(); .isFalse();
} }

View File

@@ -325,6 +325,7 @@ public final class AppInfoDashboardFragmentTest {
final SettingsPreferenceFragment caller = mock(SettingsPreferenceFragment.class); final SettingsPreferenceFragment caller = mock(SettingsPreferenceFragment.class);
final SettingsActivity sa = mock (SettingsActivity.class); final SettingsActivity sa = mock (SettingsActivity.class);
when(caller.getActivity()).thenReturn(sa); when(caller.getActivity()).thenReturn(sa);
when(caller.getContext()).thenReturn(sa);
final AppEntry appEntry = mock(AppEntry.class); final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = mock(ApplicationInfo.class); appEntry.info = mock(ApplicationInfo.class);
@@ -337,6 +338,7 @@ public final class AppInfoDashboardFragmentTest {
final SettingsPreferenceFragment caller = mock(SettingsPreferenceFragment.class); final SettingsPreferenceFragment caller = mock(SettingsPreferenceFragment.class);
final SettingsActivity sa = mock (SettingsActivity.class); final SettingsActivity sa = mock (SettingsActivity.class);
when(caller.getActivity()).thenReturn(sa); when(caller.getActivity()).thenReturn(sa);
when(caller.getContext()).thenReturn(sa);
final AppEntry appEntry = mock(AppEntry.class); final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = mock(ApplicationInfo.class); appEntry.info = mock(ApplicationInfo.class);
@@ -346,11 +348,14 @@ public final class AppInfoDashboardFragmentTest {
AppInfoDashboardFragment.startAppInfoFragment(AppInfoDashboardFragment.class, 0, bundle, AppInfoDashboardFragment.startAppInfoFragment(AppInfoDashboardFragment.class, 0, bundle,
caller, appEntry); caller, appEntry);
final ArgumentCaptor<Bundle> captor = ArgumentCaptor.forClass(Bundle.class); final ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
verify(sa).startPreferencePanel(any(), anyString(), captor.capture(), anyInt(), any(),
any(), anyInt());
assertThat(captor.getValue().containsKey("test")); verify(sa).startActivityForResult(intent.capture(), any(Integer.class));
assertThat(captor.getValue().containsKey(ARG_PACKAGE_NAME)); assertThat(intent.getValue().getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.containsKey("test"))
.isTrue();
assertThat(intent.getValue().getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.containsKey(ARG_PACKAGE_NAME))
.isTrue();
} }
} }

View File

@@ -16,15 +16,14 @@
package com.android.settings.applications.appinfo; package com.android.settings.applications.appinfo;
import static com.android.settings.applications.appinfo.AppInfoDashboardFragment.SUB_INFO_FRAGMENT;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Intent;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
@@ -68,6 +67,7 @@ public class AppInfoPreferenceControllerBaseTest {
final String key = mController.getPreferenceKey(); final String key = mController.getPreferenceKey();
when(mScreen.findPreference(key)).thenReturn(mPreference); when(mScreen.findPreference(key)).thenReturn(mPreference);
when(mPreference.getKey()).thenReturn(key); when(mPreference.getKey()).thenReturn(key);
when(mFragment.getContext()).thenReturn(mActivity);
when(mFragment.getActivity()).thenReturn(mActivity); when(mFragment.getActivity()).thenReturn(mActivity);
} }
@@ -91,13 +91,11 @@ public class AppInfoPreferenceControllerBaseTest {
when(mFragment.getAppEntry()).thenReturn(appEntry); when(mFragment.getAppEntry()).thenReturn(appEntry);
mController.handlePreferenceTreeClick(mPreference); mController.handlePreferenceTreeClick(mPreference);
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
ArgumentCaptor<Bundle> captor = ArgumentCaptor.forClass(Bundle.class); verify(mActivity).startActivityForResult(intentCaptor.capture(), eq(SUB_INFO_FRAGMENT));
verify(mActivity).startPreferencePanel(any(), assertThat(intentCaptor.getValue().getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
eq(mController.getDetailFragmentClass().getName()), captor.capture(), anyInt(), .isEqualTo(mController.getDetailFragmentClass().getName());
any(), any(), anyInt());
assertThat(captor.getValue().containsKey("test"));
} }
private class TestPreferenceController extends AppInfoPreferenceControllerBase { private class TestPreferenceController extends AppInfoPreferenceControllerBase {

View File

@@ -17,21 +17,17 @@
package com.android.settings.applications.appinfo; package com.android.settings.applications.appinfo;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.provider.Settings; import android.provider.Settings;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.applications.ProcStatsData; import com.android.settings.applications.ProcStatsData;
@@ -43,6 +39,7 @@ import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
@@ -128,8 +125,11 @@ public class AppMemoryPreferenceControllerTest {
mController.handlePreferenceTreeClick(mPreference); mController.handlePreferenceTreeClick(mPreference);
verify(mActivity).startPreferencePanel(any(), eq(ProcessStatsDetail.class.getName()), any(), final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
eq(R.string.memory_usage), any(), any(), anyInt());
verify(mActivity).startActivity(intentCaptor.capture());
assertThat(intentCaptor.getValue().getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
.isEqualTo(ProcessStatsDetail.class.getName());
} }
} }

View File

@@ -16,18 +16,16 @@
package com.android.settings.bluetooth; package com.android.settings.bluetooth;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.connecteddevice.DevicePreferenceCallback;
@@ -38,6 +36,7 @@ import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
@@ -117,12 +116,13 @@ public class BluetoothDeviceUpdaterTest {
@Test @Test
public void testDeviceProfilesListener_click_startBluetoothDeviceDetailPage() { public void testDeviceProfilesListener_click_startBluetoothDeviceDetailPage() {
doReturn(mSettingsActivity).when(mDashboardFragment).getActivity(); doReturn(mSettingsActivity).when(mDashboardFragment).getContext();
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
mBluetoothDeviceUpdater.mDeviceProfilesListener.onGearClick(mPreference); mBluetoothDeviceUpdater.mDeviceProfilesListener.onGearClick(mPreference);
verify(mSettingsActivity).startPreferencePanel(eq(mDashboardFragment), verify(mSettingsActivity).startActivity(intentCaptor.capture());
eq(BluetoothDeviceDetailsFragment.class.getName()), any(), assertThat(intentCaptor.getValue().getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
eq(R.string.device_details_title), eq(null), eq(null), eq(0)); .isEqualTo(BluetoothDeviceDetailsFragment.class.getName());
} }
} }

View File

@@ -17,23 +17,21 @@
package com.android.settings.fuelgauge; package com.android.settings.fuelgauge;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import android.app.Fragment;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.content.Intent;
import android.support.v14.preference.SwitchPreference; import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.dashboard.DashboardFragment;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -54,7 +52,7 @@ public class BatteryOptimizationPreferenceControllerTest {
@Mock @Mock
private SettingsActivity mSettingsActivity; private SettingsActivity mSettingsActivity;
@Mock @Mock
private Fragment mFragment; private DashboardFragment mFragment;
@Mock @Mock
private TestPowerWhitelistBackend mBackend; private TestPowerWhitelistBackend mBackend;
@@ -82,9 +80,7 @@ public class BatteryOptimizationPreferenceControllerTest {
final boolean handled = mController.handlePreferenceTreeClick(mPreference); final boolean handled = mController.handlePreferenceTreeClick(mPreference);
assertThat(handled).isTrue(); assertThat(handled).isTrue();
verify(mSettingsActivity).startPreferencePanel(nullable(Fragment.class), verify(mSettingsActivity).startActivity(any(Intent.class));
nullable(String.class), nullable(Bundle.class), anyInt(),
nullable(CharSequence.class), nullable(Fragment.class), anyInt());
} }
@Test @Test
@@ -94,9 +90,7 @@ public class BatteryOptimizationPreferenceControllerTest {
final boolean handled = mController.handlePreferenceTreeClick(mPreference); final boolean handled = mController.handlePreferenceTreeClick(mPreference);
assertThat(handled).isFalse(); assertThat(handled).isFalse();
verify(mSettingsActivity, never()).startPreferencePanel(nullable(Fragment.class), verify(mSettingsActivity, never()).startActivity(any(Intent.class));
nullable(String.class), nullable(Bundle.class), anyInt(),
nullable(CharSequence.class), nullable(Fragment.class), anyInt());
} }
@Test @Test

View File

@@ -29,8 +29,10 @@ import android.support.test.runner.AndroidJUnit4;
import android.support.test.uiautomator.UiDevice; import android.support.test.uiautomator.UiDevice;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.core.instrumentation.Instrumentable;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -85,8 +87,12 @@ public class BluetoothDeviceDetailsRotationTest {
SettingsActivity activity = (SettingsActivity) mInstrumentation.startActivitySync(intent); SettingsActivity activity = (SettingsActivity) mInstrumentation.startActivitySync(intent);
Bundle args = new Bundle(1); Bundle args = new Bundle(1);
args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS, mDeviceAddress); args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS, mDeviceAddress);
activity.startPreferencePanel(null, BluetoothDeviceDetailsFragment.class.getName(), args, new SubSettingLauncher(activity)
0, null, null, 0); .setDestination(BluetoothDeviceDetailsFragment.class.getName())
.setTitle("test")
.setArguments(args)
.setSourceMetricsCategory(Instrumentable.METRICS_CATEGORY_UNKNOWN)
.launch();
try { try {
mUiDevice.setOrientationLeft(); mUiDevice.setOrientationLeft();
mUiDevice.setOrientationNatural(); mUiDevice.setOrientationNatural();