// 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.preferences.autofill; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Spinner; import org.chromium.chrome.R; import org.chromium.chrome.browser.autofill.PersonalDataManager; import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile; import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard; import java.util.List; /** * The base class for credit card settings. */ abstract class AutofillCreditCardEditor extends AutofillEditorBase { protected CreditCard mCard; protected Spinner mBillingAddress; protected int mInitialBillingAddressPos; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = super.onCreateView(inflater, container, savedInstanceState); // Populate the billing address dropdown. ArrayAdapter<AutofillProfile> profilesAdapter = new ArrayAdapter<AutofillProfile>( getActivity(), android.R.layout.simple_spinner_item); profilesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); AutofillProfile noSelection = new AutofillProfile(); noSelection.setLabel(getActivity().getString(R.string.select)); profilesAdapter.add(noSelection); List<AutofillProfile> profiles = PersonalDataManager.getInstance().getProfilesForSettings(); for (int i = 0; i < profiles.size(); i++) { AutofillProfile profile = profiles.get(i); if (profile.getIsLocal()) profilesAdapter.add(profile); } mBillingAddress = (Spinner) v.findViewById(R.id.autofill_credit_card_editor_billing_address_spinner); mBillingAddress.setAdapter(profilesAdapter); // TODO(rouslan): Use an [+ ADD ADDRESS] button instead of disabling the dropdown. // http://crbug.com/623629 if (profilesAdapter.getCount() == 1) mBillingAddress.setEnabled(false); mCard = PersonalDataManager.getInstance().getCreditCard(mGUID); if (mCard != null) { if (!TextUtils.isEmpty(mCard.getBillingAddressId())) { for (int i = 0; i < mBillingAddress.getAdapter().getCount(); i++) { AutofillProfile profile = (AutofillProfile) mBillingAddress.getAdapter().getItem(i); if (TextUtils.equals(profile.getGUID(), mCard.getBillingAddressId())) { mInitialBillingAddressPos = i; mBillingAddress.setSelection(i); break; } } } } return v; } }