Merge changes I30f8814c,Ifdf67318,If312b8f8 into main
* changes: Rename hasCarrierPrivilege... to isCarrierServiceUid... Detect discrepancies in subIds Allow carrier service UIDs to access their own WiFi networks.
This commit is contained in:
@@ -5263,7 +5263,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
private boolean hasCarrierPrivilegeForNetworkCaps(final int callingUid,
|
private boolean hasCarrierPrivilegeForNetworkCaps(final int callingUid,
|
||||||
@NonNull final NetworkCapabilities caps) {
|
@NonNull final NetworkCapabilities caps) {
|
||||||
if (mCarrierPrivilegeAuthenticator != null) {
|
if (mCarrierPrivilegeAuthenticator != null) {
|
||||||
return mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
return mCarrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
callingUid, caps);
|
callingUid, caps);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.server.connectivity;
|
package com.android.server.connectivity;
|
||||||
|
|
||||||
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
||||||
|
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
||||||
|
|
||||||
import static com.android.server.connectivity.ConnectivityFlags.CARRIER_SERVICE_CHANGED_USE_CALLBACK;
|
import static com.android.server.connectivity.ConnectivityFlags.CARRIER_SERVICE_CHANGED_USE_CALLBACK;
|
||||||
|
|
||||||
@@ -31,6 +32,8 @@ import android.content.pm.PackageManager;
|
|||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
import android.net.NetworkSpecifier;
|
import android.net.NetworkSpecifier;
|
||||||
import android.net.TelephonyNetworkSpecifier;
|
import android.net.TelephonyNetworkSpecifier;
|
||||||
|
import android.net.TransportInfo;
|
||||||
|
import android.net.wifi.WifiInfo;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
@@ -211,12 +214,13 @@ public class CarrierPrivilegeAuthenticator {
|
|||||||
*
|
*
|
||||||
* This returns whether the passed UID is the carrier service package for the subscription ID
|
* This returns whether the passed UID is the carrier service package for the subscription ID
|
||||||
* stored in the telephony network specifier in the passed network capabilities.
|
* stored in the telephony network specifier in the passed network capabilities.
|
||||||
* If the capabilities don't code for a cellular network, or if they don't have the
|
* If the capabilities don't code for a cellular or Wi-Fi network, or if they don't have the
|
||||||
* subscription ID in their specifier, this returns false.
|
* subscription ID in their specifier, this returns false.
|
||||||
*
|
*
|
||||||
* This method can be used to check that a network request for {@link NET_CAPABILITY_CBS} is
|
* This method can be used to check that a network request that requires the UID to be
|
||||||
* allowed for the UID of a caller, which must hold carrier privilege and provide the carrier
|
* the carrier service UID is indeed called by such a UID. An example of such a network could
|
||||||
* config.
|
* be a network with the {@link android.net.NetworkCapabilities#NET_CAPABILITY_CBS}
|
||||||
|
* capability.
|
||||||
* It can also be used to check that a factory is entitled to grant access to a given network
|
* It can also be used to check that a factory is entitled to grant access to a given network
|
||||||
* to a given UID on grounds that it is the carrier service package.
|
* to a given UID on grounds that it is the carrier service package.
|
||||||
*
|
*
|
||||||
@@ -224,13 +228,28 @@ public class CarrierPrivilegeAuthenticator {
|
|||||||
* @param networkCapabilities the network capabilities for which carrier privilege is checked.
|
* @param networkCapabilities the network capabilities for which carrier privilege is checked.
|
||||||
* @return true if uid provides the relevant carrier config else false.
|
* @return true if uid provides the relevant carrier config else false.
|
||||||
*/
|
*/
|
||||||
public boolean hasCarrierPrivilegeForNetworkCapabilities(int callingUid,
|
public boolean isCarrierServiceUidForNetworkCapabilities(int callingUid,
|
||||||
@NonNull NetworkCapabilities networkCapabilities) {
|
@NonNull NetworkCapabilities networkCapabilities) {
|
||||||
if (callingUid == Process.INVALID_UID) return false;
|
if (callingUid == Process.INVALID_UID) return false;
|
||||||
if (!networkCapabilities.hasSingleTransportBesidesTest(TRANSPORT_CELLULAR)) {
|
final int subId;
|
||||||
return false;
|
if (networkCapabilities.hasSingleTransportBesidesTest(TRANSPORT_CELLULAR)) {
|
||||||
|
subId = getSubIdFromTelephonySpecifier(networkCapabilities.getNetworkSpecifier());
|
||||||
|
} else if (networkCapabilities.hasSingleTransportBesidesTest(TRANSPORT_WIFI)) {
|
||||||
|
subId = getSubIdFromWifiTransportInfo(networkCapabilities.getTransportInfo());
|
||||||
|
} else {
|
||||||
|
subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
}
|
||||||
|
if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||||
|
&& !networkCapabilities.getSubscriptionIds().contains(subId)) {
|
||||||
|
// Ideally, the code above should just use networkCapabilities.getSubscriptionIds()
|
||||||
|
// for simplicity and future-proofing. However, this is not the historical behavior,
|
||||||
|
// and there is no enforcement that they do not differ, so log a terrible failure if
|
||||||
|
// they do not match to gain confidence this never happens.
|
||||||
|
// TODO : when there is confidence that this never happens, rewrite the code above
|
||||||
|
// with NetworkCapabilities#getSubscriptionIds.
|
||||||
|
Log.wtf(TAG, "NetworkCapabilities subIds are inconsistent between "
|
||||||
|
+ "specifier/transportInfo and mSubIds : " + networkCapabilities);
|
||||||
}
|
}
|
||||||
final int subId = getSubIdFromNetworkSpecifier(networkCapabilities.getNetworkSpecifier());
|
|
||||||
if (SubscriptionManager.INVALID_SUBSCRIPTION_ID == subId) return false;
|
if (SubscriptionManager.INVALID_SUBSCRIPTION_ID == subId) return false;
|
||||||
return callingUid == getCarrierServiceUidForSubId(subId);
|
return callingUid == getCarrierServiceUidForSubId(subId);
|
||||||
}
|
}
|
||||||
@@ -258,14 +277,6 @@ public class CarrierPrivilegeAuthenticator {
|
|||||||
return SubscriptionManager.getSlotIndex(subId);
|
return SubscriptionManager.getSlotIndex(subId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
int getSubIdFromNetworkSpecifier(NetworkSpecifier specifier) {
|
|
||||||
if (specifier instanceof TelephonyNetworkSpecifier) {
|
|
||||||
return ((TelephonyNetworkSpecifier) specifier).getSubscriptionId();
|
|
||||||
}
|
|
||||||
return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
int getUidForPackage(String pkgName) {
|
int getUidForPackage(String pkgName) {
|
||||||
if (pkgName == null) {
|
if (pkgName == null) {
|
||||||
@@ -291,8 +302,22 @@ public class CarrierPrivilegeAuthenticator {
|
|||||||
return getUidForPackage(getCarrierServicePackageNameForLogicalSlot(slotId));
|
return getUidForPackage(getCarrierServicePackageNameForLogicalSlot(slotId));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper methods to avoid having to deal with UnsupportedApiLevelException.
|
@VisibleForTesting
|
||||||
|
int getSubIdFromTelephonySpecifier(@Nullable final NetworkSpecifier specifier) {
|
||||||
|
if (specifier instanceof TelephonyNetworkSpecifier) {
|
||||||
|
return ((TelephonyNetworkSpecifier) specifier).getSubscriptionId();
|
||||||
|
}
|
||||||
|
return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getSubIdFromWifiTransportInfo(@Nullable final TransportInfo info) {
|
||||||
|
if (info instanceof WifiInfo) {
|
||||||
|
return ((WifiInfo) info).getSubscriptionId();
|
||||||
|
}
|
||||||
|
return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper methods to avoid having to deal with UnsupportedApiLevelException.
|
||||||
private void addCarrierPrivilegesListener(@NonNull final Executor executor,
|
private void addCarrierPrivilegesListener(@NonNull final Executor executor,
|
||||||
@NonNull final PrivilegeListener listener) {
|
@NonNull final PrivilegeListener listener) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
|
|||||||
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
||||||
import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET;
|
import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET;
|
||||||
import static android.net.NetworkCapabilities.TRANSPORT_TEST;
|
import static android.net.NetworkCapabilities.TRANSPORT_TEST;
|
||||||
|
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
||||||
import static android.net.NetworkCapabilities.transportNamesOf;
|
import static android.net.NetworkCapabilities.transportNamesOf;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
@@ -1591,12 +1592,13 @@ public class NetworkAgentInfo implements NetworkRanker.Scoreable {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Factories that make cell networks can allow the UID for the carrier service package.
|
// Factories that make cell/wifi networks can allow the UID for the carrier service package.
|
||||||
// This can only work in T where there is support for CarrierPrivilegeAuthenticator
|
// This can only work in T where there is support for CarrierPrivilegeAuthenticator
|
||||||
if (null != carrierPrivilegeAuthenticator
|
if (null != carrierPrivilegeAuthenticator
|
||||||
&& nc.hasSingleTransportBesidesTest(TRANSPORT_CELLULAR)
|
&& (nc.hasSingleTransportBesidesTest(TRANSPORT_CELLULAR)
|
||||||
|
|| nc.hasSingleTransportBesidesTest(TRANSPORT_WIFI))
|
||||||
&& (1 == nc.getAllowedUidsNoCopy().size())
|
&& (1 == nc.getAllowedUidsNoCopy().size())
|
||||||
&& (carrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
&& (carrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
nc.getAllowedUidsNoCopy().valueAt(0), nc))) {
|
nc.getAllowedUidsNoCopy().valueAt(0), nc))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -757,8 +757,8 @@ class NetworkAgentTest {
|
|||||||
val timeout = SystemClock.elapsedRealtime() + DEFAULT_TIMEOUT_MS
|
val timeout = SystemClock.elapsedRealtime() + DEFAULT_TIMEOUT_MS
|
||||||
while (true) {
|
while (true) {
|
||||||
if (SystemClock.elapsedRealtime() > timeout) {
|
if (SystemClock.elapsedRealtime() > timeout) {
|
||||||
fail("Couldn't make $servicePackage the service package for $defaultSubId: "
|
fail("Couldn't make $servicePackage the service package for $defaultSubId: " +
|
||||||
+ "dumpsys connectivity".execute().split("\n")
|
"dumpsys connectivity".execute().split("\n")
|
||||||
.filter { it.contains("Logical slot = $defaultSlotIndex.*") })
|
.filter { it.contains("Logical slot = $defaultSlotIndex.*") })
|
||||||
}
|
}
|
||||||
if ("dumpsys connectivity"
|
if ("dumpsys connectivity"
|
||||||
@@ -772,10 +772,14 @@ class NetworkAgentTest {
|
|||||||
Thread.sleep(500)
|
Thread.sleep(500)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cell is allowed to set UIDs, but not WIFI/BLUETOOTH or agents with multiple
|
// Cell and WiFi are allowed to set UIDs, but not Bluetooth or agents with multiple
|
||||||
// transports.
|
// transports.
|
||||||
doTestAllowedUids(defaultSubId, TRANSPORT_CELLULAR, uid, expectUidsPresent = true)
|
doTestAllowedUids(defaultSubId, TRANSPORT_CELLULAR, uid, expectUidsPresent = true)
|
||||||
doTestAllowedUids(defaultSubId, TRANSPORT_WIFI, uid, expectUidsPresent = false)
|
if (SdkLevel.isAtLeastV()) {
|
||||||
|
// Cannot be tested before V because WifiInfo.Builder#setSubscriptionId doesn't
|
||||||
|
// exist
|
||||||
|
doTestAllowedUids(defaultSubId, TRANSPORT_WIFI, uid, expectUidsPresent = true)
|
||||||
|
}
|
||||||
doTestAllowedUids(defaultSubId, TRANSPORT_BLUETOOTH, uid, expectUidsPresent = false)
|
doTestAllowedUids(defaultSubId, TRANSPORT_BLUETOOTH, uid, expectUidsPresent = false)
|
||||||
doTestAllowedUids(defaultSubId, intArrayOf(TRANSPORT_CELLULAR, TRANSPORT_WIFI), uid,
|
doTestAllowedUids(defaultSubId, intArrayOf(TRANSPORT_CELLULAR, TRANSPORT_WIFI), uid,
|
||||||
expectUidsPresent = false)
|
expectUidsPresent = false)
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_ENTERPR
|
|||||||
import static android.net.ConnectivityManager.TYPE_ETHERNET;
|
import static android.net.ConnectivityManager.TYPE_ETHERNET;
|
||||||
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||||
import static android.net.ConnectivityManager.TYPE_MOBILE_SUPL;
|
import static android.net.ConnectivityManager.TYPE_MOBILE_SUPL;
|
||||||
import static android.net.ConnectivityManager.TYPE_NONE;
|
|
||||||
import static android.net.ConnectivityManager.TYPE_VPN;
|
import static android.net.ConnectivityManager.TYPE_VPN;
|
||||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||||
import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF;
|
import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF;
|
||||||
@@ -17531,7 +17530,7 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
// In this test TEST_PACKAGE_UID will be the UID of the carrier service UID.
|
// In this test TEST_PACKAGE_UID will be the UID of the carrier service UID.
|
||||||
doReturn(true).when(mCarrierPrivilegeAuthenticator)
|
doReturn(true).when(mCarrierPrivilegeAuthenticator)
|
||||||
.hasCarrierPrivilegeForNetworkCapabilities(eq(TEST_PACKAGE_UID), any());
|
.isCarrierServiceUidForNetworkCapabilities(eq(TEST_PACKAGE_UID), any());
|
||||||
|
|
||||||
// Simulate a restricted telephony network. The telephony factory is entitled to set
|
// Simulate a restricted telephony network. The telephony factory is entitled to set
|
||||||
// the access UID to the service package on any of its restricted networks.
|
// the access UID to the service package on any of its restricted networks.
|
||||||
@@ -17596,17 +17595,18 @@ public class ConnectivityServiceTest {
|
|||||||
// TODO : fix the builder
|
// TODO : fix the builder
|
||||||
ncb.setNetworkSpecifier(null);
|
ncb.setNetworkSpecifier(null);
|
||||||
ncb.removeTransportType(TRANSPORT_CELLULAR);
|
ncb.removeTransportType(TRANSPORT_CELLULAR);
|
||||||
ncb.addTransportType(TRANSPORT_WIFI);
|
ncb.addTransportType(TRANSPORT_BLUETOOTH);
|
||||||
// Wifi does not get to set access UID, even to the correct UID
|
// Wifi does not get to set access UID, even to the correct UID
|
||||||
mCm.requestNetwork(new NetworkRequest.Builder()
|
mCm.requestNetwork(new NetworkRequest.Builder()
|
||||||
.addTransportType(TRANSPORT_WIFI)
|
.addTransportType(TRANSPORT_BLUETOOTH)
|
||||||
.removeCapability(NET_CAPABILITY_NOT_RESTRICTED)
|
.removeCapability(NET_CAPABILITY_NOT_RESTRICTED)
|
||||||
.build(), cb);
|
.build(), cb);
|
||||||
mWiFiAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI, new LinkProperties(), ncb.build());
|
final TestNetworkAgentWrapper bluetoothAgent = new TestNetworkAgentWrapper(
|
||||||
mWiFiAgent.connect(true);
|
TRANSPORT_BLUETOOTH, new LinkProperties(), ncb.build());
|
||||||
cb.expectAvailableThenValidatedCallbacks(mWiFiAgent);
|
bluetoothAgent.connect(true);
|
||||||
|
cb.expectAvailableThenValidatedCallbacks(bluetoothAgent);
|
||||||
ncb.setAllowedUids(serviceUidSet);
|
ncb.setAllowedUids(serviceUidSet);
|
||||||
mWiFiAgent.setNetworkCapabilities(ncb.build(), true /* sendToCS */);
|
bluetoothAgent.setNetworkCapabilities(ncb.build(), true /* sendToCS */);
|
||||||
cb.assertNoCallback(TEST_CALLBACK_TIMEOUT_MS);
|
cb.assertNoCallback(TEST_CALLBACK_TIMEOUT_MS);
|
||||||
mCm.unregisterNetworkCallback(cb);
|
mCm.unregisterNetworkCallback(cb);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,9 +174,9 @@ public class CarrierPrivilegeAuthenticatorTest {
|
|||||||
.addTransportType(TRANSPORT_CELLULAR)
|
.addTransportType(TRANSPORT_CELLULAR)
|
||||||
.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
||||||
|
|
||||||
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertTrue(mCarrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, ncBuilder.build()));
|
mCarrierConfigPkgUid, ncBuilder.build()));
|
||||||
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertFalse(mCarrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid + 1, ncBuilder.build()));
|
mCarrierConfigPkgUid + 1, ncBuilder.build()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,9 +213,9 @@ public class CarrierPrivilegeAuthenticatorTest {
|
|||||||
.addTransportType(TRANSPORT_CELLULAR)
|
.addTransportType(TRANSPORT_CELLULAR)
|
||||||
.setNetworkSpecifier(specifier)
|
.setNetworkSpecifier(specifier)
|
||||||
.build();
|
.build();
|
||||||
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertTrue(mCarrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, nc));
|
mCarrierConfigPkgUid, nc));
|
||||||
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertFalse(mCarrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid + 1, nc));
|
mCarrierConfigPkgUid + 1, nc));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -235,9 +235,9 @@ public class CarrierPrivilegeAuthenticatorTest {
|
|||||||
listener.onCarrierPrivilegesChanged(Collections.emptyList(), new int[] {});
|
listener.onCarrierPrivilegesChanged(Collections.emptyList(), new int[] {});
|
||||||
listener.onCarrierServiceChanged(null, applicationInfo.uid);
|
listener.onCarrierServiceChanged(null, applicationInfo.uid);
|
||||||
|
|
||||||
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertFalse(mCarrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, nc));
|
mCarrierConfigPkgUid, nc));
|
||||||
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertTrue(mCarrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid + 1, nc));
|
mCarrierConfigPkgUid + 1, nc));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,11 +248,11 @@ public class CarrierPrivilegeAuthenticatorTest {
|
|||||||
|
|
||||||
final NetworkCapabilities.Builder ncBuilder = new NetworkCapabilities.Builder();
|
final NetworkCapabilities.Builder ncBuilder = new NetworkCapabilities.Builder();
|
||||||
ncBuilder.addTransportType(TRANSPORT_CELLULAR);
|
ncBuilder.addTransportType(TRANSPORT_CELLULAR);
|
||||||
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertFalse(mCarrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, ncBuilder.build()));
|
mCarrierConfigPkgUid, ncBuilder.build()));
|
||||||
|
|
||||||
ncBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
ncBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
||||||
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertTrue(mCarrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, ncBuilder.build()));
|
mCarrierConfigPkgUid, ncBuilder.build()));
|
||||||
|
|
||||||
// The builder for NetworkCapabilities doesn't allow removing the transport as long as a
|
// The builder for NetworkCapabilities doesn't allow removing the transport as long as a
|
||||||
@@ -261,7 +261,7 @@ public class CarrierPrivilegeAuthenticatorTest {
|
|||||||
ncBuilder.removeTransportType(TRANSPORT_CELLULAR);
|
ncBuilder.removeTransportType(TRANSPORT_CELLULAR);
|
||||||
ncBuilder.addTransportType(TRANSPORT_WIFI);
|
ncBuilder.addTransportType(TRANSPORT_WIFI);
|
||||||
ncBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
ncBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
||||||
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertFalse(mCarrierPrivilegeAuthenticator.isCarrierServiceUidForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, ncBuilder.build()));
|
mCarrierConfigPkgUid, ncBuilder.build()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user