// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.chrome.browser.infobar; import android.graphics.Bitmap; import org.chromium.base.annotations.CalledByNative; import org.chromium.chrome.browser.ResourceId; import java.util.ArrayList; import java.util.List; /** * An infobar for assisted credit card filling. */ public class AutofillCreditCardFillingInfoBar extends ConfirmInfoBar { private final List<CardDetail> mCardDetails = new ArrayList<>(); /** * Creates a new instance of the infobar. * * @param nativeAutofillCreditCardFillingInfoBar The pointer to the native object for callbacks. * @param enumeratedIconId ID corresponding to the icon that will be shown for the InfoBar. * The ID must have been mapped using the ResourceMapper class before * passing it to this function. * @param iconBitmap Bitmap to use if there is no equivalent Java resource for enumeratedIconId. * @param message Message to display to the user indicating what the InfoBar is for. * @param buttonOk String to display on the OK button. * @param buttonCancel String to display on the Cancel button. */ private AutofillCreditCardFillingInfoBar(long nativeAutofillCreditCardFillingInfoBar, int enumeratedIconId, Bitmap iconBitmap, String message, String buttonOk, String buttonCancel) { super(ResourceId.mapToDrawableId(enumeratedIconId), iconBitmap, message, null, buttonOk, buttonCancel); } /** * Creates an infobar for assisted credit card filling. * * @param nativeAutofillCreditCardFillingInfoBar The pointer to the native object for callbacks. * @param enumeratedIconId ID corresponding to the icon that will be shown for the InfoBar. * The ID must have been mapped using the ResourceMapper class before * passing it to this function. * @param iconBitmap Bitmap to use if there is no equivalent Java resource for enumeratedIconId. * @param message Message to display to the user indicating what the InfoBar is for. * @param buttonOk String to display on the OK button. * @param buttonCancel String to display on the Cancel button. * @return A new instance of the infobar. */ @CalledByNative private static AutofillCreditCardFillingInfoBar create( long nativeAutofillCreditCardFillingInfoBar, int enumeratedIconId, Bitmap iconBitmap, String message, String buttonOk, String buttonCancel) { return new AutofillCreditCardFillingInfoBar(nativeAutofillCreditCardFillingInfoBar, enumeratedIconId, iconBitmap, message, buttonOk, buttonCancel); } /** * Adds information to the infobar about the credit card that will be proposed for the assist. * * @param enumeratedIconId ID corresponding to the icon that will be shown for this credit card. * The ID must have been mapped using the ResourceMapper class before * passing it to this function. * @param label The credit card label, for example "***1234". * @param subLabel The credit card sub-label, for example "Exp: 06/17". */ @CalledByNative private void addDetail(int enumeratedIconId, String label, String subLabel) { mCardDetails.add(new CardDetail(enumeratedIconId, label, subLabel)); } @Override public void createContent(InfoBarLayout layout) { super.createContent(layout); InfoBarControlLayout control = layout.addControlLayout(); for (int i = 0; i < mCardDetails.size(); i++) { CardDetail detail = mCardDetails.get(i); control.addIcon(detail.issuerIconDrawableId, 0, detail.label, detail.subLabel); } } }