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

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

Issue 2704503002: [Autofill] Add Chrome flag that annotates web forms with form and field signatures (Closed)
Patch Set: Created 3 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 unified diff | Download patch
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 #include <memory> 8 #include <memory>
9 #include <set> 9 #include <set>
10 #include <vector> 10 #include <vector>
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 95
96 bool IsNoScriptElement(const WebElement& element) { 96 bool IsNoScriptElement(const WebElement& element) {
97 CR_DEFINE_STATIC_LOCAL(WebString, kNoScript, ("noscript")); 97 CR_DEFINE_STATIC_LOCAL(WebString, kNoScript, ("noscript"));
98 return element.hasHTMLTagName(kNoScript); 98 return element.hasHTMLTagName(kNoScript);
99 } 99 }
100 100
101 bool HasTagName(const WebNode& node, const blink::WebString& tag) { 101 bool HasTagName(const WebNode& node, const blink::WebString& tag) {
102 return node.isElementNode() && node.toConst<WebElement>().hasHTMLTagName(tag); 102 return node.isElementNode() && node.toConst<WebElement>().hasHTMLTagName(tag);
103 } 103 }
104 104
105 bool IsAutofillableElement(const WebFormControlElement& element) {
106 const WebInputElement* input_element = toWebInputElement(&element);
107 return IsAutofillableInputElement(input_element) ||
108 IsSelectElement(element) ||
109 IsTextAreaElement(element);
110 }
111
112 bool IsElementInControlElementSet( 105 bool IsElementInControlElementSet(
113 const WebElement& element, 106 const WebElement& element,
114 const std::vector<WebFormControlElement>& control_elements) { 107 const std::vector<WebFormControlElement>& control_elements) {
115 if (!element.isFormControlElement()) 108 if (!element.isFormControlElement())
116 return false; 109 return false;
117 const WebFormControlElement form_control_element = 110 const WebFormControlElement form_control_element =
118 element.toConst<WebFormControlElement>(); 111 element.toConst<WebFormControlElement>();
119 return std::find(control_elements.begin(), 112 return std::find(control_elements.begin(),
120 control_elements.end(), 113 control_elements.end(),
121 form_control_element) != control_elements.end(); 114 form_control_element) != control_elements.end();
(...skipping 1190 matching lines...) Expand 10 before | Expand all | Expand 10 after
1312 1305
1313 return element->isCheckbox() || element->isRadioButton(); 1306 return element->isCheckbox() || element->isRadioButton();
1314 } 1307 }
1315 1308
1316 bool IsAutofillableInputElement(const WebInputElement* element) { 1309 bool IsAutofillableInputElement(const WebInputElement* element) {
1317 return IsTextInput(element) || 1310 return IsTextInput(element) ||
1318 IsMonthInput(element) || 1311 IsMonthInput(element) ||
1319 IsCheckableElement(element); 1312 IsCheckableElement(element);
1320 } 1313 }
1321 1314
1315 bool IsAutofillableElement(const WebFormControlElement& element) {
1316 const WebInputElement* input_element = toWebInputElement(&element);
1317 return IsAutofillableInputElement(input_element) ||
1318 IsSelectElement(element) || IsTextAreaElement(element);
1319 }
1320
1322 const base::string16 GetFormIdentifier(const WebFormElement& form) { 1321 const base::string16 GetFormIdentifier(const WebFormElement& form) {
1323 base::string16 identifier = form.name().utf16(); 1322 base::string16 identifier = form.name().utf16();
1324 CR_DEFINE_STATIC_LOCAL(WebString, kId, ("id")); 1323 CR_DEFINE_STATIC_LOCAL(WebString, kId, ("id"));
1325 if (identifier.empty()) 1324 if (identifier.empty())
1326 identifier = form.getAttribute(kId).utf16(); 1325 identifier = form.getAttribute(kId).utf16();
1327 1326
1328 return identifier; 1327 return identifier;
1329 } 1328 }
1330 1329
1331 bool IsWebNodeVisible(const blink::WebNode& node) { 1330 bool IsWebNodeVisible(const blink::WebNode& node) {
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
1811 // Zero selection start is for password manager, which can show usernames 1810 // Zero selection start is for password manager, which can show usernames
1812 // that do not begin with the user input value. 1811 // that do not begin with the user input value.
1813 selection_start = (offset == base::string16::npos) ? 0 : offset; 1812 selection_start = (offset == base::string16::npos) ? 0 : offset;
1814 } 1813 }
1815 1814
1816 input_element->setSelectionRange(selection_start, suggestion.length()); 1815 input_element->setSelectionRange(selection_start, suggestion.length());
1817 } 1816 }
1818 1817
1819 } // namespace form_util 1818 } // namespace form_util
1820 } // namespace autofill 1819 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698