summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/form_manager.cc
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-02 20:47:56 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-02 20:47:56 +0000
commita755dc2df6712d2965b3ea2e6a0e90fe5fb3d0a3 (patch)
tree0b0c9b4f093989ee6ea2b3d7a50b92b4fc51e071 /chrome/renderer/form_manager.cc
parent5811d97aae3f64e740b0163d02486d2154a9c472 (diff)
downloadchromium_src-a755dc2df6712d2965b3ea2e6a0e90fe5fb3d0a3.zip
chromium_src-a755dc2df6712d2965b3ea2e6a0e90fe5fb3d0a3.tar.gz
chromium_src-a755dc2df6712d2965b3ea2e6a0e90fe5fb3d0a3.tar.bz2
Implement FormManager::LabelForElement and use this to store the field labels.
BUG=none TEST=FormManagerTest.Labels Review URL: http://codereview.chromium.org/660154 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40416 0039d316-1c4b-4281-b951-d872f2087c98
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();
+}