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

Side by Side Diff: components/autofill/browser/autofill_manager.cc

Issue 13488009: Remove application locale cache in autofill code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: sync Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "components/autofill/browser/autofill_manager.h" 5 #include "components/autofill/browser/autofill_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <limits> 9 #include <limits>
10 #include <map> 10 #include <map>
11 #include <set> 11 #include <set>
12 #include <utility> 12 #include <utility>
13 13
14 #include "base/bind.h" 14 #include "base/bind.h"
15 #include "base/command_line.h" 15 #include "base/command_line.h"
16 #include "base/guid.h" 16 #include "base/guid.h"
17 #include "base/logging.h" 17 #include "base/logging.h"
18 #include "base/prefs/pref_service.h" 18 #include "base/prefs/pref_service.h"
19 #include "base/string16.h" 19 #include "base/string16.h"
20 #include "base/string_util.h" 20 #include "base/string_util.h"
21 #include "base/threading/sequenced_worker_pool.h" 21 #include "base/threading/sequenced_worker_pool.h"
22 #include "base/utf_string_conversions.h" 22 #include "base/utf_string_conversions.h"
23 #include "components/autofill/browser/autocheckout/whitelist_manager.h" 23 #include "components/autofill/browser/autocheckout/whitelist_manager.h"
24 #include "components/autofill/browser/autocheckout_manager.h" 24 #include "components/autofill/browser/autocheckout_manager.h"
25 #include "components/autofill/browser/autocomplete_history_manager.h" 25 #include "components/autofill/browser/autocomplete_history_manager.h"
26 #include "components/autofill/browser/autofill_country.h"
27 #include "components/autofill/browser/autofill_external_delegate.h" 26 #include "components/autofill/browser/autofill_external_delegate.h"
28 #include "components/autofill/browser/autofill_field.h" 27 #include "components/autofill/browser/autofill_field.h"
29 #include "components/autofill/browser/autofill_manager_delegate.h" 28 #include "components/autofill/browser/autofill_manager_delegate.h"
30 #include "components/autofill/browser/autofill_manager_test_delegate.h" 29 #include "components/autofill/browser/autofill_manager_test_delegate.h"
31 #include "components/autofill/browser/autofill_metrics.h" 30 #include "components/autofill/browser/autofill_metrics.h"
32 #include "components/autofill/browser/autofill_profile.h" 31 #include "components/autofill/browser/autofill_profile.h"
33 #include "components/autofill/browser/autofill_type.h" 32 #include "components/autofill/browser/autofill_type.h"
34 #include "components/autofill/browser/credit_card.h" 33 #include "components/autofill/browser/credit_card.h"
35 #include "components/autofill/browser/form_structure.h" 34 #include "components/autofill/browser/form_structure.h"
36 #include "components/autofill/browser/password_generator.h" 35 #include "components/autofill/browser/password_generator.h"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 164
166 field->set_possible_types(matching_types); 165 field->set_possible_types(matching_types);
167 } 166 }
168 } 167 }
169 168
170 } // namespace 169 } // namespace
171 170
172 // static 171 // static
173 void AutofillManager::CreateForWebContentsAndDelegate( 172 void AutofillManager::CreateForWebContentsAndDelegate(
174 content::WebContents* contents, 173 content::WebContents* contents,
175 autofill::AutofillManagerDelegate* delegate) { 174 autofill::AutofillManagerDelegate* delegate,
175 const std::string& app_locale) {
176 if (FromWebContents(contents)) 176 if (FromWebContents(contents))
177 return; 177 return;
178 178
179 contents->SetUserData(kAutofillManagerWebContentsUserDataKey, 179 contents->SetUserData(kAutofillManagerWebContentsUserDataKey,
180 new AutofillManager(contents, delegate)); 180 new AutofillManager(contents, delegate, app_locale));
181 181
182 // Trigger the lazy creation of AutocheckoutWhitelistManagerService, and 182 // Trigger the lazy creation of AutocheckoutWhitelistManagerService, and
183 // schedule a fetch of the Autocheckout whitelist file if it's not already 183 // schedule a fetch of the Autocheckout whitelist file if it's not already
184 // loaded. This helps ensure that the whitelist will be available by the time 184 // loaded. This helps ensure that the whitelist will be available by the time
185 // the user navigates to a form on which Autocheckout should be enabled. 185 // the user navigates to a form on which Autocheckout should be enabled.
186 delegate->GetAutocheckoutWhitelistManager(); 186 delegate->GetAutocheckoutWhitelistManager();
187 } 187 }
188 188
189 // static 189 // static
190 AutofillManager* AutofillManager::FromWebContents( 190 AutofillManager* AutofillManager::FromWebContents(
191 content::WebContents* contents) { 191 content::WebContents* contents) {
192 return static_cast<AutofillManager*>( 192 return static_cast<AutofillManager*>(
193 contents->GetUserData(kAutofillManagerWebContentsUserDataKey)); 193 contents->GetUserData(kAutofillManagerWebContentsUserDataKey));
194 } 194 }
195 195
196 AutofillManager::AutofillManager(content::WebContents* web_contents, 196 AutofillManager::AutofillManager(content::WebContents* web_contents,
197 autofill::AutofillManagerDelegate* delegate) 197 autofill::AutofillManagerDelegate* delegate,
198 const std::string& app_locale)
198 : content::WebContentsObserver(web_contents), 199 : content::WebContentsObserver(web_contents),
199 manager_delegate_(delegate), 200 manager_delegate_(delegate),
201 app_locale_(app_locale),
200 personal_data_(delegate->GetPersonalDataManager()), 202 personal_data_(delegate->GetPersonalDataManager()),
201 download_manager_(web_contents->GetBrowserContext(), this), 203 download_manager_(web_contents->GetBrowserContext(), this),
202 disable_download_manager_requests_(false), 204 disable_download_manager_requests_(false),
203 autocomplete_history_manager_(web_contents), 205 autocomplete_history_manager_(web_contents),
204 autocheckout_manager_(this), 206 autocheckout_manager_(this),
205 metric_logger_(new AutofillMetrics), 207 metric_logger_(new AutofillMetrics),
206 has_logged_autofill_enabled_(false), 208 has_logged_autofill_enabled_(false),
207 has_logged_address_suggestions_count_(false), 209 has_logged_address_suggestions_count_(false),
208 did_show_suggestions_(false), 210 did_show_suggestions_(false),
209 user_did_type_(false), 211 user_did_type_(false),
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 } 428 }
427 429
428 // Note that ownership of |submitted_form| is passed to the second task, 430 // Note that ownership of |submitted_form| is passed to the second task,
429 // using |base::Owned|. 431 // using |base::Owned|.
430 FormStructure* raw_submitted_form = submitted_form.get(); 432 FormStructure* raw_submitted_form = submitted_form.get();
431 BrowserThread::GetBlockingPool()->PostTaskAndReply( 433 BrowserThread::GetBlockingPool()->PostTaskAndReply(
432 FROM_HERE, 434 FROM_HERE,
433 base::Bind(&DeterminePossibleFieldTypesForUpload, 435 base::Bind(&DeterminePossibleFieldTypesForUpload,
434 copied_profiles, 436 copied_profiles,
435 copied_credit_cards, 437 copied_credit_cards,
436 AutofillCountry::ApplicationLocale(), 438 app_locale_,
437 raw_submitted_form), 439 raw_submitted_form),
438 base::Bind(&AutofillManager::UploadFormDataAsyncCallback, 440 base::Bind(&AutofillManager::UploadFormDataAsyncCallback,
439 weak_ptr_factory_.GetWeakPtr(), 441 weak_ptr_factory_.GetWeakPtr(),
440 base::Owned(submitted_form.release()), 442 base::Owned(submitted_form.release()),
441 forms_loaded_timestamp_, 443 forms_loaded_timestamp_,
442 initial_interaction_timestamp_, 444 initial_interaction_timestamp_,
443 timestamp)); 445 timestamp));
444 } 446 }
445 447
446 return true; 448 return true;
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 DCHECK(autofill_field); 624 DCHECK(autofill_field);
623 625
624 FormData result = form; 626 FormData result = form;
625 627
626 // If the relevant section is auto-filled, we should fill |field| but not the 628 // If the relevant section is auto-filled, we should fill |field| but not the
627 // rest of the form. 629 // rest of the form.
628 if (SectionIsAutofilled(*form_structure, form, autofill_field->section())) { 630 if (SectionIsAutofilled(*form_structure, form, autofill_field->section())) {
629 for (std::vector<FormFieldData>::iterator iter = result.fields.begin(); 631 for (std::vector<FormFieldData>::iterator iter = result.fields.begin();
630 iter != result.fields.end(); ++iter) { 632 iter != result.fields.end(); ++iter) {
631 if ((*iter) == field) { 633 if ((*iter) == field) {
632 form_group->FillFormField(*autofill_field, variant, &(*iter)); 634 form_group->FillFormField(
635 *autofill_field, variant, app_locale_, &(*iter));
633 // Mark the cached field as autofilled, so that we can detect when a 636 // Mark the cached field as autofilled, so that we can detect when a
634 // user edits an autofilled field (for metrics). 637 // user edits an autofilled field (for metrics).
635 autofill_field->is_autofilled = true; 638 autofill_field->is_autofilled = true;
636 break; 639 break;
637 } 640 }
638 } 641 }
639 642
640 host->Send(new AutofillMsg_FormDataFilled(host->GetRoutingID(), query_id, 643 host->Send(new AutofillMsg_FormDataFilled(host->GetRoutingID(), query_id,
641 result)); 644 result));
642 return; 645 return;
(...skipping 18 matching lines...) Expand all
661 // (b) part of the same logical unit, e.g. name or phone number, 664 // (b) part of the same logical unit, e.g. name or phone number,
662 // then take the multi-profile "variant" into account. 665 // then take the multi-profile "variant" into account.
663 // Otherwise fill with the default (zeroth) variant. 666 // Otherwise fill with the default (zeroth) variant.
664 size_t use_variant = 0; 667 size_t use_variant = 0;
665 if (result.fields[i] == field || 668 if (result.fields[i] == field ||
666 field_group_type == initiating_group_type) { 669 field_group_type == initiating_group_type) {
667 use_variant = variant; 670 use_variant = variant;
668 } 671 }
669 form_group->FillFormField(*cached_field, 672 form_group->FillFormField(*cached_field,
670 use_variant, 673 use_variant,
674 app_locale_,
671 &result.fields[i]); 675 &result.fields[i]);
672 // Mark the cached field as autofilled, so that we can detect when a user 676 // Mark the cached field as autofilled, so that we can detect when a user
673 // edits an autofilled field (for metrics). 677 // edits an autofilled field (for metrics).
674 form_structure->field(i)->is_autofilled = true; 678 form_structure->field(i)->is_autofilled = true;
675 } 679 }
676 } 680 }
677 681
678 autofilled_form_signatures_.push_front(form_structure->FormSignature()); 682 autofilled_form_signatures_.push_front(form_structure->FormSignature());
679 // Only remember the last few forms that we've seen, both to avoid false 683 // Only remember the last few forms that we've seen, both to avoid false
680 // positives and to avoid wasting memory. 684 // positives and to avoid wasting memory.
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 1003
1000 if (external_delegate_) 1004 if (external_delegate_)
1001 external_delegate_->Reset(); 1005 external_delegate_->Reset();
1002 } 1006 }
1003 1007
1004 AutofillManager::AutofillManager(content::WebContents* web_contents, 1008 AutofillManager::AutofillManager(content::WebContents* web_contents,
1005 autofill::AutofillManagerDelegate* delegate, 1009 autofill::AutofillManagerDelegate* delegate,
1006 PersonalDataManager* personal_data) 1010 PersonalDataManager* personal_data)
1007 : content::WebContentsObserver(web_contents), 1011 : content::WebContentsObserver(web_contents),
1008 manager_delegate_(delegate), 1012 manager_delegate_(delegate),
1013 app_locale_("en-US"),
1009 personal_data_(personal_data), 1014 personal_data_(personal_data),
1010 download_manager_(web_contents->GetBrowserContext(), this), 1015 download_manager_(web_contents->GetBrowserContext(), this),
1011 disable_download_manager_requests_(true), 1016 disable_download_manager_requests_(true),
1012 autocomplete_history_manager_(web_contents), 1017 autocomplete_history_manager_(web_contents),
1013 autocheckout_manager_(this), 1018 autocheckout_manager_(this),
1014 metric_logger_(new AutofillMetrics), 1019 metric_logger_(new AutofillMetrics),
1015 has_logged_autofill_enabled_(false), 1020 has_logged_autofill_enabled_(false),
1016 has_logged_address_suggestions_count_(false), 1021 has_logged_address_suggestions_count_(false),
1017 did_show_suggestions_(false), 1022 did_show_suggestions_(false),
1018 user_did_type_(false), 1023 user_did_type_(false),
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
1332 *profile_guid = IDToGUID(profile_id); 1337 *profile_guid = IDToGUID(profile_id);
1333 } 1338 }
1334 1339
1335 void AutofillManager::UpdateInitialInteractionTimestamp( 1340 void AutofillManager::UpdateInitialInteractionTimestamp(
1336 const TimeTicks& interaction_timestamp) { 1341 const TimeTicks& interaction_timestamp) {
1337 if (initial_interaction_timestamp_.is_null() || 1342 if (initial_interaction_timestamp_.is_null() ||
1338 interaction_timestamp < initial_interaction_timestamp_) { 1343 interaction_timestamp < initial_interaction_timestamp_) {
1339 initial_interaction_timestamp_ = interaction_timestamp; 1344 initial_interaction_timestamp_ = interaction_timestamp;
1340 } 1345 }
1341 } 1346 }
OLDNEW
« no previous file with comments | « components/autofill/browser/autofill_manager.h ('k') | components/autofill/browser/autofill_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698