// 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.

#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_DATA_UTIL_H_
#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_DATA_UTIL_H_

#include "base/strings/string16.h"
#include "base/strings/string_piece.h"
#include "components/autofill/core/browser/autofill_profile.h"

namespace autofill {
namespace data_util {

struct NameParts {
  base::string16 given;
  base::string16 middle;
  base::string16 family;
};

// Used to map Chrome card types to Payment Request API basic card payment spec
// types and icons. https://w3c.github.io/webpayments-methods-card/#method-id
struct PaymentRequestData {
  const char* card_type;
  const char* basic_card_payment_type;
  const int icon_resource_id;
};

// Returns true if |name| looks like a CJK name (or some kind of mish-mash of
// the three, at least).
bool IsCJKName(base::StringPiece16 name);

// TODO(crbug.com/586510): Investigate the use of app_locale to do better name
// splitting.
// Returns the different name parts (given, middle and family names) of the full
// |name| passed as a parameter.
NameParts SplitName(base::StringPiece16 name);

// Concatenates the name parts together in the correct order (based on script),
// and returns the result.
base::string16 JoinNameParts(base::StringPiece16 given,
                             base::StringPiece16 middle,
                             base::StringPiece16 family);

// Returns true iff |full_name| is a concatenation of some combination of the
// first/middle/last (incl. middle initial) in |profile|.
bool ProfileMatchesFullName(base::StringPiece16 full_name,
                            const autofill::AutofillProfile& profile);

// Returns the Payment Request API basic card payment spec data for the provided
// autofill credit card |type|.  Will set the type and the icon to "generic" for
// any unrecognized type.
const PaymentRequestData& GetPaymentRequestData(const std::string& type);

// Returns the autofill credit card type string for the provided Payment Request
// API basic card payment spec |type|.
const char* GetCardTypeForBasicCardPaymentType(const std::string& type);

}  // namespace data_util
}  // namespace autofill

#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_DATA_UTIL_H_
