Migrate more settings to SubSettingsLauncher

Bug: 73250851
Test: robotests
Change-Id: I4100bef20e2ed477e4e31c9b7816f1b03f3f2809
This commit is contained in:
Fan Zhang
2018-02-16 17:01:17 -08:00
parent b1d6c76b53
commit be45f9c865
24 changed files with 206 additions and 323 deletions

View File

@@ -75,7 +75,6 @@ import com.android.settingslib.drawer.SettingsDrawerActivity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
public class SettingsActivity extends SettingsDrawerActivity public class SettingsActivity extends SettingsDrawerActivity
implements PreferenceManager.OnPreferenceTreeClickListener, implements PreferenceManager.OnPreferenceTreeClickListener,
@@ -157,10 +156,6 @@ public class SettingsActivity extends SettingsDrawerActivity
private CharSequence mInitialTitle; private CharSequence mInitialTitle;
private int mInitialTitleResId; private int mInitialTitleResId;
private static final String[] LIKE_SHORTCUT_INTENT_ACTION_ARRAY = {
"android.settings.APPLICATION_DETAILS_SETTINGS"
};
private BroadcastReceiver mDevelopmentSettingsListener; private BroadcastReceiver mDevelopmentSettingsListener;
private boolean mBatteryPresent = true; private boolean mBatteryPresent = true;
@@ -184,12 +179,9 @@ public class SettingsActivity extends SettingsDrawerActivity
private Button mNextButton; private Button mNextButton;
private boolean mIsShowingDashboard; private boolean mIsShowingDashboard;
private boolean mIsShortcut;
private ViewGroup mContent; private ViewGroup mContent;
private MetricsFeatureProvider mMetricsFeatureProvider;
// Categories // Categories
private ArrayList<DashboardCategory> mCategories = new ArrayList<>(); private ArrayList<DashboardCategory> mCategories = new ArrayList<>();
@@ -237,22 +229,6 @@ public class SettingsActivity extends SettingsDrawerActivity
return tag; return tag;
} }
private static boolean isShortCutIntent(final Intent intent) {
Set<String> categories = intent.getCategories();
return (categories != null) && categories.contains("com.android.settings.SHORTCUT");
}
private static boolean isLikeShortCutIntent(final Intent intent) {
String action = intent.getAction();
if (action == null) {
return false;
}
for (int i = 0; i < LIKE_SHORTCUT_INTENT_ACTION_ARRAY.length; i++) {
if (LIKE_SHORTCUT_INTENT_ACTION_ARRAY[i].equals(action)) return true;
}
return false;
}
@Override @Override
protected void onCreate(Bundle savedState) { protected void onCreate(Bundle savedState) {
super.onCreate(savedState); super.onCreate(savedState);
@@ -261,7 +237,6 @@ public class SettingsActivity extends SettingsDrawerActivity
final FeatureFactory factory = FeatureFactory.getFactory(this); final FeatureFactory factory = FeatureFactory.getFactory(this);
mDashboardFeatureProvider = factory.getDashboardFeatureProvider(this); mDashboardFeatureProvider = factory.getDashboardFeatureProvider(this);
mMetricsFeatureProvider = factory.getMetricsFeatureProvider();
// Should happen before any call to getIntent() // Should happen before any call to getIntent()
getMetaData(); getMetaData();
@@ -274,9 +249,6 @@ public class SettingsActivity extends SettingsDrawerActivity
// Getting Intent properties can only be done after the super.onCreate(...) // Getting Intent properties can only be done after the super.onCreate(...)
final String initialFragmentName = intent.getStringExtra(EXTRA_SHOW_FRAGMENT); final String initialFragmentName = intent.getStringExtra(EXTRA_SHOW_FRAGMENT);
mIsShortcut = isShortCutIntent(intent) || isLikeShortCutIntent(intent) ||
intent.getBooleanExtra(EXTRA_SHOW_FRAGMENT_AS_SHORTCUT, false);
final ComponentName cn = intent.getComponent(); final ComponentName cn = intent.getComponent();
final String className = cn.getClassName(); final String className = cn.getClassName();
@@ -583,74 +555,6 @@ public class SettingsActivity extends SettingsDrawerActivity
return intentClass; return intentClass;
} }
/**
* Start a new fragment containing a preference panel. If the preferences
* are being displayed in multi-pane mode, the given fragment class will
* be instantiated and placed in the appropriate pane. If running in
* single-pane mode, a new activity will be launched in which to show the
* fragment.
*
* @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 resultTo Optional fragment that result data should be sent to.
* If non-null, resultTo.onActivityResult() will be called when this
* preference panel is done. The launched panel must use
* {@link #finishPreferencePanel(Fragment, int, Intent)} when done.
* @param resultRequestCode If resultTo is non-null, this is the caller's
* request code to be received with the result.
*/
@Deprecated
public void startPreferencePanel(Fragment caller, String fragmentClass, Bundle args,
int titleRes, CharSequence titleText, Fragment resultTo, int resultRequestCode) {
String title = null;
if (titleRes < 0 && titleText != null) {
title = titleText.toString();
}
Utils.startWithFragment(this, fragmentClass, args, resultTo, resultRequestCode,
titleRes, title, mIsShortcut, mMetricsFeatureProvider.getMetricsCategory(caller));
}
/**
* Start a new fragment in a new activity containing a preference panel for a given user. If the
* preferences are being displayed in multi-pane mode, the given fragment class will be
* instantiated and placed in the appropriate pane. If running in single-pane mode, a new
* activity will be launched in which to show the fragment.
*
* @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 userHandle The user for which the panel has to be started.
*/
public void startPreferencePanelAsUser(Fragment caller, String fragmentClass,
Bundle args, int titleRes, UserHandle userHandle) {
// This is a workaround.
//
// Calling startWithFragmentAsUser() without specifying FLAG_ACTIVITY_NEW_TASK to the intent
// starting the fragment could cause a native stack corruption. See b/17523189. However,
// adding that flag and start the preference panel with the same UserHandler will make it
// impossible to use back button to return to the previous screen. See b/20042570.
//
// We work around this issue by adding FLAG_ACTIVITY_NEW_TASK to the intent, while doing
// 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, null /* titleText */,
null, 0);
} else {
new SubSettingLauncher(this)
.setDestination(fragmentClass)
.setArguments(args)
.setTitle(titleRes)
.setIsShortCut(mIsShortcut)
.setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(caller))
.setUserHandle(userHandle)
.launch();
}
}
/** /**
* Called by a preference panel fragment to finish itself. * Called by a preference panel fragment to finish itself.
* *

View File

@@ -16,22 +16,22 @@
package com.android.settings.accessibility; package com.android.settings.accessibility;
import android.app.Fragment;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.Preference;
import android.view.Menu; import android.view.Menu;
import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityEvent;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.search.actionbar.SearchMenuController; import com.android.settings.search.actionbar.SearchMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider; import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settingslib.core.instrumentation.Instrumentable;
public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivity { public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivity {
private static final String SAVE_KEY_TITLE = "activity_title"; private static final String SAVE_KEY_TITLE = "activity_title";
private boolean mSendExtraWindowStateChanged;
@Override @Override
protected void onCreate(Bundle savedState) { protected void onCreate(Bundle savedState) {
super.onCreate(savedState); super.onCreate(savedState);
@@ -52,12 +52,6 @@ public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivit
setTitle(savedState.getCharSequence(SAVE_KEY_TITLE)); setTitle(savedState.getCharSequence(SAVE_KEY_TITLE));
} }
@Override
public void onResume() {
super.onResume();
mSendExtraWindowStateChanged = false;
}
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
// Return true, so we get notified when items in the menu are clicked. // Return true, so we get notified when items in the menu are clicked.
@@ -76,28 +70,20 @@ public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivit
} }
@Override @Override
public void startPreferencePanel(Fragment caller, String fragmentClass, Bundle args, public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) {
int titleRes, CharSequence titleText, Fragment resultTo, int resultRequestCode) { Bundle args = pref.getExtras();
// Set the title. if (args == null) {
if (!TextUtils.isEmpty(titleText)) { args = new Bundle();
setTitle(titleText);
} else if (titleRes > 0) {
setTitle(getString(titleRes));
} }
// Start the new Fragment.
args.putInt(HelpResourceProvider.HELP_URI_RESOURCE_KEY, 0); args.putInt(HelpResourceProvider.HELP_URI_RESOURCE_KEY, 0);
args.putBoolean(SearchMenuController.NEED_SEARCH_ICON_IN_ACTION_BAR, false); args.putBoolean(SearchMenuController.NEED_SEARCH_ICON_IN_ACTION_BAR, false);
startPreferenceFragment(Fragment.instantiate(this, fragmentClass, args), true); new SubSettingLauncher(this)
mSendExtraWindowStateChanged = true; .setDestination(pref.getFragment())
} .setArguments(args)
.setSourceMetricsCategory(caller instanceof Instrumentable
@Override ? ((Instrumentable) caller).getMetricsCategory()
public void onAttachFragment(Fragment fragment) { : Instrumentable.METRICS_CATEGORY_UNKNOWN)
if (mSendExtraWindowStateChanged) { .launch();
// Clear accessibility focus and let the screen reader announce the new title. return true;
getWindow().getDecorView()
.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
}
} }
} }

View File

@@ -15,17 +15,16 @@
*/ */
package com.android.settings.bluetooth; package com.android.settings.bluetooth;
import android.app.Fragment;
import android.content.Context; import android.content.Context;
import android.os.UserHandle;
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.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
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.InstrumentedPreferenceFragment;
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.widget.MasterSwitchController; import com.android.settings.widget.MasterSwitchController;
import com.android.settings.widget.MasterSwitchPreference; import com.android.settings.widget.MasterSwitchPreference;
@@ -50,27 +49,22 @@ public class BluetoothMasterSwitchPreferenceController extends AbstractPreferenc
private BluetoothEnabler mBluetoothEnabler; private BluetoothEnabler mBluetoothEnabler;
private BluetoothSummaryUpdater mSummaryUpdater; private BluetoothSummaryUpdater mSummaryUpdater;
private RestrictionUtils mRestrictionUtils; private RestrictionUtils mRestrictionUtils;
private Fragment mFragment; private InstrumentedPreferenceFragment mFragment;
private SettingsActivity mActivity;
private BluetoothFeatureProvider mBluetoothFeatureProvider;
public BluetoothMasterSwitchPreferenceController(Context context, public BluetoothMasterSwitchPreferenceController(Context context,
LocalBluetoothManager bluetoothManager, Fragment fragment, SettingsActivity activity) { LocalBluetoothManager bluetoothManager, InstrumentedPreferenceFragment fragment) {
this(context, bluetoothManager, new RestrictionUtils(), fragment, activity); this(context, bluetoothManager, new RestrictionUtils(), fragment);
} }
@VisibleForTesting @VisibleForTesting
public BluetoothMasterSwitchPreferenceController(Context context, public BluetoothMasterSwitchPreferenceController(Context context,
LocalBluetoothManager bluetoothManager, RestrictionUtils restrictionUtils, LocalBluetoothManager bluetoothManager, RestrictionUtils restrictionUtils,
Fragment fragment, SettingsActivity activity) { InstrumentedPreferenceFragment fragment) {
super(context); super(context);
mBluetoothManager = bluetoothManager; mBluetoothManager = bluetoothManager;
mSummaryUpdater = new BluetoothSummaryUpdater(mContext, this, mBluetoothManager); mSummaryUpdater = new BluetoothSummaryUpdater(mContext, this, mBluetoothManager);
mRestrictionUtils = restrictionUtils; mRestrictionUtils = restrictionUtils;
mFragment = fragment; mFragment = fragment;
mActivity = activity;
mBluetoothFeatureProvider = FeatureFactory.getFactory(
mContext).getBluetoothFeatureProvider(mContext);
} }
@Override @Override
@@ -87,8 +81,11 @@ public class BluetoothMasterSwitchPreferenceController extends AbstractPreferenc
@Override @Override
public boolean handlePreferenceTreeClick(Preference preference) { public boolean handlePreferenceTreeClick(Preference preference) {
if (KEY_TOGGLE_BLUETOOTH.equals(preference.getKey())) { if (KEY_TOGGLE_BLUETOOTH.equals(preference.getKey())) {
mActivity.startPreferencePanelAsUser(mFragment, BluetoothSettings.class.getName(), null, new SubSettingLauncher(mContext)
R.string.bluetooth, new UserHandle(UserHandle.myUserId())); .setDestination(BluetoothSettings.class.getName())
.setTitle(R.string.bluetooth)
.setSourceMetricsCategory(mFragment.getMetricsCategory())
.launch();
return true; return true;
} }
return super.handlePreferenceTreeClick(preference); return super.handlePreferenceTreeClick(preference);

View File

@@ -17,13 +17,12 @@
package com.android.settings.bluetooth; package com.android.settings.bluetooth;
import android.content.Context; import android.content.Context;
import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.os.UserHandle;
import com.android.settings.SettingsActivity;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.R; import com.android.settings.R;
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;
@@ -35,15 +34,12 @@ public class BluetoothPairingPreferenceController extends AbstractPreferenceCont
private static final String TAG = "BluetoothPairingPrefCtrl"; private static final String TAG = "BluetoothPairingPrefCtrl";
public static final String KEY_PAIRING = "pref_bt_pairing"; public static final String KEY_PAIRING = "pref_bt_pairing";
private PreferenceFragment mFragment; private DashboardFragment mFragment;
private SettingsActivity mActivity;
private Preference mPreference; private Preference mPreference;
public BluetoothPairingPreferenceController(Context context, PreferenceFragment fragment, public BluetoothPairingPreferenceController(Context context, DashboardFragment fragment) {
SettingsActivity activity) {
super(context); super(context);
mFragment = fragment; mFragment = fragment;
mActivity = activity;
} }
@Override @Override
@@ -59,9 +55,12 @@ public class BluetoothPairingPreferenceController extends AbstractPreferenceCont
@Override @Override
public boolean handlePreferenceTreeClick(Preference preference) { public boolean handlePreferenceTreeClick(Preference preference) {
if (KEY_PAIRING.equals(preference.getKey())) { if (KEY_PAIRING.equals(preference.getKey())) {
mActivity.startPreferencePanelAsUser(mFragment, BluetoothPairingDetail.class.getName(), new SubSettingLauncher(mContext)
null, R.string.bluetooth_pairing_page_title, .setDestination(BluetoothPairingDetail.class.getName())
new UserHandle(UserHandle.myUserId())); .setTitle(R.string.bluetooth_pairing_page_title)
.setSourceMetricsCategory(mFragment.getMetricsCategory())
.launch();
return true; return true;
} }

View File

@@ -367,8 +367,7 @@ public class BluetoothSettings extends DeviceListPreferenceFragment implements I
final List<AbstractPreferenceController> controllers = new ArrayList<>(); final List<AbstractPreferenceController> controllers = new ArrayList<>();
final Lifecycle lifecycle = getLifecycle(); final Lifecycle lifecycle = getLifecycle();
mDeviceNamePrefController = new BluetoothDeviceNamePreferenceController(context, lifecycle); mDeviceNamePrefController = new BluetoothDeviceNamePreferenceController(context, lifecycle);
mPairingPrefController = new BluetoothPairingPreferenceController(context, this, mPairingPrefController = new BluetoothPairingPreferenceController(context, this);
(SettingsActivity) getActivity());
controllers.add(mDeviceNamePrefController); controllers.add(mDeviceNamePrefController);
controllers.add(mPairingPrefController); controllers.add(mPairingPrefController);
controllers.add(new BluetoothFilesPreferenceController(context)); controllers.add(new BluetoothFilesPreferenceController(context));

View File

@@ -23,7 +23,6 @@ import android.support.annotation.VisibleForTesting;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.bluetooth.BluetoothMasterSwitchPreferenceController; import com.android.settings.bluetooth.BluetoothMasterSwitchPreferenceController;
import com.android.settings.bluetooth.Utils; import com.android.settings.bluetooth.Utils;
import com.android.settings.connecteddevice.usb.UsbBackend; import com.android.settings.connecteddevice.usb.UsbBackend;
@@ -31,7 +30,6 @@ import com.android.settings.connecteddevice.usb.UsbModePreferenceController;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.dashboard.SummaryLoader; import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.nfc.NfcPreferenceController; import com.android.settings.nfc.NfcPreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -85,8 +83,7 @@ public class ConnectedDeviceDashboardFragmentOld extends DashboardFragment {
controllers.add(mUsbPrefController); controllers.add(mUsbPrefController);
final BluetoothMasterSwitchPreferenceController bluetoothPreferenceController = final BluetoothMasterSwitchPreferenceController bluetoothPreferenceController =
new BluetoothMasterSwitchPreferenceController( new BluetoothMasterSwitchPreferenceController(
context, Utils.getLocalBtManager(context), this, context, Utils.getLocalBtManager(context), this);
(SettingsActivity) getActivity());
lifecycle.addObserver(bluetoothPreferenceController); lifecycle.addObserver(bluetoothPreferenceController);
controllers.add(bluetoothPreferenceController); controllers.add(bluetoothPreferenceController);

View File

@@ -30,7 +30,6 @@ import android.os.Bundle;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
@@ -44,6 +43,8 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity; 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.core.InstrumentedPreferenceFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.fuelgauge.anomaly.Anomaly; import com.android.settings.fuelgauge.anomaly.Anomaly;
import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment; import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment;
@@ -74,7 +75,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
LoaderManager.LoaderCallbacks<List<Anomaly>>, LoaderManager.LoaderCallbacks<List<Anomaly>>,
BatteryTipPreferenceController.BatteryTipListener { BatteryTipPreferenceController.BatteryTipListener {
public static final String TAG = "AdvancedPowerUsageDetail"; public static final String TAG = "AdvancedPowerDetail";
public static final String EXTRA_UID = "extra_uid"; public static final String EXTRA_UID = "extra_uid";
public static final String EXTRA_PACKAGE_NAME = "extra_package_name"; public static final String EXTRA_PACKAGE_NAME = "extra_package_name";
public static final String EXTRA_FOREGROUND_TIME = "extra_foreground_time"; public static final String EXTRA_FOREGROUND_TIME = "extra_foreground_time";
@@ -122,9 +123,9 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
private String mPackageName; private String mPackageName;
@VisibleForTesting @VisibleForTesting
static void startBatteryDetailPage(SettingsActivity caller, BatteryUtils batteryUtils, static void startBatteryDetailPage(Activity caller, BatteryUtils batteryUtils,
PreferenceFragment fragment, BatteryStatsHelper helper, int which, BatteryEntry entry, InstrumentedPreferenceFragment fragment, BatteryStatsHelper helper, int which,
String usagePercent, List<Anomaly> anomalies) { BatteryEntry entry, String usagePercent, List<Anomaly> anomalies) {
// Initialize mStats if necessary. // Initialize mStats if necessary.
helper.getStats(); helper.getStats();
@@ -157,9 +158,13 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
args.putInt(EXTRA_POWER_USAGE_AMOUNT, (int) sipper.totalPowerMah); args.putInt(EXTRA_POWER_USAGE_AMOUNT, (int) sipper.totalPowerMah);
args.putParcelableList(EXTRA_ANOMALY_LIST, anomalies); args.putParcelableList(EXTRA_ANOMALY_LIST, anomalies);
caller.startPreferencePanelAsUser(fragment, AdvancedPowerUsageDetail.class.getName(), args, new SubSettingLauncher(caller)
R.string.battery_details_title, .setDestination(AdvancedPowerUsageDetail.class.getName())
new UserHandle(getUserIdToLaunchAdvancePowerUsageDetail(sipper))); .setTitle(R.string.battery_details_title)
.setArguments(args)
.setSourceMetricsCategory(fragment.getMetricsCategory())
.setUserHandle(new UserHandle(getUserIdToLaunchAdvancePowerUsageDetail(sipper)))
.launch();
} }
private static @UserIdInt int getUserIdToLaunchAdvancePowerUsageDetail(BatterySipper bs) { private static @UserIdInt int getUserIdToLaunchAdvancePowerUsageDetail(BatterySipper bs) {
@@ -169,15 +174,15 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
return UserHandle.getUserId(bs.getUid()); return UserHandle.getUserId(bs.getUid());
} }
public static void startBatteryDetailPage(SettingsActivity caller, PreferenceFragment fragment, public static void startBatteryDetailPage(Activity caller,
BatteryStatsHelper helper, int which, BatteryEntry entry, String usagePercent, InstrumentedPreferenceFragment fragment, BatteryStatsHelper helper, int which,
List<Anomaly> anomalies) { BatteryEntry entry, String usagePercent, List<Anomaly> anomalies) {
startBatteryDetailPage(caller, BatteryUtils.getInstance(caller), fragment, helper, which, startBatteryDetailPage(caller, BatteryUtils.getInstance(caller), fragment, helper, which,
entry, usagePercent, anomalies); entry, usagePercent, anomalies);
} }
public static void startBatteryDetailPage(SettingsActivity caller, PreferenceFragment fragment, public static void startBatteryDetailPage(Activity caller,
String packageName) { InstrumentedPreferenceFragment fragment, String packageName) {
final Bundle args = new Bundle(3); final Bundle args = new Bundle(3);
final PackageManager packageManager = caller.getPackageManager(); final PackageManager packageManager = caller.getPackageManager();
args.putString(EXTRA_PACKAGE_NAME, packageName); args.putString(EXTRA_PACKAGE_NAME, packageName);
@@ -188,8 +193,12 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
Log.e(TAG, "Cannot find package: " + packageName, e); Log.e(TAG, "Cannot find package: " + packageName, e);
} }
caller.startPreferencePanelAsUser(fragment, AdvancedPowerUsageDetail.class.getName(), args, new SubSettingLauncher(caller)
R.string.battery_details_title, new UserHandle(UserHandle.myUserId())); .setDestination(AdvancedPowerUsageDetail.class.getName())
.setTitle(R.string.battery_details_title)
.setArguments(args)
.setSourceMetricsCategory(fragment.getMetricsCategory())
.launch();
} }
@Override @Override
@@ -210,7 +219,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
mPackageName = getArguments().getString(EXTRA_PACKAGE_NAME); mPackageName = getArguments().getString(EXTRA_PACKAGE_NAME);
mAnomalySummaryPreferenceController = new AnomalySummaryPreferenceController( mAnomalySummaryPreferenceController = new AnomalySummaryPreferenceController(
(SettingsActivity) getActivity(), this, MetricsEvent.FUELGAUGE_POWER_USAGE_DETAIL); (SettingsActivity) getActivity(), this);
mForegroundPreference = findPreference(KEY_PREF_FOREGROUND); mForegroundPreference = findPreference(KEY_PREF_FOREGROUND);
mBackgroundPreference = findPreference(KEY_PREF_BACKGROUND); mBackgroundPreference = findPreference(KEY_PREF_BACKGROUND);
mPowerUsagePreference = findPreference(KEY_PREF_POWER_USAGE); mPowerUsagePreference = findPreference(KEY_PREF_POWER_USAGE);

View File

@@ -27,7 +27,6 @@ import android.os.Process;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
@@ -45,6 +44,7 @@ import com.android.internal.os.PowerProfile;
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.FeatureFlags; import com.android.settings.core.FeatureFlags;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.fuelgauge.anomaly.Anomaly; import com.android.settings.fuelgauge.anomaly.Anomaly;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
@@ -52,8 +52,8 @@ import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnDestroy; import com.android.settingslib.core.lifecycle.events.OnDestroy;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.utils.StringUtil; import com.android.settingslib.utils.StringUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -77,7 +77,7 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
BatteryUtils mBatteryUtils; BatteryUtils mBatteryUtils;
private UserManager mUserManager; private UserManager mUserManager;
private SettingsActivity mActivity; private SettingsActivity mActivity;
private PreferenceFragment mFragment; private InstrumentedPreferenceFragment mFragment;
private Context mPrefContext; private Context mPrefContext;
SparseArray<List<Anomaly>> mAnomalySparseArray; SparseArray<List<Anomaly>> mAnomalySparseArray;
@@ -112,7 +112,8 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
}; };
public BatteryAppListPreferenceController(Context context, String preferenceKey, public BatteryAppListPreferenceController(Context context, String preferenceKey,
Lifecycle lifecycle, SettingsActivity activity, PreferenceFragment fragment) { Lifecycle lifecycle, SettingsActivity activity,
InstrumentedPreferenceFragment fragment) {
super(context); super(context);
if (lifecycle != null) { if (lifecycle != null) {

View File

@@ -21,7 +21,6 @@ import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserHandle; import android.os.UserHandle;
import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceGroup;
import android.util.IconDrawableFactory; import android.util.IconDrawableFactory;
@@ -31,6 +30,8 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.fuelgauge.anomaly.Anomaly; import com.android.settings.fuelgauge.anomaly.Anomaly;
import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment; import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment;
@@ -63,12 +64,16 @@ public class PowerUsageAnomalyDetails extends DashboardFragment implements
IconDrawableFactory mIconDrawableFactory; IconDrawableFactory mIconDrawableFactory;
public static void startBatteryAbnormalPage(SettingsActivity caller, public static void startBatteryAbnormalPage(SettingsActivity caller,
PreferenceFragment fragment, List<Anomaly> anomalies) { InstrumentedPreferenceFragment fragment, List<Anomaly> anomalies) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putParcelableList(EXTRA_ANOMALY_LIST, anomalies); args.putParcelableList(EXTRA_ANOMALY_LIST, anomalies);
caller.startPreferencePanelAsUser(fragment, PowerUsageAnomalyDetails.class.getName(), args, new SubSettingLauncher(caller)
R.string.battery_abnormal_details_title, new UserHandle(UserHandle.myUserId())); .setDestination(PowerUsageAnomalyDetails.class.getName())
.setTitle(R.string.battery_abnormal_details_title)
.setArguments(args)
.setSourceMetricsCategory(fragment.getMetricsCategory())
.launch();
} }
@Override @Override

View File

@@ -243,7 +243,7 @@ public class PowerUsageSummaryLegacy extends PowerUsageBase implements
KEY_TIME_SINCE_LAST_FULL_CHARGE); KEY_TIME_SINCE_LAST_FULL_CHARGE);
mFooterPreferenceMixin.createFooterPreference().setTitle(R.string.battery_footer_summary); mFooterPreferenceMixin.createFooterPreference().setTitle(R.string.battery_footer_summary);
mAnomalySummaryPreferenceController = new AnomalySummaryPreferenceController( mAnomalySummaryPreferenceController = new AnomalySummaryPreferenceController(
(SettingsActivity) getActivity(), this, MetricsEvent.FUELGAUGE_POWER_USAGE_SUMMARY); (SettingsActivity) getActivity(), this);
mBatteryUtils = BatteryUtils.getInstance(getContext()); mBatteryUtils = BatteryUtils.getInstance(getContext());
mAnomalySparseArray = new SparseArray<>(); mAnomalySparseArray = new SparseArray<>();

View File

@@ -20,13 +20,12 @@ package com.android.settings.fuelgauge;
import android.app.AppOpsManager; import android.app.AppOpsManager;
import android.content.Context; import android.content.Context;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.PreferenceFragment;
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.applications.LayoutPreference;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.InstrumentedPreferenceFragment;
import java.util.List; import java.util.List;
@@ -40,7 +39,7 @@ public class RestrictAppPreferenceController extends BasePreferenceController {
private AppOpsManager mAppOpsManager; private AppOpsManager mAppOpsManager;
private List<AppOpsManager.PackageOps> mPackageOps; private List<AppOpsManager.PackageOps> mPackageOps;
private SettingsActivity mSettingsActivity; private SettingsActivity mSettingsActivity;
private PreferenceFragment mPreferenceFragment; private InstrumentedPreferenceFragment mPreferenceFragment;
public RestrictAppPreferenceController(Context context) { public RestrictAppPreferenceController(Context context) {
super(context, KEY_RESTRICT_APP); super(context, KEY_RESTRICT_APP);
@@ -48,7 +47,7 @@ public class RestrictAppPreferenceController extends BasePreferenceController {
} }
public RestrictAppPreferenceController(SettingsActivity settingsActivity, public RestrictAppPreferenceController(SettingsActivity settingsActivity,
PreferenceFragment preferenceFragment) { InstrumentedPreferenceFragment preferenceFragment) {
this(settingsActivity.getApplicationContext()); this(settingsActivity.getApplicationContext());
mSettingsActivity = settingsActivity; mSettingsActivity = settingsActivity;
mPreferenceFragment = preferenceFragment; mPreferenceFragment = preferenceFragment;

View File

@@ -22,7 +22,6 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserHandle; import android.os.UserHandle;
import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.CheckBoxPreference; import android.support.v7.preference.CheckBoxPreference;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceGroup;
@@ -33,6 +32,8 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.AppCheckBoxPreference; import com.android.settings.widget.AppCheckBoxPreference;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
@@ -61,13 +62,16 @@ public class RestrictedAppDetails extends DashboardFragment {
PackageManager mPackageManager; PackageManager mPackageManager;
public static void startRestrictedAppDetails(SettingsActivity caller, public static void startRestrictedAppDetails(SettingsActivity caller,
PreferenceFragment fragment, List<AppOpsManager.PackageOps> packageOpsList) { InstrumentedPreferenceFragment fragment, List<AppOpsManager.PackageOps> packageOpsList) {
Bundle args = new Bundle(); final Bundle args = new Bundle();
args.putParcelableList(EXTRA_PACKAGE_OPS_LIST, packageOpsList); args.putParcelableList(EXTRA_PACKAGE_OPS_LIST, packageOpsList);
caller.startPreferencePanelAsUser(fragment, RestrictedAppDetails.class.getName(), args, new SubSettingLauncher(caller)
R.string.restricted_app_title, .setDestination(RestrictedAppDetails.class.getName())
new UserHandle(UserHandle.myUserId())); .setArguments(args)
.setTitle(R.string.restricted_app_title)
.setSourceMetricsCategory(fragment.getMetricsCategory())
.launch();
} }
@Override @Override

View File

@@ -19,11 +19,11 @@ package com.android.settings.fuelgauge;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.provider.SearchIndexableResource; import android.provider.SearchIndexableResource;
import android.support.v14.preference.PreferenceFragment;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
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.InstrumentedPreferenceFragment;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
@@ -69,7 +69,8 @@ public class SmartBatterySettings extends DashboardFragment {
} }
private static List<AbstractPreferenceController> buildPreferenceControllers( private static List<AbstractPreferenceController> buildPreferenceControllers(
Context context, SettingsActivity settingsActivity, PreferenceFragment fragment) { Context context, SettingsActivity settingsActivity,
InstrumentedPreferenceFragment fragment) {
final List<AbstractPreferenceController> controllers = new ArrayList<>(); final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new SmartBatteryPreferenceController(context)); controllers.add(new SmartBatteryPreferenceController(context));
if (settingsActivity != null && fragment != null) { if (settingsActivity != null && fragment != null) {

View File

@@ -18,11 +18,11 @@ package com.android.settings.fuelgauge.anomaly;
import android.content.Context; import android.content.Context;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.PreferenceFragment;
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.core.InstrumentedPreferenceFragment;
import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.fuelgauge.PowerUsageAnomalyDetails; import com.android.settings.fuelgauge.PowerUsageAnomalyDetails;
@@ -37,7 +37,7 @@ public class AnomalySummaryPreferenceController {
public static final String ANOMALY_KEY = "high_usage"; public static final String ANOMALY_KEY = "high_usage";
private static final int REQUEST_ANOMALY_ACTION = 0; private static final int REQUEST_ANOMALY_ACTION = 0;
private PreferenceFragment mFragment; private InstrumentedPreferenceFragment mFragment;
@VisibleForTesting @VisibleForTesting
Preference mAnomalyPreference; Preference mAnomalyPreference;
@VisibleForTesting @VisibleForTesting
@@ -54,11 +54,11 @@ public class AnomalySummaryPreferenceController {
private int mMetricsKey; private int mMetricsKey;
public AnomalySummaryPreferenceController(SettingsActivity activity, public AnomalySummaryPreferenceController(SettingsActivity activity,
PreferenceFragment fragment, int metricsKey) { InstrumentedPreferenceFragment fragment) {
mFragment = fragment; mFragment = fragment;
mSettingsActivity = activity; mSettingsActivity = activity;
mAnomalyPreference = mFragment.getPreferenceScreen().findPreference(ANOMALY_KEY); mAnomalyPreference = mFragment.getPreferenceScreen().findPreference(ANOMALY_KEY);
mMetricsKey = metricsKey; mMetricsKey = fragment.getMetricsCategory();
mBatteryUtils = BatteryUtils.getInstance(activity.getApplicationContext()); mBatteryUtils = BatteryUtils.getInstance(activity.getApplicationContext());
hideHighUsagePreference(); hideHighUsagePreference();
} }

View File

@@ -17,11 +17,12 @@
package com.android.settings.fuelgauge.batterytip.actions; package com.android.settings.fuelgauge.batterytip.actions;
import android.app.Fragment; import android.app.Fragment;
import android.os.UserHandle;
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.fuelgauge.SmartBatterySettings; import com.android.settings.fuelgauge.SmartBatterySettings;
import com.android.settingslib.core.instrumentation.Instrumentable;
public class SmartBatteryAction extends BatteryTipAction { public class SmartBatteryAction extends BatteryTipAction {
private SettingsActivity mSettingsActivity; private SettingsActivity mSettingsActivity;
@@ -38,9 +39,13 @@ public class SmartBatteryAction extends BatteryTipAction {
*/ */
@Override @Override
public void handlePositiveAction() { public void handlePositiveAction() {
mSettingsActivity.startPreferencePanelAsUser(mFragment, new SubSettingLauncher(mSettingsActivity)
SmartBatterySettings.class.getName(), null /* args */, .setSourceMetricsCategory(mFragment instanceof Instrumentable
R.string.smart_battery_manager_title, ? ((Instrumentable) mFragment).getMetricsCategory()
new UserHandle(UserHandle.myUserId())); : Instrumentable.METRICS_CATEGORY_UNKNOWN)
.setDestination(SmartBatterySettings.class.getName())
.setTitle(R.string.smart_battery_manager_title)
.launch();
} }
} }

View File

@@ -22,8 +22,8 @@ import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment; import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.widget.AppPreference; import com.android.settings.widget.AppPreference;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.location.RecentLocationApps; import com.android.settingslib.location.RecentLocationApps;
@@ -57,10 +57,14 @@ public class RecentLocationRequestPreferenceController extends LocationBasePrefe
// start new fragment to display extended information // start new fragment to display extended information
final Bundle args = new Bundle(); final Bundle args = new Bundle();
args.putString(AppInfoDashboardFragment.ARG_PACKAGE_NAME, mPackage); args.putString(AppInfoDashboardFragment.ARG_PACKAGE_NAME, mPackage);
((SettingsActivity) mFragment.getActivity()).startPreferencePanelAsUser(
mFragment, new SubSettingLauncher(mFragment.getContext())
AppInfoDashboardFragment.class.getName(), args, .setDestination(AppInfoDashboardFragment.class.getName())
R.string.application_info_label, mUserHandle); .setArguments(args)
.setTitle(R.string.application_info_label)
.setUserHandle(mUserHandle)
.setSourceMetricsCategory(mFragment.getMetricsCategory())
.launch();
return true; return true;
} }
} }

View File

@@ -22,13 +22,12 @@ 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.app.Fragment;
import android.content.Context; import android.content.Context;
import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.widget.MasterSwitchPreference; import com.android.settings.widget.MasterSwitchPreference;
@@ -57,9 +56,7 @@ public class BluetoothMasterSwitchPreferenceControllerTest {
@Mock @Mock
private RestrictionUtils mRestrictionUtils; private RestrictionUtils mRestrictionUtils;
@Mock @Mock
private Fragment mFragment; private InstrumentedPreferenceFragment mFragment;
@Mock
private SettingsActivity mActivity;
private Context mContext; private Context mContext;
private BluetoothMasterSwitchPreferenceController mController; private BluetoothMasterSwitchPreferenceController mController;
@@ -72,7 +69,7 @@ public class BluetoothMasterSwitchPreferenceControllerTest {
mFeatureFactory = FakeFeatureFactory.setupForTest(); mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new BluetoothMasterSwitchPreferenceController( mController = new BluetoothMasterSwitchPreferenceController(
mContext, mBluetoothManager, mRestrictionUtils, mFragment, mActivity); mContext, mBluetoothManager, mRestrictionUtils, mFragment);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
when(mPreference.getKey()).thenReturn(mController.getPreferenceKey()); when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
} }

View File

@@ -17,27 +17,20 @@
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.anyInt; import static org.mockito.Mockito.doNothing;
import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.spy;
import static org.mockito.Matchers.eq;
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.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context; import android.content.Context;
import android.support.v14.preference.PreferenceFragment; import android.content.Intent;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.SettingsActivity;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.R; import com.android.settings.R;
import com.android.settingslib.bluetooth.LocalBluetoothAdapter; import com.android.settings.TestConfig;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -52,21 +45,11 @@ import org.robolectric.annotation.Config;
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class BluetoothPairingPreferenceControllerTest { public class BluetoothPairingPreferenceControllerTest {
private static final int ORDER = 1; private static final int ORDER = 1;
private Context mContext;
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private PreferenceFragment mFragment; private DashboardFragment mFragment;
@Mock
private Lifecycle mLifecycle; private Context mContext;
@Mock
private LocalBluetoothAdapter mLocalAdapter;
@Mock
private FragmentManager mFragmentManager;
@Mock
private FragmentTransaction mFragmentTransaction;
@Mock
private PreferenceScreen mPreferenceScreen;
@Mock
private SettingsActivity mSettingsActivity;
private Preference mPreference; private Preference mPreference;
private BluetoothPairingPreferenceController mController; private BluetoothPairingPreferenceController mController;
@@ -75,14 +58,13 @@ public class BluetoothPairingPreferenceControllerTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = spy(RuntimeEnvironment.application);
when(mFragment.getPreferenceScreen().getContext()).thenReturn(mContext); when(mFragment.getPreferenceScreen().getContext()).thenReturn(mContext);
mPreference = new Preference(mContext); mPreference = new Preference(mContext);
mPreference.setKey(BluetoothPairingPreferenceController.KEY_PAIRING); mPreference.setKey(BluetoothPairingPreferenceController.KEY_PAIRING);
mController = new BluetoothPairingPreferenceController(mContext, mFragment, mController = new BluetoothPairingPreferenceController(mContext, mFragment);
mSettingsActivity);
} }
@Test @Test
@@ -98,9 +80,10 @@ public class BluetoothPairingPreferenceControllerTest {
@Test @Test
public void testHandlePreferenceTreeClick_startFragment() { public void testHandlePreferenceTreeClick_startFragment() {
doNothing().when(mContext).startActivity(any(Intent.class));
mController.handlePreferenceTreeClick(mPreference); mController.handlePreferenceTreeClick(mPreference);
verify(mSettingsActivity).startPreferencePanelAsUser(eq(mFragment), anyString(), any(), verify(mContext).startActivity(any(Intent.class));
anyInt(), any());
} }
} }

View File

@@ -16,6 +16,7 @@
package com.android.settings.fuelgauge; package com.android.settings.fuelgauge;
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
@@ -30,9 +31,9 @@ import static org.mockito.Mockito.verify;
import android.app.Activity; import android.app.Activity;
import android.app.AppOpsManager; import android.app.AppOpsManager;
import android.app.Fragment;
import android.app.LoaderManager; import android.app.LoaderManager;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
@@ -196,21 +197,22 @@ public class AdvancedPowerUsageDetailTest {
mTestActivity = spy(new SettingsActivity()); mTestActivity = spy(new SettingsActivity());
doReturn(mPackageManager).when(mTestActivity).getPackageManager(); doReturn(mPackageManager).when(mTestActivity).getPackageManager();
doReturn(mPackageManager).when(mActivity).getPackageManager();
doReturn(mAppOpsManager).when(mTestActivity).getSystemService(Context.APP_OPS_SERVICE); doReturn(mAppOpsManager).when(mTestActivity).getSystemService(Context.APP_OPS_SERVICE);
mBatteryUtils = spy(new BatteryUtils(mContext)); mBatteryUtils = spy(new BatteryUtils(mContext));
doReturn(FOREGROUND_SERVICE_TIME_US).when(mBatteryUtils).getForegroundServiceTotalTimeUs( doReturn(FOREGROUND_SERVICE_TIME_US).when(mBatteryUtils).getForegroundServiceTotalTimeUs(
any(BatteryStats.Uid.class), anyLong()); any(BatteryStats.Uid.class), anyLong());
final ArgumentCaptor<Bundle> captor = ArgumentCaptor.forClass(Bundle.class); final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
Answer<Void> callable = invocation -> { Answer<Void> callable = invocation -> {
mBundle = captor.getValue(); mBundle = captor.getValue().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
return null; return null;
}; };
doAnswer(callable).when(mTestActivity).startPreferencePanelAsUser( doAnswer(callable).when(mActivity).startActivityAsUser(captor.capture(),
nullable(Fragment.class), nullable(String.class), captor.capture(), anyInt(),
nullable(UserHandle.class)); nullable(UserHandle.class));
doAnswer(callable).when(mActivity).startActivity(captor.capture());
mForegroundPreference = new Preference(mContext); mForegroundPreference = new Preference(mContext);
mBackgroundPreference = new Preference(mContext); mBackgroundPreference = new Preference(mContext);
@@ -276,7 +278,7 @@ public class AdvancedPowerUsageDetailTest {
@Test @Test
public void testStartBatteryDetailPage_hasBasicData() { public void testStartBatteryDetailPage_hasBasicData() {
AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, mBatteryUtils, null, AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mBatteryUtils, mFragment,
mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, mAnomalies); mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, mAnomalies);
assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID); assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID);
@@ -295,7 +297,7 @@ public class AdvancedPowerUsageDetailTest {
mBatterySipper.drainType = BatterySipper.DrainType.PHONE; mBatterySipper.drainType = BatterySipper.DrainType.PHONE;
mBatterySipper.usageTimeMs = PHONE_FOREGROUND_TIME_MS; mBatterySipper.usageTimeMs = PHONE_FOREGROUND_TIME_MS;
AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, mBatteryUtils, null, AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mBatteryUtils, mFragment,
mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, null); mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, null);
assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID); assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID);
@@ -313,7 +315,7 @@ public class AdvancedPowerUsageDetailTest {
public void testStartBatteryDetailPage_NormalApp() { public void testStartBatteryDetailPage_NormalApp() {
mBatterySipper.mPackages = PACKAGE_NAME; mBatterySipper.mPackages = PACKAGE_NAME;
mBatteryEntry.defaultPackageName = PACKAGE_NAME[0]; mBatteryEntry.defaultPackageName = PACKAGE_NAME[0];
AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, mBatteryUtils, null, AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mBatteryUtils, mFragment,
mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, mAnomalies); mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, mAnomalies);
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME)).isEqualTo( assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME)).isEqualTo(
@@ -325,7 +327,7 @@ public class AdvancedPowerUsageDetailTest {
@Test @Test
public void testStartBatteryDetailPage_SystemApp() { public void testStartBatteryDetailPage_SystemApp() {
mBatterySipper.mPackages = null; mBatterySipper.mPackages = null;
AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, mBatteryUtils, null, AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mBatteryUtils, mFragment,
mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, null); mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, null);
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_LABEL)).isEqualTo(APP_LABEL); assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_LABEL)).isEqualTo(APP_LABEL);
@@ -340,12 +342,11 @@ public class AdvancedPowerUsageDetailTest {
final int appUid = 1010019; final int appUid = 1010019;
mBatterySipper.mPackages = PACKAGE_NAME; mBatterySipper.mPackages = PACKAGE_NAME;
doReturn(appUid).when(mBatterySipper).getUid(); doReturn(appUid).when(mBatterySipper).getUid();
AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, mBatteryUtils, null, AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mBatteryUtils, mFragment,
mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, null); mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, null);
verify(mTestActivity).startPreferencePanelAsUser(
nullable(Fragment.class), nullable(String.class), nullable(Bundle.class), anyInt(), verify(mActivity).startActivityAsUser(any(Intent.class), eq(new UserHandle(10)));
eq(new UserHandle(10)));
} }
@Test @Test
@@ -355,32 +356,27 @@ public class AdvancedPowerUsageDetailTest {
final int currentUser = 20; final int currentUser = 20;
ShadowActivityManager.setCurrentUser(currentUser); ShadowActivityManager.setCurrentUser(currentUser);
AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, mBatteryUtils, null, AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mBatteryUtils, mFragment,
mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, null); mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, null);
verify(mActivity).startActivityAsUser(any(Intent.class), eq(new UserHandle(currentUser)));
verify(mTestActivity).startPreferencePanelAsUser(
nullable(Fragment.class), nullable(String.class), nullable(Bundle.class), anyInt(),
eq(new UserHandle(currentUser)));
} }
@Test @Test
public void testStartBatteryDetailPage_noBatteryUsage_hasBasicData() { public void testStartBatteryDetailPage_noBatteryUsage_hasBasicData() {
final ArgumentCaptor<Bundle> captor = ArgumentCaptor.forClass(Bundle.class); final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
Answer<Void> callable = invocation -> {
mBundle = captor.getValue();
return null;
};
doAnswer(callable).when(mTestActivity).startPreferencePanelAsUser(nullable(Fragment.class),
nullable(String.class), captor.capture(), anyInt(),
nullable(UserHandle.class));
AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, null, PACKAGE_NAME[0]); AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mFragment, PACKAGE_NAME[0]);
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME)).isEqualTo( verify(mActivity).startActivity(captor.capture());
PACKAGE_NAME[0]);
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT)).isEqualTo( assertThat(captor.getValue().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS)
"0%"); .getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME))
.isEqualTo(PACKAGE_NAME[0]);
assertThat(captor.getValue().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT))
.isEqualTo("0%");
} }
@Test @Test
@@ -388,7 +384,7 @@ public class AdvancedPowerUsageDetailTest {
PackageManager.NameNotFoundException { PackageManager.NameNotFoundException {
doReturn(UID).when(mPackageManager).getPackageUid(PACKAGE_NAME[0], 0 /* no flag */); doReturn(UID).when(mPackageManager).getPackageUid(PACKAGE_NAME[0], 0 /* no flag */);
AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, null, PACKAGE_NAME[0]); AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mFragment, PACKAGE_NAME[0]);
assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID); assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID);
} }
@@ -398,7 +394,7 @@ public class AdvancedPowerUsageDetailTest {
mBatteryEntry.defaultPackageName = null; mBatteryEntry.defaultPackageName = null;
mBatteryEntry.sipper.mPackages = PACKAGE_NAME; mBatteryEntry.sipper.mPackages = PACKAGE_NAME;
AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, mBatteryUtils, null, AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mBatteryUtils, mFragment,
mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, null); mBatteryStatsHelper, 0, mBatteryEntry, USAGE_PERCENT, null);
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME)).isEqualTo( assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME)).isEqualTo(

View File

@@ -17,13 +17,11 @@
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.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceGroup;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.format.DateUtils; import android.text.format.DateUtils;
@@ -36,6 +34,7 @@ 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.core.FeatureFlags; import com.android.settings.core.FeatureFlags;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.fuelgauge.anomaly.Anomaly; import com.android.settings.fuelgauge.anomaly.Anomaly;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.SettingsShadowSystemProperties; import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
@@ -66,7 +65,7 @@ public class BatteryAppListPreferenceControllerTest {
@Mock @Mock
private PreferenceGroup mAppListGroup; private PreferenceGroup mAppListGroup;
@Mock @Mock
private PreferenceFragment mFragment; private InstrumentedPreferenceFragment mFragment;
@Mock @Mock
private BatteryUtils mBatteryUtils; private BatteryUtils mBatteryUtils;

View File

@@ -16,20 +16,19 @@
package com.android.settings.fuelgauge; package com.android.settings.fuelgauge;
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS;
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.anyInt; import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq; import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceGroup;
@@ -79,12 +78,9 @@ public class PowerUsageAnomalyDetailsTest {
private PackageManager mPackageManager; private PackageManager mPackageManager;
@Mock @Mock
private IconDrawableFactory mIconDrawableFactory; private IconDrawableFactory mIconDrawableFactory;
@Mock
private ApplicationInfo mApplicationInfo;
private Context mContext; private Context mContext;
private PowerUsageAnomalyDetails mFragment; private PowerUsageAnomalyDetails mFragment;
private PreferenceGroup mAbnormalListGroup; private PreferenceGroup mAbnormalListGroup;
private Bundle mBundle;
private List<Anomaly> mAnomalyList; private List<Anomaly> mAnomalyList;
@Before @Before
@@ -176,21 +172,14 @@ public class PowerUsageAnomalyDetailsTest {
@Test @Test
public void testStartBatteryAbnormalPage_dataCorrect() { public void testStartBatteryAbnormalPage_dataCorrect() {
final ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class); final ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
Answer<Void> bundleCallable = new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) throws Exception {
mBundle = bundleCaptor.getValue();
return null;
}
};
doAnswer(bundleCallable).when(mSettingsActivity).startPreferencePanelAsUser(any(),
anyString(), bundleCaptor.capture(), anyInt(), any());
PowerUsageAnomalyDetails.startBatteryAbnormalPage(mSettingsActivity, mFragment, PowerUsageAnomalyDetails.startBatteryAbnormalPage(mSettingsActivity, mFragment,
mAnomalyList); mAnomalyList);
assertThat(mBundle.getParcelableArrayList( verify(mSettingsActivity).startActivity(intent.capture());
PowerUsageAnomalyDetails.EXTRA_ANOMALY_LIST)).isEqualTo(mAnomalyList); assertThat(intent.getValue().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.getParcelableArrayList(PowerUsageAnomalyDetails.EXTRA_ANOMALY_LIST))
.isEqualTo(mAnomalyList);
} }
} }

