summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/Tab.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/browser/Tab.java')
-rw-r--r--src/com/android/browser/Tab.java126
1 files changed, 16 insertions, 110 deletions
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 1642568c..a86b2e6d 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -36,7 +36,6 @@ import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.net.Uri;
-import android.net.http.SslError;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -48,7 +47,6 @@ import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.ViewStub;
import android.webkit.ConsoleMessage;
import android.webkit.URLUtil;
import android.webkit.WebResourceResponse;
@@ -68,7 +66,6 @@ import org.codeaurora.swe.BrowserCommandLine;
import org.codeaurora.swe.BrowserDownloadListener;
import org.codeaurora.swe.ClientCertRequestHandler;
import org.codeaurora.swe.HttpAuthHandler;
-import org.codeaurora.swe.SslErrorHandler;
import org.codeaurora.swe.WebBackForwardList;
import org.codeaurora.swe.WebChromeClient;
import org.codeaurora.swe.WebView;
@@ -226,7 +223,6 @@ class Tab implements PictureListener {
String mTitle;
SecurityState mSecurityState;
// This is non-null only when mSecurityState is SECURITY_STATE_BAD_CERTIFICATE.
- SslError mSslCertificateError;
Bitmap mFavicon;
boolean mIsBookmarkedSite;
boolean mIncognito;
@@ -246,11 +242,7 @@ class Tab implements PictureListener {
PageState(Context c, boolean incognito, String url, Bitmap favicon) {
mIncognito = incognito;
mOriginalUrl = mUrl = url;
- if (URLUtil.isHttpsUrl(url)) {
- mSecurityState = SecurityState.SECURITY_STATE_SECURE;
- } else {
- mSecurityState = SecurityState.SECURITY_STATE_NOT_SECURE;
- }
+ mSecurityState = SecurityState.SECURITY_STATE_NOT_SECURE;
mFavicon = favicon;
}
@@ -303,6 +295,20 @@ class Tab implements PictureListener {
return (index & 0xffffff);
}
+ public static SecurityState getWebViewSecurityState(WebView view) {
+ switch (view.getSecurityLevel()) {
+ case WebView.SecurityLevel.EV_SECURE:
+ case WebView.SecurityLevel.SECURE:
+ return SecurityState.SECURITY_STATE_SECURE;
+ case WebView.SecurityLevel.SECURITY_ERROR:
+ return SecurityState.SECURITY_STATE_BAD_CERTIFICATE;
+ case WebView.SecurityLevel.SECURITY_POLICY_WARNING:
+ case WebView.SecurityLevel.SECURITY_WARNING:
+ return SecurityState.SECURITY_STATE_MIXED;
+ }
+ return SecurityState.SECURITY_STATE_NOT_SECURE;
+ }
+
// -------------------------------------------------------------------------
// WebViewClient implementation for the main WebView
// -------------------------------------------------------------------------
@@ -359,6 +365,7 @@ class Tab implements PictureListener {
}
syncCurrentState(view, url);
mWebViewController.onPageFinished(Tab.this);
+ setSecurityState(getWebViewSecurityState(view));
}
@Override
@@ -483,74 +490,6 @@ class Tab implements PictureListener {
}
/**
- * Displays SSL error(s) dialog to the user.
- */
- @Override
- public void onReceivedSslError(final WebView view,
- final SslErrorHandler handler, final SslError error) {
- if (!mInForeground) {
- handler.cancel();
- setSecurityState(SecurityState.SECURITY_STATE_NOT_SECURE);
- return;
- }
- if (mSettings.showSecurityWarnings()) {
- new AlertDialog.Builder(mContext)
- .setTitle(R.string.security_warning)
- .setMessage(R.string.ssl_warnings_header)
- .setIconAttribute(android.R.attr.alertDialogIcon)
- .setPositiveButton(R.string.ssl_continue,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int whichButton) {
- handler.proceed();
- handleProceededAfterSslError(error);
- }
- })
- .setNeutralButton(R.string.view_certificate,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int whichButton) {
- mWebViewController.showSslCertificateOnError(
- view, handler, error);
- }
- })
- .setNegativeButton(R.string.ssl_go_back,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int whichButton) {
- dialog.cancel();
- }
- })
- .setOnCancelListener(
- new DialogInterface.OnCancelListener() {
- @Override
- public void onCancel(DialogInterface dialog) {
- handler.cancel();
- setSecurityState(SecurityState.SECURITY_STATE_NOT_SECURE);
- mWebViewController.onUserCanceledSsl(Tab.this);
- }
- })
- .show();
- } else {
- handler.proceed();
- }
- }
-
- /**
- * Called when an SSL error occurred while loading a resource, but the
- * WebView but chose to proceed anyway based on a decision retained
- * from a previous response to onReceivedSslError(). We update our
- * security state to reflect this.
- */
- @Override
- public void onProceededAfterSslError(WebView view, SslError error) {
- handleProceededAfterSslError(error);
- }
-
- /**
* Displays client certificate request to the user.
*/
@Override
@@ -751,7 +690,6 @@ class Tab implements PictureListener {
// In case we stop when loading an HTTPS page from an HTTP page
// but before a provisional load occurred
mCurrentState.mSecurityState = SecurityState.SECURITY_STATE_NOT_SECURE;
- mCurrentState.mSslCertificateError = null;
}
mCurrentState.mIncognito = view.isPrivateBrowsingEnabled();
}
@@ -1177,16 +1115,6 @@ class Tab implements PictureListener {
return mClient.shouldOverrideUrlLoading(view, url);
}
@Override
- public void onReceivedSslError(WebView view, SslErrorHandler handler,
- SslError error) {
- mClient.onReceivedSslError(view, handler, error);
- }
- @Override
- public void onReceivedClientCertRequest(WebView view,
- ClientCertRequestHandler handler, String host_and_port) {
- mClient.onReceivedClientCertRequest(view, handler, host_and_port);
- }
- @Override
public void onReceivedHttpAuthRequest(WebView view,
HttpAuthHandler handler, String host, String realm) {
mClient.onReceivedHttpAuthRequest(view, handler, host, realm);
@@ -1792,7 +1720,6 @@ class Tab implements PictureListener {
*/
private void setSecurityState(SecurityState securityState) {
mCurrentState.mSecurityState = securityState;
- mCurrentState.mSslCertificateError = null;
mWebViewController.onUpdatedSecurityState(this);
}
@@ -1803,15 +1730,6 @@ class Tab implements PictureListener {
return mCurrentState.mSecurityState;
}
- /**
- * Gets the SSL certificate error, if any, for the page's main resource.
- * This is only non-null when the security state is
- * SECURITY_STATE_BAD_CERTIFICATE.
- */
- SslError getSslCertificateError() {
- return mCurrentState.mSslCertificateError;
- }
-
int getLoadProgress() {
if (mInPageLoad) {
return mPageLoadProgress;
@@ -2148,18 +2066,6 @@ class Tab implements PictureListener {
return builder.toString();
}
- private void handleProceededAfterSslError(SslError error) {
- if (error.getUrl().equals(mCurrentState.mUrl)) {
- // The security state should currently be SECURITY_STATE_SECURE.
- setSecurityState(SecurityState.SECURITY_STATE_BAD_CERTIFICATE);
- mCurrentState.mSslCertificateError = error;
- } else if (getSecurityState() == SecurityState.SECURITY_STATE_SECURE) {
- // The page's main resource is secure and this error is for a
- // sub-resource.
- setSecurityState(SecurityState.SECURITY_STATE_MIXED);
- }
- }
-
// dertermines if the tab contains a dislled page
public boolean isDistilled() {
if (!BrowserCommandLine.hasSwitch("reader-mode")) {