summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/form_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer/form_manager.cc')
-rw-r--r--chrome/renderer/form_manager.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/chrome/renderer/form_manager.cc b/chrome/renderer/form_manager.cc
index 743d95c..9731e7a 100644
--- a/chrome/renderer/form_manager.cc
+++ b/chrome/renderer/form_manager.cc
@@ -7,15 +7,23 @@
#include "base/logging.h"
#include "base/string_util.h"
#include "base/stl_util-inl.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebDocument.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebElement.h"
#include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebLabelElement.h"
#include "third_party/WebKit/WebKit/chromium/public/WebNode.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebNodeList.h"
#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
#include "third_party/WebKit/WebKit/chromium/public/WebVector.h"
+using WebKit::WebDocument;
+using WebKit::WebElement;
using WebKit::WebFormElement;
using WebKit::WebFrame;
using WebKit::WebInputElement;
+using WebKit::WebLabelElement;
using WebKit::WebNode;
+using WebKit::WebNodeList;
using WebKit::WebString;
using WebKit::WebVector;
@@ -175,6 +183,7 @@ void FormManager::FormElementToFormData(WebFrame* frame,
!input_element.isEnabledFormControl())
continue;
+ form->labels.push_back(LabelForElement(input_element));
form->elements.push_back(input_element.nameForAutofill());
form->values.push_back(input_element.value());
@@ -185,3 +194,17 @@ void FormManager::FormElementToFormData(WebFrame* frame,
form->submit = input_element.nameForAutofill();
}
}
+
+// static
+string16 FormManager::LabelForElement(const WebInputElement& element) {
+ WebNodeList labels = element.document().getElementsByTagName("label");
+ for (unsigned i = 0; i < labels.length(); ++i) {
+ WebElement e = labels.item(i).toElement<WebElement>();
+ if (e.hasTagName("label")) {
+ WebLabelElement label = e.toElement<WebLabelElement>();
+ if (label.correspondingControl() == element)
+ return label.innerText();
+ }
+ }
+ return string16();
+}