Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: chrome/renderer/autofill/form_autofill_browsertest.cc

Issue 11415221: Add support for autofilling radio buttons and checkboxes. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fix the nit. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <vector> 5 #include <vector>
6 6
7 #include "base/format_macros.h" 7 #include "base/format_macros.h"
8 #include "base/string16.h" 8 #include "base/string16.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 205
206 FormFieldData expected; 206 FormFieldData expected;
207 expected.name = ASCIIToUTF16("element"); 207 expected.name = ASCIIToUTF16("element");
208 expected.value = ASCIIToUTF16("value"); 208 expected.value = ASCIIToUTF16("value");
209 expected.form_control_type = "text"; 209 expected.form_control_type = "text";
210 expected.max_length = WebInputElement::defaultMaxLength(); 210 expected.max_length = WebInputElement::defaultMaxLength();
211 expected.is_autofilled = true; 211 expected.is_autofilled = true;
212 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 212 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
213 } 213 }
214 214
215 // We should be able to extract a radio or a checkbox field that has been
216 // autofilled.
217 TEST_F(FormAutofillTest, WebFormControlElementToClickableFormField) {
218 LoadHTML("<INPUT type=\"checkbox\" id=\"checkbox\" value=\"mail\"/>"
219 "<INPUT type=\"radio\" id=\"radio\" value=\"male\"/>");
220
221 WebFrame* frame = GetMainFrame();
222 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
223
224 WebElement web_element = frame->document().getElementById("checkbox");
225 WebInputElement element = web_element.to<WebInputElement>();
226 element.setAutofilled(true);
227 FormFieldData result;
228 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
229
230 FormFieldData expected;
231 expected.name = ASCIIToUTF16("checkbox");
232 expected.value = ASCIIToUTF16("mail");
233 expected.form_control_type = "checkbox";
234 expected.is_autofilled = true;
235 expected.is_checkable = true;
236 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
237
238 web_element = frame->document().getElementById("radio");
239 element = web_element.to<WebInputElement>();
240 element.setAutofilled(true);
241 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
242 expected.name = ASCIIToUTF16("radio");
243 expected.value = ASCIIToUTF16("male");
244 expected.form_control_type = "radio";
245 expected.is_autofilled = true;
246 expected.is_checkable = true;
247 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
248 }
249
215 // We should be able to extract a <select> field. 250 // We should be able to extract a <select> field.
216 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldSelect) { 251 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldSelect) {
217 LoadHTML("<SELECT id=\"element\"/>" 252 LoadHTML("<SELECT id=\"element\"/>"
218 " <OPTION value=\"CA\">California</OPTION>" 253 " <OPTION value=\"CA\">California</OPTION>"
219 " <OPTION value=\"TX\">Texas</OPTION>" 254 " <OPTION value=\"TX\">Texas</OPTION>"
220 "</SELECT>"); 255 "</SELECT>");
221 256
222 WebFrame* frame = GetMainFrame(); 257 WebFrame* frame = GetMainFrame();
223 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 258 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
224 259
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 EXPECT_EQ(ASCIIToUTF16("California"), result3.option_contents[0]); 291 EXPECT_EQ(ASCIIToUTF16("California"), result3.option_contents[0]);
257 EXPECT_EQ(ASCIIToUTF16("TX"), result3.option_values[1]); 292 EXPECT_EQ(ASCIIToUTF16("TX"), result3.option_values[1]);
258 EXPECT_EQ(ASCIIToUTF16("Texas"), result3.option_contents[1]); 293 EXPECT_EQ(ASCIIToUTF16("Texas"), result3.option_contents[1]);
259 } 294 }
260 295
261 // We should not extract the value for non-text and non-select fields. 296 // We should not extract the value for non-text and non-select fields.
262 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldInvalidType) { 297 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldInvalidType) {
263 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 298 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
264 " <INPUT type=\"hidden\" id=\"hidden\" value=\"apple\"/>" 299 " <INPUT type=\"hidden\" id=\"hidden\" value=\"apple\"/>"
265 " <INPUT type=\"password\" id=\"password\" value=\"secret\"/>" 300 " <INPUT type=\"password\" id=\"password\" value=\"secret\"/>"
266 " <INPUT type=\"checkbox\" id=\"checkbox\" value=\"mail\"/>"
267 " <INPUT type=\"radio\" id=\"radio\" value=\"male\"/>"
268 " <INPUT type=\"submit\" id=\"submit\" value=\"Send\"/>" 301 " <INPUT type=\"submit\" id=\"submit\" value=\"Send\"/>"
269 "</FORM>"); 302 "</FORM>");
270 303
271 WebFrame* frame = GetMainFrame(); 304 WebFrame* frame = GetMainFrame();
272 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 305 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
273 306
274 WebElement web_element = frame->document().getElementById("hidden"); 307 WebElement web_element = frame->document().getElementById("hidden");
275 WebFormControlElement element = web_element.to<WebFormControlElement>(); 308 WebFormControlElement element = web_element.to<WebFormControlElement>();
276 FormFieldData result; 309 FormFieldData result;
277 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 310 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
278 311
279 FormFieldData expected; 312 FormFieldData expected;
280 expected.max_length = 0; 313 expected.max_length = 0;
281 314
282 expected.name = ASCIIToUTF16("hidden"); 315 expected.name = ASCIIToUTF16("hidden");
283 expected.form_control_type = "hidden"; 316 expected.form_control_type = "hidden";
284 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 317 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
285 318
286 web_element = frame->document().getElementById("password"); 319 web_element = frame->document().getElementById("password");
287 element = web_element.to<WebFormControlElement>(); 320 element = web_element.to<WebFormControlElement>();
288 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 321 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
289 expected.name = ASCIIToUTF16("password"); 322 expected.name = ASCIIToUTF16("password");
290 expected.form_control_type = "password"; 323 expected.form_control_type = "password";
291 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 324 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
292 325
293 web_element = frame->document().getElementById("checkbox");
294 element = web_element.to<WebFormControlElement>();
295 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
296 expected.name = ASCIIToUTF16("checkbox");
297 expected.form_control_type = "checkbox";
298 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
299
300 web_element = frame->document().getElementById("radio");
301 element = web_element.to<WebFormControlElement>();
302 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
303 expected.name = ASCIIToUTF16("radio");
304 expected.form_control_type = "radio";
305 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
306
307
308 web_element = frame->document().getElementById("submit"); 326 web_element = frame->document().getElementById("submit");
309 element = web_element.to<WebFormControlElement>(); 327 element = web_element.to<WebFormControlElement>();
310 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 328 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
311 expected.name = ASCIIToUTF16("submit"); 329 expected.name = ASCIIToUTF16("submit");
312 expected.form_control_type = "submit"; 330 expected.form_control_type = "submit";
313 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 331 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
314 } 332 }
315 333
316 // We should be able to extract the autocompletetype attribute. 334 // We should be able to extract the autocompletetype attribute.
317 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldAutocompletetype) { 335 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldAutocompletetype) {
(...skipping 2577 matching lines...) Expand 10 before | Expand all | Expand 10 after
2895 expected.form_control_type = "text"; 2913 expected.form_control_type = "text";
2896 expected.max_length = WebInputElement::defaultMaxLength(); 2914 expected.max_length = WebInputElement::defaultMaxLength();
2897 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 2915 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
2898 2916
2899 expected.name = ASCIIToUTF16("country"); 2917 expected.name = ASCIIToUTF16("country");
2900 expected.value = ASCIIToUTF16("AL"); 2918 expected.value = ASCIIToUTF16("AL");
2901 expected.form_control_type = "select-one"; 2919 expected.form_control_type = "select-one";
2902 expected.max_length = 0; 2920 expected.max_length = 0;
2903 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]); 2921 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]);
2904 } 2922 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698