am 9c0463e6: Don\'t offer oauth unless we have at least one provider

* commit '9c0463e6b485b3b50d9c6f110a9ece650cd4a692':
  Don't offer oauth unless we have at least one provider
This commit is contained in:
Martin Hibdon 2014-06-19 21:46:59 +00:00 committed by Android Git Automerger
commit b63b39d03e
3 changed files with 28 additions and 11 deletions

View File

@ -79,6 +79,7 @@ public class AccountSetupCredentialsFragment extends AccountSetupFragment
private boolean mOfferOAuth; private boolean mOfferOAuth;
private boolean mOfferCerts; private boolean mOfferCerts;
private String mProviderId; private String mProviderId;
List<OAuthProvider> mOauthProviders;
private Context mAppContext; private Context mAppContext;
@ -168,16 +169,22 @@ public class AccountSetupCredentialsFragment extends AccountSetupFragment
mAppContext = getActivity().getApplicationContext(); mAppContext = getActivity().getApplicationContext();
mEmailAddress = getArguments().getString(EXTRA_EMAIL); mEmailAddress = getArguments().getString(EXTRA_EMAIL);
final String protocol = getArguments().getString(EXTRA_PROTOCOL); final String protocol = getArguments().getString(EXTRA_PROTOCOL);
// TODO: for now, we might not know what protocol we're using, so just default to mOauthProviders = AccountSettingsUtils.getAllOAuthProviders(mAppContext);
// offering oauth
mOfferOAuth = true;
mOfferCerts = true; mOfferCerts = true;
if (protocol != null) { if (protocol != null) {
final EmailServiceInfo info = EmailServiceUtils.getServiceInfo(mAppContext, protocol); final EmailServiceInfo info = EmailServiceUtils.getServiceInfo(mAppContext, protocol);
if (info != null) { if (info != null) {
mOfferOAuth = info.offerOAuth; if (mOauthProviders.size() > 0) {
mOfferOAuth = info.offerOAuth;
}
mOfferCerts = info.offerCerts; mOfferCerts = info.offerCerts;
} }
} else {
// For now, we might not know what protocol we're using, so just default to
// offering oauth
if (mOauthProviders.size() > 0) {
mOfferOAuth = true;
}
} }
mOAuthGroup.setVisibility(mOfferOAuth ? View.VISIBLE : View.GONE); mOAuthGroup.setVisibility(mOfferOAuth ? View.VISIBLE : View.GONE);
mRegularPasswordText.setVisibility(mOfferOAuth ? View.GONE : View.VISIBLE); mRegularPasswordText.setVisibility(mOfferOAuth ? View.GONE : View.VISIBLE);
@ -279,13 +286,11 @@ public class AccountSetupCredentialsFragment extends AccountSetupFragment
public void onClick(final View view) { public void onClick(final View view) {
final int viewId = view.getId(); final int viewId = view.getId();
if (viewId == R.id.sign_in_with_oauth) { if (viewId == R.id.sign_in_with_oauth) {
List<OAuthProvider> oauthProviders = AccountSettingsUtils.getAllOAuthProviders(
mAppContext);
// TODO currently the only oauth provider we support is google. // TODO currently the only oauth provider we support is google.
// If we ever have more than 1 oauth provider, then we need to implement some sort // If we ever have more than 1 oauth provider, then we need to implement some sort
// of picker UI. For now, just always take the first oauth provider. // of picker UI. For now, just always take the first oauth provider.
if (oauthProviders.size() > 0) { if (mOauthProviders.size() > 0) {
mProviderId = oauthProviders.get(0).id; mProviderId = mOauthProviders.get(0).id;
final Intent i = new Intent(getActivity(), OAuthAuthenticationActivity.class); final Intent i = new Intent(getActivity(), OAuthAuthenticationActivity.class);
i.putExtra(OAuthAuthenticationActivity.EXTRA_EMAIL_ADDRESS, mEmailAddress); i.putExtra(OAuthAuthenticationActivity.EXTRA_EMAIL_ADDRESS, mEmailAddress);
i.putExtra(OAuthAuthenticationActivity.EXTRA_PROVIDER, mProviderId); i.putExtra(OAuthAuthenticationActivity.EXTRA_PROVIDER, mProviderId);

View File

@ -44,6 +44,7 @@ import com.android.email.service.EmailServiceUtils.EmailServiceInfo;
import com.android.email.view.CertificateSelector; import com.android.email.view.CertificateSelector;
import com.android.email.view.CertificateSelector.HostCallback; import com.android.email.view.CertificateSelector.HostCallback;
import com.android.emailcommon.Device; import com.android.emailcommon.Device;
import com.android.emailcommon.VendorPolicyLoader;
import com.android.emailcommon.provider.Account; import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.Credential; import com.android.emailcommon.provider.Credential;
import com.android.emailcommon.provider.HostAuth; import com.android.emailcommon.provider.HostAuth;
@ -54,6 +55,7 @@ import com.android.mail.utils.LogUtils;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
/** /**
* Provides UI for IMAP/POP account settings. * Provides UI for IMAP/POP account settings.
@ -83,6 +85,7 @@ public class AccountSetupIncomingFragment extends AccountServerBaseFragment
private View mDeviceIdSection; private View mDeviceIdSection;
private View mImapPathPrefixSectionView; private View mImapPathPrefixSectionView;
private EditText mImapPathPrefixView; private EditText mImapPathPrefixView;
private boolean mOAuthProviderPresent;
// Delete policy as loaded from the device // Delete policy as loaded from the device
private int mLoadedDeletePolicy; private int mLoadedDeletePolicy;
@ -337,9 +340,13 @@ public class AccountSetupIncomingFragment extends AccountServerBaseFragment
final Account account = mSetupData.getAccount(); final Account account = mSetupData.getAccount();
final HostAuth recvAuth = account.getOrCreateHostAuthRecv(mAppContext); final HostAuth recvAuth = account.getOrCreateHostAuthRecv(mAppContext);
mServiceInfo = mSetupData.getIncomingServiceInfo(getActivity()); mServiceInfo = mSetupData.getIncomingServiceInfo(getActivity());
mAuthenticationView.setAuthInfo(mServiceInfo.offerOAuth, recvAuth); final List<VendorPolicyLoader.OAuthProvider> oauthProviders =
AccountSettingsUtils.getAllOAuthProviders(getActivity());
final boolean offerOAuth = (mServiceInfo.offerOAuth && oauthProviders.size() > 0);
mAuthenticationView.setAuthInfo(offerOAuth, recvAuth);
if (mAuthenticationLabel != null) { if (mAuthenticationLabel != null) {
if (mServiceInfo.offerOAuth) { if (offerOAuth) {
mAuthenticationLabel.setText(R.string.authentication_label); mAuthenticationLabel.setText(R.string.authentication_label);
} else { } else {
mAuthenticationLabel.setText(R.string.account_setup_basics_password_label); mAuthenticationLabel.setText(R.string.account_setup_basics_password_label);

View File

@ -42,6 +42,7 @@ import com.android.email.R;
import com.android.email.activity.UiUtilities; import com.android.email.activity.UiUtilities;
import com.android.email.activity.setup.AuthenticationView.AuthenticationCallback; import com.android.email.activity.setup.AuthenticationView.AuthenticationCallback;
import com.android.email.provider.AccountBackupRestore; import com.android.email.provider.AccountBackupRestore;
import com.android.emailcommon.VendorPolicyLoader;
import com.android.emailcommon.provider.Account; import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.Credential; import com.android.emailcommon.provider.Credential;
import com.android.emailcommon.provider.HostAuth; import com.android.emailcommon.provider.HostAuth;
@ -49,6 +50,8 @@ import com.android.emailcommon.utility.Utility;
import com.android.mail.ui.MailAsyncTaskLoader; import com.android.mail.ui.MailAsyncTaskLoader;
import com.android.mail.utils.LogUtils; import com.android.mail.utils.LogUtils;
import java.util.List;
/** /**
* Provides UI for SMTP account settings (for IMAP/POP accounts). * Provides UI for SMTP account settings (for IMAP/POP accounts).
* *
@ -236,7 +239,9 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
mRequireLoginView.setChecked(true); mRequireLoginView.setChecked(true);
} }
mAuthenticationView.setAuthInfo(true, sendAuth); final List<VendorPolicyLoader.OAuthProvider> oauthProviders =
AccountSettingsUtils.getAllOAuthProviders(getActivity());
mAuthenticationView.setAuthInfo(oauthProviders.size() > 0, sendAuth);
if (mAuthenticationLabel != null) { if (mAuthenticationLabel != null) {
mAuthenticationLabel.setText(R.string.authentication_label); mAuthenticationLabel.setText(R.string.authentication_label);
} }