Merge "Disable setting items in App details page" into tm-dev am: ca72e5c333

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/18178967

Change-Id: I97fb5d351bea43b6e7210bb856cd5c89d4ddc3af
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Tsung-Mao Fang
2022-05-10 20:26:40 +00:00
committed by Automerger Merge Worker
11 changed files with 210 additions and 19 deletions

View File

@@ -45,6 +45,7 @@ import com.android.settings.fuelgauge.BatteryUsageStatsLoader;
import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.fuelgauge.PowerUsageFeatureProvider; import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.core.lifecycle.Lifecycle; 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.OnPause; import com.android.settingslib.core.lifecycle.events.OnPause;
@@ -71,9 +72,10 @@ public class AppBatteryPreferenceController extends BasePreferenceController
BatteryDiffEntry mBatteryDiffEntry; BatteryDiffEntry mBatteryDiffEntry;
@VisibleForTesting @VisibleForTesting
boolean mIsChartGraphEnabled; boolean mIsChartGraphEnabled;
@VisibleForTesting
final AppInfoDashboardFragment mParent;
private Preference mPreference; private Preference mPreference;
private final AppInfoDashboardFragment mParent;
private String mBatteryPercent; private String mBatteryPercent;
private final String mPackageName; private final String mPackageName;
private final int mUid; private final int mUid;
@@ -107,6 +109,11 @@ public class AppBatteryPreferenceController extends BasePreferenceController
super.displayPreference(screen); super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
mPreference.setEnabled(false); mPreference.setEnabled(false);
if (!AppUtils.isAppInstalled(mParent.getAppEntry())) {
mPreference.setSummary("");
return;
}
loadBatteryDiffEntries(); loadBatteryDiffEntries();
} }

View File

@@ -35,6 +35,7 @@ import com.android.settings.Utils;
import com.android.settings.datausage.AppDataUsage; import com.android.settings.datausage.AppDataUsage;
import com.android.settings.datausage.DataUsageUtils; import com.android.settings.datausage.DataUsageUtils;
import com.android.settingslib.AppItem; import com.android.settingslib.AppItem;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnResume;
@@ -61,6 +62,7 @@ public class AppDataUsagePreferenceController extends AppInfoPreferenceControlle
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
mPreference.setEnabled(AppUtils.isAppInstalled(mAppEntry));
} }
@Override @Override

View File

@@ -154,6 +154,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
final TimeSpentInAppPreferenceController timeSpentInAppPreferenceController = use( final TimeSpentInAppPreferenceController timeSpentInAppPreferenceController = use(
TimeSpentInAppPreferenceController.class); TimeSpentInAppPreferenceController.class);
timeSpentInAppPreferenceController.setPackageName(packageName); timeSpentInAppPreferenceController.setPackageName(packageName);
timeSpentInAppPreferenceController.setParentFragment(this);
timeSpentInAppPreferenceController.initLifeCycleOwner(this); timeSpentInAppPreferenceController.initLifeCycleOwner(this);
use(AppDataUsagePreferenceController.class).setParentFragment(this); use(AppDataUsagePreferenceController.class).setParentFragment(this);

View File

@@ -25,6 +25,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.applications.ApplicationsState;
/* /*
* Abstract base controller for the app detail preferences that refresh the state when the app state * Abstract base controller for the app detail preferences that refresh the state when the app state
@@ -35,6 +36,7 @@ public abstract class AppInfoPreferenceControllerBase extends BasePreferenceCont
protected AppInfoDashboardFragment mParent; protected AppInfoDashboardFragment mParent;
protected Preference mPreference; protected Preference mPreference;
protected ApplicationsState.AppEntry mAppEntry;
private final Class<? extends SettingsPreferenceFragment> mDetailFragmentClass; private final Class<? extends SettingsPreferenceFragment> mDetailFragmentClass;
@@ -72,10 +74,12 @@ public abstract class AppInfoPreferenceControllerBase extends BasePreferenceCont
public void setParentFragment(AppInfoDashboardFragment parent) { public void setParentFragment(AppInfoDashboardFragment parent) {
mParent = parent; mParent = parent;
parent.addToCallbackList(this); parent.addToCallbackList(this);
mAppEntry = mParent.getAppEntry();
} }
/** /**
* Gets the fragment class to be launched when the preference is clicked. * Gets the fragment class to be launched when the preference is clicked.
*
* @return the fragment to launch * @return the fragment to launch
*/ */
protected Class<? extends SettingsPreferenceFragment> getDetailFragmentClass() { protected Class<? extends SettingsPreferenceFragment> getDetailFragmentClass() {
@@ -84,10 +88,10 @@ public abstract class AppInfoPreferenceControllerBase extends BasePreferenceCont
/** /**
* Gets any extras that should be passed to the fragment class when the preference is clicked. * Gets any extras that should be passed to the fragment class when the preference is clicked.
*
* @return a bundle of extras to include in the launch intent * @return a bundle of extras to include in the launch intent
*/ */
protected Bundle getArguments() { protected Bundle getArguments() {
return null; return null;
} }
} }

