Remove wrapper for ConnectionManager/IPackageManager

Bug: 76167422
Test: robotests
Change-Id: I5f051b0ce58b97a3cfd5d4bae469463dcd6d83ac
This commit is contained in:
Fan Zhang
2018-04-02 14:22:50 -07:00
parent e1549f0af1
commit 01cfb9d8c5
21 changed files with 66 additions and 286 deletions

View File

@@ -19,6 +19,7 @@ import android.app.AppGlobals;
import android.app.AppOpsManager; import android.app.AppOpsManager;
import android.app.AppOpsManager.PackageOps; import android.app.AppOpsManager.PackageOps;
import android.content.Context; import android.content.Context;
import android.content.pm.IPackageManager;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.RemoteException; import android.os.RemoteException;
@@ -31,7 +32,6 @@ import android.util.SparseArray;
import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.applications.ApplicationsState.AppEntry;
import com.android.settings.wrapper.IPackageManagerWrapper;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
@@ -47,7 +47,7 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
private static final String TAG = "AppStateAppOpsBridge"; private static final String TAG = "AppStateAppOpsBridge";
private final IPackageManagerWrapper mIPackageManager; private final IPackageManager mIPackageManager;
private final UserManager mUserManager; private final UserManager mUserManager;
private final List<UserHandle> mProfiles; private final List<UserHandle> mProfiles;
private final AppOpsManager mAppOpsManager; private final AppOpsManager mAppOpsManager;
@@ -58,12 +58,12 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
public AppStateAppOpsBridge(Context context, ApplicationsState appState, Callback callback, public AppStateAppOpsBridge(Context context, ApplicationsState appState, Callback callback,
int appOpsOpCode, String[] permissions) { int appOpsOpCode, String[] permissions) {
this(context, appState, callback, appOpsOpCode, permissions, this(context, appState, callback, appOpsOpCode, permissions,
new IPackageManagerWrapper(AppGlobals.getPackageManager())); AppGlobals.getPackageManager());
} }
@VisibleForTesting @VisibleForTesting
AppStateAppOpsBridge(Context context, ApplicationsState appState, Callback callback, AppStateAppOpsBridge(Context context, ApplicationsState appState, Callback callback,
int appOpsOpCode, String[] permissions, IPackageManagerWrapper packageManager) { int appOpsOpCode, String[] permissions, IPackageManager packageManager) {
super(appState, callback); super(appState, callback);
mContext = context; mContext = context;
mIPackageManager = packageManager; mIPackageManager = packageManager;
@@ -210,9 +210,10 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
if (entriesForProfile == null) { if (entriesForProfile == null) {
continue; continue;
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked") final List<PackageInfo> packageInfos =
final List<PackageInfo> packageInfos = mIPackageManager mIPackageManager
.getPackagesHoldingPermissions(mPermissions, 0, profileId).getList(); .getPackagesHoldingPermissions(mPermissions, 0,
profileId).getList();
final int packageInfoCount = packageInfos != null ? packageInfos.size() : 0; final int packageInfoCount = packageInfos != null ? packageInfos.size() : 0;
for (int i = 0; i < packageInfoCount; i++) { for (int i = 0; i < packageInfoCount; i++) {
final PackageInfo packageInfo = packageInfos.get(i); final PackageInfo packageInfo = packageInfos.get(i);

View File

@@ -17,12 +17,12 @@ package com.android.settings.applications;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Build; import android.os.Build;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.UserHandle; import android.os.UserHandle;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
/** /**
@@ -32,11 +32,11 @@ import com.android.settingslib.wrapper.PackageManagerWrapper;
public abstract class AppWithAdminGrantedPermissionsCounter extends AppCounter { public abstract class AppWithAdminGrantedPermissionsCounter extends AppCounter {
private final String[] mPermissions; private final String[] mPermissions;
private final IPackageManagerWrapper mPackageManagerService; private final IPackageManager mPackageManagerService;
private final DevicePolicyManager mDevicePolicyManager; private final DevicePolicyManager mDevicePolicyManager;
public AppWithAdminGrantedPermissionsCounter(Context context, String[] permissions, public AppWithAdminGrantedPermissionsCounter(Context context, String[] permissions,
PackageManagerWrapper packageManager, IPackageManagerWrapper packageManagerService, PackageManagerWrapper packageManager, IPackageManager packageManagerService,
DevicePolicyManager devicePolicyManager) { DevicePolicyManager devicePolicyManager) {
super(context, packageManager); super(context, packageManager);
mPermissions = permissions; mPermissions = permissions;
@@ -52,7 +52,7 @@ public abstract class AppWithAdminGrantedPermissionsCounter extends AppCounter {
public static boolean includeInCount(String[] permissions, public static boolean includeInCount(String[] permissions,
DevicePolicyManager devicePolicyManager, PackageManagerWrapper packageManager, DevicePolicyManager devicePolicyManager, PackageManagerWrapper packageManager,
IPackageManagerWrapper packageManagerService, ApplicationInfo info) { IPackageManager packageManagerService, ApplicationInfo info) {
if (info.targetSdkVersion >= Build.VERSION_CODES.M) { if (info.targetSdkVersion >= Build.VERSION_CODES.M) {
// The app uses run-time permissions. Check whether one or more of the permissions were // The app uses run-time permissions. Check whether one or more of the permissions were
// granted by enterprise policy. // granted by enterprise policy.

View File

@@ -18,9 +18,9 @@ package com.android.settings.applications;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.os.UserManager; import android.os.UserManager;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
/** /**
@@ -29,11 +29,11 @@ import com.android.settingslib.wrapper.PackageManagerWrapper;
*/ */
public abstract class AppWithAdminGrantedPermissionsLister extends AppLister { public abstract class AppWithAdminGrantedPermissionsLister extends AppLister {
private final String[] mPermissions; private final String[] mPermissions;
private final IPackageManagerWrapper mPackageManagerService; private final IPackageManager mPackageManagerService;
private final DevicePolicyManager mDevicePolicyManager; private final DevicePolicyManager mDevicePolicyManager;
public AppWithAdminGrantedPermissionsLister(String[] permissions, public AppWithAdminGrantedPermissionsLister(String[] permissions,
PackageManagerWrapper packageManager, IPackageManagerWrapper packageManagerService, PackageManagerWrapper packageManager, IPackageManager packageManagerService,
DevicePolicyManager devicePolicyManager, UserManager userManager) { DevicePolicyManager devicePolicyManager, UserManager userManager) {
super(packageManager, userManager); super(packageManager, userManager);
mPermissions = permissions; mPermissions = permissions;

View File

@@ -20,6 +20,7 @@ import android.app.admin.DevicePolicyManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ComponentInfo; import android.content.pm.ComponentInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
@@ -27,7 +28,6 @@ import android.os.RemoteException;
import android.os.UserManager; import android.os.UserManager;
import android.util.ArraySet; import android.util.ArraySet;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList; import java.util.ArrayList;
@@ -38,12 +38,12 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide
private final Context mContext; private final Context mContext;
private final PackageManagerWrapper mPm; private final PackageManagerWrapper mPm;
private final IPackageManagerWrapper mPms; private final IPackageManager mPms;
private final DevicePolicyManager mDpm; private final DevicePolicyManager mDpm;
private final UserManager mUm; private final UserManager mUm;
public ApplicationFeatureProviderImpl(Context context, PackageManagerWrapper pm, public ApplicationFeatureProviderImpl(Context context, PackageManagerWrapper pm,
IPackageManagerWrapper pms, DevicePolicyManager dpm) { IPackageManager pms, DevicePolicyManager dpm) {
mContext = context.getApplicationContext(); mContext = context.getApplicationContext();
mPm = pm; mPm = pm;
mPms = pms; mPms = pms;
@@ -149,7 +149,7 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide
CurrentUserAndManagedProfileAppWithAdminGrantedPermissionsCounter(Context context, CurrentUserAndManagedProfileAppWithAdminGrantedPermissionsCounter(Context context,
String[] permissions, PackageManagerWrapper packageManager, String[] permissions, PackageManagerWrapper packageManager,
IPackageManagerWrapper packageManagerService, IPackageManager packageManagerService,
DevicePolicyManager devicePolicyManager, NumberOfAppsCallback callback) { DevicePolicyManager devicePolicyManager, NumberOfAppsCallback callback) {
super(context, permissions, packageManager, packageManagerService, devicePolicyManager); super(context, permissions, packageManager, packageManagerService, devicePolicyManager);
mCallback = callback; mCallback = callback;
@@ -181,7 +181,7 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide
private ListOfAppsCallback mCallback; private ListOfAppsCallback mCallback;
CurrentUserAppWithAdminGrantedPermissionsLister(String[] permissions, CurrentUserAppWithAdminGrantedPermissionsLister(String[] permissions,
PackageManagerWrapper packageManager, IPackageManagerWrapper packageManagerService, PackageManagerWrapper packageManager, IPackageManager packageManagerService,
DevicePolicyManager devicePolicyManager, UserManager userManager, DevicePolicyManager devicePolicyManager, UserManager userManager,
ListOfAppsCallback callback) { ListOfAppsCallback callback) {
super(permissions, packageManager, packageManagerService, devicePolicyManager, super(permissions, packageManager, packageManagerService, devicePolicyManager,

View File

@@ -23,6 +23,7 @@ import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.content.res.Resources; import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
@@ -32,7 +33,6 @@ import android.view.View;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.vpn2.VpnUtils; import com.android.settings.vpn2.VpnUtils;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.Date; import java.util.Date;
@@ -44,13 +44,13 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
private final DevicePolicyManager mDpm; private final DevicePolicyManager mDpm;
private final PackageManagerWrapper mPm; private final PackageManagerWrapper mPm;
private final UserManager mUm; private final UserManager mUm;
private final ConnectivityManagerWrapper mCm; private final ConnectivityManager mCm;
private final Resources mResources; private final Resources mResources;
private static final int MY_USER_ID = UserHandle.myUserId(); private static final int MY_USER_ID = UserHandle.myUserId();
public EnterprisePrivacyFeatureProviderImpl(Context context, DevicePolicyManager dpm, public EnterprisePrivacyFeatureProviderImpl(Context context, DevicePolicyManager dpm,
PackageManagerWrapper pm, UserManager um, ConnectivityManagerWrapper cm, PackageManagerWrapper pm, UserManager um, ConnectivityManager cm,
Resources resources) { Resources resources) {
mContext = context.getApplicationContext(); mContext = context.getApplicationContext();
mDpm = dpm; mDpm = dpm;

View File

@@ -51,8 +51,6 @@ import com.android.settings.slices.SlicesFeatureProvider;
import com.android.settings.slices.SlicesFeatureProviderImpl; import com.android.settings.slices.SlicesFeatureProviderImpl;
import com.android.settings.users.UserFeatureProvider; import com.android.settings.users.UserFeatureProvider;
import com.android.settings.users.UserFeatureProviderImpl; import com.android.settings.users.UserFeatureProviderImpl;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -112,7 +110,7 @@ public class FeatureFactoryImpl extends FeatureFactory {
if (mApplicationFeatureProvider == null) { if (mApplicationFeatureProvider == null) {
mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(context, mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(context,
new PackageManagerWrapper(context.getPackageManager()), new PackageManagerWrapper(context.getPackageManager()),
new IPackageManagerWrapper(AppGlobals.getPackageManager()), AppGlobals.getPackageManager(),
(DevicePolicyManager) context (DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE)); .getSystemService(Context.DEVICE_POLICY_SERVICE));
} }
@@ -134,8 +132,7 @@ public class FeatureFactoryImpl extends FeatureFactory {
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE), (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE),
new PackageManagerWrapper(context.getPackageManager()), new PackageManagerWrapper(context.getPackageManager()),
UserManager.get(context), UserManager.get(context),
new ConnectivityManagerWrapper((ConnectivityManager) context (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE),
.getSystemService(Context.CONNECTIVITY_SERVICE)),
context.getResources()); context.getResources());
} }
return mEnterprisePrivacyFeatureProvider; return mEnterprisePrivacyFeatureProvider;

View File

@@ -27,7 +27,6 @@ import android.util.Log;
import com.android.internal.net.LegacyVpnInfo; import com.android.internal.net.LegacyVpnInfo;
import com.android.internal.net.VpnConfig; import com.android.internal.net.VpnConfig;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
/** /**
* Utility functions for vpn. * Utility functions for vpn.
@@ -89,7 +88,7 @@ public class VpnUtils {
ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); ServiceManager.getService(Context.CONNECTIVITY_SERVICE));
} }
public static boolean isAlwaysOnVpnSet(ConnectivityManagerWrapper cm, final int userId) { public static boolean isAlwaysOnVpnSet(ConnectivityManager cm, final int userId) {
return cm.getAlwaysOnVpnPackageForUser(userId) != null; return cm.getAlwaysOnVpnPackageForUser(userId) != null;
} }

View File

@@ -34,11 +34,10 @@ import android.widget.Toast;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.widget.SwitchWidgetController; import com.android.settings.widget.SwitchWidgetController;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.WirelessUtils; import com.android.settingslib.WirelessUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@@ -46,7 +45,7 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
private final SwitchWidgetController mSwitchWidget; private final SwitchWidgetController mSwitchWidget;
private final WifiManager mWifiManager; private final WifiManager mWifiManager;
private final ConnectivityManagerWrapper mConnectivityManager; private final ConnectivityManager mConnectivityManager;
private final MetricsFeatureProvider mMetricsFeatureProvider; private final MetricsFeatureProvider mMetricsFeatureProvider;
private Context mContext; private Context mContext;
@@ -81,20 +80,20 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
public WifiEnabler(Context context, SwitchWidgetController switchWidget, public WifiEnabler(Context context, SwitchWidgetController switchWidget,
MetricsFeatureProvider metricsFeatureProvider) { MetricsFeatureProvider metricsFeatureProvider) {
this(context, switchWidget, metricsFeatureProvider, new ConnectivityManagerWrapper( this(context, switchWidget, metricsFeatureProvider,
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE))); (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
} }
@VisibleForTesting @VisibleForTesting
WifiEnabler(Context context, SwitchWidgetController switchWidget, WifiEnabler(Context context, SwitchWidgetController switchWidget,
MetricsFeatureProvider metricsFeatureProvider, MetricsFeatureProvider metricsFeatureProvider,
ConnectivityManagerWrapper connectivityManagerWrapper) { ConnectivityManager connectivityManager) {
mContext = context; mContext = context;
mSwitchWidget = switchWidget; mSwitchWidget = switchWidget;
mSwitchWidget.setListener(this); mSwitchWidget.setListener(this);
mMetricsFeatureProvider = metricsFeatureProvider; mMetricsFeatureProvider = metricsFeatureProvider;
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
mConnectivityManager = connectivityManagerWrapper; mConnectivityManager = connectivityManager;
mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
// The order matters! We really should not depend on this. :( // The order matters! We really should not depend on this. :(

View File

@@ -64,7 +64,6 @@ import com.android.settings.search.SearchIndexableRaw;
import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener; import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener;
import com.android.settings.widget.SwitchBarController; import com.android.settings.widget.SwitchBarController;
import com.android.settings.wifi.details.WifiNetworkDetailsFragment; import com.android.settings.wifi.details.WifiNetworkDetailsFragment;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.AccessPoint.AccessPointListener; import com.android.settingslib.wifi.AccessPoint.AccessPointListener;
@@ -852,9 +851,7 @@ public class WifiSettings extends RestrictedSettingsFragment
pref.getAccessPoint().saveWifiState(pref.getExtras()); pref.getAccessPoint().saveWifiState(pref.getExtras());
if (mCaptivePortalNetworkCallback != null if (mCaptivePortalNetworkCallback != null
&& mCaptivePortalNetworkCallback.isCaptivePortal()) { && mCaptivePortalNetworkCallback.isCaptivePortal()) {
ConnectivityManagerWrapper connectivityManagerWrapper = mConnectivityManager.startCaptivePortalApp(
new ConnectivityManagerWrapper(mConnectivityManager);
connectivityManagerWrapper.startCaptivePortalApp(
mCaptivePortalNetworkCallback.getNetwork()); mCaptivePortalNetworkCallback.getNetwork());
} else { } else {
launchNetworkDetailsFragment(pref); launchNetworkDetailsFragment(pref);

View File

@@ -48,6 +48,7 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Toast; import android.widget.Toast;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R; import com.android.settings.R;
@@ -60,7 +61,6 @@ import com.android.settings.wifi.WifiDetailPreference;
import com.android.settings.wifi.WifiDialog; import com.android.settings.wifi.WifiDialog;
import com.android.settings.wifi.WifiDialog.WifiDialogListener; import com.android.settings.wifi.WifiDialog.WifiDialogListener;
import com.android.settings.wifi.WifiUtils; import com.android.settings.wifi.WifiUtils;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -68,6 +68,7 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnResume;
import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint;
import java.net.Inet4Address; import java.net.Inet4Address;
import java.net.Inet6Address; import java.net.Inet6Address;
import java.net.InetAddress; import java.net.InetAddress;
@@ -114,7 +115,6 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
static final String KEY_IPV6_ADDRESSES_PREF = "ipv6_addresses"; static final String KEY_IPV6_ADDRESSES_PREF = "ipv6_addresses";
private AccessPoint mAccessPoint; private AccessPoint mAccessPoint;
private final ConnectivityManagerWrapper mConnectivityManagerWrapper;
private final ConnectivityManager mConnectivityManager; private final ConnectivityManager mConnectivityManager;
private final Fragment mFragment; private final Fragment mFragment;
private final Handler mHandler; private final Handler mHandler;
@@ -152,10 +152,10 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
switch (intent.getAction()) { switch (intent.getAction()) {
case WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION: case WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION:
if (!intent.getBooleanExtra(WifiManager.EXTRA_MULTIPLE_NETWORKS_CHANGED, if (!intent.getBooleanExtra(WifiManager.EXTRA_MULTIPLE_NETWORKS_CHANGED,
false /* defaultValue */)) { false /* defaultValue */)) {
// only one network changed // only one network changed
WifiConfiguration wifiConfiguration = intent WifiConfiguration wifiConfiguration = intent
.getParcelableExtra(WifiManager.EXTRA_WIFI_CONFIGURATION); .getParcelableExtra(WifiManager.EXTRA_WIFI_CONFIGURATION);
if (mAccessPoint.matches(wifiConfiguration)) { if (mAccessPoint.matches(wifiConfiguration)) {
mWifiConfig = wifiConfiguration; mWifiConfig = wifiConfiguration;
} }
@@ -215,7 +215,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
public static WifiDetailPreferenceController newInstance( public static WifiDetailPreferenceController newInstance(
AccessPoint accessPoint, AccessPoint accessPoint,
ConnectivityManagerWrapper connectivityManagerWrapper, ConnectivityManager connectivityManager,
Context context, Context context,
Fragment fragment, Fragment fragment,
Handler handler, Handler handler,
@@ -223,14 +223,14 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
WifiManager wifiManager, WifiManager wifiManager,
MetricsFeatureProvider metricsFeatureProvider) { MetricsFeatureProvider metricsFeatureProvider) {
return new WifiDetailPreferenceController( return new WifiDetailPreferenceController(
accessPoint, connectivityManagerWrapper, context, fragment, handler, lifecycle, accessPoint, connectivityManager, context, fragment, handler, lifecycle,
wifiManager, metricsFeatureProvider, new IconInjector(context)); wifiManager, metricsFeatureProvider, new IconInjector(context));
} }
@VisibleForTesting @VisibleForTesting
/* package */ WifiDetailPreferenceController( /* package */ WifiDetailPreferenceController(
AccessPoint accessPoint, AccessPoint accessPoint,
ConnectivityManagerWrapper connectivityManagerWrapper, ConnectivityManager connectivityManager,
Context context, Context context,
Fragment fragment, Fragment fragment,
Handler handler, Handler handler,
@@ -241,8 +241,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
super(context); super(context);
mAccessPoint = accessPoint; mAccessPoint = accessPoint;
mConnectivityManager = connectivityManagerWrapper.getConnectivityManager(); mConnectivityManager = connectivityManager;
mConnectivityManagerWrapper = connectivityManagerWrapper;
mFragment = fragment; mFragment = fragment;
mHandler = handler; mHandler = handler;
mSignalStr = context.getResources().getStringArray(R.array.wifi_signal); mSignalStr = context.getResources().getStringArray(R.array.wifi_signal);
@@ -326,7 +325,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mNetworkCapabilities = mConnectivityManager.getNetworkCapabilities(mNetwork); mNetworkCapabilities = mConnectivityManager.getNetworkCapabilities(mNetwork);
updateInfo(); updateInfo();
mContext.registerReceiver(mReceiver, mFilter); mContext.registerReceiver(mReceiver, mFilter);
mConnectivityManagerWrapper.registerNetworkCallback(mNetworkRequest, mNetworkCallback, mConnectivityManager.registerNetworkCallback(mNetworkRequest, mNetworkCallback,
mHandler); mHandler);
} }
@@ -486,7 +485,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private static String ipv4PrefixLengthToSubnetMask(int prefixLength) { private static String ipv4PrefixLengthToSubnetMask(int prefixLength) {
try { try {
InetAddress all = InetAddress.getByAddress( InetAddress all = InetAddress.getByAddress(
new byte[]{(byte) 255, (byte) 255, (byte) 255, (byte) 255}); new byte[] {(byte) 255, (byte) 255, (byte) 255, (byte) 255});
return NetworkUtils.getNetworkPart(all, prefixLength).getHostAddress(); return NetworkUtils.getNetworkPart(all, prefixLength).getHostAddress();
} catch (UnknownHostException e) { } catch (UnknownHostException e) {
return null; return null;
@@ -538,7 +537,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private void signIntoNetwork() { private void signIntoNetwork() {
mMetricsFeatureProvider.action( mMetricsFeatureProvider.action(
mFragment.getActivity(), MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN); mFragment.getActivity(), MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN);
mConnectivityManagerWrapper.startCaptivePortalApp(mNetwork); mConnectivityManager.startCaptivePortalApp(mNetwork);
} }
@Override @Override

View File

@@ -20,13 +20,10 @@ import static com.android.settings.wifi.WifiSettings.WIFI_DIALOG_ID;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkPolicyManager;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.support.v7.preference.DropDownPreference;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
@@ -37,13 +34,11 @@ import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.wifi.WifiConfigUiBase; import com.android.settings.wifi.WifiConfigUiBase;
import com.android.settings.wifi.WifiDialog; import com.android.settings.wifi.WifiDialog;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
/** /**
@@ -126,10 +121,10 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
@Override @Override
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
final List<AbstractPreferenceController> controllers = new ArrayList<>(); final List<AbstractPreferenceController> controllers = new ArrayList<>();
ConnectivityManager cm = context.getSystemService(ConnectivityManager.class); final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance( mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance(
mAccessPoint, mAccessPoint,
new ConnectivityManagerWrapper(cm), cm,
context, context,
this, this,
new Handler(Looper.getMainLooper()), // UI thread. new Handler(Looper.getMainLooper()), // UI thread.

View File

@@ -1,98 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.wrapper;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
import android.net.Network;
import android.net.NetworkRequest;
import android.os.Handler;
import android.net.ProxyInfo;
/**
* 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 class ConnectivityManagerWrapper {
private final ConnectivityManager mCm;
public ConnectivityManagerWrapper(ConnectivityManager cm) {
mCm = cm;
}
/**
* Returns the real ConnectivityManager object wrapped by this wrapper.
*/
public ConnectivityManager getConnectivityManager() {
return mCm;
}
/**
* Calls {@code ConnectivityManager.getAlwaysOnVpnPackageForUser()}.
*
* @see android.net.ConnectivityManager#getAlwaysOnVpnPackageForUser
*/
public String getAlwaysOnVpnPackageForUser(int userId) {
return mCm.getAlwaysOnVpnPackageForUser(userId);
}
/**
* Calls {@code ConnectivityManager.getGlobalProxy()}.
*
* @see android.net.ConnectivityManager#getGlobalProxy
*/
public ProxyInfo getGlobalProxy() {
return mCm.getGlobalProxy();
}
/**
* Calls {@code ConnectivityManager.registerNetworkCallback()}.
*
* This is part of the ConnectivityManager public API in SDK 26 or above, but is not yet visible
* to the robolectric tests, which currently build with SDK 23.
* TODO: delete this once the robolectric tests build with SDK 26 or above.
*
* @see android.net.ConnectivityManager#registerNetworkCallback(NetworkRequest,NetworkCallback,Handler)
*/
public void registerNetworkCallback(NetworkRequest request, NetworkCallback callback,
Handler handler) {
mCm.registerNetworkCallback(request, callback, handler);
}
/**
* Calls {@code ConnectivityManager.startCaptivePortalApp()}.
*
* This is part of the ConnectivityManager public API in SDK 26 or above, but is not yet visible
* to the robolectric tests, which currently build with SDK 23.
* TODO: delete this once the robolectric tests build with SDK 26 or above.
*
* @see android.net.ConnectivityManager#startCaptivePortalApp(Network)
*/
public void startCaptivePortalApp(Network network) {
mCm.startCaptivePortalApp(network);
}
/**
* {@link ConnectivityManager#stopTethering}
*/
public void stopTethering(int type) {
mCm.stopTethering(type);
}
}

View File

@@ -1,97 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.wrapper;
import android.content.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 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 class IPackageManagerWrapper {
private final IPackageManager mPms;
public IPackageManagerWrapper(IPackageManager pms) {
mPms = pms;
}
/**
* Calls {@code IPackageManager.checkUidPermission()}.
*
* @see android.content.pm.IPackageManager#checkUidPermission
*/
public int checkUidPermission(String permName, int uid) throws RemoteException {
return mPms.checkUidPermission(permName, uid);
}
/**
* Calls {@code IPackageManager.findPersistentPreferredActivity()}.
*
* @see android.content.pm.IPackageManager#findPersistentPreferredActivity
*/
public ResolveInfo findPersistentPreferredActivity(Intent intent, int userId)
throws RemoteException {
return mPms.findPersistentPreferredActivity(intent, userId);
}
/**
* Calls {@code IPackageManager.getPackageInfo()}.
*
* @see android.content.pm.IPackageManager#getPackageInfo
*/
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
*/
public String[] getAppOpPermissionPackages(String permissionName) throws RemoteException {
return mPms.getAppOpPermissionPackages(permissionName);
}
/**
* Calls {@code IPackageManager.isPackageAvailable()}.
*
* @see android.content.pm.IPackageManager#isPackageAvailable
*/
public boolean isPackageAvailable(String packageName, int userId) throws RemoteException {
return mPms.isPackageAvailable(packageName, userId);
}
/**
* Calls {@code IPackageManager.getPackagesHoldingPermissions()}.
*
* @see android.content.pm.IPackageManager#getPackagesHoldingPermissions
*/
public ParceledListSlice<PackageInfo> getPackagesHoldingPermissions(
String[] permissions, int flags, int userId) throws RemoteException {
return mPms.getPackagesHoldingPermissions(permissions, flags, userId);
}
}

View File

@@ -23,11 +23,11 @@ import static org.mockito.Mockito.when;
import android.Manifest; import android.Manifest;
import android.app.AppOpsManager; import android.app.AppOpsManager;
import android.content.Context; import android.content.Context;
import android.content.pm.IPackageManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.UserManager; import android.os.UserManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.applications.ApplicationsState.AppEntry;
import org.junit.Before; import org.junit.Before;
@@ -41,7 +41,7 @@ public final class AppStateAppOpsBridgeTest {
@Mock private Context mContext; @Mock private Context mContext;
@Mock private UserManager mUserManager; @Mock private UserManager mUserManager;
@Mock private IPackageManagerWrapper mPackageManagerService; @Mock private IPackageManager mPackageManagerService;
@Mock private AppOpsManager mAppOpsManager; @Mock private AppOpsManager mAppOpsManager;
@Before @Before

View File

@@ -29,6 +29,7 @@ import static org.mockito.Mockito.when;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.os.Build; import android.os.Build;
@@ -37,7 +38,6 @@ import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
import org.junit.Before; import org.junit.Before;
@@ -81,7 +81,7 @@ public final class AppWithAdminGrantedPermissionsCounterTest {
@Mock @Mock
private PackageManagerWrapper mPackageManager; private PackageManagerWrapper mPackageManager;
@Mock @Mock
private IPackageManagerWrapper mPackageManagerService; private IPackageManager mPackageManagerService;
@Mock @Mock
private DevicePolicyManager mDevicePolicyManager; private DevicePolicyManager mDevicePolicyManager;

View File

@@ -27,6 +27,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.os.Build; import android.os.Build;
@@ -34,7 +35,6 @@ import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
import org.junit.Before; import org.junit.Before;
@@ -78,7 +78,7 @@ public final class AppWithAdminGrantedPermissionsListerTest {
@Mock @Mock
private PackageManagerWrapper mPackageManager; private PackageManagerWrapper mPackageManager;
@Mock @Mock
private IPackageManagerWrapper mPackageManagerService; private IPackageManager mPackageManagerService;
@Mock @Mock
private DevicePolicyManager mDevicePolicyManager; private DevicePolicyManager mDevicePolicyManager;

View File

@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
@@ -33,7 +34,6 @@ import android.os.UserManager;
import com.android.settings.testutils.ApplicationTestUtils; import com.android.settings.testutils.ApplicationTestUtils;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.IPackageManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
import org.junit.Before; import org.junit.Before;
@@ -72,7 +72,7 @@ public final class ApplicationFeatureProviderImplTest {
@Mock @Mock
private PackageManagerWrapper mPackageManager; private PackageManagerWrapper mPackageManager;
@Mock @Mock
private IPackageManagerWrapper mPackageManagerService; private IPackageManager mPackageManagerService;
@Mock @Mock
private DevicePolicyManager mDevicePolicyManager; private DevicePolicyManager mDevicePolicyManager;

View File

@@ -28,6 +28,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.content.res.Resources; import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.ProxyInfo; import android.net.ProxyInfo;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
@@ -36,7 +37,6 @@ import android.text.SpannableStringBuilder;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.wrapper.PackageManagerWrapper; import com.android.settingslib.wrapper.PackageManagerWrapper;
import org.junit.Before; import org.junit.Before;
@@ -72,7 +72,7 @@ public class EnterprisePrivacyFeatureProviderImplTest {
private @Mock PackageManagerWrapper mPackageManagerWrapper; private @Mock PackageManagerWrapper mPackageManagerWrapper;
private @Mock PackageManager mPackageManager; private @Mock PackageManager mPackageManager;
private @Mock UserManager mUserManager; private @Mock UserManager mUserManager;
private @Mock ConnectivityManagerWrapper mConnectivityManger; private @Mock ConnectivityManager mConnectivityManger;
private Resources mResources; private Resources mResources;
private EnterprisePrivacyFeatureProvider mProvider; private EnterprisePrivacyFeatureProvider mProvider;

View File

@@ -20,8 +20,9 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.net.ConnectivityManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -30,7 +31,7 @@ import org.junit.runner.RunWith;
public final class VpnUtilsTest { public final class VpnUtilsTest {
@Test @Test
public void testIsAlwaysOnVpnSet() { public void testIsAlwaysOnVpnSet() {
final ConnectivityManagerWrapper cm = mock(ConnectivityManagerWrapper.class); final ConnectivityManager cm = mock(ConnectivityManager.class);
when(cm.getAlwaysOnVpnPackageForUser(0)).thenReturn("com.example.vpn"); when(cm.getAlwaysOnVpnPackageForUser(0)).thenReturn("com.example.vpn");
assertThat(VpnUtils.isAlwaysOnVpnSet(cm, 0)).isTrue(); assertThat(VpnUtils.isAlwaysOnVpnSet(cm, 0)).isTrue();

View File

@@ -26,7 +26,6 @@ import android.net.wifi.WifiManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.widget.SwitchWidgetController; import com.android.settings.widget.SwitchWidgetController;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import org.junit.Before; import org.junit.Before;
@@ -43,7 +42,7 @@ public class WifiEnablerTest {
@Mock @Mock
private WifiManager mWifiManager; private WifiManager mWifiManager;
@Mock @Mock
private ConnectivityManagerWrapper mConnectivityManager; private ConnectivityManager mConnectivityManager;
private WifiEnabler mEnabler; private WifiEnabler mEnabler;
@@ -52,7 +51,7 @@ public class WifiEnablerTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager);
mEnabler = new WifiEnabler(mContext, mock(SwitchWidgetController.class), mEnabler = new WifiEnabler(mContext, mock(SwitchWidgetController.class),
mock(MetricsFeatureProvider.class), mConnectivityManager); mock(MetricsFeatureProvider.class), mConnectivityManager);
} }
@Test @Test

View File

@@ -51,7 +51,6 @@ import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Handler; import android.os.Handler;
import android.provider.Settings; import android.provider.Settings;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import android.view.View; import android.view.View;
@@ -70,7 +69,6 @@ import com.android.settings.widget.ActionButtonPreference;
import com.android.settings.widget.ActionButtonPreferenceTest; import com.android.settings.widget.ActionButtonPreferenceTest;
import com.android.settings.widget.EntityHeaderController; import com.android.settings.widget.EntityHeaderController;
import com.android.settings.wifi.WifiDetailPreference; import com.android.settings.wifi.WifiDetailPreference;
import com.android.settings.wrapper.ConnectivityManagerWrapper;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint;
@@ -91,7 +89,6 @@ import java.net.Inet4Address;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@@ -119,8 +116,6 @@ public class WifiDetailPreferenceControllerTest {
@Mock @Mock
private ConnectivityManager mockConnectivityManager; private ConnectivityManager mockConnectivityManager;
@Mock @Mock
private ConnectivityManagerWrapper mockConnectivityManagerWrapper;
@Mock
private Network mockNetwork; private Network mockNetwork;
@Mock @Mock
private NetworkInfo mockNetworkInfo; private NetworkInfo mockNetworkInfo;
@@ -173,8 +168,6 @@ public class WifiDetailPreferenceControllerTest {
private ArgumentCaptor<NetworkCallback> mCallbackCaptor; private ArgumentCaptor<NetworkCallback> mCallbackCaptor;
@Captor @Captor
private ArgumentCaptor<View.OnClickListener> mForgetClickListener; private ArgumentCaptor<View.OnClickListener> mForgetClickListener;
@Captor
private ArgumentCaptor<Preference> mIpv6AddressCaptor;
private Context mContext; private Context mContext;
private Lifecycle mLifecycle; private Lifecycle mLifecycle;
@@ -245,12 +238,9 @@ public class WifiDetailPreferenceControllerTest {
when(mockAccessPoint.getConfig()).thenReturn(mockWifiConfig); when(mockAccessPoint.getConfig()).thenReturn(mockWifiConfig);
when(mockAccessPoint.getLevel()).thenReturn(LEVEL); when(mockAccessPoint.getLevel()).thenReturn(LEVEL);
when(mockAccessPoint.getSecurityString(false)).thenReturn(SECURITY); when(mockAccessPoint.getSecurityString(false)).thenReturn(SECURITY);
when(mockConnectivityManagerWrapper.getConnectivityManager())
.thenReturn(mockConnectivityManager);
when(mockConnectivityManager.getNetworkInfo(any(Network.class))) when(mockConnectivityManager.getNetworkInfo(any(Network.class)))
.thenReturn(mockNetworkInfo); .thenReturn(mockNetworkInfo);
doNothing().when(mockConnectivityManagerWrapper).registerNetworkCallback( doNothing().when(mockConnectivityManager).registerNetworkCallback(
nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class)); nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class));
mockButtonsPref = ActionButtonPreferenceTest.createMock(); mockButtonsPref = ActionButtonPreferenceTest.createMock();
when(mockButtonsPref.setButton1OnClickListener(mForgetClickListener.capture())) when(mockButtonsPref.setButton1OnClickListener(mForgetClickListener.capture()))
@@ -281,7 +271,7 @@ public class WifiDetailPreferenceControllerTest {
private WifiDetailPreferenceController newWifiDetailPreferenceController() { private WifiDetailPreferenceController newWifiDetailPreferenceController() {
return new WifiDetailPreferenceController( return new WifiDetailPreferenceController(
mockAccessPoint, mockAccessPoint,
mockConnectivityManagerWrapper, mockConnectivityManager,
mContext, mContext,
mockFragment, mockFragment,
null, // Handler null, // Handler
@@ -362,7 +352,7 @@ public class WifiDetailPreferenceControllerTest {
public void networkCallback_shouldBeRegisteredOnResume() { public void networkCallback_shouldBeRegisteredOnResume() {
displayAndResume(); displayAndResume();
verify(mockConnectivityManagerWrapper, times(1)).registerNetworkCallback( verify(mockConnectivityManager, times(1)).registerNetworkCallback(
nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class)); nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class));
} }
@@ -779,8 +769,6 @@ public class WifiDetailPreferenceControllerTest {
displayAndResume(); displayAndResume();
List<Preference> addrs = mIpv6AddressCaptor.getAllValues();
String expectedAddresses = String.join("\n", String expectedAddresses = String.join("\n",
asString(Constants.IPV6_LINKLOCAL), asString(Constants.IPV6_LINKLOCAL),
asString(Constants.IPV6_GLOBAL1), asString(Constants.IPV6_GLOBAL1),
@@ -826,7 +814,7 @@ public class WifiDetailPreferenceControllerTest {
ArgumentCaptor<OnClickListener> captor = ArgumentCaptor.forClass(OnClickListener.class); ArgumentCaptor<OnClickListener> captor = ArgumentCaptor.forClass(OnClickListener.class);
verify(mockButtonsPref).setButton2OnClickListener(captor.capture()); verify(mockButtonsPref).setButton2OnClickListener(captor.capture());
captor.getValue().onClick(null); captor.getValue().onClick(null);
verify(mockConnectivityManagerWrapper).startCaptivePortalApp(mockNetwork); verify(mockConnectivityManager).startCaptivePortalApp(mockNetwork);
verify(mockMetricsFeatureProvider) verify(mockMetricsFeatureProvider)
.action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN); .action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN);
} }