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

Unified Diff: components/autofill/content/renderer/password_form_conversion_utils.cc

Issue 2917933002: [PasswordGeneration] Improve change/confirm password field detection. (Closed)
Patch Set: Address more comments. Created 3 years, 6 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
Index: components/autofill/content/renderer/password_form_conversion_utils.cc
diff --git a/components/autofill/content/renderer/password_form_conversion_utils.cc b/components/autofill/content/renderer/password_form_conversion_utils.cc
index 825f44621b91938fe3c784629d38498141d2b701..c47feeb6fe4f8ba505f2e82111bed5580be60cc3 100644
--- a/components/autofill/content/renderer/password_form_conversion_utils.cc
+++ b/components/autofill/content/renderer/password_form_conversion_utils.cc
@@ -740,31 +740,37 @@ std::unique_ptr<PasswordForm> CreatePasswordFormFromUnownedInputElements(
}
bool HasAutocompleteAttributeValue(const blink::WebInputElement& element,
- const char* value_in_lowercase) {
- std::string autocomplete_value_lowercase = base::ToLowerASCII(
- base::UTF16ToUTF8(element.GetAttribute("autocomplete").Utf16()));
-
- std::vector<base::StringPiece> tokens = base::SplitStringPiece(
- autocomplete_value_lowercase, base::kWhitespaceASCII,
- base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
-
- return base::ContainsValue(tokens, value_in_lowercase);
+ base::StringPiece value_in_lowercase) {
+ CR_DEFINE_STATIC_LOCAL(WebString, kAutocomplete, ("autocomplete"));
+ const std::string autocomplete_value =
+ element.GetAttribute(kAutocomplete)
+ .Utf8(WebString::UTF8ConversionMode::kStrictReplacingErrorsWithFFFD);
+
+ std::vector<base::StringPiece> tokens =
+ base::SplitStringPiece(autocomplete_value, base::kWhitespaceASCII,
+ base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+ return std::find_if(tokens.begin(), tokens.end(),
+ [value_in_lowercase](base::StringPiece token) {
dvadym 2017/06/09 11:39:48 Nit: it looks that you can avoid copying value_in_
pkalinnikov 2017/06/09 11:53:23 I assume you mean [value_in_lowercase](base::Strin
dvadym 2017/06/09 11:59:25 Acknowledged
+ return base::LowerCaseEqualsASCII(token,
+ value_in_lowercase);
+ }) != tokens.end();
}
bool HasCreditCardAutocompleteAttributes(
const blink::WebInputElement& element) {
- std::string autocomplete_value_lowercase = base::ToLowerASCII(
- base::UTF16ToUTF8(element.GetAttribute("autocomplete").Utf16()));
-
- for (const auto& token : base::SplitStringPiece(
- autocomplete_value_lowercase, base::kWhitespaceASCII,
- base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) {
- if (base::StartsWith(token, kAutocompleteCreditCardPrefix,
- base::CompareCase::SENSITIVE)) {
- return true;
- }
- }
- return false;
+ CR_DEFINE_STATIC_LOCAL(WebString, kAutocomplete, ("autocomplete"));
+ const std::string autocomplete_value =
+ element.GetAttribute(kAutocomplete)
+ .Utf8(WebString::UTF8ConversionMode::kStrictReplacingErrorsWithFFFD);
+
+ std::vector<base::StringPiece> tokens =
+ base::SplitStringPiece(autocomplete_value, base::kWhitespaceASCII,
+ base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+ return std::find_if(
+ tokens.begin(), tokens.end(), [](base::StringPiece token) {
dvadym 2017/06/09 11:39:47 Nit: base::StringPiece -> const base::StringPiece&
pkalinnikov 2017/06/09 11:53:23 Same argument as above.
dvadym 2017/06/09 11:59:25 Acknowledged
+ return base::StartsWith(token, kAutocompleteCreditCardPrefix,
+ base::CompareCase::INSENSITIVE_ASCII);
+ }) != tokens.end();
}
bool IsCreditCardVerificationPasswordField(

Powered by Google App Engine
This is Rietveld 408576698