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

Unified Diff: chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc

Issue 2805263003: [Payments] Selecting incomplete items will open editors (Closed)
Patch Set: Initial Created 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc
diff --git a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc
index 4ce0cbd8de428943195ddc351bc67287e2db45a0..e36e8fa8d3906e6b26584cf99b6e35e56eedf79e 100644
--- a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc
+++ b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc
@@ -76,8 +76,9 @@ autofill::ServerFieldType GetFieldTypeFromString(const std::string& type) {
ShippingAddressEditorViewController::ShippingAddressEditorViewController(
PaymentRequestSpec* spec,
PaymentRequestState* state,
- PaymentRequestDialogView* dialog)
- : EditorViewController(spec, state, dialog) {
+ PaymentRequestDialogView* dialog,
+ autofill::AutofillProfile* profile)
+ : EditorViewController(spec, state, dialog), profile_to_edit_(profile) {
UpdateEditorFields();
}
@@ -93,9 +94,18 @@ ShippingAddressEditorViewController::GetFieldDefinitions() {
return editor_fields_;
}
+base::string16 ShippingAddressEditorViewController::GetInitialValueForType(
+ autofill::ServerFieldType type) {
+ if (!profile_to_edit_)
+ return base::string16();
+
+ // TODO(crbug.com/709451): Use GetInfo() here.
anthonyvd 2017/04/07 20:08:09 Why not use it already? I'm not sure what in that
Mathieu 2017/04/09 00:35:45 You're right, I can get the app_locale
+ return profile_to_edit_->GetRawInfo(type);
+}
+
bool ShippingAddressEditorViewController::ValidateModelAndSave() {
+ // To validate the profile first, we use a temporary object.
autofill::AutofillProfile profile;
- profile.set_origin(autofill::kSettingsOrigin);
for (const auto& field : text_fields()) {
// Force a blur in case the value was left untouched.
field.first->OnBlur();
@@ -121,8 +131,26 @@ bool ShippingAddressEditorViewController::ValidateModelAndSave() {
}
}
- // Add the profile (will not add a duplicate).
- state()->GetPersonalDataManager()->AddProfile(profile);
+ if (!profile_to_edit_) {
+ // Add the profile (will not add a duplicate).
+ profile.set_origin(autofill::kSettingsOrigin);
anthonyvd 2017/04/07 20:08:09 Do we want a different origin for PaymentRequest?
Mathieu 2017/04/09 00:35:45 I don't think so. "settings" means the profile has
+ state()->GetPersonalDataManager()->AddProfile(profile);
+ } else {
+ // Copy the temporary object's data to the object to be edited. Prefer this
+ // method to copying |profile| into |profile_to_edit_|, because the latter
+ // object needs to retain other properties (use count, use date, guid,
+ // etc.).
+ for (const auto& field : text_fields()) {
+ profile_to_edit_->SetRawInfo(field.second.type,
anthonyvd 2017/04/07 20:08:09 If GetInfo is preferred over GetRawInfo above, sho
Mathieu 2017/04/09 00:35:45 Yeah I think we should play it safe and use GetInf
+ profile.GetRawInfo(field.second.type));
+ }
+ for (const auto& field : comboboxes()) {
+ profile_to_edit_->SetRawInfo(field.second.type,
+ profile.GetRawInfo(field.second.type));
+ }
+ profile_to_edit_->set_origin(autofill::kSettingsOrigin);
anthonyvd 2017/04/07 20:08:09 Same question re: origin.
Mathieu 2017/04/09 00:35:45 Acknowledged.
+ state()->GetPersonalDataManager()->UpdateProfile(*profile_to_edit_);
+ }
return true;
}

Powered by Google App Engine
This is Rietveld 408576698