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

Side by Side Diff: chrome/browser/ui/autofill/data_model_wrapper.cc

Issue 25092011: rAc: update android test (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 2 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 | Annotate | Revision Log
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 "chrome/browser/ui/autofill/data_model_wrapper.h" 5 #include "chrome/browser/ui/autofill/data_model_wrapper.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/strings/string_util.h"
8 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/ui/autofill/autofill_dialog_models.h" 11 #include "chrome/browser/ui/autofill/autofill_dialog_models.h"
11 #include "components/autofill/content/browser/wallet/full_wallet.h" 12 #include "components/autofill/content/browser/wallet/full_wallet.h"
12 #include "components/autofill/content/browser/wallet/wallet_address.h" 13 #include "components/autofill/content/browser/wallet/wallet_address.h"
13 #include "components/autofill/content/browser/wallet/wallet_items.h" 14 #include "components/autofill/content/browser/wallet/wallet_items.h"
14 #include "components/autofill/core/browser/autofill_data_model.h" 15 #include "components/autofill/core/browser/autofill_data_model.h"
15 #include "components/autofill/core/browser/autofill_profile.h" 16 #include "components/autofill/core/browser/autofill_profile.h"
16 #include "components/autofill/core/browser/autofill_type.h" 17 #include "components/autofill/core/browser/autofill_type.h"
17 #include "components/autofill/core/browser/credit_card.h" 18 #include "components/autofill/core/browser/credit_card.h"
18 #include "components/autofill/core/browser/form_structure.h" 19 #include "components/autofill/core/browser/form_structure.h"
19 #include "components/autofill/core/browser/validation.h" 20 #include "components/autofill/core/browser/validation.h"
20 #include "ui/base/resource/resource_bundle.h" 21 #include "ui/base/resource/resource_bundle.h"
21 #include "ui/gfx/image/image.h" 22 #include "ui/gfx/image/image.h"
22 23
23 namespace autofill { 24 namespace autofill {
24 25
25 DataModelWrapper::~DataModelWrapper() {} 26 DataModelWrapper::~DataModelWrapper() {}
26 27
27 void DataModelWrapper::FillInputs(DetailInputs* inputs) { 28 void DataModelWrapper::FillInputs(DetailInputs* inputs) {
28 for (size_t i = 0; i < inputs->size(); ++i) { 29 for (size_t i = 0; i < inputs->size(); ++i) {
29 (*inputs)[i].initial_value = GetInfo(AutofillType((*inputs)[i].type)); 30 (*inputs)[i].initial_value = GetInfo(AutofillType((*inputs)[i].type));
30 } 31 }
31 } 32 }
32 33
34 base::string16 DataModelWrapper::GetInfoForDisplay(const AutofillType& type)
35 const {
36 return GetInfo(type);
37 }
38
33 gfx::Image DataModelWrapper::GetIcon() { 39 gfx::Image DataModelWrapper::GetIcon() {
34 return gfx::Image(); 40 return gfx::Image();
35 } 41 }
36 42
37 bool DataModelWrapper::GetDisplayText( 43 bool DataModelWrapper::GetDisplayText(
38 base::string16* vertically_compact, 44 base::string16* vertically_compact,
39 base::string16* horizontally_compact) { 45 base::string16* horizontally_compact) {
40 base::string16 comma = ASCIIToUTF16(", "); 46 base::string16 comma = ASCIIToUTF16(", ");
41 base::string16 newline = ASCIIToUTF16("\n"); 47 base::string16 newline = ASCIIToUTF16("\n");
42 48
(...skipping 21 matching lines...) Expand all
64 } 70 }
65 71
66 DataModelWrapper::DataModelWrapper() {} 72 DataModelWrapper::DataModelWrapper() {}
67 73
68 void DataModelWrapper::FillFormField(AutofillField* field) const { 74 void DataModelWrapper::FillFormField(AutofillField* field) const {
69 field->value = GetInfo(field->Type()); 75 field->value = GetInfo(field->Type());
70 } 76 }
71 77
72 base::string16 DataModelWrapper::GetAddressDisplayText( 78 base::string16 DataModelWrapper::GetAddressDisplayText(
73 const base::string16& separator) { 79 const base::string16& separator) {
74 base::string16 address = GetInfo(AutofillType(NAME_FULL)) + separator + 80 base::string16 address = GetInfoForDisplay(AutofillType(NAME_FULL)) +
75 GetInfo(AutofillType(ADDRESS_HOME_LINE1)); 81 separator + GetInfoForDisplay(AutofillType(ADDRESS_HOME_LINE1));
76 base::string16 address2 = GetInfo(AutofillType(ADDRESS_HOME_LINE2)); 82 base::string16 address2 = GetInfoForDisplay(AutofillType(ADDRESS_HOME_LINE2));
77 if (!address2.empty()) 83 if (!address2.empty())
78 address += separator + address2; 84 address += separator + address2;
79 85
80 base::string16 comma = ASCIIToUTF16(", "); 86 base::string16 comma = ASCIIToUTF16(", ");
81 base::string16 newline = ASCIIToUTF16("\n"); 87 base::string16 newline = ASCIIToUTF16("\n");
82 address += separator + 88 address += separator +
83 GetInfo(AutofillType(ADDRESS_HOME_CITY)) + comma + 89 GetInfoForDisplay(AutofillType(ADDRESS_HOME_CITY)) + comma +
84 GetInfo(AutofillType(ADDRESS_HOME_STATE)) + ASCIIToUTF16(" ") + 90 GetInfoForDisplay(AutofillType(ADDRESS_HOME_STATE)) + ASCIIToUTF16(" ") +
85 GetInfo(AutofillType(ADDRESS_HOME_ZIP)); 91 GetInfoForDisplay(AutofillType(ADDRESS_HOME_ZIP));
86 92
87 base::string16 email = GetInfo(AutofillType(EMAIL_ADDRESS)); 93 base::string16 email = GetInfoForDisplay(AutofillType(EMAIL_ADDRESS));
88 if (!email.empty()) 94 if (!email.empty())
89 address += newline + email; 95 address += newline + email;
90 address += newline + GetInfo(AutofillType(PHONE_HOME_WHOLE_NUMBER)); 96 address += newline + GetInfoForDisplay(AutofillType(PHONE_HOME_WHOLE_NUMBER));
91 97
92 return address; 98 return address;
93 } 99 }
94 100
95 // EmptyDataModelWrapper 101 // EmptyDataModelWrapper
96 102
97 EmptyDataModelWrapper::EmptyDataModelWrapper() {} 103 EmptyDataModelWrapper::EmptyDataModelWrapper() {}
98 EmptyDataModelWrapper::~EmptyDataModelWrapper() {} 104 EmptyDataModelWrapper::~EmptyDataModelWrapper() {}
99 105
100 base::string16 EmptyDataModelWrapper::GetInfo(const AutofillType& type) const { 106 base::string16 EmptyDataModelWrapper::GetInfo(const AutofillType& type) const {
(...skipping 20 matching lines...) Expand all
121 AutofillProfileWrapper::~AutofillProfileWrapper() {} 127 AutofillProfileWrapper::~AutofillProfileWrapper() {}
122 128
123 base::string16 AutofillProfileWrapper::GetInfo(const AutofillType& type) 129 base::string16 AutofillProfileWrapper::GetInfo(const AutofillType& type)
124 const { 130 const {
125 const std::string& app_locale = g_browser_process->GetApplicationLocale(); 131 const std::string& app_locale = g_browser_process->GetApplicationLocale();
126 std::vector<base::string16> values; 132 std::vector<base::string16> values;
127 profile_->GetMultiInfo(type, app_locale, &values); 133 profile_->GetMultiInfo(type, app_locale, &values);
128 return values[GetVariantForType(type)]; 134 return values[GetVariantForType(type)];
129 } 135 }
130 136
137 base::string16 AutofillProfileWrapper::GetInfoForDisplay(
138 const AutofillType& type) const {
139 // We display the "raw" phone number which contains user-defined formatting.
140 if (type.GetStorableType() == PHONE_HOME_WHOLE_NUMBER) {
141 std::vector<base::string16> values;
142 profile_->GetRawMultiInfo(type.GetStorableType(), &values);
143 const base::string16& phone_number = values[GetVariantForType(type)];
144
145 // If there is no user-defined formatting at all, add some standard
146 // formatting.
147 if (ContainsOnlyChars(phone_number, ASCIIToUTF16("0123456789"))) {
148 std::string region = UTF16ToASCII(
149 GetInfo(AutofillType(HTML_TYPE_COUNTRY_CODE, HTML_MODE_NONE)));
150 i18n::PhoneObject phone(phone_number, region);
151 return phone.GetFormattedNumber();
152 }
153
154 return phone_number;
155 }
156
157 return DataModelWrapper::GetInfoForDisplay(type);
158 }
159
131 void AutofillProfileWrapper::FillFormField(AutofillField* field) const { 160 void AutofillProfileWrapper::FillFormField(AutofillField* field) const {
132 if (field->Type().GetStorableType() == CREDIT_CARD_NAME) { 161 if (field->Type().GetStorableType() == CREDIT_CARD_NAME) {
133 // Cache the field's true type. 162 // Cache the field's true type.
134 HtmlFieldType original_type = field->html_type(); 163 HtmlFieldType original_type = field->html_type();
135 164
136 // Requests for the user's credit card are filled from the billing address, 165 // Requests for the user's credit card are filled from the billing address,
137 // but the AutofillProfile class doesn't know how to fill credit card 166 // but the AutofillProfile class doesn't know how to fill credit card
138 // fields. So, temporarily set the type to the corresponding profile type. 167 // fields. So, temporarily set the type to the corresponding profile type.
139 field->SetHtmlType(HTML_TYPE_NAME, field->html_mode()); 168 field->SetHtmlType(HTML_TYPE_NAME, field->html_mode());
140 169
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 WalletAddressWrapper::~WalletAddressWrapper() {} 251 WalletAddressWrapper::~WalletAddressWrapper() {}
223 252
224 base::string16 WalletAddressWrapper::GetInfo(const AutofillType& type) const { 253 base::string16 WalletAddressWrapper::GetInfo(const AutofillType& type) const {
225 // Reachable from DataModelWrapper::GetDisplayText(). 254 // Reachable from DataModelWrapper::GetDisplayText().
226 if (type.GetStorableType() == EMAIL_ADDRESS) 255 if (type.GetStorableType() == EMAIL_ADDRESS)
227 return base::string16(); 256 return base::string16();
228 257
229 return address_->GetInfo(type, g_browser_process->GetApplicationLocale()); 258 return address_->GetInfo(type, g_browser_process->GetApplicationLocale());
230 } 259 }
231 260
261 base::string16 WalletAddressWrapper::GetInfoForDisplay(const AutofillType& type)
262 const {
263 if (type.GetStorableType() == PHONE_HOME_WHOLE_NUMBER)
264 return address_->DisplayPhoneNumber();
265
266 return DataModelWrapper::GetInfoForDisplay(type);
267 }
268
232 bool WalletAddressWrapper::GetDisplayText( 269 bool WalletAddressWrapper::GetDisplayText(
233 base::string16* vertically_compact, 270 base::string16* vertically_compact,
234 base::string16* horizontally_compact) { 271 base::string16* horizontally_compact) {
235 if (!address_->is_complete_address() || 272 if (!address_->is_complete_address() ||
236 GetInfo(AutofillType(PHONE_HOME_WHOLE_NUMBER)).empty()) { 273 GetInfo(AutofillType(PHONE_HOME_WHOLE_NUMBER)).empty()) {
237 return false; 274 return false;
238 } 275 }
239 276
240 return DataModelWrapper::GetDisplayText(vertically_compact, 277 return DataModelWrapper::GetDisplayText(vertically_compact,
241 horizontally_compact); 278 horizontally_compact);
(...skipping 12 matching lines...) Expand all
254 // Reachable from DataModelWrapper::GetDisplayText(). 291 // Reachable from DataModelWrapper::GetDisplayText().
255 if (type.GetStorableType() == EMAIL_ADDRESS) 292 if (type.GetStorableType() == EMAIL_ADDRESS)
256 return base::string16(); 293 return base::string16();
257 294
258 if (type.GetStorableType() == CREDIT_CARD_EXP_MONTH) 295 if (type.GetStorableType() == CREDIT_CARD_EXP_MONTH)
259 return MonthComboboxModel::FormatMonth(instrument_->expiration_month()); 296 return MonthComboboxModel::FormatMonth(instrument_->expiration_month());
260 297
261 return instrument_->GetInfo(type, g_browser_process->GetApplicationLocale()); 298 return instrument_->GetInfo(type, g_browser_process->GetApplicationLocale());
262 } 299 }
263 300
301 base::string16 WalletInstrumentWrapper::GetInfoForDisplay(
302 const AutofillType& type) const {
303 if (type.GetStorableType() == PHONE_HOME_WHOLE_NUMBER)
304 return instrument_->address().DisplayPhoneNumber();
305
306 return DataModelWrapper::GetInfoForDisplay(type);
307 }
308
264 gfx::Image WalletInstrumentWrapper::GetIcon() { 309 gfx::Image WalletInstrumentWrapper::GetIcon() {
265 return instrument_->CardIcon(); 310 return instrument_->CardIcon();
266 } 311 }
267 312
268 bool WalletInstrumentWrapper::GetDisplayText( 313 bool WalletInstrumentWrapper::GetDisplayText(
269 base::string16* vertically_compact, 314 base::string16* vertically_compact,
270 base::string16* horizontally_compact) { 315 base::string16* horizontally_compact) {
271 // TODO(dbeam): handle other instrument statuses? http://crbug.com/233048 316 // TODO(dbeam): handle other instrument statuses? http://crbug.com/233048
272 if (instrument_->status() == wallet::WalletItems::MaskedInstrument::EXPIRED || 317 if (instrument_->status() == wallet::WalletItems::MaskedInstrument::EXPIRED ||
273 !instrument_->address().is_complete_address() || 318 !instrument_->address().is_complete_address() ||
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 ServerFieldType storable_type = type.GetStorableType(); 387 ServerFieldType storable_type = type.GetStorableType();
343 for (DetailOutputMap::const_iterator it = outputs_.begin(); 388 for (DetailOutputMap::const_iterator it = outputs_.begin();
344 it != outputs_.end(); ++it) { 389 it != outputs_.end(); ++it) {
345 if (storable_type == AutofillType(it->first->type).GetStorableType()) 390 if (storable_type == AutofillType(it->first->type).GetStorableType())
346 return it->second; 391 return it->second;
347 } 392 }
348 return base::string16(); 393 return base::string16();
349 } 394 }
350 395
351 } // namespace autofill 396 } // namespace autofill
OLDNEW
« no previous file with comments | « chrome/browser/ui/autofill/data_model_wrapper.h ('k') | chrome/browser/ui/autofill/data_model_wrapper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698