Replace INetworkPolicyManager to NetworkPolicyManager

Connectivity service is going to become a mainline module which
will not able to access hidden APIs. Thus, use formal API
Context#getSystemService() to get network policy service instead
of hidden API ServiceManager#getService().

Bug: 170598012
Test: atest FrameworksNetTests FrameworksNetIntegrationTests
Change-Id: I4f286264b5800b2b922f85a76ddd20d64d53000a
This commit is contained in:
paulhu
2020-12-29 18:15:13 +08:00
committed by Aaron Huang
parent 68b68900aa
commit 9a9f71bbc8
4 changed files with 14 additions and 30 deletions

View File

@@ -95,7 +95,6 @@ import android.net.INetworkManagementEventObserver;
import android.net.INetworkMonitor; import android.net.INetworkMonitor;
import android.net.INetworkMonitorCallbacks; import android.net.INetworkMonitorCallbacks;
import android.net.INetworkPolicyListener; import android.net.INetworkPolicyListener;
import android.net.INetworkPolicyManager;
import android.net.INetworkStatsService; import android.net.INetworkStatsService;
import android.net.ISocketKeepaliveCallback; import android.net.ISocketKeepaliveCallback;
import android.net.InetAddresses; import android.net.InetAddresses;
@@ -336,7 +335,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
@VisibleForTesting @VisibleForTesting
protected INetd mNetd; protected INetd mNetd;
private INetworkStatsService mStatsService; private INetworkStatsService mStatsService;
private INetworkPolicyManager mPolicyManager; private NetworkPolicyManager mPolicyManager;
private NetworkPolicyManagerInternal mPolicyManagerInternal; private NetworkPolicyManagerInternal mPolicyManagerInternal;
/** /**
@@ -945,15 +944,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
public ConnectivityService(Context context, INetworkManagementService netManager, public ConnectivityService(Context context, INetworkManagementService netManager,
INetworkStatsService statsService, INetworkPolicyManager policyManager) { INetworkStatsService statsService) {
this(context, netManager, statsService, policyManager, getDnsResolver(context), this(context, netManager, statsService, getDnsResolver(context), new IpConnectivityLog(),
new IpConnectivityLog(), NetdService.getInstance(), new Dependencies()); NetdService.getInstance(), new Dependencies());
} }
@VisibleForTesting @VisibleForTesting
protected ConnectivityService(Context context, INetworkManagementService netManager, protected ConnectivityService(Context context, INetworkManagementService netManager,
INetworkStatsService statsService, INetworkPolicyManager policyManager, INetworkStatsService statsService, IDnsResolver dnsresolver, IpConnectivityLog logger,
IDnsResolver dnsresolver, IpConnectivityLog logger, INetd netd, Dependencies deps) { INetd netd, Dependencies deps) {
if (DBG) log("ConnectivityService starting up"); if (DBG) log("ConnectivityService starting up");
mDeps = Objects.requireNonNull(deps, "missing Dependencies"); mDeps = Objects.requireNonNull(deps, "missing Dependencies");
@@ -991,7 +990,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
mNMS = Objects.requireNonNull(netManager, "missing INetworkManagementService"); mNMS = Objects.requireNonNull(netManager, "missing INetworkManagementService");
mStatsService = Objects.requireNonNull(statsService, "missing INetworkStatsService"); mStatsService = Objects.requireNonNull(statsService, "missing INetworkStatsService");
mPolicyManager = Objects.requireNonNull(policyManager, "missing INetworkPolicyManager"); mPolicyManager = mContext.getSystemService(NetworkPolicyManager.class);
mPolicyManagerInternal = Objects.requireNonNull( mPolicyManagerInternal = Objects.requireNonNull(
LocalServices.getService(NetworkPolicyManagerInternal.class), LocalServices.getService(NetworkPolicyManagerInternal.class),
"missing NetworkPolicyManagerInternal"); "missing NetworkPolicyManagerInternal");
@@ -1007,12 +1006,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// To ensure uid rules are synchronized with Network Policy, register for // To ensure uid rules are synchronized with Network Policy, register for
// NetworkPolicyManagerService events must happen prior to NetworkPolicyManagerService // NetworkPolicyManagerService events must happen prior to NetworkPolicyManagerService
// reading existing policy from disk. // reading existing policy from disk.
try {
mPolicyManager.registerListener(mPolicyListener); mPolicyManager.registerListener(mPolicyListener);
} catch (RemoteException e) {
// ouch, no rules updates means some processes may never get network
loge("unable to register INetworkPolicyListener" + e);
}
final PowerManager powerManager = (PowerManager) context.getSystemService( final PowerManager powerManager = (PowerManager) context.getSystemService(
Context.POWER_SERVICE); Context.POWER_SERVICE);

View File

@@ -20,7 +20,6 @@ import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_HIGH;
import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL; import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL;
import android.content.Context; import android.content.Context;
import android.net.INetworkPolicyManager;
import android.net.INetworkStatsService; import android.net.INetworkStatsService;
import android.os.INetworkManagementService; import android.os.INetworkManagementService;
import android.os.ServiceManager; import android.os.ServiceManager;
@@ -38,7 +37,7 @@ public final class ConnectivityServiceInitializer extends SystemService {
super(context); super(context);
// TODO: Define formal APIs to get the needed services. // TODO: Define formal APIs to get the needed services.
mConnectivity = new ConnectivityService(context, getNetworkManagementService(), mConnectivity = new ConnectivityService(context, getNetworkManagementService(),
getNetworkStatsService(), getNetworkPolicyManager()); getNetworkStatsService());
} }
@Override @Override
@@ -57,10 +56,4 @@ public final class ConnectivityServiceInitializer extends SystemService {
return INetworkStatsService.Stub.asInterface( return INetworkStatsService.Stub.asInterface(
ServiceManager.getService(Context.NETWORK_STATS_SERVICE)); ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
} }
private INetworkPolicyManager getNetworkPolicyManager() {
return INetworkPolicyManager.Stub.asInterface(
ServiceManager.getService(Context.NETWORK_POLICY_SERVICE));
}
} }

View File

@@ -25,7 +25,6 @@ import android.content.ServiceConnection
import android.net.ConnectivityManager import android.net.ConnectivityManager
import android.net.IDnsResolver import android.net.IDnsResolver
import android.net.INetd import android.net.INetd
import android.net.INetworkPolicyManager
import android.net.INetworkStatsService import android.net.INetworkStatsService
import android.net.LinkProperties import android.net.LinkProperties
import android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL import android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL
@@ -88,8 +87,6 @@ class ConnectivityServiceIntegrationTest {
@Mock @Mock
private lateinit var statsService: INetworkStatsService private lateinit var statsService: INetworkStatsService
@Mock @Mock
private lateinit var policyManager: INetworkPolicyManager
@Mock
private lateinit var log: IpConnectivityLog private lateinit var log: IpConnectivityLog
@Mock @Mock
private lateinit var netd: INetd private lateinit var netd: INetd
@@ -171,7 +168,7 @@ class ConnectivityServiceIntegrationTest {
} }
private inner class TestConnectivityService(deps: Dependencies) : ConnectivityService( private inner class TestConnectivityService(deps: Dependencies) : ConnectivityService(
context, netManager, statsService, policyManager, dnsResolver, log, netd, deps) context, netManager, statsService, dnsResolver, log, netd, deps)
private fun makeDependencies(): ConnectivityService.Dependencies { private fun makeDependencies(): ConnectivityService.Dependencies {
val deps = spy(ConnectivityService.Dependencies()) val deps = spy(ConnectivityService.Dependencies())

View File

@@ -166,7 +166,6 @@ import android.net.INetd;
import android.net.INetworkMonitor; import android.net.INetworkMonitor;
import android.net.INetworkMonitorCallbacks; import android.net.INetworkMonitorCallbacks;
import android.net.INetworkPolicyListener; import android.net.INetworkPolicyListener;
import android.net.INetworkPolicyManager;
import android.net.INetworkStatsService; import android.net.INetworkStatsService;
import android.net.InetAddresses; import android.net.InetAddresses;
import android.net.InterfaceConfigurationParcel; import android.net.InterfaceConfigurationParcel;
@@ -183,6 +182,7 @@ import android.net.NetworkCapabilities;
import android.net.NetworkFactory; import android.net.NetworkFactory;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState; import android.net.NetworkInfo.DetailedState;
import android.net.NetworkPolicyManager;
import android.net.NetworkRequest; import android.net.NetworkRequest;
import android.net.NetworkSpecifier; import android.net.NetworkSpecifier;
import android.net.NetworkStack; import android.net.NetworkStack;
@@ -365,7 +365,6 @@ public class ConnectivityServiceTest {
@Mock INetworkManagementService mNetworkManagementService; @Mock INetworkManagementService mNetworkManagementService;
@Mock INetworkStatsService mStatsService; @Mock INetworkStatsService mStatsService;
@Mock IBatteryStats mBatteryStatsService; @Mock IBatteryStats mBatteryStatsService;
@Mock INetworkPolicyManager mNpm;
@Mock IDnsResolver mMockDnsResolver; @Mock IDnsResolver mMockDnsResolver;
@Mock INetd mMockNetd; @Mock INetd mMockNetd;
@Mock NetworkStackClient mNetworkStack; @Mock NetworkStackClient mNetworkStack;
@@ -380,6 +379,7 @@ public class ConnectivityServiceTest {
@Mock TelephonyManager mTelephonyManager; @Mock TelephonyManager mTelephonyManager;
@Mock MockableSystemProperties mSystemProperties; @Mock MockableSystemProperties mSystemProperties;
@Mock EthernetManager mEthernetManager; @Mock EthernetManager mEthernetManager;
@Mock NetworkPolicyManager mNetworkPolicyManager;
private ArgumentCaptor<ResolverParamsParcel> mResolverParamsParcelCaptor = private ArgumentCaptor<ResolverParamsParcel> mResolverParamsParcelCaptor =
ArgumentCaptor.forClass(ResolverParamsParcel.class); ArgumentCaptor.forClass(ResolverParamsParcel.class);
@@ -477,6 +477,7 @@ public class ConnectivityServiceTest {
if (Context.APP_OPS_SERVICE.equals(name)) return mAppOpsManager; if (Context.APP_OPS_SERVICE.equals(name)) return mAppOpsManager;
if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager; if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager;
if (Context.ETHERNET_SERVICE.equals(name)) return mEthernetManager; if (Context.ETHERNET_SERVICE.equals(name)) return mEthernetManager;
if (Context.NETWORK_POLICY_SERVICE.equals(name)) return mNetworkPolicyManager;
return super.getSystemService(name); return super.getSystemService(name);
} }
@@ -1326,7 +1327,6 @@ public class ConnectivityServiceTest {
mService = new ConnectivityService(mServiceContext, mService = new ConnectivityService(mServiceContext,
mNetworkManagementService, mNetworkManagementService,
mStatsService, mStatsService,
mNpm,
mMockDnsResolver, mMockDnsResolver,
mock(IpConnectivityLog.class), mock(IpConnectivityLog.class),
mMockNetd, mMockNetd,
@@ -1336,7 +1336,7 @@ public class ConnectivityServiceTest {
final ArgumentCaptor<INetworkPolicyListener> policyListenerCaptor = final ArgumentCaptor<INetworkPolicyListener> policyListenerCaptor =
ArgumentCaptor.forClass(INetworkPolicyListener.class); ArgumentCaptor.forClass(INetworkPolicyListener.class);
verify(mNpm).registerListener(policyListenerCaptor.capture()); verify(mNetworkPolicyManager).registerListener(policyListenerCaptor.capture());
mPolicyListener = policyListenerCaptor.getValue(); mPolicyListener = policyListenerCaptor.getValue();
// Create local CM before sending system ready so that we can answer // Create local CM before sending system ready so that we can answer