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 <string> | 8 #include <string> |
9 | 9 |
10 #include "base/base64.h" | 10 #include "base/base64.h" |
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
754 legal_document_link_ranges_.push_back(ui::Range( | 754 legal_document_link_ranges_.push_back(ui::Range( |
755 link_start, link_start + documents[i]->display_name().size())); | 755 link_start, link_start + documents[i]->display_name().size())); |
756 } | 756 } |
757 legal_documents_text_ = text; | 757 legal_documents_text_ = text; |
758 } | 758 } |
759 | 759 |
760 void AutofillDialogControllerImpl::PrepareDetailInputsForSection( | 760 void AutofillDialogControllerImpl::PrepareDetailInputsForSection( |
761 DialogSection section) { | 761 DialogSection section) { |
762 // Reset all previously entered data and stop editing |section|. | 762 // Reset all previously entered data and stop editing |section|. |
763 DetailInputs* inputs = MutableRequestedFieldsForSection(section); | 763 DetailInputs* inputs = MutableRequestedFieldsForSection(section); |
764 for (size_t i = 0; i < inputs->size(); ++i) { | 764 for (DetailInputs::iterator it = inputs->begin(); it != inputs->end(); ++it) { |
765 (*inputs)[i].initial_value.clear(); | 765 it->initial_value.clear(); |
| 766 it->enabled = InputIsEnabled(*it, section); |
766 } | 767 } |
767 section_editing_state_[section] = false; | 768 section_editing_state_[section] = false; |
768 | 769 |
769 // If the chosen item in |model| yields an empty suggestion text, it is | 770 // If the chosen item in |model| yields an empty suggestion text, it is |
770 // invalid. In this case, show the editing UI with invalid fields highlighted. | 771 // invalid. In this case, show the editing UI with invalid fields highlighted. |
771 SuggestionsMenuModel* model = SuggestionsMenuModelForSection(section); | 772 SuggestionsMenuModel* model = SuggestionsMenuModelForSection(section); |
772 if (IsASuggestionItemKey(model->GetItemKeyForCheckedItem()) && | 773 if (IsASuggestionItemKey(model->GetItemKeyForCheckedItem()) && |
773 SuggestionTextForSection(section).empty()) { | 774 SuggestionTextForSection(section).empty()) { |
774 scoped_ptr<DataModelWrapper> wrapper = CreateWrapper(section); | 775 scoped_ptr<DataModelWrapper> wrapper = CreateWrapper(section); |
775 wrapper->FillInputs(MutableRequestedFieldsForSection(section)); | 776 wrapper->FillInputs(MutableRequestedFieldsForSection(section)); |
(...skipping 1478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2254 } | 2255 } |
2255 | 2256 |
2256 bool AutofillDialogControllerImpl::IsManuallyEditingAnySection() const { | 2257 bool AutofillDialogControllerImpl::IsManuallyEditingAnySection() const { |
2257 for (size_t section = SECTION_MIN; section <= SECTION_MAX; ++section) { | 2258 for (size_t section = SECTION_MIN; section <= SECTION_MAX; ++section) { |
2258 if (IsManuallyEditingSection(static_cast<DialogSection>(section))) | 2259 if (IsManuallyEditingSection(static_cast<DialogSection>(section))) |
2259 return true; | 2260 return true; |
2260 } | 2261 } |
2261 return false; | 2262 return false; |
2262 } | 2263 } |
2263 | 2264 |
| 2265 bool AutofillDialogControllerImpl::InputIsEnabled(const DetailInput& input, |
| 2266 DialogSection section) const { |
| 2267 return !(IsPayingWithWallet() && |
| 2268 input.type == CREDIT_CARD_NUMBER && |
| 2269 section_editing_state_[SECTION_CC_BILLING]); |
| 2270 } |
| 2271 |
2264 bool AutofillDialogControllerImpl::InputIsValid(AutofillFieldType type, | 2272 bool AutofillDialogControllerImpl::InputIsValid(AutofillFieldType type, |
2265 const string16& value) const { | 2273 const string16& value) const { |
2266 switch (AutofillType::GetEquivalentFieldType(type)) { | 2274 switch (AutofillType::GetEquivalentFieldType(type)) { |
2267 case EMAIL_ADDRESS: | 2275 case EMAIL_ADDRESS: |
2268 return IsValidEmailAddress(value); | 2276 return IsValidEmailAddress(value); |
2269 | 2277 |
2270 case CREDIT_CARD_NUMBER: | 2278 case CREDIT_CARD_NUMBER: |
2271 return autofill::IsValidCreditCardNumber(value); | 2279 return autofill::IsValidCreditCardNumber(value); |
2272 case CREDIT_CARD_NAME: | 2280 case CREDIT_CARD_NAME: |
2273 break; | 2281 break; |
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2777 AutofillMetrics::DIALOG_USER_SIGNED_IN_NO_WALLET_NO_AUTOFILL; | 2785 AutofillMetrics::DIALOG_USER_SIGNED_IN_NO_WALLET_NO_AUTOFILL; |
2778 } | 2786 } |
2779 | 2787 |
2780 // Has Wallet items. | 2788 // Has Wallet items. |
2781 return has_autofill_profiles ? | 2789 return has_autofill_profiles ? |
2782 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_HAS_AUTOFILL : | 2790 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_HAS_AUTOFILL : |
2783 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_NO_AUTOFILL; | 2791 AutofillMetrics::DIALOG_USER_SIGNED_IN_HAS_WALLET_NO_AUTOFILL; |
2784 } | 2792 } |
2785 | 2793 |
2786 } // namespace autofill | 2794 } // namespace autofill |
OLD | NEW |