Merge remote-tracking branch 'origin/develop' into navigationDrawer_basic
authormasensio <masensio@solidgear.es>
Mon, 15 Jun 2015 12:07:49 +0000 (14:07 +0200)
committermasensio <masensio@solidgear.es>
Mon, 15 Jun 2015 12:07:49 +0000 (14:07 +0200)
Conflicts:
.travis.yml
src/com/owncloud/android/authentication/AuthenticatorActivity.java

1  2 
.travis.yml
src/com/owncloud/android/authentication/AuthenticatorActivity.java

diff --combined .travis.yml
@@@ -1,13 -1,12 +1,13 @@@
  language: android
  android:
    components:
 -    - build-tools-20.0.0
 +    - build-tools-22.0.1
      - android-19
 +    - android-16
  before_install:
    - rm pom.xml
  script:
    - ./setup_env.sh ant
    - ant clean
    - ant debug
-   
 -
++  
@@@ -42,7 -42,6 +42,7 @@@ import android.os.Bundle
  import android.os.Handler;\r
  import android.os.IBinder;\r
  import android.preference.PreferenceManager;\r
 +import android.support.v4.app.DialogFragment;\r
  import android.support.v4.app.Fragment;\r
  import android.support.v4.app.FragmentManager;\r
  import android.support.v4.app.FragmentTransaction;\r
@@@ -66,6 -65,7 +66,6 @@@ import android.widget.TextView
  import android.widget.TextView.OnEditorActionListener;\r
  import android.widget.Toast;\r
  \r
 -import com.actionbarsherlock.app.SherlockDialogFragment;\r
  import com.owncloud.android.MainApp;\r
  import com.owncloud.android.R;\r
  import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener;\r
