Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(785)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/infobar/UpdatePasswordInfoBar.java

Issue 2256653002: Change password update infobar design according to current mocks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed unused variables Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/infobar/UpdatePasswordInfoBar.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/UpdatePasswordInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/UpdatePasswordInfoBar.java
index 9d458062a26ef78de94e11073a0a2b1fec999743..797c767c684bcaefe7d53ec1944cf55b2ee8388c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/UpdatePasswordInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/UpdatePasswordInfoBar.java
@@ -4,127 +4,72 @@
package org.chromium.chrome.browser.infobar;
-import android.text.Spannable;
import android.text.SpannableString;
-import android.text.TextUtils;
+import android.text.Spanned;
import android.text.style.ClickableSpan;
-import android.view.Menu;
-import android.view.MenuItem;
import android.view.View;
-import android.widget.PopupMenu;
-import android.widget.TextView;
+import android.widget.Spinner;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ResourceId;
+import org.chromium.chrome.browser.infobar.InfoBarControlLayout.InfoBarArrayAdapter;
/**
* The Update Password infobar offers the user the ability to update a password for the site.
*/
-public class UpdatePasswordInfoBar
- extends ConfirmInfoBar implements PopupMenu.OnMenuItemClickListener {
- private final long mNativePtr;
+public class UpdatePasswordInfoBar extends ConfirmInfoBar {
private final String[] mUsernames;
- private final boolean mShowMultipleAccounts;
- private final boolean mIsSmartLockEnabled;
- private final SpannableString mBrandingSpan;
- private int mSelectedUsername;
- private TextView mMessageView;
+ private final int mTitleLinkRangeStart;
+ private final int mTitleLinkRangeEnd;
+ private final String mTitle;
+ private Spinner mUsernamesSpinner;
@CalledByNative
- private static InfoBar show(long nativePtr, int enumeratedIconId, String[] usernames,
- String primaryButtonText, String secondaryButtonText, String branding,
- boolean showMultipleAccounts, boolean isSmartLockEnabled) {
- return new UpdatePasswordInfoBar(nativePtr, ResourceId.mapToDrawableId(enumeratedIconId),
- usernames, primaryButtonText, secondaryButtonText, branding, showMultipleAccounts,
- isSmartLockEnabled);
+ private static InfoBar show(int enumeratedIconId, String[] usernames, String message,
+ int titleLinkStart, int titleLinkEnd, String primaryButtonText,
+ String secondaryButtonText) {
+ return new UpdatePasswordInfoBar(ResourceId.mapToDrawableId(enumeratedIconId), usernames,
+ message, titleLinkStart, titleLinkEnd, primaryButtonText, secondaryButtonText);
}
- private UpdatePasswordInfoBar(long nativePtr, int iconDrawbleId, String[] usernames,
- String primaryButtonText, String secondaryButtonText, String branding,
- boolean showMultipleAccounts, boolean isSmartLockEnabled) {
- super(iconDrawbleId, null, null, null, primaryButtonText, secondaryButtonText);
- mNativePtr = nativePtr;
+ private UpdatePasswordInfoBar(int iconDrawbleId, String[] usernames, String message,
+ int titleLinkStart, int titleLinkEnd, String primaryButtonText,
+ String secondaryButtonText) {
+ super(iconDrawbleId, null, message, null, primaryButtonText, secondaryButtonText);
+ mTitleLinkRangeStart = titleLinkStart;
+ mTitleLinkRangeEnd = titleLinkEnd;
+ mTitle = message;
mUsernames = usernames;
- mShowMultipleAccounts = showMultipleAccounts;
- mIsSmartLockEnabled = isSmartLockEnabled;
- mBrandingSpan = new SpannableString(branding);
- }
-
- private void onUsernameLinkClicked(View v) {
- PopupMenu popup = new PopupMenu(getContext(), v);
- for (int i = 0; i < mUsernames.length; ++i) {
- MenuItem item = popup.getMenu().add(Menu.NONE, i, i, mUsernames[i]);
- }
- popup.setOnMenuItemClickListener(this);
- popup.show();
- }
-
- /**
- * Returns the infobar message for the case when PasswordManager has a guess which credentials
- * pair should be updated. There are two cases possible: there is only one credential pair that
- * should be updated and there several guesses available. In the first case user is presented
- * with the username of the credentials that should be updated in the second case user is able
- * to choose which of the available credentials to update.
- * It also remembered the choice made.
- */
- private CharSequence createUsernameMessageText(int selectedUsername) {
- CharSequence message;
- mSelectedUsername = selectedUsername;
- final String template = getContext().getString(R.string.update_password_for_account);
- final String usernameToDisplay = mUsernames[mSelectedUsername];
- if (mShowMultipleAccounts) {
- final String downPointingArrow = " \u25BE";
- SpannableString usernameSelector =
- new SpannableString(usernameToDisplay + downPointingArrow);
- usernameSelector.setSpan(new ClickableSpan() {
- @Override
- public void onClick(View view) {
- onUsernameLinkClicked(view);
- }
- }, 0, usernameSelector.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
- message = TextUtils.expandTemplate(template, mBrandingSpan, usernameSelector);
- } else {
- message = TextUtils.expandTemplate(template, mBrandingSpan, usernameToDisplay);
- }
- return message;
- }
-
- /**
- * If user have chosen different than was shown username to update, then we need to change the
- * infobar message in order to reflect this choice.
- */
- public boolean onMenuItemClick(MenuItem item) {
- mMessageView.setText(
- createUsernameMessageText(item.getItemId()), TextView.BufferType.SPANNABLE);
- return false;
}
@Override
public void createContent(InfoBarLayout layout) {
super.createContent(layout);
- CharSequence message;
- if (mIsSmartLockEnabled) {
- mBrandingSpan.setSpan(new ClickableSpan() {
+ if (mTitleLinkRangeStart != 0 && mTitleLinkRangeEnd != 0) {
+ SpannableString title = new SpannableString(mTitle);
+ title.setSpan(new ClickableSpan() {
@Override
public void onClick(View view) {
onLinkClicked();
}
- }, 0, mBrandingSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }, mTitleLinkRangeStart, mTitleLinkRangeEnd, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ layout.setMessage(title);
}
- if (mShowMultipleAccounts || mUsernames.length != 0) {
- message = createUsernameMessageText(0);
+
+ InfoBarControlLayout controlLayout = layout.addControlLayout();
+ if (mUsernames.length > 1) {
+ InfoBarArrayAdapter<String> usernamesAdapter =
+ new InfoBarArrayAdapter<String>(getContext(), mUsernames);
+ mUsernamesSpinner = controlLayout.addSpinner(
+ R.id.password_infobar_accounts_spinner, usernamesAdapter);
} else {
- String template = getContext().getString(R.string.update_password);
- message = TextUtils.expandTemplate(template, mBrandingSpan);
+ controlLayout.addDescription(mUsernames[0]);
}
-
- mMessageView = layout.getMessageTextView();
- mMessageView.setText(message, TextView.BufferType.SPANNABLE);
}
@CalledByNative
private int getSelectedUsername() {
- return mSelectedUsername;
+ return mUsernames.length == 1 ? 0 : mUsernamesSpinner.getSelectedItemPosition();
}
}

Powered by Google App Engine
This is Rietveld 408576698