Merge "Use the AuthenticationView for outgoing" into ub-mail-master

This commit is contained in:
Martin Hibdon 2014-01-30 23:29:14 +00:00 committed by Android (Google) Code Review
commit 78280d51db
5 changed files with 28 additions and 45 deletions

View File

@ -106,16 +106,9 @@
android:id="@+id/account_require_login_settings_2" android:id="@+id/account_require_login_settings_2"
android:paddingTop="16dip" android:paddingTop="16dip"
android:visibility="gone" > android:visibility="gone" >
<TextView <com.android.email.activity.setup.AuthenticationView
android:layout_height="wrap_content" android:id="@+id/authentication_view"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_marginRight="16dip" android:layout_height="wrap_content"/>
android:text="@string/account_setup_outgoing_password_label" />
<EditText
android:id="@+id/account_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:imeOptions="actionDone" />
</TableRow> </TableRow>
</TableLayout> </TableLayout>

View File

@ -78,17 +78,9 @@
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="match_parent" /> android:layout_width="match_parent" />
<TextView <com.android.email.activity.setup.AuthenticationView
android:text="@string/account_setup_outgoing_password_label" android:id="@+id/authentication_view"
android:layout_height="wrap_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:textAppearance="?android:attr/textAppearanceSmall" android:layout_height="wrap_content"/>
android:textColor="?android:attr/textColorPrimary" />
<EditText
android:id="@+id/account_password"
android:inputType="textPassword"
android:imeOptions="actionDone"
android:layout_height="wrap_content"
android:layout_width="match_parent" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -376,7 +376,7 @@ public class AccountSetupIncomingFragment extends AccountServerBaseFragment
final Account account = mSetupData.getAccount(); final Account account = mSetupData.getAccount();
final HostAuth recvAuth = account.getOrCreateHostAuthRecv(mContext); final HostAuth recvAuth = account.getOrCreateHostAuthRecv(mContext);
mServiceInfo = EmailServiceUtils.getServiceInfo(mContext, recvAuth.mProtocol); mServiceInfo = EmailServiceUtils.getServiceInfo(mContext, recvAuth.mProtocol);
mAuthenticationView.setAuthInfo(mServiceInfo, recvAuth); mAuthenticationView.setAuthInfo(mServiceInfo.offerOAuth, mServiceInfo.offerCerts, recvAuth);
final String username = recvAuth.mLogin; final String username = recvAuth.mLogin;
if (username != null) { if (username != null) {

View File

@ -36,7 +36,10 @@ import android.widget.Spinner;
import com.android.email.R; 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.provider.AccountBackupRestore; import com.android.email.provider.AccountBackupRestore;
import com.android.email.service.EmailServiceUtils;
import com.android.email.service.EmailServiceUtils.EmailServiceInfo;
import com.android.email2.ui.MailActivityEmail; import com.android.email2.ui.MailActivityEmail;
import com.android.emailcommon.Logging; import com.android.emailcommon.Logging;
import com.android.emailcommon.provider.Account; import com.android.emailcommon.provider.Account;
@ -51,7 +54,7 @@ import com.android.mail.utils.LogUtils;
* (for editing existing accounts). * (for editing existing accounts).
*/ */
public class AccountSetupOutgoingFragment extends AccountServerBaseFragment public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
implements OnCheckedChangeListener { implements OnCheckedChangeListener, AuthenticationCallback {
private final static String STATE_KEY_LOADED = "AccountSetupOutgoingFragment.loaded"; private final static String STATE_KEY_LOADED = "AccountSetupOutgoingFragment.loaded";
@ -59,7 +62,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
private static final int SMTP_PORT_SSL = 465; private static final int SMTP_PORT_SSL = 465;
private EditText mUsernameView; private EditText mUsernameView;
private EditText mPasswordView; private AuthenticationView mAuthenticationView;
private EditText mServerView; private EditText mServerView;
private EditText mPortView; private EditText mPortView;
private CheckBox mRequireLoginView; private CheckBox mRequireLoginView;
@ -103,7 +106,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
final Context context = getActivity(); final Context context = getActivity();
mUsernameView = UiUtilities.getView(view, R.id.account_username); mUsernameView = UiUtilities.getView(view, R.id.account_username);
mPasswordView = UiUtilities.getView(view, R.id.account_password); mAuthenticationView = UiUtilities.getView(view, R.id.authentication_view);
mServerView = UiUtilities.getView(view, R.id.account_server); mServerView = UiUtilities.getView(view, R.id.account_server);
mPortView = UiUtilities.getView(view, R.id.account_port); mPortView = UiUtilities.getView(view, R.id.account_port);
mRequireLoginView = UiUtilities.getView(view, R.id.account_require_login); mRequireLoginView = UiUtilities.getView(view, R.id.account_require_login);
@ -162,7 +165,6 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
public void onTextChanged(CharSequence s, int start, int before, int count) { } public void onTextChanged(CharSequence s, int start, int before, int count) { }
}; };
mUsernameView.addTextChangedListener(validationTextWatcher); mUsernameView.addTextChangedListener(validationTextWatcher);
mPasswordView.addTextChangedListener(validationTextWatcher);
mServerView.addTextChangedListener(validationTextWatcher); mServerView.addTextChangedListener(validationTextWatcher);
mPortView.addTextChangedListener(validationTextWatcher); mPortView.addTextChangedListener(validationTextWatcher);
@ -172,6 +174,8 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
// Additional setup only used while in "settings" mode // Additional setup only used while in "settings" mode
onCreateViewSettingsMode(view); onCreateViewSettingsMode(view);
mAuthenticationView.setAuthenticationCallback(this);
return view; return view;
} }
@ -274,10 +278,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
mRequireLoginView.setChecked(true); mRequireLoginView.setChecked(true);
} }
final String password = sendAuth.mPassword; mAuthenticationView.setAuthInfo(true, false, sendAuth);
if (password != null) {
mPasswordView.setText(password);
}
} }
final int flags = sendAuth.mFlags & ~HostAuth.FLAG_AUTHENTICATE; final int flags = sendAuth.mFlags & ~HostAuth.FLAG_AUTHENTICATE;
@ -310,11 +311,9 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
if (enabled && mRequireLoginView.isChecked()) { if (enabled && mRequireLoginView.isChecked()) {
enabled = !TextUtils.isEmpty(mUsernameView.getText()) enabled = !TextUtils.isEmpty(mUsernameView.getText())
&& !TextUtils.isEmpty(mPasswordView.getText()); && mAuthenticationView.getAuthValid();
} }
enableNextButton(enabled); enableNextButton(enabled);
// Warn (but don't prevent) if password has leading/trailing spaces
AccountSettingsUtils.checkPasswordSpaces(mContext, mPasswordView);
} }
/** /**
@ -368,7 +367,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
if (mRequireLoginView.isChecked()) { if (mRequireLoginView.isChecked()) {
final String userName = mUsernameView.getText().toString().trim(); final String userName = mUsernameView.getText().toString().trim();
final String userPassword = mPasswordView.getText().toString(); final String userPassword = mAuthenticationView.getPassword().toString();
sendAuth.setLogin(userName, userPassword); sendAuth.setLogin(userName, userPassword);
} else { } else {
sendAuth.setLogin(null, null); sendAuth.setLogin(null, null);
@ -390,4 +389,9 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
mCallback.onProceedNext(SetupDataFragment.CHECK_OUTGOING, this); mCallback.onProceedNext(SetupDataFragment.CHECK_OUTGOING, this);
clearButtonBounce(); clearButtonBounce();
} }
@Override
public void onValidateStateChanged() {
validateFields();
}
} }

View File

@ -1,9 +1,7 @@
package com.android.email.activity.setup; package com.android.email.activity.setup;
import android.app.Activity; import android.app.Activity;
import android.app.Fragment;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
@ -15,25 +13,20 @@ import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.android.email.R; import com.android.email.R;
import com.android.email.activity.UiUtilities; import com.android.email.activity.UiUtilities;
import com.android.email.service.EmailServiceUtils;
import com.android.email.service.EmailServiceUtils.EmailServiceInfo; 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.email2.ui.MailActivityEmail;
import com.android.emailcommon.Device; import com.android.emailcommon.Device;
import com.android.emailcommon.Logging;
import com.android.emailcommon.VendorPolicyLoader.OAuthProvider; import com.android.emailcommon.VendorPolicyLoader.OAuthProvider;
import com.android.emailcommon.provider.Credential; import com.android.emailcommon.provider.Credential;
import com.android.emailcommon.provider.HostAuth; import com.android.emailcommon.provider.HostAuth;
import com.android.emailcommon.utility.CertificateRequestor; import com.android.emailcommon.utility.CertificateRequestor;
import com.android.mail.utils.LogUtils;
import java.io.IOException; import java.io.IOException;
@ -184,9 +177,10 @@ public class AuthenticationView extends LinearLayout implements HostCallback, On
} }
} }
public void setAuthInfo(final EmailServiceInfo serviceInfo, final HostAuth hostAuth) { public void setAuthInfo(final boolean offerOAuth, final boolean offerCerts,
mOfferOAuth = serviceInfo.offerOAuth; final HostAuth hostAuth) {
mOfferCerts = serviceInfo.offerCerts; mOfferOAuth = offerOAuth;
mOfferCerts = offerCerts;
if (mOfferOAuth) { if (mOfferOAuth) {
final Credential cred = hostAuth.getCredential(getContext()); final Credential cred = hostAuth.getCredential(getContext());