summaryrefslogtreecommitdiff
path: root/chromium/components/autofill/core/common/signatures_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/autofill/core/common/signatures_util.cc')
-rw-r--r--chromium/components/autofill/core/common/signatures_util.cc33
1 files changed, 22 insertions, 11 deletions
diff --git a/chromium/components/autofill/core/common/signatures_util.cc b/chromium/components/autofill/core/common/signatures_util.cc
index 8e7695eac75..df549b97d2a 100644
--- a/chromium/components/autofill/core/common/signatures_util.cc
+++ b/chromium/components/autofill/core/common/signatures_util.cc
@@ -4,30 +4,41 @@
#include "components/autofill/core/common/signatures_util.h"
+#include <cctype>
+
#include "base/sha1.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "components/autofill/core/common/autofill_util.h"
#include "components/autofill/core/common/form_data.h"
#include "components/autofill/core/common/form_field_data.h"
-#include "third_party/re2/src/re2/re2.h"
-#include "third_party/re2/src/re2/stringpiece.h"
#include "url/gurl.h"
namespace autofill {
namespace {
-// Strip away >= 5 consecutive digits.
-const char kIgnorePatternInFieldName[] = "\\d{5,}";
-
-// Returns a copy of |input| without all occurrences of
-// |kIgnorePatternInFieldName|
+// Returns a copy of |input| without >= 5 consecutive digits.
std::string StripDigitsIfRequired(const base::string16& input) {
- std::string return_string = base::UTF16ToUTF8(input);
- re2::RE2::GlobalReplace(&return_string, re2::RE2(kIgnorePatternInFieldName),
- re2::StringPiece());
- return return_string;
+ std::string input_utf8 = base::UTF16ToUTF8(input);
+ std::string result;
+ result.reserve(input_utf8.length());
+
+ for (size_t i = 0; i < input_utf8.length();) {
+ if (std::isdigit(input_utf8[i])) {
+ size_t count = 0;
+ while (i < input_utf8.length() && std::isdigit(input_utf8[i])) {
+ i++;
+ count++;
+ }
+ if (count < 5)
+ result.append(input_utf8, i - count, count);
+ } else {
+ result.push_back(input_utf8[i]);
+ i++;
+ }
+ }
+ return result;
}
} // namespace