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

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

Issue 13625002: Change the behavior of the [X] Save details to Wallet checkbox notification to: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 8 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_impl.h" 5 #include "chrome/browser/ui/autofill/autofill_dialog_controller_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_email_(this)), 246 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_email_(this)),
247 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_cc_(this)), 247 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_cc_(this)),
248 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_billing_(this)), 248 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_billing_(this)),
249 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_cc_billing_(this)), 249 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_cc_billing_(this)),
250 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_shipping_(this)), 250 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_shipping_(this)),
251 section_showing_popup_(SECTION_BILLING), 251 section_showing_popup_(SECTION_BILLING),
252 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)), 252 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)),
253 metric_logger_(metric_logger), 253 metric_logger_(metric_logger),
254 initial_user_state_(AutofillMetrics::DIALOG_USER_STATE_UNKNOWN), 254 initial_user_state_(AutofillMetrics::DIALOG_USER_STATE_UNKNOWN),
255 dialog_type_(dialog_type), 255 dialog_type_(dialog_type),
256 is_first_run_(!profile_->GetPrefs()->HasPrefPath(
257 prefs::kAutofillDialogPayWithoutWallet)),
256 is_submitting_(false), 258 is_submitting_(false),
257 autocheckout_is_running_(false), 259 autocheckout_is_running_(false),
258 had_autocheckout_error_(false) { 260 had_autocheckout_error_(false) {
259 // TODO(estade): remove duplicates from |form|? 261 // TODO(estade): remove duplicates from |form|?
260 DCHECK(!callback_.is_null()); 262 DCHECK(!callback_.is_null());
263 if (is_first_run_) {
264 profile_->GetPrefs()->SetBoolean(prefs::kAutofillDialogPayWithoutWallet,
265 kPayWithoutWalletDefault);
266 }
261 } 267 }
262 268
263 AutofillDialogControllerImpl::~AutofillDialogControllerImpl() { 269 AutofillDialogControllerImpl::~AutofillDialogControllerImpl() {
264 if (popup_controller_) 270 if (popup_controller_)
265 popup_controller_->Hide(); 271 popup_controller_->Hide();
266 272
267 metric_logger_.LogDialogInitialUserState(dialog_type_, initial_user_state_); 273 metric_logger_.LogDialogInitialUserState(dialog_type_, initial_user_state_);
268 } 274 }
269 275
270 // static 276 // static
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 // fields. First we must figure out what the "right" fields are. 392 // fields. First we must figure out what the "right" fields are.
387 view_.reset(CreateView()); 393 view_.reset(CreateView());
388 view_->Show(); 394 view_->Show();
389 GetManager()->AddObserver(this); 395 GetManager()->AddObserver(this);
390 396
391 // Try to see if the user is already signed-in. 397 // Try to see if the user is already signed-in.
392 // If signed-in, fetch the user's Wallet data. 398 // If signed-in, fetch the user's Wallet data.
393 // Otherwise, see if the user could be signed in passively. 399 // Otherwise, see if the user could be signed in passively.
394 // TODO(aruslan): UMA metrics for sign-in. 400 // TODO(aruslan): UMA metrics for sign-in.
395 if (account_chooser_model_.WalletIsSelected()) 401 if (account_chooser_model_.WalletIsSelected())
396 StartFetchingWalletItems(); 402 GetWalletItems();
Dan Beam 2013/04/05 02:50:08 this matches the other calls we have (e.g. GetFull
aruslan 2013/04/05 03:45:35 Ack. Here and in GetWalletItems below the coderevi
397 } 403 }
398 404
399 void AutofillDialogControllerImpl::Hide() { 405 void AutofillDialogControllerImpl::Hide() {
400 if (view_) 406 if (view_)
401 view_->Hide(); 407 view_->Hide();
402 } 408 }
403 409
404 void AutofillDialogControllerImpl::UpdateProgressBar(double value) { 410 void AutofillDialogControllerImpl::UpdateProgressBar(double value) {
405 view_->UpdateProgressBar(value); 411 view_->UpdateProgressBar(value);
406 } 412 }
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 return wallet_items_.get() != NULL && 540 return wallet_items_.get() != NULL &&
535 !wallet_items_->instruments().empty() && 541 !wallet_items_->instruments().empty() &&
536 !wallet_items_->addresses().empty(); 542 !wallet_items_->addresses().empty();
537 } 543 }
538 544
539 bool AutofillDialogControllerImpl::IsSubmitPausedOn( 545 bool AutofillDialogControllerImpl::IsSubmitPausedOn(
540 wallet::RequiredAction required_action) const { 546 wallet::RequiredAction required_action) const {
541 return full_wallet_ && full_wallet_->HasRequiredAction(required_action); 547 return full_wallet_ && full_wallet_->HasRequiredAction(required_action);
542 } 548 }
543 549
544 void AutofillDialogControllerImpl::StartFetchingWalletItems() { 550 void AutofillDialogControllerImpl::GetWalletItems() {
545 // TODO(dbeam): Add Risk capabilites once the UI supports risk challenges. 551 // TODO(dbeam): Add Risk capabilites once the UI supports risk challenges.
546 GetWalletClient()->GetWalletItems( 552 GetWalletClient()->GetWalletItems(
547 source_url_, 553 source_url_, std::vector<wallet::WalletClient::RiskCapability>());
548 std::vector<wallet::WalletClient::RiskCapability>());
549 } 554 }
550 555
551 void AutofillDialogControllerImpl::OnWalletOrSigninUpdate() { 556 void AutofillDialogControllerImpl::OnWalletOrSigninUpdate() {
552 if (wallet_items_.get()) { 557 switch (SignedInState()) {
Dan Beam 2013/04/05 02:50:08 this needed to work without |wallet_items_|
aruslan 2013/04/05 03:45:35 Yup, it's already like this in another CL. In REQU
553 DCHECK(!signin_helper_.get()); 558 case SIGNED_IN:
554 switch (SignedInState()) { 559 // Start fetching the user name if we don't know it yet.
555 case SIGNED_IN: 560 if (current_username_.empty()) {
556 // Start fetching the user name if we don't know it yet. 561 signin_helper_.reset(new wallet::WalletSigninHelper(
557 if (current_username_.empty()) { 562 this, profile_->GetRequestContext()));
558 signin_helper_.reset(new wallet::WalletSigninHelper( 563 signin_helper_->StartUserNameFetch();
559 this, 564 }
560 profile_->GetRequestContext())); 565 break;
561 signin_helper_->StartUserNameFetch();
562 }
563 break;
564 566
565 case REQUIRES_SIGN_IN: 567 case REQUIRES_SIGN_IN:
566 // TODO(aruslan): automatic sign-in? 568 // TODO(aruslan): automatic sign-in?
567 break; 569 break;
568 570
569 case REQUIRES_PASSIVE_SIGN_IN: 571 case REQUIRES_PASSIVE_SIGN_IN:
570 // Attempt to passively sign in the user. 572 // Attempt to passively sign in the user.
571 current_username_.clear(); 573 current_username_.clear();
572 signin_helper_.reset(new wallet::WalletSigninHelper( 574 signin_helper_.reset(new wallet::WalletSigninHelper(
573 this, 575 this, profile_->GetRequestContext()));
574 profile_->GetRequestContext())); 576 signin_helper_->StartPassiveSignin();
575 signin_helper_->StartPassiveSignin(); 577 break;
576 break;
577 578
578 case REQUIRES_RESPONSE: 579 case REQUIRES_RESPONSE:
579 NOTREACHED(); 580 NOTREACHED();
580 }
581 } 581 }
582 582
583 GenerateSuggestionsModels(); 583 GenerateSuggestionsModels();
584 view_->ModelChanged(); 584 view_->ModelChanged();
585 view_->UpdateAccountChooser(); 585 view_->UpdateAccountChooser();
586 view_->UpdateNotificationArea(); 586 view_->UpdateNotificationArea();
587 587
588 // On the first successful response, compute the initial user state metric. 588 // On the first successful response, compute the initial user state metric.
589 if (initial_user_state_ == AutofillMetrics::DIALOG_USER_STATE_UNKNOWN) 589 if (initial_user_state_ == AutofillMetrics::DIALOG_USER_STATE_UNKNOWN)
590 initial_user_state_ = GetInitialUserState(); 590 initial_user_state_ = GetInitialUserState();
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 return ui::ResourceBundle::GetSharedInstance().GetImageNamed( 686 return ui::ResourceBundle::GetSharedInstance().GetImageNamed(
687 IDR_WALLET_ICON); 687 IDR_WALLET_ICON);
688 } 688 }
689 689
690 gfx::Image icon; 690 gfx::Image icon;
691 account_chooser_model_.GetIconAt(account_chooser_model_.checked_item(), 691 account_chooser_model_.GetIconAt(account_chooser_model_.checked_item(),
692 &icon); 692 &icon);
693 return icon; 693 return icon;
694 } 694 }
695 695
696 bool AutofillDialogControllerImpl::GetPayWithoutWallet() const {
697 return profile_->GetPrefs()->GetBoolean(
698 prefs::kAutofillDialogPayWithoutWallet);
699 }
700
701 void AutofillDialogControllerImpl::SetPayWithoutWallet(
702 bool pay_without_wallet) {
703 profile_->GetPrefs()->SetBoolean(prefs::kAutofillDialogPayWithoutWallet,
704 pay_without_wallet);
705 }
Dan Beam 2013/04/05 02:50:08 ^ this isn't strictly necessary to do in the contr
aruslan 2013/04/05 03:45:35 Currently, the account chooser is wired up to trig
706
696 string16 AutofillDialogControllerImpl::LabelForSection(DialogSection section) 707 string16 AutofillDialogControllerImpl::LabelForSection(DialogSection section)
697 const { 708 const {
698 switch (section) { 709 switch (section) {
699 case SECTION_EMAIL: 710 case SECTION_EMAIL:
700 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECTION_EMAIL); 711 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECTION_EMAIL);
701 case SECTION_CC: 712 case SECTION_CC:
702 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECTION_CC); 713 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECTION_CC);
703 case SECTION_BILLING: 714 case SECTION_BILLING:
704 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECTION_BILLING); 715 return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECTION_BILLING);
705 case SECTION_CC_BILLING: 716 case SECTION_CC_BILLING:
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
1082 if (autocheckout_is_running_ || had_autocheckout_error_) { 1093 if (autocheckout_is_running_ || had_autocheckout_error_) {
1083 AutofillMetrics::AutocheckoutCompletionStatus metric = 1094 AutofillMetrics::AutocheckoutCompletionStatus metric =
1084 autocheckout_is_running_ ? 1095 autocheckout_is_running_ ?
1085 AutofillMetrics::AUTOCHECKOUT_SUCCEEDED : 1096 AutofillMetrics::AUTOCHECKOUT_SUCCEEDED :
1086 AutofillMetrics::AUTOCHECKOUT_FAILED; 1097 AutofillMetrics::AUTOCHECKOUT_FAILED;
1087 metric_logger_.LogAutocheckoutDuration( 1098 metric_logger_.LogAutocheckoutDuration(
1088 base::Time::Now() - autocheckout_started_timestamp_, 1099 base::Time::Now() - autocheckout_started_timestamp_,
1089 metric); 1100 metric);
1090 } 1101 }
1091 1102
1092 // Reset the view so that updates to the pref aren't processed.
1093 view_.reset();
1094 // On a successful submit, if the user manually selected "pay without wallet",
1095 // stop trying to pay with Wallet on future runs of the dialog.
1096 bool manually_selected_pay_without_wallet =
1097 !account_chooser_model_.WalletIsSelected() &&
1098 !account_chooser_model_.had_wallet_error();
1099 profile_->GetPrefs()->SetBoolean(prefs::kAutofillDialogPayWithoutWallet,
1100 manually_selected_pay_without_wallet);
1101
1102 delete this; 1103 delete this;
1103 } 1104 }
1104 1105
1105 std::vector<DialogNotification> 1106 std::vector<DialogNotification>
1106 AutofillDialogControllerImpl::CurrentNotifications() const { 1107 AutofillDialogControllerImpl::CurrentNotifications() const {
1107 std::vector<DialogNotification> notifications; 1108 std::vector<DialogNotification> notifications;
1108 1109
1109 if (account_chooser_model_.WalletIsSelected()) { 1110 if (account_chooser_model_.had_wallet_error()) {
1110 if (SignedInState() == SIGNED_IN) { 1111 // TODO(dbeam): pass along the Wallet error or remove from the translation.
1111 // On first run with a complete wallet profile, show a notification 1112 // TODO(dbeam): figure out a way to dismiss this error after a while.
1112 // explaining where this data came from. 1113 notifications.push_back(DialogNotification(
1113 if (IsFirstRun() && HasCompleteWallet()) { 1114 DialogNotification::WALLET_ERROR,
1115 l10n_util::GetStringFUTF16(IDS_AUTOFILL_DIALOG_COMPLETE_WITHOUT_WALLET,
1116 ASCIIToUTF16("Oops, [Wallet-Error]."))));
1117 } else {
1118 if (is_first_run_) {
1119 if (SignedInState() == SIGNED_IN) {
1120 if (HasCompleteWallet()) {
1121 // First run, signed in, has a complete Google Wallet.
1122 notifications.push_back(DialogNotification(
1123 DialogNotification::EXPLANATORY_MESSAGE,
1124 l10n_util::GetStringUTF16(
1125 IDS_AUTOFILL_DIALOG_DETAILS_FROM_WALLET)));
1126 } else {
1127 // First run, signed in, has an incomplete (or no) Google Wallet.
1128 notifications.push_back(DialogNotification(
1129 DialogNotification::WALLET_USAGE_CONFIRMATION,
1130 l10n_util::GetStringUTF16(
1131 IDS_AUTOFILL_DIALOG_SAVE_DETAILS_IN_WALLET)));
1132 }
1133 } else {
1134 // First run, not signed in, wallet promo.
1114 notifications.push_back(DialogNotification( 1135 notifications.push_back(DialogNotification(
1115 DialogNotification::EXPLANATORY_MESSAGE, 1136 DialogNotification::WALLET_SIGNIN_PROMO,
1116 l10n_util::GetStringUTF16( 1137 l10n_util::GetStringUTF16(
1117 IDS_AUTOFILL_DIALOG_DETAILS_FROM_WALLET))); 1138 IDS_AUTOFILL_DIALOG_SIGN_IN_AND_SAVE_DETAILS)));
1118 } else {
1119 notifications.push_back(DialogNotification(
1120 DialogNotification::WALLET_USAGE_CONFIRMATION,
1121 l10n_util::GetStringUTF16(
1122 IDS_AUTOFILL_DIALOG_SAVE_DETAILS_IN_WALLET)));
1123 } 1139 }
1124 } else if (IsFirstRun()) { 1140 } else if (SignedInState() == SIGNED_IN && !HasCompleteWallet()) {
1125 // If the user is not signed in, show an upsell notification on first run. 1141 // After first run, signed in.
1126 notifications.push_back(DialogNotification( 1142 notifications.push_back(DialogNotification(
1127 DialogNotification::WALLET_SIGNIN_PROMO, 1143 DialogNotification::WALLET_USAGE_CONFIRMATION,
1128 l10n_util::GetStringUTF16( 1144 l10n_util::GetStringUTF16(
1129 IDS_AUTOFILL_DIALOG_SIGN_IN_AND_SAVE_DETAILS))); 1145 IDS_AUTOFILL_DIALOG_SAVE_DETAILS_IN_WALLET)));
1146 } else {
1147 // If the user isn't signed in and it's after the first run, no promo.
1130 } 1148 }
1131 } 1149 }
1132 1150
1133 if (RequestingCreditCardInfo() && !TransmissionWillBeSecure()) { 1151 if (RequestingCreditCardInfo() && !TransmissionWillBeSecure()) {
1134 notifications.push_back(DialogNotification( 1152 notifications.push_back(DialogNotification(
1135 DialogNotification::SECURITY_WARNING, 1153 DialogNotification::SECURITY_WARNING,
1136 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECURITY_WARNING))); 1154 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECURITY_WARNING)));
1137 } 1155 }
1138 1156
1139 if (!invoked_from_same_origin_) { 1157 if (!invoked_from_same_origin_) {
1140 notifications.push_back(DialogNotification( 1158 notifications.push_back(DialogNotification(
1141 DialogNotification::SECURITY_WARNING, 1159 DialogNotification::SECURITY_WARNING,
1142 l10n_util::GetStringFUTF16(IDS_AUTOFILL_DIALOG_SITE_WARNING, 1160 l10n_util::GetStringFUTF16(IDS_AUTOFILL_DIALOG_SITE_WARNING,
1143 UTF8ToUTF16(source_url_.host())))); 1161 UTF8ToUTF16(source_url_.host()))));
1144 } 1162 }
1145 1163
1146 if (IsSubmitPausedOn(wallet::VERIFY_CVV)) { 1164 if (IsSubmitPausedOn(wallet::VERIFY_CVV)) {
1147 notifications.push_back(DialogNotification( 1165 notifications.push_back(DialogNotification(
1148 DialogNotification::REQUIRED_ACTION, 1166 DialogNotification::REQUIRED_ACTION,
1149 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_VERIFY_CVV))); 1167 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_VERIFY_CVV)));
1150 } 1168 }
1151 1169
1152 if (had_autocheckout_error_) { 1170 if (had_autocheckout_error_) {
1153 notifications.push_back(DialogNotification( 1171 notifications.push_back(DialogNotification(
1154 DialogNotification::AUTOCHECKOUT_ERROR, 1172 DialogNotification::AUTOCHECKOUT_ERROR,
1155 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_AUTOCHECKOUT_ERROR))); 1173 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_AUTOCHECKOUT_ERROR)));
1156 } 1174 }
1157 1175
1158 if (account_chooser_model_.had_wallet_error()) {
1159 // TODO(dbeam): pass along the Wallet error or remove from the translation.
1160 // TODO(dbeam): figure out a way to dismiss this error after a while.
1161 notifications.push_back(DialogNotification(
1162 DialogNotification::WALLET_ERROR,
1163 l10n_util::GetStringFUTF16(
1164 IDS_AUTOFILL_DIALOG_COMPLETE_WITHOUT_WALLET,
1165 ASCIIToUTF16("Oops, [Wallet-Error]."))));
1166 }
1167
1168 return notifications; 1176 return notifications;
1169 } 1177 }
1170 1178
1171 void AutofillDialogControllerImpl::StartSignInFlow() { 1179 void AutofillDialogControllerImpl::StartSignInFlow() {
1172 DCHECK(registrar_.IsEmpty()); 1180 DCHECK(registrar_.IsEmpty());
1173 1181
1174 content::Source<content::NavigationController> source(view_->ShowSignIn()); 1182 content::Source<content::NavigationController> source(view_->ShowSignIn());
1175 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, source); 1183 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, source);
1176 } 1184 }
1177 1185
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1298 void AutofillDialogControllerImpl::Observe( 1306 void AutofillDialogControllerImpl::Observe(
1299 int type, 1307 int type,
1300 const content::NotificationSource& source, 1308 const content::NotificationSource& source,
1301 const content::NotificationDetails& details) { 1309 const content::NotificationDetails& details) {
1302 DCHECK_EQ(type, content::NOTIFICATION_NAV_ENTRY_COMMITTED); 1310 DCHECK_EQ(type, content::NOTIFICATION_NAV_ENTRY_COMMITTED);
1303 content::LoadCommittedDetails* load_details = 1311 content::LoadCommittedDetails* load_details =
1304 content::Details<content::LoadCommittedDetails>(details).ptr(); 1312 content::Details<content::LoadCommittedDetails>(details).ptr();
1305 if (wallet::IsSignInContinueUrl(load_details->entry->GetVirtualURL())) { 1313 if (wallet::IsSignInContinueUrl(load_details->entry->GetVirtualURL())) {
1306 EndSignInFlow(); 1314 EndSignInFlow();
1307 if (account_chooser_model_.WalletIsSelected()) 1315 if (account_chooser_model_.WalletIsSelected())
1308 StartFetchingWalletItems(); 1316 GetWalletItems();
1309 } 1317 }
1310 } 1318 }
1311 1319
1312 //////////////////////////////////////////////////////////////////////////////// 1320 ////////////////////////////////////////////////////////////////////////////////
1313 // SuggestionsMenuModelDelegate implementation. 1321 // SuggestionsMenuModelDelegate implementation.
1314 1322
1315 void AutofillDialogControllerImpl::SuggestionItemSelected( 1323 void AutofillDialogControllerImpl::SuggestionItemSelected(
1316 const SuggestionsMenuModel& model) { 1324 const SuggestionsMenuModel& model) {
1317 const DialogSection section = SectionForSuggestionsMenuModel(model); 1325 const DialogSection section = SectionForSuggestionsMenuModel(model);
1318 EditCancelledForSection(section); 1326 EditCancelledForSection(section);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1359 GenerateSuggestionsModels(); 1367 GenerateSuggestionsModels();
1360 view_->ModelChanged(); 1368 view_->ModelChanged();
1361 view_->UpdateNotificationArea(); 1369 view_->UpdateNotificationArea();
1362 view_->UpdateButtonStrip(); 1370 view_->UpdateButtonStrip();
1363 } 1371 }
1364 1372
1365 void AutofillDialogControllerImpl::OnPassiveSigninSuccess( 1373 void AutofillDialogControllerImpl::OnPassiveSigninSuccess(
1366 const std::string& username) { 1374 const std::string& username) {
1367 current_username_ = username; 1375 current_username_ = username;
1368 signin_helper_.reset(); 1376 signin_helper_.reset();
1369 wallet_items_.reset(); 1377 GetWalletItems();
1370 StartFetchingWalletItems();
1371 } 1378 }
1372 1379
1373 void AutofillDialogControllerImpl::OnUserNameFetchSuccess( 1380 void AutofillDialogControllerImpl::OnUserNameFetchSuccess(
1374 const std::string& username) { 1381 const std::string& username) {
1375 current_username_ = username; 1382 current_username_ = username;
1376 signin_helper_.reset(); 1383 signin_helper_.reset();
1377 OnWalletOrSigninUpdate(); 1384 OnWalletOrSigninUpdate();
1378 } 1385 }
1379 1386
1380 void AutofillDialogControllerImpl::OnAutomaticSigninSuccess( 1387 void AutofillDialogControllerImpl::OnAutomaticSigninSuccess(
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1471 void AutofillDialogControllerImpl::OnPersonalDataChanged() { 1478 void AutofillDialogControllerImpl::OnPersonalDataChanged() {
1472 HidePopup(); 1479 HidePopup();
1473 GenerateSuggestionsModels(); 1480 GenerateSuggestionsModels();
1474 view_->ModelChanged(); 1481 view_->ModelChanged();
1475 } 1482 }
1476 1483
1477 void AutofillDialogControllerImpl::AccountChoiceChanged() { 1484 void AutofillDialogControllerImpl::AccountChoiceChanged() {
1478 if (!view_) 1485 if (!view_)
1479 return; 1486 return;
1480 1487
1481 // Whenever the user changes the current account, the Wallet data should be 1488 if (account_chooser_model_.WalletIsSelected() && !wallet_items_)
Dan Beam 2013/04/05 02:50:08 ^ we could probably re-fetch if we want...
aruslan 2013/04/05 03:45:35 Without the account chooser CL this doesn't matter
1482 // cleared. If the user has chosen a Wallet account, an attempt to fetch 1489 GetWalletItems();
1483 // the Wallet data is made to see if the user is still signed in.
1484 // This will trigger a passive sign-in if required.
1485 // TODO(aruslan): integrate an automatic sign-in.
1486 wallet_items_.reset();
1487 if (account_chooser_model_.WalletIsSelected())
1488 StartFetchingWalletItems();
1489 1490
1490 GenerateSuggestionsModels(); 1491 GenerateSuggestionsModels();
1491 view_->ModelChanged(); 1492 view_->ModelChanged();
1492 view_->UpdateAccountChooser(); 1493 view_->UpdateAccountChooser();
1493 view_->UpdateNotificationArea(); 1494 view_->UpdateNotificationArea();
1494 } 1495 }
1495 1496
1496 //////////////////////////////////////////////////////////////////////////////// 1497 ////////////////////////////////////////////////////////////////////////////////
1497 1498
1498 bool AutofillDialogControllerImpl::HandleKeyPressEventInInput( 1499 bool AutofillDialogControllerImpl::HandleKeyPressEventInInput(
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1549 full_wallet_.reset(); 1550 full_wallet_.reset();
1550 } 1551 }
1551 1552
1552 void AutofillDialogControllerImpl::OnWalletSigninError() { 1553 void AutofillDialogControllerImpl::OnWalletSigninError() {
1553 signin_helper_.reset(); 1554 signin_helper_.reset();
1554 current_username_.clear(); 1555 current_username_.clear();
1555 account_chooser_model_.SetHadWalletSigninError(); 1556 account_chooser_model_.SetHadWalletSigninError();
1556 GetWalletClient()->CancelPendingRequests(); 1557 GetWalletClient()->CancelPendingRequests();
1557 } 1558 }
1558 1559
1559 bool AutofillDialogControllerImpl::IsFirstRun() const {
1560 PrefService* prefs = profile_->GetPrefs();
1561 return !prefs->HasPrefPath(prefs::kAutofillDialogPayWithoutWallet);
1562 }
1563
1564 void AutofillDialogControllerImpl::GenerateSuggestionsModels() { 1560 void AutofillDialogControllerImpl::GenerateSuggestionsModels() {
1565 suggested_email_.Reset(); 1561 suggested_email_.Reset();
1566 suggested_cc_.Reset(); 1562 suggested_cc_.Reset();
1567 suggested_billing_.Reset(); 1563 suggested_billing_.Reset();
1568 suggested_cc_billing_.Reset(); 1564 suggested_cc_billing_.Reset();
1569 suggested_shipping_.Reset(); 1565 suggested_shipping_.Reset();
1570 1566
1571 if (IsPayingWithWallet()) { 1567 if (IsPayingWithWallet()) {
1572 // TODO(estade): fill in the email address. 1568 // TODO(estade): fill in the email address.
1573 1569
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
2014 AutofillMetrics::DIALOG_USER_SIGNED_IN_NO_WALLET_NO_AUTOFILL; 2010 AutofillMetrics::DIALOG_USER_SIGNED_IN_NO_WALLET_NO_AUTOFILL;
2015 } 2011 }
2016 2012
2017 // Has Wallet items. 2013 // Has Wallet items.
2018 return has_autofill_profiles ? 2014 return has_autofill_profiles ?
2019 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_HAS_AUTOFILL : 2015 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_HAS_AUTOFILL :
2020 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_NO_AUTOFILL; 2016 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_NO_AUTOFILL;
2021 } 2017 }
2022 2018
2023 } // namespace autofill 2019 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698