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

Side by Side Diff: components/autofill/content/renderer/form_autofill_util.cc

Issue 675883002: Autofill: Consider placeholder text when inferring an input's label. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@staples
Patch Set: rebase expectations Created 6 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 unified diff | Download patch
« no previous file with comments | « chrome/test/data/autofill/heuristics/output/20_checkout_staples.com.out ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/autofill/content/renderer/form_autofill_util.h" 5 #include "components/autofill/content/renderer/form_autofill_util.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 inferred_label = FindChildText(previous); 267 inferred_label = FindChildText(previous);
268 268
269 break; 269 break;
270 } 270 }
271 271
272 base::TrimWhitespace(inferred_label, base::TRIM_ALL, &inferred_label); 272 base::TrimWhitespace(inferred_label, base::TRIM_ALL, &inferred_label);
273 return inferred_label; 273 return inferred_label;
274 } 274 }
275 275
276 // Helper for |InferLabelForElement()| that infers a label, if possible, from 276 // Helper for |InferLabelForElement()| that infers a label, if possible, from
277 // placeholder text,
278 base::string16 InferLabelFromPlaceholder(const WebFormControlElement& element) {
279 CR_DEFINE_STATIC_LOCAL(WebString, kPlaceholder, ("placeholder"));
280 if (element.hasAttribute(kPlaceholder))
281 return element.getAttribute(kPlaceholder);
282
283 return base::string16();
284 }
285
286 // Helper for |InferLabelForElement()| that infers a label, if possible, from
277 // enclosing list item, 287 // enclosing list item,
278 // e.g. <li>Some Text<input ...><input ...><input ...></tr> 288 // e.g. <li>Some Text<input ...><input ...><input ...></tr>
279 base::string16 InferLabelFromListItem(const WebFormControlElement& element) { 289 base::string16 InferLabelFromListItem(const WebFormControlElement& element) {
280 WebNode parent = element.parentNode(); 290 WebNode parent = element.parentNode();
281 CR_DEFINE_STATIC_LOCAL(WebString, kListItem, ("li")); 291 CR_DEFINE_STATIC_LOCAL(WebString, kListItem, ("li"));
282 while (!parent.isNull() && parent.isElementNode() && 292 while (!parent.isNull() && parent.isElementNode() &&
283 !parent.to<WebElement>().hasHTMLTagName(kListItem)) { 293 !parent.to<WebElement>().hasHTMLTagName(kListItem)) {
284 parent = parent.parentNode(); 294 parent = parent.parentNode();
285 } 295 }
286 296
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 return FindChildText(previous); 424 return FindChildText(previous);
415 } 425 }
416 426
417 // Infers corresponding label for |element| from surrounding context in the DOM, 427 // Infers corresponding label for |element| from surrounding context in the DOM,
418 // e.g. the contents of the preceding <p> tag or text element. 428 // e.g. the contents of the preceding <p> tag or text element.
419 base::string16 InferLabelForElement(const WebFormControlElement& element) { 429 base::string16 InferLabelForElement(const WebFormControlElement& element) {
420 base::string16 inferred_label = InferLabelFromPrevious(element); 430 base::string16 inferred_label = InferLabelFromPrevious(element);
421 if (!inferred_label.empty()) 431 if (!inferred_label.empty())
422 return inferred_label; 432 return inferred_label;
423 433
434 // If we didn't find a label, check for placeholder text.
435 inferred_label = InferLabelFromPlaceholder(element);
436 if (!inferred_label.empty())
437 return inferred_label;
438
424 // If we didn't find a label, check for list item case. 439 // If we didn't find a label, check for list item case.
425 inferred_label = InferLabelFromListItem(element); 440 inferred_label = InferLabelFromListItem(element);
426 if (!inferred_label.empty()) 441 if (!inferred_label.empty())
427 return inferred_label; 442 return inferred_label;
428 443
429 // If we didn't find a label, check for table cell case. 444 // If we didn't find a label, check for table cell case.
430 inferred_label = InferLabelFromTableColumn(element); 445 inferred_label = InferLabelFromTableColumn(element);
431 if (!inferred_label.empty()) 446 if (!inferred_label.empty())
432 return inferred_label; 447 return inferred_label;
433 448
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after
1188 1203
1189 gfx::RectF GetScaledBoundingBox(float scale, WebFormControlElement* element) { 1204 gfx::RectF GetScaledBoundingBox(float scale, WebFormControlElement* element) {
1190 gfx::Rect bounding_box(element->boundsInViewportSpace()); 1205 gfx::Rect bounding_box(element->boundsInViewportSpace());
1191 return gfx::RectF(bounding_box.x() * scale, 1206 return gfx::RectF(bounding_box.x() * scale,
1192 bounding_box.y() * scale, 1207 bounding_box.y() * scale,
1193 bounding_box.width() * scale, 1208 bounding_box.width() * scale,
1194 bounding_box.height() * scale); 1209 bounding_box.height() * scale);
1195 } 1210 }
1196 1211
1197 } // namespace autofill 1212 } // namespace autofill
OLDNEW
« no previous file with comments | « chrome/test/data/autofill/heuristics/output/20_checkout_staples.com.out ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698