From 10e2db6c01737a0438bc9a8654e0cc4a7225f706 Mon Sep 17 00:00:00 2001 From: Hunsuk Choi Date: Mon, 1 Nov 2021 13:01:19 +0000 Subject: [PATCH] Update ITelephony#registerImsStateCallback Add a parameter, String callingPackage, to send the pakage name of the client. With this, we can see what apps have listeners for which features. Bug: 178016400 Test: atest Change-Id: I3ac14cc3bcb28f5f966a1b3c215727784527e475 --- .../java/android/telephony/ImsManager.java | 2 +- .../telephony/ims/ImsMmTelManager.java | 23 ++++++++++++++++++- .../android/telephony/ims/ImsRcsManager.java | 3 ++- .../telephony/ims/SipDelegateManager.java | 3 ++- .../internal/telephony/ITelephony.aidl | 3 ++- 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/telephony/java/android/telephony/ImsManager.java b/telephony/java/android/telephony/ImsManager.java index a25abc9e93a5d..fc76f99cf074b 100644 --- a/telephony/java/android/telephony/ImsManager.java +++ b/telephony/java/android/telephony/ImsManager.java @@ -135,7 +135,7 @@ public class ImsManager { throw new IllegalArgumentException("Invalid subscription ID: " + subscriptionId); } - return new ImsMmTelManager(subscriptionId, sTelephonyCache); + return new ImsMmTelManager(mContext, subscriptionId, sTelephonyCache); } /** diff --git a/telephony/java/android/telephony/ims/ImsMmTelManager.java b/telephony/java/android/telephony/ims/ImsMmTelManager.java index 7a27ed79cb142..683bb92845baf 100644 --- a/telephony/java/android/telephony/ims/ImsMmTelManager.java +++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java @@ -25,6 +25,7 @@ import android.annotation.RequiresPermission; import android.annotation.SuppressAutoDoc; import android.annotation.SuppressLint; import android.annotation.SystemApi; +import android.content.Context; import android.os.Binder; import android.os.RemoteException; import android.os.ServiceSpecificException; @@ -215,6 +216,7 @@ public class ImsMmTelManager implements RegistrationManager { } } + private final Context mContext; private final int mSubId; private final BinderCacheManager mBinderCache; @@ -256,6 +258,16 @@ public class ImsMmTelManager implements RegistrationManager { */ @VisibleForTesting public ImsMmTelManager(int subId, BinderCacheManager binderCache) { + this(null, subId, binderCache); + } + + /** + * Only visible for testing, use {@link ImsManager#getImsMmTelManager(int)} instead. + * @hide + */ + @VisibleForTesting + public ImsMmTelManager(Context context, int subId, BinderCacheManager binderCache) { + mContext = context; mSubId = subId; mBinderCache = binderCache; } @@ -1516,7 +1528,8 @@ public class ImsMmTelManager implements RegistrationManager { try { telephony.registerImsStateCallback( - mSubId, ImsFeature.FEATURE_MMTEL, callback.getCallbackBinder()); + mSubId, ImsFeature.FEATURE_MMTEL, + callback.getCallbackBinder(), getOpPackageName()); } catch (ServiceSpecificException e) { throw new ImsException(e.getMessage(), e.errorCode); } catch (RemoteException | IllegalStateException e) { @@ -1542,6 +1555,14 @@ public class ImsMmTelManager implements RegistrationManager { } } + private String getOpPackageName() { + if (mContext != null) { + return mContext.getOpPackageName(); + } else { + return null; + } + } + private ITelephony getITelephony() { return mBinderCache.getBinder(); } diff --git a/telephony/java/android/telephony/ims/ImsRcsManager.java b/telephony/java/android/telephony/ims/ImsRcsManager.java index 42af02594778f..1b047c77d80bc 100644 --- a/telephony/java/android/telephony/ims/ImsRcsManager.java +++ b/telephony/java/android/telephony/ims/ImsRcsManager.java @@ -572,7 +572,8 @@ public class ImsRcsManager { try { telephony.registerImsStateCallback( - mSubId, ImsFeature.FEATURE_RCS, callback.getCallbackBinder()); + mSubId, ImsFeature.FEATURE_RCS, + callback.getCallbackBinder(), mContext.getOpPackageName()); } catch (ServiceSpecificException e) { throw new ImsException(e.getMessage(), e.errorCode); } catch (RemoteException | IllegalStateException e) { diff --git a/telephony/java/android/telephony/ims/SipDelegateManager.java b/telephony/java/android/telephony/ims/SipDelegateManager.java index 48e3d45596f39..f913df588f405 100644 --- a/telephony/java/android/telephony/ims/SipDelegateManager.java +++ b/telephony/java/android/telephony/ims/SipDelegateManager.java @@ -484,7 +484,8 @@ public class SipDelegateManager { try { telephony.registerImsStateCallback( - mSubId, ImsFeature.FEATURE_RCS, callback.getCallbackBinder()); + mSubId, ImsFeature.FEATURE_RCS, + callback.getCallbackBinder(), mContext.getOpPackageName()); } catch (ServiceSpecificException e) { throw new ImsException(e.getMessage(), e.errorCode); } catch (RemoteException | IllegalStateException e) { diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 6765576ba5366..6fdfb9ac59250 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -2502,7 +2502,8 @@ interface ITelephony { /** * Register an IMS connection state callback */ - void registerImsStateCallback(int subId, int feature, in IImsStateCallback cb); + void registerImsStateCallback(int subId, int feature, in IImsStateCallback cb, + in String callingPackage); /** * Unregister an IMS connection state callback