View File

@@ -16,25 +16,28 @@
package com.android.settings.fuelgauge; package com.android.settings.fuelgauge;
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT;
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID;
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.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import android.app.AppOpsManager; import android.app.AppOpsManager;
import android.content.Context; import android.content.Context;
import android.support.v14.preference.PreferenceFragment; 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.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.core.InstrumentedPreferenceFragment;
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.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
@@ -55,7 +58,7 @@ public class RestrictAppPreferenceControllerTest {
@Mock @Mock
private SettingsActivity mSettingsActivity; private SettingsActivity mSettingsActivity;
@Mock @Mock
private PreferenceFragment mFragment; private InstrumentedPreferenceFragment mFragment;
private List<AppOpsManager.PackageOps> mPackageOpsList; private List<AppOpsManager.PackageOps> mPackageOpsList;
private RestrictAppPreferenceController mRestrictAppPreferenceController; private RestrictAppPreferenceController mRestrictAppPreferenceController;
private Preference mPreference; private Preference mPreference;
@@ -107,11 +110,15 @@ public class RestrictAppPreferenceControllerTest {
@Test @Test
public void testHandlePreferenceTreeClick_startFragment() { public void testHandlePreferenceTreeClick_startFragment() {
final ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
mRestrictAppPreferenceController.handlePreferenceTreeClick(mPreference); mRestrictAppPreferenceController.handlePreferenceTreeClick(mPreference);
verify(mSettingsActivity).startPreferencePanelAsUser(eq(mFragment), verify(mSettingsActivity).startActivity(intent.capture());
eq(RestrictedAppDetails.class.getName()), any(), eq(R.string.restricted_app_title), assertThat(intent.getValue().getStringExtra(EXTRA_SHOW_FRAGMENT))
any()); .isEqualTo(RestrictedAppDetails.class.getName());
assertThat(intent.getValue().getIntExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, -1))
.isEqualTo(R.string.restricted_app_title);
} }
} }

