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

Commit a9af8434 authored by Ecco Park's avatar Ecco Park
Browse files

OsuLogin: disconnect wifi network when activitiy is destroyed



When the OsuLogin activity is killed during OSU Procedure such as
swiping it from apps list, it needs to
disconnect AP to reset provisioning flow.
Otherwise, provisioing flow is stucked in waiting for response up to
4 mins.

Bug: 124778422
Test: verified that AP is disconnected and provisioning flow is reset
when killing the application on recent app list.
Change-Id: Ic52fc9f4225bf60eb2ff10635a0659c08273b37d
Signed-off-by: default avatarEcco Park <eccopark@google.com>
parent 339aa01b
Loading
Loading
Loading
Loading
+13 −9
Original line number Original line Diff line number Diff line
@@ -46,8 +46,6 @@ import com.android.hotspot2.R;
import java.net.MalformedURLException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URL;




/**
/**
 * Online Sign Up Login Web View launched during Provision Process of Hotspot 2.0 rel2.
 * Online Sign Up Login Web View launched during Provision Process of Hotspot 2.0 rel2.
 */
 */
@@ -64,6 +62,7 @@ public class OsuLoginActivity extends Activity {
    private WebView mWebView;
    private WebView mWebView;
    private SwipeRefreshLayout mSwipeRefreshLayout;
    private SwipeRefreshLayout mSwipeRefreshLayout;
    private ProgressBar mProgressBar;
    private ProgressBar mProgressBar;
    private boolean mForceDisconnect = true;


    @Override
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -141,6 +140,7 @@ public class OsuLoginActivity extends Activity {
                if (DBG) {
                if (DBG) {
                    Log.d(TAG, "Lost for the current Network, close the browser");
                    Log.d(TAG, "Lost for the current Network, close the browser");
                }
                }
                mForceDisconnect = false; // It is already disconnected.
                if (mNetwork.equals(network)) {
                if (mNetwork.equals(network)) {
                    finishAndRemoveTask();
                    finishAndRemoveTask();
                }
                }
@@ -193,12 +193,6 @@ public class OsuLoginActivity extends Activity {
                mWebView.goBack();
                mWebView.goBack();
                return true;
                return true;
            }
            }

            // In case of back key, it needs to disconnect current connection with OSU AP to
            // abort current Provisioning flow.
            if (mWifiManager != null) {
                mWifiManager.disconnect();
            }
        }
        }
        return super.onKeyDown(keyCode, event);
        return super.onKeyDown(keyCode, event);
    }
    }
@@ -207,6 +201,11 @@ public class OsuLoginActivity extends Activity {
    protected void onDestroy() {
    protected void onDestroy() {
        if (mNetworkCallback != null) {
        if (mNetworkCallback != null) {
            mCm.unregisterNetworkCallback(mNetworkCallback);
            mCm.unregisterNetworkCallback(mNetworkCallback);
            mNetworkCallback = null;
        }
        if (mWifiManager != null && mForceDisconnect) {
            mWifiManager.disconnect();
            mWifiManager = null;
        }
        }
        super.onDestroy();
        super.onDestroy();
    }
    }
@@ -232,6 +231,7 @@ public class OsuLoginActivity extends Activity {


    private class OsuWebViewClient extends WebViewClient {
    private class OsuWebViewClient extends WebViewClient {
        boolean mPageError = false;
        boolean mPageError = false;
        boolean mRedirectResponseReceived = false;


        @Override
        @Override
        public void onPageStarted(WebView view, String urlString, Bitmap favicon) {
        public void onPageStarted(WebView view, String urlString, Bitmap favicon) {
@@ -247,6 +247,10 @@ public class OsuLoginActivity extends Activity {


            // Do not show the page error on UI.
            // Do not show the page error on UI.
            if (mPageError) {
            if (mPageError) {
                if (mRedirectResponseReceived) {
                    // Do not disconnect current connection while provisioning is in progress.
                    mForceDisconnect = false;
                }
                finishAndRemoveTask();
                finishAndRemoveTask();
            }
            }
        }
        }
@@ -255,6 +259,7 @@ public class OsuLoginActivity extends Activity {
        public void onReceivedError(WebView view, WebResourceRequest request,
        public void onReceivedError(WebView view, WebResourceRequest request,
                WebResourceError error) {
                WebResourceError error) {
            if (request.getUrl().toString().startsWith("http://127.0.0.1")) {
            if (request.getUrl().toString().startsWith("http://127.0.0.1")) {
                mRedirectResponseReceived = true;
                view.stopLoading();
                view.stopLoading();
            }
            }


@@ -266,5 +271,4 @@ public class OsuLoginActivity extends Activity {
            }
            }
         }
         }
    }
    }

}
}