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

Unified Diff: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc

Issue 12207140: re-commit r181807: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
index 98ab9b1e525ff6e1ae54dac064d183887875a280..98600b1098684d782d07d1aa9dd8ff019b92c960 100644
--- a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
+++ b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
@@ -221,6 +221,7 @@ void AutofillDialogControllerImpl::Show() {
// fields. First we must figure out what the "right" fields are.
view_.reset(AutofillDialogView::Create(this));
view_->Show();
+ GetManager()->AddObserver(this);
// Request sugar info after the view is showing to simplify code for now.
if (CanPayWithWallet())
@@ -232,6 +233,10 @@ void AutofillDialogControllerImpl::Hide() {
view_->Hide();
}
+void AutofillDialogControllerImpl::UpdateProgressBar(double value) {
+ view_->UpdateProgressBar(value);
+}
+
////////////////////////////////////////////////////////////////////////////////
// AutofillDialogController implementation.
@@ -380,17 +385,11 @@ string16 AutofillDialogControllerImpl::SuggestionTextForSection(
if (section == SECTION_CC) {
CreditCard* card = GetManager()->GetCreditCardByGUID(item_key);
- if (!card)
- return string16();
-
return card->TypeAndLastFourDigits();
}
- AutofillProfile* profile = GetManager()->GetProfileByGUID(item_key);
- if (!profile)
- return string16();
-
const std::string app_locale = AutofillCountry::ApplicationLocale();
+ AutofillProfile* profile = GetManager()->GetProfileByGUID(item_key);
string16 comma = ASCIIToUTF16(", ");
string16 label = profile->GetInfo(NAME_FULL, app_locale) +
comma + profile->GetInfo(ADDRESS_HOME_LINE1, app_locale);
@@ -411,11 +410,8 @@ gfx::Image AutofillDialogControllerImpl::SuggestionIconForSection(
std::string item_key =
suggested_cc_.GetItemKeyAt(suggested_cc_.checked_item());
- CreditCard* card = GetManager()->GetCreditCardByGUID(item_key);
- if (!card)
- return gfx::Image();
-
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
+ CreditCard* card = GetManager()->GetCreditCardByGUID(item_key);
return rb.GetImageNamed(card->IconResourceId());
}
@@ -437,11 +433,7 @@ void AutofillDialogControllerImpl::EditClickedForSection(
FormGroup* form_group = section == SECTION_CC ?
static_cast<FormGroup*>(GetManager()->GetCreditCardByGUID(guid)) :
static_cast<FormGroup*>(GetManager()->GetProfileByGUID(guid));
-
- // TODO(estade): we shouldn't let this happen.
- if (!form_group)
- return;
-
+ DCHECK(form_group);
FillInputFromFormGroup(form_group, inputs);
}
@@ -555,6 +547,8 @@ void AutofillDialogControllerImpl::FocusMoved() {
}
void AutofillDialogControllerImpl::ViewClosed(DialogAction action) {
+ GetManager()->RemoveObserver(this);
+
if (action == ACTION_SUBMIT) {
FillOutputForSection(SECTION_EMAIL);
FillOutputForSection(SECTION_CC);
@@ -577,10 +571,6 @@ void AutofillDialogControllerImpl::ViewClosed(DialogAction action) {
delete this;
}
-void AutofillDialogControllerImpl::UpdateProgressBar(double value) {
- view_->UpdateProgressBar(value);
-}
-
DialogNotification AutofillDialogControllerImpl::CurrentNotification() const {
if (HasRequiredAction(wallet::VERIFY_CVV)) {
return DialogNotification(
@@ -635,7 +625,7 @@ content::WebContents* AutofillDialogControllerImpl::web_contents() {
}
////////////////////////////////////////////////////////////////////////////////
-// AutofillPopupDelegate
+// AutofillPopupDelegate implementation.
void AutofillDialogControllerImpl::OnPopupShown(
content::KeyboardListener* listener) {}
@@ -655,10 +645,7 @@ void AutofillDialogControllerImpl::DidAcceptSuggestion(const string16& value,
static_cast<FormGroup*>(GetManager()->GetCreditCardByGUID(pair.first)) :
// TODO(estade): need to use the variant, |pair.second|.
static_cast<FormGroup*>(GetManager()->GetProfileByGUID(pair.first));
-
- // TODO(estade): we shouldn't let this happen.
- if (!form_group)
- return;
+ DCHECK(form_group);
FillInputFromFormGroup(
form_group,
@@ -679,7 +666,7 @@ void AutofillDialogControllerImpl::ClearPreviewedForm() {
}
////////////////////////////////////////////////////////////////////////////////
-// content::NotificationObserver
+// content::NotificationObserver implementation.
void AutofillDialogControllerImpl::Observe(
int type,
@@ -696,7 +683,7 @@ void AutofillDialogControllerImpl::Observe(
}
////////////////////////////////////////////////////////////////////////////////
-// SuggestionsMenuModelDelegate
+// SuggestionsMenuModelDelegate implementation.
void AutofillDialogControllerImpl::SuggestionItemSelected(
const SuggestionsMenuModel& model) {
@@ -706,7 +693,7 @@ void AutofillDialogControllerImpl::SuggestionItemSelected(
}
////////////////////////////////////////////////////////////////////////////////
-// wallet::WalletClientObserver
+// wallet::WalletClientObserver implementation.
void AutofillDialogControllerImpl::OnDidAcceptLegalDocuments() {
NOTIMPLEMENTED();
@@ -783,6 +770,15 @@ void AutofillDialogControllerImpl::OnNetworkError(int response_code) {
}
////////////////////////////////////////////////////////////////////////////////
+// PersonalDataManagerObserver implementation.
+
+void AutofillDialogControllerImpl::OnPersonalDataChanged() {
+ HidePopup();
+ GenerateSuggestionsModels();
+ view_->ModelChanged();
+}
+
+////////////////////////////////////////////////////////////////////////////////
bool AutofillDialogControllerImpl::HandleKeyPressEventInInput(
const content::NativeWebKeyboardEvent& event) {
@@ -847,6 +843,11 @@ void AutofillDialogControllerImpl::WalletRequestCompleted(bool success) {
}
void AutofillDialogControllerImpl::GenerateSuggestionsModels() {
+ suggested_cc_.Reset();
+ suggested_billing_.Reset();
+ suggested_email_.Reset();
+ suggested_shipping_.Reset();
+
PersonalDataManager* manager = GetManager();
const std::vector<CreditCard*>& cards = manager->credit_cards();
for (size_t i = 0; i < cards.size(); ++i) {
@@ -904,9 +905,7 @@ void AutofillDialogControllerImpl::FillOutputForSectionWithComparator(
FormGroup* form_group = section == SECTION_CC ?
static_cast<FormGroup*>(manager->GetCreditCardByGUID(guid)) :
static_cast<FormGroup*>(manager->GetProfileByGUID(guid));
- // TODO(estade): we shouldn't let this happen.
- if (!form_group)
- return;
+ DCHECK(form_group);
// Calculate the variant by looking at how many items come from the same
// FormGroup. TODO(estade): add a test for this.
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_impl.h ('k') | chrome/browser/ui/autofill/autofill_dialog_models.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698