X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/348c24b7edbdcc05d0d774ced9c9a8820e1a2033..afaa2879d192be067cae523b51dad75d89a6c6cb:/src/com/owncloud/android/authentication/SsoWebViewClient.java diff --git a/src/com/owncloud/android/authentication/SsoWebViewClient.java b/src/com/owncloud/android/authentication/SsoWebViewClient.java index 587c33e7..46a980b5 100644 --- a/src/com/owncloud/android/authentication/SsoWebViewClient.java +++ b/src/com/owncloud/android/authentication/SsoWebViewClient.java @@ -1,5 +1,8 @@ -/* ownCloud Android client application - * Copyright (C) 2012-2013 ownCloud Inc. +/** + * ownCloud Android client application + * + * @author David A. Velasco + * Copyright (C) 2015 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, @@ -24,24 +27,16 @@ import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; -import com.owncloud.android.R; import com.owncloud.android.lib.common.network.NetworkUtils; -import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; -import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener; -import com.owncloud.android.utils.Log_OC; +import com.owncloud.android.lib.common.utils.Log_OC; -import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; import android.graphics.Bitmap; import android.net.http.SslCertificate; import android.net.http.SslError; import android.os.Bundle; import android.os.Handler; import android.os.Message; -import android.support.v4.app.FragmentActivity; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.view.KeyEvent; import android.view.View; import android.webkit.CookieManager; @@ -58,14 +53,10 @@ import android.webkit.WebViewClient; * * Assumes that the single-sign-on is kept thanks to a cookie set at the end of the * authentication process. - * - * @author David A. Velasco */ -public class SsoWebViewClient extends WebViewClient implements OnSslUntrustedCertListener { +public class SsoWebViewClient extends WebViewClient { private static final String TAG = SsoWebViewClient.class.getSimpleName(); - - public final static String DIALOG_UNTRUSTED_CERT = "UNTRUSTED CERT"; public interface SsoWebViewClientListener { public void onSsoFinished(String sessionCookie); @@ -76,6 +67,7 @@ public class SsoWebViewClient extends WebViewClient implements OnSslUntrustedCer private WeakReference mListenerRef; private String mTargetUrl; private String mLastReloadedUrlAtError; + public SsoWebViewClient (Context context, Handler listenerHandler, SsoWebViewClientListener listener) { mContext = context; @@ -96,6 +88,7 @@ public class SsoWebViewClient extends WebViewClient implements OnSslUntrustedCer @Override public void onPageStarted (WebView view, String url, Bitmap favicon) { Log_OC.d(TAG, "onPageStarted : " + url); + view.clearCache(true); super.onPageStarted(view, url, favicon); } @@ -132,7 +125,7 @@ public class SsoWebViewClient extends WebViewClient implements OnSslUntrustedCer view.setVisibility(View.GONE); CookieManager cookieManager = CookieManager.getInstance(); final String cookies = cookieManager.getCookie(url); - Log_OC.d(TAG, "Cookies: " + cookies); + //Log_OC.d(TAG, "Cookies: " + cookies); if (mListenerHandler != null && mListenerRef != null) { // this is good idea because onPageFinished is not running in the UI thread mListenerHandler.post(new Runnable() { @@ -149,38 +142,25 @@ public class SsoWebViewClient extends WebViewClient implements OnSslUntrustedCer } } - - @Override - public void doUpdateVisitedHistory (WebView view, String url, boolean isReload) { - Log_OC.d(TAG, "doUpdateVisitedHistory : " + url); - } - @Override public void onReceivedSslError (final WebView view, final SslErrorHandler handler, SslError error) { - Log_OC.d(TAG, "onReceivedSslError : " + error); + Log_OC.e(TAG, "onReceivedSslError : " + error); // Test 1 X509Certificate x509Certificate = getX509CertificateFromError(error); - boolean isKnowServer = false; + boolean isKnownServer = false; if (x509Certificate != null) { - Log_OC.d(TAG, "------>>>>> x509Certificate " + x509Certificate.toString()); - try { - isKnowServer = NetworkUtils.isCertInKnownServersStore((Certificate) x509Certificate, mContext); + isKnownServer = NetworkUtils.isCertInKnownServersStore((Certificate) x509Certificate, mContext); } catch (Exception e) { Log_OC.e(TAG, "Exception: " + e.getMessage()); } } - if (isKnowServer) { + if (isKnownServer) { handler.proceed(); } else { - // Show a dialog with the certificate info - SslUntrustedCertDialog dialog = SslUntrustedCertDialog.newInstance(mContext, x509Certificate, this, handler); - FragmentManager fm = ((FragmentActivity)mContext).getSupportFragmentManager(); - FragmentTransaction ft = fm.beginTransaction(); - dialog.show(ft, DIALOG_UNTRUSTED_CERT); - handler.cancel(); + ((AuthenticatorActivity)mContext).showUntrustedCertDialog(x509Certificate, error, handler); } } @@ -210,54 +190,8 @@ public class SsoWebViewClient extends WebViewClient implements OnSslUntrustedCer @Override public void onReceivedHttpAuthRequest (WebView view, HttpAuthHandler handler, String host, String realm) { Log_OC.d(TAG, "onReceivedHttpAuthRequest : " + host); - } - - @Override - public WebResourceResponse shouldInterceptRequest (WebView view, String url) { - Log_OC.d(TAG, "shouldInterceptRequest : " + url); - return null; - } - - @Override - public void onLoadResource (WebView view, String url) { - Log_OC.d(TAG, "onLoadResource : " + url); - } - - @Override - public void onReceivedLoginRequest (WebView view, String realm, String account, String args) { - Log_OC.d(TAG, "onReceivedLoginRequest : " + realm + ", " + account + ", " + args); - } - - @Override - public void onScaleChanged (WebView view, float oldScale, float newScale) { - Log_OC.d(TAG, "onScaleChanged : " + oldScale + " -> " + newScale); - super.onScaleChanged(view, oldScale, newScale); - } - @Override - public void onUnhandledKeyEvent (WebView view, KeyEvent event) { - Log_OC.d(TAG, "onUnhandledKeyEvent : " + event); - } - - @Override - public boolean shouldOverrideKeyEvent (WebView view, KeyEvent event) { - Log_OC.d(TAG, "shouldOverrideKeyEvent : " + event); - return false; - } - - @Override - public void onFailedSavingCertificate() { - AlertDialog.Builder builder = new AlertDialog.Builder(mContext); - builder.setMessage(mContext.getString(R.string.ssl_validator_not_saved)); - builder.setCancelable(false); - builder.setPositiveButton(R.string.common_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - }; - }); - builder.create().show(); - + ((AuthenticatorActivity)mContext).createAuthenticationDialog(view, handler); } }