Merge "Remove more wrappers" into pi-dev

am: d73d3a8f55

Change-Id: Ic08a6f5c1b294df3562adfe526247419d762c034
This commit is contained in:
Fan Zhang
2018-04-02 21:14:43 -07:00
committed by android-build-merger
16 changed files with 113 additions and 200 deletions

View File

@@ -40,7 +40,6 @@ import com.android.settings.R;
import com.android.settings.applications.AppInfoBase; import com.android.settings.applications.AppInfoBase;
import com.android.settings.notification.EmptyTextSettings; import com.android.settings.notification.EmptyTextSettings;
import com.android.settings.widget.AppPreference; import com.android.settings.widget.AppPreference;
import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.text.Collator; import java.text.Collator;
@@ -88,7 +87,7 @@ public class PictureInPictureSettings extends EmptyTextSettings {
private Context mContext; private Context mContext;
private PackageManagerWrapper mPackageManager; private PackageManagerWrapper mPackageManager;
private UserManagerWrapper mUserManager; private UserManager mUserManager;
private IconDrawableFactory mIconDrawableFactory; private IconDrawableFactory mIconDrawableFactory;
/** /**
@@ -119,7 +118,7 @@ public class PictureInPictureSettings extends EmptyTextSettings {
// Do nothing // Do nothing
} }
public PictureInPictureSettings(PackageManagerWrapper pm, UserManagerWrapper um) { public PictureInPictureSettings(PackageManagerWrapper pm, UserManager um) {
mPackageManager = pm; mPackageManager = pm;
mUserManager = um; mUserManager = um;
} }
@@ -130,7 +129,7 @@ public class PictureInPictureSettings extends EmptyTextSettings {
mContext = getActivity(); mContext = getActivity();
mPackageManager = new PackageManagerWrapper(mContext.getPackageManager()); mPackageManager = new PackageManagerWrapper(mContext.getPackageManager());
mUserManager = new UserManagerWrapper(mContext.getSystemService(UserManager.class)); mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
mIconDrawableFactory = IconDrawableFactory.newInstance(mContext); mIconDrawableFactory = IconDrawableFactory.newInstance(mContext);
} }

View File

@@ -22,11 +22,10 @@ import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbPort; import android.hardware.usb.UsbPort;
import android.hardware.usb.UsbPortStatus; import android.hardware.usb.UsbPortStatus;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import com.android.settings.wrapper.UserManagerWrapper;
/** /**
* Provides access to underlying system USB functionality. * Provides access to underlying system USB functionality.
*/ */
@@ -50,17 +49,17 @@ public class UsbBackend {
private UsbPortStatus mPortStatus; private UsbPortStatus mPortStatus;
public UsbBackend(Context context) { public UsbBackend(Context context) {
this(context, new UserManagerWrapper(UserManager.get(context))); this(context, (UserManager) context.getSystemService(Context.USER_SERVICE));
} }
@VisibleForTesting @VisibleForTesting
public UsbBackend(Context context, UserManagerWrapper userManagerWrapper) { public UsbBackend(Context context, UserManager userManager) {
mUsbManager = context.getSystemService(UsbManager.class); mUsbManager = context.getSystemService(UsbManager.class);
mFileTransferRestricted = userManagerWrapper.isUsbFileTransferRestricted(); mFileTransferRestricted = isUsbFileTransferRestricted(userManager);
mFileTransferRestrictedBySystem = userManagerWrapper.isUsbFileTransferRestrictedBySystem(); mFileTransferRestrictedBySystem = isUsbFileTransferRestrictedBySystem(userManager);
mTetheringRestricted = userManagerWrapper.isUsbTetheringRestricted(); mTetheringRestricted = isUsbTetheringRestricted(userManager);
mTetheringRestrictedBySystem = userManagerWrapper.isUsbTetheringRestrictedBySystem(); mTetheringRestrictedBySystem = isUsbTetheringRestrictedBySystem(userManager);
mMidiSupported = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI); mMidiSupported = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI);
ConnectivityManager cm = ConnectivityManager cm =
@@ -172,6 +171,24 @@ public class UsbBackend {
return Integer.parseInt(role); return Integer.parseInt(role);
} }
private static boolean isUsbFileTransferRestricted(UserManager userManager) {
return userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER);
}
private static boolean isUsbTetheringRestricted(UserManager userManager) {
return userManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_TETHERING);
}
private static boolean isUsbFileTransferRestrictedBySystem(UserManager userManager) {
return userManager.hasBaseUserRestriction(
UserManager.DISALLOW_USB_FILE_TRANSFER, UserHandle.of(UserHandle.myUserId()));
}
private static boolean isUsbTetheringRestrictedBySystem(UserManager userManager) {
return userManager.hasBaseUserRestriction(
UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.of(UserHandle.myUserId()));
}
private boolean areFunctionDisallowed(long functions) { private boolean areFunctionDisallowed(long functions) {
return (mFileTransferRestricted && ((functions & UsbManager.FUNCTION_MTP) != 0 return (mFileTransferRestricted && ((functions & UsbManager.FUNCTION_MTP) != 0
|| (functions & UsbManager.FUNCTION_PTP) != 0)) || (functions & UsbManager.FUNCTION_PTP) != 0))

View File

@@ -47,7 +47,6 @@ import com.android.settings.deviceinfo.storage.VolumeSizesLoader;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable; import com.android.settings.search.Indexable;
import com.android.settings.widget.EntityHeaderController; import com.android.settings.widget.EntityHeaderController;
import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.applications.StorageStatsSource; import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.deviceinfo.PrivateStorageInfo; import com.android.settingslib.deviceinfo.PrivateStorageInfo;
@@ -185,8 +184,7 @@ public class StorageDashboardFragment extends DashboardFragment
mVolume, new StorageManagerVolumeProvider(sm)); mVolume, new StorageManagerVolumeProvider(sm));
controllers.add(mPreferenceController); controllers.add(mPreferenceController);
UserManagerWrapper userManager = final UserManager userManager = context.getSystemService(UserManager.class);
new UserManagerWrapper(context.getSystemService(UserManager.class));
mSecondaryUsers = SecondaryUserController.getSecondaryUserControllers(context, userManager); mSecondaryUsers = SecondaryUserController.getSecondaryUserControllers(context, userManager);
controllers.addAll(mSecondaryUsers); controllers.addAll(mSecondaryUsers);
@@ -235,8 +233,7 @@ public class StorageDashboardFragment extends DashboardFragment
public List<AbstractPreferenceController> createPreferenceControllers( public List<AbstractPreferenceController> createPreferenceControllers(
Context context) { Context context) {
final StorageManager sm = context.getSystemService(StorageManager.class); final StorageManager sm = context.getSystemService(StorageManager.class);
final UserManagerWrapper userManager = final UserManager userManager = context.getSystemService(UserManager.class);
new UserManagerWrapper(context.getSystemService(UserManager.class));
final List<AbstractPreferenceController> controllers = new ArrayList<>(); final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new StorageSummaryDonutPreferenceController(context)); controllers.add(new StorageSummaryDonutPreferenceController(context));
controllers.add(new StorageItemPreferenceController(context, null /* host */, controllers.add(new StorageItemPreferenceController(context, null /* host */,
@@ -251,9 +248,8 @@ public class StorageDashboardFragment extends DashboardFragment
@Override @Override
public Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> onCreateLoader(int id, public Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> onCreateLoader(int id,
Bundle args) { Bundle args) {
Context context = getContext(); final Context context = getContext();
return new StorageAsyncLoader(context, return new StorageAsyncLoader(context, context.getSystemService(UserManager.class),
new UserManagerWrapper(context.getSystemService(UserManager.class)),
mVolume.fsUuid, mVolume.fsUuid,
new StorageStatsSource(context), new StorageStatsSource(context),
new PackageManagerWrapper(context.getPackageManager())); new PackageManagerWrapper(context.getPackageManager()));

View File

@@ -34,7 +34,6 @@ import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.deviceinfo.storage.StorageAsyncLoader; import com.android.settings.deviceinfo.storage.StorageAsyncLoader;
import com.android.settings.deviceinfo.storage.StorageAsyncLoader.AppsStorageResult; import com.android.settings.deviceinfo.storage.StorageAsyncLoader.AppsStorageResult;
import com.android.settings.deviceinfo.storage.StorageItemPreferenceController; import com.android.settings.deviceinfo.storage.StorageItemPreferenceController;
import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.applications.StorageStatsSource; import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider; import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
@@ -114,9 +113,9 @@ public class StorageProfileFragment extends DashboardFragment
@Override @Override
public Loader<SparseArray<AppsStorageResult>> onCreateLoader(int id, Bundle args) { public Loader<SparseArray<AppsStorageResult>> onCreateLoader(int id, Bundle args) {
Context context = getContext(); final Context context = getContext();
return new StorageAsyncLoader(context, return new StorageAsyncLoader(context,
new UserManagerWrapper(context.getSystemService(UserManager.class)), context.getSystemService(UserManager.class),
mVolume.fsUuid, mVolume.fsUuid,
new StorageStatsSource(context), new StorageStatsSource(context),
new PackageManagerWrapper(context.getPackageManager())); new PackageManagerWrapper(context.getPackageManager()));

View File

@@ -19,6 +19,7 @@ package com.android.settings.deviceinfo.storage;
import android.content.Context; import android.content.Context;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.UserManager;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
@@ -29,7 +30,6 @@ import android.util.SparseArray;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.deviceinfo.StorageItemPreference; import com.android.settings.deviceinfo.StorageItemPreference;
import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import java.util.ArrayList; import java.util.ArrayList;
@@ -61,7 +61,7 @@ public class SecondaryUserController extends AbstractPreferenceController implem
* @param userManager UserManagerWrapper for figuring out which controllers to add. * @param userManager UserManagerWrapper for figuring out which controllers to add.
*/ */
public static List<AbstractPreferenceController> getSecondaryUserControllers( public static List<AbstractPreferenceController> getSecondaryUserControllers(
Context context, UserManagerWrapper userManager) { Context context, UserManager userManager) {
List<AbstractPreferenceController> controllers = new ArrayList<>(); List<AbstractPreferenceController> controllers = new ArrayList<>();
UserInfo primaryUser = userManager.getPrimaryUser(); UserInfo primaryUser = userManager.getPrimaryUser();
boolean addedUser = false; boolean addedUser = false;
@@ -74,8 +74,7 @@ public class SecondaryUserController extends AbstractPreferenceController implem
if (info == null || Utils.isProfileOf(primaryUser, info)) { if (info == null || Utils.isProfileOf(primaryUser, info)) {
controllers.add( controllers.add(
new UserProfileController( new UserProfileController(context, info, USER_PROFILE_INSERTION_LOCATION));
context, info, userManager, USER_PROFILE_INSERTION_LOCATION));
continue; continue;
} }

View File

@@ -26,11 +26,11 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.util.ArraySet; import android.util.ArraySet;
import android.util.Log; import android.util.Log;
import android.util.SparseArray; import android.util.SparseArray;
import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.applications.StorageStatsSource; import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.utils.AsyncLoader; import com.android.settingslib.utils.AsyncLoader;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -46,7 +46,7 @@ import java.util.List;
*/ */
public class StorageAsyncLoader public class StorageAsyncLoader
extends AsyncLoader<SparseArray<StorageAsyncLoader.AppsStorageResult>> { extends AsyncLoader<SparseArray<StorageAsyncLoader.AppsStorageResult>> {
private UserManagerWrapper mUserManager; private UserManager mUserManager;
private static final String TAG = "StorageAsyncLoader"; private static final String TAG = "StorageAsyncLoader";
private String mUuid; private String mUuid;
@@ -54,7 +54,7 @@ public class StorageAsyncLoader
private PackageManagerWrapper mPackageManager; private PackageManagerWrapper mPackageManager;
private ArraySet<String> mSeenPackages; private ArraySet<String> mSeenPackages;
public StorageAsyncLoader(Context context, UserManagerWrapper userManager, public StorageAsyncLoader(Context context, UserManager userManager,
String uuid, StorageStatsSource source, PackageManagerWrapper pm) { String uuid, StorageStatsSource source, PackageManagerWrapper pm) {
super(context); super(context);
mUserManager = userManager; mUserManager = userManager;

View File

@@ -32,7 +32,6 @@ import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.deviceinfo.StorageItemPreference; import com.android.settings.deviceinfo.StorageItemPreference;
import com.android.settings.deviceinfo.StorageProfileFragment; import com.android.settings.deviceinfo.StorageProfileFragment;
import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
/** /**
@@ -44,16 +43,13 @@ public class UserProfileController extends AbstractPreferenceController implemen
UserIconLoader.UserIconHandler { UserIconLoader.UserIconHandler {
private static final String PREFERENCE_KEY_BASE = "pref_profile_"; private static final String PREFERENCE_KEY_BASE = "pref_profile_";
private StorageItemPreference mStoragePreference; private StorageItemPreference mStoragePreference;
private UserManagerWrapper mUserManager;
private UserInfo mUser; private UserInfo mUser;
private long mTotalSizeBytes; private long mTotalSizeBytes;
private final int mPreferenceOrder; private final int mPreferenceOrder;
public UserProfileController( public UserProfileController(Context context, UserInfo info, int preferenceOrder) {
Context context, UserInfo info, UserManagerWrapper userManager, int preferenceOrder) {
super(context); super(context);
mUser = Preconditions.checkNotNull(info); mUser = Preconditions.checkNotNull(info);
mUserManager = userManager;
mPreferenceOrder = preferenceOrder; mPreferenceOrder = preferenceOrder;
} }

View File

@@ -27,7 +27,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.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.wrapper.WallpaperManagerWrapper;
public class WallpaperSuggestionActivity extends Activity { public class WallpaperSuggestionActivity extends Activity {
@@ -61,9 +60,16 @@ public class WallpaperSuggestionActivity extends Activity {
@VisibleForTesting @VisibleForTesting
public static boolean isSuggestionComplete(Context context) { public static boolean isSuggestionComplete(Context context) {
final WallpaperManagerWrapper manager = new WallpaperManagerWrapper(context); if (!isWallpaperServiceEnabled(context)) {
return manager.isWallpaperServiceEnabled() ? manager.getWallpaperId( return true;
WallpaperManager.FLAG_SYSTEM) > 0 : false; }
final WallpaperManager manager = (WallpaperManager) context.getSystemService(
WALLPAPER_SERVICE);
return manager.getWallpaperId(WallpaperManager.FLAG_SYSTEM) > 0;
} }
private static boolean isWallpaperServiceEnabled(Context context) {
return context.getResources().getBoolean(
com.android.internal.R.bool.config_enableWallpaperService);
}
} }

View File

@@ -1,67 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.wrapper;
import android.content.pm.UserInfo;
import android.os.UserHandle;
import android.os.UserManager;
import java.util.List;
/**
* This class replicates a subset of the android.os.UserManager. The class
* exists so that we can use a thin wrapper around the UserManager in production code and a mock in
* tests. We cannot directly mock or shadow the UserManager, because some of the methods we rely on
* are newer than the API version supported by Robolectric or are hidden.
*/
public class UserManagerWrapper {
private UserManager mUserManager;
public UserManagerWrapper(UserManager userManager) {
mUserManager = userManager;
}
public UserInfo getPrimaryUser() {
return mUserManager.getPrimaryUser();
}
public List<UserInfo> getUsers() {
return mUserManager.getUsers();
}
public List<UserInfo> getProfiles(int userHandle) {
return mUserManager.getProfiles(userHandle);
}
public boolean isUsbFileTransferRestricted() {
return mUserManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER);
}
public boolean isUsbTetheringRestricted() {
return mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_TETHERING);
}
public boolean isUsbFileTransferRestrictedBySystem() {
return mUserManager.hasBaseUserRestriction(
UserManager.DISALLOW_USB_FILE_TRANSFER, UserHandle.of(UserHandle.myUserId()));
}
public boolean isUsbTetheringRestrictedBySystem() {
return mUserManager.hasBaseUserRestriction(
UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.of(UserHandle.myUserId()));
}
}

View File

@@ -1,44 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.wrapper;
import android.app.WallpaperManager;
import android.content.Context;
public class WallpaperManagerWrapper {
private final WallpaperManager mWallpaperManager;
private final boolean mWallpaperServiceEnabled;
public WallpaperManagerWrapper(Context context) {
mWallpaperServiceEnabled = context.getResources().getBoolean(
com.android.internal.R.bool.config_enableWallpaperService);
mWallpaperManager = mWallpaperServiceEnabled ? (WallpaperManager) context.getSystemService(
Context.WALLPAPER_SERVICE) : null;
}
public boolean isWallpaperServiceEnabled() {
return mWallpaperServiceEnabled;
}
public int getWallpaperId(int which) {
if (!mWallpaperServiceEnabled) {
throw new RuntimeException("This device does not have wallpaper service enabled.");
}
return mWallpaperManager.getWallpaperId(which);
}
}

View File

@@ -25,12 +25,13 @@ import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.os.UserManager;
import android.util.Pair; import android.util.Pair;
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.wrapper.UserManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.junit.Before; import org.junit.Before;
@@ -52,7 +53,7 @@ public class PictureInPictureSettingsTest {
@Mock @Mock
private PackageManagerWrapper mPackageManager; private PackageManagerWrapper mPackageManager;
@Mock @Mock
private UserManagerWrapper mUserManager; private UserManager mUserManager;
private ArrayList<PackageInfo> mPrimaryUserPackages; private ArrayList<PackageInfo> mPrimaryUserPackages;
private ArrayList<PackageInfo> mProfileUserPackages; private ArrayList<PackageInfo> mProfileUserPackages;

View File

@@ -18,6 +18,8 @@ package com.android.settings.connecteddevice.usb;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.Answers.RETURNS_DEEP_STUBS;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.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;
@@ -27,9 +29,10 @@ import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbPort; import android.hardware.usb.UsbPort;
import android.hardware.usb.UsbPortStatus; import android.hardware.usb.UsbPortStatus;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.os.UserHandle;
import android.os.UserManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.UserManagerWrapper;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -45,7 +48,7 @@ public class UsbBackendTest {
@Mock @Mock
private UsbManager mUsbManager; private UsbManager mUsbManager;
@Mock @Mock
private UserManagerWrapper mUserManagerWrapper; private UserManager mUserManager;
@Mock @Mock
private ConnectivityManager mConnectivityManager; private ConnectivityManager mConnectivityManager;
@Mock @Mock
@@ -68,7 +71,7 @@ public class UsbBackendTest {
@Test @Test
public void setDataRole_allRolesSupported_shouldSetDataRole() { public void setDataRole_allRolesSupported_shouldSetDataRole() {
final UsbBackend usbBackend = new UsbBackend(mContext, mUserManagerWrapper); final UsbBackend usbBackend = new UsbBackend(mContext, mUserManager);
when(mUsbPortStatus when(mUsbPortStatus
.isRoleCombinationSupported(UsbPort.POWER_ROLE_SINK, UsbPort.DATA_ROLE_DEVICE)) .isRoleCombinationSupported(UsbPort.POWER_ROLE_SINK, UsbPort.DATA_ROLE_DEVICE))
@@ -91,7 +94,7 @@ public class UsbBackendTest {
@Test @Test
public void setDataRole_notAllRolesSupported_shouldSetDataAndPowerRole() { public void setDataRole_notAllRolesSupported_shouldSetDataAndPowerRole() {
final UsbBackend usbBackend = new UsbBackend(mContext, mUserManagerWrapper); final UsbBackend usbBackend = new UsbBackend(mContext, mUserManager);
when(mUsbPortStatus when(mUsbPortStatus
.isRoleCombinationSupported(UsbPort.POWER_ROLE_SINK, UsbPort.DATA_ROLE_DEVICE)) .isRoleCombinationSupported(UsbPort.POWER_ROLE_SINK, UsbPort.DATA_ROLE_DEVICE))
@@ -109,7 +112,7 @@ public class UsbBackendTest {
@Test @Test
public void setPowerRole_allRolesSupported_shouldSetPowerRole() { public void setPowerRole_allRolesSupported_shouldSetPowerRole() {
final UsbBackend usbBackend = new UsbBackend(mContext, mUserManagerWrapper); final UsbBackend usbBackend = new UsbBackend(mContext, mUserManager);
when(mUsbPortStatus when(mUsbPortStatus
.isRoleCombinationSupported(UsbPort.POWER_ROLE_SINK, UsbPort.DATA_ROLE_DEVICE)) .isRoleCombinationSupported(UsbPort.POWER_ROLE_SINK, UsbPort.DATA_ROLE_DEVICE))
@@ -133,7 +136,7 @@ public class UsbBackendTest {
@Test @Test
public void setPowerRole_notAllRolesSupported_shouldSetDataAndPowerRole() { public void setPowerRole_notAllRolesSupported_shouldSetDataAndPowerRole() {
final UsbBackend usbBackend = new UsbBackend(mContext, mUserManagerWrapper); final UsbBackend usbBackend = new UsbBackend(mContext, mUserManager);
when(mUsbPortStatus when(mUsbPortStatus
.isRoleCombinationSupported(UsbPort.POWER_ROLE_SINK, UsbPort.DATA_ROLE_DEVICE)) .isRoleCombinationSupported(UsbPort.POWER_ROLE_SINK, UsbPort.DATA_ROLE_DEVICE))
@@ -151,20 +154,26 @@ public class UsbBackendTest {
@Test @Test
public void areFunctionsSupported_fileTransferDisallowed_shouldReturnFalse() { public void areFunctionsSupported_fileTransferDisallowed_shouldReturnFalse() {
when(mUserManagerWrapper.isUsbFileTransferRestricted()).thenReturn(true); when(mUserManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER))
when(mUserManagerWrapper.isUsbFileTransferRestrictedBySystem()).thenReturn(true); .thenReturn(true);
when(mUserManager.hasBaseUserRestriction(
eq(UserManager.DISALLOW_USB_FILE_TRANSFER), any(UserHandle.class)))
.thenReturn(true);
final UsbBackend usbBackend = new UsbBackend(mContext, mUserManagerWrapper); final UsbBackend usbBackend = new UsbBackend(mContext, mUserManager);
assertThat(usbBackend.areFunctionsSupported(UsbManager.FUNCTION_MTP)).isFalse(); assertThat(usbBackend.areFunctionsSupported(UsbManager.FUNCTION_MTP)).isFalse();
} }
@Test @Test
public void areFunctionsSupported_fileTransferAllowed_shouldReturnTrue() { public void areFunctionsSupported_fileTransferAllowed_shouldReturnTrue() {
when(mUserManagerWrapper.isUsbFileTransferRestricted()).thenReturn(false); when(mUserManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER))
when(mUserManagerWrapper.isUsbFileTransferRestrictedBySystem()).thenReturn(false); .thenReturn(false);
when(mUserManager.hasBaseUserRestriction(
eq(UserManager.DISALLOW_USB_FILE_TRANSFER), any(UserHandle.class)))
.thenReturn(false);
final UsbBackend usbBackend = new UsbBackend(mContext, mUserManagerWrapper); final UsbBackend usbBackend = new UsbBackend(mContext, mUserManager);
assertThat(usbBackend.areFunctionsSupported(UsbManager.FUNCTION_MTP)).isTrue(); assertThat(usbBackend.areFunctionsSupported(UsbManager.FUNCTION_MTP)).isTrue();
} }

View File

@@ -26,13 +26,13 @@ import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.UserManager;
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;
import android.util.SparseArray; import android.util.SparseArray;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.applications.StorageStatsSource; import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.drawable.UserIconDrawable; import com.android.settingslib.drawable.UserIconDrawable;
@@ -54,7 +54,7 @@ public class SecondaryUserControllerTest {
private static final String TEST_NAME = "Fred"; private static final String TEST_NAME = "Fred";
private static final String TARGET_PREFERENCE_GROUP_KEY = "pref_secondary_users"; private static final String TARGET_PREFERENCE_GROUP_KEY = "pref_secondary_users";
@Mock @Mock
private UserManagerWrapper mUserManager; private UserManager mUserManager;
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@Mock @Mock

View File

@@ -35,7 +35,6 @@ import com.android.settings.SettingsActivity;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
import com.android.settings.deviceinfo.StorageProfileFragment; import com.android.settings.deviceinfo.StorageProfileFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.applications.StorageStatsSource; import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.drawable.UserIconDrawable; import com.android.settingslib.drawable.UserIconDrawable;
@@ -52,8 +51,6 @@ public class UserProfileControllerTest {
private static final String TEST_NAME = "Fred"; private static final String TEST_NAME = "Fred";
@Mock
private UserManagerWrapper mUserManager;
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@@ -66,7 +63,7 @@ public class UserProfileControllerTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
mPrimaryProfile = new UserInfo(); mPrimaryProfile = new UserInfo();
mController = new UserProfileController(mContext, mPrimaryProfile, mUserManager, 0); mController = new UserProfileController(mContext, mPrimaryProfile, 0);
when(mScreen.getContext()).thenReturn(mContext); when(mScreen.getContext()).thenReturn(mContext);
mPrimaryProfile.name = TEST_NAME; mPrimaryProfile.name = TEST_NAME;
mPrimaryProfile.id = 10; mPrimaryProfile.id = 10;

View File

@@ -20,15 +20,15 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf; import static org.robolectric.Shadows.shadowOf;
import android.app.WallpaperManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources; import android.content.res.Resources;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.WallpaperManagerWrapper;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -40,6 +40,7 @@ import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements; import org.robolectric.annotation.Implements;
import org.robolectric.annotation.Resetter;
import org.robolectric.shadows.ShadowActivity; import org.robolectric.shadows.ShadowActivity;
import org.robolectric.shadows.ShadowPackageManager; import org.robolectric.shadows.ShadowPackageManager;
@@ -59,6 +60,11 @@ public class WallpaperSuggestionActivityTest {
mController = Robolectric.buildActivity(WallpaperSuggestionActivity.class); mController = Robolectric.buildActivity(WallpaperSuggestionActivity.class);
} }
@After
public void tearDown() {
ShadowWallpaperManager.reset();
}
@Test @Test
public void launch_primarySuggestionActivityDoesNotExist_shouldFallback() { public void launch_primarySuggestionActivityDoesNotExist_shouldFallback() {
ShadowPackageManager packageManager = ShadowPackageManager packageManager =
@@ -74,32 +80,34 @@ public class WallpaperSuggestionActivityTest {
} }
@Test @Test
public void wallpaperServiceEnabled_no_shouldReturnFalse() { public void wallpaperServiceEnabled_no_shouldReturnTrue() {
when(mContext.getResources()).thenReturn(mResources); when(mContext.getResources()).thenReturn(mResources);
when(mResources.getBoolean(com.android.internal.R.bool.config_enableWallpaperService)) when(mResources.getBoolean(com.android.internal.R.bool.config_enableWallpaperService))
.thenReturn(false); .thenReturn(false);
assertThat(WallpaperSuggestionActivity.isSuggestionComplete(mContext)).isFalse();
}
@Test
@Config(shadows = WallpaperSuggestionActivityTest.ShadowWallpaperManagerWrapper.class)
public void hasWallpaperSet_no_shouldReturnFalse() {
ShadowWallpaperManagerWrapper.setWallpaperId(0);
assertThat(WallpaperSuggestionActivity.isSuggestionComplete(mContext)).isFalse();
}
@Test
@Config(shadows = WallpaperSuggestionActivityTest.ShadowWallpaperManagerWrapper.class)
public void hasWallpaperSet_yes_shouldReturnTrue() {
ShadowWallpaperManagerWrapper.setWallpaperId(100);
assertThat(WallpaperSuggestionActivity.isSuggestionComplete(mContext)).isTrue(); assertThat(WallpaperSuggestionActivity.isSuggestionComplete(mContext)).isTrue();
} }
@Implements(WallpaperManagerWrapper.class) @Test
public static class ShadowWallpaperManagerWrapper { @Config(shadows = ShadowWallpaperManager.class)
public void hasWallpaperSet_no_shouldReturnFalse() {
ShadowWallpaperManager.setWallpaperId(0);
assertThat(WallpaperSuggestionActivity.isSuggestionComplete(RuntimeEnvironment.application))
.isFalse();
}
@Test
@Config(shadows = ShadowWallpaperManager.class)
public void hasWallpaperSet_yes_shouldReturnTrue() {
ShadowWallpaperManager.setWallpaperId(100);
assertThat(WallpaperSuggestionActivity.isSuggestionComplete(RuntimeEnvironment.application))
.isTrue();
}
@Implements(WallpaperManager.class)
public static class ShadowWallpaperManager {
private static int sWallpaperId; private static int sWallpaperId;
@@ -107,13 +115,11 @@ public class WallpaperSuggestionActivityTest {
sWallpaperId = id; sWallpaperId = id;
} }
@Resetter
public static void reset() { public static void reset() {
sWallpaperId = 0; sWallpaperId = 0;
} }
public void __constructor__(Context context) {
}
@Implementation @Implementation
public boolean isWallpaperServiceEnabled() { public boolean isWallpaperServiceEnabled() {
return true; return true;

View File

@@ -17,7 +17,6 @@
package com.android.settings.deviceinfo.storage; package com.android.settings.deviceinfo.storage;
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.Matchers.anyInt;
import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.anyString;
@@ -31,11 +30,11 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.net.TrafficStats; import android.net.TrafficStats;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.support.test.filters.SmallTest; import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4; import android.support.test.runner.AndroidJUnit4;
import android.util.SparseArray; import android.util.SparseArray;
import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.applications.StorageStatsSource; import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -65,7 +64,7 @@ public class StorageAsyncLoaderTest {
@Mock @Mock
private PackageManagerWrapper mPackageManager; private PackageManagerWrapper mPackageManager;
@Mock @Mock
private UserManagerWrapper mUserManager; private UserManager mUserManager;
private List<ApplicationInfo> mInfo = new ArrayList<>(); private List<ApplicationInfo> mInfo = new ArrayList<>();
private List<UserInfo> mUsers; private List<UserInfo> mUsers;