OLD | NEW |
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/webui/options/autofill_options_handler.h" | 5 #include "chrome/browser/ui/webui/options/autofill_options_handler.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
11 #include "base/guid.h" | 11 #include "base/guid.h" |
12 #include "base/logging.h" | 12 #include "base/logging.h" |
13 #include "base/string16.h" | 13 #include "base/string16.h" |
14 #include "base/string_number_conversions.h" | 14 #include "base/string_number_conversions.h" |
15 #include "base/utf_string_conversions.h" | 15 #include "base/utf_string_conversions.h" |
16 #include "base/values.h" | 16 #include "base/values.h" |
17 #include "chrome/browser/autofill/autofill_country.h" | 17 #include "chrome/browser/autofill/autofill_country.h" |
18 #include "chrome/browser/autofill/autofill_profile.h" | 18 #include "chrome/browser/autofill/autofill_profile.h" |
19 #include "chrome/browser/autofill/credit_card.h" | 19 #include "chrome/browser/autofill/credit_card.h" |
20 #include "chrome/browser/autofill/personal_data_manager.h" | 20 #include "chrome/browser/autofill/personal_data_manager.h" |
21 #include "chrome/browser/autofill/personal_data_manager_factory.h" | 21 #include "chrome/browser/autofill/personal_data_manager_factory.h" |
22 #include "chrome/browser/autofill/phone_number_i18n.h" | 22 #include "chrome/browser/autofill/phone_number_i18n.h" |
23 #include "chrome/browser/profiles/profile.h" | 23 #include "chrome/browser/profiles/profile.h" |
24 #include "chrome/common/url_constants.h" | 24 #include "chrome/common/url_constants.h" |
25 #include "content/public/browser/web_ui.h" | 25 #include "content/public/browser/web_ui.h" |
26 #include "grit/generated_resources.h" | 26 #include "grit/generated_resources.h" |
27 #include "grit/webkit_resources.h" | |
28 #include "ui/base/l10n/l10n_util.h" | 27 #include "ui/base/l10n/l10n_util.h" |
29 #include "ui/webui/web_ui_util.h" | 28 #include "ui/webui/web_ui_util.h" |
30 | 29 |
31 namespace { | 30 namespace { |
32 | 31 |
33 // Converts a credit card type to the appropriate resource ID of the CC icon. | |
34 int CreditCardTypeToResourceID(const std::string& type) { | |
35 if (type == kAmericanExpressCard) | |
36 return IDR_AUTOFILL_CC_AMEX; | |
37 else if (type == kDinersCard) | |
38 return IDR_AUTOFILL_CC_DINERS; | |
39 else if (type == kDiscoverCard) | |
40 return IDR_AUTOFILL_CC_DISCOVER; | |
41 else if (type == kGenericCard) | |
42 return IDR_AUTOFILL_CC_GENERIC; | |
43 else if (type == kJCBCard) | |
44 return IDR_AUTOFILL_CC_JCB; | |
45 else if (type == kMasterCard) | |
46 return IDR_AUTOFILL_CC_MASTERCARD; | |
47 else if (type == kSoloCard) | |
48 return IDR_AUTOFILL_CC_SOLO; | |
49 else if (type == kVisaCard) | |
50 return IDR_AUTOFILL_CC_VISA; | |
51 | |
52 NOTREACHED(); | |
53 return 0; | |
54 } | |
55 | |
56 // Converts a credit card type to the appropriate localized card type. | |
57 string16 LocalizedCreditCardType(const std::string& type) { | |
58 if (type == kAmericanExpressCard) | |
59 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_AMEX); | |
60 else if (type == kDinersCard) | |
61 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_DINERS); | |
62 else if (type == kDiscoverCard) | |
63 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_DISCOVER); | |
64 else if (type == kGenericCard) | |
65 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_GENERIC); | |
66 else if (type == kJCBCard) | |
67 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_JCB); | |
68 else if (type == kMasterCard) | |
69 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_MASTERCARD); | |
70 else if (type == kSoloCard) | |
71 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_SOLO); | |
72 else if (type == kVisaCard) | |
73 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_VISA); | |
74 | |
75 NOTREACHED(); | |
76 return string16(); | |
77 } | |
78 | |
79 // Returns a dictionary that maps country codes to data for the country. | 32 // Returns a dictionary that maps country codes to data for the country. |
80 DictionaryValue* GetCountryData() { | 33 DictionaryValue* GetCountryData() { |
81 std::string app_locale = AutofillCountry::ApplicationLocale(); | 34 std::string app_locale = AutofillCountry::ApplicationLocale(); |
82 std::vector<std::string> country_codes; | 35 std::vector<std::string> country_codes; |
83 AutofillCountry::GetAvailableCountries(&country_codes); | 36 AutofillCountry::GetAvailableCountries(&country_codes); |
84 | 37 |
85 DictionaryValue* country_data = new DictionaryValue(); | 38 DictionaryValue* country_data = new DictionaryValue(); |
86 for (size_t i = 0; i < country_codes.size(); ++i) { | 39 for (size_t i = 0; i < country_codes.size(); ++i) { |
87 const AutofillCountry country(country_codes[i], app_locale); | 40 const AutofillCountry country(country_codes[i], app_locale); |
88 | 41 |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 entry->Append(new StringValue((*i)->Label())); | 368 entry->Append(new StringValue((*i)->Label())); |
416 addresses.Append(entry); | 369 addresses.Append(entry); |
417 } | 370 } |
418 | 371 |
419 web_ui()->CallJavascriptFunction("AutofillOptions.setAddressList", addresses); | 372 web_ui()->CallJavascriptFunction("AutofillOptions.setAddressList", addresses); |
420 | 373 |
421 ListValue credit_cards; | 374 ListValue credit_cards; |
422 for (std::vector<CreditCard*>::const_iterator i = | 375 for (std::vector<CreditCard*>::const_iterator i = |
423 personal_data_->credit_cards().begin(); | 376 personal_data_->credit_cards().begin(); |
424 i != personal_data_->credit_cards().end(); ++i) { | 377 i != personal_data_->credit_cards().end(); ++i) { |
| 378 const CreditCard* card = *i; |
| 379 // TODO(estade): this should be a dictionary. |
425 ListValue* entry = new ListValue(); | 380 ListValue* entry = new ListValue(); |
426 entry->Append(new StringValue((*i)->guid())); | 381 entry->Append(new StringValue(card->guid())); |
427 entry->Append(new StringValue((*i)->Label())); | 382 entry->Append(new StringValue(card->Label())); |
428 int res = CreditCardTypeToResourceID((*i)->type()); | 383 entry->Append(new StringValue( |
429 entry->Append( | 384 webui::GetBitmapDataUrlFromResource(card->IconResourceId()))); |
430 new StringValue(webui::GetBitmapDataUrlFromResource(res))); | 385 entry->Append(new StringValue(card->TypeForDisplay())); |
431 entry->Append(new StringValue(LocalizedCreditCardType((*i)->type()))); | |
432 credit_cards.Append(entry); | 386 credit_cards.Append(entry); |
433 } | 387 } |
434 | 388 |
435 web_ui()->CallJavascriptFunction("AutofillOptions.setCreditCardList", | 389 web_ui()->CallJavascriptFunction("AutofillOptions.setCreditCardList", |
436 credit_cards); | 390 credit_cards); |
437 } | 391 } |
438 | 392 |
439 void AutofillOptionsHandler::RemoveData(const ListValue* args) { | 393 void AutofillOptionsHandler::RemoveData(const ListValue* args) { |
440 DCHECK(IsPersonalDataLoaded()); | 394 DCHECK(IsPersonalDataLoaded()); |
441 | 395 |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 | 570 |
617 web_ui()->CallJavascriptFunction( | 571 web_ui()->CallJavascriptFunction( |
618 "AutofillEditAddressOverlay.setValidatedPhoneNumbers", *list_value); | 572 "AutofillEditAddressOverlay.setValidatedPhoneNumbers", *list_value); |
619 } | 573 } |
620 | 574 |
621 bool AutofillOptionsHandler::IsPersonalDataLoaded() const { | 575 bool AutofillOptionsHandler::IsPersonalDataLoaded() const { |
622 return personal_data_ && personal_data_->IsDataLoaded(); | 576 return personal_data_ && personal_data_->IsDataLoaded(); |
623 } | 577 } |
624 | 578 |
625 } // namespace options | 579 } // namespace options |
OLD | NEW |