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/autofill/autofill_dialog_controller.h" | 5 #include "chrome/browser/ui/autofill/autofill_dialog_controller.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/string_split.h" | 8 #include "base/string_split.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 FilterInputs(form_structure_, | 185 FilterInputs(form_structure_, |
186 kBillingInputs, | 186 kBillingInputs, |
187 arraysize(kBillingInputs), | 187 arraysize(kBillingInputs), |
188 &requested_billing_fields_); | 188 &requested_billing_fields_); |
189 | 189 |
190 FilterInputs(form_structure_, | 190 FilterInputs(form_structure_, |
191 kShippingInputs, | 191 kShippingInputs, |
192 arraysize(kShippingInputs), | 192 arraysize(kShippingInputs), |
193 &requested_shipping_fields_); | 193 &requested_shipping_fields_); |
194 | 194 |
195 // TODO(estade): make this actually check if it's a first run. | 195 GenerateComboboxModels(); |
196 bool first_run = true; | |
197 if (!first_run) | |
198 GenerateComboboxModels(); | |
199 | 196 |
200 // TODO(estade): don't show the dialog if the site didn't specify the right | 197 // TODO(estade): don't show the dialog if the site didn't specify the right |
201 // fields. First we must figure out what the "right" fields are. | 198 // fields. First we must figure out what the "right" fields are. |
202 view_.reset(AutofillDialogView::Create(this)); | 199 view_.reset(AutofillDialogView::Create(this)); |
203 view_->Show(); | 200 view_->Show(); |
204 } | 201 } |
205 | 202 |
206 string16 AutofillDialogController::DialogTitle() const { | 203 string16 AutofillDialogController::DialogTitle() const { |
207 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_TITLE); | 204 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_TITLE); |
208 } | 205 } |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 PersonalDataManager* manager = GetManager(); | 432 PersonalDataManager* manager = GetManager(); |
436 const std::vector<CreditCard*>& cards = manager->credit_cards(); | 433 const std::vector<CreditCard*>& cards = manager->credit_cards(); |
437 for (size_t i = 0; i < cards.size(); ++i) { | 434 for (size_t i = 0; i < cards.size(); ++i) { |
438 suggested_cc_.AddItem(cards[i]->guid(), cards[i]->Label()); | 435 suggested_cc_.AddItem(cards[i]->guid(), cards[i]->Label()); |
439 } | 436 } |
440 suggested_cc_.AddItem("", ASCIIToUTF16("Enter new card")); | 437 suggested_cc_.AddItem("", ASCIIToUTF16("Enter new card")); |
441 | 438 |
442 const std::vector<AutofillProfile*>& profiles = manager->GetProfiles(); | 439 const std::vector<AutofillProfile*>& profiles = manager->GetProfiles(); |
443 const std::string app_locale = AutofillCountry::ApplicationLocale(); | 440 const std::string app_locale = AutofillCountry::ApplicationLocale(); |
444 for (size_t i = 0; i < profiles.size(); ++i) { | 441 for (size_t i = 0; i < profiles.size(); ++i) { |
| 442 // TODO(estade): deal with variants. |
| 443 if (!IsCompleteProfile(*profiles[i])) |
| 444 continue; |
| 445 |
445 string16 email = profiles[i]->GetInfo(EMAIL_ADDRESS, app_locale); | 446 string16 email = profiles[i]->GetInfo(EMAIL_ADDRESS, app_locale); |
446 if (!email.empty()) | 447 if (!email.empty()) |
447 suggested_email_.AddItem(profiles[i]->guid(), email); | 448 suggested_email_.AddItem(profiles[i]->guid(), email); |
448 suggested_billing_.AddItem(profiles[i]->guid(), profiles[i]->Label()); | 449 suggested_billing_.AddItem(profiles[i]->guid(), profiles[i]->Label()); |
449 suggested_shipping_.AddItem(profiles[i]->guid(), profiles[i]->Label()); | 450 suggested_shipping_.AddItem(profiles[i]->guid(), profiles[i]->Label()); |
450 } | 451 } |
451 suggested_billing_.AddItem("", ASCIIToUTF16("Enter new billing")); | 452 suggested_billing_.AddItem("", ASCIIToUTF16("Enter new billing")); |
452 suggested_email_.AddItem("", ASCIIToUTF16("Enter new email")); | 453 suggested_email_.AddItem("", ASCIIToUTF16("Enter new email")); |
453 suggested_shipping_.AddItem("", ASCIIToUTF16("Enter new shipping")); | 454 suggested_shipping_.AddItem("", ASCIIToUTF16("Enter new shipping")); |
454 } | 455 } |
455 | 456 |
| 457 |
| 458 bool AutofillDialogController::IsCompleteProfile( |
| 459 const AutofillProfile& profile) { |
| 460 const std::string app_locale = AutofillCountry::ApplicationLocale(); |
| 461 for (size_t i = 0; i < requested_shipping_fields_.size(); ++i) { |
| 462 if (profile.GetInfo(requested_shipping_fields_[i].type, |
| 463 app_locale).empty()) { |
| 464 return false; |
| 465 } |
| 466 } |
| 467 |
| 468 return true; |
| 469 } |
| 470 |
456 void AutofillDialogController::FillOutputForSectionWithComparator( | 471 void AutofillDialogController::FillOutputForSectionWithComparator( |
457 DialogSection section, const InputFieldComparator& compare) { | 472 DialogSection section, const InputFieldComparator& compare) { |
458 int suggestion_selection = view_->GetSuggestionSelection(section); | 473 int suggestion_selection = view_->GetSuggestionSelection(section); |
459 SuggestionsComboboxModel* model = SuggestionsModelForSection(section); | 474 SuggestionsComboboxModel* model = SuggestionsModelForSection(section); |
460 PersonalDataManager* manager = GetManager(); | 475 PersonalDataManager* manager = GetManager(); |
461 if (suggestion_selection < model->GetItemCount() - 1) { | 476 if (suggestion_selection < model->GetItemCount() - 1) { |
462 std::string guid = model->GetItemKeyAt(suggestion_selection); | 477 std::string guid = model->GetItemKeyAt(suggestion_selection); |
463 FormGroup* form_group = section == SECTION_CC ? | 478 FormGroup* form_group = section == SECTION_CC ? |
464 static_cast<FormGroup*>(manager->GetCreditCardByGUID(guid)) : | 479 static_cast<FormGroup*>(manager->GetCreditCardByGUID(guid)) : |
465 static_cast<FormGroup*>(manager->GetProfileByGUID(guid)); | 480 static_cast<FormGroup*>(manager->GetProfileByGUID(guid)); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
541 | 556 |
542 NOTREACHED(); | 557 NOTREACHED(); |
543 return NULL; | 558 return NULL; |
544 } | 559 } |
545 | 560 |
546 PersonalDataManager* AutofillDialogController::GetManager() { | 561 PersonalDataManager* AutofillDialogController::GetManager() { |
547 return PersonalDataManagerFactory::GetForProfile(profile_); | 562 return PersonalDataManagerFactory::GetForProfile(profile_); |
548 } | 563 } |
549 | 564 |
550 } // namespace autofill | 565 } // namespace autofill |
OLD | NEW |