| Index: chrome/renderer/form_manager.cc
|
| ===================================================================
|
| --- chrome/renderer/form_manager.cc (revision 52815)
|
| +++ chrome/renderer/form_manager.cc (working copy)
|
| @@ -16,6 +16,7 @@
|
| #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/WebOptionElement.h"
|
| #include "third_party/WebKit/WebKit/chromium/public/WebSelectElement.h"
|
| #include "third_party/WebKit/WebKit/chromium/public/WebString.h"
|
| #include "third_party/WebKit/WebKit/chromium/public/WebVector.h"
|
| @@ -33,6 +34,7 @@
|
| using WebKit::WebLabelElement;
|
| using WebKit::WebNode;
|
| using WebKit::WebNodeList;
|
| +using WebKit::WebOptionElement;
|
| using WebKit::WebSelectElement;
|
| using WebKit::WebString;
|
| using WebKit::WebVector;
|
| @@ -210,6 +212,24 @@
|
| return inferred_label;
|
| }
|
|
|
| +void GetOptionStringsFromElement(WebKit::WebFormControlElement element,
|
| + std::vector<string16>* option_strings) {
|
| + DCHECK(!element.isNull());
|
| + DCHECK(option_strings);
|
| + option_strings->clear();
|
| + if (element.formControlType() == ASCIIToUTF16("select-one")) {
|
| + WebSelectElement select_element = element.to<WebSelectElement>();
|
| +
|
| + // For select-one elements copy option strings.
|
| + WebVector<WebElement> list_items = select_element.listItems();
|
| + option_strings->reserve(list_items.size());
|
| + for (size_t i = 0; i < list_items.size(); ++i) {
|
| + if (list_items[i].hasTagName("option"))
|
| + option_strings->push_back(list_items[i].to<WebOptionElement>().value());
|
| + }
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| FormManager::FormManager() {
|
| @@ -230,6 +250,11 @@
|
| field->set_name(element.nameForAutofill());
|
| field->set_form_control_type(element.formControlType());
|
|
|
| + // Set option strings on the field if available.
|
| + std::vector<string16> option_strings;
|
| + GetOptionStringsFromElement(element, &option_strings);
|
| + field->set_option_strings(option_strings);
|
| +
|
| if (element.formControlType() == WebString::fromUTF8("text")) {
|
| const WebInputElement& input_element = element.toConst<WebInputElement>();
|
| field->set_size(input_element.size());
|
|
|