View File

@@ -17,24 +17,21 @@
package com.android.settings.fuelgauge.anomaly; package com.android.settings.fuelgauge.anomaly;
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.anyString; import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
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 static org.robolectric.Shadows.shadowOf;
import android.app.FragmentManager; import android.app.FragmentManager;
import android.app.FragmentTransaction; import android.app.FragmentTransaction;
import android.content.Context; import android.content.Context;
import android.support.v14.preference.PreferenceFragment;
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.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -57,7 +54,7 @@ public class AnomalySummaryPreferenceControllerTest {
private static final int UID = 111; private static final int UID = 111;
@Mock @Mock
private PreferenceFragment mFragment; private InstrumentedPreferenceFragment mFragment;
@Mock @Mock
private FragmentManager mFragmentManager; private FragmentManager mFragmentManager;
@Mock @Mock
@@ -89,7 +86,7 @@ public class AnomalySummaryPreferenceControllerTest {
mAnomalyList = new ArrayList<>(); mAnomalyList = new ArrayList<>();
mAnomalySummaryPreferenceController = new AnomalySummaryPreferenceController( mAnomalySummaryPreferenceController = new AnomalySummaryPreferenceController(
mSettingsActivity, mFragment, 0 /* metricskey */); mSettingsActivity, mFragment);
} }
@Test @Test

