OLD | NEW |
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.h" | 5 #include "chrome/browser/autofill/address.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "chrome/browser/autofill/autofill_type.h" | 9 #include "chrome/browser/autofill/autofill_type.h" |
10 #include "chrome/browser/autofill/field_types.h" | 10 #include "chrome/browser/autofill/field_types.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 AutoFillType::ADDRESS_COUNTRY, | 23 AutoFillType::ADDRESS_COUNTRY, |
24 }; | 24 }; |
25 | 25 |
26 const int kAutoFillAddressLength = arraysize(kAutoFillAddressTypes); | 26 const int kAutoFillAddressLength = arraysize(kAutoFillAddressTypes); |
27 | 27 |
28 } // namespace | 28 } // namespace |
29 | 29 |
30 void Address::GetPossibleFieldTypes(const string16& text, | 30 void Address::GetPossibleFieldTypes(const string16& text, |
31 FieldTypeSet* possible_types) const { | 31 FieldTypeSet* possible_types) const { |
32 DCHECK(possible_types); | 32 DCHECK(possible_types); |
33 if (!possible_types) | |
34 return; | |
35 | 33 |
36 // If the text to match against the field types is empty, then no results will | 34 // If the text to match against the field types is empty, then no results will |
37 // match. | 35 // match. |
38 if (text.empty()) | 36 if (text.empty()) |
39 return; | 37 return; |
40 | 38 |
41 if (IsLine1(text)) | 39 if (IsLine1(text)) |
42 possible_types->insert(GetLine1Type()); | 40 possible_types->insert(GetLine1Type()); |
43 | 41 |
44 if (IsLine2(text)) | 42 if (IsLine2(text)) |
45 possible_types->insert(GetLine2Type()); | 43 possible_types->insert(GetLine2Type()); |
46 | 44 |
47 if (IsAptNum(text)) | 45 if (IsAptNum(text)) |
48 possible_types->insert(GetAptNumType()); | 46 possible_types->insert(GetAptNumType()); |
49 | 47 |
50 if (IsCity(text)) | 48 if (IsCity(text)) |
51 possible_types->insert(GetCityType()); | 49 possible_types->insert(GetCityType()); |
52 | 50 |
53 if (IsState(text)) | 51 if (IsState(text)) |
54 possible_types->insert(GetStateType()); | 52 possible_types->insert(GetStateType()); |
55 | 53 |
56 if (IsZipCode(text)) | 54 if (IsZipCode(text)) |
57 possible_types->insert(GetZipCodeType()); | 55 possible_types->insert(GetZipCodeType()); |
58 | 56 |
59 if (IsCountry(text)) | 57 if (IsCountry(text)) |
60 possible_types->insert(GetCountryType()); | 58 possible_types->insert(GetCountryType()); |
61 } | 59 } |
62 | 60 |
| 61 void Address::GetAvailableFieldTypes(FieldTypeSet* available_types) const { |
| 62 DCHECK(available_types); |
| 63 |
| 64 if (!line1().empty()) |
| 65 available_types->insert(GetLine1Type()); |
| 66 |
| 67 if (!line2().empty()) |
| 68 available_types->insert(GetLine2Type()); |
| 69 |
| 70 if (!apt_num().empty()) |
| 71 available_types->insert(GetAptNumType()); |
| 72 |
| 73 if (!city().empty()) |
| 74 available_types->insert(GetCityType()); |
| 75 |
| 76 if (!state().empty()) |
| 77 available_types->insert(GetStateType()); |
| 78 |
| 79 if (!zip_code().empty()) |
| 80 available_types->insert(GetZipCodeType()); |
| 81 |
| 82 if (!country().empty()) |
| 83 available_types->insert(GetCountryType()); |
| 84 } |
| 85 |
63 void Address::FindInfoMatches(const AutoFillType& type, | 86 void Address::FindInfoMatches(const AutoFillType& type, |
64 const string16& info, | 87 const string16& info, |
65 std::vector<string16>* matched_text) const { | 88 std::vector<string16>* matched_text) const { |
66 DCHECK(matched_text); | 89 DCHECK(matched_text); |
67 if (!matched_text) | |
68 return; | |
69 | 90 |
70 string16 match; | 91 string16 match; |
71 if (type.field_type() == UNKNOWN_TYPE) { | 92 if (type.field_type() == UNKNOWN_TYPE) { |
72 for (int i = 0; i < kAutoFillAddressLength; ++i) { | 93 for (int i = 0; i < kAutoFillAddressLength; ++i) { |
73 if (FindInfoMatchesHelper(kAutoFillAddressTypes[i], info, &match)) | 94 if (FindInfoMatchesHelper(kAutoFillAddressTypes[i], info, &match)) |
74 matched_text->push_back(match); | 95 matched_text->push_back(match); |
75 } | 96 } |
76 } else { | 97 } else { |
77 if (FindInfoMatchesHelper(type.subgroup(), info, &match)) | 98 if (FindInfoMatchesHelper(type.subgroup(), info, &match)) |
78 matched_text->push_back(match); | 99 matched_text->push_back(match); |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 bool Address::IsWordInLine(const string16& word, | 288 bool Address::IsWordInLine(const string16& word, |
268 const LineTokens& line_tokens) const { | 289 const LineTokens& line_tokens) const { |
269 LineTokens::const_iterator iter; | 290 LineTokens::const_iterator iter; |
270 for (iter = line_tokens.begin(); iter != line_tokens.end(); ++iter) { | 291 for (iter = line_tokens.begin(); iter != line_tokens.end(); ++iter) { |
271 if (StringToLowerASCII(word) == *iter) | 292 if (StringToLowerASCII(word) == *iter) |
272 return true; | 293 return true; |
273 } | 294 } |
274 | 295 |
275 return false; | 296 return false; |
276 } | 297 } |
OLD | NEW |