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

Unified Diff: components/payments/payments_validators.cc

Issue 2373103002: [Web Payments] Common Payments validation (Closed)
Patch Set: Fixed validator 2 Created 4 years, 1 month 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/payments_validators.h ('k') | components/payments/payments_validators_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/payments/payments_validators.cc
diff --git a/third_party/WebKit/Source/modules/payments/PaymentsValidators.cpp b/components/payments/payments_validators.cc
similarity index 56%
copy from third_party/WebKit/Source/modules/payments/PaymentsValidators.cpp
copy to components/payments/payments_validators.cc
index 5b9ddaab2a0f31267e017f5d1d663c13540b8fdd..ddc943d3d2b25201dfc6aeff4eb58ea690ee15fa 100644
--- a/third_party/WebKit/Source/modules/payments/PaymentsValidators.cpp
+++ b/components/payments/payments_validators.cc
@@ -2,23 +2,22 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "modules/payments/PaymentsValidators.h"
+#include "components/payments/payments_validators.h"
-#include "bindings/core/v8/ScriptRegexp.h"
-#include "platform/weborigin/KURL.h"
-#include "wtf/text/StringImpl.h"
+#include "third_party/re2/src/re2/re2.h"
+#include "url/gurl.h"
-namespace blink {
+namespace payments {
// We limit the maximum length of string to 2048 bytes for security reasons.
-static const int maxiumStringLength = 2048;
+static const int maximumStringLength = 2048;
bool PaymentsValidators::isValidCurrencyCodeFormat(
- const String& code,
- const String& system,
- String* optionalErrorMessage) {
+ const std::string& code,
+ const std::string& system,
+ std::string* optionalErrorMessage) {
if (system == "urn:iso:std:iso:4217") {
- if (ScriptRegexp("^[A-Z]{3}$", TextCaseSensitive).match(code) == 0)
+ if (RE2::FullMatch(code, "[A-Z]{3}"))
return true;
if (optionalErrorMessage)
@@ -29,27 +28,25 @@ bool PaymentsValidators::isValidCurrencyCodeFormat(
return false;
}
- if (!KURL(KURL(), system).isValid()) {
+ if (code.size() > maximumStringLength) {
if (optionalErrorMessage)
- *optionalErrorMessage = "The currency system is not a valid URL";
-
+ *optionalErrorMessage =
+ "The currency code should be at most 2048 characters long";
return false;
}
-
- if (code.length() <= maxiumStringLength)
- return true;
-
- if (optionalErrorMessage)
- *optionalErrorMessage =
- "The currency code should be at most 2048 characters long";
-
- return false;
+ if (!GURL(system).is_valid()) {
+ if (optionalErrorMessage)
+ *optionalErrorMessage =
+ "The system should be a valid URL";
+ return false;
+ }
+ return true;
}
-bool PaymentsValidators::isValidAmountFormat(const String& amount,
- String* optionalErrorMessage) {
- if (ScriptRegexp("^-?[0-9]+(\\.[0-9]+)?$", TextCaseSensitive).match(amount) ==
- 0)
+bool PaymentsValidators::isValidAmountFormat(
+ const std::string& amount,
+ std::string* optionalErrorMessage) {
+ if (RE2::FullMatch(amount, "-?[0-9]+(\\.[0-9]+)?"))
return true;
if (optionalErrorMessage)
@@ -59,9 +56,9 @@ bool PaymentsValidators::isValidAmountFormat(const String& amount,
}
bool PaymentsValidators::isValidCountryCodeFormat(
- const String& code,
- String* optionalErrorMessage) {
- if (ScriptRegexp("^[A-Z]{2}$", TextCaseSensitive).match(code) == 0)
+ const std::string& code,
+ std::string* optionalErrorMessage) {
+ if (RE2::FullMatch(code, "[A-Z]{2}"))
return true;
if (optionalErrorMessage)
@@ -73,9 +70,9 @@ bool PaymentsValidators::isValidCountryCodeFormat(
}
bool PaymentsValidators::isValidLanguageCodeFormat(
- const String& code,
- String* optionalErrorMessage) {
- if (ScriptRegexp("^([a-z]{2,3})?$", TextCaseSensitive).match(code) == 0)
+ const std::string& code,
+ std::string* optionalErrorMessage) {
+ if (RE2::FullMatch(code, "([a-z]{2,3})?"))
return true;
if (optionalErrorMessage)
@@ -86,9 +83,10 @@ bool PaymentsValidators::isValidLanguageCodeFormat(
return false;
}
-bool PaymentsValidators::isValidScriptCodeFormat(const String& code,
- String* optionalErrorMessage) {
- if (ScriptRegexp("^([A-Z][a-z]{3})?$", TextCaseSensitive).match(code) == 0)
+bool PaymentsValidators::isValidScriptCodeFormat(
+ const std::string& code,
+ std::string* optionalErrorMessage) {
+ if (RE2::FullMatch(code, "([A-Z][a-z]{3})?"))
return true;
if (optionalErrorMessage)
@@ -101,8 +99,8 @@ bool PaymentsValidators::isValidScriptCodeFormat(const String& code,
}
bool PaymentsValidators::isValidShippingAddress(
- const mojom::blink::PaymentAddressPtr& address,
- String* optionalErrorMessage) {
+ const blink::mojom::PaymentAddressPtr& address,
+ std::string* optionalErrorMessage) {
if (!isValidCountryCodeFormat(address->country, optionalErrorMessage))
return false;
@@ -112,7 +110,7 @@ bool PaymentsValidators::isValidShippingAddress(
if (!isValidScriptCodeFormat(address->script_code, optionalErrorMessage))
return false;
- if (address->language_code.isEmpty() && !address->script_code.isEmpty()) {
+ if (address->language_code.empty() && !address->script_code.empty()) {
if (optionalErrorMessage)
*optionalErrorMessage =
"If language code is empty, then script code should also be empty";
@@ -123,9 +121,10 @@ bool PaymentsValidators::isValidShippingAddress(
return true;
}
-bool PaymentsValidators::isValidErrorMsgFormat(const String& error,
- String* optionalErrorMessage) {
- if (error.length() <= maxiumStringLength)
+bool PaymentsValidators::isValidErrorMsgFormat(
+ const std::string& error,
+ std::string* optionalErrorMessage) {
+ if (error.length() <= maximumStringLength)
return true;
if (optionalErrorMessage)
@@ -135,4 +134,4 @@ bool PaymentsValidators::isValidErrorMsgFormat(const String& error,
return false;
}
-} // namespace blink
+} // namespace payments
« no previous file with comments | « components/payments/payments_validators.h ('k') | components/payments/payments_validators_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698