View File

@@ -15,8 +15,9 @@
*/ */
package com.android.settings.location; package com.android.settings.location;
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
@@ -27,7 +28,7 @@ import static org.mockito.Mockito.when;
import android.arch.lifecycle.LifecycleOwner; import android.arch.lifecycle.LifecycleOwner;
import android.content.Context; import android.content.Context;
import android.os.Bundle; 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.PreferenceCategory; import android.support.v7.preference.PreferenceCategory;
@@ -35,7 +36,6 @@ import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils; import android.text.TextUtils;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment; import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -47,6 +47,7 @@ import com.android.settingslib.location.RecentLocationApps.Request;
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.ArgumentMatcher; import org.mockito.ArgumentMatcher;
import org.mockito.InOrder; import org.mockito.InOrder;
import org.mockito.Mock; import org.mockito.Mock;
@@ -163,8 +164,9 @@ public class RecentLocationRequestPreferenceControllerTest {
@Test @Test
public void onPreferenceClick_shouldLaunchAppDetails() { public void onPreferenceClick_shouldLaunchAppDetails() {
final SettingsActivity activity = mock(SettingsActivity.class); final Context context= mock(Context.class);
when(mFragment.getActivity()).thenReturn(activity); when(mFragment.getContext()).thenReturn(context);
final List<RecentLocationApps.Request> requests = new ArrayList<>(); final List<RecentLocationApps.Request> requests = new ArrayList<>();
final Request request = mock(Request.class); final Request request = mock(Request.class);
requests.add(request); requests.add(request);
@@ -174,11 +176,14 @@ public class RecentLocationRequestPreferenceControllerTest {
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
mController.updateState(mCategory); mController.updateState(mCategory);
final ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
preference.performClick(); preference.performClick();
verify(activity).startPreferencePanelAsUser(any(), verify(context).startActivity(intent.capture());
eq(AppInfoDashboardFragment.class.getName()),
any(Bundle.class), anyInt(), any()); assertThat(intent.getValue().getStringExtra(EXTRA_SHOW_FRAGMENT))
.isEqualTo(AppInfoDashboardFragment.class.getName());
} }
private static ArgumentMatcher<Preference> titleMatches(String expected) { private static ArgumentMatcher<Preference> titleMatches(String expected) {