Loading proto/src/persist_atoms.proto +1 −0 Original line number Diff line number Diff line Loading @@ -406,6 +406,7 @@ message DataCallSession { optional bool is_iwlan_cross_sim = 23; optional bool is_ntn = 24; optional bool is_satellite_transport = 25; optional bool is_provisioning_profile = 26; } message CellularServiceState { Loading src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java +13 −0 Original line number Diff line number Diff line Loading @@ -309,6 +309,7 @@ public class DataCallSessionStats { copy.isIwlanCrossSim = call.isIwlanCrossSim; copy.isNtn = call.isNtn; copy.isSatelliteTransport = call.isSatelliteTransport; copy.isProvisioningProfile = call.isProvisioningProfile; return copy; } Loading Loading @@ -339,6 +340,7 @@ public class DataCallSessionStats { proto.isNtn = mSatelliteController != null ? mSatelliteController.isInSatelliteModeForCarrierRoaming(mPhone) : false; proto.isSatelliteTransport = isSatellite; proto.isProvisioningProfile = getIsProvisioningProfile(); return proto; } Loading @@ -355,6 +357,17 @@ public class DataCallSessionStats { return subInfo != null && subInfo.isOpportunistic(); } private boolean getIsProvisioningProfile() { SubscriptionInfoInternal subInfo = SubscriptionManagerService.getInstance() .getSubscriptionInfoInternal(mPhone.getSubId()); try { return subInfo.getProfileClass() == SubscriptionManager.PROFILE_CLASS_PROVISIONING; } catch (Exception ex) { loge("getIsProvisioningProfile: " + ex.getMessage()); return false; } } private boolean getIsOos() { ServiceStateTracker serviceStateTracker = mPhone.getServiceStateTracker(); ServiceState serviceState = Loading src/java/com/android/internal/telephony/metrics/MetricsCollector.java +2 −1 Original line number Diff line number Diff line Loading @@ -1206,7 +1206,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { dataCallSession.isNonDds, dataCallSession.isIwlanCrossSim, dataCallSession.isNtn, dataCallSession.isSatelliteTransport); dataCallSession.isSatelliteTransport, dataCallSession.isProvisioningProfile); } private static StatsEvent buildStatsEvent(ImsRegistrationStats stats) { Loading tests/telephonytests/src/com/android/internal/telephony/metrics/DataCallSessionStatsTest.java +52 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.telephony.Phone; import com.android.internal.telephony.TelephonyTest; import com.android.internal.telephony.nano.PersistAtomsProto.DataCallSession; import com.android.internal.telephony.subscription.SubscriptionInfoInternal; import org.junit.After; import org.junit.Before; Loading Loading @@ -356,4 +357,55 @@ public class DataCallSessionStatsTest extends TelephonyTest { assertFalse(stats.isNtn); } @Test public void testIsProvisioningProfile() { SubscriptionInfoInternal mSubInfoInternal = new SubscriptionInfoInternal.Builder() .setProfileClass(mSubscriptionManager.PROFILE_CLASS_PROVISIONING).build(); when(mSubscriptionManagerService.getSubscriptionInfoInternal(mPhone.getSubId())) .thenReturn(mSubInfoInternal); mDataCallSessionStats.onSetupDataCall(ApnSetting.TYPE_IMS, false); mDataCallSessionStats.onSetupDataCallResponse( mDefaultImsResponse, TelephonyManager.NETWORK_TYPE_IWLAN, ApnSetting.TYPE_IMS, ApnSetting.PROTOCOL_IP, DataFailCause.NONE); mDataCallSessionStats.setTimeMillis(60000L); mDataCallSessionStats.conclude(); ArgumentCaptor<DataCallSession> callCaptor = ArgumentCaptor.forClass(DataCallSession.class); verify(mPersistAtomsStorage, times(1)).addDataCallSession( callCaptor.capture()); DataCallSession stats = callCaptor.getValue(); assertTrue(stats.isProvisioningProfile); reset(mPersistAtomsStorage); mSubInfoInternal = new SubscriptionInfoInternal.Builder() .setProfileClass(mSubscriptionManager.PROFILE_CLASS_OPERATIONAL).build(); when(mSubscriptionManagerService.getSubscriptionInfoInternal(mPhone.getSubId())) .thenReturn(mSubInfoInternal); mDataCallSessionStats.onSetupDataCall(ApnSetting.TYPE_IMS, false); mDataCallSessionStats.onSetupDataCallResponse( mDefaultImsResponse, TelephonyManager.NETWORK_TYPE_IWLAN, ApnSetting.TYPE_IMS, ApnSetting.PROTOCOL_IP, DataFailCause.NONE); mDataCallSessionStats.setTimeMillis(60000L); mDataCallSessionStats.conclude(); verify(mPersistAtomsStorage).addDataCallSession(callCaptor.capture()); stats = callCaptor.getValue(); assertFalse(stats.isProvisioningProfile); } } Loading
proto/src/persist_atoms.proto +1 −0 Original line number Diff line number Diff line Loading @@ -406,6 +406,7 @@ message DataCallSession { optional bool is_iwlan_cross_sim = 23; optional bool is_ntn = 24; optional bool is_satellite_transport = 25; optional bool is_provisioning_profile = 26; } message CellularServiceState { Loading
src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java +13 −0 Original line number Diff line number Diff line Loading @@ -309,6 +309,7 @@ public class DataCallSessionStats { copy.isIwlanCrossSim = call.isIwlanCrossSim; copy.isNtn = call.isNtn; copy.isSatelliteTransport = call.isSatelliteTransport; copy.isProvisioningProfile = call.isProvisioningProfile; return copy; } Loading Loading @@ -339,6 +340,7 @@ public class DataCallSessionStats { proto.isNtn = mSatelliteController != null ? mSatelliteController.isInSatelliteModeForCarrierRoaming(mPhone) : false; proto.isSatelliteTransport = isSatellite; proto.isProvisioningProfile = getIsProvisioningProfile(); return proto; } Loading @@ -355,6 +357,17 @@ public class DataCallSessionStats { return subInfo != null && subInfo.isOpportunistic(); } private boolean getIsProvisioningProfile() { SubscriptionInfoInternal subInfo = SubscriptionManagerService.getInstance() .getSubscriptionInfoInternal(mPhone.getSubId()); try { return subInfo.getProfileClass() == SubscriptionManager.PROFILE_CLASS_PROVISIONING; } catch (Exception ex) { loge("getIsProvisioningProfile: " + ex.getMessage()); return false; } } private boolean getIsOos() { ServiceStateTracker serviceStateTracker = mPhone.getServiceStateTracker(); ServiceState serviceState = Loading
src/java/com/android/internal/telephony/metrics/MetricsCollector.java +2 −1 Original line number Diff line number Diff line Loading @@ -1206,7 +1206,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { dataCallSession.isNonDds, dataCallSession.isIwlanCrossSim, dataCallSession.isNtn, dataCallSession.isSatelliteTransport); dataCallSession.isSatelliteTransport, dataCallSession.isProvisioningProfile); } private static StatsEvent buildStatsEvent(ImsRegistrationStats stats) { Loading
tests/telephonytests/src/com/android/internal/telephony/metrics/DataCallSessionStatsTest.java +52 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.telephony.Phone; import com.android.internal.telephony.TelephonyTest; import com.android.internal.telephony.nano.PersistAtomsProto.DataCallSession; import com.android.internal.telephony.subscription.SubscriptionInfoInternal; import org.junit.After; import org.junit.Before; Loading Loading @@ -356,4 +357,55 @@ public class DataCallSessionStatsTest extends TelephonyTest { assertFalse(stats.isNtn); } @Test public void testIsProvisioningProfile() { SubscriptionInfoInternal mSubInfoInternal = new SubscriptionInfoInternal.Builder() .setProfileClass(mSubscriptionManager.PROFILE_CLASS_PROVISIONING).build(); when(mSubscriptionManagerService.getSubscriptionInfoInternal(mPhone.getSubId())) .thenReturn(mSubInfoInternal); mDataCallSessionStats.onSetupDataCall(ApnSetting.TYPE_IMS, false); mDataCallSessionStats.onSetupDataCallResponse( mDefaultImsResponse, TelephonyManager.NETWORK_TYPE_IWLAN, ApnSetting.TYPE_IMS, ApnSetting.PROTOCOL_IP, DataFailCause.NONE); mDataCallSessionStats.setTimeMillis(60000L); mDataCallSessionStats.conclude(); ArgumentCaptor<DataCallSession> callCaptor = ArgumentCaptor.forClass(DataCallSession.class); verify(mPersistAtomsStorage, times(1)).addDataCallSession( callCaptor.capture()); DataCallSession stats = callCaptor.getValue(); assertTrue(stats.isProvisioningProfile); reset(mPersistAtomsStorage); mSubInfoInternal = new SubscriptionInfoInternal.Builder() .setProfileClass(mSubscriptionManager.PROFILE_CLASS_OPERATIONAL).build(); when(mSubscriptionManagerService.getSubscriptionInfoInternal(mPhone.getSubId())) .thenReturn(mSubInfoInternal); mDataCallSessionStats.onSetupDataCall(ApnSetting.TYPE_IMS, false); mDataCallSessionStats.onSetupDataCallResponse( mDefaultImsResponse, TelephonyManager.NETWORK_TYPE_IWLAN, ApnSetting.TYPE_IMS, ApnSetting.PROTOCOL_IP, DataFailCause.NONE); mDataCallSessionStats.setTimeMillis(60000L); mDataCallSessionStats.conclude(); verify(mPersistAtomsStorage).addDataCallSession(callCaptor.capture()); stats = callCaptor.getValue(); assertFalse(stats.isProvisioningProfile); } }