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

Side by Side Diff: chrome/browser/autofill/address_field.cc

Issue 3159043: AutoFill doesn't fill address information on www.gorillaclothing.com (Closed)
Patch Set: Fix to line3 logic. Created 10 years, 4 months 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
« no previous file with comments | « no previous file | chrome/browser/autofill/form_structure_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/browser/autofill/address_field.h" 5 #include "chrome/browser/autofill/address_field.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/scoped_ptr.h" 8 #include "base/scoped_ptr.h"
9 #include "base/string16.h" 9 #include "base/string16.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 return false; 195 return false;
196 196
197 string16 pattern; 197 string16 pattern;
198 if (is_ecml) { 198 if (is_ecml) {
199 pattern = GetEcmlPattern(kEcmlShipToAddress1, 199 pattern = GetEcmlPattern(kEcmlShipToAddress1,
200 kEcmlBillToAddress1, '|'); 200 kEcmlBillToAddress1, '|');
201 if (!ParseText(iter, pattern, &address_field->address1_)) 201 if (!ParseText(iter, pattern, &address_field->address1_))
202 return false; 202 return false;
203 } else { 203 } else {
204 pattern = 204 pattern =
205 ASCIIToUTF16("street|address line|address1|street_line1|addr1"); 205 ASCIIToUTF16("address.?line|address1|addr1|street");
206 string16 label_pattern = ASCIIToUTF16("address"); 206 string16 label_pattern = ASCIIToUTF16("address");
207 207
208 if (!ParseText(iter, pattern, &address_field->address1_)) 208 if (!ParseText(iter, pattern, &address_field->address1_))
209 if (!ParseLabelText(iter, label_pattern, &address_field->address1_)) 209 if (!ParseLabelText(iter, label_pattern, &address_field->address1_))
210 return false; 210 return false;
211 } 211 }
212 212
213 // Optionally parse more address lines, which may have empty labels. 213 // Optionally parse more address lines, which may have empty labels.
214 // Some pages have 3 address lines (eg SharperImageModifyAccount.html) 214 // Some pages have 3 address lines (eg SharperImageModifyAccount.html)
215 // Some pages even have 4 address lines (e.g. uk/ShoesDirect2.html)! 215 // Some pages even have 4 address lines (e.g. uk/ShoesDirect2.html)!
216 if (is_ecml) { 216 if (is_ecml) {
217 pattern = GetEcmlPattern(kEcmlShipToAddress2, 217 pattern = GetEcmlPattern(kEcmlShipToAddress2,
218 kEcmlBillToAddress2, '|'); 218 kEcmlBillToAddress2, '|');
219 if (!ParseEmptyText(iter, &address_field->address2_)) 219 if (!ParseEmptyText(iter, &address_field->address2_))
220 ParseText(iter, pattern, &address_field->address2_); 220 ParseText(iter, pattern, &address_field->address2_);
221 } else { 221 } else {
222 pattern = ASCIIToUTF16("address2|street|street_line2|addr2|suite|unit"); 222 pattern = ASCIIToUTF16("address.?line2|address2|addr2|street|suite|unit");
223 string16 label_pattern = ASCIIToUTF16("address"); 223 string16 label_pattern = ASCIIToUTF16("address");
224 if (!ParseEmptyText(iter, &address_field->address2_)) 224 if (!ParseEmptyText(iter, &address_field->address2_))
225 if (!ParseText(iter, pattern, &address_field->address2_)) 225 if (!ParseText(iter, pattern, &address_field->address2_))
226 ParseLabelText(iter, label_pattern, &address_field->address2_); 226 ParseLabelText(iter, label_pattern, &address_field->address2_);
227 } 227 }
228 228
229 // Try for a third line, which we will promptly discard. 229 // Try for a third line, which we will promptly discard.
230 if (address_field->address2_ != NULL) { 230 if (address_field->address2_ != NULL) {
231 if (is_ecml) { 231 if (is_ecml) {
232 pattern = GetEcmlPattern(kEcmlShipToAddress3, 232 pattern = GetEcmlPattern(kEcmlShipToAddress3,
233 kEcmlBillToAddress3, '|'); 233 kEcmlBillToAddress3, '|');
234 ParseText(iter, pattern); 234 ParseText(iter, pattern);
235 } else { 235 } else {
236 pattern = ASCIIToUTF16("address3|street|street_line3|addr3|line3"); 236 pattern = ASCIIToUTF16("address.?line3|address3|addr3|street|line3");
237 string16 label_pattern = ASCIIToUTF16("address");
238 if (!ParseEmptyText(iter, NULL)) 237 if (!ParseEmptyText(iter, NULL))
239 if (!ParseText(iter, pattern, NULL)) 238 ParseText(iter, pattern, NULL);
240 ParseLabelText(iter, label_pattern, NULL);
241 } 239 }
242 } 240 }
243 241
244 return true; 242 return true;
245 } 243 }
246 244
247 // static 245 // static
248 bool AddressField::ParseCountry( 246 bool AddressField::ParseCountry(
249 std::vector<AutoFillField*>::const_iterator* iter, 247 std::vector<AutoFillField*>::const_iterator* iter,
250 bool is_ecml, AddressField* address_field) { 248 bool is_ecml, AddressField* address_field) {
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 return kBillingAddress; 376 return kBillingAddress;
379 377
380 if (bill == string16::npos && ship != string16::npos) 378 if (bill == string16::npos && ship != string16::npos)
381 return kShippingAddress; 379 return kShippingAddress;
382 380
383 if (bill > ship) 381 if (bill > ship)
384 return kBillingAddress; 382 return kBillingAddress;
385 383
386 return kShippingAddress; 384 return kShippingAddress;
387 } 385 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/autofill/form_structure_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698