aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-13 20:09:45 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-13 20:09:45 +0000
commitd247af3add3e1a83d2b4942796b6e529caef9bd7 (patch)
tree729d5dca2b49306e96e86a35709d839dca3008d7
parentb40cd95a7ad138f8a2a97721dd967d99f4be666d (diff)
parentc8a3b9294d2631ae47d766799c4248fadad4f7a3 (diff)
downloadtelephony-android13-mainline-adbd-release.tar.gz
Snap for 8944493 from c8a3b9294d2631ae47d766799c4248fadad4f7a3 to mainline-adbd-releaseaml_adb_331011050aml_adb_331011040android13-mainline-adbd-release
Change-Id: I2ecdbd50d73747e39856b1a276d21b3709aa8ebf
-rwxr-xr-xsrc/java/com/android/internal/telephony/ServiceStateTracker.java36
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java60
2 files changed, 11 insertions, 85 deletions
diff --git a/src/java/com/android/internal/telephony/ServiceStateTracker.java b/src/java/com/android/internal/telephony/ServiceStateTracker.java
index 3cba6acb77..751d59a623 100755
--- a/src/java/com/android/internal/telephony/ServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/ServiceStateTracker.java
@@ -1086,7 +1086,7 @@ public class ServiceStateTracker extends Handler {
/**
* Turn on or off radio power with option to specify whether it's for emergency call and specify
* a reason for setting the power state.
- * More details check {@link PhoneInternalInterface#setRadioPowerForReason(
+ * More details check {@link PhoneInternalInterface#setRadioPower(
* boolean, boolean, boolean, boolean, int)}.
*/
public void setRadioPowerForReason(boolean power, boolean forEmergencyCall,
@@ -1188,10 +1188,10 @@ public class ServiceStateTracker extends Handler {
if (VDBG) log("received event " + msg.what);
switch (msg.what) {
case EVENT_SET_RADIO_POWER_OFF:
- synchronized (this) {
+ synchronized(this) {
if (mPhone.isUsingNewDataStack()) {
+ mPendingRadioPowerOffAfterDataOff = false;
log("Wait for all data networks torn down timed out. Power off now.");
- cancelPendingRadioPowerOff();
hangupAndPowerOff();
return;
}
@@ -1491,18 +1491,17 @@ public class ServiceStateTracker extends Handler {
case EVENT_ALL_DATA_DISCONNECTED:
if (mPhone.isUsingNewDataStack()) {
log("EVENT_ALL_DATA_DISCONNECTED");
- synchronized (this) {
- if (mPendingRadioPowerOffAfterDataOff) {
- if (DBG) log("EVENT_ALL_DATA_DISCONNECTED, turn radio off now.");
- cancelPendingRadioPowerOff();
- hangupAndPowerOff();
- }
+ if (mPendingRadioPowerOffAfterDataOff) {
+ mPendingRadioPowerOffAfterDataOff = false;
+ removeMessages(EVENT_SET_RADIO_POWER_OFF);
+ if (DBG) log("EVENT_ALL_DATA_DISCONNECTED, turn radio off now.");
+ hangupAndPowerOff();
}
return;
}
int dds = SubscriptionManager.getDefaultDataSubscriptionId();
ProxyController.getInstance().unregisterForAllDataDisconnected(dds, this);
- synchronized (this) {
+ synchronized(this) {
if (mPendingRadioPowerOffAfterDataOff) {
if (DBG) log("EVENT_ALL_DATA_DISCONNECTED, turn radio off now.");
hangupAndPowerOff();
@@ -3133,12 +3132,12 @@ public class ServiceStateTracker extends Handler {
&& getRadioPowerOffDelayTimeoutForImsRegistration() > 0) {
if (DBG) log("setPowerStateToDesired: delaying power off until IMS dereg.");
startDelayRadioOffWaitingForImsDeregTimeout();
+ // Return early here as we do not want to hit the cancel timeout code below.
+ return;
} else {
if (DBG) log("setPowerStateToDesired: powerOffRadioSafely()");
powerOffRadioSafely();
}
- // Return early here as we do not want to hit the cancel timeout code below.
- return;
} else if (mDeviceShuttingDown
&& (mCi.getRadioState() != TelephonyManager.RADIO_POWER_UNAVAILABLE)) {
// !mDesiredPowerState condition above will happen first if the radio is on, so we will
@@ -3148,19 +3147,6 @@ public class ServiceStateTracker extends Handler {
}
// Cancel any pending timeouts because the state has been re-evaluated.
cancelDelayRadioOffWaitingForImsDeregTimeout();
- cancelPendingRadioPowerOff();
- }
-
- /**
- * Cancel the pending radio power off request that was sent to force the radio to power off
- * if waiting for all data to disconnect times out.
- */
- private synchronized void cancelPendingRadioPowerOff() {
- if (mPhone.isUsingNewDataStack() && mPendingRadioPowerOffAfterDataOff) {
- if (DBG) log("cancelPendingRadioPowerOff: cancelling.");
- mPendingRadioPowerOffAfterDataOff = false;
- removeMessages(EVENT_SET_RADIO_POWER_OFF);
- }
}
/**
diff --git a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
index ff3e8b8990..7d9891d374 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
@@ -92,7 +92,6 @@ import androidx.test.filters.FlakyTest;
import com.android.internal.R;
import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager;
-import com.android.internal.telephony.data.DataNetworkController;
import com.android.internal.telephony.metrics.ServiceStateStats;
import com.android.internal.telephony.test.SimulatedCommands;
import com.android.internal.telephony.uicc.IccCardApplicationStatus;
@@ -381,65 +380,6 @@ public class ServiceStateTrackerTest extends TelephonyTest {
}
@Test
- public void testSetRadioPowerWaitForAllDataDisconnected() {
- // Start with radio on
- sst.setRadioPower(true);
- waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
- assertEquals(TelephonyManager.RADIO_POWER_ON, mSimulatedCommands.getRadioState());
-
- // Ensure data is connected
- ArgumentCaptor<DataNetworkController.DataNetworkControllerCallback> callback =
- ArgumentCaptor.forClass(DataNetworkController.DataNetworkControllerCallback.class);
- verify(mDataNetworkController, times(1)).registerDataNetworkControllerCallback(
- callback.capture());
- callback.getValue().onAnyDataNetworkExistingChanged(true);
-
- // Turn on APM and verify that SST is waiting for all data disconnected
- sst.setRadioPower(false);
- waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
- assertEquals(TelephonyManager.RADIO_POWER_ON, mSimulatedCommands.getRadioState());
- verify(mDataNetworkController).tearDownAllDataNetworks(
- eq(3 /* TEAR_DOWN_REASON_AIRPLANE_MODE_ON */));
- assertTrue(sst.hasMessages(38 /* EVENT_SET_RADIO_POWER_OFF */));
-
- // Data disconnected, radio should power off now
- callback.getValue().onAnyDataNetworkExistingChanged(false);
- waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
- assertEquals(TelephonyManager.RADIO_POWER_OFF, mSimulatedCommands.getRadioState());
- }
-
- @Test
- public void testSetRadioPowerCancelWaitForAllDataDisconnected() {
- // Start with radio on
- sst.setRadioPower(true);
- waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
- assertEquals(TelephonyManager.RADIO_POWER_ON, mSimulatedCommands.getRadioState());
-
- // Ensure data is connected
- ArgumentCaptor<DataNetworkController.DataNetworkControllerCallback> callback =
- ArgumentCaptor.forClass(DataNetworkController.DataNetworkControllerCallback.class);
- verify(mDataNetworkController, times(1)).registerDataNetworkControllerCallback(
- callback.capture());
- callback.getValue().onAnyDataNetworkExistingChanged(true);
-
- // Turn on APM and verify that SST is waiting for all data disconnected
- sst.setRadioPower(false);
- waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
- assertEquals(TelephonyManager.RADIO_POWER_ON, mSimulatedCommands.getRadioState());
- verify(mDataNetworkController).tearDownAllDataNetworks(
- eq(3 /* TEAR_DOWN_REASON_AIRPLANE_MODE_ON */));
- assertTrue(sst.hasMessages(38 /* EVENT_SET_RADIO_POWER_OFF */));
-
- // Turn off APM while waiting for data to disconnect
- sst.setRadioPower(true);
- waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
-
- // Check that radio is on and pending power off messages were cleared
- assertFalse(sst.hasMessages(38 /* EVENT_SET_RADIO_POWER_OFF */));
- assertEquals(TelephonyManager.RADIO_POWER_ON, mSimulatedCommands.getRadioState());
- }
-
- @Test
@SmallTest
public void testSetRadioPowerOnForEmergencyCall() {
// Turn off radio first.