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
This commit is contained in:
@@ -110,9 +110,8 @@ import com.android.internal.app.UnlaunchableAppActivity;
|
||||
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 final class Utils extends com.android.settingslib.Utils {
|
||||
}
|
||||
}
|
||||
|
||||
public static IFingerprintManager getFingerprintManagerWrapperOrNull(Context context) {
|
||||
public static FingerprintManagerWrapper getFingerprintManagerWrapperOrNull(Context context) {
|
||||
FingerprintManager fingerprintManager = getFingerprintManagerOrNull(context);
|
||||
if (fingerprintManager != null) {
|
||||
return new FingerprintManagerWrapper(fingerprintManager);
|
||||
|
@@ -43,8 +43,7 @@ import com.android.settings.R;
|
||||
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 @@ public class RemoveAccountPreferenceController extends AbstractPreferenceControl
|
||||
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)));
|
||||
}
|
||||
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
@@ -22,6 +22,8 @@ import android.os.AsyncTask;
|
||||
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> {
|
||||
|
@@ -43,9 +43,8 @@ import com.android.settings.SettingsActivity;
|
||||
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 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
|
||||
.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();
|
||||
|
@@ -23,6 +23,8 @@ import android.os.AsyncTask;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
|
||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@@ -31,6 +31,7 @@ import android.util.SparseArray;
|
||||
|
||||
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 abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
|
||||
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)
|
||||
|
@@ -22,7 +22,9 @@ import android.os.Build;
|
||||
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
|
||||
|
@@ -18,7 +18,9 @@ package com.android.settings.applications;
|
||||
|
||||
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
|
||||
|
@@ -29,7 +29,9 @@ import android.util.ArraySet;
|
||||
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;
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
@@ -21,6 +21,8 @@ import android.content.pm.ResolveInfo;
|
||||
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 {
|
||||
|
@@ -24,7 +24,6 @@ import android.app.ActivityManager;
|
||||
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.applications.StorageStatsSource.AppStorageStats;
|
||||
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 @@ public class InstalledAppDetails extends AppInfoBase
|
||||
|
||||
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");
|
||||
|
@@ -20,6 +20,8 @@ import android.content.pm.ApplicationInfo;
|
||||
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) {
|
||||
|
@@ -90,6 +90,7 @@ import com.android.settingslib.applications.ApplicationsState.AppFilter;
|
||||
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 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
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 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
||||
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 class ManageApplications extends InstrumentedPreferenceFragment
|
||||
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,
|
||||
|
@@ -21,6 +21,7 @@ import android.content.pm.ApplicationInfo;
|
||||
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 @@ public class NotificationApps extends ManageApplications {
|
||||
mContext = context;
|
||||
mLoader = loader;
|
||||
mNotificationBackend = new NotificationBackend();
|
||||
mPackageManager = new PackageManagerWrapperImpl(mContext.getPackageManager());
|
||||
mPackageManager = new PackageManagerWrapper(mContext.getPackageManager());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -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;
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -36,6 +36,7 @@ import com.android.internal.annotations.VisibleForTesting;
|
||||
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 @@ public class PictureInPictureSettings extends EmptyTextSettings {
|
||||
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);
|
||||
|
@@ -42,6 +42,7 @@ import com.android.settings.Utils;
|
||||
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 @@ public class RecentAppsPreferenceController extends AbstractPreferenceController
|
||||
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) {
|
||||
|
@@ -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();
|
||||
}
|
@@ -24,9 +24,9 @@ import android.text.TextUtils;
|
||||
|
||||
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;
|
||||
|
@@ -26,8 +26,8 @@ import android.graphics.drawable.Drawable;
|
||||
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.
|
||||
|
@@ -29,11 +29,10 @@ import android.util.Pair;
|
||||
|
||||
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 @@ public abstract class DefaultAppPickerFragment extends RadioButtonPickerFragment
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
mPm = new PackageManagerWrapperImpl(context.getPackageManager());
|
||||
mPm = new PackageManagerWrapper(context.getPackageManager());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -26,11 +26,10 @@ import android.text.TextUtils;
|
||||
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 abstract class DefaultAppPreferenceController extends AbstractPreferenceC
|
||||
|
||||
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();
|
||||
}
|
||||
|
@@ -23,8 +23,7 @@ import android.provider.Settings;
|
||||
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 class DefaultAutofillPreferenceController extends DefaultAppPreferenceCon
|
||||
public DefaultAutofillPreferenceController(Context context) {
|
||||
super(context);
|
||||
|
||||
mAutofillManager = new AutofillManagerWrapperImpl(
|
||||
mAutofillManager = new AutofillManagerWrapper(
|
||||
mContext.getSystemService(AutofillManager.class));
|
||||
}
|
||||
|
||||
|
@@ -24,7 +24,7 @@ import android.content.pm.ActivityInfo;
|
||||
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;
|
||||
|
@@ -29,9 +29,8 @@ import android.widget.Button;
|
||||
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 @@ public class InstantAppButtonsController implements DialogInterface.OnClickListe
|
||||
mFragment = fragment;
|
||||
mView = view;
|
||||
mShowDialogDelegate = showDialogDelegate;
|
||||
mPackageManagerWrapper = new PackageManagerWrapperImpl(context.getPackageManager());
|
||||
mPackageManagerWrapper = new PackageManagerWrapper(context.getPackageManager());
|
||||
}
|
||||
|
||||
public InstantAppButtonsController setPackageName(String packageName) {
|
||||
|
@@ -32,6 +32,7 @@ import com.android.settings.Utils;
|
||||
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;
|
||||
|
||||
/**
|
||||
|
@@ -46,14 +46,13 @@ import android.widget.AdapterView;
|
||||
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 @@ public class AppDataUsage extends DataUsageBase implements Preference.OnPreferen
|
||||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
mPackageManagerWrapper = new PackageManagerWrapperImpl(getPackageManager());
|
||||
mPackageManagerWrapper = new PackageManagerWrapper(getPackageManager());
|
||||
final Bundle args = getArguments();
|
||||
|
||||
try {
|
||||
|
@@ -24,12 +24,12 @@ import android.view.MenuInflater;
|
||||
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;
|
||||
|
||||
|
@@ -35,9 +35,6 @@ import android.view.View;
|
||||
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.UserIconLoader;
|
||||
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 @@ public class StorageDashboardFragment extends DashboardFragment
|
||||
@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 @@ public class StorageDashboardFragment extends DashboardFragment
|
||||
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 class StorageDashboardFragment extends DashboardFragment
|
||||
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 @@ public class StorageDashboardFragment extends DashboardFragment
|
||||
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
|
||||
|
@@ -30,15 +30,15 @@ import android.util.SparseArray;
|
||||
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 class StorageProfileFragment extends DashboardFragment
|
||||
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
|
||||
|
@@ -27,9 +27,9 @@ import android.support.v7.preference.PreferenceScreen;
|
||||
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;
|
||||
|
@@ -30,10 +30,10 @@ import android.util.ArraySet;
|
||||
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;
|
||||
|
@@ -30,10 +30,10 @@ import android.util.SparseArray;
|
||||
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;
|
||||
|
||||
|
@@ -31,6 +31,7 @@ import android.support.v7.preference.PreferenceScreen;
|
||||
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;
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -30,9 +30,10 @@ import android.text.style.ClickableSpan;
|
||||
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;
|
||||
|
@@ -29,8 +29,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
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 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment {
|
||||
private byte[] mToken;
|
||||
private boolean mDone;
|
||||
private int mUserId;
|
||||
private IFingerprintManager mFingerprintManager;
|
||||
private FingerprintManagerWrapper mFingerprintManager;
|
||||
private ArrayList<QueuedEvent> mQueuedEvents;
|
||||
|
||||
private abstract class QueuedEvent {
|
||||
|
@@ -45,8 +45,7 @@ import com.android.settings.SettingsActivity;
|
||||
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 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
||||
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();
|
||||
|
@@ -50,9 +50,9 @@ import com.android.settings.SettingsActivity;
|
||||
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;
|
||||
|
@@ -35,8 +35,7 @@ import com.android.settings.R;
|
||||
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 @@ public class BackgroundActivityPreferenceController extends AbstractPreferenceCo
|
||||
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;
|
||||
|
@@ -23,6 +23,8 @@ import android.text.format.DateUtils;
|
||||
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 @@ public class AnomalyDetectionPolicy {
|
||||
private final KeyValueListParserWrapper mParserWrapper;
|
||||
|
||||
public AnomalyDetectionPolicy(Context context) {
|
||||
this(context, new KeyValueListParserWrapperImpl(new KeyValueListParser(',')));
|
||||
this(context, new KeyValueListParserWrapper(new KeyValueListParser(',')));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -26,6 +26,7 @@ import android.telephony.TelephonyManager;
|
||||
|
||||
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;
|
||||
|
@@ -30,6 +30,7 @@ import com.android.internal.logging.nano.MetricsProto;
|
||||
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;
|
||||
|
||||
|
@@ -21,6 +21,7 @@ import android.support.v7.preference.Preference;
|
||||
|
||||
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;
|
||||
|
@@ -25,8 +25,6 @@ import android.support.annotation.Keep;
|
||||
|
||||
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.SuggestionFeatureProvider;
|
||||
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.SecurityFeatureProvider;
|
||||
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 class FeatureFactoryImpl extends FeatureFactory {
|
||||
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 class FeatureFactoryImpl extends FeatureFactory {
|
||||
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());
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
@@ -36,6 +36,7 @@ import android.os.UserManager;
|
||||
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 @@ final class SetNewPasswordController {
|
||||
*/
|
||||
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 @@ final class SetNewPasswordController {
|
||||
}
|
||||
// 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 @@ final class SetNewPasswordController {
|
||||
SetNewPasswordController(
|
||||
int targetUserId,
|
||||
PackageManager packageManager,
|
||||
IFingerprintManager fingerprintManager,
|
||||
FingerprintManagerWrapper fingerprintManager,
|
||||
DevicePolicyManager devicePolicyManager,
|
||||
Ui ui) {
|
||||
mTargetUserId = targetUserId;
|
||||
|
@@ -34,9 +34,9 @@ import com.android.internal.logging.nano.MetricsProto;
|
||||
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;
|
||||
|
@@ -21,9 +21,9 @@ import android.content.Context;
|
||||
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 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {
|
||||
@Override
|
||||
public InstalledAppResultLoader getInstalledAppSearchLoader(Context context, String query) {
|
||||
return new InstalledAppResultLoader(
|
||||
context, new PackageManagerWrapperImpl(context.getPackageManager()),
|
||||
context, new PackageManagerWrapper(context.getPackageManager()),
|
||||
cleanQuery(query), getSiteMapManager());
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -27,6 +27,7 @@ import android.util.Log;
|
||||
|
||||
import com.android.internal.net.LegacyVpnInfo;
|
||||
import com.android.internal.net.VpnConfig;
|
||||
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
||||
|
||||
/**
|
||||
* Utility functions for vpn.
|
||||
|
@@ -30,9 +30,10 @@ import android.text.TextUtils;
|
||||
|
||||
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;
|
||||
|
@@ -28,6 +28,8 @@ import android.webkit.WebViewProviderInfo;
|
||||
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;
|
||||
|
@@ -28,12 +28,12 @@ import android.provider.SearchIndexableResource;
|
||||
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;
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -21,7 +21,7 @@ import android.text.TextUtils;
|
||||
|
||||
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;
|
||||
|
@@ -35,6 +35,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
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;
|
||||
|
@@ -65,6 +65,7 @@ import com.android.settings.search.SearchIndexableRaw;
|
||||
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;
|
||||
|
@@ -29,7 +29,7 @@ import android.text.TextUtils;
|
||||
|
||||
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;
|
||||
|
@@ -20,7 +20,6 @@ import android.app.Activity;
|
||||
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.ProgressBar;
|
||||
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;
|
||||
|
@@ -57,12 +57,12 @@ import com.android.settings.Utils;
|
||||
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;
|
||||
|
@@ -31,9 +31,9 @@ import com.android.internal.logging.nano.MetricsProto;
|
||||
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 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
|
||||
ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
|
||||
mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance(
|
||||
mAccessPoint,
|
||||
new ConnectivityManagerWrapperImpl(cm),
|
||||
new ConnectivityManagerWrapper(cm),
|
||||
context,
|
||||
this,
|
||||
new Handler(Looper.getMainLooper()), // UI thread.
|
||||
|
@@ -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 @@ import android.view.accessibility.AccessibilityManager;
|
||||
* 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.
|
@@ -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();
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
@@ -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.os.Handler;
|
||||
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 @@ public interface ConnectivityManagerWrapper {
|
||||
* @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 @@ public interface ConnectivityManagerWrapper {
|
||||
*
|
||||
* @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);
|
||||
}
|
||||
}
|
@@ -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 android.support.annotation.Nullable;
|
||||
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);
|
||||
}
|
||||
}
|
@@ -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 android.os.CancellationSignal;
|
||||
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 @@ public class FingerprintManagerWrapper implements IFingerprintManager {
|
||||
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,
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
@@ -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 @@ public interface KeyValueListParserWrapper {
|
||||
* @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 @@ public interface KeyValueListParserWrapper {
|
||||
* @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 @@ public interface KeyValueListParserWrapper {
|
||||
* 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);
|
||||
}
|
||||
}
|
@@ -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;
|
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.display;
|
||||
package com.android.settings.wrapper;
|
||||
|
||||
import android.os.PowerManager;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package com.android.settings.network;
|
||||
package com.android.settings.wrapper;
|
||||
|
||||
import android.content.Context;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
@@ -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();
|
||||
}
|
@@ -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();
|
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
@@ -1,4 +1,4 @@
|
||||
package com.android.settings.wifi;
|
||||
package com.android.settings.wrapper;
|
||||
|
||||
import android.net.wifi.WifiManager;
|
||||
|
@@ -26,8 +26,8 @@ import android.text.SpannableStringBuilder;
|
||||
import android.text.format.DateUtils;
|
||||
import android.text.style.TtsSpan;
|
||||
|
||||
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -23,8 +23,8 @@ import android.os.UserManager;
|
||||
import android.test.mock.MockContentResolver;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.applications.PackageManagerWrapper;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -40,7 +40,6 @@ import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class ShortcutServicePickerFragmentTest {
|
||||
|
@@ -46,10 +46,10 @@ import android.widget.Button;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.applications.LayoutPreference;
|
||||
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.testutils.shadow.ShadowAccountManager;
|
||||
import com.android.settings.testutils.shadow.ShadowContentResolver;
|
||||
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -27,6 +27,7 @@ import android.os.RemoteException;
|
||||
import android.os.UserManager;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.wrapper.IPackageManagerWrapper;
|
||||
import com.android.settingslib.applications.ApplicationsState.AppEntry;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -28,7 +28,9 @@ import android.os.UserManager;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
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 org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -25,7 +25,9 @@ import android.os.UserManager;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
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 org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -30,9 +30,11 @@ import android.os.UserManager;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||
import com.android.settings.testutils.ApplicationTestUtils;
|
||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
||||
import com.android.settings.wrapper.IPackageManagerWrapper;
|
||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -41,6 +41,7 @@ import android.os.UserManager;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.settings.applications;
|
||||
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.nullable;
|
||||
import static org.mockito.Matchers.anyDouble;
|
||||
@@ -33,7 +32,6 @@ import android.app.AlertDialog;
|
||||
import android.app.AppOpsManager;
|
||||
import android.app.Fragment;
|
||||
import android.app.LoaderManager;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
@@ -55,11 +53,11 @@ import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.applications.instantapps.InstantAppButtonsController;
|
||||
import com.android.settings.applications.instantapps.InstantAppButtonsController.ShowDialogDelegate;
|
||||
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||
import com.android.settings.fuelgauge.BatteryUtils;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.widget.ActionButtonPreferenceTest;
|
||||
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
||||
import com.android.settingslib.Utils;
|
||||
import com.android.settingslib.applications.AppUtils;
|
||||
import com.android.settingslib.applications.ApplicationsState.AppEntry;
|
||||
|
@@ -26,6 +26,7 @@ import android.os.UserManager;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -27,6 +27,7 @@ import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.dashboard.SummaryLoader;
|
||||
import com.android.settings.notification.NotificationBackend;
|
||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
|
@@ -28,6 +28,7 @@ import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.wrapper.ActivityInfoWrapper;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -104,11 +105,12 @@ public class PictureInPictureDetailsTest {
|
||||
activities);
|
||||
}
|
||||
|
||||
private class MockActivityInfo implements ActivityInfoWrapper {
|
||||
private class MockActivityInfo extends ActivityInfoWrapper {
|
||||
|
||||
private boolean mSupportsPictureInPicture;
|
||||
|
||||
public MockActivityInfo(boolean supportsPictureInPicture) {
|
||||
super(null);
|
||||
mSupportsPictureInPicture = supportsPictureInPicture;
|
||||
}
|
||||
|
||||
|
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.settings.applications.defaultapps;
|
||||
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -27,7 +26,7 @@ import android.content.pm.PackageManager;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.applications.PackageManagerWrapper;
|
||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -29,8 +29,8 @@ import android.os.UserManager;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.applications.PackageManagerWrapper;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.settings.applications.defaultapps;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.UserManager;
|
||||
@@ -27,8 +26,8 @@ import android.view.autofill.AutofillManager;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.applications.AutofillManagerWrapper;
|
||||
import com.android.settings.applications.PackageManagerWrapper;
|
||||
import com.android.settings.wrapper.AutofillManagerWrapper;
|
||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user