@@@ -189,10 -189,8 +189,10 @@@ public class AuthenticatorActivity exte
      /// Identifier of operation in progress which result shouldn't be lost \r
      private long mWaitingForOpId = Long.MAX_VALUE;\r
  \r
 -    private final String BASIC_TOKEN_TYPE = AccountTypeUtils.getAuthTokenTypePass(MainApp.getAccountType());\r
 -    private final String OAUTH_TOKEN_TYPE = AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType());\r
 +    private final String BASIC_TOKEN_TYPE = AccountTypeUtils.getAuthTokenTypePass(\r
 +            MainApp.getAccountType());\r
 +    private final String OAUTH_TOKEN_TYPE = AccountTypeUtils.getAuthTokenTypeAccessToken(\r
 +            MainApp.getAccountType());\r
      private final String SAML_TOKEN_TYPE =\r
              AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType());\r
  \r
      protected void onCreate(Bundle savedInstanceState) {\r
          //Log_OC.wtf(TAG,  "onCreate init");\r
          super.onCreate(savedInstanceState);\r
 -        getWindow().requestFeature(Window.FEATURE_NO_TITLE);\r
 +\r
 +        // Workaround, for fixing a problem with Android Library Suppor v7 19\r
 +        //getWindow().requestFeature(Window.FEATURE_NO_TITLE);\r
 +        if (getSupportActionBar() != null) {\r
 +            getSupportActionBar().hide();\r
 +\r
 +            getSupportActionBar().setDisplayHomeAsUpEnabled(false);\r
 +            getSupportActionBar().setDisplayShowHomeEnabled(false);\r
 +            getSupportActionBar().setDisplayShowTitleEnabled(false);\r
 +        }\r
  \r
          mIsFirstAuthAttempt = true;\r
  \r
              Intent getServerInfoIntent = new Intent();\r
              getServerInfoIntent.setAction(OperationsService.ACTION_GET_SERVER_INFO);\r
              getServerInfoIntent.putExtra(\r
 -                    OperationsService.EXTRA_SERVER_URL,\r
 -                    normalizeUrlSuffix(uri)\r
 +                OperationsService.EXTRA_SERVER_URL,\r
 +                normalizeUrlSuffix(uri)\r
              );\r
              if (mOperationsServiceBinder != null) {\r
                  mWaitingForOpId = mOperationsServiceBinder.queueNewOperation(getServerInfoIntent);\r
          dialog.show(getSupportFragmentManager(), WAIT_DIALOG_TAG);\r
  \r
          /// validate credentials accessing the root folder\r
 -        OwnCloudCredentials credentials = OwnCloudCredentialsFactory.newBasicCredentials(username, password);\r
 +        OwnCloudCredentials credentials = OwnCloudCredentialsFactory.newBasicCredentials(username,\r
 +                password);\r
          accessRootFolder(credentials);\r
      }\r
  \r
  \r
              if ( mAction == ACTION_CREATE) {\r
                  mUsernameInput.setText(username);\r
-                 success = createAccount();\r
+                 success = createAccount(result);\r
              } else {\r
  \r
                  if (!mUsernameInput.getText().toString().equals(username)) {\r
  \r
                      } catch (AccountNotFoundException e) {\r
                          Log_OC.e(TAG, "Account " + mAccount + " was removed!", e);\r
 -                        Toast.makeText(this, R.string.auth_account_does_not_exist, Toast.LENGTH_SHORT).show();\r
 +                        Toast.makeText(this, R.string.auth_account_does_not_exist,\r
 +                                Toast.LENGTH_SHORT).show();\r
                          finish();\r
                      }\r
                  }\r
                      url = "http://" + url;\r
                  }\r
              }\r
 -        \r
 +\r
              url = normalizeUrlSuffix(url);\r
          }\r
          return (url != null ? url : "");\r
              Log_OC.d(TAG, "Got ACCESS TOKEN: " + mAuthToken);\r
  \r
              /// validate token accessing to root folder / getting session\r
 -            OwnCloudCredentials credentials = OwnCloudCredentialsFactory.newBearerCredentials(mAuthToken);\r
 +            OwnCloudCredentials credentials = OwnCloudCredentialsFactory.newBearerCredentials(\r
 +                    mAuthToken);\r
              accessRootFolder(credentials);\r
  \r
          } else {\r
              Log_OC.d(TAG, "Successful access - time to save the account");\r
  \r
              boolean success = false;\r
\r
              if (mAction == ACTION_CREATE) {\r
-                 success = createAccount();\r
+                 success = createAccount(result);\r
  \r
              } else {\r
                  try {\r
  \r
                  } catch (AccountNotFoundException e) {\r
                      Log_OC.e(TAG, "Account " + mAccount + " was removed!", e);\r
 -                    Toast.makeText(this, R.string.auth_account_does_not_exist, Toast.LENGTH_SHORT).show();\r
 +                    Toast.makeText(this, R.string.auth_account_does_not_exist,\r
 +                            Toast.LENGTH_SHORT).show();\r
                      finish();\r
                  }\r
              }\r
          response.putString(AccountManager.KEY_ACCOUNT_TYPE, mAccount.type);\r
  \r
          if (AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType()).\r
 -                equals(mAuthTokenType)) { \r
 +                equals(mAuthTokenType)) {\r
              response.putString(AccountManager.KEY_AUTHTOKEN, mAuthToken);\r
              // the next line is necessary, notifications are calling directly to the \r
              // AuthenticatorActivity to update, without AccountManager intervention\r
       * \r
       * TODO Decide how to name the OAuth accounts\r
       */\r
-     private boolean createAccount() {\r
+     private boolean createAccount(RemoteOperationResult authResult) {\r
          /// create and save new ownCloud account\r
          boolean isOAuth = AccountTypeUtils.\r
                  getAuthTokenTypeAccessToken(MainApp.getAccountType()).equals(mAuthTokenType);\r
          boolean isSaml =  AccountTypeUtils.\r
                  getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType);\r
  \r
+         String lastPermanentLocation = authResult.getLastPermanentLocation();\r
+         if (lastPermanentLocation != null) {\r
+             mServerInfo.mBaseUrl = AccountUtils.trimWebdavSuffix(lastPermanentLocation);\r
+         }\r
\r
          Uri uri = Uri.parse(mServerInfo.mBaseUrl);\r
          String username = mUsernameInput.getText().toString().trim();\r
          if (isOAuth) {\r
              /// add user data to the new account; TODO probably can be done in the last parameter \r
              //      addAccountExplicitly, or in KEY_USERDATA\r
              mAccountMgr.setUserData(\r
-                     mAccount, Constants.KEY_OC_VERSION,    mServerInfo.mVersion.getVersion()\r
+                     mAccount, Constants.KEY_OC_VERSION, mServerInfo.mVersion.getVersion()\r
              );\r
              mAccountMgr.setUserData(\r
                      mAccount, Constants.KEY_OC_BASE_URL,   mServerInfo.mBaseUrl\r
              mAuthToken = sessionCookie;\r
              getRemoteUserNameOperation(sessionCookie, true);\r
              Fragment fd = getSupportFragmentManager().findFragmentByTag(SAML_DIALOG_TAG);\r
 -            if (fd != null && fd instanceof SherlockDialogFragment) {\r
 -                Dialog d = ((SherlockDialogFragment)fd).getDialog();\r
 +            if (fd != null && fd instanceof DialogFragment) {\r
 +                Dialog d = ((DialogFragment)fd).getDialog();\r
                  if (d != null && d.isShowing()) {\r
                      d.dismiss();\r
                  }\r
      \r
      private void dismissDialog(String dialogTag){\r
          Fragment frag = getSupportFragmentManager().findFragmentByTag(dialogTag);\r
 -        if (frag != null && frag instanceof SherlockDialogFragment) {\r
 -            SherlockDialogFragment dialog = (SherlockDialogFragment) frag;\r
 +        if (frag != null && frag instanceof DialogFragment) {\r
 +            DialogFragment dialog = (DialogFragment) frag;\r
              dialog.dismiss();\r
          }\r
      }\r
          mIsFirstAuthAttempt = true;\r
      }\r
  \r
 -\r
  }\r