OLD | NEW |
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 <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 2133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2144 &popup_icons); | 2144 &popup_icons); |
2145 } | 2145 } |
2146 | 2146 |
2147 if (popup_values.empty()) { | 2147 if (popup_values.empty()) { |
2148 HidePopup(); | 2148 HidePopup(); |
2149 return; | 2149 return; |
2150 } | 2150 } |
2151 | 2151 |
2152 // |popup_input_type_| must be set before calling |Show()|. | 2152 // |popup_input_type_| must be set before calling |Show()|. |
2153 popup_input_type_ = type; | 2153 popup_input_type_ = type; |
| 2154 popup_section_ = section; |
2154 | 2155 |
2155 // TODO(estade): do we need separators and control rows like 'Clear | 2156 // TODO(estade): do we need separators and control rows like 'Clear |
2156 // Form'? | 2157 // Form'? |
2157 std::vector<int> popup_ids; | 2158 std::vector<int> popup_ids; |
2158 for (size_t i = 0; i < popup_values.size(); ++i) { | 2159 for (size_t i = 0; i < popup_values.size(); ++i) { |
2159 popup_ids.push_back(i); | 2160 popup_ids.push_back(i); |
2160 } | 2161 } |
2161 | 2162 |
2162 popup_controller_ = AutofillPopupControllerImpl::GetOrCreate( | 2163 popup_controller_ = AutofillPopupControllerImpl::GetOrCreate( |
2163 popup_controller_, | 2164 popup_controller_, |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2415 &i18n_validator_suggestions_[identifier - popup_guids_.size()])); | 2416 &i18n_validator_suggestions_[identifier - popup_guids_.size()])); |
2416 } | 2417 } |
2417 | 2418 |
2418 // If the user hasn't switched away from the default country and |wrapper|'s | 2419 // If the user hasn't switched away from the default country and |wrapper|'s |
2419 // country differs from the |view_|'s, rebuild inputs and restore user data. | 2420 // country differs from the |view_|'s, rebuild inputs and restore user data. |
2420 const FieldValueMap snapshot = TakeUserInputSnapshot(); | 2421 const FieldValueMap snapshot = TakeUserInputSnapshot(); |
2421 bool billing_rebuilt = false, shipping_rebuilt = false; | 2422 bool billing_rebuilt = false, shipping_rebuilt = false; |
2422 | 2423 |
2423 base::string16 billing_country = | 2424 base::string16 billing_country = |
2424 wrapper->GetInfo(AutofillType(ADDRESS_BILLING_COUNTRY)); | 2425 wrapper->GetInfo(AutofillType(ADDRESS_BILLING_COUNTRY)); |
2425 if (!snapshot.count(ADDRESS_BILLING_COUNTRY) && | 2426 if (popup_section_ == ActiveBillingSection() && |
| 2427 !snapshot.count(ADDRESS_BILLING_COUNTRY) && |
2426 !billing_country.empty()) { | 2428 !billing_country.empty()) { |
2427 billing_rebuilt = RebuildInputsForCountry( | 2429 billing_rebuilt = RebuildInputsForCountry( |
2428 ActiveBillingSection(), billing_country, false); | 2430 ActiveBillingSection(), billing_country, false); |
2429 } | 2431 } |
2430 | 2432 |
2431 base::string16 shipping_country = | 2433 base::string16 shipping_country = |
2432 wrapper->GetInfo(AutofillType(ADDRESS_HOME_COUNTRY)); | 2434 wrapper->GetInfo(AutofillType(ADDRESS_HOME_COUNTRY)); |
2433 if (!snapshot.count(ADDRESS_HOME_COUNTRY) && | 2435 if (popup_section_ == SECTION_SHIPPING && |
| 2436 !snapshot.count(ADDRESS_HOME_COUNTRY) && |
2434 !shipping_country.empty()) { | 2437 !shipping_country.empty()) { |
2435 shipping_rebuilt = RebuildInputsForCountry( | 2438 shipping_rebuilt = RebuildInputsForCountry( |
2436 SECTION_SHIPPING, shipping_country, false); | 2439 SECTION_SHIPPING, shipping_country, false); |
2437 } | 2440 } |
2438 | 2441 |
2439 if (billing_rebuilt || shipping_rebuilt) { | 2442 if (billing_rebuilt || shipping_rebuilt) { |
2440 RestoreUserInputFromSnapshot(snapshot); | 2443 RestoreUserInputFromSnapshot(snapshot); |
2441 if (billing_rebuilt) | 2444 if (billing_rebuilt) |
2442 UpdateSection(ActiveBillingSection()); | 2445 UpdateSection(ActiveBillingSection()); |
2443 if (shipping_rebuilt) | 2446 if (shipping_rebuilt) |
2444 UpdateSection(SECTION_SHIPPING); | 2447 UpdateSection(SECTION_SHIPPING); |
2445 } | 2448 } |
2446 | 2449 |
2447 for (size_t i = SECTION_MIN; i <= SECTION_MAX; ++i) { | 2450 DCHECK(SectionIsActive(popup_section_)); |
2448 DialogSection section = static_cast<DialogSection>(i); | 2451 wrapper->FillInputs(MutableRequestedFieldsForSection(popup_section_)); |
2449 if (!SectionIsActive(section)) | 2452 view_->FillSection(popup_section_, popup_input_type); |
2450 continue; | |
2451 | |
2452 wrapper->FillInputs(MutableRequestedFieldsForSection(section)); | |
2453 view_->FillSection(section, popup_input_type); | |
2454 } | |
2455 | 2453 |
2456 GetMetricLogger().LogDialogPopupEvent( | 2454 GetMetricLogger().LogDialogPopupEvent( |
2457 AutofillMetrics::DIALOG_POPUP_FORM_FILLED); | 2455 AutofillMetrics::DIALOG_POPUP_FORM_FILLED); |
2458 | 2456 |
2459 // TODO(estade): not sure why it's necessary to do this explicitly. | 2457 // TODO(estade): not sure why it's necessary to do this explicitly. |
2460 HidePopup(); | 2458 HidePopup(); |
2461 } | 2459 } |
2462 | 2460 |
2463 void AutofillDialogControllerImpl::RemoveSuggestion( | 2461 void AutofillDialogControllerImpl::RemoveSuggestion( |
2464 const base::string16& value, | 2462 const base::string16& value, |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2801 wallet_client_(profile_->GetRequestContext(), this, source_url), | 2799 wallet_client_(profile_->GetRequestContext(), this, source_url), |
2802 wallet_items_requested_(false), | 2800 wallet_items_requested_(false), |
2803 handling_use_wallet_link_click_(false), | 2801 handling_use_wallet_link_click_(false), |
2804 passive_failed_(false), | 2802 passive_failed_(false), |
2805 suggested_cc_(this), | 2803 suggested_cc_(this), |
2806 suggested_billing_(this), | 2804 suggested_billing_(this), |
2807 suggested_cc_billing_(this), | 2805 suggested_cc_billing_(this), |
2808 suggested_shipping_(this), | 2806 suggested_shipping_(this), |
2809 cares_about_shipping_(true), | 2807 cares_about_shipping_(true), |
2810 popup_input_type_(UNKNOWN_TYPE), | 2808 popup_input_type_(UNKNOWN_TYPE), |
| 2809 popup_section_(SECTION_MIN), |
2811 waiting_for_explicit_sign_in_response_(false), | 2810 waiting_for_explicit_sign_in_response_(false), |
2812 has_accepted_legal_documents_(false), | 2811 has_accepted_legal_documents_(false), |
2813 is_submitting_(false), | 2812 is_submitting_(false), |
2814 choose_another_instrument_or_address_(false), | 2813 choose_another_instrument_or_address_(false), |
2815 wallet_server_validation_recoverable_(true), | 2814 wallet_server_validation_recoverable_(true), |
2816 data_was_passed_back_(false), | 2815 data_was_passed_back_(false), |
2817 was_ui_latency_logged_(false), | 2816 was_ui_latency_logged_(false), |
2818 card_generated_animation_(2000, 60, this), | 2817 card_generated_animation_(2000, 60, this), |
2819 weak_ptr_factory_(this) { | 2818 weak_ptr_factory_(this) { |
2820 DCHECK(!callback_.is_null()); | 2819 DCHECK(!callback_.is_null()); |
(...skipping 1307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4128 view_->UpdateButtonStrip(); | 4127 view_->UpdateButtonStrip(); |
4129 } | 4128 } |
4130 | 4129 |
4131 void AutofillDialogControllerImpl::FetchWalletCookie() { | 4130 void AutofillDialogControllerImpl::FetchWalletCookie() { |
4132 net::URLRequestContextGetter* request_context = profile_->GetRequestContext(); | 4131 net::URLRequestContextGetter* request_context = profile_->GetRequestContext(); |
4133 signin_helper_.reset(new wallet::WalletSigninHelper(this, request_context)); | 4132 signin_helper_.reset(new wallet::WalletSigninHelper(this, request_context)); |
4134 signin_helper_->StartWalletCookieValueFetch(); | 4133 signin_helper_->StartWalletCookieValueFetch(); |
4135 } | 4134 } |
4136 | 4135 |
4137 } // namespace autofill | 4136 } // namespace autofill |
OLD | NEW |