Loading api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,7 @@ package android.content { method public android.os.UserHandle getUser(); method public int getUserId(); method public void setAutofillCompatibilityEnabled(boolean); field public static final String TEST_NETWORK_SERVICE = "test_network"; } } Loading core/java/android/app/SystemServiceRegistry.java +26 −0 Original line number Diff line number Diff line Loading @@ -84,11 +84,13 @@ import android.net.IEthernetManager; import android.net.IIpMemoryStore; import android.net.IIpSecService; import android.net.INetworkPolicyManager; import android.net.ITestNetworkManager; import android.net.IpMemoryStore; import android.net.IpSecManager; import android.net.NetworkPolicyManager; import android.net.NetworkScoreManager; import android.net.NetworkWatchlistManager; import android.net.TestNetworkManager; import android.net.lowpan.ILowpanManager; import android.net.lowpan.LowpanManager; import android.net.nsd.INsdManager; Loading Loading @@ -126,6 +128,7 @@ import android.os.IUserManager; import android.os.IncidentManager; import android.os.PowerManager; import android.os.RecoverySystem; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager.ServiceNotFoundException; import android.os.SystemUpdateManager; Loading Loading @@ -315,6 +318,29 @@ final class SystemServiceRegistry { return new IpSecManager(ctx, service); }}); registerService( Context.TEST_NETWORK_SERVICE, TestNetworkManager.class, new StaticApplicationContextServiceFetcher<TestNetworkManager>() { @Override public TestNetworkManager createService(Context context) throws ServiceNotFoundException { IBinder csBinder = ServiceManager.getServiceOrThrow(Context.CONNECTIVITY_SERVICE); IConnectivityManager csMgr = IConnectivityManager.Stub.asInterface(csBinder); final IBinder tnBinder; try { tnBinder = csMgr.startOrGetTestNetworkService(); } catch (RemoteException e) { throw new ServiceNotFoundException(Context.TEST_NETWORK_SERVICE); } ITestNetworkManager tnMgr = ITestNetworkManager.Stub.asInterface(tnBinder); return new TestNetworkManager(context, tnMgr); } }); registerService(Context.COUNTRY_DETECTOR, CountryDetector.class, new StaticServiceFetcher<CountryDetector>() { @Override Loading core/java/android/content/Context.java +10 −0 Original line number Diff line number Diff line Loading @@ -3016,6 +3016,7 @@ public abstract class Context { CONNECTIVITY_SERVICE, //@hide: IP_MEMORY_STORE_SERVICE, IPSEC_SERVICE, TEST_NETWORK_SERVICE, //@hide: UPDATE_LOCK_SERVICE, //@hide: NETWORKMANAGEMENT_SERVICE, NETWORK_STATS_SERVICE, Loading Loading @@ -3537,6 +3538,15 @@ public abstract class Context { */ public static final String IPSEC_SERVICE = "ipsec"; /** * Use with {@link #getSystemService(String)} to retrieve a {@link * android.net.TestNetworkManager} for building TUNs and limited-use Networks * * @see #getSystemService(String) * @hide */ @TestApi public static final String TEST_NETWORK_SERVICE = "test_network"; /** * Use with {@link #getSystemService(String)} to retrieve a {@link * android.os.IUpdateLock} for managing runtime sequences that Loading core/java/android/net/IConnectivityManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -220,4 +220,6 @@ interface IConnectivityManager void registerTetheringEventCallback(ITetheringEventCallback callback, String callerPkg); void unregisterTetheringEventCallback(ITetheringEventCallback callback, String callerPkg); IBinder startOrGetTestNetworkService(); } services/core/java/com/android/server/ConnectivityService.java +27 −0 Original line number Diff line number Diff line Loading @@ -300,6 +300,15 @@ public class ConnectivityService extends IConnectivityManager.Stub private INetworkPolicyManager mPolicyManager; private NetworkPolicyManagerInternal mPolicyManagerInternal; /** * TestNetworkService (lazily) created upon first usage. Locked to prevent creation of multiple * instances. */ @GuardedBy("mTNSLock") private TestNetworkService mTNS; private final Object mTNSLock = new Object(); private String mCurrentTcpBufferSizes; private static final SparseArray<String> sMagicDecoderRing = MessageUtils.findMessageNames( Loading Loading @@ -6959,4 +6968,22 @@ public class ConnectivityService extends IConnectivityManager.Stub return vpn != null && vpn.getLockdown(); } } /** * Returns a IBinder to a TestNetworkService. Will be lazily created as needed. * * <p>The TestNetworkService must be run in the system server due to TUN creation. */ @Override public IBinder startOrGetTestNetworkService() { synchronized (mTNSLock) { TestNetworkService.enforceTestNetworkPermissions(mContext); if (mTNS == null) { mTNS = new TestNetworkService(mContext, mNMS); } return mTNS; } } } Loading
api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,7 @@ package android.content { method public android.os.UserHandle getUser(); method public int getUserId(); method public void setAutofillCompatibilityEnabled(boolean); field public static final String TEST_NETWORK_SERVICE = "test_network"; } } Loading
core/java/android/app/SystemServiceRegistry.java +26 −0 Original line number Diff line number Diff line Loading @@ -84,11 +84,13 @@ import android.net.IEthernetManager; import android.net.IIpMemoryStore; import android.net.IIpSecService; import android.net.INetworkPolicyManager; import android.net.ITestNetworkManager; import android.net.IpMemoryStore; import android.net.IpSecManager; import android.net.NetworkPolicyManager; import android.net.NetworkScoreManager; import android.net.NetworkWatchlistManager; import android.net.TestNetworkManager; import android.net.lowpan.ILowpanManager; import android.net.lowpan.LowpanManager; import android.net.nsd.INsdManager; Loading Loading @@ -126,6 +128,7 @@ import android.os.IUserManager; import android.os.IncidentManager; import android.os.PowerManager; import android.os.RecoverySystem; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager.ServiceNotFoundException; import android.os.SystemUpdateManager; Loading Loading @@ -315,6 +318,29 @@ final class SystemServiceRegistry { return new IpSecManager(ctx, service); }}); registerService( Context.TEST_NETWORK_SERVICE, TestNetworkManager.class, new StaticApplicationContextServiceFetcher<TestNetworkManager>() { @Override public TestNetworkManager createService(Context context) throws ServiceNotFoundException { IBinder csBinder = ServiceManager.getServiceOrThrow(Context.CONNECTIVITY_SERVICE); IConnectivityManager csMgr = IConnectivityManager.Stub.asInterface(csBinder); final IBinder tnBinder; try { tnBinder = csMgr.startOrGetTestNetworkService(); } catch (RemoteException e) { throw new ServiceNotFoundException(Context.TEST_NETWORK_SERVICE); } ITestNetworkManager tnMgr = ITestNetworkManager.Stub.asInterface(tnBinder); return new TestNetworkManager(context, tnMgr); } }); registerService(Context.COUNTRY_DETECTOR, CountryDetector.class, new StaticServiceFetcher<CountryDetector>() { @Override Loading
core/java/android/content/Context.java +10 −0 Original line number Diff line number Diff line Loading @@ -3016,6 +3016,7 @@ public abstract class Context { CONNECTIVITY_SERVICE, //@hide: IP_MEMORY_STORE_SERVICE, IPSEC_SERVICE, TEST_NETWORK_SERVICE, //@hide: UPDATE_LOCK_SERVICE, //@hide: NETWORKMANAGEMENT_SERVICE, NETWORK_STATS_SERVICE, Loading Loading @@ -3537,6 +3538,15 @@ public abstract class Context { */ public static final String IPSEC_SERVICE = "ipsec"; /** * Use with {@link #getSystemService(String)} to retrieve a {@link * android.net.TestNetworkManager} for building TUNs and limited-use Networks * * @see #getSystemService(String) * @hide */ @TestApi public static final String TEST_NETWORK_SERVICE = "test_network"; /** * Use with {@link #getSystemService(String)} to retrieve a {@link * android.os.IUpdateLock} for managing runtime sequences that Loading
core/java/android/net/IConnectivityManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -220,4 +220,6 @@ interface IConnectivityManager void registerTetheringEventCallback(ITetheringEventCallback callback, String callerPkg); void unregisterTetheringEventCallback(ITetheringEventCallback callback, String callerPkg); IBinder startOrGetTestNetworkService(); }
services/core/java/com/android/server/ConnectivityService.java +27 −0 Original line number Diff line number Diff line Loading @@ -300,6 +300,15 @@ public class ConnectivityService extends IConnectivityManager.Stub private INetworkPolicyManager mPolicyManager; private NetworkPolicyManagerInternal mPolicyManagerInternal; /** * TestNetworkService (lazily) created upon first usage. Locked to prevent creation of multiple * instances. */ @GuardedBy("mTNSLock") private TestNetworkService mTNS; private final Object mTNSLock = new Object(); private String mCurrentTcpBufferSizes; private static final SparseArray<String> sMagicDecoderRing = MessageUtils.findMessageNames( Loading Loading @@ -6959,4 +6968,22 @@ public class ConnectivityService extends IConnectivityManager.Stub return vpn != null && vpn.getLockdown(); } } /** * Returns a IBinder to a TestNetworkService. Will be lazily created as needed. * * <p>The TestNetworkService must be run in the system server due to TUN creation. */ @Override public IBinder startOrGetTestNetworkService() { synchronized (mTNSLock) { TestNetworkService.enforceTestNetworkPermissions(mContext); if (mTNS == null) { mTNS = new TestNetworkService(mContext, mNMS); } return mTNS; } } }