blob: d749236ebb84a2597639904f386f901441787894 [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.
#ifndef COMPONENTS_PAYMENTS_CORE_PAYMENT_DETAILS_MODIFIER_H_
#define COMPONENTS_PAYMENTS_CORE_PAYMENT_DETAILS_MODIFIER_H_
#include <memory>
#include <string>
#include <vector>
#include "components/payments/core/payment_item.h"
#include "components/payments/core/payment_method_data.h"
// C++ bindings for the PaymentRequest API PaymentDetailsModifier. Conforms to
// the following spec:
// https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier
namespace base {
class DictionaryValue;
}
namespace payments {
// Details that modify the PaymentDetails based on the payment method
// identifier.
class PaymentDetailsModifier {
public:
PaymentDetailsModifier();
PaymentDetailsModifier(const PaymentDetailsModifier& other);
~PaymentDetailsModifier();
PaymentDetailsModifier& operator=(const PaymentDetailsModifier& other);
bool operator==(const PaymentDetailsModifier& other) const;
bool operator!=(const PaymentDetailsModifier& other) const;
// Creates a base::DictionaryValue with the properties of this
// PaymentDetailsModifier.
std::unique_ptr<base::DictionaryValue> ToDictionaryValue() const;
// A payment method identifier and any associated payment method specific
// data. The remaining fields in the PaymentDetailsModifier apply only if the
// user selects this payment method.
PaymentMethodData method_data;
// This value overrides the total field in the PaymentDetails dictionary for
// the payment method identifiers in the supportedMethods field.
std::unique_ptr<PaymentItem> total;
// Provides additional display items that are appended to the displayItems
// field in the PaymentDetails dictionary for the payment method identifiers
// in the supportedMethods field. This field is commonly used to add a
// discount or surcharge line item indicating the reason for the different
// total amount for the selected payment method that the user agent may
// display.
std::vector<PaymentItem> additional_display_items;
};
} // namespace payments
#endif // COMPONENTS_PAYMENTS_CORE_PAYMENT_DETAILS_MODIFIER_H_