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

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

Issue 804443002: Autofill: Modify various utility function to deal with unowned form fields. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit Created 6 years 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 | « components/autofill/content/renderer/form_cache.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/autofill/content/renderer/form_cache.cc
diff --git a/components/autofill/content/renderer/form_cache.cc b/components/autofill/content/renderer/form_cache.cc
index a0b293a25147e96d30ed06972d092af53ff44c28..0bd8fd1839da496c95d5b83be8391a46660fa8b1 100644
--- a/components/autofill/content/renderer/form_cache.cc
+++ b/components/autofill/content/renderer/form_cache.cc
@@ -16,7 +16,6 @@
#include "third_party/WebKit/public/platform/WebVector.h"
#include "third_party/WebKit/public/web/WebConsoleMessage.h"
#include "third_party/WebKit/public/web/WebDocument.h"
-#include "third_party/WebKit/public/web/WebElementCollection.h"
#include "third_party/WebKit/public/web/WebFormControlElement.h"
#include "third_party/WebKit/public/web/WebFormElement.h"
#include "third_party/WebKit/public/web/WebInputElement.h"
@@ -29,7 +28,6 @@
using blink::WebConsoleMessage;
using blink::WebDocument;
using blink::WebElement;
-using blink::WebElementCollection;
using blink::WebFormControlElement;
using blink::WebFormElement;
using blink::WebFrame;
@@ -87,22 +85,6 @@ void LogDeprecationMessages(const WebFormControlElement& element) {
}
}
-bool IsElementInsideFormOrFieldSet(const WebElement& element) {
- for (WebNode parent_node = element.parentNode();
- !parent_node.isNull();
- parent_node = parent_node.parentNode()) {
- if (!parent_node.isElementNode())
- continue;
-
- WebElement cur_element = parent_node.to<WebElement>();
- if (cur_element.hasHTMLTagName("form") ||
- cur_element.hasHTMLTagName("fieldset")) {
- return true;
- }
- }
- return false;
-}
-
// To avoid overly expensive computation, we impose a minimum number of
// allowable fields. The corresponding maximum number of allowable fields
// is imposed by WebFormElementToFormData().
@@ -120,30 +102,6 @@ FormCache::FormCache() {
FormCache::~FormCache() {
}
-// static
-std::vector<WebFormControlElement>
-FormCache::GetUnownedAutofillableFormFieldElements(
- const WebElementCollection& elements,
- std::vector<WebElement>* fieldsets) {
- std::vector<WebFormControlElement> unowned_fieldset_children;
- for (WebElement element = elements.firstItem();
- !element.isNull();
- element = elements.nextItem()) {
- if (element.isFormControlElement()) {
- WebFormControlElement control = element.to<WebFormControlElement>();
- if (control.form().isNull())
- unowned_fieldset_children.push_back(control);
- }
-
- if (fieldsets && element.hasHTMLTagName("fieldset") &&
- !IsElementInsideFormOrFieldSet(element)) {
- fieldsets->push_back(element);
- }
- }
- return ExtractAutofillableElementsFromSet(unowned_fieldset_children,
- REQUIRE_NONE);
-}
-
std::vector<FormData> FormCache::ExtractNewForms(const WebFrame& frame) {
std::vector<FormData> forms;
WebDocument document = frame.document();
@@ -177,7 +135,7 @@ std::vector<FormData> FormCache::ExtractNewForms(const WebFrame& frame) {
FormData form;
if (!WebFormElementToFormData(form_element, WebFormControlElement(),
- REQUIRE_NONE, extract_mask, &form, NULL)) {
+ REQUIRE_NONE, extract_mask, &form, nullptr)) {
continue;
}
@@ -205,8 +163,9 @@ std::vector<FormData> FormCache::ExtractNewForms(const WebFrame& frame) {
FormData form;
if (!UnownedFormElementsAndFieldSetsToFormData(fieldsets, control_elements,
- document.url(), extract_mask,
- &form)) {
+ nullptr, document.url(),
+ REQUIRE_NONE, extract_mask,
+ &form, nullptr)) {
return forms;
}
@@ -241,11 +200,14 @@ void FormCache::ResetFrame(const WebFrame& frame) {
bool FormCache::ClearFormWithElement(const WebFormControlElement& element) {
WebFormElement form_element = element.form();
- if (form_element.isNull())
- return false;
-
- std::vector<WebFormControlElement> control_elements =
- ExtractAutofillableElementsInForm(form_element, REQUIRE_NONE);
+ std::vector<WebFormControlElement> control_elements;
+ if (form_element.isNull()) {
+ control_elements = GetUnownedAutofillableFormFieldElements(
+ element.document().all(), nullptr);
+ } else {
+ control_elements = ExtractAutofillableElementsInForm(
+ form_element, REQUIRE_NONE);
+ }
for (size_t i = 0; i < control_elements.size(); ++i) {
WebFormControlElement control_element = control_elements[i];
// Don't modify the value of disabled fields.
« no previous file with comments | « components/autofill/content/renderer/form_cache.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698