diff options
author | Paul Jensen <pauljensen@google.com> | 2015-06-03 17:40:42 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-06-03 17:40:42 +0000 |
commit | d424e8a01694651a4c10f1d3b11ff55ff6e9fd35 (patch) | |
tree | 75f3b5fa89e9f60ad486c28b7676c2a43b9abaa7 /packages/CaptivePortalLogin | |
parent | cc681b819b18c767488d7cf82cc4f50f79cbd9e6 (diff) | |
parent | 736432edd2bbfd1873b26e987c9ca36470d831d4 (diff) | |
download | frameworks_base-d424e8a01694651a4c10f1d3b11ff55ff6e9fd35.zip frameworks_base-d424e8a01694651a4c10f1d3b11ff55ff6e9fd35.tar.gz frameworks_base-d424e8a01694651a4c10f1d3b11ff55ff6e9fd35.tar.bz2 |
am 736432ed: Merge "Disallow going back to initial empty page in captive portal app" into mnc-dev
* commit '736432edd2bbfd1873b26e987c9ca36470d831d4':
Disallow going back to initial empty page in captive portal app
Diffstat (limited to 'packages/CaptivePortalLogin')
-rw-r--r-- | packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java index 4c907a3..d876264 100644 --- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java +++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java @@ -66,6 +66,7 @@ public class CaptivePortalLoginActivity extends Activity { private NetworkCallback mNetworkCallback; private ConnectivityManager mCm; private boolean mLaunchBrowser = false; + private MyWebViewClient mWebViewClient; @Override protected void onCreate(Bundle savedInstanceState) { @@ -115,7 +116,8 @@ public class CaptivePortalLoginActivity extends Activity { myWebView.clearCache(true); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); - myWebView.setWebViewClient(new MyWebViewClient()); + mWebViewClient = new MyWebViewClient(); + myWebView.setWebViewClient(mWebViewClient); myWebView.setWebChromeClient(new MyWebChromeClient()); // Start initial page load so WebView finishes loading proxy settings. // Actual load of mUrl is initiated by MyWebViewClient. @@ -174,7 +176,7 @@ public class CaptivePortalLoginActivity extends Activity { @Override public void onBackPressed() { WebView myWebView = (WebView) findViewById(R.id.webview); - if (myWebView.canGoBack()) { + if (myWebView.canGoBack() && mWebViewClient.allowBack()) { myWebView.goBack(); } else { super.onBackPressed(); @@ -255,7 +257,12 @@ public class CaptivePortalLoginActivity extends Activity { getResources().getDisplayMetrics()) / TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics()); - private boolean mFirstPageLoad = true; + private int mPagesLoaded; + + // If we haven't finished cleaning up the history, don't allow going back. + public boolean allowBack() { + return mPagesLoaded > 1; + } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { @@ -264,26 +271,32 @@ public class CaptivePortalLoginActivity extends Activity { done(Result.WANTED_AS_IS); return; } - if (mFirstPageLoad) return; + // The first page load is used only to cause the WebView to + // fetch the proxy settings. Don't update the URL bar, and + // don't check if the captive portal is still there. + if (mPagesLoaded == 0) return; + // For internally generated pages, leave URL bar listing prior URL as this is the URL + // the page refers to. + if (!url.startsWith(INTERNAL_ASSETS)) { + final TextView myUrlBar = (TextView) findViewById(R.id.url_bar); + myUrlBar.setText(url); + } testForCaptivePortal(); } @Override public void onPageFinished(WebView view, String url) { - if (mFirstPageLoad) { - mFirstPageLoad = false; + mPagesLoaded++; + if (mPagesLoaded == 1) { // Now that WebView has loaded at least one page we know it has read in the proxy // settings. Now prompt the WebView read the Network-specific proxy settings. setWebViewProxy(); // Load the real page. view.loadUrl(mURL.toString()); return; - } - // For internally generated pages, leave URL bar listing prior URL as this is the URL - // the page refers to. - if (!url.startsWith(INTERNAL_ASSETS)) { - final TextView myUrlBar = (TextView) findViewById(R.id.url_bar); - myUrlBar.setText(url); + } else if (mPagesLoaded == 2) { + // Prevent going back to empty first page. + view.clearHistory(); } testForCaptivePortal(); } |