summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-10 23:27:43 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-10 23:27:43 +0000
commit9038f35c4014441a8cfb073a53a2b45e730b6622 (patch)
tree32774c7a7d913fb26310261782a339e1eebc8ecb
parent435908f0f03b7617ec577a22c91919f6b5b8ddcd (diff)
parent092f09557864be92833192aa8a2f6916fc659641 (diff)
downloadMms-android13-qpr1-s2-release.tar.gz
Change-Id: Ic5c59b4fe7b9e0f262f1cf886d4c47a9f60e3f35
-rw-r--r--src/com/android/mms/service/metrics/MmsStats.java8
-rw-r--r--tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java129
2 files changed, 135 insertions, 2 deletions
diff --git a/src/com/android/mms/service/metrics/MmsStats.java b/src/com/android/mms/service/metrics/MmsStats.java
index 4e7003f..26e8967 100644
--- a/src/com/android/mms/service/metrics/MmsStats.java
+++ b/src/com/android/mms/service/metrics/MmsStats.java
@@ -31,7 +31,6 @@ import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.UiccCardInfo;
-import android.util.Log;
import com.android.internal.telephony.SmsApplication;
import com.android.mms.IncomingMms;
@@ -162,7 +161,8 @@ public class MmsStats {
/** Returns data network roaming type of current subscription. */
private int getDataRoamingType() {
ServiceState serviceState = mTelephonyManager.getServiceState();
- return serviceState.getDataRoamingType();
+ return (serviceState != null) ? serviceState.getDataRoamingType() :
+ ServiceState.ROAMING_TYPE_NOT_ROAMING;
}
/** Returns slot index associated with the subscription. */
@@ -173,6 +173,10 @@ public class MmsStats {
/** Returns whether the device has multiple active SIM profiles. */
private boolean getIsMultiSim() {
SubscriptionManager subManager = mContext.getSystemService(SubscriptionManager.class);
+ if(subManager == null) {
+ return false;
+ }
+
List<SubscriptionInfo> activeSubscriptionInfo = subManager.getActiveSubscriptionInfoList();
return (activeSubscriptionInfo.size() > 1);
}
diff --git a/tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java b/tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java
new file mode 100644
index 0000000..f176b6b
--- /dev/null
+++ b/tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.mms.service.metrics;
+
+import static com.android.mms.MmsStatsLog.INCOMING_MMS__RESULT__MMS_RESULT_SUCCESS;
+import static com.android.mms.MmsStatsLog.OUTGOING_MMS__RESULT__MMS_RESULT_SUCCESS;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+import android.app.Activity;
+import android.content.Context;
+import android.telephony.ServiceState;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import com.android.mms.IncomingMms;
+import com.android.mms.OutgoingMms;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+
+public class MmsStatsTest {
+ // Mocked classes
+ private Context mContext;
+ private PersistMmsAtomsStorage mPersistMmsAtomsStorage;
+ private TelephonyManager mTelephonyManager;
+
+ @Before
+ public void setUp() {
+ mContext = mock(Context.class);
+ mPersistMmsAtomsStorage = mock(PersistMmsAtomsStorage.class);
+ mTelephonyManager = mock(TelephonyManager.class);
+ }
+
+ @After
+ public void tearDown() {
+ mContext = null;
+ mPersistMmsAtomsStorage = null;
+ mTelephonyManager = null;
+ }
+
+ @Test
+ public void addAtomToStorage_incomingMms_default() {
+ doReturn(null).when(mTelephonyManager).getServiceState();
+ doReturn(TelephonyManager.UNKNOWN_CARRIER_ID).when(mTelephonyManager).getSimCarrierId();
+ int inactiveSubId = 123;
+ MmsStats mmsStats = new MmsStats(mContext, mPersistMmsAtomsStorage, inactiveSubId,
+ mTelephonyManager, null, true);
+ mmsStats.addAtomToStorage(Activity.RESULT_OK);
+
+ ArgumentCaptor<IncomingMms> incomingMmsCaptor = ArgumentCaptor.forClass(IncomingMms.class);
+ verify(mPersistMmsAtomsStorage).addIncomingMms(incomingMmsCaptor.capture());
+ IncomingMms incomingMms = incomingMmsCaptor.getValue();
+ assertThat(incomingMms.getRat()).isEqualTo(TelephonyManager.NETWORK_TYPE_UNKNOWN);
+ assertThat(incomingMms.getResult()).isEqualTo(INCOMING_MMS__RESULT__MMS_RESULT_SUCCESS);
+ assertThat(incomingMms.getRoaming()).isEqualTo(ServiceState.ROAMING_TYPE_NOT_ROAMING);
+ assertThat(incomingMms.getSimSlotIndex()).isEqualTo(
+ SubscriptionManager.INVALID_SIM_SLOT_INDEX);
+ assertThat(incomingMms.getIsMultiSim()).isEqualTo(false);
+ assertThat(incomingMms.getIsEsim()).isEqualTo(false);
+ assertThat(incomingMms.getCarrierId()).isEqualTo(TelephonyManager.UNKNOWN_CARRIER_ID);
+ assertThat(incomingMms.getMmsCount()).isEqualTo(1);
+ assertThat(incomingMms.getRetryId()).isEqualTo(0);
+ assertThat(incomingMms.getHandledByCarrierApp()).isEqualTo(false);
+ verifyNoMoreInteractions(mPersistMmsAtomsStorage);
+ }
+
+ @Test
+ public void addAtomToStorage_outgoingMms_default() {
+ doReturn(null).when(mTelephonyManager).getServiceState();
+ doReturn(TelephonyManager.UNKNOWN_CARRIER_ID).when(mTelephonyManager).getSimCarrierId();
+ int inactiveSubId = 123;
+ MmsStats mmsStats = new MmsStats(mContext, mPersistMmsAtomsStorage, inactiveSubId,
+ mTelephonyManager, null, false);
+ mmsStats.addAtomToStorage(Activity.RESULT_OK);
+
+ ArgumentCaptor<OutgoingMms> outgoingMmsCaptor = ArgumentCaptor.forClass(OutgoingMms.class);
+ verify(mPersistMmsAtomsStorage).addOutgoingMms(outgoingMmsCaptor.capture());
+ OutgoingMms outgoingMms = outgoingMmsCaptor.getValue();
+ assertThat(outgoingMms.getRat()).isEqualTo(TelephonyManager.NETWORK_TYPE_UNKNOWN);
+ assertThat(outgoingMms.getResult()).isEqualTo(OUTGOING_MMS__RESULT__MMS_RESULT_SUCCESS);
+ assertThat(outgoingMms.getRoaming()).isEqualTo(ServiceState.ROAMING_TYPE_NOT_ROAMING);
+ assertThat(outgoingMms.getSimSlotIndex()).isEqualTo(
+ SubscriptionManager.INVALID_SIM_SLOT_INDEX);
+ assertThat(outgoingMms.getIsMultiSim()).isEqualTo(false);
+ assertThat(outgoingMms.getIsEsim()).isEqualTo(false);
+ assertThat(outgoingMms.getCarrierId()).isEqualTo(TelephonyManager.UNKNOWN_CARRIER_ID);
+ assertThat(outgoingMms.getMmsCount()).isEqualTo(1);
+ assertThat(outgoingMms.getRetryId()).isEqualTo(0);
+ assertThat(outgoingMms.getHandledByCarrierApp()).isEqualTo(false);
+ assertThat(outgoingMms.getIsFromDefaultApp()).isEqualTo(false);
+ verifyNoMoreInteractions(mPersistMmsAtomsStorage);
+ }
+
+ @Test
+ public void getDataRoamingType_serviceState_notNull() {
+ ServiceState serviceState = mock(ServiceState.class);
+ doReturn(serviceState).when(mTelephonyManager).getServiceState();
+ MmsStats mmsStats = new MmsStats(mContext, mPersistMmsAtomsStorage, 1,
+ mTelephonyManager, null, true);
+ mmsStats.addAtomToStorage(Activity.RESULT_OK);
+
+ ArgumentCaptor<IncomingMms> incomingMmsCaptor = ArgumentCaptor.forClass(IncomingMms.class);
+ verify(mPersistMmsAtomsStorage).addIncomingMms(incomingMmsCaptor.capture());
+ IncomingMms incomingMms = incomingMmsCaptor.getValue();
+ assertThat(incomingMms.getRoaming()).isEqualTo(ServiceState.ROAMING_TYPE_NOT_ROAMING);
+ }
+} \ No newline at end of file