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

Unified Diff: chrome/renderer/autofill/form_autofill_util.cc

Issue 12220070: Use static strings in autofill labeling. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nit Created 7 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/autofill/form_autofill_util.cc
diff --git a/chrome/renderer/autofill/form_autofill_util.cc b/chrome/renderer/autofill/form_autofill_util.cc
index 9b5cd05aac90560a9732959c0777e0d44bbf2e44..9d1ac39fd97603ee495f50983a7c82ca3f5e56b8 100644
--- a/chrome/renderer/autofill/form_autofill_util.cc
+++ b/chrome/renderer/autofill/form_autofill_util.cc
@@ -55,15 +55,18 @@ using autofill::IsTextInput;
const size_t kMaxDataLength = 1024;
bool IsOptionElement(const WebElement& element) {
- return element.hasTagName("option");
+ CR_DEFINE_STATIC_LOCAL(WebString, kOption, ("option"));
+ return element.hasTagName(kOption);
}
bool IsScriptElement(const WebElement& element) {
- return element.hasTagName("script");
+ CR_DEFINE_STATIC_LOCAL(WebString, kScript, ("script"));
+ return element.hasTagName(kScript);
}
bool IsNoScriptElement(const WebElement& element) {
- return element.hasTagName("noscript");
+ CR_DEFINE_STATIC_LOCAL(WebString, kNoScript, ("noscript"));
+ return element.hasTagName(kNoScript);
}
bool HasTagName(const WebNode& node, const WebKit::WebString& tag) {
@@ -201,9 +204,13 @@ string16 InferLabelFromPrevious(const WebFormControlElement& element) {
// Coalesce any text contained in multiple consecutive
// (a) plain text nodes or
// (b) inline HTML elements that are essentially equivalent to text nodes.
+ CR_DEFINE_STATIC_LOCAL(WebString, kBold, ("b"));
+ CR_DEFINE_STATIC_LOCAL(WebString, kStrong, ("strong"));
+ CR_DEFINE_STATIC_LOCAL(WebString, kSpan, ("span"));
+ CR_DEFINE_STATIC_LOCAL(WebString, kFont, ("font"));
if (previous.isTextNode() ||
- HasTagName(previous, "b") || HasTagName(previous, "strong") ||
- HasTagName(previous, "span") || HasTagName(previous, "font")) {
+ HasTagName(previous, kBold) || HasTagName(previous, kStrong) ||
+ HasTagName(previous, kSpan) || HasTagName(previous, kFont)) {
string16 value = FindChildText(previous);
// A text node's value will be empty if it is for a line break.
bool add_space = previous.isTextNode() && value.empty();
@@ -221,11 +228,15 @@ string16 InferLabelFromPrevious(const WebFormControlElement& element) {
// <img> and <br> tags often appear between the input element and its
// label text, so skip over them.
- if (HasTagName(previous, "img") || HasTagName(previous, "br"))
+ CR_DEFINE_STATIC_LOCAL(WebString, kImage, ("img"));
+ CR_DEFINE_STATIC_LOCAL(WebString, kBreak, ("br"));
+ if (HasTagName(previous, kImage) || HasTagName(previous, kBreak))
continue;
// We only expect <p> and <label> tags to contain the full label text.
- if (HasTagName(previous, "p") || HasTagName(previous, "label"))
+ CR_DEFINE_STATIC_LOCAL(WebString, kPage, ("p"));
+ CR_DEFINE_STATIC_LOCAL(WebString, kLabel, ("label"));
+ if (HasTagName(previous, kPage) || HasTagName(previous, kLabel))
inferred_label = FindChildText(previous);
break;
@@ -240,12 +251,13 @@ string16 InferLabelFromPrevious(const WebFormControlElement& element) {
// e.g. <li>Some Text<input ...><input ...><input ...></tr>
string16 InferLabelFromListItem(const WebFormControlElement& element) {
WebNode parent = element.parentNode();
+ CR_DEFINE_STATIC_LOCAL(WebString, kListItem, ("li"));
while (!parent.isNull() && parent.isElementNode() &&
- !parent.to<WebElement>().hasTagName("li")) {
+ !parent.to<WebElement>().hasTagName(kListItem)) {
parent = parent.parentNode();
}
- if (!parent.isNull() && HasTagName(parent, "li"))
+ if (!parent.isNull() && HasTagName(parent, kListItem))
return FindChildText(parent);
return string16();
@@ -258,9 +270,10 @@ string16 InferLabelFromListItem(const WebFormControlElement& element) {
// or <tr><td><b>Some Text</b></td><td><b><input ...></b></td></tr>
// or <tr><th><b>Some Text</b></th><td><b><input ...></b></td></tr>
string16 InferLabelFromTableColumn(const WebFormControlElement& element) {
+ CR_DEFINE_STATIC_LOCAL(WebString, kTableCell, ("td"));
WebNode parent = element.parentNode();
while (!parent.isNull() && parent.isElementNode() &&
- !parent.to<WebElement>().hasTagName("td")) {
+ !parent.to<WebElement>().hasTagName(kTableCell)) {
parent = parent.parentNode();
}
@@ -271,8 +284,9 @@ string16 InferLabelFromTableColumn(const WebFormControlElement& element) {
// non-empty text block.
string16 inferred_label;
WebNode previous = parent.previousSibling();
+ CR_DEFINE_STATIC_LOCAL(WebString, kTableHeader, ("th"));
while (inferred_label.empty() && !previous.isNull()) {
- if (HasTagName(previous, "td") || HasTagName(previous, "th"))
+ if (HasTagName(previous, kTableCell) || HasTagName(previous, kTableHeader))
inferred_label = FindChildText(previous);
previous = previous.previousSibling();
@@ -285,9 +299,10 @@ string16 InferLabelFromTableColumn(const WebFormControlElement& element) {
// surrounding table structure,
// e.g. <tr><td>Some Text</td></tr><tr><td><input ...></td></tr>
string16 InferLabelFromTableRow(const WebFormControlElement& element) {
+ CR_DEFINE_STATIC_LOCAL(WebString, kTableRow, ("tr"));
WebNode parent = element.parentNode();
while (!parent.isNull() && parent.isElementNode() &&
- !parent.to<WebElement>().hasTagName("tr")) {
+ !parent.to<WebElement>().hasTagName(kTableRow)) {
parent = parent.parentNode();
}
@@ -299,7 +314,7 @@ string16 InferLabelFromTableRow(const WebFormControlElement& element) {
string16 inferred_label;
WebNode previous = parent.previousSibling();
while (inferred_label.empty() && !previous.isNull()) {
- if (HasTagName(previous, "tr"))
+ if (HasTagName(previous, kTableRow))
inferred_label = FindChildText(previous);
previous = previous.previousSibling();
@@ -318,12 +333,15 @@ string16 InferLabelFromDivTable(const WebFormControlElement& element) {
// Search the sibling and parent <div>s until we find a candidate label.
string16 inferred_label;
+ CR_DEFINE_STATIC_LOCAL(WebString, kDiv, ("div"));
+ CR_DEFINE_STATIC_LOCAL(WebString, kTable, ("table"));
+ CR_DEFINE_STATIC_LOCAL(WebString, kFieldSet, ("fieldset"));
while (inferred_label.empty() && !node.isNull()) {
- if (HasTagName(node, "div")) {
+ if (HasTagName(node, kDiv)) {
looking_for_parent = false;
inferred_label = FindChildText(node);
} else if (looking_for_parent &&
- (HasTagName(node, "table") || HasTagName(node, "fieldset"))) {
+ (HasTagName(node, kTable) || HasTagName(node, kFieldSet))) {
// If the element is in a table or fieldset, its label most likely is too.
break;
}
@@ -347,12 +365,13 @@ string16 InferLabelFromDivTable(const WebFormControlElement& element) {
// e.g. <dl><dt>Some Text</dt><dd><input ...></dd></dl>
// e.g. <dl><dt><b>Some Text</b></dt><dd><b><input ...></b></dd></dl>
string16 InferLabelFromDefinitionList(const WebFormControlElement& element) {
+ CR_DEFINE_STATIC_LOCAL(WebString, kDefinitionData, ("dd"));
WebNode parent = element.parentNode();
while (!parent.isNull() && parent.isElementNode() &&
- !parent.to<WebElement>().hasTagName("dd"))
+ !parent.to<WebElement>().hasTagName(kDefinitionData))
parent = parent.parentNode();
- if (parent.isNull() || !HasTagName(parent, "dd"))
+ if (parent.isNull() || !HasTagName(parent, kDefinitionData))
return string16();
// Skip by any intervening text nodes.
@@ -360,7 +379,8 @@ string16 InferLabelFromDefinitionList(const WebFormControlElement& element) {
while (!previous.isNull() && previous.isTextNode())
previous = previous.previousSibling();
- if (previous.isNull() || !HasTagName(previous, "dt"))
+ CR_DEFINE_STATIC_LOCAL(WebString, kDefinitionTag, ("dt"));
+ if (previous.isNull() || !HasTagName(previous, kDefinitionTag))
return string16();
return FindChildText(previous);
@@ -593,8 +613,9 @@ bool IsAutofillableInputElement(const WebInputElement* element) {
const string16 GetFormIdentifier(const WebFormElement& form) {
string16 identifier = form.name();
+ CR_DEFINE_STATIC_LOCAL(WebString, kId, ("id"));
if (identifier.empty())
- identifier = form.getAttribute(WebString("id"));
+ identifier = form.getAttribute(kId);
return identifier;
}
@@ -663,6 +684,7 @@ void WebFormControlElementToFormField(const WebFormControlElement& element,
FormFieldData* field) {
DCHECK(field);
DCHECK(!element.isNull());
+ CR_DEFINE_STATIC_LOCAL(WebString, kAutocomplete, ("autocomplete"));
// The label is not officially part of a WebFormControlElement; however, the
// labels for all form control elements are scraped from the DOM and set in
@@ -670,7 +692,7 @@ void WebFormControlElementToFormField(const WebFormControlElement& element,
field->name = element.nameForAutofill();
field->form_control_type = UTF16ToUTF8(element.formControlType());
field->autocomplete_attribute =
- UTF16ToUTF8(element.getAttribute("autocomplete"));
+ UTF16ToUTF8(element.getAttribute(kAutocomplete));
if (field->autocomplete_attribute.size() > kMaxDataLength) {
// Discard overly long attribute values to avoid DOS-ing the browser
// process. However, send over a default string to indicate that the
@@ -741,6 +763,10 @@ bool WebFormElementToFormData(
ExtractMask extract_mask,
FormData* form,
FormFieldData* field) {
+ CR_DEFINE_STATIC_LOCAL(WebString, kLabel, ("label"));
+ CR_DEFINE_STATIC_LOCAL(WebString, kFor, ("for"));
+ CR_DEFINE_STATIC_LOCAL(WebString, kHidden, ("hidden"));
+
const WebFrame* frame = form_element.document().frame();
if (!frame)
return false;
@@ -806,7 +832,7 @@ bool WebFormElementToFormData(
// element's name as a key into the <name, FormFieldData> map to find the
// previously created FormFieldData and set the FormFieldData's label to the
// label.firstChild().nodeValue() of the label element.
- WebNodeList labels = form_element.getElementsByTagName("label");
+ WebNodeList labels = form_element.getElementsByTagName(kLabel);
for (unsigned i = 0; i < labels.length(); ++i) {
WebLabelElement label = labels.item(i).to<WebLabelElement>();
WebFormControlElement field_element =
@@ -816,10 +842,10 @@ bool WebFormElementToFormData(
if (field_element.isNull()) {
// Sometimes site authors will incorrectly specify the corresponding
// field element's name rather than its id, so we compensate here.
- element_name = label.getAttribute("for");
+ element_name = label.getAttribute(kFor);
} else if (
!field_element.isFormControlElement() ||
- field_element.formControlType() == WebString::fromUTF8("hidden")) {
+ field_element.formControlType() == kHidden) {
continue;
} else {
element_name = field_element.nameForAutofill();
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698