Merge "Verify TelephonyManager thermal mitigation API." am: b5a99a63d2
Original change: https://android-review.googlesource.com/c/platform/cts/+/1510349
Change-Id: Ife62f07eb608e72b97da1315deb36bc6fd9f2a08
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
index 2275b5c..41d7070 100644
--- a/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
@@ -58,6 +58,7 @@
import android.telephony.CarrierBandwidth;
import android.telephony.CarrierConfigManager;
import android.telephony.CellLocation;
+import android.telephony.DataThrottlingRequest;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.PhoneStateListener;
import android.telephony.PinResult;
@@ -67,6 +68,7 @@
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
+import android.telephony.ThermalMitigationRequest;
import android.telephony.UiccCardInfo;
import android.telephony.UiccSlotInfo;
import android.telephony.data.ApnSetting;
@@ -3146,6 +3148,115 @@
}
}
+ @Test
+ public void testSendThermalMitigationRequest() {
+ if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ return;
+ }
+ long arbitraryCompletionWindowSecs = 1L;
+
+
+ // Test a proper data throttling thermal mitigation request.
+ int thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+ mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+ new ThermalMitigationRequest.Builder()
+ .setThermalMitigationAction(ThermalMitigationRequest
+ .THERMAL_MITIGATION_ACTION_DATA_THROTTLING)
+ .setDataThrottlingRequest(new DataThrottlingRequest.Builder()
+ .setDataThrottlingAction(DataThrottlingRequest
+ .DATA_THROTTLING_ACTION_THROTTLE_SECONDARY_CARRIER)
+ .setCompletionDurationMillis(arbitraryCompletionWindowSecs)
+ .build())
+ .build()));
+ // Only verify the result for supported devices on IRadio 1.6+
+ if (mRadioVersion >= RADIO_HAL_VERSION_1_6) {
+ assertEquals(thermalMitigationResult,
+ TelephonyManager.THERMAL_MITIGATION_RESULT_SUCCESS);
+ }
+ // Test negative completionDurationSecs is an invalid parameter.
+ try {
+ thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+ mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+ new ThermalMitigationRequest.Builder()
+ .setThermalMitigationAction(ThermalMitigationRequest
+ .THERMAL_MITIGATION_ACTION_DATA_THROTTLING)
+ .setDataThrottlingRequest(new DataThrottlingRequest.Builder()
+ .setDataThrottlingAction(DataThrottlingRequest
+ .DATA_THROTTLING_ACTION_THROTTLE_PRIMARY_CARRIER
+ )
+ .setCompletionDurationMillis(-1)
+ .build())
+ .build()));
+ } catch (IllegalArgumentException e) {
+ }
+
+ // Test non-zero completionDurationSecs is an invalid parameter for data throttling hold.
+ try {
+ thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+ mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+ new ThermalMitigationRequest.Builder()
+ .setThermalMitigationAction(ThermalMitigationRequest
+ .THERMAL_MITIGATION_ACTION_DATA_THROTTLING)
+ .setDataThrottlingRequest(new DataThrottlingRequest.Builder()
+ .setDataThrottlingAction(
+ DataThrottlingRequest
+ .DATA_THROTTLING_ACTION_HOLD)
+ .setCompletionDurationMillis(
+ arbitraryCompletionWindowSecs)
+ .build())
+ .build()));
+ } catch (IllegalArgumentException e) {
+ }
+
+ // Test null DataThrottlingParams is an invalid parameter for data throttling request.
+ try {
+ thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+ mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+ new ThermalMitigationRequest.Builder()
+ .setThermalMitigationAction(ThermalMitigationRequest
+ .THERMAL_MITIGATION_ACTION_DATA_THROTTLING)
+ .build()));
+ } catch (IllegalArgumentException e) {
+ }
+
+ // Test non-null DataThrottlingParams is an invalid parameter for voice only request.
+ try {
+ thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+ mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+ new ThermalMitigationRequest.Builder()
+ .setThermalMitigationAction(
+ ThermalMitigationRequest
+ .THERMAL_MITIGATION_ACTION_VOICE_ONLY)
+ .setDataThrottlingRequest(new DataThrottlingRequest.Builder()
+ .setDataThrottlingAction(
+ DataThrottlingRequest
+ .DATA_THROTTLING_ACTION_THROTTLE_PRIMARY_CARRIER
+ )
+ .setCompletionDurationMillis(-1)
+ .build())
+ .build()));
+ } catch (IllegalArgumentException e) {
+ }
+
+ // Test non-null DataThrottlingParams is an invalid parameter for radio off request.
+ try {
+ thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+ mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+ new ThermalMitigationRequest.Builder()
+ .setThermalMitigationAction(
+ ThermalMitigationRequest
+ .THERMAL_MITIGATION_ACTION_RADIO_OFF)
+ .setDataThrottlingRequest(new DataThrottlingRequest.Builder()
+ .setDataThrottlingAction(DataThrottlingRequest
+ .DATA_THROTTLING_ACTION_THROTTLE_PRIMARY_CARRIER
+ )
+ .setCompletionDurationMillis(-1)
+ .build())
+ .build()));
+ } catch (IllegalArgumentException e) {
+ }
+ }
+
/**
* Validate Emergency Number address that only contains the dialable character.
*