Consolidate all wrappers used for testing.
- Add the wrapper package and move all wrappers to the wrapper package.
- Get rid of some wrapper interface/impl implementation and have a
wrapper class directly.
Bug: 65634579
Test: make RunSettingsRoboTests
Change-Id: Ic757d8f7bacfa7a034c7e692205bc1dc4b0e1de1
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index fa61cec..89724cc 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -110,9 +110,8 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.UserIcons;
import com.android.internal.widget.LockPatternUtils;
-import com.android.settings.enterprise.DevicePolicyManagerWrapper;
-import com.android.settings.password.FingerprintManagerWrapper;
-import com.android.settings.password.IFingerprintManager;
+import com.android.settings.wrapper.FingerprintManagerWrapper;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import java.io.IOException;
import java.io.InputStream;
@@ -1258,7 +1257,7 @@
}
}
- public static IFingerprintManager getFingerprintManagerWrapperOrNull(Context context) {
+ public static FingerprintManagerWrapper getFingerprintManagerWrapperOrNull(Context context) {
FingerprintManager fingerprintManager = getFingerprintManagerOrNull(context);
if (fingerprintManager != null) {
return new FingerprintManagerWrapper(fingerprintManager);
diff --git a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
index b5133d3..068847f 100644
--- a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
+++ b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
@@ -43,8 +43,7 @@
import com.android.settings.applications.LayoutPreference;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settings.enterprise.DevicePolicyManagerWrapper;
-import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import java.io.IOException;
@@ -60,7 +59,7 @@
private DevicePolicyManagerWrapper mDpm;
public RemoveAccountPreferenceController(Context context, Fragment parent) {
- this(context, parent, new DevicePolicyManagerWrapperImpl(
+ this(context, parent, new DevicePolicyManagerWrapper(
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE)));
}
diff --git a/src/com/android/settings/applications/AccessibilityServiceInfoWrapperImpl.java b/src/com/android/settings/applications/AccessibilityServiceInfoWrapperImpl.java
deleted file mode 100644
index d0d99ea..0000000
--- a/src/com/android/settings/applications/AccessibilityServiceInfoWrapperImpl.java
+++ /dev/null
@@ -1,39 +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.applications;
-
-import android.accessibilityservice.AccessibilityServiceInfo;
-import android.content.ComponentName;
-
-public class AccessibilityServiceInfoWrapperImpl implements AccessibilityServiceInfoWrapper {
-
- private final AccessibilityServiceInfo mServiceInfo;
-
- public AccessibilityServiceInfoWrapperImpl(AccessibilityServiceInfo serviceInfo) {
- mServiceInfo = serviceInfo;
- }
-
- @Override
- public AccessibilityServiceInfo getAccessibilityServiceInfo() {
- return mServiceInfo;
- }
-
- @Override
- public ComponentName getComponentName() {
- return mServiceInfo.getComponentName();
- }
-}
diff --git a/src/com/android/settings/applications/ActivityInfoWrapper.java b/src/com/android/settings/applications/ActivityInfoWrapper.java
deleted file mode 100644
index 4cb6e68..0000000
--- a/src/com/android/settings/applications/ActivityInfoWrapper.java
+++ /dev/null
@@ -1,30 +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.applications;
-
-/**
- * This interface replicates a subset of the android.content.pm.ActivityInfo. The interface
- * exists so that we can use a thin wrapper around the ActivityInfo in production code and a mock in
- * tests.
- */
-public interface ActivityInfoWrapper {
-
- /**
- * Returns whether this activity supports picture-in-picture.
- */
- boolean supportsPictureInPicture();
-}
diff --git a/src/com/android/settings/applications/AppCounter.java b/src/com/android/settings/applications/AppCounter.java
index 8c7aed7..a02ecfa 100644
--- a/src/com/android/settings/applications/AppCounter.java
+++ b/src/com/android/settings/applications/AppCounter.java
@@ -22,6 +22,8 @@
import android.os.UserHandle;
import android.os.UserManager;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
+
import java.util.List;
public abstract class AppCounter extends AsyncTask<Void, Void, Integer> {
diff --git a/src/com/android/settings/applications/AppInfoBase.java b/src/com/android/settings/applications/AppInfoBase.java
index a5daee2..b06c070 100644
--- a/src/com/android/settings/applications/AppInfoBase.java
+++ b/src/com/android/settings/applications/AppInfoBase.java
@@ -43,9 +43,8 @@
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settings.enterprise.DevicePolicyManagerWrapper;
-import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -94,7 +93,7 @@
.getApplicationFeatureProvider(activity);
mState = ApplicationsState.getInstance(activity.getApplication());
mSession = mState.newSession(this);
- mDpm = new DevicePolicyManagerWrapperImpl(
+ mDpm = new DevicePolicyManagerWrapper(
(DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE));
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
mPm = activity.getPackageManager();
diff --git a/src/com/android/settings/applications/AppLister.java b/src/com/android/settings/applications/AppLister.java
index 425afa0..f1a3be9 100644
--- a/src/com/android/settings/applications/AppLister.java
+++ b/src/com/android/settings/applications/AppLister.java
@@ -23,6 +23,8 @@
import android.os.UserHandle;
import android.os.UserManager;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
+
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/applications/AppStateAppOpsBridge.java b/src/com/android/settings/applications/AppStateAppOpsBridge.java
index 896102c..6ec32a3 100755
--- a/src/com/android/settings/applications/AppStateAppOpsBridge.java
+++ b/src/com/android/settings/applications/AppStateAppOpsBridge.java
@@ -31,6 +31,7 @@
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
+import com.android.settings.wrapper.IPackageManagerWrapper;
import java.util.Arrays;
import java.util.Collection;
@@ -57,7 +58,7 @@
public AppStateAppOpsBridge(Context context, ApplicationsState appState, Callback callback,
int appOpsOpCode, String[] permissions) {
this(context, appState, callback, appOpsOpCode, permissions,
- new IPackageManagerWrapperImpl(AppGlobals.getPackageManager()));
+ new IPackageManagerWrapper(AppGlobals.getPackageManager()));
}
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
diff --git a/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounter.java b/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounter.java
index c7d0a62..a1bf14e 100644
--- a/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounter.java
+++ b/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounter.java
@@ -22,7 +22,9 @@
import android.os.RemoteException;
import android.os.UserHandle;
-import com.android.settings.enterprise.DevicePolicyManagerWrapper;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
+import com.android.settings.wrapper.IPackageManagerWrapper;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
/**
* Counts installed apps across all users that have been granted one or more specific permissions by
diff --git a/src/com/android/settings/applications/AppWithAdminGrantedPermissionsLister.java b/src/com/android/settings/applications/AppWithAdminGrantedPermissionsLister.java
index b21f31f..dd5a807 100644
--- a/src/com/android/settings/applications/AppWithAdminGrantedPermissionsLister.java
+++ b/src/com/android/settings/applications/AppWithAdminGrantedPermissionsLister.java
@@ -18,7 +18,9 @@
import android.content.pm.ApplicationInfo;
import android.os.UserManager;
-import com.android.settings.enterprise.DevicePolicyManagerWrapper;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
+import com.android.settings.wrapper.IPackageManagerWrapper;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
/**
* Lists installed apps across all users that have been granted one or more specific permissions by
diff --git a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
index 10b61c5..5323cd5 100644
--- a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
+++ b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
@@ -29,7 +29,9 @@
import android.view.View;
import com.android.settings.applications.instantapps.InstantAppButtonsController;
-import com.android.settings.enterprise.DevicePolicyManagerWrapper;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
+import com.android.settings.wrapper.IPackageManagerWrapper;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/applications/AutofillManagerWrapperImpl.java b/src/com/android/settings/applications/AutofillManagerWrapperImpl.java
deleted file mode 100644
index 9dd1b33..0000000
--- a/src/com/android/settings/applications/AutofillManagerWrapperImpl.java
+++ /dev/null
@@ -1,45 +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.applications;
-
-import android.view.autofill.AutofillManager;
-
-public class AutofillManagerWrapperImpl implements AutofillManagerWrapper {
- private final AutofillManager mAfm;
-
- public AutofillManagerWrapperImpl(AutofillManager afm) {
- mAfm = afm;
- }
-
- @Override
- public boolean hasAutofillFeature() {
- if (mAfm == null) {
- return false;
- }
-
- return mAfm.hasAutofillFeature();
- }
-
- @Override
- public boolean isAutofillSupported() {
- if (mAfm == null) {
- return false;
- }
-
- return mAfm.isAutofillSupported();
- }
-}
diff --git a/src/com/android/settings/applications/IPackageManagerWrapperImpl.java b/src/com/android/settings/applications/IPackageManagerWrapperImpl.java
deleted file mode 100644
index af5f378..0000000
--- a/src/com/android/settings/applications/IPackageManagerWrapperImpl.java
+++ /dev/null
@@ -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.applications;
-
-import android.content.Intent;
-import android.content.pm.IPackageManager;
-import android.content.pm.PackageInfo;
-import android.content.pm.ParceledListSlice;
-import android.content.pm.ResolveInfo;
-import android.os.RemoteException;
-
-public class IPackageManagerWrapperImpl implements IPackageManagerWrapper {
-
- private final IPackageManager mPms;
-
- public IPackageManagerWrapperImpl(IPackageManager pms) {
- mPms = pms;
- }
-
- @Override
- public int checkUidPermission(String permName, int uid) throws RemoteException {
- return mPms.checkUidPermission(permName, uid);
- }
-
- @Override
- public ResolveInfo findPersistentPreferredActivity(Intent intent, int userId)
- throws RemoteException {
- return mPms.findPersistentPreferredActivity(intent, userId);
- }
-
- @Override
- public PackageInfo getPackageInfo(String packageName, int flags, int userId)
- throws RemoteException {
- return mPms.getPackageInfo(packageName, flags, userId);
- }
-
- @Override
- public String[] getAppOpPermissionPackages(String permissionName) throws RemoteException {
- return mPms.getAppOpPermissionPackages(permissionName);
- }
-
- @Override
- public boolean isPackageAvailable(String packageName, int userId) throws RemoteException {
- return mPms.isPackageAvailable(packageName, userId);
- }
-
- @Override
- public ParceledListSlice<PackageInfo> getPackagesHoldingPermissions(
- String[] permissions, int flags, int userId) throws RemoteException {
- return mPms.getPackagesHoldingPermissions(permissions, flags, userId);
- }
-
-}
diff --git a/src/com/android/settings/applications/InstalledAppCounter.java b/src/com/android/settings/applications/InstalledAppCounter.java
index 932face..26372ee 100644
--- a/src/com/android/settings/applications/InstalledAppCounter.java
+++ b/src/com/android/settings/applications/InstalledAppCounter.java
@@ -21,6 +21,8 @@
import android.content.pm.PackageManager;
import android.os.UserHandle;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
+
import java.util.List;
public abstract class InstalledAppCounter extends AppCounter {
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 209cd22..2f44d3e 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -24,7 +24,6 @@
import android.app.AlertDialog;
import android.app.LoaderManager;
import android.app.LoaderManager.LoaderCallbacks;
-import android.app.admin.DevicePolicyManager;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -106,6 +105,7 @@
import com.android.settingslib.development.DevelopmentSettingsEnabler;
import com.android.settingslib.net.ChartData;
import com.android.settingslib.net.ChartDataLoader;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -1236,7 +1236,7 @@
if (pref != null) {
pref.setSummary(DefaultHomePreferenceController.isHomeDefault(mPackageName,
- new PackageManagerWrapperImpl(context.getPackageManager()))
+ new PackageManagerWrapper(context.getPackageManager()))
? R.string.yes : R.string.no);
}
pref = findPreference("default_browser");
diff --git a/src/com/android/settings/applications/InstalledAppLister.java b/src/com/android/settings/applications/InstalledAppLister.java
index d8e7c58..3312d3e 100644
--- a/src/com/android/settings/applications/InstalledAppLister.java
+++ b/src/com/android/settings/applications/InstalledAppLister.java
@@ -20,6 +20,8 @@
import android.content.pm.PackageManager;
import android.os.UserManager;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
+
public abstract class InstalledAppLister extends AppLister {
public InstalledAppLister(PackageManagerWrapper packageManager, UserManager userManager) {
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index 11eb0cc..90b6a54 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -90,6 +90,7 @@
import com.android.settingslib.applications.ApplicationsState.CompoundFilter;
import com.android.settingslib.applications.ApplicationsState.VolumeFilter;
import com.android.settingslib.applications.StorageStatsSource;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.Arrays;
@@ -888,7 +889,6 @@
private int mLastSortMode = -1;
private int mWhichSize = SIZE_TOTAL;
CharSequence mCurFilterPrefix;
- private PackageManager mPm;
private AppFilter mCompositeFilter;
private boolean mHasReceivedLoadEntries;
private boolean mHasReceivedBridgeCallback;
@@ -938,7 +938,6 @@
mManageApplications.mListContainer
);
mContext = manageApplications.getActivity();
- mPm = mContext.getPackageManager();
mFilterMode = filterMode;
if (mManageApplications.mListType == LIST_TYPE_NOTIFICATION) {
mExtraInfoBridge = new AppStateNotificationBridge(mContext, mState, this,
@@ -1491,7 +1490,7 @@
public void setListening(boolean listening) {
if (listening) {
new InstalledAppCounter(mContext, InstalledAppCounter.IGNORE_INSTALL_REASON,
- new PackageManagerWrapperImpl(mContext.getPackageManager())) {
+ new PackageManagerWrapper(mContext.getPackageManager())) {
@Override
protected void onCountComplete(int num) {
mLoader.setSummary(SummaryProvider.this,
diff --git a/src/com/android/settings/applications/NotificationApps.java b/src/com/android/settings/applications/NotificationApps.java
index f290d43..ee802dd 100644
--- a/src/com/android/settings/applications/NotificationApps.java
+++ b/src/com/android/settings/applications/NotificationApps.java
@@ -21,6 +21,7 @@
import com.android.settings.R;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.notification.NotificationBackend;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
/**
* Extension of ManageApplications with no changes other than having its own
@@ -39,7 +40,7 @@
mContext = context;
mLoader = loader;
mNotificationBackend = new NotificationBackend();
- mPackageManager = new PackageManagerWrapperImpl(mContext.getPackageManager());
+ mPackageManager = new PackageManagerWrapper(mContext.getPackageManager());
}
@Override
diff --git a/src/com/android/settings/applications/PackageManagerWrapper.java b/src/com/android/settings/applications/PackageManagerWrapper.java
deleted file mode 100644
index 580b578..0000000
--- a/src/com/android/settings/applications/PackageManagerWrapper.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2016 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.applications;
-
-import android.content.ComponentName;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageDeleteObserver;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.UserHandle;
-import android.os.storage.VolumeInfo;
-
-import java.util.List;
-
-/**
- * This interface replicates a subset of the android.content.pm.PackageManager (PM). The interface
- * exists so that we can use a thin wrapper around the PM in production code and a mock in tests.
- * We cannot directly mock or shadow the PM, because some of the methods we rely on are newer than
- * the API version supported by Robolectric.
- */
-public interface PackageManagerWrapper {
-
- /**
- * Returns the real {@code PackageManager} object.
- */
- PackageManager getPackageManager();
-
- /**
- * Calls {@code PackageManager.getInstalledApplicationsAsUser()}.
- *
- * @see android.content.pm.PackageManager#getInstalledApplicationsAsUser
- */
- List<ApplicationInfo> getInstalledApplicationsAsUser(int flags, int userId);
-
- /**
- * Calls {@code PackageManager.hasSystemFeature()}.
- *
- * @see android.content.pm.PackageManager#hasSystemFeature
- */
- boolean hasSystemFeature(String name);
-
- /**
- * Calls {@code PackageManager.queryIntentActivitiesAsUser()}.
- *
- * @see android.content.pm.PackageManager#queryIntentActivitiesAsUser
- */
- List<ResolveInfo> queryIntentActivitiesAsUser(Intent intent, int flags, int userId);
-
- /**
- * Calls {@code PackageManager.getInstallReason()}.
- *
- * @see android.content.pm.PackageManager#getInstallReason
- */
- int getInstallReason(String packageName, UserHandle user);
-
- /**
- * Calls {@code PackageManager.getApplicationInfoAsUser}
- */
- ApplicationInfo getApplicationInfoAsUser(String packageName, int i, int userId)
- throws PackageManager.NameNotFoundException;
-
- /**
- * Calls {@code PackageManager.setDefaultBrowserPackageNameAsUser}
- */
- boolean setDefaultBrowserPackageNameAsUser(String packageName, int userId);
-
- /**
- * Calls {@code PackageManager.getDefaultBrowserPackageNameAsUser}
- */
- String getDefaultBrowserPackageNameAsUser(int userId);
-
- /**
- * Calls {@code PackageManager.getHomeActivities}
- */
- ComponentName getHomeActivities(List<ResolveInfo> homeActivities);
-
- /**
- * Calls {@code PackageManager.queryIntentServicesAsUser}
- */
- List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int i, int user);
-
- /**
- * Calls {@code PackageManager.replacePreferredActivity}
- */
- void replacePreferredActivity(IntentFilter homeFilter, int matchCategoryEmpty,
- ComponentName[] componentNames, ComponentName component);
-
- /**
- * Calls {@code PackageManager.getPrimaryStorageCurrentVolume}
- */
- VolumeInfo getPrimaryStorageCurrentVolume();
-
- /**
- * Calls {@code PackageManager.deletePackageAsUser}
- */
- void deletePackageAsUser(String packageName, IPackageDeleteObserver observer, int flags,
- int userId);
-
- int getPackageUidAsUser(String pkg, int userId) throws PackageManager.NameNotFoundException;
-}
diff --git a/src/com/android/settings/applications/PackageManagerWrapperImpl.java b/src/com/android/settings/applications/PackageManagerWrapperImpl.java
deleted file mode 100644
index a47137c..0000000
--- a/src/com/android/settings/applications/PackageManagerWrapperImpl.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2016 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.applications;
-
-import android.content.ComponentName;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageDeleteObserver;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.UserHandle;
-import android.os.storage.VolumeInfo;
-
-import java.util.List;
-
-public class PackageManagerWrapperImpl implements PackageManagerWrapper {
-
- private final PackageManager mPm;
-
- public PackageManagerWrapperImpl(PackageManager pm) {
- mPm = pm;
- }
-
- @Override
- public PackageManager getPackageManager() {
- return mPm;
- }
-
- @Override
- public List<ApplicationInfo> getInstalledApplicationsAsUser(int flags, int userId) {
- return mPm.getInstalledApplicationsAsUser(flags, userId);
- }
-
- @Override
- public boolean hasSystemFeature(String name) {
- return mPm.hasSystemFeature(name);
- }
-
- @Override
- public List<ResolveInfo> queryIntentActivitiesAsUser(Intent intent, int flags, int userId) {
- return mPm.queryIntentActivitiesAsUser(intent, flags, userId);
- }
-
- @Override
- public int getInstallReason(String packageName, UserHandle user) {
- return mPm.getInstallReason(packageName, user);
- }
-
- @Override
- public ApplicationInfo getApplicationInfoAsUser(String packageName, int i, int userId)
- throws PackageManager.NameNotFoundException {
- return mPm.getApplicationInfoAsUser(packageName, i, userId);
- }
-
- @Override
- public boolean setDefaultBrowserPackageNameAsUser(String packageName, int userId) {
- return mPm.setDefaultBrowserPackageNameAsUser(packageName, userId);
- }
-
- @Override
- public String getDefaultBrowserPackageNameAsUser(int userId) {
- return mPm.getDefaultBrowserPackageNameAsUser(userId);
- }
-
- @Override
- public ComponentName getHomeActivities(List<ResolveInfo> homeActivities) {
- return mPm.getHomeActivities(homeActivities);
- }
-
- @Override
- public List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int i, int user) {
- return mPm.queryIntentServicesAsUser(intent, i, user);
- }
-
- @Override
- public void replacePreferredActivity(IntentFilter homeFilter, int matchCategoryEmpty,
- ComponentName[] componentNames, ComponentName component) {
- mPm.replacePreferredActivity(homeFilter, matchCategoryEmpty, componentNames, component);
- }
-
- @Override
- public VolumeInfo getPrimaryStorageCurrentVolume() {
- return mPm.getPrimaryStorageCurrentVolume();
- }
-
- @Override
- public void deletePackageAsUser(String packageName, IPackageDeleteObserver observer, int flags,
- int userId) {
- mPm.deletePackageAsUser(packageName, observer, flags, userId);
- }
-
- @Override
- public int getPackageUidAsUser(String pkg, int userId)
- throws PackageManager.NameNotFoundException {
- return mPm.getPackageUidAsUser(pkg, userId);
- }
-}
diff --git a/src/com/android/settings/applications/PictureInPictureSettings.java b/src/com/android/settings/applications/PictureInPictureSettings.java
index b1c544a..d8e0b2b 100644
--- a/src/com/android/settings/applications/PictureInPictureSettings.java
+++ b/src/com/android/settings/applications/PictureInPictureSettings.java
@@ -36,6 +36,7 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.notification.EmptyTextSettings;
+import com.android.settings.wrapper.ActivityInfoWrapper;
import java.util.ArrayList;
import java.util.Collections;
@@ -63,7 +64,7 @@
if (activities != null) {
wrappedActivities = new ActivityInfoWrapper[activities.length];
for (int i = 0; i < activities.length; i++) {
- wrappedActivities[i] = new ActivityInfoWrapperImpl(activities[i]);
+ wrappedActivities[i] = new ActivityInfoWrapper(activities[i]);
}
}
return checkPackageHasPictureInPictureActivities(packageName, wrappedActivities);
diff --git a/src/com/android/settings/applications/RecentAppsPreferenceController.java b/src/com/android/settings/applications/RecentAppsPreferenceController.java
index 69a36f67..b6ae1ee 100644
--- a/src/com/android/settings/applications/RecentAppsPreferenceController.java
+++ b/src/com/android/settings/applications/RecentAppsPreferenceController.java
@@ -42,6 +42,7 @@
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.Arrays;
@@ -143,7 +144,7 @@
refreshUi(mCategory.getContext());
// Show total number of installed apps as See all's summary.
new InstalledAppCounter(mContext, InstalledAppCounter.IGNORE_INSTALL_REASON,
- new PackageManagerWrapperImpl(mContext.getPackageManager())) {
+ new PackageManagerWrapper(mContext.getPackageManager())) {
@Override
protected void onCountComplete(int num) {
if (mHasRecentApps) {
diff --git a/src/com/android/settings/applications/UserManagerWrapper.java b/src/com/android/settings/applications/UserManagerWrapper.java
deleted file mode 100644
index 5b4ed2a..0000000
--- a/src/com/android/settings/applications/UserManagerWrapper.java
+++ /dev/null
@@ -1,32 +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.applications;
-
-import android.content.pm.UserInfo;
-
-import java.util.List;
-
-/**
- * This interface replicates a subset of the android.os.UserManager. The interface
- * 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 interface UserManagerWrapper {
- UserInfo getPrimaryUser();
- List<UserInfo> getUsers();
-}
diff --git a/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java b/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java
index f51275e..c1fc528 100644
--- a/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java
+++ b/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java
@@ -24,9 +24,9 @@
import com.android.internal.app.AssistUtils;
import com.android.internal.logging.nano.MetricsProto;
-import com.android.settings.applications.PackageManagerWrapper;
import com.android.settings.applications.defaultapps.DefaultAppInfo;
import com.android.settings.applications.defaultapps.DefaultAppPickerFragment;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAppInfo.java b/src/com/android/settings/applications/defaultapps/DefaultAppInfo.java
index 12470eb..ec44af4 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultAppInfo.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultAppInfo.java
@@ -26,8 +26,8 @@
import android.os.RemoteException;
import android.os.UserHandle;
-import com.android.settings.applications.PackageManagerWrapper;
import com.android.settings.widget.RadioButtonPickerFragment;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
/**
* Data model representing an app in DefaultAppPicker UI.
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java b/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
index d3617ef..6eb1ad8 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
@@ -29,11 +29,10 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
-import com.android.settings.applications.PackageManagerWrapper;
-import com.android.settings.applications.PackageManagerWrapperImpl;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.widget.RadioButtonPickerFragment;
import com.android.settings.widget.RadioButtonPreference;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
/**
* A generic app picker fragment that shows a list of app as radio button group.
@@ -45,7 +44,7 @@
@Override
public void onAttach(Context context) {
super.onAttach(context);
- mPm = new PackageManagerWrapperImpl(context.getPackageManager());
+ mPm = new PackageManagerWrapper(context.getPackageManager());
}
@Override
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java
index c7b450e..d533d0f 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java
@@ -26,11 +26,10 @@
import android.util.Log;
import com.android.settings.R;
-import com.android.settings.applications.PackageManagerWrapper;
-import com.android.settings.applications.PackageManagerWrapperImpl;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.widget.GearPreference;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
public abstract class DefaultAppPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin {
@@ -44,7 +43,7 @@
public DefaultAppPreferenceController(Context context) {
super(context);
- mPackageManager = new PackageManagerWrapperImpl(context.getPackageManager());
+ mPackageManager = new PackageManagerWrapper(context.getPackageManager());
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
mUserId = UserHandle.myUserId();
}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceController.java
index 1fd10ff..30aaf64 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceController.java
@@ -23,8 +23,7 @@
import android.text.TextUtils;
import android.view.autofill.AutofillManager;
-import com.android.settings.applications.AutofillManagerWrapper;
-import com.android.settings.applications.AutofillManagerWrapperImpl;
+import com.android.settings.wrapper.AutofillManagerWrapper;
public class DefaultAutofillPreferenceController extends DefaultAppPreferenceController {
private AutofillManagerWrapper mAutofillManager;
@@ -32,7 +31,7 @@
public DefaultAutofillPreferenceController(Context context) {
super(context);
- mAutofillManager = new AutofillManagerWrapperImpl(
+ mAutofillManager = new AutofillManagerWrapper(
mContext.getSystemService(AutofillManager.class));
}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
index 88b36b2..1b229e8 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
@@ -24,7 +24,7 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
-import com.android.settings.applications.PackageManagerWrapper;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/applications/instantapps/InstantAppButtonsController.java b/src/com/android/settings/applications/instantapps/InstantAppButtonsController.java
index 16956df..28e612c 100644
--- a/src/com/android/settings/applications/instantapps/InstantAppButtonsController.java
+++ b/src/com/android/settings/applications/instantapps/InstantAppButtonsController.java
@@ -29,9 +29,8 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.applications.AppStoreUtil;
-import com.android.settings.applications.PackageManagerWrapper;
-import com.android.settings.applications.PackageManagerWrapperImpl;
import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
/** Encapsulates a container for buttons relevant to instant apps */
public class InstantAppButtonsController implements DialogInterface.OnClickListener {
@@ -62,7 +61,7 @@
mFragment = fragment;
mView = view;
mShowDialogDelegate = showDialogDelegate;
- mPackageManagerWrapper = new PackageManagerWrapperImpl(context.getPackageManager());
+ mPackageManagerWrapper = new PackageManagerWrapper(context.getPackageManager());
}
public InstantAppButtonsController setPackageName(String packageName) {
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java b/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java
index 4bed89b..eb969a5 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java
@@ -32,6 +32,7 @@
import com.android.settings.fingerprint.FingerprintSuggestionActivity;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wallpaper.WallpaperSuggestionActivity;
+import com.android.settings.wrapper.WallpaperManagerWrapper;
import com.android.settingslib.drawer.Tile;
/**
diff --git a/src/com/android/settings/datausage/AppDataUsage.java b/src/com/android/settings/datausage/AppDataUsage.java
index 36d9d0f..5470e63 100644
--- a/src/com/android/settings/datausage/AppDataUsage.java
+++ b/src/com/android/settings/datausage/AppDataUsage.java
@@ -46,14 +46,13 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.applications.AppInfoBase;
-import com.android.settings.applications.PackageManagerWrapper;
-import com.android.settings.applications.PackageManagerWrapperImpl;
import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.AppItem;
import com.android.settingslib.net.ChartData;
import com.android.settingslib.net.ChartDataLoader;
import com.android.settingslib.net.UidDetail;
import com.android.settingslib.net.UidDetailProvider;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
public class AppDataUsage extends DataUsageBase implements Preference.OnPreferenceChangeListener,
DataSaverBackend.Listener {
@@ -104,7 +103,7 @@
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- mPackageManagerWrapper = new PackageManagerWrapperImpl(getPackageManager());
+ mPackageManagerWrapper = new PackageManagerWrapper(getPackageManager());
final Bundle args = getArguments();
try {
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java b/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java
index 88b9487..6047f8c 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java
@@ -24,12 +24,12 @@
import android.view.MenuItem;
import com.android.settings.R;
-import com.android.settings.applications.PackageManagerWrapper;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnCreateOptionsMenu;
import com.android.settingslib.core.lifecycle.events.OnOptionsItemSelected;
import com.android.settingslib.core.lifecycle.events.OnPrepareOptionsMenu;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.Objects;
diff --git a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
index dd0db9a..935e180 100644
--- a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
+++ b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
@@ -35,9 +35,6 @@
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.Utils;
-import com.android.settings.applications.PackageManagerWrapperImpl;
-import com.android.settings.applications.UserManagerWrapper;
-import com.android.settings.applications.UserManagerWrapperImpl;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.deviceinfo.storage.AutomaticStorageManagementSwitchPreferenceController;
import com.android.settings.deviceinfo.storage.CachedStorageValuesHelper;
@@ -49,10 +46,12 @@
import com.android.settings.deviceinfo.storage.VolumeSizesLoader;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
+import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.deviceinfo.PrivateStorageInfo;
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.Arrays;
@@ -95,7 +94,7 @@
@VisibleForTesting
void initializeOptionsMenu(Activity activity) {
mOptionMenuController = new PrivateVolumeOptionMenuController(
- activity, mVolume, new PackageManagerWrapperImpl(activity.getPackageManager()));
+ activity, mVolume, new PackageManagerWrapper(activity.getPackageManager()));
getLifecycle().addObserver(mOptionMenuController);
setHasOptionsMenu(true);
activity.invalidateOptionsMenu();
@@ -178,7 +177,7 @@
controllers.add(mPreferenceController);
UserManagerWrapper userManager =
- new UserManagerWrapperImpl(context.getSystemService(UserManager.class));
+ new UserManagerWrapper(context.getSystemService(UserManager.class));
mSecondaryUsers = SecondaryUserController.getSecondaryUserControllers(context, userManager);
controllers.addAll(mSecondaryUsers);
@@ -227,7 +226,7 @@
public List<AbstractPreferenceController> getPreferenceControllers(Context context) {
final StorageManager sm = context.getSystemService(StorageManager.class);
final UserManagerWrapper userManager =
- new UserManagerWrapperImpl(context.getSystemService(UserManager.class));
+ new UserManagerWrapper(context.getSystemService(UserManager.class));
final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new StorageSummaryDonutPreferenceController(context));
controllers.add(new StorageItemPreferenceController(context, null /* host */,
@@ -244,10 +243,10 @@
Bundle args) {
Context context = getContext();
return new StorageAsyncLoader(context,
- new UserManagerWrapperImpl(context.getSystemService(UserManager.class)),
+ new UserManagerWrapper(context.getSystemService(UserManager.class)),
mVolume.fsUuid,
new StorageStatsSource(context),
- new PackageManagerWrapperImpl(context.getPackageManager()));
+ new PackageManagerWrapper(context.getPackageManager()));
}
@Override
diff --git a/src/com/android/settings/deviceinfo/StorageProfileFragment.java b/src/com/android/settings/deviceinfo/StorageProfileFragment.java
index 9f3ce0c..f2383de 100644
--- a/src/com/android/settings/deviceinfo/StorageProfileFragment.java
+++ b/src/com/android/settings/deviceinfo/StorageProfileFragment.java
@@ -30,15 +30,15 @@
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.Utils;
-import com.android.settings.applications.PackageManagerWrapperImpl;
-import com.android.settings.applications.UserManagerWrapperImpl;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.deviceinfo.storage.StorageAsyncLoader;
import com.android.settings.deviceinfo.storage.StorageAsyncLoader.AppsStorageResult;
import com.android.settings.deviceinfo.storage.StorageItemPreferenceController;
+import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.List;
@@ -116,10 +116,10 @@
public Loader<SparseArray<AppsStorageResult>> onCreateLoader(int id, Bundle args) {
Context context = getContext();
return new StorageAsyncLoader(context,
- new UserManagerWrapperImpl(context.getSystemService(UserManager.class)),
+ new UserManagerWrapper(context.getSystemService(UserManager.class)),
mVolume.fsUuid,
new StorageStatsSource(context),
- new PackageManagerWrapperImpl(context.getPackageManager()));
+ new PackageManagerWrapper(context.getPackageManager()));
}
@Override
diff --git a/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java b/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java
index 3c69ab1..4aeb782 100644
--- a/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java
+++ b/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java
@@ -27,9 +27,9 @@
import android.util.SparseArray;
import com.android.settings.Utils;
-import com.android.settings.applications.UserManagerWrapper;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.deviceinfo.StorageItemPreference;
+import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.ArrayList;
diff --git a/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java b/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java
index f92a24e..2ce53f6 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java
@@ -30,10 +30,10 @@
import android.util.Log;
import android.util.SparseArray;
-import com.android.settings.applications.PackageManagerWrapper;
-import com.android.settings.applications.UserManagerWrapper;
import com.android.settings.utils.AsyncLoader;
+import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.applications.StorageStatsSource;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.io.IOException;
import java.util.Collections;
diff --git a/src/com/android/settings/deviceinfo/storage/UserProfileController.java b/src/com/android/settings/deviceinfo/storage/UserProfileController.java
index cf1e360..4870e7e 100644
--- a/src/com/android/settings/deviceinfo/storage/UserProfileController.java
+++ b/src/com/android/settings/deviceinfo/storage/UserProfileController.java
@@ -30,10 +30,10 @@
import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.util.Preconditions;
import com.android.settings.Utils;
-import com.android.settings.applications.UserManagerWrapper;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.deviceinfo.StorageItemPreference;
import com.android.settings.deviceinfo.StorageProfileFragment;
+import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.drawer.SettingsDrawerActivity;
diff --git a/src/com/android/settings/display/BrightnessLevelPreferenceController.java b/src/com/android/settings/display/BrightnessLevelPreferenceController.java
index e1461dc..f9c9d53 100644
--- a/src/com/android/settings/display/BrightnessLevelPreferenceController.java
+++ b/src/com/android/settings/display/BrightnessLevelPreferenceController.java
@@ -31,6 +31,7 @@
import android.util.Log;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.wrapper.PowerManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
diff --git a/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java b/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java
deleted file mode 100644
index 69ee272..0000000
--- a/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2016 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.enterprise;
-
-import android.annotation.NonNull;
-import android.app.admin.DevicePolicyManager;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.os.UserHandle;
-import android.support.annotation.Nullable;
-
-import java.util.List;
-
-public class DevicePolicyManagerWrapperImpl implements DevicePolicyManagerWrapper {
- private final DevicePolicyManager mDpm;
-
- public DevicePolicyManagerWrapperImpl(DevicePolicyManager dpm) {
- mDpm = dpm;
- }
-
- @Override
- public @Nullable List<ComponentName> getActiveAdminsAsUser(int userId) {
- return mDpm.getActiveAdminsAsUser(userId);
- }
-
- @Override
- public int getMaximumFailedPasswordsForWipe(@Nullable ComponentName admin, int userHandle) {
- return mDpm.getMaximumFailedPasswordsForWipe(admin, userHandle);
- }
-
- @Override
- public ComponentName getDeviceOwnerComponentOnCallingUser() {
- return mDpm.getDeviceOwnerComponentOnCallingUser();
- }
-
- @Override
- public ComponentName getDeviceOwnerComponentOnAnyUser() {
- return mDpm.getDeviceOwnerComponentOnAnyUser();
- }
-
- @Override
- public @Nullable ComponentName getProfileOwnerAsUser(final int userId) {
- return mDpm.getProfileOwnerAsUser(userId);
- }
-
- @Override
- public CharSequence getDeviceOwnerOrganizationName() {
- return mDpm.getDeviceOwnerOrganizationName();
- }
-
- @Override
- public int getPermissionGrantState(@Nullable ComponentName admin, String packageName,
- String permission) {
- return mDpm.getPermissionGrantState(admin, packageName, permission);
- }
-
- @Override
- public boolean isSecurityLoggingEnabled(@Nullable ComponentName admin) {
- return mDpm.isSecurityLoggingEnabled(admin);
- }
-
- @Override
- public boolean isNetworkLoggingEnabled(@Nullable ComponentName admin) {
- return mDpm.isNetworkLoggingEnabled(admin);
- }
-
- @Override
- public long getLastSecurityLogRetrievalTime() {
- return mDpm.getLastSecurityLogRetrievalTime();
- }
-
- @Override
- public long getLastBugReportRequestTime() {
- return mDpm.getLastBugReportRequestTime();
- }
-
- @Override
- public long getLastNetworkLogRetrievalTime() {
- return mDpm.getLastNetworkLogRetrievalTime();
- }
-
- @Override
- public boolean isCurrentInputMethodSetByOwner() {
- return mDpm.isCurrentInputMethodSetByOwner();
- }
-
- @Override
- public List<String> getOwnerInstalledCaCerts(@NonNull UserHandle user) {
- return mDpm.getOwnerInstalledCaCerts(user);
- }
-
- @Override
- public boolean isDeviceOwnerAppOnAnyUser(String packageName) {
- return mDpm.isDeviceOwnerAppOnAnyUser(packageName);
- }
-
- @Override
- public boolean packageHasActiveAdmins(String packageName) {
- return mDpm.packageHasActiveAdmins(packageName);
- }
-
- @Override
- public boolean isUninstallInQueue(String packageName) {
- return mDpm.isUninstallInQueue(packageName);
- }
-
- @Override
- public Intent createAdminSupportIntent(@NonNull String restriction) {
- return mDpm.createAdminSupportIntent(restriction);
- }
-}
diff --git a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
index 159f57b..9217001 100644
--- a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
+++ b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
@@ -30,9 +30,10 @@
import android.view.View;
import com.android.settings.R;
-import com.android.settings.applications.PackageManagerWrapper;
-import com.android.settings.vpn2.ConnectivityManagerWrapper;
import com.android.settings.vpn2.VpnUtils;
+import com.android.settings.wrapper.ConnectivityManagerWrapper;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.Date;
import java.util.List;
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
index 9ab561d..20bb13b 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
@@ -29,8 +29,7 @@
import com.android.settings.Utils;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.password.ChooseLockSettingsHelper;
-
-import com.android.settings.password.IFingerprintManager;
+import com.android.settings.wrapper.FingerprintManagerWrapper;
import java.util.ArrayList;
@@ -48,7 +47,7 @@
private byte[] mToken;
private boolean mDone;
private int mUserId;
- private IFingerprintManager mFingerprintManager;
+ private FingerprintManagerWrapper mFingerprintManager;
private ArrayList<QueuedEvent> mQueuedEvents;
private abstract class QueuedEvent {
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index 66a0ca2..d96db68 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -45,8 +45,7 @@
import com.android.settings.Utils;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.enterprise.DevicePolicyManagerWrapper;
-import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settings.fuelgauge.anomaly.Anomaly;
import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment;
import com.android.settings.fuelgauge.anomaly.AnomalyLoader;
@@ -194,7 +193,7 @@
super.onAttach(activity);
mState = ApplicationsState.getInstance(getActivity().getApplication());
- mDpm = new DevicePolicyManagerWrapperImpl(
+ mDpm = new DevicePolicyManagerWrapper(
(DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE));
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
mPackageManager = activity.getPackageManager();
diff --git a/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java b/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java
index 0d5bed8..20acee9 100644
--- a/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java
@@ -50,9 +50,9 @@
import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
-import com.android.settings.enterprise.DevicePolicyManagerWrapper;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.ActionButtonPreference;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
diff --git a/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java b/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java
index cea6d16..14aba85 100644
--- a/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java
@@ -35,8 +35,7 @@
import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settings.enterprise.DevicePolicyManagerWrapper;
-import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
/**
@@ -71,7 +70,7 @@
mPowerWhitelistBackend = backend;
mPackageManager = context.getPackageManager();
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
- mDpm = new DevicePolicyManagerWrapperImpl(
+ mDpm = new DevicePolicyManagerWrapper(
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE));
mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
mUid = uid;
diff --git a/src/com/android/settings/fuelgauge/anomaly/AnomalyDetectionPolicy.java b/src/com/android/settings/fuelgauge/anomaly/AnomalyDetectionPolicy.java
index 4829ca0..57f0ab4 100644
--- a/src/com/android/settings/fuelgauge/anomaly/AnomalyDetectionPolicy.java
+++ b/src/com/android/settings/fuelgauge/anomaly/AnomalyDetectionPolicy.java
@@ -23,6 +23,8 @@
import android.util.KeyValueListParser;
import android.util.Log;
+import com.android.settings.wrapper.KeyValueListParserWrapper;
+
/**
* Class to store the policy for anomaly detection, which comes from
* {@link android.provider.Settings.Global}
@@ -104,7 +106,7 @@
private final KeyValueListParserWrapper mParserWrapper;
public AnomalyDetectionPolicy(Context context) {
- this(context, new KeyValueListParserWrapperImpl(new KeyValueListParser(',')));
+ this(context, new KeyValueListParserWrapper(new KeyValueListParser(',')));
}
@VisibleForTesting
diff --git a/src/com/android/settings/fuelgauge/anomaly/KeyValueListParserWrapperImpl.java b/src/com/android/settings/fuelgauge/anomaly/KeyValueListParserWrapperImpl.java
deleted file mode 100644
index f724034..0000000
--- a/src/com/android/settings/fuelgauge/anomaly/KeyValueListParserWrapperImpl.java
+++ /dev/null
@@ -1,50 +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.fuelgauge.anomaly;
-
-import android.util.KeyValueListParser;
-
-/**
- * Impl of {@link KeyValueListParser}
- */
-public class KeyValueListParserWrapperImpl implements KeyValueListParserWrapper {
- private KeyValueListParser mParser;
-
- public KeyValueListParserWrapperImpl(KeyValueListParser parser) {
- mParser = parser;
- }
-
- @Override
- public KeyValueListParser getKeyValueListParser() {
- return mParser;
- }
-
- @Override
- public void setString(String str) throws IllegalArgumentException {
- mParser.setString(str);
- }
-
- @Override
- public boolean getBoolean(String key, boolean defaultValue) {
- return mParser.getBoolean(key, defaultValue);
- }
-
- @Override
- public long getLong(String key, long defaultValue) {
- return mParser.getLong(key, defaultValue);
- }
-}
diff --git a/src/com/android/settings/network/MobileNetworkPreferenceController.java b/src/com/android/settings/network/MobileNetworkPreferenceController.java
index 6e2c2d5..1199400 100644
--- a/src/com/android/settings/network/MobileNetworkPreferenceController.java
+++ b/src/com/android/settings/network/MobileNetworkPreferenceController.java
@@ -26,6 +26,7 @@
import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.wrapper.RestrictedLockUtilsWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
diff --git a/src/com/android/settings/network/NetworkScorerPicker.java b/src/com/android/settings/network/NetworkScorerPicker.java
index 1280cf5..187c9ce 100644
--- a/src/com/android/settings/network/NetworkScorerPicker.java
+++ b/src/com/android/settings/network/NetworkScorerPicker.java
@@ -30,6 +30,7 @@
import com.android.settings.R;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.widget.RadioButtonPreference;
+import com.android.settings.wrapper.NetworkScoreManagerWrapper;
import java.util.List;
diff --git a/src/com/android/settings/network/NetworkScorerPickerPreferenceController.java b/src/com/android/settings/network/NetworkScorerPickerPreferenceController.java
index 8d4ea63..e25e62d 100644
--- a/src/com/android/settings/network/NetworkScorerPickerPreferenceController.java
+++ b/src/com/android/settings/network/NetworkScorerPickerPreferenceController.java
@@ -21,6 +21,7 @@
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.wrapper.NetworkScoreManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.List;
diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java
index 36c3bc9..d3fca68 100644
--- a/src/com/android/settings/overlay/FeatureFactoryImpl.java
+++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java
@@ -25,8 +25,6 @@
import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.applications.ApplicationFeatureProviderImpl;
-import com.android.settings.applications.IPackageManagerWrapperImpl;
-import com.android.settings.applications.PackageManagerWrapperImpl;
import com.android.settings.bluetooth.BluetoothFeatureProvider;
import com.android.settings.bluetooth.BluetoothFeatureProviderImpl;
import com.android.settings.connecteddevice.SmsMirroringFeatureProvider;
@@ -38,7 +36,6 @@
import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl;
import com.android.settings.datausage.DataPlanFeatureProvider;
import com.android.settings.datausage.DataPlanFeatureProviderImpl;
-import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
import com.android.settings.enterprise.EnterprisePrivacyFeatureProviderImpl;
import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
@@ -53,7 +50,10 @@
import com.android.settings.security.SecurityFeatureProviderImpl;
import com.android.settings.users.UserFeatureProvider;
import com.android.settings.users.UserFeatureProviderImpl;
-import com.android.settings.vpn2.ConnectivityManagerWrapperImpl;
+import com.android.settings.wrapper.ConnectivityManagerWrapper;
+import com.android.settings.wrapper.DevicePolicyManagerWrapper;
+import com.android.settings.wrapper.IPackageManagerWrapper;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
/**
* {@link FeatureFactory} implementation for AOSP Settings.
@@ -109,9 +109,9 @@
public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
if (mApplicationFeatureProvider == null) {
mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(context,
- new PackageManagerWrapperImpl(context.getPackageManager()),
- new IPackageManagerWrapperImpl(AppGlobals.getPackageManager()),
- new DevicePolicyManagerWrapperImpl((DevicePolicyManager) context
+ new PackageManagerWrapper(context.getPackageManager()),
+ new IPackageManagerWrapper(AppGlobals.getPackageManager()),
+ new DevicePolicyManagerWrapper((DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE)));
}
return mApplicationFeatureProvider;
@@ -129,11 +129,11 @@
public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
if (mEnterprisePrivacyFeatureProvider == null) {
mEnterprisePrivacyFeatureProvider = new EnterprisePrivacyFeatureProviderImpl(context,
- new DevicePolicyManagerWrapperImpl((DevicePolicyManager) context
+ new DevicePolicyManagerWrapper((DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE)),
- new PackageManagerWrapperImpl(context.getPackageManager()),
+ new PackageManagerWrapper(context.getPackageManager()),
UserManager.get(context),
- new ConnectivityManagerWrapperImpl((ConnectivityManager) context
+ new ConnectivityManagerWrapper((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE)),
context.getResources());
}
diff --git a/src/com/android/settings/password/IFingerprintManager.java b/src/com/android/settings/password/IFingerprintManager.java
deleted file mode 100644
index 9402146..0000000
--- a/src/com/android/settings/password/IFingerprintManager.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2016 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.password;
-
-import android.hardware.fingerprint.FingerprintManager.EnrollmentCallback;
-import android.os.CancellationSignal;
-
-/**
- * This is the workaround to allow us test {@link SetNewPasswordController} which uses a new hidden
- * API {@link android.hardware.fingerprint.FingerprintManager#hasEnrolledFingerprints(int)} that
- * roboelectric does not support yet. Having roboelectic to support latest platform API is tracked
- * in b/30995831.
- */
-public interface IFingerprintManager {
- boolean isHardwareDetected();
-
- boolean hasEnrolledFingerprints(int userId);
-
- long preEnroll();
-
- void setActiveUser(int userId);
-
- void enroll(byte [] token, CancellationSignal cancel, int flags,
- int userId, EnrollmentCallback callback);
-}
diff --git a/src/com/android/settings/password/SetNewPasswordController.java b/src/com/android/settings/password/SetNewPasswordController.java
index 57aa8c1..a974da4 100644
--- a/src/com/android/settings/password/SetNewPasswordController.java
+++ b/src/com/android/settings/password/SetNewPasswordController.java
@@ -36,6 +36,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.Utils;
+import com.android.settings.wrapper.FingerprintManagerWrapper;
/**
* Business logic for {@link SetNewPasswordActivity}.
@@ -56,7 +57,7 @@
*/
private final int mTargetUserId;
private final PackageManager mPackageManager;
- @Nullable private final IFingerprintManager mFingerprintManager;
+ @Nullable private final FingerprintManagerWrapper mFingerprintManager;
private final DevicePolicyManager mDevicePolicyManager;
private final Ui mUi;
@@ -77,7 +78,7 @@
}
// Create a wrapper of FingerprintManager for testing, see IFingerPrintManager for details.
final FingerprintManager fingerprintManager = Utils.getFingerprintManagerOrNull(context);
- final IFingerprintManager fingerprintManagerWrapper =
+ final FingerprintManagerWrapper fingerprintManagerWrapper =
fingerprintManager == null
? null
: new FingerprintManagerWrapper(fingerprintManager);
@@ -91,7 +92,7 @@
SetNewPasswordController(
int targetUserId,
PackageManager packageManager,
- IFingerprintManager fingerprintManager,
+ FingerprintManagerWrapper fingerprintManager,
DevicePolicyManager devicePolicyManager,
Ui ui) {
mTargetUserId = targetUserId;
diff --git a/src/com/android/settings/search/InstalledAppResultLoader.java b/src/com/android/settings/search/InstalledAppResultLoader.java
index 9d80b73..69a4693 100644
--- a/src/com/android/settings/search/InstalledAppResultLoader.java
+++ b/src/com/android/settings/search/InstalledAppResultLoader.java
@@ -34,9 +34,9 @@
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.applications.ManageApplications;
-import com.android.settings.applications.PackageManagerWrapper;
import com.android.settings.dashboard.SiteMapManager;
import com.android.settings.utils.AsyncLoader;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.HashSet;
diff --git a/src/com/android/settings/search/SearchFeatureProviderImpl.java b/src/com/android/settings/search/SearchFeatureProviderImpl.java
index 69c086f..420b847 100644
--- a/src/com/android/settings/search/SearchFeatureProviderImpl.java
+++ b/src/com/android/settings/search/SearchFeatureProviderImpl.java
@@ -21,9 +21,9 @@
import android.text.TextUtils;
import android.util.Log;
-import com.android.settings.applications.PackageManagerWrapperImpl;
import com.android.settings.dashboard.SiteMapManager;
import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
/**
* FeatureProvider for the refactored search code.
@@ -50,7 +50,7 @@
@Override
public InstalledAppResultLoader getInstalledAppSearchLoader(Context context, String query) {
return new InstalledAppResultLoader(
- context, new PackageManagerWrapperImpl(context.getPackageManager()),
+ context, new PackageManagerWrapper(context.getPackageManager()),
cleanQuery(query), getSiteMapManager());
}
diff --git a/src/com/android/settings/vpn2/ConnectivityManagerWrapperImpl.java b/src/com/android/settings/vpn2/ConnectivityManagerWrapperImpl.java
deleted file mode 100644
index f742cd2..0000000
--- a/src/com/android/settings/vpn2/ConnectivityManagerWrapperImpl.java
+++ /dev/null
@@ -1,59 +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.vpn2;
-
-import android.net.ConnectivityManager;
-import android.net.ConnectivityManager.NetworkCallback;
-import android.net.Network;
-import android.net.NetworkRequest;
-import android.os.Handler;
-import android.net.ProxyInfo;
-
-public class ConnectivityManagerWrapperImpl implements ConnectivityManagerWrapper {
-
- private final ConnectivityManager mCm;
-
- public ConnectivityManagerWrapperImpl(ConnectivityManager cm) {
- mCm = cm;
- }
-
- @Override
- public ConnectivityManager getConnectivityManager() {
- return mCm;
- }
-
- @Override
- public String getAlwaysOnVpnPackageForUser(int userId) {
- return mCm.getAlwaysOnVpnPackageForUser(userId);
- }
-
- @Override
- public ProxyInfo getGlobalProxy() {
- return mCm.getGlobalProxy();
- }
-
- @Override
- public void registerNetworkCallback(NetworkRequest request, NetworkCallback callback,
- Handler handler) {
- mCm.registerNetworkCallback(request, callback, handler);
- }
-
- @Override
- public void startCaptivePortalApp(Network network) {
- mCm.startCaptivePortalApp(network);
- }
-}
diff --git a/src/com/android/settings/vpn2/VpnUtils.java b/src/com/android/settings/vpn2/VpnUtils.java
index a36cce8..1aa4ada 100644
--- a/src/com/android/settings/vpn2/VpnUtils.java
+++ b/src/com/android/settings/vpn2/VpnUtils.java
@@ -27,6 +27,7 @@
import com.android.internal.net.LegacyVpnInfo;
import com.android.internal.net.VpnConfig;
+import com.android.settings.wrapper.ConnectivityManagerWrapper;
/**
* Utility functions for vpn.
diff --git a/src/com/android/settings/webview/WebViewAppPicker.java b/src/com/android/settings/webview/WebViewAppPicker.java
index 380b964..362ca1f 100644
--- a/src/com/android/settings/webview/WebViewAppPicker.java
+++ b/src/com/android/settings/webview/WebViewAppPicker.java
@@ -30,9 +30,10 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
-import com.android.settings.applications.PackageManagerWrapper;
import com.android.settings.applications.defaultapps.DefaultAppInfo;
import com.android.settings.applications.defaultapps.DefaultAppPickerFragment;
+import com.android.settings.wrapper.UserPackageWrapper;
+import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java b/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java
index b40be19..e4eb0fc 100644
--- a/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java
+++ b/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java
@@ -28,6 +28,8 @@
import android.widget.Toast;
import com.android.settings.R;
+import com.android.settings.wrapper.UserPackageWrapper;
+import com.android.settings.wrapper.UserPackageWrapperImpl;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/wifi/ConfigureWifiSettings.java b/src/com/android/settings/wifi/ConfigureWifiSettings.java
index 4199a6d..3c70048 100644
--- a/src/com/android/settings/wifi/ConfigureWifiSettings.java
+++ b/src/com/android/settings/wifi/ConfigureWifiSettings.java
@@ -28,12 +28,12 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.network.NetworkScoreManagerWrapper;
import com.android.settings.network.NetworkScorerPickerPreferenceController;
import com.android.settings.network.WifiCallingPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.wifi.p2p.WifiP2pPreferenceController;
+import com.android.settings.wrapper.NetworkScoreManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.ArrayList;
diff --git a/src/com/android/settings/wifi/ConnectivityManagerWrapper.java b/src/com/android/settings/wifi/ConnectivityManagerWrapper.java
deleted file mode 100644
index 7317666..0000000
--- a/src/com/android/settings/wifi/ConnectivityManagerWrapper.java
+++ /dev/null
@@ -1,36 +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.wifi;
-
-import android.net.ConnectivityManager;
-
-/**
- * Wrapper around {@link ConnectivityManager} to facilitate unit testing.
- */
-public class ConnectivityManagerWrapper {
- private final ConnectivityManager mConnectivityManager;
-
- public ConnectivityManagerWrapper(ConnectivityManager connectivityManager) {
- mConnectivityManager = connectivityManager;
- }
-
- /**
- * {@link ConnectivityManager#stopTethering}
- */
- public void stopTethering(int type) {
- mConnectivityManager.stopTethering(type);
- }
-}
diff --git a/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java b/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java
index d44c8a9..c563fce 100644
--- a/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java
+++ b/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java
@@ -21,7 +21,7 @@
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settings.network.NetworkScoreManagerWrapper;
+import com.android.settings.wrapper.NetworkScoreManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java
index 7718898..9c43142 100644
--- a/src/com/android/settings/wifi/WifiEnabler.java
+++ b/src/com/android/settings/wifi/WifiEnabler.java
@@ -35,6 +35,7 @@
import com.android.settings.R;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.widget.SwitchWidgetController;
+import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.WirelessUtils;
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index f3b08bf..bc302b9 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -65,6 +65,7 @@
import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener;
import com.android.settings.widget.SwitchBarController;
import com.android.settings.wifi.details.WifiNetworkDetailsFragment;
+import com.android.settings.wrapper.WifiManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.AccessPoint.AccessPointListener;
diff --git a/src/com/android/settings/wifi/WifiWakeupPreferenceController.java b/src/com/android/settings/wifi/WifiWakeupPreferenceController.java
index efb8aa6..a3170c0 100644
--- a/src/com/android/settings/wifi/WifiWakeupPreferenceController.java
+++ b/src/com/android/settings/wifi/WifiWakeupPreferenceController.java
@@ -29,7 +29,7 @@
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settings.network.NetworkScoreManagerWrapper;
+import com.android.settings.wrapper.NetworkScoreManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
diff --git a/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java b/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java
index 52871f6..dfed801 100644
--- a/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java
+++ b/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java
@@ -20,7 +20,6 @@
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
-import android.net.wifi.WifiManager;
import android.nfc.FormatException;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
@@ -43,6 +42,7 @@
import android.widget.TextView;
import com.android.settings.R;
+import com.android.settings.wrapper.WifiManagerWrapper;
import com.android.settingslib.wifi.AccessPoint;
import java.io.IOException;
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index 014fb0f..40acfeb 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -57,12 +57,12 @@
import com.android.settings.applications.LayoutPreference;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
-import com.android.settings.vpn2.ConnectivityManagerWrapper;
import com.android.settings.widget.ActionButtonPreference;
import com.android.settings.widget.EntityHeaderController;
import com.android.settings.wifi.WifiDetailPreference;
import com.android.settings.wifi.WifiDialog;
import com.android.settings.wifi.WifiDialog.WifiDialogListener;
+import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
diff --git a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
index 765bebc..1609bef 100644
--- a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
+++ b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
@@ -31,9 +31,9 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.vpn2.ConnectivityManagerWrapperImpl;
import com.android.settings.wifi.WifiConfigUiBase;
import com.android.settings.wifi.WifiDialog;
+import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.wifi.AccessPoint;
import java.util.ArrayList;
@@ -117,7 +117,7 @@
ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance(
mAccessPoint,
- new ConnectivityManagerWrapperImpl(cm),
+ new ConnectivityManagerWrapper(cm),
context,
this,
new Handler(Looper.getMainLooper()), // UI thread.
diff --git a/src/com/android/settings/applications/AccessibilityManagerWrapperImpl.java b/src/com/android/settings/wrapper/AccessibilityManagerWrapper.java
similarity index 92%
rename from src/com/android/settings/applications/AccessibilityManagerWrapperImpl.java
rename to src/com/android/settings/wrapper/AccessibilityManagerWrapper.java
index 4ebaea7..4fd7ccf 100644
--- a/src/com/android/settings/applications/AccessibilityManagerWrapperImpl.java
+++ b/src/com/android/settings/wrapper/AccessibilityManagerWrapper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.settings.applications;
+package com.android.settings.wrapper;
import android.view.accessibility.AccessibilityManager;
@@ -23,7 +23,7 @@
* The interface exists so that we can use a thin wrapper around the AccessibilityManager in
* production code and a mock in tests.
*/
-public class AccessibilityManagerWrapperImpl {
+public class AccessibilityManagerWrapper {
/**
* Determines if the accessibility button within the system navigation area is supported.
diff --git a/src/com/android/settings/applications/AccessibilityServiceInfoWrapper.java b/src/com/android/settings/wrapper/AccessibilityServiceInfoWrapper.java
similarity index 67%
rename from src/com/android/settings/applications/AccessibilityServiceInfoWrapper.java
rename to src/com/android/settings/wrapper/AccessibilityServiceInfoWrapper.java
index 6ce0a4a..c920392 100644
--- a/src/com/android/settings/applications/AccessibilityServiceInfoWrapper.java
+++ b/src/com/android/settings/wrapper/AccessibilityServiceInfoWrapper.java
@@ -14,24 +14,34 @@
* limitations under the License.
*/
-package com.android.settings.applications;
+package com.android.settings.wrapper;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.ComponentName;
/**
- * This interface replicates a subset of the
- * {@link android.accessibilityservice.AccessibilityServiceInfo}. The interface
+ * This class replicates a subset of the
+ * {@link android.accessibilityservice.AccessibilityServiceInfo}. The class
* exists so that we can use a thin wrapper around it in production code and a mock in tests.
* We cannot directly mock or shadow it, because some of the methods we rely on are newer than
* the API version supported by Robolectric.
*/
-public interface AccessibilityServiceInfoWrapper {
+public class AccessibilityServiceInfoWrapper {
+
+ private final AccessibilityServiceInfo mServiceInfo;
+
+ public AccessibilityServiceInfoWrapper(AccessibilityServiceInfo serviceInfo) {
+ mServiceInfo = serviceInfo;
+ }
/**
* Returns the real {@code AccessibilityServiceInfo} object.
*/
- AccessibilityServiceInfo getAccessibilityServiceInfo();
+ public AccessibilityServiceInfo getAccessibilityServiceInfo() {
+ return mServiceInfo;
+ }
- ComponentName getComponentName();
+ public ComponentName getComponentName() {
+ return mServiceInfo.getComponentName();
+ }
}
diff --git a/src/com/android/settings/applications/ActivityInfoWrapperImpl.java b/src/com/android/settings/wrapper/ActivityInfoWrapper.java
similarity index 66%
rename from src/com/android/settings/applications/ActivityInfoWrapperImpl.java
rename to src/com/android/settings/wrapper/ActivityInfoWrapper.java
index b70a1e8..37d0d42 100644
--- a/src/com/android/settings/applications/ActivityInfoWrapperImpl.java
+++ b/src/com/android/settings/wrapper/ActivityInfoWrapper.java
@@ -14,19 +14,26 @@
* limitations under the License.
*/
-package com.android.settings.applications;
+package com.android.settings.wrapper;
import android.content.pm.ActivityInfo;
-public class ActivityInfoWrapperImpl implements ActivityInfoWrapper {
+/**
+ * This class replicates a subset of the android.content.pm.ActivityInfo. The class
+ * exists so that we can use a thin wrapper around the ActivityInfo in production code and a mock in
+ * tests.
+ */
+public class ActivityInfoWrapper {
private final ActivityInfo mInfo;
- public ActivityInfoWrapperImpl(ActivityInfo info) {
+ public ActivityInfoWrapper(ActivityInfo info) {
mInfo = info;
}
- @Override
+ /**
+ * Returns whether this activity supports picture-in-picture.
+ */
public boolean supportsPictureInPicture() {
return mInfo.supportsPictureInPicture();
}
diff --git a/src/com/android/settings/applications/AutofillManagerWrapper.java b/src/com/android/settings/wrapper/AutofillManagerWrapper.java
similarity index 61%
rename from src/com/android/settings/applications/AutofillManagerWrapper.java
rename to src/com/android/settings/wrapper/AutofillManagerWrapper.java
index 04091b0..57c9375 100644
--- a/src/com/android/settings/applications/AutofillManagerWrapper.java
+++ b/src/com/android/settings/wrapper/AutofillManagerWrapper.java
@@ -14,28 +14,46 @@
* limitations under the License.
*/
-package com.android.settings.applications;
+package com.android.settings.wrapper;
import android.view.autofill.AutofillManager;
/**
- * This interface replicates a subset of the android.view.autofill.AutofillManager (AFM). The
- * interface exists so that we can use a thin wrapper around the AFM in production code and a mock
+ * This class replicates a subset of the android.view.autofill.AutofillManager (AFM). The
+ * class exists so that we can use a thin wrapper around the AFM in production code and a mock
* in tests. We cannot directly mock or shadow the AFM, because some of the methods we rely on are
* newer than the API version supported by Robolectric.
*/
-public interface AutofillManagerWrapper {
+public class AutofillManagerWrapper {
+ private final AutofillManager mAfm;
+
+ public AutofillManagerWrapper(AutofillManager afm) {
+ mAfm = afm;
+ }
+
/**
* Calls {@code AutofillManager.hasAutofillFeature()}.
*
* @see AutofillManager#hasAutofillFeature
*/
- public boolean hasAutofillFeature();
+ public boolean hasAutofillFeature() {
+ if (mAfm == null) {
+ return false;
+ }
+
+ return mAfm.hasAutofillFeature();
+ }
/**
* Calls {@code AutofillManager.isAutofillSupported()}.
*
* @see AutofillManager#isAutofillSupported
*/
- public boolean isAutofillSupported();
+ public boolean isAutofillSupported() {
+ if (mAfm == null) {
+ return false;
+ }
+
+ return mAfm.isAutofillSupported();
+ }
}
diff --git a/src/com/android/settings/vpn2/ConnectivityManagerWrapper.java b/src/com/android/settings/wrapper/ConnectivityManagerWrapper.java
similarity index 72%
rename from src/com/android/settings/vpn2/ConnectivityManagerWrapper.java
rename to src/com/android/settings/wrapper/ConnectivityManagerWrapper.java
index 9e20c9d..c80a97b 100644
--- a/src/com/android/settings/vpn2/ConnectivityManagerWrapper.java
+++ b/src/com/android/settings/wrapper/ConnectivityManagerWrapper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.settings.vpn2;
+package com.android.settings.wrapper;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
@@ -24,31 +24,43 @@
import android.net.ProxyInfo;
/**
- * This interface replicates a subset of the android.net.ConnectivityManager (CM). The interface
+ * This class replicates a subset of the android.net.ConnectivityManager (CM). The class
* exists so that we can use a thin wrapper around the CM in production code and a mock in tests.
* We cannot directly mock or shadow the CM, because some of the methods we rely on are marked as
* hidden and are thus invisible to Robolectric.
*/
-public interface ConnectivityManagerWrapper {
+public class ConnectivityManagerWrapper {
+
+ private final ConnectivityManager mCm;
+
+ public ConnectivityManagerWrapper(ConnectivityManager cm) {
+ mCm = cm;
+ }
/**
* Returns the real ConnectivityManager object wrapped by this wrapper.
*/
- public ConnectivityManager getConnectivityManager();
+ public ConnectivityManager getConnectivityManager() {
+ return mCm;
+ }
/**
* Calls {@code ConnectivityManager.getAlwaysOnVpnPackageForUser()}.
*
* @see android.net.ConnectivityManager#getAlwaysOnVpnPackageForUser
*/
- String getAlwaysOnVpnPackageForUser(int userId);
+ public String getAlwaysOnVpnPackageForUser(int userId) {
+ return mCm.getAlwaysOnVpnPackageForUser(userId);
+ }
/**
* Calls {@code ConnectivityManager.getGlobalProxy()}.
*
* @see android.net.ConnectivityManager#getGlobalProxy
*/
- ProxyInfo getGlobalProxy();
+ public ProxyInfo getGlobalProxy() {
+ return mCm.getGlobalProxy();
+ }
/**
* Calls {@code ConnectivityManager.registerNetworkCallback()}.
@@ -60,7 +72,9 @@
* @see android.net.ConnectivityManager#registerNetworkCallback(NetworkRequest,NetworkCallback,Handler)
*/
public void registerNetworkCallback(NetworkRequest request, NetworkCallback callback,
- Handler handler);
+ Handler handler) {
+ mCm.registerNetworkCallback(request, callback, handler);
+ }
/**
* Calls {@code ConnectivityManager.startCaptivePortalApp()}.
@@ -71,5 +85,14 @@
*
* @see android.net.ConnectivityManager#startCaptivePortalApp(Network)
*/
- public void startCaptivePortalApp(Network network);
+ public void startCaptivePortalApp(Network network) {
+ mCm.startCaptivePortalApp(network);
+ }
+
+ /**
+ * {@link ConnectivityManager#stopTethering}
+ */
+ public void stopTethering(int type) {
+ mCm.stopTethering(type);
+ }
}
diff --git a/src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java b/src/com/android/settings/wrapper/DevicePolicyManagerWrapper.java
similarity index 60%
rename from src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java
rename to src/com/android/settings/wrapper/DevicePolicyManagerWrapper.java
index ede241a..ed2eb46 100644
--- a/src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java
+++ b/src/com/android/settings/wrapper/DevicePolicyManagerWrapper.java
@@ -14,9 +14,10 @@
* limitations under the License.
*/
-package com.android.settings.enterprise;
+package com.android.settings.wrapper;
import android.annotation.NonNull;
+import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Intent;
import android.os.UserHandle;
@@ -25,137 +26,178 @@
import java.util.List;
/**
- * This interface replicates a subset of the android.app.admin.DevicePolicyManager (DPM). The
- * interface exists so that we can use a thin wrapper around the DPM in production code and a mock
+ * This class replicates a subset of the android.app.admin.DevicePolicyManager (DPM). The
+ * class exists so that we can use a thin wrapper around the DPM in production code and a mock
* in tests. We cannot directly mock or shadow the DPM, because some of the methods we rely on are
* newer than the API version supported by Robolectric.
*/
-public interface DevicePolicyManagerWrapper {
+public class DevicePolicyManagerWrapper {
+ private final DevicePolicyManager mDpm;
+
+ public DevicePolicyManagerWrapper(DevicePolicyManager dpm) {
+ mDpm = dpm;
+ }
+
/**
* Calls {@code DevicePolicyManager.getActiveAdminsAsUser()}.
*
* @see android.app.admin.DevicePolicyManager#getActiveAdminsAsUser
*/
- public @Nullable List<ComponentName> getActiveAdminsAsUser(int userId);
+ public @Nullable List<ComponentName> getActiveAdminsAsUser(int userId) {
+ return mDpm.getActiveAdminsAsUser(userId);
+ }
/**
* Calls {@code DevicePolicyManager.getMaximumFailedPasswordsForWipe()}.
*
* @see android.app.admin.DevicePolicyManager#getMaximumFailedPasswordsForWipe
*/
- int getMaximumFailedPasswordsForWipe(@Nullable ComponentName admin, int userHandle);
+ public int getMaximumFailedPasswordsForWipe(@Nullable ComponentName admin, int userHandle) {
+ return mDpm.getMaximumFailedPasswordsForWipe(admin, userHandle);
+ }
/**
* Calls {@code DevicePolicyManager.getDeviceOwnerComponentOnCallingUser()}.
*
* @see android.app.admin.DevicePolicyManager#getDeviceOwnerComponentOnCallingUser
*/
- ComponentName getDeviceOwnerComponentOnCallingUser();
+ public ComponentName getDeviceOwnerComponentOnCallingUser() {
+ return mDpm.getDeviceOwnerComponentOnCallingUser();
+ }
/**
* Calls {@code DevicePolicyManager.getDeviceOwnerComponentOnAnyUser()}.
*
* @see android.app.admin.DevicePolicyManager#getDeviceOwnerComponentOnAnyUser
*/
- ComponentName getDeviceOwnerComponentOnAnyUser();
+ public ComponentName getDeviceOwnerComponentOnAnyUser() {
+ return mDpm.getDeviceOwnerComponentOnAnyUser();
+ }
/**
* Calls {@code DevicePolicyManager.getProfileOwnerAsUser()}.
*
* @see android.app.admin.DevicePolicyManager#getProfileOwnerAsUser
*/
- @Nullable ComponentName getProfileOwnerAsUser(final int userId);
+ public @Nullable ComponentName getProfileOwnerAsUser(final int userId) {
+ return mDpm.getProfileOwnerAsUser(userId);
+ }
/**
* Calls {@code DevicePolicyManager.getDeviceOwnerNameOnAnyUser()}.
*
* @see android.app.admin.DevicePolicyManager#getDeviceOwnerNameOnAnyUser
*/
- CharSequence getDeviceOwnerOrganizationName();
+ public CharSequence getDeviceOwnerOrganizationName() {
+ return mDpm.getDeviceOwnerOrganizationName();
+ }
/**
* Calls {@code DevicePolicyManager.getPermissionGrantState()}.
*
* @see android.app.admin.DevicePolicyManager#getPermissionGrantState
*/
- int getPermissionGrantState(@Nullable ComponentName admin, String packageName,
- String permission);
+ public int getPermissionGrantState(@Nullable ComponentName admin, String packageName,
+ String permission) {
+ return mDpm.getPermissionGrantState(admin, packageName, permission);
+ }
/**
* Calls {@code DevicePolicyManager.isSecurityLoggingEnabled()}.
*
* @see android.app.admin.DevicePolicyManager#isSecurityLoggingEnabled
*/
- boolean isSecurityLoggingEnabled(@Nullable ComponentName admin);
+ public boolean isSecurityLoggingEnabled(@Nullable ComponentName admin) {
+ return mDpm.isSecurityLoggingEnabled(admin);
+ }
/**
* Calls {@code DevicePolicyManager.isNetworkLoggingEnabled()}.
*
* @see android.app.admin.DevicePolicyManager#isNetworkLoggingEnabled
*/
- boolean isNetworkLoggingEnabled(@Nullable ComponentName admin);
+ public boolean isNetworkLoggingEnabled(@Nullable ComponentName admin) {
+ return mDpm.isNetworkLoggingEnabled(admin);
+ }
/**
* Calls {@code DevicePolicyManager.getLastSecurityLogRetrievalTime()}.
*
* @see android.app.admin.DevicePolicyManager#getLastSecurityLogRetrievalTime
*/
- long getLastSecurityLogRetrievalTime();
+ public long getLastSecurityLogRetrievalTime() {
+ return mDpm.getLastSecurityLogRetrievalTime();
+ }
/**
* Calls {@code DevicePolicyManager.getLastBugReportRequestTime()}.
*
* @see android.app.admin.DevicePolicyManager#getLastBugReportRequestTime
*/
- long getLastBugReportRequestTime();
+ public long getLastBugReportRequestTime() {
+ return mDpm.getLastBugReportRequestTime();
+ }
/**
* Calls {@code DevicePolicyManager.getLastNetworkLogRetrievalTime()}.
*
* @see android.app.admin.DevicePolicyManager#getLastNetworkLogRetrievalTime
*/
- long getLastNetworkLogRetrievalTime();
+ public long getLastNetworkLogRetrievalTime() {
+ return mDpm.getLastNetworkLogRetrievalTime();
+ }
/**
* Calls {@code DevicePolicyManager.isCurrentInputMethodSetByOwner()}.
*
* @see android.app.admin.DevicePolicyManager#isCurrentInputMethodSetByOwner
*/
- boolean isCurrentInputMethodSetByOwner();
-
+ public boolean isCurrentInputMethodSetByOwner() {
+ return mDpm.isCurrentInputMethodSetByOwner();
+ }
/**
* Calls {@code DevicePolicyManager.getOwnerInstalledCaCerts()}.
*
* @see android.app.admin.DevicePolicyManager#getOwnerInstalledCaCerts
*/
- List<String> getOwnerInstalledCaCerts(@NonNull UserHandle user);
+ public List<String> getOwnerInstalledCaCerts(@NonNull UserHandle user) {
+ return mDpm.getOwnerInstalledCaCerts(user);
+ }
/**
* Calls {@code DevicePolicyManager.isDeviceOwnerAppOnAnyUser()}.
*
* @see android.app.admin.DevicePolicyManager#isDeviceOwnerAppOnAnyUser
*/
- boolean isDeviceOwnerAppOnAnyUser(String packageName);
+ public boolean isDeviceOwnerAppOnAnyUser(String packageName) {
+ return mDpm.isDeviceOwnerAppOnAnyUser(packageName);
+ }
/**
* Calls {@code DevicePolicyManager.packageHasActiveAdmins()}.
*
* @see android.app.admin.DevicePolicyManager#packageHasActiveAdmins
*/
- boolean packageHasActiveAdmins(String packageName);
+ public boolean packageHasActiveAdmins(String packageName) {
+ return mDpm.packageHasActiveAdmins(packageName);
+ }
/**
* Calls {@code DevicePolicyManager.isUninstallInQueue()}.
*
* @see android.app.admin.DevicePolicyManager#isUninstallInQueue
*/
- boolean isUninstallInQueue(String packageName);
+ public boolean isUninstallInQueue(String packageName) {
+ return mDpm.isUninstallInQueue(packageName);
+ }
/**
* Calls {@code DevicePolicyManager.createAdminSupportIntent()}.
*
* @see android.app.admin.DevicePolicyManager#createAdminSupportIntent
*/
- Intent createAdminSupportIntent(String restriction);
+ public Intent createAdminSupportIntent(@NonNull String restriction) {
+ return mDpm.createAdminSupportIntent(restriction);
+ }
}
diff --git a/src/com/android/settings/password/FingerprintManagerWrapper.java b/src/com/android/settings/wrapper/FingerprintManagerWrapper.java
similarity index 79%
rename from src/com/android/settings/password/FingerprintManagerWrapper.java
rename to src/com/android/settings/wrapper/FingerprintManagerWrapper.java
index 51b31af..9b43bfa 100644
--- a/src/com/android/settings/password/FingerprintManagerWrapper.java
+++ b/src/com/android/settings/wrapper/FingerprintManagerWrapper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.settings.password;
+package com.android.settings.wrapper;
import android.annotation.NonNull;
import android.hardware.fingerprint.FingerprintManager;
@@ -24,10 +24,14 @@
import com.android.internal.util.Preconditions;
/**
- * Wrapper of {@link FingerprintManager}. Workaround for roboelectic testing. See
- * {@link IFingerprintManager} for details.
+ * Wrapper of {@link FingerprintManager}. Workaround for robolectic testing.
+ *
+ * This is the workaround to allow us test {@link SetNewPasswordController} which uses a new hidden
+ * API {@link android.hardware.fingerprint.FingerprintManager#hasEnrolledFingerprints(int)} that
+ * robolectric does not support yet. Having robolectic to support latest platform API is tracked
+ * in b/30995831.
*/
-public class FingerprintManagerWrapper implements IFingerprintManager {
+public class FingerprintManagerWrapper {
private @NonNull FingerprintManager mFingerprintManager;
public FingerprintManagerWrapper(@NonNull FingerprintManager fingerprintManager) {
@@ -35,27 +39,22 @@
mFingerprintManager = fingerprintManager;
}
- @Override
public boolean isHardwareDetected() {
return mFingerprintManager.isHardwareDetected();
}
- @Override
public boolean hasEnrolledFingerprints(int userId) {
return mFingerprintManager.hasEnrolledFingerprints(userId);
}
- @Override
public long preEnroll() {
return mFingerprintManager.preEnroll();
}
- @Override
public void setActiveUser(int userId) {
mFingerprintManager.setActiveUser(userId);
}
- @Override
public void enroll(
byte[] token,
CancellationSignal cancel,
diff --git a/src/com/android/settings/applications/IPackageManagerWrapper.java b/src/com/android/settings/wrapper/IPackageManagerWrapper.java
similarity index 60%
rename from src/com/android/settings/applications/IPackageManagerWrapper.java
rename to src/com/android/settings/wrapper/IPackageManagerWrapper.java
index b4d1b85..9bb2df7 100644
--- a/src/com/android/settings/applications/IPackageManagerWrapper.java
+++ b/src/com/android/settings/wrapper/IPackageManagerWrapper.java
@@ -14,62 +14,84 @@
* limitations under the License.
*/
-package com.android.settings.applications;
+package com.android.settings.wrapper;
import android.content.Intent;
+import android.content.pm.IPackageManager;
import android.content.pm.PackageInfo;
import android.content.pm.ParceledListSlice;
import android.content.pm.ResolveInfo;
import android.os.RemoteException;
/**
- * This interface replicates a subset of the android.content.pm.IPackageManager (PMS). The interface
+ * This class replicates a subset of the android.content.pm.IPackageManager (PMS). The class
* exists so that we can use a thin wrapper around the PMS in production code and a mock in tests.
* We cannot directly mock or shadow the PMS, because some of the methods we rely on are newer than
* the API version supported by Robolectric.
*/
-public interface IPackageManagerWrapper {
+public class IPackageManagerWrapper {
+
+ private final IPackageManager mPms;
+
+ public IPackageManagerWrapper(IPackageManager pms) {
+ mPms = pms;
+ }
/**
* Calls {@code IPackageManager.checkUidPermission()}.
*
* @see android.content.pm.IPackageManager#checkUidPermission
*/
- int checkUidPermission(String permName, int uid) throws RemoteException;
+ public int checkUidPermission(String permName, int uid) throws RemoteException {
+ return mPms.checkUidPermission(permName, uid);
+ }
/**
* Calls {@code IPackageManager.findPersistentPreferredActivity()}.
*
* @see android.content.pm.IPackageManager#findPersistentPreferredActivity
*/
- ResolveInfo findPersistentPreferredActivity(Intent intent, int userId) throws RemoteException;
+ public ResolveInfo findPersistentPreferredActivity(Intent intent, int userId)
+ throws RemoteException {
+ return mPms.findPersistentPreferredActivity(intent, userId);
+ }
/**
* Calls {@code IPackageManager.getPackageInfo()}.
*
* @see android.content.pm.IPackageManager#getPackageInfo
*/
- PackageInfo getPackageInfo(String packageName, int flags, int userId) throws RemoteException;
+ public PackageInfo getPackageInfo(String packageName, int flags, int userId)
+ throws RemoteException {
+ return mPms.getPackageInfo(packageName, flags, userId);
+ }
/**
* Calls {@code IPackageManager.getAppOpPermissionPackages()}.
*
* @see android.content.pm.IPackageManager#getAppOpPermissionPackages
*/
- String[] getAppOpPermissionPackages(String permissionName) throws RemoteException;
+ public String[] getAppOpPermissionPackages(String permissionName) throws RemoteException {
+ return mPms.getAppOpPermissionPackages(permissionName);
+ }
/**
* Calls {@code IPackageManager.isPackageAvailable()}.
*
* @see android.content.pm.IPackageManager#isPackageAvailable
*/
- boolean isPackageAvailable(String packageName, int userId) throws RemoteException;
+ public boolean isPackageAvailable(String packageName, int userId) throws RemoteException {
+ return mPms.isPackageAvailable(packageName, userId);
+ }
/**
* Calls {@code IPackageManager.getPackagesHoldingPermissions()}.
*
* @see android.content.pm.IPackageManager#getPackagesHoldingPermissions
*/
- ParceledListSlice<PackageInfo> getPackagesHoldingPermissions(
- String[] permissions, int flags, int userId) throws RemoteException;
+ public ParceledListSlice<PackageInfo> getPackagesHoldingPermissions(
+ String[] permissions, int flags, int userId) throws RemoteException {
+ return mPms.getPackagesHoldingPermissions(permissions, flags, userId);
+ }
+
}
diff --git a/src/com/android/settings/fuelgauge/anomaly/KeyValueListParserWrapper.java b/src/com/android/settings/wrapper/KeyValueListParserWrapper.java
similarity index 71%
rename from src/com/android/settings/fuelgauge/anomaly/KeyValueListParserWrapper.java
rename to src/com/android/settings/wrapper/KeyValueListParserWrapper.java
index 4a9c2a9..16dc50e 100644
--- a/src/com/android/settings/fuelgauge/anomaly/KeyValueListParserWrapper.java
+++ b/src/com/android/settings/wrapper/KeyValueListParserWrapper.java
@@ -14,22 +14,29 @@
* limitations under the License.
*/
-package com.android.settings.fuelgauge.anomaly;
+package com.android.settings.wrapper;
import android.util.KeyValueListParser;
/**
- * This interface replicates a subset of the {@link KeyValueListParser}. The interface
+ * This class replicates a subset of the {@link KeyValueListParser}. The class
* exists so that we can use a thin wrapper around the PM in production code and a mock in tests.
* We cannot directly mock or shadow the {@link KeyValueListParser}, because some of the methods
* we rely on are newer than the API version supported by Robolectric.
*/
-public interface KeyValueListParserWrapper {
+public class KeyValueListParserWrapper {
+ private KeyValueListParser mParser;
+
+ public KeyValueListParserWrapper(KeyValueListParser parser) {
+ mParser = parser;
+ }
/**
* Get real {@link KeyValueListParser}
*/
- KeyValueListParser getKeyValueListParser();
+ public KeyValueListParser getKeyValueListParser() {
+ return mParser;
+ }
/**
* Resets the parser with a new string to parse. The string is expected to be in the following
@@ -41,7 +48,9 @@
* @param str the string to parse.
* @throws IllegalArgumentException if the string is malformed.
*/
- void setString(String str) throws IllegalArgumentException;
+ public void setString(String str) throws IllegalArgumentException {
+ mParser.setString(str);
+ }
/**
* Get the value for key as a boolean.
@@ -49,7 +58,9 @@
* @param defaultValue The value to return if the key was not found.
* @return the string value associated with the key.
*/
- boolean getBoolean(String key, boolean defaultValue);
+ public boolean getBoolean(String key, boolean defaultValue) {
+ return mParser.getBoolean(key, defaultValue);
+ }
/**
* Get the value for key as a long.
@@ -58,5 +69,7 @@
* long.
* @return the long value associated with the key.
*/
- long getLong(String key, long defaultValue);
+ public long getLong(String key, long defaultValue) {
+ return mParser.getLong(key, defaultValue);
+ }
}
diff --git a/src/com/android/settings/network/NetworkScoreManagerWrapper.java b/src/com/android/settings/wrapper/NetworkScoreManagerWrapper.java
similarity index 98%
rename from src/com/android/settings/network/NetworkScoreManagerWrapper.java
rename to src/com/android/settings/wrapper/NetworkScoreManagerWrapper.java
index 3489640..a07d645 100644
--- a/src/com/android/settings/network/NetworkScoreManagerWrapper.java
+++ b/src/com/android/settings/wrapper/NetworkScoreManagerWrapper.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.settings.network;
+package com.android.settings.wrapper;
import android.annotation.Nullable;
import android.net.NetworkScoreManager;
diff --git a/src/com/android/settings/display/PowerManagerWrapper.java b/src/com/android/settings/wrapper/PowerManagerWrapper.java
similarity index 97%
rename from src/com/android/settings/display/PowerManagerWrapper.java
rename to src/com/android/settings/wrapper/PowerManagerWrapper.java
index afa2f33..6357a3e 100644
--- a/src/com/android/settings/display/PowerManagerWrapper.java
+++ b/src/com/android/settings/wrapper/PowerManagerWrapper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.settings.display;
+package com.android.settings.wrapper;
import android.os.PowerManager;
diff --git a/src/com/android/settings/network/RestrictedLockUtilsWrapper.java b/src/com/android/settings/wrapper/RestrictedLockUtilsWrapper.java
similarity index 93%
rename from src/com/android/settings/network/RestrictedLockUtilsWrapper.java
rename to src/com/android/settings/wrapper/RestrictedLockUtilsWrapper.java
index de5b808..7a0185f 100644
--- a/src/com/android/settings/network/RestrictedLockUtilsWrapper.java
+++ b/src/com/android/settings/wrapper/RestrictedLockUtilsWrapper.java
@@ -1,4 +1,4 @@
-package com.android.settings.network;
+package com.android.settings.wrapper;
import android.content.Context;
import com.android.settingslib.RestrictedLockUtils;
diff --git a/src/com/android/settings/applications/UserManagerWrapperImpl.java b/src/com/android/settings/wrapper/UserManagerWrapper.java
similarity index 66%
rename from src/com/android/settings/applications/UserManagerWrapperImpl.java
rename to src/com/android/settings/wrapper/UserManagerWrapper.java
index 14ea64a..eeb648b 100644
--- a/src/com/android/settings/applications/UserManagerWrapperImpl.java
+++ b/src/com/android/settings/wrapper/UserManagerWrapper.java
@@ -14,26 +14,30 @@
* limitations under the License.
*/
-package com.android.settings.applications;
+package com.android.settings.wrapper;
import android.content.pm.UserInfo;
import android.os.UserManager;
import java.util.List;
-public class UserManagerWrapperImpl implements UserManagerWrapper {
+/**
+ * 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 UserManagerWrapperImpl(UserManager userManager) {
+ public UserManagerWrapper(UserManager userManager) {
mUserManager = userManager;
}
- @Override
public UserInfo getPrimaryUser() {
return mUserManager.getPrimaryUser();
}
- @Override
public List<UserInfo> getUsers() {
return mUserManager.getUsers();
}
diff --git a/src/com/android/settings/webview/UserPackageWrapper.java b/src/com/android/settings/wrapper/UserPackageWrapper.java
similarity index 86%
rename from src/com/android/settings/webview/UserPackageWrapper.java
rename to src/com/android/settings/wrapper/UserPackageWrapper.java
index 8fbb10c..afa1d82 100644
--- a/src/com/android/settings/webview/UserPackageWrapper.java
+++ b/src/com/android/settings/wrapper/UserPackageWrapper.java
@@ -12,20 +12,16 @@
* permissions and limitations under the License.
*/
-package com.android.settings.webview;
+package com.android.settings.wrapper;
-import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.UserInfo;
-import android.webkit.UserPackage;
-
-import java.util.List;
/**
* Wrapper class around android.webkit.UserPackage - to be able to use UserPackage in Robolectric
* tests (such tests currently don't support mocking hidden classes).
*/
-interface UserPackageWrapper {
+public interface UserPackageWrapper {
UserInfo getUserInfo();
PackageInfo getPackageInfo();
boolean isEnabledPackage();
diff --git a/src/com/android/settings/webview/UserPackageWrapperImpl.java b/src/com/android/settings/wrapper/UserPackageWrapperImpl.java
similarity index 83%
rename from src/com/android/settings/webview/UserPackageWrapperImpl.java
rename to src/com/android/settings/wrapper/UserPackageWrapperImpl.java
index 1ea7c2e..0a2b9cd 100644
--- a/src/com/android/settings/webview/UserPackageWrapperImpl.java
+++ b/src/com/android/settings/wrapper/UserPackageWrapperImpl.java
@@ -12,23 +12,19 @@
* permissions and limitations under the License.
*/
-package com.android.settings.webview;
+package com.android.settings.wrapper;
-import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.UserInfo;
import android.webkit.UserPackage;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* Default implementation of UserPackageWrapper.
*/
-class UserPackageWrapperImpl implements UserPackageWrapper {
+public class UserPackageWrapperImpl implements UserPackageWrapper {
private final UserPackage mUserPackage;
- UserPackageWrapperImpl(UserPackage userPackage) {
+ public UserPackageWrapperImpl(UserPackage userPackage) {
mUserPackage = userPackage;
}
diff --git a/src/com/android/settings/dashboard/suggestions/WallpaperManagerWrapper.java b/src/com/android/settings/wrapper/WallpaperManagerWrapper.java
similarity index 94%
rename from src/com/android/settings/dashboard/suggestions/WallpaperManagerWrapper.java
rename to src/com/android/settings/wrapper/WallpaperManagerWrapper.java
index 9efe4fe..89015e5 100644
--- a/src/com/android/settings/dashboard/suggestions/WallpaperManagerWrapper.java
+++ b/src/com/android/settings/wrapper/WallpaperManagerWrapper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.settings.dashboard.suggestions;
+package com.android.settings.wrapper;
import android.app.WallpaperManager;
import android.content.Context;
diff --git a/src/com/android/settings/wifi/WifiManagerWrapper.java b/src/com/android/settings/wrapper/WifiManagerWrapper.java
similarity index 93%
rename from src/com/android/settings/wifi/WifiManagerWrapper.java
rename to src/com/android/settings/wrapper/WifiManagerWrapper.java
index 69b5ee9..e24f5eb 100644
--- a/src/com/android/settings/wifi/WifiManagerWrapper.java
+++ b/src/com/android/settings/wrapper/WifiManagerWrapper.java
@@ -1,4 +1,4 @@
-package com.android.settings.wifi;
+package com.android.settings.wrapper;
import android.net.wifi.WifiManager;