View File

@@ -22,11 +22,13 @@ import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.notification.app.AppNotificationSettings;
import com.android.settings.notification.NotificationBackend; import com.android.settings.notification.NotificationBackend;
import com.android.settings.notification.app.AppNotificationSettings;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState;
public class AppNotificationPreferenceController extends AppInfoPreferenceControllerBase { public class AppNotificationPreferenceController extends AppInfoPreferenceControllerBase {
@@ -49,6 +51,12 @@ public class AppNotificationPreferenceController extends AppInfoPreferenceContro
} }
} }
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mPreference.setEnabled(AppUtils.isAppInstalled(mAppEntry));
}
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
preference.setSummary(getNotificationSummary(mParent.getAppEntry(), mContext, mBackend)); preference.setSummary(getNotificationSummary(mParent.getAppEntry(), mContext, mBackend));

View File

@@ -26,12 +26,13 @@ import androidx.annotation.VisibleForTesting;
import androidx.loader.app.LoaderManager; import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader; import androidx.loader.content.Loader;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppStorageSettings; import com.android.settings.applications.AppStorageSettings;
import com.android.settings.applications.FetchPackageStorageAsyncLoader; import com.android.settings.applications.FetchPackageStorageAsyncLoader;
import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.StorageStatsSource; import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnPause;
@@ -48,13 +49,21 @@ public class AppStoragePreferenceController extends AppInfoPreferenceControllerB
} }
@Override @Override
public void updateState(Preference preference) { public void displayPreference(PreferenceScreen screen) {
final ApplicationsState.AppEntry entry = mParent.getAppEntry(); super.displayPreference(screen);
if (entry != null && entry.info != null) { mPreference.setEnabled(AppUtils.isAppInstalled(mAppEntry));
final boolean isExternal =
(entry.info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0;
preference.setSummary(getStorageSummary(mLastResult, isExternal));
} }
@Override
public void updateState(Preference preference) {
if (!AppUtils.isAppInstalled(mAppEntry)) {
preference.setSummary("");
return;
}
final boolean isExternal =
(mAppEntry.info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0;
preference.setSummary(getStorageSummary(mLastResult, isExternal));
} }
@Override @Override
@@ -102,5 +111,4 @@ public class AppStoragePreferenceController extends AppInfoPreferenceControllerB
@Override @Override
public void onLoaderReset(Loader<StorageStatsSource.AppStorageStats> loader) { public void onLoaderReset(Loader<StorageStatsSource.AppStorageStats> loader) {
} }
} }

View File

