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

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 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 // fields. First we must figure out what the "right" fields are. 372 // fields. First we must figure out what the "right" fields are.
373 view_.reset(CreateView()); 373 view_.reset(CreateView());
374 view_->Show(); 374 view_->Show();
375 GetManager()->AddObserver(this); 375 GetManager()->AddObserver(this);
376 376
377 // Try to see if the user is already signed-in. 377 // Try to see if the user is already signed-in.
378 // If signed-in, fetch the user's Wallet data. 378 // If signed-in, fetch the user's Wallet data.
379 // Otherwise, see if the user could be signed in passively. 379 // Otherwise, see if the user could be signed in passively.
380 // TODO(aruslan): UMA metrics for sign-in. 380 // TODO(aruslan): UMA metrics for sign-in.
381 if (account_chooser_model_.WalletIsSelected()) 381 if (account_chooser_model_.WalletIsSelected())
382 StartFetchingWalletItems(); 382 GetWalletItems();
383 } 383 }
384 384
385 void AutofillDialogControllerImpl::Hide() { 385 void AutofillDialogControllerImpl::Hide() {
386 if (view_) 386 if (view_)
387 view_->Hide(); 387 view_->Hide();
388 } 388 }
389 389
390 void AutofillDialogControllerImpl::UpdateProgressBar(double value) { 390 void AutofillDialogControllerImpl::UpdateProgressBar(double value) {
391 view_->UpdateProgressBar(value); 391 view_->UpdateProgressBar(value);
392 } 392 }
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 return wallet_items_.get() != NULL && 522 return wallet_items_.get() != NULL &&
523 !wallet_items_->instruments().empty() && 523 !wallet_items_->instruments().empty() &&
524 !wallet_items_->addresses().empty(); 524 !wallet_items_->addresses().empty();
525 } 525 }
526 526
527 bool AutofillDialogControllerImpl::IsSubmitPausedOn( 527 bool AutofillDialogControllerImpl::IsSubmitPausedOn(
528 wallet::RequiredAction required_action) const { 528 wallet::RequiredAction required_action) const {
529 return full_wallet_ && full_wallet_->HasRequiredAction(required_action); 529 return full_wallet_ && full_wallet_->HasRequiredAction(required_action);
530 } 530 }
531 531
532 void AutofillDialogControllerImpl::StartFetchingWalletItems() { 532 void AutofillDialogControllerImpl::GetWalletItems() {
533 // TODO(dbeam): Add Risk capabilites once the UI supports risk challenges. 533 // TODO(dbeam): Add Risk capabilites once the UI supports risk challenges.
534 GetWalletClient()->GetWalletItems( 534 GetWalletClient()->GetWalletItems(
535 source_url_, 535 source_url_, std::vector<wallet::WalletClient::RiskCapability>());
536 std::vector<wallet::WalletClient::RiskCapability>());
537 } 536 }
538 537
539 void AutofillDialogControllerImpl::OnWalletOrSigninUpdate() { 538 void AutofillDialogControllerImpl::OnWalletOrSigninUpdate() {
540 if (wallet_items_.get()) { 539 switch (SignedInState()) {
541 DCHECK(!signin_helper_.get()); 540 case SIGNED_IN:
542 switch (SignedInState()) { 541 // Start fetching the user name if we don't know it yet.
543 case SIGNED_IN: 542 if (current_username_.empty()) {
544 // Start fetching the user name if we don't know it yet. 543 signin_helper_.reset(new wallet::WalletSigninHelper(
545 if (current_username_.empty()) { 544 this, profile_->GetRequestContext()));
546 signin_helper_.reset(new wallet::WalletSigninHelper( 545 signin_helper_->StartUserNameFetch();
547 this, 546 }
548 profile_->GetRequestContext())); 547 break;
549 signin_helper_->StartUserNameFetch();
550 }
551 break;
552 548
553 case REQUIRES_SIGN_IN: 549 case REQUIRES_SIGN_IN:
554 // TODO(aruslan): automatic sign-in? 550 // TODO(aruslan): automatic sign-in?
555 break; 551 break;
556 552
557 case REQUIRES_PASSIVE_SIGN_IN: 553 case REQUIRES_PASSIVE_SIGN_IN:
558 // Attempt to passively sign in the user. 554 // Attempt to passively sign in the user.
559 current_username_.clear(); 555 current_username_.clear();
560 signin_helper_.reset(new wallet::WalletSigninHelper( 556 signin_helper_.reset(new wallet::WalletSigninHelper(
561 this, 557 this, profile_->GetRequestContext()));
562 profile_->GetRequestContext())); 558 signin_helper_->StartPassiveSignin();
563 signin_helper_->StartPassiveSignin(); 559 break;
564 break;
565 560
566 case REQUIRES_RESPONSE: 561 case REQUIRES_RESPONSE:
567 NOTREACHED(); 562 break;
568 }
569 } 563 }
570 564
571 SuggestionsUpdated(); 565 SuggestionsUpdated();
572 view_->UpdateAccountChooser(); 566 view_->UpdateAccountChooser();
573 view_->UpdateNotificationArea(); 567 view_->UpdateNotificationArea();
574 568
575 // On the first successful response, compute the initial user state metric. 569 // On the first successful response, compute the initial user state metric.
576 if (initial_user_state_ == AutofillMetrics::DIALOG_USER_STATE_UNKNOWN) 570 if (initial_user_state_ == AutofillMetrics::DIALOG_USER_STATE_UNKNOWN)
577 initial_user_state_ = GetInitialUserState(); 571 initial_user_state_ = GetInitialUserState();
578 } 572 }
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 if (autocheckout_is_running_ || had_autocheckout_error_) { 1073 if (autocheckout_is_running_ || had_autocheckout_error_) {
1080 AutofillMetrics::AutocheckoutCompletionStatus metric = 1074 AutofillMetrics::AutocheckoutCompletionStatus metric =
1081 autocheckout_is_running_ ? 1075 autocheckout_is_running_ ?
1082 AutofillMetrics::AUTOCHECKOUT_SUCCEEDED : 1076 AutofillMetrics::AUTOCHECKOUT_SUCCEEDED :
1083 AutofillMetrics::AUTOCHECKOUT_FAILED; 1077 AutofillMetrics::AUTOCHECKOUT_FAILED;
1084 GetMetricLogger().LogAutocheckoutDuration( 1078 GetMetricLogger().LogAutocheckoutDuration(
1085 base::Time::Now() - autocheckout_started_timestamp_, 1079 base::Time::Now() - autocheckout_started_timestamp_,
1086 metric); 1080 metric);
1087 } 1081 }
1088 1082
1089 // Reset the view so that updates to the pref aren't processed.
1090 view_.reset();
1091 // On a successful submit, if the user manually selected "pay without wallet",
1092 // stop trying to pay with Wallet on future runs of the dialog.
1093 bool manually_selected_pay_without_wallet =
1094 !account_chooser_model_.WalletIsSelected() &&
1095 !account_chooser_model_.had_wallet_error();
1096 profile_->GetPrefs()->SetBoolean(prefs::kAutofillDialogPayWithoutWallet,
1097 manually_selected_pay_without_wallet);
1098
1099 delete this; 1083 delete this;
1100 } 1084 }
1101 1085
1102 std::vector<DialogNotification> 1086 std::vector<DialogNotification>
1103 AutofillDialogControllerImpl::CurrentNotifications() const { 1087 AutofillDialogControllerImpl::CurrentNotifications() const {
1104 std::vector<DialogNotification> notifications; 1088 std::vector<DialogNotification> notifications;
1105 1089
1106 if (account_chooser_model_.WalletIsSelected()) { 1090 if (account_chooser_model_.had_wallet_error()) {
1107 if (SignedInState() == SIGNED_IN) { 1091 // TODO(dbeam): pass along the Wallet error or remove from the translation.
1108 // On first run with a complete wallet profile, show a notification 1092 // TODO(dbeam): figure out a way to dismiss this error after a while.
1109 // explaining where this data came from. 1093 notifications.push_back(DialogNotification(
1110 if (IsFirstRun() && HasCompleteWallet()) { 1094 DialogNotification::WALLET_ERROR,
1095 l10n_util::GetStringFUTF16(IDS_AUTOFILL_DIALOG_COMPLETE_WITHOUT_WALLET,
1096 ASCIIToUTF16("[Wallet-Error]."))));
1097 } else {
1098 if (IsFirstRun()) {
1099 if (SignedInState() == SIGNED_IN) {
1100 if (account_chooser_model_.WalletIsSelected() && HasCompleteWallet()) {
1101 // First run, signed in, has a complete Google Wallet.
1102 notifications.push_back(DialogNotification(
1103 DialogNotification::EXPLANATORY_MESSAGE,
1104 l10n_util::GetStringUTF16(
1105 IDS_AUTOFILL_DIALOG_DETAILS_FROM_WALLET)));
1106 } else {
1107 // First run, signed in, has an incomplete (or no) Google Wallet.
1108 DialogNotification notification(
1109 DialogNotification::WALLET_USAGE_CONFIRMATION,
1110 l10n_util::GetStringUTF16(
1111 IDS_AUTOFILL_DIALOG_SAVE_DETAILS_IN_WALLET));
1112 notification.set_checked(account_chooser_model_.WalletIsSelected());
1113 notification.set_interactive(!is_submitting_);
1114 notifications.push_back(notification);
1115 }
1116 } else if (account_chooser_model_.WalletIsSelected()) {
1117 // First run, not signed in, wallet promo.
1111 notifications.push_back(DialogNotification( 1118 notifications.push_back(DialogNotification(
1112 DialogNotification::EXPLANATORY_MESSAGE, 1119 DialogNotification::WALLET_SIGNIN_PROMO,
1113 l10n_util::GetStringUTF16( 1120 l10n_util::GetStringUTF16(
1114 IDS_AUTOFILL_DIALOG_DETAILS_FROM_WALLET))); 1121 IDS_AUTOFILL_DIALOG_SIGN_IN_AND_SAVE_DETAILS)));
1115 } else {
1116 notifications.push_back(DialogNotification(
1117 DialogNotification::WALLET_USAGE_CONFIRMATION,
1118 l10n_util::GetStringUTF16(
1119 IDS_AUTOFILL_DIALOG_SAVE_DETAILS_IN_WALLET)));
1120 notifications.back().set_interactive(!is_submitting_);
1121 } 1122 }
1122 } else if (IsFirstRun()) { 1123 } else if (SignedInState() == SIGNED_IN && !HasCompleteWallet()) {
1123 // If the user is not signed in, show an upsell notification on first run. 1124 // After first run, signed in.
1124 notifications.push_back(DialogNotification( 1125 DialogNotification notification(
1125 DialogNotification::WALLET_SIGNIN_PROMO, 1126 DialogNotification::WALLET_USAGE_CONFIRMATION,
1126 l10n_util::GetStringUTF16( 1127 l10n_util::GetStringUTF16(
1127 IDS_AUTOFILL_DIALOG_SIGN_IN_AND_SAVE_DETAILS))); 1128 IDS_AUTOFILL_DIALOG_SAVE_DETAILS_IN_WALLET));
1129 notification.set_checked(account_chooser_model_.WalletIsSelected());
1130 notification.set_interactive(!is_submitting_);
1131 notifications.push_back(notification);
1132 } else {
1133 // If the user isn't signed in and it's after the first run, no promo.
1128 } 1134 }
1129 } 1135 }
1130 1136
1131 if (RequestingCreditCardInfo() && !TransmissionWillBeSecure()) { 1137 if (RequestingCreditCardInfo() && !TransmissionWillBeSecure()) {
1132 notifications.push_back(DialogNotification( 1138 notifications.push_back(DialogNotification(
1133 DialogNotification::SECURITY_WARNING, 1139 DialogNotification::SECURITY_WARNING,
1134 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECURITY_WARNING))); 1140 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECURITY_WARNING)));
1135 } 1141 }
1136 1142
1137 if (!invoked_from_same_origin_) { 1143 if (!invoked_from_same_origin_) {
1138 notifications.push_back(DialogNotification( 1144 notifications.push_back(DialogNotification(
1139 DialogNotification::SECURITY_WARNING, 1145 DialogNotification::SECURITY_WARNING,
1140 l10n_util::GetStringFUTF16(IDS_AUTOFILL_DIALOG_SITE_WARNING, 1146 l10n_util::GetStringFUTF16(IDS_AUTOFILL_DIALOG_SITE_WARNING,
1141 UTF8ToUTF16(source_url_.host())))); 1147 UTF8ToUTF16(source_url_.host()))));
1142 } 1148 }
1143 1149
1144 if (IsSubmitPausedOn(wallet::VERIFY_CVV)) { 1150 if (IsSubmitPausedOn(wallet::VERIFY_CVV)) {
1145 notifications.push_back(DialogNotification( 1151 notifications.push_back(DialogNotification(
1146 DialogNotification::REQUIRED_ACTION, 1152 DialogNotification::REQUIRED_ACTION,
1147 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_VERIFY_CVV))); 1153 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_VERIFY_CVV)));
1148 } 1154 }
1149 1155
1150 if (had_autocheckout_error_) { 1156 if (had_autocheckout_error_) {
1151 notifications.push_back(DialogNotification( 1157 notifications.push_back(DialogNotification(
1152 DialogNotification::AUTOCHECKOUT_ERROR, 1158 DialogNotification::AUTOCHECKOUT_ERROR,
1153 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_AUTOCHECKOUT_ERROR))); 1159 l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_AUTOCHECKOUT_ERROR)));
1154 } 1160 }
1155 1161
1156 if (account_chooser_model_.had_wallet_error()) {
1157 // TODO(dbeam): pass along the Wallet error or remove from the translation.
1158 // TODO(dbeam): figure out a way to dismiss this error after a while.
1159 notifications.push_back(DialogNotification(
1160 DialogNotification::WALLET_ERROR,
1161 l10n_util::GetStringFUTF16(
1162 IDS_AUTOFILL_DIALOG_COMPLETE_WITHOUT_WALLET,
1163 ASCIIToUTF16("[Wallet-Error]."))));
1164 }
1165
1166 return notifications; 1162 return notifications;
1167 } 1163 }
1168 1164
1169 void AutofillDialogControllerImpl::StartSignInFlow() { 1165 void AutofillDialogControllerImpl::StartSignInFlow() {
1170 DCHECK(registrar_.IsEmpty()); 1166 DCHECK(registrar_.IsEmpty());
1171 1167
1172 content::Source<content::NavigationController> source(view_->ShowSignIn()); 1168 content::Source<content::NavigationController> source(view_->ShowSignIn());
1173 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, source); 1169 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, source);
1174 } 1170 }
1175 1171
1176 void AutofillDialogControllerImpl::EndSignInFlow() { 1172 void AutofillDialogControllerImpl::EndSignInFlow() {
1177 DCHECK(!registrar_.IsEmpty()); 1173 DCHECK(!registrar_.IsEmpty());
1178 registrar_.RemoveAll(); 1174 registrar_.RemoveAll();
1179 view_->HideSignIn(); 1175 view_->HideSignIn();
1180 } 1176 }
1181 1177
1178 void AutofillDialogControllerImpl::NotificationCheckboxStateChanged(
1179 DialogNotification::Type type, bool checked) {
1180 if (type == DialogNotification::WALLET_USAGE_CONFIRMATION) {
1181 int command = checked ? AccountChooserModel::kWalletItemId :
1182 AccountChooserModel::kAutofillItemId;
1183 account_chooser_model_.ExecuteCommand(command, 0);
1184 }
1185 }
1186
1182 void AutofillDialogControllerImpl::LegalDocumentLinkClicked( 1187 void AutofillDialogControllerImpl::LegalDocumentLinkClicked(
1183 const ui::Range& range) { 1188 const ui::Range& range) {
1184 #if !defined(OS_ANDROID) 1189 #if !defined(OS_ANDROID)
1185 for (size_t i = 0; i < legal_document_link_ranges_.size(); ++i) { 1190 for (size_t i = 0; i < legal_document_link_ranges_.size(); ++i) {
1186 if (legal_document_link_ranges_[i] == range) { 1191 if (legal_document_link_ranges_[i] == range) {
1187 chrome::NavigateParams params( 1192 chrome::NavigateParams params(
1188 chrome::FindBrowserWithWebContents(web_contents()), 1193 chrome::FindBrowserWithWebContents(web_contents()),
1189 wallet_items_->legal_documents()[i]->url(), 1194 wallet_items_->legal_documents()[i]->url(),
1190 content::PAGE_TRANSITION_AUTO_BOOKMARK); 1195 content::PAGE_TRANSITION_AUTO_BOOKMARK);
1191 params.disposition = NEW_BACKGROUND_TAB; 1196 params.disposition = NEW_BACKGROUND_TAB;
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1307 void AutofillDialogControllerImpl::Observe( 1312 void AutofillDialogControllerImpl::Observe(
1308 int type, 1313 int type,
1309 const content::NotificationSource& source, 1314 const content::NotificationSource& source,
1310 const content::NotificationDetails& details) { 1315 const content::NotificationDetails& details) {
1311 DCHECK_EQ(type, content::NOTIFICATION_NAV_ENTRY_COMMITTED); 1316 DCHECK_EQ(type, content::NOTIFICATION_NAV_ENTRY_COMMITTED);
1312 content::LoadCommittedDetails* load_details = 1317 content::LoadCommittedDetails* load_details =
1313 content::Details<content::LoadCommittedDetails>(details).ptr(); 1318 content::Details<content::LoadCommittedDetails>(details).ptr();
1314 if (wallet::IsSignInContinueUrl(load_details->entry->GetVirtualURL())) { 1319 if (wallet::IsSignInContinueUrl(load_details->entry->GetVirtualURL())) {
1315 EndSignInFlow(); 1320 EndSignInFlow();
1316 if (account_chooser_model_.WalletIsSelected()) 1321 if (account_chooser_model_.WalletIsSelected())
1317 StartFetchingWalletItems(); 1322 GetWalletItems();
1318 } 1323 }
1319 } 1324 }
1320 1325
1321 //////////////////////////////////////////////////////////////////////////////// 1326 ////////////////////////////////////////////////////////////////////////////////
1322 // SuggestionsMenuModelDelegate implementation. 1327 // SuggestionsMenuModelDelegate implementation.
1323 1328
1324 void AutofillDialogControllerImpl::SuggestionItemSelected( 1329 void AutofillDialogControllerImpl::SuggestionItemSelected(
1325 const SuggestionsMenuModel& model) { 1330 const SuggestionsMenuModel& model) {
1326 const DialogSection section = SectionForSuggestionsMenuModel(model); 1331 const DialogSection section = SectionForSuggestionsMenuModel(model);
1327 EditCancelledForSection(section); 1332 EditCancelledForSection(section);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1371 1376
1372 SuggestionsUpdated(); 1377 SuggestionsUpdated();
1373 view_->UpdateNotificationArea(); 1378 view_->UpdateNotificationArea();
1374 view_->UpdateButtonStrip(); 1379 view_->UpdateButtonStrip();
1375 } 1380 }
1376 1381
1377 void AutofillDialogControllerImpl::OnPassiveSigninSuccess( 1382 void AutofillDialogControllerImpl::OnPassiveSigninSuccess(
1378 const std::string& username) { 1383 const std::string& username) {
1379 current_username_ = username; 1384 current_username_ = username;
1380 signin_helper_.reset(); 1385 signin_helper_.reset();
1381 wallet_items_.reset(); 1386 GetWalletItems();
1382 StartFetchingWalletItems();
1383 } 1387 }
1384 1388
1385 void AutofillDialogControllerImpl::OnUserNameFetchSuccess( 1389 void AutofillDialogControllerImpl::OnUserNameFetchSuccess(
1386 const std::string& username) { 1390 const std::string& username) {
1387 current_username_ = username; 1391 current_username_ = username;
1388 signin_helper_.reset(); 1392 signin_helper_.reset();
1389 OnWalletOrSigninUpdate(); 1393 OnWalletOrSigninUpdate();
1390 } 1394 }
1391 1395
1392 void AutofillDialogControllerImpl::OnAutomaticSigninSuccess( 1396 void AutofillDialogControllerImpl::OnAutomaticSigninSuccess(
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
1489 } 1493 }
1490 1494
1491 //////////////////////////////////////////////////////////////////////////////// 1495 ////////////////////////////////////////////////////////////////////////////////
1492 // PersonalDataManagerObserver implementation. 1496 // PersonalDataManagerObserver implementation.
1493 1497
1494 void AutofillDialogControllerImpl::OnPersonalDataChanged() { 1498 void AutofillDialogControllerImpl::OnPersonalDataChanged() {
1495 SuggestionsUpdated(); 1499 SuggestionsUpdated();
1496 } 1500 }
1497 1501
1498 void AutofillDialogControllerImpl::AccountChoiceChanged() { 1502 void AutofillDialogControllerImpl::AccountChoiceChanged() {
1499 if (!view_)
1500 return;
1501
1502 // Whenever the user changes the account, all manual inputs should be reset. 1503 // Whenever the user changes the account, all manual inputs should be reset.
1503 ResetManualInputForSection(SECTION_EMAIL); 1504 ResetManualInputForSection(SECTION_EMAIL);
1504 ResetManualInputForSection(SECTION_CC); 1505 ResetManualInputForSection(SECTION_CC);
1505 ResetManualInputForSection(SECTION_BILLING); 1506 ResetManualInputForSection(SECTION_BILLING);
1506 ResetManualInputForSection(SECTION_CC_BILLING); 1507 ResetManualInputForSection(SECTION_CC_BILLING);
1507 ResetManualInputForSection(SECTION_SHIPPING); 1508 ResetManualInputForSection(SECTION_SHIPPING);
1508 1509
1509 // Whenever the user changes the current account, the Wallet data should be 1510 if (is_submitting_)
1510 // cleared. If the user has chosen a Wallet account, an attempt to fetch 1511 GetWalletClient()->CancelRequests();
1511 // the Wallet data is made to see if the user is still signed in.
1512 // This will trigger a passive sign-in if required.
1513 wallet_items_.reset();
1514 full_wallet_.reset();
1515 GetWalletClient()->CancelRequests();
1516 1512
1517 SetIsSubmitting(false); 1513 SetIsSubmitting(false);
1518 1514
1519 // TODO(aruslan): integrate an automatic sign-in. 1515 if (account_chooser_model_.WalletIsSelected() && !wallet_items_)
1520 if (account_chooser_model_.WalletIsSelected()) 1516 GetWalletItems();
1521 StartFetchingWalletItems();
1522 1517
1523 SuggestionsUpdated(); 1518 SuggestionsUpdated();
1524 view_->UpdateAccountChooser(); 1519
1525 view_->UpdateNotificationArea(); 1520 if (view_) {
1521 view_->UpdateAccountChooser();
1522 view_->UpdateNotificationArea();
1523 }
1526 } 1524 }
1527 1525
1528 //////////////////////////////////////////////////////////////////////////////// 1526 ////////////////////////////////////////////////////////////////////////////////
1529 1527
1530 bool AutofillDialogControllerImpl::HandleKeyPressEventInInput( 1528 bool AutofillDialogControllerImpl::HandleKeyPressEventInInput(
1531 const content::NativeWebKeyboardEvent& event) { 1529 const content::NativeWebKeyboardEvent& event) {
1532 if (popup_controller_) 1530 if (popup_controller_)
1533 return popup_controller_->HandleKeyPressEvent(event); 1531 return popup_controller_->HandleKeyPressEvent(event);
1534 1532
1535 return false; 1533 return false;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1572 wallet_client_(profile_->GetRequestContext(), this)), 1570 wallet_client_(profile_->GetRequestContext(), this)),
1573 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_email_(this)), 1571 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_email_(this)),
1574 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_cc_(this)), 1572 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_cc_(this)),
1575 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_billing_(this)), 1573 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_billing_(this)),
1576 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_cc_billing_(this)), 1574 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_cc_billing_(this)),
1577 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_shipping_(this)), 1575 ALLOW_THIS_IN_INITIALIZER_LIST(suggested_shipping_(this)),
1578 input_showing_popup_(NULL), 1576 input_showing_popup_(NULL),
1579 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)), 1577 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)),
1580 initial_user_state_(AutofillMetrics::DIALOG_USER_STATE_UNKNOWN), 1578 initial_user_state_(AutofillMetrics::DIALOG_USER_STATE_UNKNOWN),
1581 dialog_type_(dialog_type), 1579 dialog_type_(dialog_type),
1580 is_first_run_(!profile_->GetPrefs()->HasPrefPath(
1581 prefs::kAutofillDialogPayWithoutWallet)),
1582 is_submitting_(false), 1582 is_submitting_(false),
1583 autocheckout_is_running_(false), 1583 autocheckout_is_running_(false),
1584 had_autocheckout_error_(false) { 1584 had_autocheckout_error_(false) {
1585 // TODO(estade): remove duplicates from |form_structure|? 1585 // TODO(estade): remove duplicates from |form_structure|?
1586 DCHECK(!callback_.is_null()); 1586 DCHECK(!callback_.is_null());
1587 } 1587 }
1588 1588
1589 AutofillDialogView* AutofillDialogControllerImpl::CreateView() { 1589 AutofillDialogView* AutofillDialogControllerImpl::CreateView() {
1590 return AutofillDialogView::Create(this); 1590 return AutofillDialogView::Create(this);
1591 } 1591 }
1592 1592
1593 PersonalDataManager* AutofillDialogControllerImpl::GetManager() { 1593 PersonalDataManager* AutofillDialogControllerImpl::GetManager() {
1594 return PersonalDataManagerFactory::GetForProfile(profile_); 1594 return PersonalDataManagerFactory::GetForProfile(profile_);
1595 } 1595 }
1596 1596
1597 wallet::WalletClient* AutofillDialogControllerImpl::GetWalletClient() { 1597 wallet::WalletClient* AutofillDialogControllerImpl::GetWalletClient() {
1598 return &wallet_client_; 1598 return &wallet_client_;
1599 } 1599 }
1600 1600
1601 bool AutofillDialogControllerImpl::IsPayingWithWallet() const { 1601 bool AutofillDialogControllerImpl::IsPayingWithWallet() const {
1602 return account_chooser_model_.WalletIsSelected() && 1602 return account_chooser_model_.WalletIsSelected() &&
1603 SignedInState() == SIGNED_IN; 1603 SignedInState() == SIGNED_IN;
1604 } 1604 }
1605 1605
1606 bool AutofillDialogControllerImpl::IsFirstRun() const {
1607 return is_first_run_;
1608 }
1609
1606 void AutofillDialogControllerImpl::DisableWallet() { 1610 void AutofillDialogControllerImpl::DisableWallet() {
1607 signin_helper_.reset(); 1611 signin_helper_.reset();
1608 current_username_.clear(); 1612 current_username_.clear();
1609 account_chooser_model_.SetHadWalletError(); 1613 account_chooser_model_.SetHadWalletError();
1610 GetWalletClient()->CancelRequests(); 1614 GetWalletClient()->CancelRequests();
1611 wallet_items_.reset(); 1615 wallet_items_.reset();
1612 full_wallet_.reset(); 1616 full_wallet_.reset();
1613 SetIsSubmitting(false); 1617 SetIsSubmitting(false);
1614 } 1618 }
1615 1619
1616 bool AutofillDialogControllerImpl::IsFirstRun() const {
1617 PrefService* prefs = profile_->GetPrefs();
1618 return !prefs->HasPrefPath(prefs::kAutofillDialogPayWithoutWallet);
1619 }
1620
1621 void AutofillDialogControllerImpl::SuggestionsUpdated() { 1620 void AutofillDialogControllerImpl::SuggestionsUpdated() {
1622 suggested_email_.Reset(); 1621 suggested_email_.Reset();
1623 suggested_cc_.Reset(); 1622 suggested_cc_.Reset();
1624 suggested_billing_.Reset(); 1623 suggested_billing_.Reset();
1625 suggested_cc_billing_.Reset(); 1624 suggested_cc_billing_.Reset();
1626 suggested_shipping_.Reset(); 1625 suggested_shipping_.Reset();
1627 HidePopup(); 1626 HidePopup();
1628 1627
1629 if (IsPayingWithWallet()) { 1628 if (IsPayingWithWallet()) {
1630 // TODO(estade): fill in the email address. 1629 // TODO(estade): fill in the email address.
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after
2086 AutofillMetrics::DIALOG_USER_SIGNED_IN_NO_WALLET_NO_AUTOFILL; 2085 AutofillMetrics::DIALOG_USER_SIGNED_IN_NO_WALLET_NO_AUTOFILL;
2087 } 2086 }
2088 2087
2089 // Has Wallet items. 2088 // Has Wallet items.
2090 return has_autofill_profiles ? 2089 return has_autofill_profiles ?
2091 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_HAS_AUTOFILL : 2090 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_HAS_AUTOFILL :
2092 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_NO_AUTOFILL; 2091 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_NO_AUTOFILL;
2093 } 2092 }
2094 2093
2095 } // namespace autofill 2094 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698