X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/f67af8fd6495e339c1fa1f24460fce9d48da2910..ab6b82750e2f99dad49c99de913dd0f208fda244:/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java diff --git a/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java b/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java index 60b032eb..a5219a22 100644 --- a/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java +++ b/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java @@ -29,6 +29,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.CookieManager; +import android.webkit.CookieSyncManager; import android.webkit.WebBackForwardList; import android.webkit.WebSettings; import android.webkit.WebView; @@ -57,7 +58,7 @@ public class SamlWebViewDialog extends SherlockDialogFragment { private static final String ARG_TARGET_URL = "TARGET_URL"; private static final String KEY_WEBVIEW_STATE = "WEBVIEW_STATE"; - //private WebView mSsoWebView; + private WebView mSsoWebView; private SsoWebViewClient mWebViewClient; private String mInitialUrl; @@ -115,6 +116,8 @@ public class SamlWebViewDialog extends SherlockDialogFragment { public void onCreate(Bundle savedInstanceState) { Log_OC.d(TAG, "onCreate"); super.onCreate(savedInstanceState); + + CookieSyncManager.createInstance(getActivity()); if (savedInstanceState == null) { mInitialUrl = getArguments().getString(ARG_INITIAL_URL); @@ -152,28 +155,28 @@ public class SamlWebViewDialog extends SherlockDialogFragment { // Inflate layout of the dialog View rootView = inflater.inflate(R.layout.sso_dialog, container, false); // null parent view because it will go in the dialog layout - WebView ssoWebView = (WebView) rootView.findViewById(R.id.sso_webview); + mSsoWebView = (WebView) rootView.findViewById(R.id.sso_webview); mWebViewClient.setTargetUrl(mTargetUrl); - ssoWebView.setWebViewClient(mWebViewClient); + mSsoWebView.setWebViewClient(mWebViewClient); if (savedInstanceState == null) { Log_OC.d(TAG, " initWebView start"); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); cookieManager.removeAllCookie(); - ssoWebView.loadUrl(mInitialUrl); + mSsoWebView.loadUrl(mInitialUrl); } else { Log_OC.d(TAG, " restoreWebView start"); - WebBackForwardList history = ssoWebView.restoreState(savedInstanceState.getBundle(KEY_WEBVIEW_STATE)); + WebBackForwardList history = mSsoWebView.restoreState(savedInstanceState.getBundle(KEY_WEBVIEW_STATE)); if (history == null) { Log_OC.e(TAG, "Error restoring WebView state ; back to starting URL"); - ssoWebView.loadUrl(mInitialUrl); + mSsoWebView.loadUrl(mInitialUrl); } } - WebSettings webSettings = ssoWebView.getSettings(); + WebSettings webSettings = mSsoWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setBuiltInZoomControls(true); webSettings.setLoadWithOverviewMode(false); @@ -195,7 +198,7 @@ public class SamlWebViewDialog extends SherlockDialogFragment { // Save the state of the WebView Bundle webviewState = new Bundle(); - ((WebView) getDialog().findViewById(R.id.sso_webview)).saveState(webviewState); + mSsoWebView.saveState(webviewState); outState.putBundle(KEY_WEBVIEW_STATE, webviewState); } @@ -203,6 +206,8 @@ public class SamlWebViewDialog extends SherlockDialogFragment { public void onDestroyView() { Log_OC.d(TAG, "onDestroyView"); + mSsoWebView.setWebViewClient(null); + // Work around bug: http://code.google.com/p/android/issues/detail?id=17423 Dialog dialog = getDialog(); if ((dialog != null)) {