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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill/AutofillCreditCardEditor.java

Issue 2109643003: Add billing address to masked server credit cards. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Delete AutofillServerCardPreferences.java Created 4 years, 6 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/preferences/autofill/AutofillCreditCardEditor.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill/AutofillCreditCardEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill/AutofillCreditCardEditor.java
index ae2e59d3554dfca85117df4952e881a964d4c361..9fb215e860c11031039ebfd43289ca5015f61582 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill/AutofillCreditCardEditor.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill/AutofillCreditCardEditor.java
@@ -16,8 +16,10 @@ import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
+import android.widget.TextView;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.EmbedContentViewActivity;
import org.chromium.chrome.browser.autofill.PersonalDataManager;
import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile;
import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard;
@@ -32,10 +34,17 @@ import java.util.Locale;
* Provides the Java-ui for editing a Credit Card autofill entry.
*/
public class AutofillCreditCardEditor extends AutofillEditorBase {
+ private TextView mServerCardLabel;
+ private TextView mServerCardSublabel;
+ private View mServerCardEditLinkContainer;
+ private View mServerCardEditLink;
+ private View mServerCardClearButton;
private FloatLabelLayout mNameLabel;
private EditText mNameText;
private FloatLabelLayout mNumberLabel;
private EditText mNumberText;
+ private View mExpirationLabel;
+ private View mExpirationContainer;
private Spinner mExpirationMonth;
private Spinner mExpirationYear;
private Spinner mBillingAddress;
@@ -43,16 +52,25 @@ public class AutofillCreditCardEditor extends AutofillEditorBase {
private int mInitialExpirationMonthPos;
private int mInitialExpirationYearPos;
private int mInitialBillingAddressPos;
+ private boolean mIsLocalCard;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = super.onCreateView(inflater, container, savedInstanceState);
+ mServerCardLabel = (TextView) v.findViewById(R.id.server_card_label);
+ mServerCardSublabel = (TextView) v.findViewById(R.id.server_card_sublabel);
+ mServerCardEditLinkContainer = v.findViewById(R.id.server_card_edit_link_container);
+ mServerCardEditLink = v.findViewById(R.id.server_card_edit_link);
+ mServerCardClearButton = v.findViewById(R.id.server_card_clear_button);
+
mNameLabel = (FloatLabelLayout) v.findViewById(R.id.credit_card_name_label);
mNameText = (EditText) v.findViewById(R.id.credit_card_name_edit);
mNumberLabel = (FloatLabelLayout) v.findViewById(R.id.credit_card_number_label);
mNumberText = (EditText) v.findViewById(R.id.credit_card_number_edit);
+ mExpirationLabel = v.findViewById(R.id.credit_card_expiration_label);
+ mExpirationContainer = v.findViewById(R.id.credit_card_expiration_container);
// Set text watcher to format credit card number
mNumberText.addTextChangedListener(new CreditCardNumberFormattingTextWatcher());
@@ -147,45 +165,59 @@ public class AutofillCreditCardEditor extends AutofillEditorBase {
private void addCardDataToEditFields() {
CreditCard card = PersonalDataManager.getInstance().getCreditCard(mGUID);
if (card == null) {
+ hideServerCardElements();
mNameLabel.focusWithoutAnimation();
return;
}
- if (!TextUtils.isEmpty(card.getName())) {
- mNameLabel.setText(card.getName());
- }
- if (!TextUtils.isEmpty(card.getNumber())) {
- mNumberLabel.setText(card.getNumber());
- }
+ mIsLocalCard = card.getIsLocal();
gone 2016/06/29 20:09:42 As mentioned in chat, I think it'd make more sense
please use gerrit instead 2016/06/30 01:19:27 Separated the classes.
+ if (mIsLocalCard) {
+ hideServerCardElements();
- // Make the name label focusable in touch mode so that mNameText doesn't get focused.
- mNameLabel.getLabel().setFocusableInTouchMode(true);
+ if (!TextUtils.isEmpty(card.getName())) {
+ mNameLabel.setText(card.getName());
+ }
+ if (!TextUtils.isEmpty(card.getNumber())) {
+ mNumberLabel.setText(card.getNumber());
+ }
- int monthAsInt = 1;
- if (!card.getMonth().isEmpty()) {
- monthAsInt = Integer.parseInt(card.getMonth());
- }
- mExpirationMonth.setSelection(monthAsInt - 1);
-
- mInitialExpirationYearPos = 0;
- boolean foundYear = false;
- for (int i = 0; i < mExpirationYear.getAdapter().getCount(); i++) {
- if (card.getYear().equals(mExpirationYear.getAdapter().getItem(i))) {
- mInitialExpirationYearPos = i;
- foundYear = true;
- break;
+ // Make the name label focusable in touch mode so that mNameText doesn't get focused.
+ mNameLabel.getLabel().setFocusableInTouchMode(true);
+
+ int monthAsInt = 1;
+ if (!card.getMonth().isEmpty()) {
+ monthAsInt = Integer.parseInt(card.getMonth());
}
- }
- // Maybe your card expired years ago? Add the card's year
- // to the spinner adapter if not found.
- if (!foundYear && !card.getYear().isEmpty()) {
- @SuppressWarnings("unchecked")
- ArrayAdapter<CharSequence> adapter =
- (ArrayAdapter<CharSequence>) mExpirationYear.getAdapter();
- adapter.insert(card.getYear(), 0);
+ mInitialExpirationMonthPos = monthAsInt - 1;
+ mExpirationMonth.setSelection(mInitialExpirationMonthPos);
+
mInitialExpirationYearPos = 0;
+ boolean foundYear = false;
+ for (int i = 0; i < mExpirationYear.getAdapter().getCount(); i++) {
+ if (card.getYear().equals(mExpirationYear.getAdapter().getItem(i))) {
+ mInitialExpirationYearPos = i;
+ foundYear = true;
+ break;
+ }
+ }
+ // Maybe your card expired years ago? Add the card's year
+ // to the spinner adapter if not found.
+ if (!foundYear && !card.getYear().isEmpty()) {
+ @SuppressWarnings("unchecked")
+ ArrayAdapter<CharSequence> adapter =
+ (ArrayAdapter<CharSequence>) mExpirationYear.getAdapter();
+ adapter.insert(card.getYear(), 0);
+ mInitialExpirationYearPos = 0;
+ }
+ mExpirationYear.setSelection(mInitialExpirationYearPos);
+ } else {
+ hideLocalCardElements();
+ mServerCardLabel.setText(card.getObfuscatedNumber());
+ mServerCardSublabel.setText(card.getFormattedExpirationDate(getActivity()));
+ if (!card.getIsCached()) {
+ mServerCardClearButton.setVisibility(View.GONE);
+ }
}
- mExpirationYear.setSelection(mInitialExpirationYearPos);
if (!TextUtils.isEmpty(card.getBillingAddressId())) {
for (int i = 0; i < mBillingAddress.getAdapter().getCount(); i++) {
@@ -199,21 +231,42 @@ public class AutofillCreditCardEditor extends AutofillEditorBase {
}
}
+ void hideServerCardElements() {
+ mServerCardLabel.setVisibility(View.GONE);
gone 2016/06/29 20:09:42 Prefer removing views you'll never use to just cha
please use gerrit instead 2016/06/30 01:19:27 Switched to removing views.
+ mServerCardSublabel.setVisibility(View.GONE);
+ mServerCardEditLinkContainer.setVisibility(View.GONE);
+ mServerCardClearButton.setVisibility(View.GONE);
+ }
+
+ void hideLocalCardElements() {
+ mNameLabel.setVisibility(View.GONE);
+ mNameText.setVisibility(View.GONE);
+ mNumberLabel.setVisibility(View.GONE);
+ mNumberText.setVisibility(View.GONE);
+ mExpirationLabel.setVisibility(View.GONE);
+ mExpirationContainer.setVisibility(View.GONE);
+ }
+
// Read edited data; save in the associated Chrome profile.
// Ignore empty fields.
@Override
protected void saveEntry() {
// Remove all spaces in editText.
String cardNumber = mNumberText.getText().toString().replaceAll("\\s+", "");
- CreditCard card = new CreditCard(mGUID, AutofillPreferences.SETTINGS_ORIGIN,
- true /* isLocal */, false /* isCached */, mNameText.getText().toString().trim(),
- cardNumber, "" /* obfuscatedNumber */,
- String.valueOf(mExpirationMonth.getSelectedItemPosition() + 1),
- (String) mExpirationYear.getSelectedItem(), "" /* basicCardPaymentType */,
- 0 /* issuerIconDrawableId */,
- ((AutofillProfile) mBillingAddress.getSelectedItem()).getGUID() /* billing */);
-
- PersonalDataManager.getInstance().setCreditCard(card);
+ if (mIsLocalCard) {
+ CreditCard card = new CreditCard(mGUID, AutofillPreferences.SETTINGS_ORIGIN,
+ true /* isLocal */, false /* isCached */, mNameText.getText().toString().trim(),
+ cardNumber, "" /* obfuscatedNumber */,
+ String.valueOf(mExpirationMonth.getSelectedItemPosition() + 1),
+ (String) mExpirationYear.getSelectedItem(), "" /* basicCardPaymentType */,
+ 0 /* issuerIconDrawableId */,
+ ((AutofillProfile) mBillingAddress.getSelectedItem()).getGUID() /* billing */);
+ PersonalDataManager.getInstance().setCreditCard(card);
+ } else {
+ PersonalDataManager.getInstance().updateServerCardBillingAddress(mGUID,
+ ((AutofillProfile) mBillingAddress.getSelectedItem()).getGUID());
+ }
+
}
@Override
@@ -224,6 +277,11 @@ public class AutofillCreditCardEditor extends AutofillEditorBase {
}
@Override
+ protected boolean getIsDeletable() {
+ return mIsLocalCard;
+ }
+
+ @Override
protected void initializeButtons(View v) {
super.initializeButtons(v);
@@ -233,10 +291,24 @@ public class AutofillCreditCardEditor extends AutofillEditorBase {
mExpirationMonth.setOnItemSelectedListener(this);
mExpirationYear.setOnItemSelectedListener(this);
mBillingAddress.setOnItemSelectedListener(this);
+ mServerCardEditLink.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ EmbedContentViewActivity.show(getActivity(), R.string.autofill_edit_credit_card,
+ R.string.autofill_manage_wallet_cards_url);
+ }
+ });
+ mServerCardClearButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ PersonalDataManager.getInstance().clearUnmaskedCache(mGUID);
+ mServerCardClearButton.setVisibility(View.GONE);
+ }
+ });
}
private void updateSaveButtonEnabled() {
- boolean enabled = !TextUtils.isEmpty(mNameText.getText())
+ boolean enabled = !mIsLocalCard || !TextUtils.isEmpty(mNameText.getText())
|| !TextUtils.isEmpty(mNumberText.getText());
Button button = (Button) getView().findViewById(R.id.button_primary);
button.setEnabled(enabled);

Powered by Google App Engine
This is Rietveld 408576698