diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-01 01:25:22 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-01 01:25:22 +0000 |
commit | 5af8043eb24ad60251d8a4e33192e3e6f59246a3 (patch) | |
tree | 68adeef38efa7efdc2e680062b1743c3e1b083c3 /chrome | |
parent | a3a375dab9d4c3fffc9fcc83ccdd07edc5d8d207 (diff) | |
download | chromium_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.cc | 6 | ||||
-rw-r--r-- | chrome/renderer/form_manager.cc | 19 | ||||
-rw-r--r-- | chrome/renderer/form_manager.h | 26 | ||||
-rw-r--r-- | chrome/renderer/form_manager_browsertest.cc | 12 | ||||
-rw-r--r-- | chrome/renderer/render_view.cc | 6 |
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( |