| Index: chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
|
| index e206d32d8be073522ad297e0655f866d723865b2..ec10ac65b460f3d2e62fde67754af11567ae864d 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
|
| @@ -11,6 +11,7 @@ import android.graphics.Bitmap;
|
| import android.support.v7.app.AlertDialog;
|
| import android.text.SpannableString;
|
| import android.text.Spanned;
|
| +import android.text.TextUtils;
|
| import android.text.method.LinkMovementMethod;
|
| import android.text.style.ClickableSpan;
|
| import android.view.LayoutInflater;
|
| @@ -44,6 +45,7 @@ public class AccountChooserDialog
|
| private final int mTitleLinkStart;
|
| private final int mTitleLinkEnd;
|
| private final String mOrigin;
|
| + private final String mSigninButtonText;
|
| private ArrayAdapter<Credential> mAdapter;
|
| private boolean mIsDestroyed;
|
| private boolean mWasDismissedByNative;
|
| @@ -54,10 +56,15 @@ public class AccountChooserDialog
|
| private Credential mCredential;
|
| private long mNativeAccountChooserDialog;
|
| private AlertDialog mDialog;
|
| + /**
|
| + * True, if credentials were selected via "Sign In" button instead of clicking on the credential
|
| + * itself.
|
| + */
|
| + private boolean mSigninButtonClicked;
|
|
|
| private AccountChooserDialog(Context context, long nativeAccountChooserDialog,
|
| Credential[] credentials, String title, int titleLinkStart, int titleLinkEnd,
|
| - String origin) {
|
| + String origin, String signinButtonText) {
|
| mNativeAccountChooserDialog = nativeAccountChooserDialog;
|
| mContext = context;
|
| mCredentials = credentials.clone();
|
| @@ -65,6 +72,8 @@ public class AccountChooserDialog
|
| mTitleLinkStart = titleLinkStart;
|
| mTitleLinkEnd = titleLinkEnd;
|
| mOrigin = origin;
|
| + mSigninButtonText = signinButtonText;
|
| + mSigninButtonClicked = false;
|
| }
|
|
|
| /**
|
| @@ -78,12 +87,12 @@ public class AccountChooserDialog
|
| @CalledByNative
|
| private static AccountChooserDialog createAndShowAccountChooser(WindowAndroid windowAndroid,
|
| long nativeAccountChooserDialog, Credential[] credentials, String title,
|
| - int titleLinkStart, int titleLinkEnd, String origin) {
|
| + int titleLinkStart, int titleLinkEnd, String origin, String signinButtonText) {
|
| Activity activity = windowAndroid.getActivity().get();
|
| if (activity == null) return null;
|
| AccountChooserDialog chooser =
|
| new AccountChooserDialog(activity, nativeAccountChooserDialog, credentials, title,
|
| - titleLinkStart, titleLinkEnd, origin);
|
| + titleLinkStart, titleLinkEnd, origin, signinButtonText);
|
| chooser.show();
|
| return chooser;
|
| }
|
| @@ -164,6 +173,9 @@ public class AccountChooserDialog
|
| mCredential = mCredentials[item];
|
| }
|
| });
|
| + if (!TextUtils.isEmpty(mSigninButtonText)) {
|
| + builder.setPositiveButton(mSigninButtonText, this);
|
| + }
|
| mDialog = builder.create();
|
| mDialog.setOnDismissListener(this);
|
| mDialog.show();
|
| @@ -203,14 +215,19 @@ public class AccountChooserDialog
|
| }
|
|
|
| @Override
|
| - public void onClick(DialogInterface dialog, int whichButton) {}
|
| + public void onClick(DialogInterface dialog, int whichButton) {
|
| + if (whichButton == DialogInterface.BUTTON_POSITIVE) {
|
| + mCredential = mCredentials[0];
|
| + mSigninButtonClicked = true;
|
| + }
|
| + }
|
|
|
| @Override
|
| public void onDismiss(DialogInterface dialog) {
|
| if (!mWasDismissedByNative) {
|
| if (mCredential != null) {
|
| - nativeOnCredentialClicked(
|
| - mNativeAccountChooserDialog, mCredential.getIndex(), mCredential.getType());
|
| + nativeOnCredentialClicked(mNativeAccountChooserDialog, mCredential.getIndex(),
|
| + mCredential.getType(), mSigninButtonClicked);
|
| } else {
|
| nativeCancelDialog(mNativeAccountChooserDialog);
|
| }
|
| @@ -218,8 +235,8 @@ public class AccountChooserDialog
|
| destroy();
|
| }
|
|
|
| - private native void nativeOnCredentialClicked(
|
| - long nativeAccountChooserDialogAndroid, int credentialId, int credentialType);
|
| + private native void nativeOnCredentialClicked(long nativeAccountChooserDialogAndroid,
|
| + int credentialId, int credentialType, boolean signinButtonClicked);
|
| private native void nativeCancelDialog(long nativeAccountChooserDialogAndroid);
|
| private native void nativeDestroy(long nativeAccountChooserDialogAndroid);
|
| private native void nativeOnLinkClicked(long nativeAccountChooserDialogAndroid);
|
|
|