summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hakjun Choi <hakjunc@google.com> 2025-03-20 01:08:07 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-20 01:08:07 -0700
commit6c0cfefa8926603774761f8df53db6cc5eba6c58 (patch)
tree91ed28f39b73b80faf7219beb2e5418114d94af9
parentf45e22b4dafc00323664bd87345c60e626605199 (diff)
parent4054aae04feaf1a61851e609f4404757db0eda5f (diff)
Merge "Add is_nb_iot_ntn field into related atoms" into main
-rw-r--r--proto/src/persist_atoms.proto6
-rw-r--r--src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java10
-rw-r--r--src/java/com/android/internal/telephony/metrics/MetricsCollector.java18
-rw-r--r--src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java8
-rw-r--r--src/java/com/android/internal/telephony/metrics/SatelliteStats.java42
-rw-r--r--src/java/com/android/internal/telephony/metrics/ServiceStateStats.java10
-rw-r--r--src/java/com/android/internal/telephony/metrics/SmsStats.java14
-rw-r--r--src/java/com/android/internal/telephony/satellite/SatelliteController.java4
-rw-r--r--src/java/com/android/internal/telephony/satellite/SatelliteServiceUtils.java17
-rw-r--r--src/java/com/android/internal/telephony/satellite/metrics/CarrierRoamingSatelliteControllerStats.java6
-rw-r--r--src/java/com/android/internal/telephony/satellite/metrics/CarrierRoamingSatelliteSessionStats.java8
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/metrics/DataCallSessionStatsTest.java46
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java9
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java7
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java29
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/satellite/CarrierRoamingSatelliteControllerStatsTest.java47
16 files changed, 256 insertions, 25 deletions
diff --git a/proto/src/persist_atoms.proto b/proto/src/persist_atoms.proto
index 445664d035..c2385aee21 100644
--- a/proto/src/persist_atoms.proto
+++ b/proto/src/persist_atoms.proto
@@ -352,6 +352,7 @@ message IncomingSms {
optional bool is_managed_profile = 16;
optional bool is_ntn = 17;
optional bool is_emergency = 18;
+ optional bool is_nb_iot_ntn = 19;
// Internal use only
optional int32 hashCode = 10001;
@@ -379,6 +380,7 @@ message OutgoingSms {
optional bool is_emergency = 19;
optional bool is_ntn = 20;
optional bool is_mt_sms_polling = 21;
+ optional bool is_nb_iot_ntn = 22;
// Internal use only
optional int32 hashCode = 10001;
@@ -418,6 +420,7 @@ message DataCallSession {
optional bool is_ntn = 24;
optional bool is_satellite_transport = 25;
optional bool is_provisioning_profile = 26;
+ optional bool is_nb_iot_ntn = 27;
}
message CellularServiceState {
@@ -437,6 +440,7 @@ message CellularServiceState {
optional bool isDataEnabled = 14;
optional bool is_iwlan_cross_sim = 15;
optional bool is_ntn = 16;
+ optional bool is_nb_iot_ntn = 17;
// Internal use only
optional int64 last_used_millis = 10001;
@@ -832,6 +836,7 @@ message CarrierRoamingSatelliteSession {
optional int32 service_data_policy = 18;
optional int64 satellite_data_consumed_bytes = 19;
optional bool is_multi_sim = 20;
+ optional bool is_nb_iot_ntn = 21;
}
message CarrierRoamingSatelliteControllerStats {
@@ -846,6 +851,7 @@ message CarrierRoamingSatelliteControllerStats {
optional bool is_device_entitled = 9;
optional bool is_multi_sim = 10;
optional int32 count_of_satellite_sessions = 11;
+ optional bool is_nb_iot_ntn = 12;
}
message SatelliteEntitlement {
diff --git a/src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java b/src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java
index 175f5e4a5d..f3a111caca 100644
--- a/src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java
+++ b/src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java
@@ -310,6 +310,7 @@ public class DataCallSessionStats {
copy.isNtn = call.isNtn;
copy.isSatelliteTransport = call.isSatelliteTransport;
copy.isProvisioningProfile = call.isProvisioningProfile;
+ copy.isNbIotNtn = call.isNbIotNtn;
return copy;
}
@@ -337,8 +338,13 @@ public class DataCallSessionStats {
proto.handoverFailureRat = new int[0];
proto.isNonDds = false;
proto.isIwlanCrossSim = false;
- proto.isNtn = mSatelliteController != null
- ? mSatelliteController.isInSatelliteModeForCarrierRoaming(mPhone) : false;
+ if (mSatelliteController != null) {
+ proto.isNtn = mSatelliteController.isInSatelliteModeForCarrierRoaming(mPhone);
+ proto.isNbIotNtn = mSatelliteController.isInCarrierRoamingNbIotNtn(mPhone);
+ } else {
+ proto.isNtn = false;
+ proto.isNbIotNtn = false;
+ }
proto.isSatelliteTransport = isSatellite;
proto.isProvisioningProfile = getIsProvisioningProfile();
return proto;
diff --git a/src/java/com/android/internal/telephony/metrics/MetricsCollector.java b/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
index 7863b25405..31f4738e01 100644
--- a/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
+++ b/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
@@ -1086,7 +1086,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
state.overrideVoiceService,
state.isDataEnabled,
state.isIwlanCrossSim,
- state.isNtn);
+ state.isNtn,
+ state.isNbIotNtn);
}
private static StatsEvent buildStatsEvent(VoiceCallRatUsage usage) {
@@ -1172,7 +1173,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
sms.count,
sms.isManagedProfile,
sms.isNtn,
- sms.isEmergency);
+ sms.isEmergency,
+ sms.isNbIotNtn);
}
private static StatsEvent buildStatsEvent(OutgoingSms sms) {
@@ -1198,7 +1200,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
sms.isManagedProfile,
sms.isEmergency,
sms.isNtn,
- sms.isMtSmsPolling);
+ sms.isMtSmsPolling,
+ sms.isNbIotNtn);
}
private static StatsEvent buildStatsEvent(DataCallSession dataCallSession) {
@@ -1230,7 +1233,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
dataCallSession.isIwlanCrossSim,
dataCallSession.isNtn,
dataCallSession.isSatelliteTransport,
- dataCallSession.isProvisioningProfile);
+ dataCallSession.isProvisioningProfile,
+ dataCallSession.isNbIotNtn);
}
private static StatsEvent buildStatsEvent(ImsRegistrationStats stats) {
@@ -1603,7 +1607,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
stats.supportedSatelliteServices,
stats.serviceDataPolicy,
stats.satelliteDataConsumedBytes,
- stats.isMultiSim);
+ stats.isMultiSim,
+ stats.isNbIotNtn);
}
private static StatsEvent buildStatsEvent(CarrierRoamingSatelliteControllerStats stats) {
@@ -1619,7 +1624,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
stats.carrierId,
stats.isDeviceEntitled,
stats.isMultiSim,
- stats.countOfSatelliteSessions);
+ stats.countOfSatelliteSessions,
+ stats.isNbIotNtn);
}
private static StatsEvent buildStatsEvent(SatelliteEntitlement stats) {
diff --git a/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java b/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java
index 4346da4b79..9408ffa899 100644
--- a/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java
+++ b/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java
@@ -899,6 +899,7 @@ public class PersistAtomsStorage {
existingStats.isDeviceEntitled = stats.isDeviceEntitled;
existingStats.isMultiSim = stats.isMultiSim;
existingStats.countOfSatelliteSessions += stats.countOfSatelliteSessions;
+ existingStats.isNbIotNtn = stats.isNbIotNtn;
} else {
mAtoms.carrierRoamingSatelliteControllerStats = insertAtRandomPlace(
mAtoms.carrierRoamingSatelliteControllerStats, stats, mMaxNumSatelliteStats);
@@ -2011,7 +2012,8 @@ public class PersistAtomsStorage {
&& state.overrideVoiceService == key.overrideVoiceService
&& state.isDataEnabled == key.isDataEnabled
&& state.isIwlanCrossSim == key.isIwlanCrossSim
- && state.isNtn == key.isNtn) {
+ && state.isNtn == key.isNtn
+ && state.isNbIotNtn == key.isNbIotNtn) {
return state;
}
}
@@ -2442,9 +2444,7 @@ public class PersistAtomsStorage {
CarrierRoamingSatelliteControllerStats key) {
for (CarrierRoamingSatelliteControllerStats stats :
mAtoms.carrierRoamingSatelliteControllerStats) {
- if (stats.carrierId == key.carrierId
- && stats.configDataSource == key.configDataSource
- && stats.isDeviceEntitled == key.isDeviceEntitled) {
+ if (stats.carrierId == key.carrierId) {
return stats;
}
}
diff --git a/src/java/com/android/internal/telephony/metrics/SatelliteStats.java b/src/java/com/android/internal/telephony/metrics/SatelliteStats.java
index a99613acdc..2ccd8b5259 100644
--- a/src/java/com/android/internal/telephony/metrics/SatelliteStats.java
+++ b/src/java/com/android/internal/telephony/metrics/SatelliteStats.java
@@ -1886,6 +1886,7 @@ public class SatelliteStats {
private final int mServiceDataPolicy;
private final long mSatelliteDataConsumedBytes;
private final boolean mIsMultiSim;
+ private final boolean mIsNbIotNtn;
private CarrierRoamingSatelliteSessionParams(Builder builder) {
this.mCarrierId = builder.mCarrierId;
@@ -1910,6 +1911,7 @@ public class SatelliteStats {
this.mSatelliteDataConsumedBytes =
builder.mSatelliteDataConsumedBytes;
this.mIsMultiSim = builder.mIsMultiSim;
+ this.mIsNbIotNtn = builder.mIsNbIotNtn;
}
public int getCarrierId() {
@@ -1992,6 +1994,10 @@ public class SatelliteStats {
return mIsMultiSim;
}
+ public boolean isNbIotNtn() {
+ return mIsNbIotNtn;
+ }
+
/**
* A builder class to create {@link CarrierRoamingSatelliteSessionParams} data structure
* class
@@ -2018,6 +2024,7 @@ public class SatelliteStats {
SatelliteConstants.SATELLITE_ENTITLEMENT_SERVICE_POLICY_UNKNOWN;
long mSatelliteDataConsumedBytes = 0L;
private boolean mIsMultiSim = false;
+ private boolean mIsNbIotNtn = false;
/**
* Sets carrierId value of {@link CarrierRoamingSatelliteSession} atom
@@ -2212,6 +2219,15 @@ public class SatelliteStats {
return new SatelliteStats()
.new CarrierRoamingSatelliteSessionParams(Builder.this);
}
+
+ /**
+ * Sets isNbIotNtn value of {@link CarrierRoamingSatelliteSession} atom, which indicates
+ * whether satellite service tech is NB-IoT-NTN or not
+ */
+ public Builder setIsNbIotNtn(boolean isNbIotNtn) {
+ this.mIsNbIotNtn = isNbIotNtn;
+ return this;
+ }
}
@Override
@@ -2238,6 +2254,7 @@ public class SatelliteStats {
+ ", serviceDataPolicy=" + mServiceDataPolicy
+ ", SatelliteDataConsumedBytes=" + mSatelliteDataConsumedBytes
+ ", isMultiSim=" + mIsMultiSim
+ + ", isNbIotNtn=" + mIsNbIotNtn
+ ")";
}
}
@@ -2259,6 +2276,7 @@ public class SatelliteStats {
private static boolean sIsDeviceEntitled;
private static boolean sIsMultiSim;
private final int mCountOfSatelliteSessions;
+ private static boolean sIsNbIotNtn;
private CarrierRoamingSatelliteControllerStatsParams(Builder builder) {
this.mConfigDataSource = builder.mConfigDataSource;
@@ -2296,6 +2314,11 @@ public class SatelliteStats {
}
this.mCountOfSatelliteSessions = builder.mCountOfSatelliteSessions;
+
+ // isNbIotNtn value should be updated only when it is meaningful.
+ if (builder.mIsNbIotNtn.isPresent()) {
+ sIsNbIotNtn = builder.mIsNbIotNtn.get();
+ }
}
public int getConfigDataSource() {
@@ -2342,6 +2365,10 @@ public class SatelliteStats {
return mCountOfSatelliteSessions;
}
+ public boolean isNbIotNtn() {
+ return sIsNbIotNtn;
+ }
+
/**
* A builder class to create {@link CarrierRoamingSatelliteControllerStatsParams}
* data structure class
@@ -2358,6 +2385,7 @@ public class SatelliteStats {
private Optional<Boolean> mIsDeviceEntitled = Optional.empty();
private Optional<Boolean> mIsMultiSim = Optional.empty();
private int mCountOfSatelliteSessions = 0;
+ private Optional<Boolean> mIsNbIotNtn = Optional.empty();
/**
* Sets configDataSource value of {@link CarrierRoamingSatelliteControllerStats} atom
@@ -2452,6 +2480,12 @@ public class SatelliteStats {
return this;
}
+ /** Sets whether the device is in NB-NoT-NTN state or not. */
+ public Builder setIsNbIotNtn(boolean isNbIotNtn) {
+ this.mIsNbIotNtn = Optional.of(isNbIotNtn);
+ return this;
+ }
+
/**
* Returns CarrierRoamingSatelliteControllerStatsParams, which contains whole component
* of {@link CarrierRoamingSatelliteControllerStats} atom
@@ -2481,7 +2515,8 @@ public class SatelliteStats {
&& sCarrierId == that.getCarrierId()
&& sIsDeviceEntitled == that.isDeviceEntitled()
&& sIsMultiSim == that.isMultiSim()
- && mCountOfSatelliteSessions == that.getCountOfSatelliteSessions();
+ && mCountOfSatelliteSessions == that.getCountOfSatelliteSessions()
+ && sIsNbIotNtn == that.isNbIotNtn();
}
@Override
@@ -2490,7 +2525,7 @@ public class SatelliteStats {
mCountOfSatelliteConfigUpdateRequest, mCountOfSatelliteNotificationDisplayed,
sSatelliteSessionGapMinSec, sSatelliteSessionGapAvgSec,
sSatelliteSessionGapMaxSec, sCarrierId, sIsDeviceEntitled, sIsMultiSim,
- mCountOfSatelliteSessions);
+ mCountOfSatelliteSessions, sIsNbIotNtn);
}
@Override
@@ -2510,6 +2545,7 @@ public class SatelliteStats {
+ ", isDeviceEntitled=" + sIsDeviceEntitled
+ ", isMultiSim=" + sIsMultiSim
+ ", countOfSatelliteSession=" + mCountOfSatelliteSessions
+ + ", isNbIotNtn=" + sIsNbIotNtn
+ ")";
}
}
@@ -3169,6 +3205,7 @@ public class SatelliteStats {
proto.serviceDataPolicy = param.mServiceDataPolicy;
proto.satelliteDataConsumedBytes = param.mSatelliteDataConsumedBytes;
proto.isMultiSim = param.isMultiSim();
+ proto.isNbIotNtn = param.isNbIotNtn();
if (DBG) logd("onCarrierRoamingSatelliteSessionMetrics: " + param);
mAtomsStorage.addCarrierRoamingSatelliteSessionStats(proto);
}
@@ -3188,6 +3225,7 @@ public class SatelliteStats {
proto.isDeviceEntitled = param.isDeviceEntitled();
proto.isMultiSim = param.isMultiSim();
proto.countOfSatelliteSessions = param.getCountOfSatelliteSessions();
+ proto.isNbIotNtn = param.isNbIotNtn();
if (DBG) logd("onCarrierRoamingSatelliteControllerStatsMetrics: " + param);
mAtomsStorage.addCarrierRoamingSatelliteControllerStats(proto);
}
diff --git a/src/java/com/android/internal/telephony/metrics/ServiceStateStats.java b/src/java/com/android/internal/telephony/metrics/ServiceStateStats.java
index 1a909a0619..1d4c31693b 100644
--- a/src/java/com/android/internal/telephony/metrics/ServiceStateStats.java
+++ b/src/java/com/android/internal/telephony/metrics/ServiceStateStats.java
@@ -141,8 +141,13 @@ public class ServiceStateStats extends DataNetworkControllerCallback {
newState.overrideVoiceService = mOverrideVoiceService.get();
newState.isDataEnabled = mPhone.getDataSettingsManager().isDataEnabled();
newState.isIwlanCrossSim = isCrossSimCallingRegistered(mPhone);
- newState.isNtn = satelliteController != null
- && satelliteController.isInSatelliteModeForCarrierRoaming(mPhone);
+ if (satelliteController != null) {
+ newState.isNtn = satelliteController.isInSatelliteModeForCarrierRoaming(mPhone);
+ newState.isNbIotNtn = satelliteController.isInCarrierRoamingNbIotNtn(mPhone);
+ } else {
+ newState.isNtn = false;
+ newState.isNbIotNtn = false;
+ }
TimestampedServiceState prevState =
mLastState.getAndSet(new TimestampedServiceState(newState, now));
addServiceStateAndSwitch(
@@ -317,6 +322,7 @@ public class ServiceStateStats extends DataNetworkControllerCallback {
copy.isDataEnabled = state.isDataEnabled;
copy.isIwlanCrossSim = state.isIwlanCrossSim;
copy.isNtn = state.isNtn;
+ copy.isNbIotNtn = state.isNbIotNtn;
return copy;
}
diff --git a/src/java/com/android/internal/telephony/metrics/SmsStats.java b/src/java/com/android/internal/telephony/metrics/SmsStats.java
index d8b519c100..fdbb20b25f 100644
--- a/src/java/com/android/internal/telephony/metrics/SmsStats.java
+++ b/src/java/com/android/internal/telephony/metrics/SmsStats.java
@@ -60,6 +60,7 @@ import com.android.internal.telephony.ServiceStateTracker;
import com.android.internal.telephony.nano.PersistAtomsProto.IncomingSms;
import com.android.internal.telephony.nano.PersistAtomsProto.OutgoingShortCodeSms;
import com.android.internal.telephony.nano.PersistAtomsProto.OutgoingSms;
+import com.android.internal.telephony.satellite.SatelliteController;
import com.android.internal.telephony.satellite.metrics.CarrierRoamingSatelliteSessionStats;
import com.android.telephony.Rlog;
@@ -242,6 +243,7 @@ public class SmsStats {
proto.isManagedProfile = mPhone.isManagedProfile();
proto.isNtn = isNonTerrestrialNetwork();
proto.isEmergency = isEmergency;
+ proto.isNbIotNtn = isNbIotNtn(mPhone);
return proto;
}
@@ -272,6 +274,7 @@ public class SmsStats {
proto.isEmergency = isEmergency;
proto.isNtn = isNonTerrestrialNetwork();
proto.isMtSmsPolling = isMtSmsPolling;
+ proto.isNbIotNtn = isNbIotNtn(mPhone);
return proto;
}
@@ -344,8 +347,8 @@ public class SmsStats {
*/
static int getSmsHashCode(OutgoingSms sms) {
return Objects.hash(sms.smsFormat, sms.smsTech, sms.rat, sms.sendResult, sms.errorCode,
- sms.isRoaming, sms.isFromDefaultApp, sms.simSlotIndex, sms.isMultiSim,
- sms.isEsim, sms.carrierId);
+ sms.isRoaming, sms.isFromDefaultApp, sms.simSlotIndex, sms.isMultiSim, sms.isEsim,
+ sms.carrierId, sms.isEmergency, sms.isNtn, sms.isMtSmsPolling, sms.isNbIotNtn);
}
/**
@@ -355,7 +358,8 @@ public class SmsStats {
static int getSmsHashCode(IncomingSms sms) {
return Objects.hash(sms.smsFormat, sms.smsTech, sms.rat, sms.smsType,
sms.totalParts, sms.receivedParts, sms.blocked, sms.error,
- sms.isRoaming, sms.simSlotIndex, sms.isMultiSim, sms.isEsim, sms.carrierId);
+ sms.isRoaming, sms.simSlotIndex, sms.isMultiSim, sms.isEsim, sms.carrierId,
+ sms.isNtn, sms.isNbIotNtn);
}
private int getPhoneId() {
@@ -419,6 +423,10 @@ public class SmsStats {
}
}
+ private boolean isNbIotNtn(Phone phone) {
+ return SatelliteController.getInstance().isInCarrierRoamingNbIotNtn(phone);
+ }
+
private void loge(String format, Object... args) {
Rlog.e(TAG, "[" + mPhone.getPhoneId() + "]" + String.format(format, args));
}
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
index 1e69b2fb52..49eb3d9f29 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
@@ -4210,7 +4210,7 @@ public class SatelliteController extends Handler {
* @return {@code true} if phone is in carrier roaming nb iot ntn mode,
* else {@return false}
*/
- private boolean isInCarrierRoamingNbIotNtn(@Nullable Phone phone) {
+ public boolean isInCarrierRoamingNbIotNtn(@Nullable Phone phone) {
if (!mFeatureFlags.carrierRoamingNbIotNtn()) {
plogd("isInCarrierRoamingNbIotNtn: carrier roaming nb iot ntn "
+ "feature flag is disabled");
@@ -6394,7 +6394,7 @@ public class SatelliteController extends Handler {
// Log satellite session end
CarrierRoamingSatelliteSessionStats sessionStats =
mCarrierRoamingSatelliteSessionStatsMap.get(subId);
- sessionStats.onSessionEnd();
+ sessionStats.onSessionEnd(subId);
mCarrierRoamingSatelliteSessionStatsMap.remove(subId);
mCarrierRoamingSatelliteControllerStats.onSessionEnd(subId);
}
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteServiceUtils.java b/src/java/com/android/internal/telephony/satellite/SatelliteServiceUtils.java
index 318e8cf65e..3afaf9f654 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteServiceUtils.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteServiceUtils.java
@@ -720,6 +720,23 @@ public class SatelliteServiceUtils {
return null;
}
+ /** Determines whether the subscription is in carrier roaming NB-IoT NTN or not. */
+ public static boolean isNbIotNtn(int subId) {
+ Phone phone = PhoneFactory.getPhone(SubscriptionManager.getPhoneId(subId));
+ if (phone == null) {
+ logd("isNbIotNtn(): phone is null");
+ return false;
+ }
+
+ SatelliteController satelliteController = SatelliteController.getInstance();
+ if (satelliteController == null) {
+ logd("isNbIotNtn(): satelliteController is null");
+ return false;
+ }
+
+ return satelliteController.isInCarrierRoamingNbIotNtn(phone);
+ }
+
private static void logd(@NonNull String log) {
Rlog.d(TAG, log);
}
diff --git a/src/java/com/android/internal/telephony/satellite/metrics/CarrierRoamingSatelliteControllerStats.java b/src/java/com/android/internal/telephony/satellite/metrics/CarrierRoamingSatelliteControllerStats.java
index 307ee62f77..0fbebf7217 100644
--- a/src/java/com/android/internal/telephony/satellite/metrics/CarrierRoamingSatelliteControllerStats.java
+++ b/src/java/com/android/internal/telephony/satellite/metrics/CarrierRoamingSatelliteControllerStats.java
@@ -27,6 +27,7 @@ import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.metrics.SatelliteStats;
import com.android.internal.telephony.satellite.SatelliteConstants;
+import com.android.internal.telephony.satellite.SatelliteServiceUtils;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
import java.util.ArrayList;
@@ -74,6 +75,7 @@ public class CarrierRoamingSatelliteControllerStats {
.setConfigDataSource(configDataSource)
.setCarrierId(getCarrierIdFromSubscription(subId))
.setIsMultiSim(isMultiSim())
+ .setIsNbIotNtn(SatelliteServiceUtils.isNbIotNtn(subId))
.build());
}
@@ -84,6 +86,7 @@ public class CarrierRoamingSatelliteControllerStats {
.setCountOfEntitlementStatusQueryRequest(ADD_COUNT)
.setCarrierId(getCarrierIdFromSubscription(subId))
.setIsMultiSim(isMultiSim())
+ .setIsNbIotNtn(SatelliteServiceUtils.isNbIotNtn(subId))
.build());
}
@@ -103,6 +106,7 @@ public class CarrierRoamingSatelliteControllerStats {
.setCountOfSatelliteNotificationDisplayed(ADD_COUNT)
.setCarrierId(getCarrierIdFromSubscription(subId))
.setIsMultiSim(isMultiSim())
+ .setIsNbIotNtn(SatelliteServiceUtils.isNbIotNtn(subId))
.build());
}
@@ -122,6 +126,7 @@ public class CarrierRoamingSatelliteControllerStats {
.setIsDeviceEntitled(isDeviceEntitled)
.setCarrierId(getCarrierIdFromSubscription(subId))
.setIsMultiSim(isMultiSim())
+ .setIsNbIotNtn(SatelliteServiceUtils.isNbIotNtn(subId))
.build());
}
@@ -162,6 +167,7 @@ public class CarrierRoamingSatelliteControllerStats {
.setSatelliteSessionGapMaxSec(satelliteSessionGapMaxSec)
.setCarrierId(getCarrierIdFromSubscription(subId))
.setIsMultiSim(isMultiSim())
+ .setIsNbIotNtn(SatelliteServiceUtils.isNbIotNtn(subId))
.build());
}
diff --git a/src/java/com/android/internal/telephony/satellite/metrics/CarrierRoamingSatelliteSessionStats.java b/src/java/com/android/internal/telephony/satellite/metrics/CarrierRoamingSatelliteSessionStats.java
index 6423d3ea7b..7958769676 100644
--- a/src/java/com/android/internal/telephony/satellite/metrics/CarrierRoamingSatelliteSessionStats.java
+++ b/src/java/com/android/internal/telephony/satellite/metrics/CarrierRoamingSatelliteSessionStats.java
@@ -37,6 +37,7 @@ import com.android.internal.telephony.MccTable;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.metrics.SatelliteStats;
import com.android.internal.telephony.satellite.SatelliteConstants;
+import com.android.internal.telephony.satellite.SatelliteServiceUtils;
import com.android.internal.telephony.subscription.SubscriptionInfoInternal;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
@@ -138,7 +139,7 @@ public class CarrierRoamingSatelliteSessionStats {
}
/** Log carrier roaming satellite session end */
- public void onSessionEnd() {
+ public void onSessionEnd(int subId) {
onConnectionEnd();
long dataUsageOnSessionEndBytes = getDataUsage();
logd("update data consumed: " + dataUsageOnSessionEndBytes);
@@ -148,7 +149,7 @@ public class CarrierRoamingSatelliteSessionStats {
dataUsageOnSessionEndBytes - mDataUsageOnSessionStartBytes;
}
logd("satellite data consumed at session: " + mSatelliteDataConsumedBytes);
- reportMetrics();
+ reportMetrics(subId);
mIsNtnRoamingInHomeCountry = false;
mSupportedSatelliteServices = new int[0];
mServiceDataPolicy = SatelliteConstants.SATELLITE_ENTITLEMENT_SERVICE_POLICY_UNKNOWN;
@@ -223,7 +224,7 @@ public class CarrierRoamingSatelliteSessionStats {
}
}
- private void reportMetrics() {
+ private void reportMetrics(int subId) {
int totalSatelliteModeTimeSec = mSessionStartTimeSec > 0
? getElapsedRealtimeInSec() - mSessionStartTimeSec : 0;
int numberOfSatelliteConnections = getNumberOfSatelliteConnections();
@@ -261,6 +262,7 @@ public class CarrierRoamingSatelliteSessionStats {
.setServiceDataPolicy(mServiceDataPolicy)
.setSatelliteDataConsumedBytes(mSatelliteDataConsumedBytes)
.setIsMultiSim(isMultiSim)
+ .setIsNbIotNtn(SatelliteServiceUtils.isNbIotNtn(subId))
.build();
SatelliteStats.getInstance().onCarrierRoamingSatelliteSessionMetrics(params);
logd("Supported satellite services: " + Arrays.toString(mSupportedSatelliteServices));
diff --git a/tests/telephonytests/src/com/android/internal/telephony/metrics/DataCallSessionStatsTest.java b/tests/telephonytests/src/com/android/internal/telephony/metrics/DataCallSessionStatsTest.java
index 7374aef6eb..c389ce4e20 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/metrics/DataCallSessionStatsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/metrics/DataCallSessionStatsTest.java
@@ -408,4 +408,50 @@ public class DataCallSessionStatsTest extends TelephonyTest {
assertFalse(stats.isProvisioningProfile);
}
+
+ @Test
+ public void testIsNbIotNtn() {
+ when(mSatelliteController.isInSatelliteModeForCarrierRoaming(any())).thenReturn(true);
+ when(mSatelliteController.isInCarrierRoamingNbIotNtn(any())).thenReturn(true);
+
+ mDataCallSessionStats.onSetupDataCall(ApnSetting.TYPE_IMS, false);
+ mDataCallSessionStats.onSetupDataCallResponse(
+ mDefaultImsResponse,
+ TelephonyManager.NETWORK_TYPE_LTE,
+ ApnSetting.TYPE_IMS,
+ ApnSetting.PROTOCOL_IP,
+ DataFailCause.NONE);
+
+ mDataCallSessionStats.setTimeMillis(60000L);
+ mDataCallSessionStats.conclude();
+
+ ArgumentCaptor<DataCallSession> callCaptor =
+ ArgumentCaptor.forClass(DataCallSession.class);
+ verify(mPersistAtomsStorage).addDataCallSession(callCaptor.capture());
+ DataCallSession stats = callCaptor.getValue();
+
+ assertTrue(stats.isNbIotNtn);
+
+ reset(mPersistAtomsStorage);
+
+ when(mSatelliteController.isInSatelliteModeForCarrierRoaming(any())).thenReturn(false);
+ when(mSatelliteController.isInCarrierRoamingNbIotNtn(any())).thenReturn(false);
+
+ mDataCallSessionStats.onSetupDataCall(ApnSetting.TYPE_IMS, false);
+ mDataCallSessionStats.onSetupDataCallResponse(
+ mDefaultImsResponse,
+ TelephonyManager.NETWORK_TYPE_LTE,
+ ApnSetting.TYPE_IMS,
+ ApnSetting.PROTOCOL_IP,
+ DataFailCause.NONE);
+
+ mDataCallSessionStats.setTimeMillis(60000L);
+ mDataCallSessionStats.conclude();
+
+
+ verify(mPersistAtomsStorage).addDataCallSession(callCaptor.capture());
+ stats = callCaptor.getValue();
+
+ assertFalse(stats.isNbIotNtn);
+ }
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java b/tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java
index 5bc8e680f5..1e384c114a 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java
@@ -1373,6 +1373,7 @@ public class PersistAtomsStorageTest extends TelephonyTest {
mCarrierRoamingSatelliteSession1.countOfIncomingMms = 1;
mCarrierRoamingSatelliteSession1.countOfOutgoingMms = 1;
mCarrierRoamingSatelliteSession1.isMultiSim = false;
+ mCarrierRoamingSatelliteSession1.isNbIotNtn = false;
mCarrierRoamingSatelliteSession2 = new CarrierRoamingSatelliteSession();
mCarrierRoamingSatelliteSession2.carrierId = 2;
@@ -1392,6 +1393,7 @@ public class PersistAtomsStorageTest extends TelephonyTest {
mCarrierRoamingSatelliteSession2.countOfIncomingMms = 1;
mCarrierRoamingSatelliteSession2.countOfOutgoingMms = 1;
mCarrierRoamingSatelliteSession2.isMultiSim = true;
+ mCarrierRoamingSatelliteSession2.isNbIotNtn = true;
mCarrierRoamingSatelliteSessions = new CarrierRoamingSatelliteSession[] {
mCarrierRoamingSatelliteSession1, mCarrierRoamingSatelliteSession2};
@@ -1409,6 +1411,7 @@ public class PersistAtomsStorageTest extends TelephonyTest {
mCarrierRoamingSatelliteControllerStats1.isDeviceEntitled = true;
mCarrierRoamingSatelliteControllerStats1.isMultiSim = false;
mCarrierRoamingSatelliteControllerStats1.countOfSatelliteSessions = 1;
+ mCarrierRoamingSatelliteControllerStats1.isNbIotNtn = false;
mCarrierRoamingSatelliteControllerStats2 = new CarrierRoamingSatelliteControllerStats();
mCarrierRoamingSatelliteControllerStats2.configDataSource =
@@ -1423,6 +1426,7 @@ public class PersistAtomsStorageTest extends TelephonyTest {
mCarrierRoamingSatelliteControllerStats2.isDeviceEntitled = false;
mCarrierRoamingSatelliteControllerStats2.isMultiSim = true;
mCarrierRoamingSatelliteControllerStats2.countOfSatelliteSessions = 2;
+ mCarrierRoamingSatelliteControllerStats2.isNbIotNtn = true;
// CarrierRoamingSatelliteController has one data point
mCarrierRoamingSatelliteControllerStats = new CarrierRoamingSatelliteControllerStats[] {
@@ -6499,7 +6503,9 @@ public class PersistAtomsStorageTest extends TelephonyTest {
&& stats.countOfIncomingSms == expectedStats.countOfIncomingSms
&& stats.countOfOutgoingSms == expectedStats.countOfOutgoingSms
&& stats.countOfIncomingMms == expectedStats.countOfIncomingMms
- && stats.countOfOutgoingMms == expectedStats.countOfOutgoingMms) {
+ && stats.countOfOutgoingMms == expectedStats.countOfOutgoingMms
+ && stats.isMultiSim == expectedStats.isMultiSim
+ && stats.isNbIotNtn == expectedStats.isNbIotNtn) {
actualCount++;
}
}
@@ -6529,6 +6535,7 @@ public class PersistAtomsStorageTest extends TelephonyTest {
assertEquals(expectedStats.isMultiSim, stats.isMultiSim);
assertEquals(expectedStats.countOfSatelliteSessions,
stats.countOfSatelliteSessions);
+ assertEquals(expectedStats.isNbIotNtn, stats.isNbIotNtn);
count++;
}
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java b/tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java
index d438198448..4c24d40afd 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java
@@ -439,6 +439,8 @@ public class SatelliteStatsTest extends TelephonyTest {
.setCountOfOutgoingSms(11)
.setCountOfIncomingMms(9)
.setCountOfOutgoingMms(14)
+ .setIsMultiSim(false)
+ .setIsNbIotNtn(false)
.build();
mSatelliteStats.onCarrierRoamingSatelliteSessionMetrics(param);
@@ -464,6 +466,8 @@ public class SatelliteStatsTest extends TelephonyTest {
assertEquals(param.getCountOfOutgoingSms(), stats.countOfOutgoingSms);
assertEquals(param.getCountOfIncomingMms(), stats.countOfIncomingMms);
assertEquals(param.getCountOfOutgoingMms(), stats.countOfOutgoingMms);
+ assertEquals(param.isMultiSim(), stats.isMultiSim);
+ assertEquals(param.isNbIotNtn(), stats.isNbIotNtn);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -483,6 +487,7 @@ public class SatelliteStatsTest extends TelephonyTest {
.setIsDeviceEntitled(true)
.setIsMultiSim(true)
.increaseCountOfSatelliteSessions()
+ .setIsNbIotNtn(true)
.build();
mSatelliteStats.onCarrierRoamingSatelliteControllerStatsMetrics(param);
@@ -505,6 +510,7 @@ public class SatelliteStatsTest extends TelephonyTest {
assertEquals(param.isDeviceEntitled(), stats.isDeviceEntitled);
assertEquals(param.isMultiSim(), stats.isMultiSim);
assertEquals(param.getCountOfSatelliteSessions(), stats.countOfSatelliteSessions);
+ assertEquals(param.isNbIotNtn(), stats.isNbIotNtn);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -525,6 +531,7 @@ public class SatelliteStatsTest extends TelephonyTest {
.setIsDeviceEntitled(true)
.setIsMultiSim(true)
.increaseCountOfSatelliteSessions()
+ .setIsNbIotNtn(true)
.build();
mSatelliteStats.onCarrierRoamingSatelliteControllerStatsMetrics(param);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java b/tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java
index 27878d15c7..f140df026c 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java
@@ -1361,6 +1361,35 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertTrue(state.isNtn);
}
+ @Test
+ public void testIsNbIotNtn() {
+ // Using default service state for LTE
+ mServiceStateStats.onServiceStateChanged(mServiceState);
+ mServiceStateStats.incTimeMillis(100L);
+ mServiceStateStats.conclude();
+
+ ArgumentCaptor<CellularServiceState> captor =
+ ArgumentCaptor.forClass(CellularServiceState.class);
+ verify(mPersistAtomsStorage)
+ .addCellularServiceStateAndCellularDataServiceSwitch(captor.capture(), eq(null));
+ CellularServiceState state = captor.getValue();
+ assertFalse(state.isNtn);
+
+ reset(mPersistAtomsStorage);
+ reset(mServiceState);
+
+ when(mSatelliteController.isInSatelliteModeForCarrierRoaming(any())).thenReturn(true);
+ when(mSatelliteController.isInCarrierRoamingNbIotNtn(any())).thenReturn(true);
+ mServiceStateStats.onServiceStateChanged(mServiceState);
+ mServiceStateStats.incTimeMillis(100L);
+ mServiceStateStats.conclude();
+
+ verify(mPersistAtomsStorage)
+ .addCellularServiceStateAndCellularDataServiceSwitch(captor.capture(), eq(null));
+ state = captor.getValue();
+ assertTrue(state.isNbIotNtn);
+ }
+
private void mockWwanPsRat(@NetworkType int rat) {
mockWwanRat(
NetworkRegistrationInfo.DOMAIN_PS,
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/CarrierRoamingSatelliteControllerStatsTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/CarrierRoamingSatelliteControllerStatsTest.java
index e02715ecaf..456fe74003 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/CarrierRoamingSatelliteControllerStatsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/CarrierRoamingSatelliteControllerStatsTest.java
@@ -22,6 +22,7 @@ import static com.android.internal.telephony.satellite.SatelliteConstants.CONFIG
import static com.android.internal.telephony.satellite.SatelliteConstants.CONFIG_DATA_SOURCE_ENTITLEMENT;
import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doReturn;
@@ -63,6 +64,8 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
private SatelliteStats mMockSatelliteStats;
@Mock
private SubscriptionManagerService mMockSubscriptionManagerService;
+ @Mock
+ private SatelliteController mMockSatellitecontroller;
@Before
public void setUp() throws Exception {
@@ -75,6 +78,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
new TestCarrierRoamingSatelliteControllerStats();
replaceInstance(SubscriptionManagerService.class, "sInstance", null,
mMockSubscriptionManagerService);
+ replaceInstance(SatelliteController.class, "sInstance", null, mMockSatellitecontroller);
}
@After
@@ -90,12 +94,14 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
new ExpectedCarrierRoamingSatelliteControllerStatsParam();
doReturn(new int[]{TEST_SUB_ID_0}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+ doReturn(false).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any());
initializeStaticParams();
expected.initializeParams();
expected.setConfigDataSource(CONFIG_DATA_SOURCE_ENTITLEMENT);
expected.setCarrierId(TEST_CARRIER_ID_0);
expected.setIsMultiSim(false);
+ expected.setIsNbIotNtn(false);
clearInvocations(mMockSatelliteStats);
mTestCarrierRoamingSatelliteControllerStats.reportConfigDataSource(TEST_SUB_ID_0,
CONFIG_DATA_SOURCE_ENTITLEMENT);
@@ -104,11 +110,14 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+ doReturn(true).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any());
+
initializeStaticParams();
expected.initializeParams();
expected.setConfigDataSource(CONFIG_DATA_SOURCE_CONFIG_UPDATER);
expected.setCarrierId(TEST_CARRIER_ID_1);
expected.setIsMultiSim(true);
+ expected.setIsNbIotNtn(true);
clearInvocations(mMockSatelliteStats);
mTestCarrierRoamingSatelliteControllerStats.reportConfigDataSource(TEST_SUB_ID_1,
CONFIG_DATA_SOURCE_CONFIG_UPDATER);
@@ -122,12 +131,14 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
new ExpectedCarrierRoamingSatelliteControllerStatsParam();
doReturn(new int[]{TEST_SUB_ID_0}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+ doReturn(false).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any());
initializeStaticParams();
expected.initializeParams();
expected.setCountOfEntitlementStatusQueryRequest(1);
expected.setCarrierId(TEST_CARRIER_ID_0);
expected.setIsMultiSim(false);
+ expected.setIsNbIotNtn(false);
clearInvocations(mMockSatelliteStats);
mTestCarrierRoamingSatelliteControllerStats.reportCountOfEntitlementStatusQueryRequest(
TEST_SUB_ID_0);
@@ -136,11 +147,14 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+ doReturn(true).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any());
+
initializeStaticParams();
expected.initializeParams();
expected.setCountOfEntitlementStatusQueryRequest(1);
expected.setCarrierId(TEST_CARRIER_ID_1);
expected.setIsMultiSim(true);
+ expected.setIsNbIotNtn(true);
clearInvocations(mMockSatelliteStats);
mTestCarrierRoamingSatelliteControllerStats.reportCountOfEntitlementStatusQueryRequest(
TEST_SUB_ID_1);
@@ -154,6 +168,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
new ExpectedCarrierRoamingSatelliteControllerStatsParam();
doReturn(new int[]{TEST_SUB_ID_0}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+
initializeStaticParams();
expected.initializeParams();
expected.setCountOfSatelliteConfigUpdateRequest(1);
@@ -167,6 +182,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+
initializeStaticParams();
expected.initializeParams();
expected.setCountOfSatelliteConfigUpdateRequest(1);
@@ -185,11 +201,14 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
new ExpectedCarrierRoamingSatelliteControllerStatsParam();
doReturn(new int[]{TEST_SUB_ID_0}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+ doReturn(false).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any());
+
initializeStaticParams();
expected.initializeParams();
expected.setCountOfSatelliteNotificationDisplayed(1);
expected.setCarrierId(TEST_CARRIER_ID_0);
expected.setIsMultiSim(false);
+ expected.setIsNbIotNtn(false);
clearInvocations(mMockSatelliteStats);
mTestCarrierRoamingSatelliteControllerStats.reportCountOfSatelliteNotificationDisplayed(
@@ -199,11 +218,14 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+ doReturn(true).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any());
+
initializeStaticParams();
expected.initializeParams();
expected.setCountOfSatelliteNotificationDisplayed(1);
expected.setCarrierId(TEST_CARRIER_ID_1);
expected.setIsMultiSim(true);
+ expected.setIsNbIotNtn(true);
clearInvocations(mMockSatelliteStats);
mTestCarrierRoamingSatelliteControllerStats.reportCountOfSatelliteNotificationDisplayed(
TEST_SUB_ID_1);
@@ -217,6 +239,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
new ExpectedCarrierRoamingSatelliteControllerStatsParam();
doReturn(new int[]{TEST_SUB_ID_0}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+
initializeStaticParams();
expected.initializeParams();
expected.setCarrierId(TEST_CARRIER_ID_0);
@@ -229,6 +252,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+
initializeStaticParams();
expected.initializeParams();
expected.setCarrierId(TEST_CARRIER_ID_1);
@@ -245,11 +269,14 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
new ExpectedCarrierRoamingSatelliteControllerStatsParam();
doReturn(new int[]{TEST_SUB_ID_0}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+ doReturn(false).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any());
+
initializeStaticParams();
expected.initializeParams();
expected.setIsDeviceEntitled(true);
expected.setCarrierId(TEST_CARRIER_ID_0);
expected.setIsMultiSim(false);
+ expected.setIsNbIotNtn(false);
clearInvocations(mMockSatelliteStats);
mTestCarrierRoamingSatelliteControllerStats.reportIsDeviceEntitled(TEST_SUB_ID_0, true);
@@ -258,11 +285,14 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+ doReturn(true).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any());
+
initializeStaticParams();
expected.initializeParams();
expected.setIsDeviceEntitled(false);
expected.setCarrierId(TEST_CARRIER_ID_1);
expected.setIsMultiSim(true);
+ expected.setIsNbIotNtn(true);
clearInvocations(mMockSatelliteStats);
mTestCarrierRoamingSatelliteControllerStats.reportIsDeviceEntitled(TEST_SUB_ID_1, false);
verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics(
@@ -275,10 +305,13 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
new ExpectedCarrierRoamingSatelliteControllerStatsParam();
doReturn(new int[]{TEST_SUB_ID_0}).when(
mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean());
+ doReturn(false).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any());
+
initializeStaticParams();
expected.initializeParams();
expected.setCarrierId(TEST_CARRIER_ID_0);
expected.setIsMultiSim(false);
+ expected.setIsNbIotNtn(false);
clearInvocations(mMockSatelliteStats);
// first satellite session starts
mTestCarrierRoamingSatelliteControllerStats.setCurrentTime(0L);
@@ -379,6 +412,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
private static int sCarrierId;
private static boolean sIsDeviceEntitled;
private static boolean sIsMultiSim;
+ private static boolean sIsNbIotNtn;
public static void backUpStaticParams() {
SatelliteStats.CarrierRoamingSatelliteControllerStatsParams param =
@@ -390,6 +424,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
sCarrierId = param.getCarrierId();
sIsDeviceEntitled = param.isDeviceEntitled();
sIsMultiSim = param.isMultiSim();
+ sIsNbIotNtn = param.isNbIotNtn();
}
public static void restoreStaticParams() {
@@ -401,6 +436,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
.setCarrierId(sCarrierId)
.setIsDeviceEntitled(sIsDeviceEntitled)
.setIsMultiSim(sIsMultiSim)
+ .setIsNbIotNtn(sIsNbIotNtn)
.build());
}
}
@@ -414,6 +450,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
.setCarrierId(UNKNOWN_CARRIER_ID)
.setIsDeviceEntitled(false)
.setIsMultiSim(false)
+ .setIsNbIotNtn(false)
.build());
}
@@ -436,6 +473,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
assertEquals(expected.isDeviceEntitled(), actual.isDeviceEntitled());
assertEquals(expected.isMultiSim(), actual.isMultiSim());
assertEquals(expected.getCountOfSatelliteSessions(), actual.getCountOfSatelliteSessions());
+ assertEquals(expected.isNbIotNtn(), actual.isNbIotNtn());
return true;
}
@@ -451,6 +489,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
private boolean mIsDeviceEntitled;
private boolean mIsMultiSim;
private int mCountOfSatelliteSessions;
+ private boolean mIsNbIotNtn;
public int getConfigDataSource() {
return mConfigDataSource;
@@ -496,6 +535,9 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
return mCountOfSatelliteSessions;
}
+ public boolean isNbIotNtn() {
+ return mIsNbIotNtn;
+ }
public void setConfigDataSource(int configDataSource) {
mConfigDataSource = configDataSource;
@@ -544,6 +586,10 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
mCountOfSatelliteSessions = countOfSatelliteSessions;
}
+ public void setIsNbIotNtn(boolean isNbIotNtn) {
+ mIsNbIotNtn = isNbIotNtn;
+ }
+
public void initializeParams() {
mConfigDataSource = SatelliteConstants.CONFIG_DATA_SOURCE_UNKNOWN;
mCountOfEntitlementStatusQueryRequest = 0;
@@ -556,6 +602,7 @@ public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest {
mIsDeviceEntitled = false;
mIsMultiSim = false;
mCountOfSatelliteSessions = 0;
+ mIsNbIotNtn = false;
}
}