diff --git a/tests/cts/hostside/aidl/com/android/cts/net/hostside/IMyService.aidl b/tests/cts/hostside/aidl/com/android/cts/net/hostside/IMyService.aidl index fbbb68b747..28437c28a6 100644 --- a/tests/cts/hostside/aidl/com/android/cts/net/hostside/IMyService.aidl +++ b/tests/cts/hostside/aidl/com/android/cts/net/hostside/IMyService.aidl @@ -26,7 +26,7 @@ interface IMyService { String checkNetworkStatus(); String getRestrictBackgroundStatus(); void sendNotification(int notificationId, String notificationType); - void registerNetworkCallback(in INetworkCallback cb); + void registerNetworkCallback(in NetworkRequest request, in INetworkCallback cb); void unregisterNetworkCallback(); void scheduleJob(in JobInfo jobInfo); } diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java index 140d8cd0ab..f9454ad052 100644 --- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java @@ -49,6 +49,7 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo.DetailedState; import android.net.NetworkInfo.State; +import android.net.NetworkRequest; import android.os.BatteryManager; import android.os.Binder; import android.os.Bundle; @@ -750,8 +751,10 @@ public abstract class AbstractRestrictBackgroundNetworkTestCase { fail("app2 receiver is not ready"); } - protected void registerNetworkCallback(INetworkCallback cb) throws Exception { - mServiceClient.registerNetworkCallback(cb); + protected void registerNetworkCallback(final NetworkRequest request, INetworkCallback cb) + throws Exception { + Log.i(TAG, "Registering network callback for request: " + request); + mServiceClient.registerNetworkCallback(request, cb); } protected void unregisterNetworkCallback() throws Exception { diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/MyServiceClient.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/MyServiceClient.java index 1339be6e46..8b70f9b549 100644 --- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/MyServiceClient.java +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/MyServiceClient.java @@ -21,12 +21,11 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.net.NetworkRequest; import android.os.ConditionVariable; import android.os.IBinder; import android.os.RemoteException; -import com.android.cts.net.hostside.IMyService; - public class MyServiceClient { private static final int TIMEOUT_MS = 5000; private static final String PACKAGE = MyServiceClient.class.getPackage().getName(); @@ -94,12 +93,14 @@ public class MyServiceClient { return mService.getRestrictBackgroundStatus(); } - public void sendNotification(int notificationId, String notificationType) throws RemoteException { + public void sendNotification(int notificationId, String notificationType) + throws RemoteException { mService.sendNotification(notificationId, notificationType); } - public void registerNetworkCallback(INetworkCallback cb) throws RemoteException { - mService.registerNetworkCallback(cb); + public void registerNetworkCallback(final NetworkRequest request, INetworkCallback cb) + throws RemoteException { + mService.registerNetworkCallback(request, cb); } public void unregisterNetworkCallback() throws RemoteException { diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkCallbackTest.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkCallbackTest.java index 955317bbf6..36e2ffea08 100644 --- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkCallbackTest.java +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkCallbackTest.java @@ -19,6 +19,7 @@ package com.android.cts.net.hostside; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED; import static com.android.cts.net.hostside.NetworkPolicyTestUtils.canChangeActiveNetworkMeteredness; +import static com.android.cts.net.hostside.NetworkPolicyTestUtils.getActiveNetworkCapabilities; import static com.android.cts.net.hostside.NetworkPolicyTestUtils.setRestrictBackground; import static com.android.cts.net.hostside.Property.BATTERY_SAVER_MODE; import static com.android.cts.net.hostside.Property.DATA_SAVER_MODE; @@ -29,6 +30,7 @@ import static org.junit.Assume.assumeTrue; import android.net.Network; import android.net.NetworkCapabilities; +import android.net.NetworkRequest; import android.util.Log; import org.junit.After; @@ -195,11 +197,16 @@ public class NetworkCallbackTest extends AbstractRestrictBackgroundNetworkTestCa setBatterySaverMode(false); setRestrictBackground(false); + // Get transports of the active network, this has to be done before changing meteredness, + // since wifi will be disconnected when changing from non-metered to metered. + final NetworkCapabilities networkCapabilities = getActiveNetworkCapabilities(); + // Mark network as metered. mMeterednessConfiguration.configureNetworkMeteredness(true); // Register callback - registerNetworkCallback((INetworkCallback.Stub) mTestNetworkCallback); + registerNetworkCallback(new NetworkRequest.Builder() + .setCapabilities(networkCapabilities).build(), mTestNetworkCallback); // Wait for onAvailable() callback to ensure network is available before the test // and store the default network. mNetwork = mTestNetworkCallback.expectAvailableCallbackAndGetNetwork(); diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkPolicyTestUtils.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkPolicyTestUtils.java index 9d1d4188ca..7da1a212ad 100644 --- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkPolicyTestUtils.java +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/NetworkPolicyTestUtils.java @@ -208,7 +208,7 @@ public class NetworkPolicyTestUtils { } } - private static NetworkCapabilities getActiveNetworkCapabilities() { + static NetworkCapabilities getActiveNetworkCapabilities() { final Network activeNetwork = getConnectivityManager().getActiveNetwork(); assertNotNull("No active network available", activeNetwork); return getConnectivityManager().getNetworkCapabilities(activeNetwork); diff --git a/tests/cts/hostside/app2/src/com/android/cts/net/hostside/app2/MyService.java b/tests/cts/hostside/app2/src/com/android/cts/net/hostside/app2/MyService.java index 9e10d41d06..108c59cbf0 100644 --- a/tests/cts/hostside/app2/src/com/android/cts/net/hostside/app2/MyService.java +++ b/tests/cts/hostside/app2/src/com/android/cts/net/hostside/app2/MyService.java @@ -92,7 +92,7 @@ public class MyService extends Service { } @Override - public void registerNetworkCallback(INetworkCallback cb) { + public void registerNetworkCallback(final NetworkRequest request, INetworkCallback cb) { if (mNetworkCallback != null) { Log.d(TAG, "unregister previous network callback: " + mNetworkCallback); unregisterNetworkCallback(); @@ -140,7 +140,7 @@ public class MyService extends Service { } } }; - mCm.registerNetworkCallback(makeNetworkRequest(), mNetworkCallback); + mCm.registerNetworkCallback(request, mNetworkCallback); try { cb.asBinder().linkToDeath(() -> unregisterNetworkCallback(), 0); } catch (RemoteException e) { @@ -165,12 +165,6 @@ public class MyService extends Service { } }; - private NetworkRequest makeNetworkRequest() { - return new NetworkRequest.Builder() - .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .build(); - } - @Override public IBinder onBind(Intent intent) { return mBinder;