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

Side by Side Diff: chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc

Issue 2895473005: [Payments] Have expiration date be on the same line in CC editor (Closed)
Patch Set: addressed comments Created 3 years, 7 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
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/views/payments/shipping_address_editor_view_controll er.h" 5 #include "chrome/browser/ui/views/payments/shipping_address_editor_view_controll er.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 default: 157 default:
158 NOTREACHED(); 158 NOTREACHED();
159 break; 159 break;
160 } 160 }
161 return std::unique_ptr<ui::ComboboxModel>(); 161 return std::unique_ptr<ui::ComboboxModel>();
162 } 162 }
163 163
164 void ShippingAddressEditorViewController::OnPerformAction( 164 void ShippingAddressEditorViewController::OnPerformAction(
165 views::Combobox* sender) { 165 views::Combobox* sender) {
166 EditorViewController::OnPerformAction(sender); 166 EditorViewController::OnPerformAction(sender);
167 if (sender->id() != autofill::ADDRESS_HOME_COUNTRY) 167 if (sender->id() != GetInputFieldViewId(autofill::ADDRESS_HOME_COUNTRY))
168 return; 168 return;
169 DCHECK_GE(sender->selected_index(), 0); 169 DCHECK_GE(sender->selected_index(), 0);
170 if (chosen_country_index_ != static_cast<size_t>(sender->selected_index())) { 170 if (chosen_country_index_ != static_cast<size_t>(sender->selected_index())) {
171 chosen_country_index_ = sender->selected_index(); 171 chosen_country_index_ = sender->selected_index();
172 failed_to_load_region_data_ = false; 172 failed_to_load_region_data_ = false;
173 // View update must be asynchronous to let the combobox finish performing 173 // View update must be asynchronous to let the combobox finish performing
174 // the action. 174 // the action.
175 OnDataChanged(/*synchronous=*/false); 175 OnDataChanged(/*synchronous=*/false);
176 } 176 }
177 } 177 }
178 178
179 void ShippingAddressEditorViewController::UpdateEditorView() { 179 void ShippingAddressEditorViewController::UpdateEditorView() {
180 EditorViewController::UpdateEditorView(); 180 EditorViewController::UpdateEditorView();
181 if (chosen_country_index_ > 0UL && 181 if (chosen_country_index_ > 0UL &&
182 chosen_country_index_ < countries_.size()) { 182 chosen_country_index_ < countries_.size()) {
183 views::Combobox* country_combo_box = static_cast<views::Combobox*>( 183 views::Combobox* country_combo_box =
184 dialog()->GetViewByID(autofill::ADDRESS_HOME_COUNTRY)); 184 static_cast<views::Combobox*>(dialog()->GetViewByID(
185 GetInputFieldViewId(autofill::ADDRESS_HOME_COUNTRY)));
185 DCHECK(country_combo_box); 186 DCHECK(country_combo_box);
186 DCHECK_EQ(countries_.size(), 187 DCHECK_EQ(countries_.size(),
187 static_cast<size_t>(country_combo_box->GetRowCount())); 188 static_cast<size_t>(country_combo_box->GetRowCount()));
188 country_combo_box->SetSelectedIndex(chosen_country_index_); 189 country_combo_box->SetSelectedIndex(chosen_country_index_);
189 } else if (countries_.size() > 0UL) { 190 } else if (countries_.size() > 0UL) {
190 chosen_country_index_ = 0UL; 191 chosen_country_index_ = 0UL;
191 } else { 192 } else {
192 chosen_country_index_ = kInvalidCountryIndex; 193 chosen_country_index_ = kInvalidCountryIndex;
193 } 194 }
194 // Ignore temporary profile once the editor view has been updated. 195 // Ignore temporary profile once the editor view has been updated.
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 base::Unretained(this))); 354 base::Unretained(this)));
354 } 355 }
355 } 356 }
356 357
357 bool ShippingAddressEditorViewController::SaveFieldsToProfile( 358 bool ShippingAddressEditorViewController::SaveFieldsToProfile(
358 autofill::AutofillProfile* profile, 359 autofill::AutofillProfile* profile,
359 bool ignore_errors) { 360 bool ignore_errors) {
360 const std::string& locale = state()->GetApplicationLocale(); 361 const std::string& locale = state()->GetApplicationLocale();
361 // The country must be set first, because the profile uses the country to 362 // The country must be set first, because the profile uses the country to
362 // interpret some of the data (e.g., phone numbers) passed to SetInfo. 363 // interpret some of the data (e.g., phone numbers) passed to SetInfo.
363 views::Combobox* combobox = static_cast<views::Combobox*>( 364 views::Combobox* combobox =
364 dialog()->GetViewByID(autofill::ADDRESS_HOME_COUNTRY)); 365 static_cast<views::Combobox*>(dialog()->GetViewByID(
366 GetInputFieldViewId(autofill::ADDRESS_HOME_COUNTRY)));
365 // The combobox can be null when saving to temporary profile while updating 367 // The combobox can be null when saving to temporary profile while updating
366 // the view. 368 // the view.
367 if (combobox) { 369 if (combobox) {
368 base::string16 country(combobox->GetTextForRow(combobox->selected_index())); 370 base::string16 country(combobox->GetTextForRow(combobox->selected_index()));
369 bool success = 371 bool success =
370 profile->SetInfo(autofill::AutofillType(autofill::ADDRESS_HOME_COUNTRY), 372 profile->SetInfo(autofill::AutofillType(autofill::ADDRESS_HOME_COUNTRY),
371 country, locale); 373 country, locale);
372 LOG_IF(ERROR, !success && !ignore_errors) 374 LOG_IF(ERROR, !success && !ignore_errors)
373 << "Can't set profile country to: " << country; 375 << "Can't set profile country to: " << country;
374 if (!success && !ignore_errors) 376 if (!success && !ignore_errors)
(...skipping 13 matching lines...) Expand all
388 } 390 }
389 LOG_IF(ERROR, !success && !ignore_errors) 391 LOG_IF(ERROR, !success && !ignore_errors)
390 << "Can't setinfo(" << field.second.type << ", " << field.first->text(); 392 << "Can't setinfo(" << field.second.type << ", " << field.first->text();
391 if (!success && !ignore_errors) 393 if (!success && !ignore_errors)
392 return false; 394 return false;
393 } 395 }
394 for (const auto& field : comboboxes()) { 396 for (const auto& field : comboboxes()) {
395 // ValidatingCombobox* is the key, EditorField is the value. 397 // ValidatingCombobox* is the key, EditorField is the value.
396 ValidatingCombobox* combobox = field.first; 398 ValidatingCombobox* combobox = field.first;
397 // The country has already been dealt with. 399 // The country has already been dealt with.
398 if (combobox->id() == autofill::ADDRESS_HOME_COUNTRY) 400 if (combobox->id() == GetInputFieldViewId(autofill::ADDRESS_HOME_COUNTRY))
399 continue; 401 continue;
400 if (combobox->IsValid()) { 402 if (combobox->IsValid()) {
401 success = profile->SetInfo( 403 success = profile->SetInfo(
402 autofill::AutofillType(field.second.type), 404 autofill::AutofillType(field.second.type),
403 combobox->GetTextForRow(combobox->selected_index()), locale); 405 combobox->GetTextForRow(combobox->selected_index()), locale);
404 } else { 406 } else {
405 success = false; 407 success = false;
406 } 408 }
407 LOG_IF(ERROR, !success && !ignore_errors) 409 LOG_IF(ERROR, !success && !ignore_errors)
408 << "Can't setinfo(" << field.second.type << ", " 410 << "Can't setinfo(" << field.second.type << ", "
409 << combobox->GetTextForRow(combobox->selected_index()); 411 << combobox->GetTextForRow(combobox->selected_index());
410 if (!success && !ignore_errors) 412 if (!success && !ignore_errors)
411 return false; 413 return false;
412 } 414 }
413 return success; 415 return success;
414 } 416 }
415 417
416 void ShippingAddressEditorViewController::OnComboboxModelChanged( 418 void ShippingAddressEditorViewController::OnComboboxModelChanged(
417 views::Combobox* combobox) { 419 views::Combobox* combobox) {
418 if (combobox->id() != autofill::ADDRESS_HOME_STATE) 420 if (combobox->id() != GetInputFieldViewId(autofill::ADDRESS_HOME_STATE))
419 return; 421 return;
420 autofill::RegionComboboxModel* model = 422 autofill::RegionComboboxModel* model =
421 static_cast<autofill::RegionComboboxModel*>(combobox->model()); 423 static_cast<autofill::RegionComboboxModel*>(combobox->model());
422 if (model->IsPendingRegionDataLoad()) 424 if (model->IsPendingRegionDataLoad())
423 return; 425 return;
424 if (model->failed_to_load_data()) { 426 if (model->failed_to_load_data()) {
425 failed_to_load_region_data_ = true; 427 failed_to_load_region_data_ = true;
426 // It is safe to update synchronously since the change comes from the model 428 // It is safe to update synchronously since the change comes from the model
427 // and not from the UI. 429 // and not from the UI.
428 OnDataChanged(/*synchronous=*/true); 430 OnDataChanged(/*synchronous=*/true);
(...skipping 22 matching lines...) Expand all
451 bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: 453 bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate::
452 IsValidCombobox(views::Combobox* combobox) { 454 IsValidCombobox(views::Combobox* combobox) {
453 return ValidateValue(combobox->GetTextForRow(combobox->selected_index()), 455 return ValidateValue(combobox->GetTextForRow(combobox->selected_index()),
454 nullptr); 456 nullptr);
455 } 457 }
456 458
457 bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: 459 bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate::
458 TextfieldValueChanged(views::Textfield* textfield) { 460 TextfieldValueChanged(views::Textfield* textfield) {
459 base::string16 error_message; 461 base::string16 error_message;
460 bool is_valid = ValidateValue(textfield->text(), &error_message); 462 bool is_valid = ValidateValue(textfield->text(), &error_message);
461 controller_->DisplayErrorMessageForField(field_, error_message); 463 controller_->DisplayErrorMessageForField(field_.type, error_message);
462 return is_valid; 464 return is_valid;
463 } 465 }
464 466
465 bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: 467 bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate::
466 ComboboxValueChanged(views::Combobox* combobox) { 468 ComboboxValueChanged(views::Combobox* combobox) {
467 base::string16 error_message; 469 base::string16 error_message;
468 bool is_valid = ValidateValue( 470 bool is_valid = ValidateValue(
469 combobox->GetTextForRow(combobox->selected_index()), &error_message); 471 combobox->GetTextForRow(combobox->selected_index()), &error_message);
470 controller_->DisplayErrorMessageForField(field_, error_message); 472 controller_->DisplayErrorMessageForField(field_.type, error_message);
471 return is_valid; 473 return is_valid;
472 } 474 }
473 475
474 void ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: 476 void ShippingAddressEditorViewController::ShippingAddressValidationDelegate::
475 ComboboxModelChanged(views::Combobox* combobox) { 477 ComboboxModelChanged(views::Combobox* combobox) {
476 controller_->OnComboboxModelChanged(combobox); 478 controller_->OnComboboxModelChanged(combobox);
477 } 479 }
478 480
479 bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: 481 bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate::
480 ValidateValue(const base::string16& value, base::string16* error_message) { 482 ValidateValue(const base::string16& value, base::string16* error_message) {
(...skipping 13 matching lines...) Expand all
494 return true; 496 return true;
495 } 497 }
496 if (error_message && field_.required) { 498 if (error_message && field_.required) {
497 *error_message = l10n_util::GetStringUTF16( 499 *error_message = l10n_util::GetStringUTF16(
498 IDS_PAYMENTS_FIELD_REQUIRED_VALIDATION_MESSAGE); 500 IDS_PAYMENTS_FIELD_REQUIRED_VALIDATION_MESSAGE);
499 } 501 }
500 return !field_.required; 502 return !field_.required;
501 } 503 }
502 504
503 } // namespace payments 505 } // namespace payments
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698