Loading src/java/com/android/internal/telephony/data/DataEvaluation.java +2 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,8 @@ public class DataEvaluation { DATA_RESTRICTED_BY_NETWORK(true), /** Radio power is off (i.e. airplane mode on) */ RADIO_POWER_OFF(true), /** Data setup now allowed due to pending tear down all networks. */ PENDING_TEAR_DOWN_ALL(true), /** Airplane mode is forcibly turned on by the carrier. */ RADIO_DISABLED_BY_CARRIER(true), /** Underlying data service is not bound. */ Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +14 −0 Original line number Diff line number Diff line Loading @@ -319,6 +319,12 @@ public class DataNetworkController extends Handler { private final @NonNull SparseArray<RegistrationManager.RegistrationCallback> mImsFeatureRegistrationCallbacks = new SparseArray<>(); /** * {@code true} if {@link #tearDownAllDataNetworks(int)} was invoked and waiting for all * networks torn down. */ private boolean mPendingTearDownAllNetworks = false; /** The broadcast receiver. */ private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override Loading Loading @@ -1193,6 +1199,11 @@ public class DataNetworkController extends Handler { evaluation.addDataDisallowedReason(DataDisallowedReason.DATA_RESTRICTED_BY_NETWORK); } // Check if there are pending tear down all networks request. if (mPendingTearDownAllNetworks) { evaluation.addDataDisallowedReason(DataDisallowedReason.PENDING_TEAR_DOWN_ALL); } // Check if the request is preferred on cellular and radio is/will be turned off. // We are using getDesiredPowerState() instead of isRadioOn() because we also don't want // to setup data network when radio power is about to be turned off. Loading Loading @@ -1908,6 +1919,7 @@ public class DataNetworkController extends Handler { + "), retryDelayMillis=" + retryDelayMillis + "ms."); mDataNetworkList.remove(dataNetwork); if (mAnyDataNetworkExisting && mDataNetworkList.isEmpty()) { mPendingTearDownAllNetworks = false; mAnyDataNetworkExisting = false; mDataNetworkControllerCallbacks.forEach(callback -> callback.invokeFromExecutor( () -> callback.onAnyDataNetworkExistingChanged(mAnyDataNetworkExisting))); Loading Loading @@ -2091,6 +2103,7 @@ public class DataNetworkController extends Handler { if (mAnyDataNetworkExisting && mDataNetworkList.isEmpty()) { log("All data networks disconnected now."); mPendingTearDownAllNetworks = false; mAnyDataNetworkExisting = false; mDataNetworkControllerCallbacks.forEach(callback -> callback.invokeFromExecutor( () -> callback.onAnyDataNetworkExistingChanged(mAnyDataNetworkExisting))); Loading Loading @@ -2646,6 +2659,7 @@ public class DataNetworkController extends Handler { return; } mPendingTearDownAllNetworks = true; for (DataNetwork dataNetwork : mDataNetworkList) { if (!dataNetwork.isDisconnecting()) { tearDownGracefully(dataNetwork, reason); Loading Loading
src/java/com/android/internal/telephony/data/DataEvaluation.java +2 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,8 @@ public class DataEvaluation { DATA_RESTRICTED_BY_NETWORK(true), /** Radio power is off (i.e. airplane mode on) */ RADIO_POWER_OFF(true), /** Data setup now allowed due to pending tear down all networks. */ PENDING_TEAR_DOWN_ALL(true), /** Airplane mode is forcibly turned on by the carrier. */ RADIO_DISABLED_BY_CARRIER(true), /** Underlying data service is not bound. */ Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +14 −0 Original line number Diff line number Diff line Loading @@ -319,6 +319,12 @@ public class DataNetworkController extends Handler { private final @NonNull SparseArray<RegistrationManager.RegistrationCallback> mImsFeatureRegistrationCallbacks = new SparseArray<>(); /** * {@code true} if {@link #tearDownAllDataNetworks(int)} was invoked and waiting for all * networks torn down. */ private boolean mPendingTearDownAllNetworks = false; /** The broadcast receiver. */ private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override Loading Loading @@ -1193,6 +1199,11 @@ public class DataNetworkController extends Handler { evaluation.addDataDisallowedReason(DataDisallowedReason.DATA_RESTRICTED_BY_NETWORK); } // Check if there are pending tear down all networks request. if (mPendingTearDownAllNetworks) { evaluation.addDataDisallowedReason(DataDisallowedReason.PENDING_TEAR_DOWN_ALL); } // Check if the request is preferred on cellular and radio is/will be turned off. // We are using getDesiredPowerState() instead of isRadioOn() because we also don't want // to setup data network when radio power is about to be turned off. Loading Loading @@ -1908,6 +1919,7 @@ public class DataNetworkController extends Handler { + "), retryDelayMillis=" + retryDelayMillis + "ms."); mDataNetworkList.remove(dataNetwork); if (mAnyDataNetworkExisting && mDataNetworkList.isEmpty()) { mPendingTearDownAllNetworks = false; mAnyDataNetworkExisting = false; mDataNetworkControllerCallbacks.forEach(callback -> callback.invokeFromExecutor( () -> callback.onAnyDataNetworkExistingChanged(mAnyDataNetworkExisting))); Loading Loading @@ -2091,6 +2103,7 @@ public class DataNetworkController extends Handler { if (mAnyDataNetworkExisting && mDataNetworkList.isEmpty()) { log("All data networks disconnected now."); mPendingTearDownAllNetworks = false; mAnyDataNetworkExisting = false; mDataNetworkControllerCallbacks.forEach(callback -> callback.invokeFromExecutor( () -> callback.onAnyDataNetworkExistingChanged(mAnyDataNetworkExisting))); Loading Loading @@ -2646,6 +2659,7 @@ public class DataNetworkController extends Handler { return; } mPendingTearDownAllNetworks = true; for (DataNetwork dataNetwork : mDataNetworkList) { if (!dataNetwork.isDisconnecting()) { tearDownGracefully(dataNetwork, reason); Loading