From: masensio Date: Wed, 21 Aug 2013 16:31:57 +0000 (+0200) Subject: OC-1029: add method isIdPRedirection X-Git-Tag: oc-android-1.4.6~17^2~13 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/7ed9e80013fdc384ea83c57e8a3d03b575abf412?hp=--cc OC-1029: add method isIdPRedirection --- 7ed9e80013fdc384ea83c57e8a3d03b575abf412 diff --git a/src/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/com/owncloud/android/authentication/AuthenticatorActivity.java index 2387ad1e..bab98de6 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -773,7 +773,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList // NOTHING TO DO ; can't find out what situation that leads to the exception in this code, but user logs signal that it happens } - if (result.isTemporalRedirection()) { + if (result.isTemporalRedirection() || result.isIdPRedirection()) { String url = result.getRedirectedLocation(); String targetUrl = mHostBaseUrl + AccountUtils.getWebdavPath(mDiscoveredVersion, mCurrentAuthTokenType); diff --git a/src/com/owncloud/android/files/services/FileDownloader.java b/src/com/owncloud/android/files/services/FileDownloader.java index 9410e6df..0afcf6ac 100644 --- a/src/com/owncloud/android/files/services/FileDownloader.java +++ b/src/com/owncloud/android/files/services/FileDownloader.java @@ -465,7 +465,8 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis Notification finalNotification = new Notification(R.drawable.icon, getString(tickerId), System.currentTimeMillis()); finalNotification.flags |= Notification.FLAG_AUTO_CANCEL; boolean needsToUpdateCredentials = (downloadResult.getCode() == ResultCode.UNAUTHORIZED || - (downloadResult.isTemporalRedirection() && AccountAuthenticator.AUTH_TOKEN_TYPE_SAML_WEB_SSO_SESSION_COOKIE.equals(mDownloadClient.getAuthTokenType()))); + ((downloadResult.isTemporalRedirection() || downloadResult.isIdPRedirection()) + && AccountAuthenticator.AUTH_TOKEN_TYPE_SAML_WEB_SSO_SESSION_COOKIE.equals(mDownloadClient.getAuthTokenType()))); if (needsToUpdateCredentials) { // let the user update credentials with one click Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class); diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index 0d0d538c..48638408 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -794,7 +794,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe String content = null; boolean needsToUpdateCredentials = (uploadResult.getCode() == ResultCode.UNAUTHORIZED || - (uploadResult.isTemporalRedirection() && AccountAuthenticator.AUTH_TOKEN_TYPE_SAML_WEB_SSO_SESSION_COOKIE.equals(mUploadClient.getAuthTokenType()))); + ((uploadResult.isTemporalRedirection() || uploadResult.isIdPRedirection()) + && AccountAuthenticator.AUTH_TOKEN_TYPE_SAML_WEB_SSO_SESSION_COOKIE.equals(mUploadClient.getAuthTokenType()))); if (needsToUpdateCredentials) { // let the user update credentials with one click Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class); diff --git a/src/com/owncloud/android/operations/RemoteOperation.java b/src/com/owncloud/android/operations/RemoteOperation.java index 16ecf27f..0d7e6ec6 100644 --- a/src/com/owncloud/android/operations/RemoteOperation.java +++ b/src/com/owncloud/android/operations/RemoteOperation.java @@ -243,7 +243,7 @@ public abstract class RemoteOperation implements Runnable { repeat = false; if (mCallerActivity != null && mAccount != null && mContext != null && !result.isSuccess() && - (result.getCode() == ResultCode.UNAUTHORIZED || result.isTemporalRedirection())) { + (result.getCode() == ResultCode.UNAUTHORIZED || result.isTemporalRedirection() || result.isIdPRedirection())) { /// possible fail due to lack of authorization in an operation performed in foreground Credentials cred = mClient.getCredentials(); String ssoSessionCookie = mClient.getSsoSessionCookie(); diff --git a/src/com/owncloud/android/operations/RemoteOperationResult.java b/src/com/owncloud/android/operations/RemoteOperationResult.java index 6c5d8b87..7a70744e 100644 --- a/src/com/owncloud/android/operations/RemoteOperationResult.java +++ b/src/com/owncloud/android/operations/RemoteOperationResult.java @@ -24,7 +24,6 @@ import java.net.MalformedURLException; import java.net.SocketException; import java.net.SocketTimeoutException; import java.net.UnknownHostException; -import java.util.Map; import javax.net.ssl.SSLException; @@ -313,13 +312,16 @@ public class RemoteOperationResult implements Serializable { } public boolean isTemporalRedirection() { - return (mHttpCode == 302 || mHttpCode == 307 || - mRedirectedLocation.toUpperCase().contains("SAML") || - mRedirectedLocation.toLowerCase().contains("wayf")); + return (mHttpCode == 302 || mHttpCode == 307); } public String getRedirectedLocation() { return mRedirectedLocation; } + public boolean isIdPRedirection() { + return (mRedirectedLocation.toUpperCase().contains("SAML") || + mRedirectedLocation.toLowerCase().contains("wayf")); + } + } diff --git a/src/com/owncloud/android/syncadapter/FileSyncAdapter.java b/src/com/owncloud/android/syncadapter/FileSyncAdapter.java index 2bf135bc..4103dbf7 100644 --- a/src/com/owncloud/android/syncadapter/FileSyncAdapter.java +++ b/src/com/owncloud/android/syncadapter/FileSyncAdapter.java @@ -225,7 +225,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { } else { if (result.getCode() == RemoteOperationResult.ResultCode.UNAUTHORIZED || - (result.isTemporalRedirection() && getClient().getSsoSessionCookie() != null)) { + ((result.isTemporalRedirection() || result.isIdPRedirection()) && getClient().getSsoSessionCookie() != null)) { mSyncResult.stats.numAuthExceptions++; } else if (result.getException() instanceof DavException) { @@ -308,7 +308,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { notification.flags |= Notification.FLAG_AUTO_CANCEL; boolean needsToUpdateCredentials = (mLastFailedResult != null && ( mLastFailedResult.getCode() == ResultCode.UNAUTHORIZED || - (mLastFailedResult.isTemporalRedirection() && AccountAuthenticator.AUTH_TOKEN_TYPE_SAML_WEB_SSO_SESSION_COOKIE.equals(getClient().getAuthTokenType())) + ((mLastFailedResult.isTemporalRedirection() || mLastFailedResult.isIdPRedirection()) + && AccountAuthenticator.AUTH_TOKEN_TYPE_SAML_WEB_SSO_SESSION_COOKIE.equals(getClient().getAuthTokenType())) ) ); // TODO put something smart in the contentIntent below for all the possible errors