summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-01 01:25:22 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-01 01:25:22 +0000
commit5af8043eb24ad60251d8a4e33192e3e6f59246a3 (patch)
tree68adeef38efa7efdc2e680062b1743c3e1b083c3 /chrome
parenta3a375dab9d4c3fffc9fcc83ccdd07edc5d8d207 (diff)
downloadchromium_src-5af8043eb24ad60251d8a4e33192e3e6f59246a3.zip
chromium_src-5af8043eb24ad60251d8a4e33192e3e6f59246a3.tar.gz
chromium_src-5af8043eb24ad60251d8a4e33192e3e6f59246a3.tar.bz2
autofill: Use a bit-field mask instead of two boolean parameters.
(Note: This was a TODO for jhawkins). BUG=None TEST=trybots Review URL: http://codereview.chromium.org/4168010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64572 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/renderer/autofill_helper.cc6
-rw-r--r--chrome/renderer/form_manager.cc19
-rw-r--r--chrome/renderer/form_manager.h26
-rw-r--r--chrome/renderer/form_manager_browsertest.cc12
-rw-r--r--chrome/renderer/render_view.cc6
5 files changed, 36 insertions, 33 deletions
diff --git a/chrome/renderer/autofill_helper.cc b/chrome/renderer/autofill_helper.cc
index 7f4ca5c..0a6c186 100644
--- a/chrome/renderer/autofill_helper.cc
+++ b/chrome/renderer/autofill_helper.cc
@@ -61,7 +61,8 @@ void AutoFillHelper::QueryAutoFillSuggestions(const WebNode& node) {
const WebFormControlElement& element = node.toConst<WebFormControlElement>();
webkit_glue::FormField field;
- FormManager::WebFormControlElementToFormField(element, true, false, &field);
+ FormManager::WebFormControlElementToFormField(
+ element, FormManager::EXTRACT_VALUE, &field);
// WebFormControlElementToFormField does not scrape the DOM for the field
// label, so find the label here.
@@ -300,7 +301,8 @@ void AutoFillHelper::SendForms(WebFrame* frame) {
webkit_glue::FormData form;
if (FormManager::WebFormElementToFormData(
- web_form, FormManager::REQUIRE_NONE, false, false, &form)) {
+ web_form, FormManager::REQUIRE_NONE,
+ FormManager::EXTRACT_NONE, &form)) {
forms.push_back(form);
}
}
diff --git a/chrome/renderer/form_manager.cc b/chrome/renderer/form_manager.cc
index 092fa4b..3fdd604 100644
--- a/chrome/renderer/form_manager.cc
+++ b/chrome/renderer/form_manager.cc
@@ -258,8 +258,7 @@ FormManager::~FormManager() {
// static
void FormManager::WebFormControlElementToFormField(
const WebFormControlElement& element,
- bool get_value,
- bool get_options,
+ ExtractMask extract_mask,
FormField* field) {
DCHECK(field);
@@ -269,7 +268,7 @@ void FormManager::WebFormControlElementToFormField(
field->set_name(element.nameForAutofill());
field->set_form_control_type(element.formControlType());
- if (get_options) {
+ if (extract_mask & EXTRACT_OPTIONS) {
// Set option strings on the field if available.
std::vector<string16> option_strings;
GetOptionStringsFromElement(element, &option_strings);
@@ -281,7 +280,7 @@ void FormManager::WebFormControlElementToFormField(
field->set_size(input_element.size());
}
- if (!get_value)
+ if (!(extract_mask & EXTRACT_VALUE))
return;
// TODO(jhawkins): In WebKit, move value() and setValue() to
@@ -333,8 +332,7 @@ string16 FormManager::LabelForElement(const WebFormControlElement& element) {
// static
bool FormManager::WebFormElementToFormData(const WebFormElement& element,
RequirementsMask requirements,
- bool get_values,
- bool get_options,
+ ExtractMask extract_mask,
FormData* form) {
DCHECK(form);
@@ -386,8 +384,7 @@ bool FormManager::WebFormElementToFormData(const WebFormElement& element,
// Create a new FormField, fill it out and map it to the field's name.
FormField* field = new FormField;
- WebFormControlElementToFormField(
- control_element, get_values, get_options, field);
+ WebFormControlElementToFormField(control_element, extract_mask, field);
form_fields.push_back(field);
// TODO(jhawkins): A label element is mapped to a form control element's id.
// field->name() will contain the id only if the name does not exist. Add
@@ -509,7 +506,7 @@ void FormManager::GetFormsInFrame(const WebFrame* frame,
FormData form;
WebFormElementToFormData(
- form_element->form_element, requirements, true, false, &form);
+ form_element->form_element, requirements, EXTRACT_VALUE, &form);
if (form.fields.size() >= kRequiredAutoFillFields)
forms->push_back(form);
}
@@ -536,8 +533,10 @@ bool FormManager::FindFormWithFormControlElement(
form_element->control_elements.begin();
iter != form_element->control_elements.end(); ++iter) {
if (iter->nameForAutofill() == element.nameForAutofill()) {
+ ExtractMask extract_mask = static_cast<ExtractMask>(
+ EXTRACT_VALUE | EXTRACT_OPTIONS);
WebFormElementToFormData(
- form_element->form_element, requirements, true, true, form);
+ form_element->form_element, requirements, extract_mask, form);
return true;
}
}
diff --git a/chrome/renderer/form_manager.h b/chrome/renderer/form_manager.h
index 3e4b834..1ae64dd 100644
--- a/chrome/renderer/form_manager.h
+++ b/chrome/renderer/form_manager.h
@@ -28,24 +28,27 @@ class FormManager {
public:
// A bit field mask for form requirements.
enum RequirementsMask {
- REQUIRE_NONE = 0x0, // No requirements.
- REQUIRE_AUTOCOMPLETE = 0x1, // Require that autocomplete != off.
- REQUIRE_ENABLED = 0x2, // Require that disabled attribute is off.
- REQUIRE_EMPTY = 0x4, // Require that the fields are empty.
+ REQUIRE_NONE = 0, // No requirements.
+ REQUIRE_AUTOCOMPLETE = 1 << 0, // Require that autocomplete != off.
+ REQUIRE_ENABLED = 1 << 1, // Require that disabled attribute is off.
+ REQUIRE_EMPTY = 1 << 2, // Require that the fields are empty.
+ };
+
+ // A bit field mask to extract data from WebFormControlElement.
+ enum ExtractMask {
+ EXTRACT_NONE = 0,
+ EXTRACT_VALUE = 1 << 0, // Extract value from WebFormControlElement.
+ EXTRACT_OPTIONS = 1 << 1, // Extract options from WebFormControlElement.
};
FormManager();
virtual ~FormManager();
// Fills out a FormField object from a given WebFormControlElement.
- // If |get_value| is true, |field| will have the value set from |element|.
- // If |get_options| is true, |field| will have the select options set from
- // |element|.
- // TODO(jhawkins): Use a bit-field instead of two parameters.
+ // |extract_mask|: See the enum ExtractMask above for details.
static void WebFormControlElementToFormField(
const WebKit::WebFormControlElement& element,
- bool get_value,
- bool get_options,
+ ExtractMask extract_mask,
webkit_glue::FormField* field);
// Returns the corresponding label for |element|. WARNING: This method can
@@ -63,8 +66,7 @@ class FormManager {
// private.
static bool WebFormElementToFormData(const WebKit::WebFormElement& element,
RequirementsMask requirements,
- bool get_values,
- bool get_options,
+ ExtractMask extract_mask,
webkit_glue::FormData* form);
// Scans the DOM in |frame| extracting and storing forms.
diff --git a/chrome/renderer/form_manager_browsertest.cc b/chrome/renderer/form_manager_browsertest.cc
index 1ee9935..b2709b3 100644
--- a/chrome/renderer/form_manager_browsertest.cc
+++ b/chrome/renderer/form_manager_browsertest.cc
@@ -55,8 +55,7 @@ TEST_F(FormManagerTest, WebFormElementToFormData) {
FormData form;
EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0],
FormManager::REQUIRE_NONE,
- true,
- false,
+ FormManager::EXTRACT_VALUE,
&form));
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
EXPECT_EQ(GURL(frame->url()), form.origin);
@@ -1332,8 +1331,7 @@ TEST_F(FormManagerTest, LabelsInferredWithImageTags) {
FormData form;
EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0],
FormManager::REQUIRE_NONE,
- true,
- false,
+ FormManager::EXTRACT_VALUE,
&form));
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
EXPECT_EQ(GURL(frame->url()), form.origin);
@@ -2111,8 +2109,7 @@ TEST_F(FormManagerTest, ThreePartPhone) {
FormData form;
EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0],
FormManager::REQUIRE_NONE,
- true,
- false,
+ FormManager::EXTRACT_VALUE,
&form));
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
EXPECT_EQ(GURL(frame->url()), form.origin);
@@ -2179,8 +2176,7 @@ TEST_F(FormManagerTest, SizeFields) {
FormData form;
EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0],
FormManager::REQUIRE_NONE,
- true,
- false,
+ FormManager::EXTRACT_VALUE,
&form));
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
EXPECT_EQ(GURL(frame->url()), form.origin);
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index 8631185..eed3618 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -2957,8 +2957,12 @@ void RenderView::willSubmitForm(WebFrame* frame, const WebFormElement& form) {
FormData form_data;
if (FormManager::WebFormElementToFormData(
- form, FormManager::REQUIRE_AUTOCOMPLETE, true, false, &form_data))
+ form,
+ FormManager::REQUIRE_AUTOCOMPLETE,
+ FormManager::EXTRACT_VALUE,
+ &form_data)) {
Send(new ViewHostMsg_FormSubmitted(routing_id_, form_data));
+ }
}
void RenderView::willPerformClientRedirect(