Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2259)

Unified Diff: components/payments/payment_details_validation.cc

Issue 2713033004: Layered component for web payments (Closed)
Patch Set: Rebase Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/payments/payment_details_validation.h ('k') | components/payments/payment_request.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/payments/payment_details_validation.cc
diff --git a/components/payments/payment_details_validation.cc b/components/payments/payment_details_validation.cc
deleted file mode 100644
index 5fce52febfc8f32b98308cd7a6c3eae4601c19d2..0000000000000000000000000000000000000000
--- a/components/payments/payment_details_validation.cc
+++ /dev/null
@@ -1,182 +0,0 @@
-// 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.
-
-#include "components/payments/payment_details_validation.h"
-
-#include <set>
-#include <vector>
-
-#include "components/payments/payment_request.mojom.h"
-#include "components/payments/payments_validators.h"
-
-namespace {
-
-// Validates ShippingOption or PaymentItem, which happen to have identical
-// fields, except for "id", which is present only in ShippingOption.
-template <typename T>
-bool validateShippingOptionOrPaymentItem(
- const T& item,
- const payments::mojom::PaymentItemPtr& total,
- std::string* error_message) {
- if (item->label.empty()) {
- *error_message = "Item label required";
- return false;
- }
-
- if (!item->amount) {
- *error_message = "Currency amount required";
- return false;
- }
-
- if (item->amount->currency.empty()) {
- *error_message = "Currency code required";
- return false;
- }
-
- if (item->amount->value.empty()) {
- *error_message = "Currency value required";
- return false;
- }
-
- if (item->amount->currency != total->amount->currency) {
- *error_message = "Currencies must all be equal";
- return false;
- }
-
- if (item->amount->currency_system.empty()) {
- *error_message = "Currency system can't be empty";
- return false;
- }
-
- if (!payments::PaymentsValidators::isValidCurrencyCodeFormat(
- item->amount->currency, item->amount->currency_system,
- error_message)) {
- return false;
- }
-
- if (!payments::PaymentsValidators::isValidAmountFormat(item->amount->value,
- error_message)) {
- return false;
- }
- return true;
-}
-
-bool validateDisplayItems(
- const std::vector<payments::mojom::PaymentItemPtr>& items,
- const payments::mojom::PaymentItemPtr& total,
- std::string* error_message) {
- for (const auto& item : items) {
- if (!validateShippingOptionOrPaymentItem(item, total, error_message))
- return false;
- }
- return true;
-}
-
-bool validateShippingOptions(
- const std::vector<payments::mojom::PaymentShippingOptionPtr>& options,
- const payments::mojom::PaymentItemPtr& total,
- std::string* error_message) {
- std::set<std::string> uniqueIds;
- for (const auto& option : options) {
- if (option->id.empty()) {
- *error_message = "ShippingOption id required";
- return false;
- }
-
- if (uniqueIds.find(option->id) != uniqueIds.end()) {
- *error_message = "Duplicate shipping option identifiers are not allowed";
- return false;
- }
- uniqueIds.insert(option->id);
-
- if (!validateShippingOptionOrPaymentItem(option, total, error_message))
- return false;
- }
- return true;
-}
-
-bool validatePaymentDetailsModifiers(
- const std::vector<payments::mojom::PaymentDetailsModifierPtr>& modifiers,
- const payments::mojom::PaymentItemPtr& total,
- std::string* error_message) {
- if (modifiers.empty()) {
- *error_message = "Must specify at least one payment details modifier";
- return false;
- }
-
- for (const auto& modifier : modifiers) {
- if (!modifier->method_data) {
- *error_message = "Method data required";
- return false;
- }
-
- if (modifier->method_data->supported_methods.empty()) {
- *error_message = "Must specify at least one payment method identifier";
- return false;
- }
-
- if (modifier->total) {
- if (!validateShippingOptionOrPaymentItem(modifier->total, total,
- error_message))
- return false;
-
- if (modifier->total->amount->value[0] == '-') {
- *error_message = "Total amount value should be non-negative";
- return false;
- }
- }
-
- if (modifier->additional_display_items.size()) {
- if (!validateDisplayItems(modifier->additional_display_items, total,
- error_message)) {
- return false;
- }
- }
- }
- return true;
-}
-
-} // namespace
-
-namespace payments {
-
-bool validatePaymentDetails(const mojom::PaymentDetailsPtr& details,
- std::string* error_message) {
- if (details->total.is_null()) {
- *error_message = "Must specify total";
- return false;
- }
-
- if (!validateShippingOptionOrPaymentItem(details->total, details->total,
- error_message))
- return false;
-
- if (details->total->amount->value[0] == '-') {
- *error_message = "Total amount value should be non-negative";
- return false;
- }
-
- if (details->display_items.size()) {
- if (!validateDisplayItems(details->display_items, details->total,
- error_message))
- return false;
- }
-
- if (details->shipping_options.size()) {
- if (!validateShippingOptions(details->shipping_options, details->total,
- error_message))
- return false;
- }
-
- if (details->modifiers.size()) {
- if (!validatePaymentDetailsModifiers(details->modifiers, details->total,
- error_message))
- return false;
- }
- if (!PaymentsValidators::isValidErrorMsgFormat(details->error, error_message))
- return false;
- return true;
-}
-
-} // namespace payments
« no previous file with comments | « components/payments/payment_details_validation.h ('k') | components/payments/payment_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698