Change ImsMmTelManager APIs to system and enforce correct checks
Bug: 116493310
Bug: 112538960
Bug: 112866475
Test: Telephony Unit Tests
Change-Id: Ib48e17b8c50a75d14a265266c0643924b7dbe91a
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index bf0ce15..b36b87e 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -2676,12 +2676,9 @@
}
@Override
- public void addImsRegistrationCallback(int subId, IImsRegistrationCallback c,
- String callingPackage) throws RemoteException {
- if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(mApp, subId, callingPackage,
- "addImsRegistrationCallback")) {
- return;
- }
+ public void registerImsRegistrationCallback(int subId, IImsRegistrationCallback c)
+ throws RemoteException {
+ enforceReadPrivilegedPermission("registerImsRegistrationCallback");
// TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
final long token = Binder.clearCallingIdentity();
try {
@@ -2693,12 +2690,8 @@
}
@Override
- public void removeImsRegistrationCallback(int subId, IImsRegistrationCallback c,
- String callingPackage) {
- if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(mApp, subId, callingPackage,
- "removeImsRegistrationCallback")) {
- return;
- }
+ public void unregisterImsRegistrationCallback(int subId, IImsRegistrationCallback c) {
+ enforceReadPrivilegedPermission("unregisterImsRegistrationCallback");
// TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
Binder.withCleanCallingIdentity(() ->
ImsManager.getInstance(mPhone.getContext(), getSlotIndexOrException(subId))
@@ -2706,12 +2699,9 @@
}
@Override
- public void addMmTelCapabilityCallback(int subId, IImsCapabilityCallback c,
- String callingPackage) throws RemoteException {
- if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(mApp, subId, callingPackage,
- "addMmTelCapabilityCallback")) {
- return;
- }
+ public void registerMmTelCapabilityCallback(int subId, IImsCapabilityCallback c)
+ throws RemoteException {
+ enforceReadPrivilegedPermission("registerMmTelCapabilityCallback");
// TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
final long token = Binder.clearCallingIdentity();
try {
@@ -2723,12 +2713,8 @@
}
@Override
- public void removeMmTelCapabilityCallback(int subId, IImsCapabilityCallback c,
- String callingPackage) {
- if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(mApp, subId, callingPackage,
- "removeMmTelCapabilityCallback")) {
- return;
- }
+ public void unregisterMmTelCapabilityCallback(int subId, IImsCapabilityCallback c) {
+ enforceReadPrivilegedPermission("unregisterMmTelCapabilityCallback");
// TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
Binder.withCleanCallingIdentity(() ->
ImsManager.getInstance(mPhone.getContext(), getSlotIndexOrException(subId))
@@ -2736,11 +2722,8 @@
}
@Override
- public boolean isCapable(int subId, int capability, int regTech, String callingPackage) {
- if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(mApp, subId, callingPackage,
- "isCapable")) {
- return false;
- }
+ public boolean isCapable(int subId, int capability, int regTech) {
+ enforceReadPrivilegedPermission("isCapable");
// TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
final long token = Binder.clearCallingIdentity();
try {
@@ -2755,11 +2738,8 @@
}
@Override
- public boolean isAvailable(int subId, int capability, int regTech, String callingPackage) {
- if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(mApp, subId, callingPackage,
- "isAvailable")) {
- return false;
- }
+ public boolean isAvailable(int subId, int capability, int regTech) {
+ enforceReadPrivilegedPermission("isAvailable");
final long token = Binder.clearCallingIdentity();
try {
Phone phone = getPhone(subId);
@@ -2798,11 +2778,8 @@
}
@Override
- public boolean isVtSettingEnabled(int subId, String callingPackage) {
- if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(mApp, subId, callingPackage,
- "isVtSettingEnabled")) {
- return false;
- }
+ public boolean isVtSettingEnabled(int subId) {
+ enforceReadPrivilegedPermission("isVtSettingEnabled");
final long identity = Binder.clearCallingIdentity();
try {
// TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
diff --git a/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsCallingActivity.java b/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsCallingActivity.java
index ae5b39e..fea2bf8 100644
--- a/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsCallingActivity.java
+++ b/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsCallingActivity.java
@@ -165,7 +165,7 @@
mImsManager = ImsMmTelManager.createForSubscriptionId(this,
SubscriptionManager.getDefaultVoiceSubscriptionId());
Log.i("ImsCallingActivity", "onResume");
- mImsManager.addMmTelCapabilityCallback(getMainExecutor(), mCapabilityCallback);
+ mImsManager.registerMmTelCapabilityCallback(getMainExecutor(), mCapabilityCallback);
} catch (IllegalArgumentException e) {
Log.w("ImsCallingActivity", "illegal subscription ID.");
}
@@ -174,7 +174,7 @@
@Override
protected void onPause() {
super.onPause();
- mImsManager.removeMmTelCapabilityCallback(mCapabilityCallback);
+ mImsManager.unregisterMmTelCapabilityCallback(mCapabilityCallback);
mImsManager = null;
}
diff --git a/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsRegistrationActivity.java b/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsRegistrationActivity.java
index bca8eba..3317ff1 100644
--- a/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsRegistrationActivity.java
+++ b/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsRegistrationActivity.java
@@ -179,7 +179,7 @@
try {
mImsManager = ImsMmTelManager.createForSubscriptionId(this,
SubscriptionManager.getDefaultVoiceSubscriptionId());
- mImsManager.addImsRegistrationCallback(getMainExecutor(), mRegistrationCallback);
+ mImsManager.registerImsRegistrationCallback(getMainExecutor(), mRegistrationCallback);
} catch (IllegalArgumentException e) {
Log.w("ImsCallingActivity", "illegal subscription ID.");
}
@@ -219,7 +219,7 @@
@Override
protected void onPause() {
super.onPause();
- mImsManager.removeImsRegistrationCallback(mRegistrationCallback);
+ mImsManager.unregisterImsRegistrationCallback(mRegistrationCallback);
mImsManager = null;
}