diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-02 20:47:56 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-02 20:47:56 +0000 |
commit | a755dc2df6712d2965b3ea2e6a0e90fe5fb3d0a3 (patch) | |
tree | 0b0c9b4f093989ee6ea2b3d7a50b92b4fc51e071 /chrome/renderer/form_manager.cc | |
parent | 5811d97aae3f64e740b0163d02486d2154a9c472 (diff) | |
download | chromium_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.cc | 23 |
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(); +} |