X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/d2ee9062fad2591bcb91badbee1636812860a790..b458c92be0e4e02220316b997702d4dcad1af125:/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 9d78d6a8..475b88db 100644 --- a/src/com/owncloud/android/authentication/SsoWebViewClient.java +++ b/src/com/owncloud/android/authentication/SsoWebViewClient.java @@ -17,13 +17,14 @@ package com.owncloud.android.authentication; -import android.content.Context; +import java.lang.ref.WeakReference; + import android.graphics.Bitmap; +import android.os.Handler; import android.view.View; import android.webkit.CookieManager; import android.webkit.WebView; import android.webkit.WebViewClient; -import android.widget.Toast; import com.owncloud.android.Log_OC; @@ -40,11 +41,17 @@ public class SsoWebViewClient extends WebViewClient { private static final String TAG = SsoWebViewClient.class.getSimpleName(); - private Context mContext; + public interface SsoWebViewClientListener { + public void onSsoFinished(String sessionCookie); + } + + private Handler mListenerHandler; + private WeakReference mListenerRef; private String mTargetUrl; - public SsoWebViewClient (Context context) { - mContext = context; + public SsoWebViewClient (Handler listenerHandler, SsoWebViewClientListener listener) { + mListenerHandler = listenerHandler; + mListenerRef = new WeakReference(listener); mTargetUrl = "fake://url.to.be.set"; } @@ -62,8 +69,19 @@ public class SsoWebViewClient extends WebViewClient { if (url.startsWith(mTargetUrl)) { view.setVisibility(View.GONE); CookieManager cookieManager = CookieManager.getInstance(); - String cookies = cookieManager.getCookie(url); - Toast.makeText(mContext, "got cookies: " + cookies, Toast.LENGTH_LONG).show(); + final String cookies = cookieManager.getCookie(url); + if (mListenerHandler != null && mListenerRef != null) { + // this is good idea because onPageStarted is not running in the UI thread + mListenerHandler.post(new Runnable() { + @Override + public void run() { + SsoWebViewClientListener listener = mListenerRef.get(); + if (listener != null) { + listener.onSsoFinished(cookies); + } + } + }); + } } } @@ -77,7 +95,7 @@ public class SsoWebViewClient extends WebViewClient { public void onReceivedError (WebView view, int errorCode, String description, String failingUrl) { Log_OC.e(TAG, "onReceivedError : " + failingUrl); } - + /* @Override @@ -86,11 +104,6 @@ public class SsoWebViewClient extends WebViewClient { } @Override - public void onPageFinished (WebView view, String url) { - Log_OC.e(TAG, "onPageFinished : " + url); - } - - @Override public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) { Log_OC.e(TAG, "onReceivedSslError : " + error); } @@ -101,6 +114,11 @@ public class SsoWebViewClient extends WebViewClient { } @Override + public void onPageFinished (WebView view, String url) { + Log_OC.e(TAG, "onPageFinished : " + url); + } + + @Override public WebResourceResponse shouldInterceptRequest (WebView view, String url) { Log_OC.e(TAG, "shouldInterceptRequest : " + url); return null;