diff options
author | Aishwarya Mallampati <amallampati@google.com> | 2022-10-04 21:52:28 +0000 |
---|---|---|
committer | Aishwarya Mallampati <amallampati@google.com> | 2022-11-17 00:16:11 +0000 |
commit | 1736abd648eaf964fdb2aaef69281d5dd02d90ba (patch) | |
tree | a6443508edd186e03eca645ea005f9efb855991b | |
parent | a2fe425cbb1ccc696c659a6f4a94978b6f323557 (diff) | |
download | Mms-1736abd648eaf964fdb2aaef69281d5dd02d90ba.tar.gz |
Replace callers of SmsApplication with user-aware
methods.
Bug: 250617029
Test: Sending and receiving SMS/MMS,
atest android.telephony.cts.MmsTest,
atest com.android.mms.service.metrics.MmsStatsTest
Change-Id: Idd8787db984196454b8ab7a0e5379e5c4ec2f73d
-rw-r--r-- | AndroidManifest.xml | 4 | ||||
-rw-r--r-- | src/com/android/mms/service/SendRequest.java | 12 | ||||
-rw-r--r-- | src/com/android/mms/service/metrics/MmsStats.java | 8 | ||||
-rw-r--r-- | tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java | 23 |
4 files changed, 44 insertions, 3 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 87e7947..a19a11a 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -26,6 +26,10 @@ <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH"/> <uses-permission android:name="android.permission.BIND_CARRIER_SERVICES"/> <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/> + <!-- Needed to check if subscription is active. --> + <uses-permission android:name="android.permission.READ_PHONE_STATE"/> + <!-- Needed to query user associated with a subscription. --> + <uses-permission android:name="android.permission.MANAGE_SUBSCRIPTION_USER_ASSOCIATION"/> <protected-broadcast android:name="android.settings.ENABLE_MMS_DATA_REQUEST"/> diff --git a/src/com/android/mms/service/SendRequest.java b/src/com/android/mms/service/SendRequest.java index 60acc7e..103575c 100644 --- a/src/com/android/mms/service/SendRequest.java +++ b/src/com/android/mms/service/SendRequest.java @@ -25,11 +25,13 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Binder; import android.os.Bundle; +import android.os.UserHandle; import android.provider.BlockedNumberContract; import android.provider.Telephony; import android.service.carrier.CarrierMessagingService; import android.service.carrier.CarrierMessagingServiceWrapper; import android.telephony.SmsManager; +import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; @@ -174,10 +176,16 @@ public class SendRequest extends MmsRequest { @Override protected Uri persistIfRequired(Context context, int result, byte[] response) { final String requestId = getRequestId(); - if (!SmsApplication.shouldWriteMessageForPackage(mCreator, context)) { - // Not required to persist + + UserHandle userHandle = null; + SubscriptionManager subManager = mContext.getSystemService(SubscriptionManager.class); + if ((subManager != null) && (subManager.isActiveSubscriptionId(mSubId))) { + userHandle = subManager.getSubscriptionUserHandle(mSubId); + } + if (!SmsApplication.shouldWriteMessageForPackageAsUser(mCreator, context, userHandle)) { return null; } + LogUtil.d(requestId, "persistIfRequired. " + MmsService.formatCrossStackMessageId(mMessageId)); if (mPduData == null) { diff --git a/src/com/android/mms/service/metrics/MmsStats.java b/src/com/android/mms/service/metrics/MmsStats.java index 26e8967..9495edb 100644 --- a/src/com/android/mms/service/metrics/MmsStats.java +++ b/src/com/android/mms/service/metrics/MmsStats.java @@ -25,6 +25,7 @@ import android.app.Activity; import android.content.Context; import android.os.Binder; import android.os.SystemClock; +import android.os.UserHandle; import android.telephony.ServiceState; import android.telephony.SmsManager; import android.telephony.SubscriptionInfo; @@ -199,7 +200,12 @@ public class MmsStats { /** Returns if the MMS was originated from the default MMS application. */ private boolean isDefaultMmsApp() { - return SmsApplication.isDefaultMmsApplication(mContext, mCallingPkg); + UserHandle userHandle = null; + SubscriptionManager subManager = mContext.getSystemService(SubscriptionManager.class); + if ((subManager != null) && (subManager.isActiveSubscriptionId(mSubId))) { + userHandle = subManager.getSubscriptionUserHandle(mSubId); + } + return SmsApplication.isDefaultMmsApplicationAsUser(mContext, mCallingPkg, userHandle); } /** diff --git a/tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java b/tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java index f176b6b..a91d0c8 100644 --- a/tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java +++ b/tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java @@ -22,7 +22,9 @@ import static com.android.mms.MmsStatsLog.OUTGOING_MMS__RESULT__MMS_RESULT_SUCCE import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -38,6 +40,7 @@ import com.android.mms.OutgoingMms; import org.junit.After; import org.junit.Before; import org.junit.Test; + import org.mockito.ArgumentCaptor; public class MmsStatsTest { @@ -45,12 +48,17 @@ public class MmsStatsTest { private Context mContext; private PersistMmsAtomsStorage mPersistMmsAtomsStorage; private TelephonyManager mTelephonyManager; + private SubscriptionManager mSubscriptionManager; @Before public void setUp() { mContext = mock(Context.class); mPersistMmsAtomsStorage = mock(PersistMmsAtomsStorage.class); mTelephonyManager = mock(TelephonyManager.class); + mSubscriptionManager = mock(SubscriptionManager.class); + + doReturn(mSubscriptionManager).when(mContext).getSystemService( + Context.TELEPHONY_SUBSCRIPTION_SERVICE); } @After @@ -126,4 +134,19 @@ public class MmsStatsTest { IncomingMms incomingMms = incomingMmsCaptor.getValue(); assertThat(incomingMms.getRoaming()).isEqualTo(ServiceState.ROAMING_TYPE_NOT_ROAMING); } + + + @Test + public void isDefaultMmsApp_subId_inactive() { + int inactiveSubId = 123; + doReturn(false).when(mSubscriptionManager) + .isActiveSubscriptionId(eq(inactiveSubId)); + + MmsStats mmsStats = new MmsStats(mContext, mPersistMmsAtomsStorage, inactiveSubId, + mTelephonyManager, null, false); + mmsStats.addAtomToStorage(Activity.RESULT_OK); + + // getSubscriptionUserHandle should not be called if subID is inactive. + verify(mSubscriptionManager, never()).getSubscriptionUserHandle(eq(inactiveSubId)); + } }
\ No newline at end of file |