diff --git a/services/core/java/com/android/server/job/JobStore.java b/services/core/java/com/android/server/job/JobStore.java index 7235faa6ad509..4f8b1dcc6bb46 100644 --- a/services/core/java/com/android/server/job/JobStore.java +++ b/services/core/java/com/android/server/job/JobStore.java @@ -477,6 +477,9 @@ public final class JobStore { final NetworkRequest network = jobStatus.getJob().getRequiredNetwork(); out.attribute(null, "net-capabilities", Long.toString( BitUtils.packBits(network.networkCapabilities.getCapabilities()))); + out.attribute(null, "net-unwanted-capabilities", Long.toString( + BitUtils.packBits(network.networkCapabilities.getUnwantedCapabilities()))); + out.attribute(null, "net-transport-types", Long.toString( BitUtils.packBits(network.networkCapabilities.getTransportTypes()))); } @@ -888,12 +891,19 @@ public final class JobStore { String val; final String netCapabilities = parser.getAttributeValue(null, "net-capabilities"); + final String netUnwantedCapabilities = parser.getAttributeValue( + null, "net-unwanted-capabilities"); final String netTransportTypes = parser.getAttributeValue(null, "net-transport-types"); if (netCapabilities != null && netTransportTypes != null) { final NetworkRequest request = new NetworkRequest.Builder().build(); + final long unwantedCapabilities = netUnwantedCapabilities != null + ? Long.parseLong(netUnwantedCapabilities) + : BitUtils.packBits(request.networkCapabilities.getUnwantedCapabilities()); + // We're okay throwing NFE here; caught by caller request.networkCapabilities.setCapabilities( - BitUtils.unpackBits(Long.parseLong(netCapabilities))); + BitUtils.unpackBits(Long.parseLong(netCapabilities)), + BitUtils.unpackBits(unwantedCapabilities)); request.networkCapabilities.setTransportTypes( BitUtils.unpackBits(Long.parseLong(netTransportTypes))); jobBuilder.setRequiredNetwork(request); diff --git a/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java b/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java index e2064aa38f1f5..4ee2ff48fd625 100644 --- a/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java +++ b/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java @@ -1,6 +1,7 @@ package com.android.server.job; import static android.net.NetworkCapabilities.NET_CAPABILITY_IMS; +import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PAID; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; import static org.junit.Assert.assertEquals; @@ -374,7 +375,9 @@ public class JobStoreTest { assertPersistedEquals(new JobInfo.Builder(0, mComponent) .setPersisted(true) .setRequiredNetwork(new NetworkRequest.Builder() - .addCapability(NET_CAPABILITY_IMS).build()) + .addCapability(NET_CAPABILITY_IMS) + .addUnwantedCapability(NET_CAPABILITY_OEM_PAID) + .build()) .build()); }