OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/autofill/core/browser/form_structure.h" | 5 #include "components/autofill/core/browser/form_structure.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "components/autofill/core/browser/autofill_metrics.h" | 10 #include "components/autofill/core/browser/autofill_metrics.h" |
(...skipping 2243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2254 field.form_control_type = "text"; | 2254 field.form_control_type = "text"; |
2255 | 2255 |
2256 field.label = ASCIIToUTF16("email"); | 2256 field.label = ASCIIToUTF16("email"); |
2257 field.name = ASCIIToUTF16("email"); | 2257 field.name = ASCIIToUTF16("email"); |
2258 form.fields.push_back(field); | 2258 form.fields.push_back(field); |
2259 | 2259 |
2260 field.label = ASCIIToUTF16("First Name"); | 2260 field.label = ASCIIToUTF16("First Name"); |
2261 field.name = ASCIIToUTF16("first"); | 2261 field.name = ASCIIToUTF16("first"); |
2262 form.fields.push_back(field); | 2262 form.fields.push_back(field); |
2263 | 2263 |
2264 // Password fields shouldn't affect the signature. | 2264 // Checkable fields shouldn't affect the signature. |
2265 field.label = ASCIIToUTF16("Password"); | 2265 field.label = ASCIIToUTF16("Select"); |
2266 field.name = ASCIIToUTF16("password"); | 2266 field.name = ASCIIToUTF16("Select"); |
2267 field.form_control_type = "password"; | 2267 field.form_control_type = "checkbox"; |
| 2268 field.is_checkable = true; |
2268 form.fields.push_back(field); | 2269 form.fields.push_back(field); |
2269 | 2270 |
2270 form_structure.reset(new FormStructure(form)); | 2271 form_structure.reset(new FormStructure(form)); |
2271 | 2272 |
2272 EXPECT_EQ(FormStructureTest::Hash64Bit( | 2273 EXPECT_EQ(FormStructureTest::Hash64Bit( |
2273 std::string("://&&email&first")), | 2274 std::string("://&&email&first")), |
2274 form_structure->FormSignature()); | 2275 form_structure->FormSignature()); |
2275 | 2276 |
2276 form.origin = GURL(std::string("http://www.facebook.com")); | 2277 form.origin = GURL(std::string("http://www.facebook.com")); |
2277 form_structure.reset(new FormStructure(form)); | 2278 form_structure.reset(new FormStructure(form)); |
2278 EXPECT_EQ(FormStructureTest::Hash64Bit( | 2279 EXPECT_EQ(FormStructureTest::Hash64Bit( |
2279 std::string("http://www.facebook.com&&email&first")), | 2280 std::string("http://www.facebook.com&&email&first")), |
2280 form_structure->FormSignature()); | 2281 form_structure->FormSignature()); |
2281 | 2282 |
2282 form.action = GURL(std::string("https://login.facebook.com/path")); | 2283 form.action = GURL(std::string("https://login.facebook.com/path")); |
2283 form_structure.reset(new FormStructure(form)); | 2284 form_structure.reset(new FormStructure(form)); |
2284 EXPECT_EQ(FormStructureTest::Hash64Bit( | 2285 EXPECT_EQ(FormStructureTest::Hash64Bit( |
2285 std::string("https://login.facebook.com&&email&first")), | 2286 std::string("https://login.facebook.com&&email&first")), |
2286 form_structure->FormSignature()); | 2287 form_structure->FormSignature()); |
2287 | 2288 |
2288 form.name = ASCIIToUTF16("login_form"); | 2289 form.name = ASCIIToUTF16("login_form"); |
2289 form_structure.reset(new FormStructure(form)); | 2290 form_structure.reset(new FormStructure(form)); |
2290 EXPECT_EQ(FormStructureTest::Hash64Bit( | 2291 EXPECT_EQ(FormStructureTest::Hash64Bit( |
2291 std::string("https://login.facebook.com&login_form&email&first")), | 2292 std::string("https://login.facebook.com&login_form&email&first")), |
2292 form_structure->FormSignature()); | 2293 form_structure->FormSignature()); |
2293 | 2294 |
| 2295 field.is_checkable = false; |
2294 field.label = ASCIIToUTF16("Random Field label"); | 2296 field.label = ASCIIToUTF16("Random Field label"); |
2295 field.name = ASCIIToUTF16("random1234"); | 2297 field.name = ASCIIToUTF16("random1234"); |
2296 field.form_control_type = "text"; | 2298 field.form_control_type = "text"; |
2297 form.fields.push_back(field); | 2299 form.fields.push_back(field); |
2298 field.label = ASCIIToUTF16("Random Field label2"); | 2300 field.label = ASCIIToUTF16("Random Field label2"); |
2299 field.name = ASCIIToUTF16("random12345"); | 2301 field.name = ASCIIToUTF16("random12345"); |
2300 form.fields.push_back(field); | 2302 form.fields.push_back(field); |
2301 field.label = ASCIIToUTF16("Random Field label3"); | 2303 field.label = ASCIIToUTF16("Random Field label3"); |
2302 field.name = ASCIIToUTF16("1random12345678"); | 2304 field.name = ASCIIToUTF16("1random12345678"); |
2303 form.fields.push_back(field); | 2305 form.fields.push_back(field); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2349 form.method = ASCIIToUTF16("POST"); | 2351 form.method = ASCIIToUTF16("POST"); |
2350 form.origin = GURL("http://cool.com"); | 2352 form.origin = GURL("http://cool.com"); |
2351 form.action = form.origin.Resolve("/login"); | 2353 form.action = form.origin.Resolve("/login"); |
2352 | 2354 |
2353 FormFieldData field; | 2355 FormFieldData field; |
2354 field.label = ASCIIToUTF16("username"); | 2356 field.label = ASCIIToUTF16("username"); |
2355 field.name = ASCIIToUTF16("username"); | 2357 field.name = ASCIIToUTF16("username"); |
2356 field.form_control_type = "text"; | 2358 field.form_control_type = "text"; |
2357 form.fields.push_back(field); | 2359 form.fields.push_back(field); |
2358 | 2360 |
2359 field.label = ASCIIToUTF16("password"); | 2361 field.label = ASCIIToUTF16("select"); |
2360 field.name = ASCIIToUTF16("password"); | 2362 field.name = ASCIIToUTF16("select"); |
2361 field.form_control_type = "password"; | 2363 field.form_control_type = "checkbox"; |
| 2364 field.is_checkable = true; |
2362 form.fields.push_back(field); | 2365 form.fields.push_back(field); |
2363 | 2366 |
2364 field.label = base::string16(); | 2367 field.label = base::string16(); |
2365 field.name = ASCIIToUTF16("email"); | 2368 field.name = ASCIIToUTF16("email"); |
2366 field.form_control_type = "text"; | 2369 field.form_control_type = "text"; |
| 2370 field.is_checkable = false; |
2367 form.fields.push_back(field); | 2371 form.fields.push_back(field); |
2368 | 2372 |
2369 ScopedVector<FormStructure> forms; | 2373 ScopedVector<FormStructure> forms; |
2370 forms.push_back(new FormStructure(form)); | 2374 forms.push_back(new FormStructure(form)); |
2371 std::vector<std::string> encoded_signatures; | 2375 std::vector<std::string> encoded_signatures; |
2372 std::string encoded_xml; | 2376 std::string encoded_xml; |
2373 | 2377 |
2374 const char * const kSignature = "18006745212084723782"; | 2378 const char * const kSignature = "18006745212084723782"; |
2375 const char * const kResponse = | 2379 const char * const kResponse = |
2376 "<\?xml version=\"1.0\" encoding=\"UTF-8\"?><autofillquery " | 2380 "<\?xml version=\"1.0\" encoding=\"UTF-8\"?><autofillquery " |
2377 "clientversion=\"6.1.1715.1442/en (GGLL)\" accepts=\"e\"><form " | 2381 "clientversion=\"6.1.1715.1442/en (GGLL)\" accepts=\"e\"><form " |
2378 "signature=\"18006745212084723782\"><field signature=\"239111655\"/>" | 2382 "signature=\"18006745212084723782\"><field signature=\"239111655\"/>" |
2379 "<field signature=\"420638584\"/></form></autofillquery>"; | 2383 "<field signature=\"420638584\"/></form></autofillquery>"; |
2380 ASSERT_TRUE(FormStructure::EncodeQueryRequest(forms.get(), | 2384 ASSERT_TRUE(FormStructure::EncodeQueryRequest(forms.get(), |
2381 &encoded_signatures, | 2385 &encoded_signatures, |
2382 &encoded_xml)); | 2386 &encoded_xml)); |
2383 ASSERT_EQ(1U, encoded_signatures.size()); | 2387 ASSERT_EQ(1U, encoded_signatures.size()); |
2384 EXPECT_EQ(kSignature, encoded_signatures[0]); | 2388 EXPECT_EQ(kSignature, encoded_signatures[0]); |
2385 EXPECT_EQ(kResponse, encoded_xml); | 2389 EXPECT_EQ(kResponse, encoded_xml); |
2386 } | 2390 } |
2387 | 2391 |
2388 } // namespace autofill | 2392 } // namespace autofill |
OLD | NEW |