@@ -31,6 +31,8 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.applications.ApplicationFeatureProvider; import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.core.LiveDataController; import com.android.settings.core.LiveDataController;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import java.util.List; import java.util.List;
@@ -45,6 +47,8 @@ public class TimeSpentInAppPreferenceController extends LiveDataController {
private final ApplicationFeatureProvider mAppFeatureProvider; private final ApplicationFeatureProvider mAppFeatureProvider;
private Intent mIntent; private Intent mIntent;
private String mPackageName; private String mPackageName;
protected AppInfoDashboardFragment mParent;
protected ApplicationsState.AppEntry mAppEntry;
public TimeSpentInAppPreferenceController(Context context, String preferenceKey) { public TimeSpentInAppPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
@@ -59,6 +63,14 @@ public class TimeSpentInAppPreferenceController extends LiveDataController {
.putExtra(Intent.EXTRA_PACKAGE_NAME, mPackageName); .putExtra(Intent.EXTRA_PACKAGE_NAME, mPackageName);
} }
/**
* Set a parent fragment for this controller.
*/
public void setParentFragment(AppInfoDashboardFragment parent) {
mParent = parent;
mAppEntry = mParent.getAppEntry();
}
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
if (TextUtils.isEmpty(mPackageName)) { if (TextUtils.isEmpty(mPackageName)) {
@@ -84,6 +96,7 @@ public class TimeSpentInAppPreferenceController extends LiveDataController {
if (pref != null) { if (pref != null) {
pref.setIntent(mIntent); pref.setIntent(mIntent);
} }
pref.setEnabled(AppUtils.isAppInstalled(mAppEntry));
} }
@Override @Override

View File

@@ -28,6 +28,7 @@ import static org.mockito.Mockito.when;
import android.app.AppOpsManager; import android.app.AppOpsManager;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
import android.os.BatteryUsageStats; import android.os.BatteryUsageStats;
@@ -41,6 +42,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.fuelgauge.BatteryDiffEntry; import com.android.settings.fuelgauge.BatteryDiffEntry;
import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settingslib.applications.ApplicationsState;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -176,6 +178,26 @@ public class AppBatteryPreferenceControllerTest {
assertThat(mBatteryPreference.getSummary()).isEqualTo("60% use for past 24 hours"); assertThat(mBatteryPreference.getSummary()).isEqualTo("60% use for past 24 hours");
} }
@Test
public void displayPreference_noEntry_preferenceShouldSetEmptySummary() {
mController.mParent.setAppEntry(null);
mController.displayPreference(mScreen);
assertThat(mBatteryPreference.getSummary()).isEqualTo("");
}
@Test
public void displayPreference_appIsNotInstalled_preferenceShouldSetEmptySummary() {
final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
appEntry.info = new ApplicationInfo();
mController.mParent.setAppEntry(appEntry);
mController.displayPreference(mScreen);
assertThat(mBatteryPreference.getSummary()).isEqualTo("");
}
@Test @Test
public void isBatteryStatsAvailable_hasBatteryStatsHelperAndSipper_returnTrue() { public void isBatteryStatsAvailable_hasBatteryStatsHelperAndSipper_returnTrue() {
mController.mBatteryUsageStats = mBatteryUsageStats; mController.mBatteryUsageStats = mBatteryUsageStats;

View File

@@ -34,6 +34,7 @@ import android.os.Bundle;
import androidx.loader.app.LoaderManager; import androidx.loader.app.LoaderManager;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.datausage.AppDataUsage; import com.android.settings.datausage.AppDataUsage;
@@ -54,6 +55,8 @@ public class AppDataUsagePreferenceControllerTest {
private LoaderManager mLoaderManager; private LoaderManager mLoaderManager;
@Mock @Mock
private AppInfoDashboardFragment mFragment; private AppInfoDashboardFragment mFragment;
@Mock
private PreferenceScreen mScreen;
private Context mContext; private Context mContext;
private AppDataUsagePreferenceController mController; private AppDataUsagePreferenceController mController;
@@ -85,7 +88,8 @@ public class AppDataUsagePreferenceControllerTest {
@Test @Test
public void onResume_notAvailable_shouldNotRestartDataLoader() { public void onResume_notAvailable_shouldNotRestartDataLoader() {
doReturn(mLoaderManager).when(mFragment).getLoaderManager(); doReturn(mLoaderManager).when(mFragment).getLoaderManager();
doReturn(BasePreferenceController.CONDITIONALLY_UNAVAILABLE).when(mController).getAvailabilityStatus(); doReturn(BasePreferenceController.CONDITIONALLY_UNAVAILABLE).when(
mController).getAvailabilityStatus();
mController.onResume(); mController.onResume();
@@ -130,4 +134,45 @@ public class AppDataUsagePreferenceControllerTest {
verify(preference).setSummary(any()); verify(preference).setSummary(any());
} }
@Test
public void displayPreference_noEntry_preferenceShouldNotEnable() {
mController.mAppEntry = null;
Preference preference = new Preference(mContext);
when(mScreen.findPreference(any())).thenReturn(preference);
doReturn(true).when(mController).isBandwidthControlEnabled();
mController.displayPreference(mScreen);
assertThat(preference.isEnabled()).isFalse();
}
@Test
public void displayPreference_appIsInstalled_preferenceShouldEnable() {
final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = new ApplicationInfo();
appEntry.info.flags = ApplicationInfo.FLAG_INSTALLED;
mController.mAppEntry = appEntry;
Preference preference = new Preference(mContext);
when(mScreen.findPreference(any())).thenReturn(preference);
doReturn(true).when(mController).isBandwidthControlEnabled();
mController.displayPreference(mScreen);
assertThat(preference.isEnabled()).isTrue();
}
@Test
public void displayPreference_appIsNotInstalled_preferenceShouldDisable() {
final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = new ApplicationInfo();
mController.mAppEntry = appEntry;
Preference preference = new Preference(mContext);
when(mScreen.findPreference(any())).thenReturn(preference);
doReturn(true).when(mController).isBandwidthControlEnabled();
mController.displayPreference(mScreen);
assertThat(preference.isEnabled()).isFalse();
}
} }

View File

@@ -21,7 +21,6 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
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 static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -32,6 +31,7 @@ import android.os.Bundle;
import androidx.loader.app.LoaderManager; import androidx.loader.app.LoaderManager;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.applications.AppStorageSettings; import com.android.settings.applications.AppStorageSettings;
import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -52,6 +52,8 @@ public class AppStoragePreferenceControllerTest {
private LoaderManager mLoaderManager; private LoaderManager mLoaderManager;
@Mock @Mock
private AppInfoDashboardFragment mFragment; private AppInfoDashboardFragment mFragment;
@Mock
private PreferenceScreen mScreen;
private Context mContext; private Context mContext;
private AppStoragePreferenceController mController; private AppStoragePreferenceController mController;
@@ -89,10 +91,48 @@ public class AppStoragePreferenceControllerTest {
} }
@Test @Test
public void updateState_shouldUpdatePreferenceSummary() { public void displayPreference_noEntry_preferenceShouldNotEnable() {
mController.mAppEntry = null;
Preference preference = new Preference(mContext);
when(mScreen.findPreference(any())).thenReturn(preference);
mController.displayPreference(mScreen);
assertThat(preference.isEnabled()).isFalse();
}
@Test
public void displayPreference_appIsInstalled_preferenceShouldEnable() {
final AppEntry appEntry = mock(AppEntry.class); final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = new ApplicationInfo(); appEntry.info = new ApplicationInfo();
when(mFragment.getAppEntry()).thenReturn(appEntry); appEntry.info.flags = ApplicationInfo.FLAG_INSTALLED;
mController.mAppEntry = appEntry;
Preference preference = new Preference(mContext);
when(mScreen.findPreference(any())).thenReturn(preference);
mController.displayPreference(mScreen);
assertThat(preference.isEnabled()).isTrue();
}
@Test
public void displayPreference_appIsNotInstalled_preferenceShouldDisable() {
final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = new ApplicationInfo();
mController.mAppEntry = appEntry;
Preference preference = new Preference(mContext);
when(mScreen.findPreference(any())).thenReturn(preference);
mController.displayPreference(mScreen);
assertThat(preference.isEnabled()).isFalse();
}
@Test
public void updateState_hasAppEntry_shouldUpdatePreferenceSummary() {
final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = new ApplicationInfo();
mController.mAppEntry = appEntry;
Preference preference = mock(Preference.class); Preference preference = mock(Preference.class);
mController.updateState(preference); mController.updateState(preference);
@@ -102,12 +142,12 @@ public class AppStoragePreferenceControllerTest {
@Test @Test
public void updateState_entryIsNull_shouldNotUpdatePreferenceSummary() { public void updateState_entryIsNull_shouldNotUpdatePreferenceSummary() {
when(mFragment.getAppEntry()).thenReturn(null); mController.mAppEntry = null;
Preference preference = mock(Preference.class); Preference preference = new Preference(mContext);
mController.updateState(preference); mController.updateState(preference);
verify(preference, never()).setSummary(any()); assertThat(preference.getSummary()).isEqualTo("");
} }
@Test @Test

View File

@@ -20,7 +20,9 @@ import static android.content.Intent.EXTRA_PACKAGE_NAME;
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.ArgumentMatchers.nullable;
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;
@@ -35,6 +37,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.applications.ApplicationsState;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -125,4 +128,42 @@ public class TimeSpentInAppPreferenceControllerTest {
verify(mFeatureFactory.applicationFeatureProvider).getTimeSpentInApp( verify(mFeatureFactory.applicationFeatureProvider).getTimeSpentInApp(
nullable(String.class)); nullable(String.class));
} }
@Test
public void displayPreference_noEntry_preferenceShouldNotEnable() {
mController.mAppEntry = null;
Preference preference = new Preference(mContext);
when(mScreen.findPreference(any())).thenReturn(preference);
mController.displayPreference(mScreen);
assertThat(preference.isEnabled()).isFalse();
}
@Test
public void displayPreference_appIsInstalled_preferenceShouldEnable() {
final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
appEntry.info = new ApplicationInfo();
appEntry.info.flags = ApplicationInfo.FLAG_INSTALLED;
mController.mAppEntry = appEntry;
Preference preference = new Preference(mContext);
when(mScreen.findPreference(any())).thenReturn(preference);
mController.displayPreference(mScreen);
assertThat(preference.isEnabled()).isTrue();
}
@Test
public void displayPreference_appIsNotInstalled_preferenceShouldDisable() {
final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
appEntry.info = new ApplicationInfo();
mController.mAppEntry = appEntry;
Preference preference = new Preference(mContext);
when(mScreen.findPreference(any())).thenReturn(preference);
mController.displayPreference(mScreen);
assertThat(preference.isEnabled()).isFalse();
}
} }