Index: components/autofill/content/renderer/form_autofill_util.cc |
diff --git a/components/autofill/content/renderer/form_autofill_util.cc b/components/autofill/content/renderer/form_autofill_util.cc |
index dde537997b4f56380c0cc1111f82015300db6f99..88694a72f8f43f7f928e2abbb1bf476a2604f6f9 100644 |
--- a/components/autofill/content/renderer/form_autofill_util.cc |
+++ b/components/autofill/content/renderer/form_autofill_util.cc |
@@ -274,6 +274,16 @@ base::string16 InferLabelFromPrevious(const WebFormControlElement& element) { |
} |
// Helper for |InferLabelForElement()| that infers a label, if possible, from |
+// placeholder text, |
+base::string16 InferLabelFromPlaceholder(const WebFormControlElement& element) { |
+ CR_DEFINE_STATIC_LOCAL(WebString, kPlaceholder, ("placeholder")); |
+ if (element.hasAttribute(kPlaceholder)) |
+ return element.getAttribute(kPlaceholder); |
+ |
+ return base::string16(); |
+} |
+ |
+// Helper for |InferLabelForElement()| that infers a label, if possible, from |
// enclosing list item, |
// e.g. <li>Some Text<input ...><input ...><input ...></tr> |
base::string16 InferLabelFromListItem(const WebFormControlElement& element) { |
@@ -421,6 +431,11 @@ base::string16 InferLabelForElement(const WebFormControlElement& element) { |
if (!inferred_label.empty()) |
return inferred_label; |
+ // If we didn't find a label, check for placeholder text. |
+ inferred_label = InferLabelFromPlaceholder(element); |
+ if (!inferred_label.empty()) |
+ return inferred_label; |
+ |
// If we didn't find a label, check for list item case. |
inferred_label = InferLabelFromListItem(element); |
if (!inferred_label.empty()) |