Add MMS metrics for work profile
Track wherether the MMS is sent/received by a sub that's tied to work
profile
Bug: 261776686
Test: sample: https://paste.googleplex.com/5336247844208640
Change-Id: If2556fff36844ebf391016ece05ecf9d80339087
diff --git a/proto/src/persist_mms_atoms.proto b/proto/src/persist_mms_atoms.proto
index c562246..bde1cb9 100644
--- a/proto/src/persist_mms_atoms.proto
+++ b/proto/src/persist_mms_atoms.proto
@@ -50,6 +50,7 @@
optional int64 mms_count = 9;
optional int32 retry_id = 10;
optional bool handled_by_carrier_app = 11;
+ optional bool is_managed_profile = 12;
}
message OutgoingMms {
@@ -65,4 +66,5 @@
optional bool is_from_default_app = 10;
optional int32 retry_id = 11;
optional bool handled_by_carrier_app = 12;
-}
\ No newline at end of file
+ optional bool is_managed_profile = 13;
+}
diff --git a/src/com/android/mms/service/metrics/MmsMetricsCollector.java b/src/com/android/mms/service/metrics/MmsMetricsCollector.java
index f20d61a..8da61ba 100644
--- a/src/com/android/mms/service/metrics/MmsMetricsCollector.java
+++ b/src/com/android/mms/service/metrics/MmsMetricsCollector.java
@@ -90,7 +90,8 @@
mms.getAvgIntervalMillis(),
mms.getMmsCount(),
mms.getRetryId(),
- mms.getHandledByCarrierApp());
+ mms.getHandledByCarrierApp(),
+ mms.getIsManagedProfile());
}
private static StatsEvent buildStatsEvent(OutgoingMms mms) {
@@ -107,7 +108,8 @@
mms.getMmsCount(),
mms.getIsFromDefaultApp(),
mms.getRetryId(),
- mms.getHandledByCarrierApp());
+ mms.getHandledByCarrierApp(),
+ mms.getIsManagedProfile());
}
@Override
diff --git a/src/com/android/mms/service/metrics/MmsStats.java b/src/com/android/mms/service/metrics/MmsStats.java
index 9495edb..7e98b0b 100644
--- a/src/com/android/mms/service/metrics/MmsStats.java
+++ b/src/com/android/mms/service/metrics/MmsStats.java
@@ -26,6 +26,7 @@
import android.os.Binder;
import android.os.SystemClock;
import android.os.UserHandle;
+import android.os.UserManager;
import android.telephony.ServiceState;
import android.telephony.SmsManager;
import android.telephony.SubscriptionInfo;
@@ -101,6 +102,7 @@
.setMmsCount(1)
.setRetryId(retryId)
.setHandledByCarrierApp(handledByCarrierApp)
+ .setIsManagedProfile(isManagedProfile())
.build();
mPersistMmsAtomsStorage.addIncomingMms(incomingMms);
}
@@ -120,10 +122,21 @@
.setIsFromDefaultApp(isDefaultMmsApp())
.setRetryId(retryId)
.setHandledByCarrierApp(handledByCarrierApp)
+ .setIsManagedProfile(isManagedProfile())
.build();
mPersistMmsAtomsStorage.addOutgoingMms(outgoingMms);
}
+ /** @return {@code true} if this SIM is dedicated to work profile */
+ private boolean isManagedProfile() {
+ SubscriptionManager subManager = mContext.getSystemService(SubscriptionManager.class);
+ if (subManager == null || !subManager.isActiveSubscriptionId(mSubId)) return false;
+ UserHandle userHandle = subManager.getSubscriptionUserHandle(mSubId);
+ UserManager userManager = mContext.getSystemService(UserManager.class);
+ if (userHandle == null || userManager == null) return false;
+ return userManager.isManagedProfile(userHandle.getIdentifier());
+ }
+
/** Returns data network type of current subscription. */
private int getDataNetworkType() {
return mTelephonyManager.getDataNetworkType();
@@ -216,4 +229,4 @@
private long getInterval() {
return (SystemClock.elapsedRealtime() - mTimestamp);
}
-}
\ No newline at end of file
+}
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 a91d0c8..2b2cae5 100644
--- a/tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java
+++ b/tests/unittests/src/com/android/mms/service/metrics/MmsStatsTest.java
@@ -91,6 +91,7 @@
assertThat(incomingMms.getMmsCount()).isEqualTo(1);
assertThat(incomingMms.getRetryId()).isEqualTo(0);
assertThat(incomingMms.getHandledByCarrierApp()).isEqualTo(false);
+ assertThat(incomingMms.getIsManagedProfile()).isEqualTo(false);
verifyNoMoreInteractions(mPersistMmsAtomsStorage);
}
@@ -118,6 +119,7 @@
assertThat(outgoingMms.getRetryId()).isEqualTo(0);
assertThat(outgoingMms.getHandledByCarrierApp()).isEqualTo(false);
assertThat(outgoingMms.getIsFromDefaultApp()).isEqualTo(false);
+ assertThat(outgoingMms.getIsManagedProfile()).isEqualTo(false);
verifyNoMoreInteractions(mPersistMmsAtomsStorage);
}