Allow carrier-privileged apps to access {get,set}MobileData.
Test: Exercised APIs from test app, updated and executed CTS tests
Bug: 32644451
Change-Id: I537b3b0d4938be0b16277ea5b10de54cb1a3501b
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index ac4510a..ecd7d44 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -2507,7 +2507,7 @@
*/
@Override
public void setDataEnabled(int subId, boolean enable) {
- enforceModifyPermission();
+ enforceModifyPermissionOrCarrierPrivilege(subId);
int phoneId = mSubscriptionController.getPhoneId(subId);
if (DBG) log("getDataEnabled: subId=" + subId + " phoneId=" + phoneId);
Phone phone = PhoneFactory.getPhone(phoneId);
@@ -2522,9 +2522,7 @@
/**
* Get whether mobile data is enabled.
*
- * Note that this used to be available from ConnectivityService, gated by
- * ACCESS_NETWORK_STATE permission, so this will accept either that or
- * our MODIFY_PHONE_STATE.
+ * Accepts either ACCESS_NETWORK_STATE, MODIFY_PHONE_STATE or carrier privileges.
*
* @return {@code true} if data is enabled else {@code false}
*/
@@ -2534,8 +2532,7 @@
mApp.enforceCallingOrSelfPermission(android.Manifest.permission.ACCESS_NETWORK_STATE,
null);
} catch (Exception e) {
- mApp.enforceCallingOrSelfPermission(android.Manifest.permission.MODIFY_PHONE_STATE,
- null);
+ enforceModifyPermissionOrCarrierPrivilege(subId);
}
int phoneId = mSubscriptionController.getPhoneId(subId);
if (DBG) log("getDataEnabled: subId=" + subId + " phoneId=" + phoneId);