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

Side by Side Diff: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc

Issue 14821005: [RFP, Autofill] Switching dialog field identification to int. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 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 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 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 inputs->push_back(*input); 142 inputs->push_back(*input);
143 } 143 }
144 } 144 }
145 145
146 // Initializes |form_group| from user-entered data. 146 // Initializes |form_group| from user-entered data.
147 void FillFormGroupFromOutputs(const DetailOutputMap& detail_outputs, 147 void FillFormGroupFromOutputs(const DetailOutputMap& detail_outputs,
148 FormGroup* form_group) { 148 FormGroup* form_group) {
149 for (DetailOutputMap::const_iterator iter = detail_outputs.begin(); 149 for (DetailOutputMap::const_iterator iter = detail_outputs.begin();
150 iter != detail_outputs.end(); ++iter) { 150 iter != detail_outputs.end(); ++iter) {
151 if (!iter->second.empty()) { 151 if (!iter->second.empty()) {
152 AutofillFieldType type = iter->first->type; 152 AutofillFieldType type = iter->first;
153 if (type == ADDRESS_HOME_COUNTRY || type == ADDRESS_BILLING_COUNTRY) { 153 if (type == ADDRESS_HOME_COUNTRY || type == ADDRESS_BILLING_COUNTRY) {
154 form_group->SetInfo(type, 154 form_group->SetInfo(type,
155 iter->second, 155 iter->second,
156 g_browser_process->GetApplicationLocale()); 156 g_browser_process->GetApplicationLocale());
157 } else { 157 } else {
158 form_group->SetRawInfo(iter->first->type, iter->second); 158 form_group->SetRawInfo(iter->first, iter->second);
159 } 159 }
160 } 160 }
161 } 161 }
162 } 162 }
163 163
164 // Get billing info from |output| and put it into |card|, |cvc|, and |profile|. 164 // Get billing info from |output| and put it into |card|, |cvc|, and |profile|.
165 // These outparams are required because |card|/|profile| accept different types 165 // These outparams are required because |card|/|profile| accept different types
166 // of raw info, and CreditCard doesn't save CVCs. 166 // of raw info, and CreditCard doesn't save CVCs.
167 void GetBillingInfoFromOutputs(const DetailOutputMap& output, 167 void GetBillingInfoFromOutputs(const DetailOutputMap& output,
168 CreditCard* card, 168 CreditCard* card,
169 string16* cvc, 169 string16* cvc,
170 AutofillProfile* profile) { 170 AutofillProfile* profile) {
171 for (DetailOutputMap::const_iterator it = output.begin(); 171 for (DetailOutputMap::const_iterator it = output.begin();
172 it != output.end(); ++it) { 172 it != output.end(); ++it) {
173 string16 trimmed; 173 string16 trimmed;
174 TrimWhitespace(it->second, TRIM_ALL, &trimmed); 174 TrimWhitespace(it->second, TRIM_ALL, &trimmed);
175 175
176 // Special case CVC as CreditCard just swallows it. 176 // Special case CVC as CreditCard just swallows it.
177 if (it->first->type == CREDIT_CARD_VERIFICATION_CODE) { 177 if (it->first == CREDIT_CARD_VERIFICATION_CODE) {
178 if (cvc) 178 if (cvc)
179 cvc->assign(trimmed); 179 cvc->assign(trimmed);
180 } else if (it->first->type == ADDRESS_HOME_COUNTRY || 180 } else if (it->first == ADDRESS_HOME_COUNTRY ||
181 it->first->type == ADDRESS_BILLING_COUNTRY) { 181 it->first == ADDRESS_BILLING_COUNTRY) {
182 profile->SetInfo(it->first->type, 182 profile->SetInfo(
183 trimmed, 183 it->first, trimmed, g_browser_process->GetApplicationLocale());
184 g_browser_process->GetApplicationLocale());
185 } else { 184 } else {
186 // Copy the credit card name to |profile| in addition to |card| as 185 // Copy the credit card name to |profile| in addition to |card| as
187 // wallet::Instrument requires a recipient name for its billing address. 186 // wallet::Instrument requires a recipient name for its billing address.
188 if (profile && it->first->type == CREDIT_CARD_NAME) 187 if (profile && it->first == CREDIT_CARD_NAME)
189 profile->SetRawInfo(NAME_FULL, trimmed); 188 profile->SetRawInfo(NAME_FULL, trimmed);
190 189
191 if (IsCreditCardType(it->first->type)) { 190 if (IsCreditCardType(it->first)) {
192 if (card) 191 if (card)
193 card->SetRawInfo(it->first->type, trimmed); 192 card->SetRawInfo(it->first, trimmed);
194 } else if (profile) { 193 } else if (profile) {
195 profile->SetRawInfo(it->first->type, trimmed); 194 profile->SetRawInfo(it->first, trimmed);
196 } 195 }
197 } 196 }
198 } 197 }
199 } 198 }
200 199
201 // Returns the containing window for the given |web_contents|. The containing 200 // Returns the containing window for the given |web_contents|. The containing
202 // window might be a browser window for a Chrome tab, or it might be a shell 201 // window might be a browser window for a Chrome tab, or it might be a shell
203 // window for a platform app. 202 // window for a platform app.
204 BaseWindow* GetBaseWindowForWebContents( 203 BaseWindow* GetBaseWindowForWebContents(
205 const content::WebContents* web_contents) { 204 const content::WebContents* web_contents) {
206 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); 205 Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
207 if (browser) 206 if (browser)
208 return browser->window(); 207 return browser->window();
209 208
210 gfx::NativeWindow native_window = 209 gfx::NativeWindow native_window =
211 web_contents->GetView()->GetTopLevelNativeWindow(); 210 web_contents->GetView()->GetTopLevelNativeWindow();
212 ShellWindow* shell_window = 211 ShellWindow* shell_window =
213 extensions::ShellWindowRegistry:: 212 extensions::ShellWindowRegistry::
214 GetShellWindowForNativeWindowAnyProfile(native_window); 213 GetShellWindowForNativeWindowAnyProfile(native_window);
215 return shell_window->GetBaseWindow(); 214 return shell_window->GetBaseWindow();
216 } 215 }
217 216
218 // Extracts the string value of a field with |type| from |output|. This is 217 // Extracts the string value of a field with |type| from |output|. This is
219 // useful when you only need the value of 1 input from a section of view inputs. 218 // useful when you only need the value of 1 input from a section of view inputs.
220 string16 GetValueForType(const DetailOutputMap& output, 219 string16 GetValueForType(const DetailOutputMap& output,
221 AutofillFieldType type) { 220 AutofillFieldType type) {
222 for (DetailOutputMap::const_iterator it = output.begin(); 221 DetailOutputMap::const_iterator it = output.find(type);
223 it != output.end(); ++it) { 222 DCHECK(it != output.end());
224 if (it->first->type == type) 223 return it->second;
225 return it->second;
226 }
227 NOTREACHED();
228 return string16();
229 } 224 }
230 225
231 } // namespace 226 } // namespace
232 227
233 AutofillDialogController::~AutofillDialogController() {} 228 AutofillDialogController::~AutofillDialogController() {}
234 229
235 AutofillDialogControllerImpl::~AutofillDialogControllerImpl() { 230 AutofillDialogControllerImpl::~AutofillDialogControllerImpl() {
236 if (popup_controller_) 231 if (popup_controller_)
237 popup_controller_->Hide(); 232 popup_controller_->Hide();
238 233
(...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after
1009 NOTREACHED(); // Trying to validate unknown field. 1004 NOTREACHED(); // Trying to validate unknown field.
1010 break; 1005 break;
1011 } 1006 }
1012 1007
1013 return !value.empty(); 1008 return !value.empty();
1014 } 1009 }
1015 1010
1016 std::vector<AutofillFieldType> AutofillDialogControllerImpl::InputsAreValid( 1011 std::vector<AutofillFieldType> AutofillDialogControllerImpl::InputsAreValid(
1017 const DetailOutputMap& inputs, ValidationType validation_type) const { 1012 const DetailOutputMap& inputs, ValidationType validation_type) const {
1018 std::vector<AutofillFieldType> invalid_fields; 1013 std::vector<AutofillFieldType> invalid_fields;
1019 std::map<AutofillFieldType, string16> field_values;
1020 for (DetailOutputMap::const_iterator iter = inputs.begin(); 1014 for (DetailOutputMap::const_iterator iter = inputs.begin();
1021 iter != inputs.end(); ++iter) { 1015 iter != inputs.end(); ++iter) {
1022 // Skip empty fields in edit mode. 1016 // Skip empty fields in edit mode.
1023 if (validation_type == VALIDATE_EDIT && iter->second.empty()) 1017 if (validation_type == VALIDATE_EDIT && iter->second.empty())
1024 continue; 1018 continue;
1025 1019
1026 field_values[iter->first->type] = iter->second; 1020 if (!InputIsValid(iter->first, iter->second))
1027 1021 invalid_fields.push_back(iter->first);
1028 if (!InputIsValid(iter->first->type, iter->second))
1029 invalid_fields.push_back(iter->first->type);
1030 } 1022 }
1031 1023
1032 // Validate the date formed by month and year field. (Autofill dialog is 1024 // Validate the date formed by month and year field. (Autofill dialog is
1033 // never supposed to have 2-digit years, so not checked). 1025 // never supposed to have 2-digit years, so not checked).
1034 if (field_values.count(CREDIT_CARD_EXP_MONTH) && 1026 DetailOutputMap::const_iterator field1 = inputs.find(CREDIT_CARD_EXP_MONTH);
1035 field_values.count(CREDIT_CARD_EXP_4_DIGIT_YEAR)) { 1027 DetailOutputMap::const_iterator field2 =
1028 inputs.find(CREDIT_CARD_EXP_4_DIGIT_YEAR);
1029 if (field1 != inputs.end() && field2 != inputs.end()) {
1036 if (!autofill::IsValidCreditCardExpirationDate( 1030 if (!autofill::IsValidCreditCardExpirationDate(
1037 field_values[CREDIT_CARD_EXP_4_DIGIT_YEAR], 1031 field1->second, field2->second, base::Time::Now())) {
1038 field_values[CREDIT_CARD_EXP_MONTH],
1039 base::Time::Now())) {
1040 invalid_fields.push_back(CREDIT_CARD_EXP_MONTH); 1032 invalid_fields.push_back(CREDIT_CARD_EXP_MONTH);
1041 invalid_fields.push_back(CREDIT_CARD_EXP_4_DIGIT_YEAR); 1033 invalid_fields.push_back(CREDIT_CARD_EXP_4_DIGIT_YEAR);
1042 } 1034 }
1043 } 1035 }
1044 1036
1045 // If there is a credit card number and a CVC, validate them together. 1037 // If there is a credit card number and a CVC, validate them together.
1046 if (field_values.count(CREDIT_CARD_NUMBER) && 1038 field1 = inputs.find(CREDIT_CARD_NUMBER);
1047 field_values.count(CREDIT_CARD_VERIFICATION_CODE) && 1039 field2 = inputs.find(CREDIT_CARD_VERIFICATION_CODE);
1048 InputIsValid(CREDIT_CARD_NUMBER, field_values[CREDIT_CARD_NUMBER])) { 1040 if (field1 != inputs.end() && field2 != inputs.end() &&
1049 if (!autofill::IsValidCreditCardSecurityCode( 1041 InputIsValid(CREDIT_CARD_NUMBER, field1->second)) {
1050 field_values[CREDIT_CARD_VERIFICATION_CODE], 1042 if (!autofill::IsValidCreditCardSecurityCode(field2->second,
1051 field_values[CREDIT_CARD_NUMBER])) { 1043 field1->second)) {
1052 invalid_fields.push_back(CREDIT_CARD_VERIFICATION_CODE); 1044 invalid_fields.push_back(CREDIT_CARD_VERIFICATION_CODE);
1053 } 1045 }
1054 } 1046 }
1055 1047
1056 // De-duplicate invalid fields. 1048 // De-duplicate invalid fields.
1057 std::sort(invalid_fields.begin(), invalid_fields.end()); 1049 std::sort(invalid_fields.begin(), invalid_fields.end());
1058 invalid_fields.erase(std::unique( 1050 invalid_fields.erase(std::unique(
1059 invalid_fields.begin(), invalid_fields.end()), invalid_fields.end()); 1051 invalid_fields.begin(), invalid_fields.end()), invalid_fields.end());
1060 1052
1061 return invalid_fields; 1053 return invalid_fields;
1062 } 1054 }
1063 1055
1064 void AutofillDialogControllerImpl::UserEditedOrActivatedInput( 1056 void AutofillDialogControllerImpl::UserEditedOrActivatedInput(
1065 const DetailInput* input, 1057 DialogSection section,
1058 AutofillFieldType type,
1066 gfx::NativeView parent_view, 1059 gfx::NativeView parent_view,
1067 const gfx::Rect& content_bounds, 1060 const gfx::Rect& content_bounds,
1068 const string16& field_contents, 1061 const string16& field_contents,
1069 bool was_edit) { 1062 bool was_edit) {
1070 // If the field is edited down to empty, don't show a popup. 1063 // If the field is edited down to empty, don't show a popup.
1071 if (was_edit && field_contents.empty()) { 1064 if (was_edit && field_contents.empty()) {
1072 HidePopup(); 1065 HidePopup();
1073 return; 1066 return;
1074 } 1067 }
1075 1068
1076 // If the user clicks while the popup is already showing, be sure to hide 1069 // If the user clicks while the popup is already showing, be sure to hide
1077 // it. 1070 // it.
1078 if (!was_edit && popup_controller_) { 1071 if (!was_edit && popup_controller_) {
1079 HidePopup(); 1072 HidePopup();
1080 return; 1073 return;
1081 } 1074 }
1082 1075
1083 std::vector<string16> popup_values, popup_labels, popup_icons; 1076 std::vector<string16> popup_values, popup_labels, popup_icons;
1084 if (IsCreditCardType(input->type)) { 1077 if (IsCreditCardType(type)) {
1085 GetManager()->GetCreditCardSuggestions(input->type, 1078 GetManager()->GetCreditCardSuggestions(type,
1086 field_contents, 1079 field_contents,
1087 &popup_values, 1080 &popup_values,
1088 &popup_labels, 1081 &popup_labels,
1089 &popup_icons, 1082 &popup_icons,
1090 &popup_guids_); 1083 &popup_guids_);
1091 } else { 1084 } else {
1092 std::vector<AutofillFieldType> field_types; 1085 std::vector<AutofillFieldType> field_types;
1093 field_types.push_back(EMAIL_ADDRESS); 1086 field_types.push_back(EMAIL_ADDRESS);
1094 for (DetailInputs::const_iterator iter = requested_shipping_fields_.begin(); 1087 for (DetailInputs::const_iterator iter = requested_shipping_fields_.begin();
1095 iter != requested_shipping_fields_.end(); ++iter) { 1088 iter != requested_shipping_fields_.end(); ++iter) {
1096 field_types.push_back(iter->type); 1089 field_types.push_back(iter->type);
1097 } 1090 }
1098 GetManager()->GetProfileSuggestions(input->type, 1091 GetManager()->GetProfileSuggestions(type,
1099 field_contents, 1092 field_contents,
1100 false, 1093 false,
1101 field_types, 1094 field_types,
1102 &popup_values, 1095 &popup_values,
1103 &popup_labels, 1096 &popup_labels,
1104 &popup_icons, 1097 &popup_icons,
1105 &popup_guids_); 1098 &popup_guids_);
1106 } 1099 }
1107 1100
1108 if (popup_values.empty()) 1101 if (popup_values.empty())
1109 return; 1102 return;
1110 1103
1111 // TODO(estade): do we need separators and control rows like 'Clear 1104 // TODO(estade): do we need separators and control rows like 'Clear
1112 // Form'? 1105 // Form'?
1113 std::vector<int> popup_ids; 1106 std::vector<int> popup_ids;
1114 for (size_t i = 0; i < popup_guids_.size(); ++i) { 1107 for (size_t i = 0; i < popup_guids_.size(); ++i) {
1115 popup_ids.push_back(i); 1108 popup_ids.push_back(i);
1116 } 1109 }
1117 1110
1118 popup_controller_ = AutofillPopupControllerImpl::GetOrCreate( 1111 popup_controller_ = AutofillPopupControllerImpl::GetOrCreate(
1119 popup_controller_, 1112 popup_controller_,
1120 weak_ptr_factory_.GetWeakPtr(), 1113 weak_ptr_factory_.GetWeakPtr(),
1121 parent_view, 1114 parent_view,
1122 content_bounds); 1115 content_bounds);
1123 popup_controller_->Show(popup_values, 1116 popup_controller_->Show(popup_values,
1124 popup_labels, 1117 popup_labels,
1125 popup_icons, 1118 popup_icons,
1126 popup_ids); 1119 popup_ids);
1127 input_showing_popup_ = input; 1120 input_showing_popup_type_ = type;
1128 } 1121 }
1129 1122
1130 void AutofillDialogControllerImpl::FocusMoved() { 1123 void AutofillDialogControllerImpl::FocusMoved() {
1131 HidePopup(); 1124 HidePopup();
1132 } 1125 }
1133 1126
1134 void AutofillDialogControllerImpl::ViewClosed() { 1127 void AutofillDialogControllerImpl::ViewClosed() {
1135 GetManager()->RemoveObserver(this); 1128 GetManager()->RemoveObserver(this);
1136 1129
1137 if (autocheckout_is_running_ || had_autocheckout_error_) { 1130 if (autocheckout_is_running_ || had_autocheckout_error_) {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 1313
1321 void AutofillDialogControllerImpl::DidSelectSuggestion(int identifier) { 1314 void AutofillDialogControllerImpl::DidSelectSuggestion(int identifier) {
1322 // TODO(estade): implement. 1315 // TODO(estade): implement.
1323 } 1316 }
1324 1317
1325 void AutofillDialogControllerImpl::DidAcceptSuggestion(const string16& value, 1318 void AutofillDialogControllerImpl::DidAcceptSuggestion(const string16& value,
1326 int identifier) { 1319 int identifier) {
1327 const PersonalDataManager::GUIDPair& pair = popup_guids_[identifier]; 1320 const PersonalDataManager::GUIDPair& pair = popup_guids_[identifier];
1328 1321
1329 scoped_ptr<DataModelWrapper> wrapper; 1322 scoped_ptr<DataModelWrapper> wrapper;
1330 if (IsCreditCardType(input_showing_popup_->type)) { 1323 if (IsCreditCardType(input_showing_popup_type_)) {
1331 wrapper.reset(new AutofillCreditCardWrapper( 1324 wrapper.reset(new AutofillCreditCardWrapper(
1332 GetManager()->GetCreditCardByGUID(pair.first))); 1325 GetManager()->GetCreditCardByGUID(pair.first)));
1333 } else { 1326 } else {
1334 wrapper.reset(new AutofillProfileWrapper( 1327 wrapper.reset(new AutofillProfileWrapper(
1335 GetManager()->GetProfileByGUID(pair.first), pair.second)); 1328 GetManager()->GetProfileByGUID(pair.first), pair.second));
1336 } 1329 }
1337 1330
1338 for (size_t i = SECTION_MIN; i <= SECTION_MAX; ++i) { 1331 for (size_t i = SECTION_MIN; i <= SECTION_MAX; ++i) {
1339 DialogSection section = static_cast<DialogSection>(i); 1332 DialogSection section = static_cast<DialogSection>(i);
1340 wrapper->FillInputs(MutableRequestedFieldsForSection(section)); 1333 wrapper->FillInputs(MutableRequestedFieldsForSection(section));
1341 view_->FillSection(section, *input_showing_popup_); 1334 view_->FillSection(section, input_showing_popup_type_);
1342 } 1335 }
1343 1336
1344 GetMetricLogger().LogDialogPopupEvent( 1337 GetMetricLogger().LogDialogPopupEvent(
1345 dialog_type_, AutofillMetrics::DIALOG_POPUP_FORM_FILLED); 1338 dialog_type_, AutofillMetrics::DIALOG_POPUP_FORM_FILLED);
1346 1339
1347 // TODO(estade): not sure why it's necessary to do this explicitly. 1340 // TODO(estade): not sure why it's necessary to do this explicitly.
1348 HidePopup(); 1341 HidePopup();
1349 } 1342 }
1350 1343
1351 void AutofillDialogControllerImpl::RemoveSuggestion(const string16& value, 1344 void AutofillDialogControllerImpl::RemoveSuggestion(const string16& value,
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
1641 return source_url_.SchemeIs(chrome::kHttpsScheme) && 1634 return source_url_.SchemeIs(chrome::kHttpsScheme) &&
1642 !net::IsCertStatusError(ssl_status_.cert_status) && 1635 !net::IsCertStatusError(ssl_status_.cert_status) &&
1643 !net::IsCertStatusMinorError(ssl_status_.cert_status); 1636 !net::IsCertStatusMinorError(ssl_status_.cert_status);
1644 } 1637 }
1645 1638
1646 AutofillDialogControllerImpl::AutofillDialogControllerImpl( 1639 AutofillDialogControllerImpl::AutofillDialogControllerImpl(
1647 content::WebContents* contents, 1640 content::WebContents* contents,
1648 const FormData& form_structure, 1641 const FormData& form_structure,
1649 const GURL& source_url, 1642 const GURL& source_url,
1650 const DialogType dialog_type, 1643 const DialogType dialog_type,
1651 const base::Callback<void(const FormStructure*, 1644 const base::Callback<void(const FormStructure*, const std::string&)>&
1652 const std::string&)>& callback) 1645 callback)
1653 : profile_(Profile::FromBrowserContext(contents->GetBrowserContext())), 1646 : profile_(Profile::FromBrowserContext(contents->GetBrowserContext())),
1654 contents_(contents), 1647 contents_(contents),
1655 initial_user_state_(AutofillMetrics::DIALOG_USER_STATE_UNKNOWN), 1648 initial_user_state_(AutofillMetrics::DIALOG_USER_STATE_UNKNOWN),
1656 dialog_type_(dialog_type), 1649 dialog_type_(dialog_type),
1657 form_structure_(form_structure, std::string()), 1650 form_structure_(form_structure, std::string()),
1658 invoked_from_same_origin_(true), 1651 invoked_from_same_origin_(true),
1659 source_url_(source_url), 1652 source_url_(source_url),
1660 ssl_status_(form_structure.ssl_status), 1653 ssl_status_(form_structure.ssl_status),
1661 callback_(callback), 1654 callback_(callback),
1662 account_chooser_model_(this, profile_->GetPrefs(), metric_logger_, 1655 account_chooser_model_(this,
1656 profile_->GetPrefs(),
1657 metric_logger_,
1663 dialog_type), 1658 dialog_type),
1664 wallet_client_(profile_->GetRequestContext(), this), 1659 wallet_client_(profile_->GetRequestContext(), this),
1665 suggested_email_(this), 1660 suggested_email_(this),
1666 suggested_cc_(this), 1661 suggested_cc_(this),
1667 suggested_billing_(this), 1662 suggested_billing_(this),
1668 suggested_cc_billing_(this), 1663 suggested_cc_billing_(this),
1669 suggested_shipping_(this), 1664 suggested_shipping_(this),
1670 input_showing_popup_(NULL), 1665 input_showing_popup_type_(UNKNOWN_TYPE),
1671 weak_ptr_factory_(this), 1666 weak_ptr_factory_(this),
1672 is_first_run_(!profile_->GetPrefs()->HasPrefPath( 1667 is_first_run_(!profile_->GetPrefs()->HasPrefPath(
1673 ::prefs::kAutofillDialogPayWithoutWallet)), 1668 ::prefs::kAutofillDialogPayWithoutWallet)),
1674 is_submitting_(false), 1669 is_submitting_(false),
1675 autocheckout_is_running_(false), 1670 autocheckout_is_running_(false),
1676 had_autocheckout_error_(false), 1671 had_autocheckout_error_(false),
1677 was_ui_latency_logged_(false) { 1672 was_ui_latency_logged_(false) {
1678 // TODO(estade): remove duplicates from |form_structure|? 1673 // TODO(estade): remove duplicates from |form_structure|?
1679 DCHECK(!callback_.is_null()); 1674 DCHECK(!callback_.is_null());
1680 } 1675 }
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
2001 } 1996 }
2002 1997
2003 DetailInputs* AutofillDialogControllerImpl::MutableRequestedFieldsForSection( 1998 DetailInputs* AutofillDialogControllerImpl::MutableRequestedFieldsForSection(
2004 DialogSection section) { 1999 DialogSection section) {
2005 return const_cast<DetailInputs*>(&RequestedFieldsForSection(section)); 2000 return const_cast<DetailInputs*>(&RequestedFieldsForSection(section));
2006 } 2001 }
2007 2002
2008 void AutofillDialogControllerImpl::HidePopup() { 2003 void AutofillDialogControllerImpl::HidePopup() {
2009 if (popup_controller_) 2004 if (popup_controller_)
2010 popup_controller_->Hide(); 2005 popup_controller_->Hide();
2011 input_showing_popup_ = NULL; 2006 input_showing_popup_type_ = UNKNOWN_TYPE;
2012 } 2007 }
2013 2008
2014 void AutofillDialogControllerImpl::LoadRiskFingerprintData() { 2009 void AutofillDialogControllerImpl::LoadRiskFingerprintData() {
2015 // TODO(dbeam): Add a CHECK or otherwise strong guarantee that the ToS have 2010 // TODO(dbeam): Add a CHECK or otherwise strong guarantee that the ToS have
2016 // been accepted prior to calling into this method. Also, ensure that the UI 2011 // been accepted prior to calling into this method. Also, ensure that the UI
2017 // contains a clear indication to the user as to what data will be collected. 2012 // contains a clear indication to the user as to what data will be collected.
2018 // Until then, this code should not be called. http://crbug.com/173505 2013 // Until then, this code should not be called. http://crbug.com/173505
2019 2014
2020 int64 gaia_id = 0; 2015 int64 gaia_id = 0;
2021 bool success = 2016 bool success =
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
2372 url, 2367 url,
2373 content::PAGE_TRANSITION_AUTO_BOOKMARK); 2368 content::PAGE_TRANSITION_AUTO_BOOKMARK);
2374 params.disposition = NEW_FOREGROUND_TAB; 2369 params.disposition = NEW_FOREGROUND_TAB;
2375 chrome::Navigate(&params); 2370 chrome::Navigate(&params);
2376 #else 2371 #else
2377 // TODO(estade): use TabModelList? 2372 // TODO(estade): use TabModelList?
2378 #endif 2373 #endif
2379 } 2374 }
2380 2375
2381 } // namespace autofill 2376 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698