blob: 878e23474b4825fd028241b72439b53eafabaa10 [file] [log] [blame]
// Copyright 2017 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.
#include "components/payments/core/payment_options.h"
#include "base/values.h"
namespace payments {
namespace {
// These are defined as part of the spec at:
// https://w3c.github.io/payment-request/#paymentoptions-dictionary
static const char kPaymentOptionsRequestPayerEmail[] = "requestPayerEmail";
static const char kPaymentOptionsRequestPayerName[] = "requestPayerName";
static const char kPaymentOptionsRequestPayerPhone[] = "requestPayerPhone";
static const char kPaymentOptionsRequestShipping[] = "requestShipping";
static const char kPaymentOptionsShippingTypeDelivery[] = "delivery";
static const char kPaymentOptionsShippingTypePickup[] = "pickup";
static const char kPaymentOptionsShippingType[] = "shippingType";
} // namespace
PaymentOptions::PaymentOptions()
: request_payer_name(false),
request_payer_email(false),
request_payer_phone(false),
request_shipping(false),
shipping_type(payments::PaymentShippingType::SHIPPING) {}
PaymentOptions::~PaymentOptions() = default;
bool PaymentOptions::operator==(const PaymentOptions& other) const {
return request_payer_name == other.request_payer_name &&
request_payer_email == other.request_payer_email &&
request_payer_phone == other.request_payer_phone &&
request_shipping == other.request_shipping &&
shipping_type == other.shipping_type;
}
bool PaymentOptions::operator!=(const PaymentOptions& other) const {
return !(*this == other);
}
bool PaymentOptions::FromDictionaryValue(const base::DictionaryValue& value) {
value.GetBoolean(kPaymentOptionsRequestPayerName, &request_payer_name);
value.GetBoolean(kPaymentOptionsRequestPayerEmail, &request_payer_email);
value.GetBoolean(kPaymentOptionsRequestPayerPhone, &request_payer_phone);
value.GetBoolean(kPaymentOptionsRequestShipping, &request_shipping);
std::string shipping_type_string;
value.GetString(kPaymentOptionsShippingType, &shipping_type_string);
if (shipping_type_string == kPaymentOptionsShippingTypeDelivery) {
shipping_type = payments::PaymentShippingType::DELIVERY;
} else if (shipping_type_string == kPaymentOptionsShippingTypePickup) {
shipping_type = payments::PaymentShippingType::PICKUP;
} else {
shipping_type = payments::PaymentShippingType::SHIPPING;
}
return true;
}
} // namespace payments