Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5b3a1e2 authored by Sarah Chin's avatar Sarah Chin
Browse files

Don't report data stall for disconnected DataNetwork

Also check for DATA_STALL_RECOVERY_ON_BAD_NETWORK setting before
notifying validation state changed.

Test: atest DataNetworkControllerTest
Test: manual sanity; verified data is not affected
Bug: 229641474
Change-Id: Ia3a94642415ee4cf57ac5a90fa56d8f5efc9d5e3
parent 551c254f
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -2612,8 +2612,18 @@ public class DataNetworkController extends Handler {
            return;
        }

        // TODO: Add DataConfigManager.isRecoveryOnBadNetworkEnabled()
        if (!mDataSettingsManager.isRecoveryOnBadNetworkEnabled()) {
            log("Ignore data network validation status changed becaused"
                    + "data stall recovery is disabled.");
            return;
        }

        if (dataNetwork.isInternetSupported()) {
            if (status == NetworkAgent.VALIDATION_STATUS_NOT_VALID
                    && (dataNetwork.getCurrentState() == null || dataNetwork.isDisconnected())) {
                log("Ignoring invalid validation status for disconnected DataNetwork");
                return;
            }
            mDataNetworkControllerCallbacks.forEach(callback -> callback.invokeFromExecutor(
                    () -> callback.onInternetDataNetworkValidationStatusChanged(status)));
        }
+11 −0
Original line number Diff line number Diff line
@@ -564,6 +564,15 @@ public class DataSettingsManager extends Handler {
        return mDataEnabledOverride.isDataAllowedInVoiceCall();
    }

    /**
     * Check whether data stall recovery on bad network is enabled.
     * @return {@code true} if data stall recovery is enabled and {@code false} otherwise.
     */
    public boolean isRecoveryOnBadNetworkEnabled() {
        return Settings.Global.getInt(mResolver,
                Settings.Global.DATA_STALL_RECOVERY_ON_BAD_NETWORK, 1) == 1;
    }

    private void notifyDataEnabledChanged(boolean enabled,
            @TelephonyManager.DataEnabledChangedReason int reason) {
        logl("notifyDataEnabledChanged: enabled=" + enabled + ", reason="
@@ -669,6 +678,8 @@ public class DataSettingsManager extends Handler {
        pw.println("device_provisioned=" + Settings.Global.getInt(
                mResolver, Settings.Global.DEVICE_PROVISIONED, 0));
        pw.println("isProvisioningDataEnabled=" + isProvisioningDataEnabled());
        pw.println("data_stall_recovery_on_bad_network=" + Settings.Global.getInt(
                mResolver, Settings.Global.DATA_STALL_RECOVERY_ON_BAD_NETWORK, 1));
        pw.println("mDataEnabledSettings=" + mDataEnabledSettings.entrySet().stream()
                .map(entry ->
                        dataEnabledChangedReasonToString(entry.getKey()) + "=" + entry.getValue())