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

Commit d47d4f7b authored by Maarten Hooft's avatar Maarten Hooft Committed by Android (Google) Code Review
Browse files

Merge "Add a delay before walled garden test" into ics-mr0

parents 06044fe1 a81ac7c4
Loading
Loading
Loading
Loading
+47 −18
Original line number Diff line number Diff line
@@ -92,6 +92,14 @@ public class WifiWatchdogStateMachine extends StateMachine {
    private static final String DEFAULT_WALLED_GARDEN_URL =
            "http://clients3.google.com/generate_204";
    private static final int WALLED_GARDEN_SOCKET_TIMEOUT_MS = 10000;

    /* Some carrier apps might have support captive portal handling. Add some delay to allow
        app authentication to be done before our test.
       TODO: This should go away once we provide an API to apps to disable walled garden test
       for certain SSIDs
     */
    private static final int WALLED_GARDEN_START_DELAY_MS = 3000;

    private static final int DNS_INTRATEST_PING_INTERVAL_MS = 200;
    /* With some router setups, it takes a few hunder milli-seconds before connection is active */
    private static final int DNS_START_DELAY_MS = 1000;
@@ -122,8 +130,9 @@ public class WifiWatchdogStateMachine extends StateMachine {
    /**
     * arg1 == mOnlineWatchState.checkCount
     */
    private static final int MESSAGE_SINGLE_DNS_CHECK = BASE + 103;
    private static final int MESSAGE_NETWORK_FOLLOWUP = BASE + 104;
    private static final int MESSAGE_SINGLE_DNS_CHECK               = BASE + 102;
    private static final int MESSAGE_NETWORK_FOLLOWUP               = BASE + 103;
    private static final int MESSAGE_DELAYED_WALLED_GARDEN_CHECK    = BASE + 104;

    private Context mContext;
    private ContentResolver mContentResolver;
@@ -140,6 +149,7 @@ public class WifiWatchdogStateMachine extends StateMachine {
    private DnsCheckingState mDnsCheckingState = new DnsCheckingState();
    private OnlineWatchState mOnlineWatchState = new OnlineWatchState();
    private DnsCheckFailureState mDnsCheckFailureState = new DnsCheckFailureState();
    private DelayWalledGardenState mDelayWalledGardenState = new DelayWalledGardenState();
    private WalledGardenState mWalledGardenState = new WalledGardenState();
    private BlacklistedApState mBlacklistedApState = new BlacklistedApState();

@@ -209,6 +219,7 @@ public class WifiWatchdogStateMachine extends StateMachine {
                addState(mConnectedState, mWatchdogEnabledState);
                    addState(mDnsCheckingState, mConnectedState);
                    addState(mDnsCheckFailureState, mConnectedState);
                    addState(mDelayWalledGardenState, mConnectedState);
                    addState(mWalledGardenState, mConnectedState);
                    addState(mBlacklistedApState, mConnectedState);
                    addState(mOnlineWatchState, mConnectedState);
@@ -727,14 +738,7 @@ public class WifiWatchdogStateMachine extends StateMachine {
                    return HANDLED;
                }

                mLastWalledGardenCheckTime = SystemClock.elapsedRealtime();
                if (isWalledGardenConnection()) {
                    if (DBG) log("Walled garden test complete - walled garden detected");
                    transitionTo(mWalledGardenState);
                } else {
                    if (DBG) log("Walled garden test complete - online");
                    transitionTo(mOnlineWatchState);
                }
                transitionTo(mDelayWalledGardenState);
                return HANDLED;
            }

@@ -780,6 +784,31 @@ public class WifiWatchdogStateMachine extends StateMachine {
        }
    }

    class DelayWalledGardenState extends State {
        @Override
        public void enter() {
            sendMessageDelayed(MESSAGE_DELAYED_WALLED_GARDEN_CHECK, WALLED_GARDEN_START_DELAY_MS);
        }

        @Override
        public boolean processMessage(Message msg) {
            switch (msg.what) {
                case MESSAGE_DELAYED_WALLED_GARDEN_CHECK:
                    mLastWalledGardenCheckTime = SystemClock.elapsedRealtime();
                    if (isWalledGardenConnection()) {
                        if (DBG) log("Walled garden test complete - walled garden detected");
                        transitionTo(mWalledGardenState);
                    } else {
                        if (DBG) log("Walled garden test complete - online");
                        transitionTo(mOnlineWatchState);
                    }
                    return HANDLED;
                default:
                    return NOT_HANDLED;
            }
        }
    }

    class OnlineWatchState extends State {
        /**
         * Signals a short-wait message is enqueued for the current 'guard' counter