blob: d8aab23fd4bea8229125b1b2488482faabe09062 [file] [log] [blame]
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/sync/base/hash_util.h"
#include "base/logging.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "components/sync/base/data_type.h"
#include "components/sync/protocol/autofill_offer_specifics.pb.h"
#include "components/sync/protocol/autofill_specifics.pb.h"
#include "components/sync/protocol/autofill_valuable_specifics.pb.h"
namespace syncer {
std::string GetUnhashedClientTagFromAutofillWalletSpecifics(
const sync_pb::AutofillWalletSpecifics& specifics) {
switch (specifics.type()) {
case sync_pb::AutofillWalletSpecifics::MASKED_CREDIT_CARD:
return specifics.masked_card().id();
case sync_pb::AutofillWalletSpecifics::POSTAL_ADDRESS:
return specifics.address().id();
case sync_pb::AutofillWalletSpecifics::CUSTOMER_DATA:
return specifics.customer_data().id();
case sync_pb::AutofillWalletSpecifics::CREDIT_CARD_CLOUD_TOKEN_DATA:
return specifics.cloud_token_data().instrument_token();
case sync_pb::AutofillWalletSpecifics::PAYMENT_INSTRUMENT:
// Append a string to the instrument ID, since the same ID may be used for
// a MASKED_CREDIT_CARD entry.
return base::StrCat(
{"payment_instrument:",
base::NumberToString(
specifics.payment_instrument().instrument_id())});
case sync_pb::AutofillWalletSpecifics::PAYMENT_INSTRUMENT_CREATION_OPTION:
// Append a string to the ID since the ID is randomly generated without
// restrictions so it could be a duplicate ID of another type.
return base::StrCat(
{"payment_instrument_creation_option:",
specifics.payment_instrument_creation_option().id()});
case sync_pb::AutofillWalletSpecifics::MASKED_IBAN:
return std::string();
case sync_pb::AutofillWalletSpecifics::UNKNOWN:
DVLOG(1) << "New or unknown Autofill Wallet Specifics type is sent from "
"the sync server side while not handled by Chrome. This is "
"expected when the new type is not yet supported on current "
"chrome version.";
return std::string();
}
return std::string();
}
std::string GetUnhashedClientTagFromAutofillOfferSpecifics(
const sync_pb::AutofillOfferSpecifics& specifics) {
return base::NumberToString(specifics.id());
}
std::string GetUnhashedClientTagFromAutofillValuableSpecifics(
const sync_pb::AutofillValuableSpecifics& specifics) {
return specifics.id();
}
} // namespace syncer