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:paddingTop="16dip"
android:visibility="gone" >
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginRight="16dip"
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" />
<com.android.email.activity.setup.AuthenticationView
android:id="@+id/authentication_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</TableRow>
</TableLayout>

View File

@ -78,17 +78,9 @@
android:imeOptions="actionDone"
android:layout_height="wrap_content"
android:layout_width="match_parent" />
<TextView
android:text="@string/account_setup_outgoing_password_label"
android:layout_height="wrap_content"
<com.android.email.activity.setup.AuthenticationView
android:id="@+id/authentication_view"
android:layout_width="match_parent"
android:textAppearance="?android:attr/textAppearanceSmall"
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" />
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>

View File

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

View File

@ -36,7 +36,10 @@ import android.widget.Spinner;
import com.android.email.R;
import com.android.email.activity.UiUtilities;
import com.android.email.activity.setup.AuthenticationView.AuthenticationCallback;
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.emailcommon.Logging;
import com.android.emailcommon.provider.Account;
@ -51,7 +54,7 @@ import com.android.mail.utils.LogUtils;
* (for editing existing accounts).
*/
public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
implements OnCheckedChangeListener {
implements OnCheckedChangeListener, AuthenticationCallback {
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 EditText mUsernameView;
private EditText mPasswordView;
private AuthenticationView mAuthenticationView;
private EditText mServerView;
private EditText mPortView;
private CheckBox mRequireLoginView;
@ -103,7 +106,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
final Context context = getActivity();
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);
mPortView = UiUtilities.getView(view, R.id.account_port);
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) { }
};
mUsernameView.addTextChangedListener(validationTextWatcher);
mPasswordView.addTextChangedListener(validationTextWatcher);
mServerView.addTextChangedListener(validationTextWatcher);
mPortView.addTextChangedListener(validationTextWatcher);
@ -172,6 +174,8 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
// Additional setup only used while in "settings" mode
onCreateViewSettingsMode(view);
mAuthenticationView.setAuthenticationCallback(this);
return view;
}
@ -274,10 +278,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
mRequireLoginView.setChecked(true);
}
final String password = sendAuth.mPassword;
if (password != null) {
mPasswordView.setText(password);
}
mAuthenticationView.setAuthInfo(true, false, sendAuth);
}
final int flags = sendAuth.mFlags & ~HostAuth.FLAG_AUTHENTICATE;
@ -310,11 +311,9 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
if (enabled && mRequireLoginView.isChecked()) {
enabled = !TextUtils.isEmpty(mUsernameView.getText())
&& !TextUtils.isEmpty(mPasswordView.getText());
&& mAuthenticationView.getAuthValid();
}
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()) {
final String userName = mUsernameView.getText().toString().trim();
final String userPassword = mPasswordView.getText().toString();
final String userPassword = mAuthenticationView.getPassword().toString();
sendAuth.setLogin(userName, userPassword);
} else {
sendAuth.setLogin(null, null);
@ -390,4 +389,9 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
mCallback.onProceedNext(SetupDataFragment.CHECK_OUTGOING, this);
clearButtonBounce();
}
@Override
public void onValidateStateChanged() {
validateFields();
}
}

View File

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