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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestUI.java

Issue 2413833002: PaymentRequest: Rename ContactInfo to PayerInfo.
Patch Set: test Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.payments.ui; 5 package org.chromium.chrome.browser.payments.ui;
6 6
7 import static org.chromium.chrome.browser.payments.ui.PaymentRequestSection.EDIT _BUTTON_GONE; 7 import static org.chromium.chrome.browser.payments.ui.PaymentRequestSection.EDIT _BUTTON_GONE;
8 8
9 import android.animation.Animator; 9 import android.animation.Animator;
10 import android.animation.AnimatorListenerAdapter; 10 import android.animation.AnimatorListenerAdapter;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 import java.util.ArrayList; 56 import java.util.ArrayList;
57 import java.util.List; 57 import java.util.List;
58 58
59 /** 59 /**
60 * The PaymentRequest UI. 60 * The PaymentRequest UI.
61 */ 61 */
62 public class PaymentRequestUI implements DialogInterface.OnDismissListener, View .OnClickListener, 62 public class PaymentRequestUI implements DialogInterface.OnDismissListener, View .OnClickListener,
63 PaymentRequestSection.SectionDelegate { 63 PaymentRequestSection.SectionDelegate {
64 public static final int TYPE_SHIPPING_ADDRESSES = 1; 64 public static final int TYPE_SHIPPING_ADDRESSES = 1;
65 public static final int TYPE_SHIPPING_OPTIONS = 2; 65 public static final int TYPE_SHIPPING_OPTIONS = 2;
66 public static final int TYPE_CONTACT_DETAILS = 3; 66 public static final int TYPE_PAYER_INFO_DETAILS = 3;
67 public static final int TYPE_PAYMENT_METHODS = 4; 67 public static final int TYPE_PAYMENT_METHODS = 4;
68 68
69 public static final int SELECTION_RESULT_ASYNCHRONOUS_VALIDATION = 1; 69 public static final int SELECTION_RESULT_ASYNCHRONOUS_VALIDATION = 1;
70 public static final int SELECTION_RESULT_EDITOR_LAUNCH = 2; 70 public static final int SELECTION_RESULT_EDITOR_LAUNCH = 2;
71 public static final int SELECTION_RESULT_NONE = 3; 71 public static final int SELECTION_RESULT_NONE = 3;
72 72
73 @Retention(RetentionPolicy.SOURCE) 73 @Retention(RetentionPolicy.SOURCE)
74 @IntDef({ 74 @IntDef({
75 TYPE_SHIPPING_ADDRESSES, 75 TYPE_SHIPPING_ADDRESSES,
76 TYPE_SHIPPING_OPTIONS, 76 TYPE_SHIPPING_OPTIONS,
77 TYPE_CONTACT_DETAILS, 77 TYPE_PAYER_INFO_DETAILS,
78 TYPE_PAYMENT_METHODS 78 TYPE_PAYMENT_METHODS
79 }) 79 })
80 public @interface DataType {} 80 public @interface DataType {}
81 81
82 @Retention(RetentionPolicy.SOURCE) 82 @Retention(RetentionPolicy.SOURCE)
83 @IntDef({ 83 @IntDef({
84 SELECTION_RESULT_ASYNCHRONOUS_VALIDATION, 84 SELECTION_RESULT_ASYNCHRONOUS_VALIDATION,
85 SELECTION_RESULT_EDITOR_LAUNCH, 85 SELECTION_RESULT_EDITOR_LAUNCH,
86 SELECTION_RESULT_NONE, 86 SELECTION_RESULT_NONE,
87 }) 87 })
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 private static final int DIALOG_EXIT_ANIMATION_MS = 195; 254 private static final int DIALOG_EXIT_ANIMATION_MS = 195;
255 255
256 private static PaymentRequestObserverForTest sObserverForTest; 256 private static PaymentRequestObserverForTest sObserverForTest;
257 257
258 /** Notifies tests that the [PAY] button can be clicked. */ 258 /** Notifies tests that the [PAY] button can be clicked. */
259 private final NotifierForTest mReadyToPayNotifierForTest; 259 private final NotifierForTest mReadyToPayNotifierForTest;
260 260
261 private final Context mContext; 261 private final Context mContext;
262 private final Client mClient; 262 private final Client mClient;
263 private final boolean mRequestShipping; 263 private final boolean mRequestShipping;
264 private final boolean mRequestContactDetails; 264 private final boolean mRequestPayerInfoDetails;
265 265
266 private final Dialog mDialog; 266 private final Dialog mDialog;
267 private final EditorView mEditorView; 267 private final EditorView mEditorView;
268 private final EditorView mCardEditorView; 268 private final EditorView mCardEditorView;
269 private final ViewGroup mFullContainer; 269 private final ViewGroup mFullContainer;
270 private final ViewGroup mRequestView; 270 private final ViewGroup mRequestView;
271 private final PaymentRequestUiErrorView mErrorView; 271 private final PaymentRequestUiErrorView mErrorView;
272 private final Callback<PaymentInformation> mUpdateSectionsCallback; 272 private final Callback<PaymentInformation> mUpdateSectionsCallback;
273 273
274 private ScrollView mPaymentContainer; 274 private ScrollView mPaymentContainer;
275 private LinearLayout mPaymentContainerLayout; 275 private LinearLayout mPaymentContainerLayout;
276 private DualControlLayout mButtonBar; 276 private DualControlLayout mButtonBar;
277 private Button mEditButton; 277 private Button mEditButton;
278 private Button mPayButton; 278 private Button mPayButton;
279 private View mCloseButton; 279 private View mCloseButton;
280 private View mSpinnyLayout; 280 private View mSpinnyLayout;
281 281
282 private LineItemBreakdownSection mOrderSummarySection; 282 private LineItemBreakdownSection mOrderSummarySection;
283 private ExtraTextSection mShippingSummarySection; 283 private ExtraTextSection mShippingSummarySection;
284 private OptionSection mShippingAddressSection; 284 private OptionSection mShippingAddressSection;
285 private OptionSection mShippingOptionSection; 285 private OptionSection mShippingOptionSection;
286 private OptionSection mContactDetailsSection; 286 private OptionSection mPayerInfoDetailsSection;
287 private OptionSection mPaymentMethodSection; 287 private OptionSection mPaymentMethodSection;
288 private List<SectionSeparator> mSectionSeparators; 288 private List<SectionSeparator> mSectionSeparators;
289 289
290 private PaymentRequestSection mSelectedSection; 290 private PaymentRequestSection mSelectedSection;
291 private boolean mIsShowingEditDialog; 291 private boolean mIsShowingEditDialog;
292 private boolean mIsProcessingPayClicked; 292 private boolean mIsProcessingPayClicked;
293 private boolean mIsClientClosing; 293 private boolean mIsClientClosing;
294 private boolean mIsClientCheckingSelection; 294 private boolean mIsClientCheckingSelection;
295 private boolean mIsShowingSpinner; 295 private boolean mIsShowingSpinner;
296 private boolean mIsEditingPaymentItem; 296 private boolean mIsEditingPaymentItem;
297 private boolean mIsClosing; 297 private boolean mIsClosing;
298 298
299 private SectionInformation mPaymentMethodSectionInformation; 299 private SectionInformation mPaymentMethodSectionInformation;
300 private SectionInformation mShippingAddressSectionInformation; 300 private SectionInformation mShippingAddressSectionInformation;
301 private SectionInformation mShippingOptionsSectionInformation; 301 private SectionInformation mShippingOptionsSectionInformation;
302 private SectionInformation mContactDetailsSectionInformation; 302 private SectionInformation mPayerInfoDetailsSectionInformation;
303 303
304 private Animator mSheetAnimator; 304 private Animator mSheetAnimator;
305 private FocusAnimator mSectionAnimator; 305 private FocusAnimator mSectionAnimator;
306 private int mAnimatorTranslation; 306 private int mAnimatorTranslation;
307 private boolean mIsInitialLayoutComplete; 307 private boolean mIsInitialLayoutComplete;
308 308
309 /** 309 /**
310 * Builds the UI for PaymentRequest. 310 * Builds the UI for PaymentRequest.
311 * 311 *
312 * @param activity The activity on top of which the UI should be disp layed. 312 * @param activity The activity on top of which the UI should be disp layed.
313 * @param client The consumer of the PaymentRequest UI. 313 * @param client The consumer of the PaymentRequest UI.
314 * @param requestShipping Whether the UI should show the shipping address an d option selection. 314 * @param requestShipping Whether the UI should show the shipping address an d option selection.
315 * @param requestContact Whether the UI should show the email address and p hone number 315 * @param requestPayerInfo Whether the UI should show the email address and phone number
316 * selection. 316 * selection.
317 * @param canAddCards Whether the UI should show the [+ADD CARD] button. This can be false, 317 * @param canAddCards Whether the UI should show the [+ADD CARD] button. This can be false,
318 * for example, when the merchant does not accept cre dit cards, so 318 * for example, when the merchant does not accept cre dit cards, so
319 * there's no point in adding cards within PaymentReq uest UI. 319 * there's no point in adding cards within PaymentReq uest UI.
320 * @param title The title to show at the top of the UI. This can b e, for example, the 320 * @param title The title to show at the top of the UI. This can b e, for example, the
321 * &lt;title&gt; of the merchant website. If the stri ng is too long for 321 * &lt;title&gt; of the merchant website. If the stri ng is too long for
322 * UI, it elides at the end. 322 * UI, it elides at the end.
323 * @param origin The origin (part of URL) to show under the title. For example, 323 * @param origin The origin (part of URL) to show under the title. For example,
324 * "https://shop.momandpop.com". If the origin is too long for the UI, it 324 * "https://shop.momandpop.com". If the origin is too long for the UI, it
325 * should elide according to: 325 * should elide according to:
326 * https://www.chromium.org/Home/chromium-security/enamel#TOC-Eliding-Origin -Names-And-Hostnames 326 * https://www.chromium.org/Home/chromium-security/enamel#TOC-Eliding-Origin -Names-And-Hostnames
327 */ 327 */
328 public PaymentRequestUI(Activity activity, Client client, boolean requestShi pping, 328 public PaymentRequestUI(Activity activity, Client client, boolean requestShi pping,
329 boolean requestContact, boolean canAddCards, String title, String or igin) { 329 boolean requestPayerInfo, boolean canAddCards, String title, String origin) {
330 mContext = activity; 330 mContext = activity;
331 mClient = client; 331 mClient = client;
332 mRequestShipping = requestShipping; 332 mRequestShipping = requestShipping;
333 mRequestContactDetails = requestContact; 333 mRequestPayerInfoDetails = requestPayerInfo;
334 mAnimatorTranslation = activity.getResources().getDimensionPixelSize( 334 mAnimatorTranslation = activity.getResources().getDimensionPixelSize(
335 R.dimen.payments_ui_translation); 335 R.dimen.payments_ui_translation);
336 336
337 mErrorView = (PaymentRequestUiErrorView) LayoutInflater.from(mContext).i nflate( 337 mErrorView = (PaymentRequestUiErrorView) LayoutInflater.from(mContext).i nflate(
338 R.layout.payment_request_error, null); 338 R.layout.payment_request_error, null);
339 mErrorView.initialize(title, origin); 339 mErrorView.initialize(title, origin);
340 340
341 mReadyToPayNotifierForTest = new NotifierForTest(new Runnable() { 341 mReadyToPayNotifierForTest = new NotifierForTest(new Runnable() {
342 @Override 342 @Override
343 public void run() { 343 public void run() {
344 if (sObserverForTest != null && isAcceptingUserInput() && mPayBu tton.isEnabled()) { 344 if (sObserverForTest != null && isAcceptingUserInput() && mPayBu tton.isEnabled()) {
345 sObserverForTest.onPaymentRequestReadyToPay(PaymentRequestUI .this); 345 sObserverForTest.onPaymentRequestReadyToPay(PaymentRequestUI .this);
346 } 346 }
347 } 347 }
348 }); 348 });
349 349
350 // This callback will be fired if mIsClientCheckingSelection is true. 350 // This callback will be fired if mIsClientCheckingSelection is true.
351 mUpdateSectionsCallback = new Callback<PaymentInformation>() { 351 mUpdateSectionsCallback = new Callback<PaymentInformation>() {
352 @Override 352 @Override
353 public void onResult(PaymentInformation result) { 353 public void onResult(PaymentInformation result) {
354 mIsClientCheckingSelection = false; 354 mIsClientCheckingSelection = false;
355 updateOrderSummarySection(result.getShoppingCart()); 355 updateOrderSummarySection(result.getShoppingCart());
356 if (mRequestShipping) { 356 if (mRequestShipping) {
357 updateSection(TYPE_SHIPPING_ADDRESSES, result.getShippingAdd resses()); 357 updateSection(TYPE_SHIPPING_ADDRESSES, result.getShippingAdd resses());
358 updateSection(TYPE_SHIPPING_OPTIONS, result.getShippingOptio ns()); 358 updateSection(TYPE_SHIPPING_OPTIONS, result.getShippingOptio ns());
359 } 359 }
360 if (mRequestContactDetails) { 360 if (mRequestPayerInfoDetails) {
361 updateSection(TYPE_CONTACT_DETAILS, result.getContactDetails ()); 361 updateSection(TYPE_PAYER_INFO_DETAILS, result.getPayerInfoDe tails());
362 } 362 }
363 updateSection(TYPE_PAYMENT_METHODS, result.getPaymentMethods()); 363 updateSection(TYPE_PAYMENT_METHODS, result.getPaymentMethods());
364 if (mShippingAddressSectionInformation.getSelectedItem() == null ) { 364 if (mShippingAddressSectionInformation.getSelectedItem() == null ) {
365 expand(mShippingAddressSection); 365 expand(mShippingAddressSection);
366 } else { 366 } else {
367 expand(null); 367 expand(null);
368 } 368 }
369 updatePayButtonEnabled(); 369 updatePayButtonEnabled();
370 notifySelectionChecked(); 370 notifySelectionChecked();
371 } 371 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 mShippingSummarySection.setSummaryText( 435 mShippingSummarySection.setSummaryText(
436 selectedShippingAddress, selectedShippingName); 436 selectedShippingAddress, selectedShippingName);
437 mShippingSummarySection.setSummaryProperties( 437 mShippingSummarySection.setSummaryProperties(
438 TruncateAt.MIDDLE, true, null, true); 438 TruncateAt.MIDDLE, true, null, true);
439 439
440 // Indicate the shipping option below the address. 440 // Indicate the shipping option below the address.
441 mShippingSummarySection.setExtraText(selectedShippingOpt ionLabel); 441 mShippingSummarySection.setExtraText(selectedShippingOpt ionLabel);
442 } 442 }
443 } 443 }
444 444
445 if (mRequestContactDetails) { 445 if (mRequestPayerInfoDetails) {
446 updateSection(TYPE_CONTACT_DETAILS, result.getContactDetails ()); 446 updateSection(TYPE_PAYER_INFO_DETAILS, result.getPayerInfoDe tails());
447 } 447 }
448 448
449 updateSection(TYPE_PAYMENT_METHODS, result.getPaymentMethods()); 449 updateSection(TYPE_PAYMENT_METHODS, result.getPaymentMethods());
450 updatePayButtonEnabled(); 450 updatePayButtonEnabled();
451 451
452 // Hide the loading indicators and show the real sections. 452 // Hide the loading indicators and show the real sections.
453 mPaymentContainer.setVisibility(View.VISIBLE); 453 mPaymentContainer.setVisibility(View.VISIBLE);
454 mButtonBar.setVisibility(View.VISIBLE); 454 mButtonBar.setVisibility(View.VISIBLE);
455 mRequestView.removeView(mSpinnyLayout); 455 mRequestView.removeView(mSpinnyLayout);
456 mRequestView.addOnLayoutChangeListener(new SheetEnlargingAnimato r(false)); 456 mRequestView.addOnLayoutChangeListener(new SheetEnlargingAnimato r(false));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 mPaymentContainerLayout = 500 mPaymentContainerLayout =
501 (LinearLayout) mRequestView.findViewById(R.id.payment_container_ layout); 501 (LinearLayout) mRequestView.findViewById(R.id.payment_container_ layout);
502 mOrderSummarySection = new LineItemBreakdownSection( 502 mOrderSummarySection = new LineItemBreakdownSection(
503 activity, activity.getString(R.string.payments_order_summary_lab el), this); 503 activity, activity.getString(R.string.payments_order_summary_lab el), this);
504 mShippingSummarySection = new ExtraTextSection( 504 mShippingSummarySection = new ExtraTextSection(
505 activity, activity.getString(R.string.payments_shipping_summary_ label), this); 505 activity, activity.getString(R.string.payments_shipping_summary_ label), this);
506 mShippingAddressSection = new OptionSection( 506 mShippingAddressSection = new OptionSection(
507 activity, activity.getString(R.string.payments_shipping_address_ label), this); 507 activity, activity.getString(R.string.payments_shipping_address_ label), this);
508 mShippingOptionSection = new OptionSection( 508 mShippingOptionSection = new OptionSection(
509 activity, activity.getString(R.string.payments_shipping_option_l abel), this); 509 activity, activity.getString(R.string.payments_shipping_option_l abel), this);
510 mContactDetailsSection = new OptionSection( 510 mPayerInfoDetailsSection = new OptionSection(
511 activity, activity.getString(R.string.payments_contact_details_l abel), this); 511 activity, activity.getString(R.string.payments_payer_info_detail s_label), this);
512 mPaymentMethodSection = new OptionSection( 512 mPaymentMethodSection = new OptionSection(
513 activity, activity.getString(R.string.payments_method_of_payment _label), this); 513 activity, activity.getString(R.string.payments_method_of_payment _label), this);
514 514
515 // Some sections conditionally allow adding new options. 515 // Some sections conditionally allow adding new options.
516 mShippingOptionSection.setCanAddItems(false); 516 mShippingOptionSection.setCanAddItems(false);
517 mPaymentMethodSection.setCanAddItems(canAddCards); 517 mPaymentMethodSection.setCanAddItems(canAddCards);
518 518
519 // Add the necessary sections to the layout. 519 // Add the necessary sections to the layout.
520 mPaymentContainerLayout.addView(mOrderSummarySection, new LinearLayout.L ayoutParams( 520 mPaymentContainerLayout.addView(mOrderSummarySection, new LinearLayout.L ayoutParams(
521 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 521 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
522 mSectionSeparators.add(new SectionSeparator(mPaymentContainerLayout)); 522 mSectionSeparators.add(new SectionSeparator(mPaymentContainerLayout));
523 if (mRequestShipping) { 523 if (mRequestShipping) {
524 // The shipping breakout sections are only added if they are needed. 524 // The shipping breakout sections are only added if they are needed.
525 mPaymentContainerLayout.addView(mShippingSummarySection, new LinearL ayout.LayoutParams( 525 mPaymentContainerLayout.addView(mShippingSummarySection, new LinearL ayout.LayoutParams(
526 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 526 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
527 mSectionSeparators.add(new SectionSeparator(mPaymentContainerLayout) ); 527 mSectionSeparators.add(new SectionSeparator(mPaymentContainerLayout) );
528 } 528 }
529 mPaymentContainerLayout.addView(mPaymentMethodSection, new LinearLayout. LayoutParams( 529 mPaymentContainerLayout.addView(mPaymentMethodSection, new LinearLayout. LayoutParams(
530 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 530 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
531 if (mRequestContactDetails) { 531 if (mRequestPayerInfoDetails) {
532 // Contact details are optional, depending on the merchant website. 532 // Payer info details are optional, depending on the merchant websit e.
533 mSectionSeparators.add(new SectionSeparator(mPaymentContainerLayout) ); 533 mSectionSeparators.add(new SectionSeparator(mPaymentContainerLayout) );
534 mPaymentContainerLayout.addView(mContactDetailsSection, new LinearLa yout.LayoutParams( 534 mPaymentContainerLayout.addView(mPayerInfoDetailsSection, new Linear Layout.LayoutParams(
535 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 535 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
536 } 536 }
537 mRequestView.addOnLayoutChangeListener(new FadeInAnimator()); 537 mRequestView.addOnLayoutChangeListener(new FadeInAnimator());
538 mRequestView.addOnLayoutChangeListener(new PeekingAnimator()); 538 mRequestView.addOnLayoutChangeListener(new PeekingAnimator());
539 539
540 // Enabled in updatePayButtonEnabled() when the user has selected all pa yment options. 540 // Enabled in updatePayButtonEnabled() when the user has selected all pa yment options.
541 mPayButton.setEnabled(false); 541 mPayButton.setEnabled(false);
542 } 542 }
543 543
544 /** 544 /**
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 * 616 *
617 * @param section The shipping options. 617 * @param section The shipping options.
618 */ 618 */
619 public void updateSection(@DataType int whichSection, SectionInformation sec tion) { 619 public void updateSection(@DataType int whichSection, SectionInformation sec tion) {
620 if (whichSection == TYPE_SHIPPING_ADDRESSES) { 620 if (whichSection == TYPE_SHIPPING_ADDRESSES) {
621 mShippingAddressSectionInformation = section; 621 mShippingAddressSectionInformation = section;
622 mShippingAddressSection.update(section); 622 mShippingAddressSection.update(section);
623 } else if (whichSection == TYPE_SHIPPING_OPTIONS) { 623 } else if (whichSection == TYPE_SHIPPING_OPTIONS) {
624 mShippingOptionsSectionInformation = section; 624 mShippingOptionsSectionInformation = section;
625 mShippingOptionSection.update(section); 625 mShippingOptionSection.update(section);
626 } else if (whichSection == TYPE_CONTACT_DETAILS) { 626 } else if (whichSection == TYPE_PAYER_INFO_DETAILS) {
627 mContactDetailsSectionInformation = section; 627 mPayerInfoDetailsSectionInformation = section;
628 mContactDetailsSection.update(section); 628 mPayerInfoDetailsSection.update(section);
629 } else if (whichSection == TYPE_PAYMENT_METHODS) { 629 } else if (whichSection == TYPE_PAYMENT_METHODS) {
630 mPaymentMethodSectionInformation = section; 630 mPaymentMethodSectionInformation = section;
631 mPaymentMethodSection.update(section); 631 mPaymentMethodSection.update(section);
632 } 632 }
633 mIsEditingPaymentItem = false; 633 mIsEditingPaymentItem = false;
634 updateSectionButtons(); 634 updateSectionButtons();
635 updatePayButtonEnabled(); 635 updatePayButtonEnabled();
636 } 636 }
637 637
638 @Override 638 @Override
639 public void onPaymentOptionChanged(final PaymentRequestSection section, Paym entOption option) { 639 public void onPaymentOptionChanged(final PaymentRequestSection section, Paym entOption option) {
640 @SelectionResult int result = SELECTION_RESULT_NONE; 640 @SelectionResult int result = SELECTION_RESULT_NONE;
641 if (section == mShippingAddressSection 641 if (section == mShippingAddressSection
642 && mShippingAddressSectionInformation.getSelectedItem() != optio n) { 642 && mShippingAddressSectionInformation.getSelectedItem() != optio n) {
643 mShippingAddressSectionInformation.setSelectedItem(option); 643 mShippingAddressSectionInformation.setSelectedItem(option);
644 result = mClient.onSectionOptionSelected( 644 result = mClient.onSectionOptionSelected(
645 TYPE_SHIPPING_ADDRESSES, option, mUpdateSectionsCallback); 645 TYPE_SHIPPING_ADDRESSES, option, mUpdateSectionsCallback);
646 } else if (section == mShippingOptionSection 646 } else if (section == mShippingOptionSection
647 && mShippingOptionsSectionInformation.getSelectedItem() != optio n) { 647 && mShippingOptionsSectionInformation.getSelectedItem() != optio n) {
648 mShippingOptionsSectionInformation.setSelectedItem(option); 648 mShippingOptionsSectionInformation.setSelectedItem(option);
649 result = mClient.onSectionOptionSelected( 649 result = mClient.onSectionOptionSelected(
650 TYPE_SHIPPING_OPTIONS, option, mUpdateSectionsCallback); 650 TYPE_SHIPPING_OPTIONS, option, mUpdateSectionsCallback);
651 } else if (section == mContactDetailsSection) { 651 } else if (section == mPayerInfoDetailsSection) {
652 mContactDetailsSectionInformation.setSelectedItem(option); 652 mPayerInfoDetailsSectionInformation.setSelectedItem(option);
653 result = mClient.onSectionOptionSelected(TYPE_CONTACT_DETAILS, optio n, null); 653 result = mClient.onSectionOptionSelected(TYPE_PAYER_INFO_DETAILS, op tion, null);
654 } else if (section == mPaymentMethodSection) { 654 } else if (section == mPaymentMethodSection) {
655 mPaymentMethodSectionInformation.setSelectedItem(option); 655 mPaymentMethodSectionInformation.setSelectedItem(option);
656 result = mClient.onSectionOptionSelected(TYPE_PAYMENT_METHODS, optio n, null); 656 result = mClient.onSectionOptionSelected(TYPE_PAYMENT_METHODS, optio n, null);
657 } 657 }
658 658
659 updateStateFromResult(section, result); 659 updateStateFromResult(section, result);
660 } 660 }
661 661
662 @Override 662 @Override
663 public void onAddPaymentOption(PaymentRequestSection section) { 663 public void onAddPaymentOption(PaymentRequestSection section) {
664 assert section != mShippingOptionSection; 664 assert section != mShippingOptionSection;
665 665
666 // There's no way to add new shipping options, so users adding an option via the shipping 666 // There's no way to add new shipping options, so users adding an option via the shipping
667 // summary's button have to be adding an address. Expand the sheet when this happens so 667 // summary's button have to be adding an address. Expand the sheet when this happens so
668 // that the shipping address section properly appears afterward. 668 // that the shipping address section properly appears afterward.
669 if (section == mShippingSummarySection) { 669 if (section == mShippingSummarySection) {
670 expand(null); 670 expand(null);
671 section = mShippingAddressSection; 671 section = mShippingAddressSection;
672 } 672 }
673 673
674 @SelectionResult int result = SELECTION_RESULT_NONE; 674 @SelectionResult int result = SELECTION_RESULT_NONE;
675 if (section == mShippingAddressSection) { 675 if (section == mShippingAddressSection) {
676 result = mClient.onSectionAddOption(TYPE_SHIPPING_ADDRESSES, mUpdate SectionsCallback); 676 result = mClient.onSectionAddOption(TYPE_SHIPPING_ADDRESSES, mUpdate SectionsCallback);
677 } else if (section == mContactDetailsSection) { 677 } else if (section == mPayerInfoDetailsSection) {
678 result = mClient.onSectionAddOption(TYPE_CONTACT_DETAILS, null); 678 result = mClient.onSectionAddOption(TYPE_PAYER_INFO_DETAILS, null);
679 } else if (section == mPaymentMethodSection) { 679 } else if (section == mPaymentMethodSection) {
680 result = mClient.onSectionAddOption(TYPE_PAYMENT_METHODS, null); 680 result = mClient.onSectionAddOption(TYPE_PAYMENT_METHODS, null);
681 } 681 }
682 682
683 updateStateFromResult(section, result); 683 updateStateFromResult(section, result);
684 } 684 }
685 685
686 void updateStateFromResult(PaymentRequestSection section, @SelectionResult i nt result) { 686 void updateStateFromResult(PaymentRequestSection section, @SelectionResult i nt result) {
687 mIsClientCheckingSelection = result == SELECTION_RESULT_ASYNCHRONOUS_VAL IDATION; 687 mIsClientCheckingSelection = result == SELECTION_RESULT_ASYNCHRONOUS_VAL IDATION;
688 mIsEditingPaymentItem = result == SELECTION_RESULT_EDITOR_LAUNCH; 688 mIsEditingPaymentItem = result == SELECTION_RESULT_EDITOR_LAUNCH;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 PaymentRequestSection section = (PaymentRequestSection) v; 733 PaymentRequestSection section = (PaymentRequestSection) v;
734 if (section.getEditButtonState() != EDIT_BUTTON_GONE) return; 734 if (section.getEditButtonState() != EDIT_BUTTON_GONE) return;
735 } 735 }
736 736
737 if (v == mOrderSummarySection) { 737 if (v == mOrderSummarySection) {
738 expand(mOrderSummarySection); 738 expand(mOrderSummarySection);
739 } else if (v == mShippingSummarySection || v == mShippingAddressSection) { 739 } else if (v == mShippingSummarySection || v == mShippingAddressSection) {
740 expand(mShippingAddressSection); 740 expand(mShippingAddressSection);
741 } else if (v == mShippingOptionSection) { 741 } else if (v == mShippingOptionSection) {
742 expand(mShippingOptionSection); 742 expand(mShippingOptionSection);
743 } else if (v == mContactDetailsSection) { 743 } else if (v == mPayerInfoDetailsSection) {
744 expand(mContactDetailsSection); 744 expand(mPayerInfoDetailsSection);
745 } else if (v == mPaymentMethodSection) { 745 } else if (v == mPaymentMethodSection) {
746 expand(mPaymentMethodSection); 746 expand(mPaymentMethodSection);
747 } else if (v == mPayButton) { 747 } else if (v == mPayButton) {
748 processPayButton(); 748 processPayButton();
749 } else if (v == mEditButton) { 749 } else if (v == mEditButton) {
750 if (mIsShowingEditDialog) { 750 if (mIsShowingEditDialog) {
751 dismissDialog(true); 751 dismissDialog(true);
752 } else { 752 } else {
753 expand(mOrderSummarySection); 753 expand(mOrderSummarySection);
754 } 754 }
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 } else { 833 } else {
834 mRequestView.removeView(mSpinnyLayout); 834 mRequestView.removeView(mSpinnyLayout);
835 mRequestView.addView(mPaymentContainer); 835 mRequestView.addView(mPaymentContainer);
836 mRequestView.addView(mButtonBar); 836 mRequestView.addView(mButtonBar);
837 837
838 if (mIsShowingEditDialog) expand(mSelectedSection); 838 if (mIsShowingEditDialog) expand(mSelectedSection);
839 } 839 }
840 } 840 }
841 841
842 private void updatePayButtonEnabled() { 842 private void updatePayButtonEnabled() {
843 boolean contactInfoOk = !mRequestContactDetails 843 boolean payerInfoOk = !mRequestPayerInfoDetails
844 || (mContactDetailsSectionInformation != null 844 || (mPayerInfoDetailsSectionInformation != null
845 && mContactDetailsSectionInformation.getSelectedItem( ) != null); 845 && mPayerInfoDetailsSectionInformation.getSelectedIte m() != null);
846 boolean shippingInfoOk = !mRequestShipping 846 boolean shippingInfoOk = !mRequestShipping
847 || (mShippingAddressSectionInformation != null 847 || (mShippingAddressSectionInformation != null
848 && mShippingAddressSectionInformation.getSelectedItem () != null 848 && mShippingAddressSectionInformation.getSelectedItem () != null
849 && mShippingOptionsSectionInformation != null 849 && mShippingOptionsSectionInformation != null
850 && mShippingOptionsSectionInformation.getSelectedItem () != null); 850 && mShippingOptionsSectionInformation.getSelectedItem () != null);
851 mPayButton.setEnabled(contactInfoOk && shippingInfoOk 851 mPayButton.setEnabled(payerInfoOk && shippingInfoOk
852 && mPaymentMethodSectionInformation != null 852 && mPaymentMethodSectionInformation != null
853 && mPaymentMethodSectionInformation.getSelectedItem() != null 853 && mPaymentMethodSectionInformation.getSelectedItem() != null
854 && !mIsClientCheckingSelection 854 && !mIsClientCheckingSelection
855 && !mIsEditingPaymentItem 855 && !mIsEditingPaymentItem
856 && !mIsClosing); 856 && !mIsClosing);
857 mReadyToPayNotifierForTest.run(); 857 mReadyToPayNotifierForTest.run();
858 } 858 }
859 859
860 /** @return Whether or not the dialog can be closed via the X close button. */ 860 /** @return Whether or not the dialog can be closed via the X close button. */
861 private boolean isAcceptingCloseButton() { 861 private boolean isAcceptingCloseButton() {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 updateOrderSummarySection(result); 922 updateOrderSummarySection(result);
923 updateSectionVisibility(); 923 updateSectionVisibility();
924 } 924 }
925 }); 925 });
926 } else if (mSelectedSection == mShippingAddressSection) { 926 } else if (mSelectedSection == mShippingAddressSection) {
927 mClient.getSectionInformation( 927 mClient.getSectionInformation(
928 TYPE_SHIPPING_ADDRESSES, createUpdateSectionCallback(TYPE_SH IPPING_ADDRESSES)); 928 TYPE_SHIPPING_ADDRESSES, createUpdateSectionCallback(TYPE_SH IPPING_ADDRESSES));
929 } else if (mSelectedSection == mShippingOptionSection) { 929 } else if (mSelectedSection == mShippingOptionSection) {
930 mClient.getSectionInformation( 930 mClient.getSectionInformation(
931 TYPE_SHIPPING_OPTIONS, createUpdateSectionCallback(TYPE_SHIP PING_OPTIONS)); 931 TYPE_SHIPPING_OPTIONS, createUpdateSectionCallback(TYPE_SHIP PING_OPTIONS));
932 } else if (mSelectedSection == mContactDetailsSection) { 932 } else if (mSelectedSection == mPayerInfoDetailsSection) {
933 mClient.getSectionInformation( 933 mClient.getSectionInformation(
934 TYPE_CONTACT_DETAILS, createUpdateSectionCallback(TYPE_CONTA CT_DETAILS)); 934 TYPE_PAYER_INFO_DETAILS, createUpdateSectionCallback(TYPE_PA YER_INFO_DETAILS));
935 } else if (mSelectedSection == mPaymentMethodSection) { 935 } else if (mSelectedSection == mPaymentMethodSection) {
936 mClient.getSectionInformation( 936 mClient.getSectionInformation(
937 TYPE_PAYMENT_METHODS, createUpdateSectionCallback(TYPE_PAYME NT_METHODS)); 937 TYPE_PAYMENT_METHODS, createUpdateSectionCallback(TYPE_PAYME NT_METHODS));
938 } else { 938 } else {
939 updateSectionVisibility(); 939 updateSectionVisibility();
940 } 940 }
941 } 941 }
942 942
943 private Callback<SectionInformation> createUpdateSectionCallback(@DataType f inal int type) { 943 private Callback<SectionInformation> createUpdateSectionCallback(@DataType f inal int type) {
944 return new Callback<SectionInformation>() { 944 return new Callback<SectionInformation>() {
945 @Override 945 @Override
946 public void onResult(SectionInformation result) { 946 public void onResult(SectionInformation result) {
947 updateSection(type, result); 947 updateSection(type, result);
948 updateSectionVisibility(); 948 updateSectionVisibility();
949 } 949 }
950 }; 950 };
951 } 951 }
952 952
953 /** Update the display status of each expandable section in the full dialog. */ 953 /** Update the display status of each expandable section in the full dialog. */
954 private void updateSectionVisibility() { 954 private void updateSectionVisibility() {
955 startSectionResizeAnimation(); 955 startSectionResizeAnimation();
956 mOrderSummarySection.focusSection(mSelectedSection == mOrderSummarySecti on); 956 mOrderSummarySection.focusSection(mSelectedSection == mOrderSummarySecti on);
957 mShippingAddressSection.focusSection(mSelectedSection == mShippingAddres sSection); 957 mShippingAddressSection.focusSection(mSelectedSection == mShippingAddres sSection);
958 mShippingOptionSection.focusSection(mSelectedSection == mShippingOptionS ection); 958 mShippingOptionSection.focusSection(mSelectedSection == mShippingOptionS ection);
959 mContactDetailsSection.focusSection(mSelectedSection == mContactDetailsS ection); 959 mPayerInfoDetailsSection.focusSection(mSelectedSection == mPayerInfoDeta ilsSection);
960 mPaymentMethodSection.focusSection(mSelectedSection == mPaymentMethodSec tion); 960 mPaymentMethodSection.focusSection(mSelectedSection == mPaymentMethodSec tion);
961 updateSectionButtons(); 961 updateSectionButtons();
962 } 962 }
963 963
964 /** 964 /**
965 * Updates the enabled/disbled state of each section's edit button. 965 * Updates the enabled/disbled state of each section's edit button.
966 * 966 *
967 * Only the top-most button is enabled -- the others are disabled so the use r is directed 967 * Only the top-most button is enabled -- the others are disabled so the use r is directed
968 * through the form from top to bottom. 968 * through the form from top to bottom.
969 */ 969 */
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
1224 public ViewGroup getShippingAddressSectionForTest() { 1224 public ViewGroup getShippingAddressSectionForTest() {
1225 return mShippingAddressSection; 1225 return mShippingAddressSection;
1226 } 1226 }
1227 1227
1228 @VisibleForTesting 1228 @VisibleForTesting
1229 public ViewGroup getPaymentMethodSectionForTest() { 1229 public ViewGroup getPaymentMethodSectionForTest() {
1230 return mPaymentMethodSection; 1230 return mPaymentMethodSection;
1231 } 1231 }
1232 1232
1233 @VisibleForTesting 1233 @VisibleForTesting
1234 public ViewGroup getContactDetailsSectionForTest() { 1234 public ViewGroup getPayerInfoDetailsSectionForTest() {
1235 return mContactDetailsSection; 1235 return mPayerInfoDetailsSection;
1236 } 1236 }
1237 1237
1238 private void notifyReadyForInput() { 1238 private void notifyReadyForInput() {
1239 if (sObserverForTest != null && isAcceptingUserInput()) { 1239 if (sObserverForTest != null && isAcceptingUserInput()) {
1240 sObserverForTest.onPaymentRequestReadyForInput(this); 1240 sObserverForTest.onPaymentRequestReadyForInput(this);
1241 } 1241 }
1242 } 1242 }
1243 1243
1244 private void notifySelectionChecked() { 1244 private void notifySelectionChecked() {
1245 if (sObserverForTest != null) { 1245 if (sObserverForTest != null) {
1246 sObserverForTest.onPaymentRequestSelectionChecked(this); 1246 sObserverForTest.onPaymentRequestSelectionChecked(this);
1247 } 1247 }
1248 } 1248 }
1249 } 1249 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698