| OLD | NEW |
| 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 #ifndef COMPONENTS_AUTOFILL_BROWSER_PERSONAL_DATA_MANAGER_H_ | 5 #ifndef COMPONENTS_AUTOFILL_BROWSER_PERSONAL_DATA_MANAGER_H_ |
| 6 #define COMPONENTS_AUTOFILL_BROWSER_PERSONAL_DATA_MANAGER_H_ | 6 #define COMPONENTS_AUTOFILL_BROWSER_PERSONAL_DATA_MANAGER_H_ |
| 7 | 7 |
| 8 #include <set> | 8 #include <set> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 // Handles loading and saving Autofill profile information to the web database. | 35 // Handles loading and saving Autofill profile information to the web database. |
| 36 // This class also stores the profiles loaded from the database for use during | 36 // This class also stores the profiles loaded from the database for use during |
| 37 // Autofill. | 37 // Autofill. |
| 38 class PersonalDataManager : public WebDataServiceConsumer, | 38 class PersonalDataManager : public WebDataServiceConsumer, |
| 39 public AutofillWebDataServiceObserverOnUIThread { | 39 public AutofillWebDataServiceObserverOnUIThread { |
| 40 public: | 40 public: |
| 41 // A pair of GUID and variant index. Represents a single FormGroup and a | 41 // A pair of GUID and variant index. Represents a single FormGroup and a |
| 42 // specific data variant. | 42 // specific data variant. |
| 43 typedef std::pair<std::string, size_t> GUIDPair; | 43 typedef std::pair<std::string, size_t> GUIDPair; |
| 44 | 44 |
| 45 PersonalDataManager(); | 45 explicit PersonalDataManager(const std::string& app_locale); |
| 46 virtual ~PersonalDataManager(); | 46 virtual ~PersonalDataManager(); |
| 47 | 47 |
| 48 // Kicks off asynchronous loading of profiles and credit cards. | 48 // Kicks off asynchronous loading of profiles and credit cards. |
| 49 void Init(content::BrowserContext* context); | 49 void Init(content::BrowserContext* context); |
| 50 | 50 |
| 51 // WebDataServiceConsumer: | 51 // WebDataServiceConsumer: |
| 52 virtual void OnWebDataServiceRequestDone( | 52 virtual void OnWebDataServiceRequestDone( |
| 53 WebDataServiceBase::Handle h, | 53 WebDataServiceBase::Handle h, |
| 54 const WDTypedResult* result) OVERRIDE; | 54 const WDTypedResult* result) OVERRIDE; |
| 55 | 55 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 // Re-loads profiles and credit cards from the WebDatabase asynchronously. | 145 // Re-loads profiles and credit cards from the WebDatabase asynchronously. |
| 146 // In the general case, this is a no-op and will re-create the same | 146 // In the general case, this is a no-op and will re-create the same |
| 147 // in-memory model as existed prior to the call. If any change occurred to | 147 // in-memory model as existed prior to the call. If any change occurred to |
| 148 // profiles in the WebDatabase directly, as is the case if the browser sync | 148 // profiles in the WebDatabase directly, as is the case if the browser sync |
| 149 // engine processed a change from the cloud, we will learn of these as a | 149 // engine processed a change from the cloud, we will learn of these as a |
| 150 // result of this call. | 150 // result of this call. |
| 151 // | 151 // |
| 152 // Also see SetProfile for more details. | 152 // Also see SetProfile for more details. |
| 153 virtual void Refresh(); | 153 virtual void Refresh(); |
| 154 | 154 |
| 155 const std::string& app_locale() const { return app_locale_; } |
| 156 |
| 155 // Checks suitability of |profile| for adding to the user's set of profiles. | 157 // Checks suitability of |profile| for adding to the user's set of profiles. |
| 156 static bool IsValidLearnableProfile(const AutofillProfile& profile); | 158 static bool IsValidLearnableProfile(const AutofillProfile& profile, |
| 159 const std::string& app_locale); |
| 157 | 160 |
| 158 // Merges |profile| into one of the |existing_profiles| if possible; otherwise | 161 // Merges |profile| into one of the |existing_profiles| if possible; otherwise |
| 159 // appends |profile| to the end of that list. Fills |merged_profiles| with the | 162 // appends |profile| to the end of that list. Fills |merged_profiles| with the |
| 160 // result. | 163 // result. |
| 161 static bool MergeProfile( | 164 static bool MergeProfile( |
| 162 const AutofillProfile& profile, | 165 const AutofillProfile& profile, |
| 163 const std::vector<AutofillProfile*>& existing_profiles, | 166 const std::vector<AutofillProfile*>& existing_profiles, |
| 167 const std::string& app_locale, |
| 164 std::vector<AutofillProfile>* merged_profiles); | 168 std::vector<AutofillProfile>* merged_profiles); |
| 165 | 169 |
| 166 protected: | 170 protected: |
| 167 // Only PersonalDataManagerFactory and certain tests can create instances of | 171 // Only PersonalDataManagerFactory and certain tests can create instances of |
| 168 // PersonalDataManager. | 172 // PersonalDataManager. |
| 169 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, FirstMiddleLast); | 173 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, FirstMiddleLast); |
| 170 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, AutofillIsEnabledAtStartup); | 174 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, AutofillIsEnabledAtStartup); |
| 171 FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest, | 175 FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest, |
| 172 AggregateExistingAuxiliaryProfile); | 176 AggregateExistingAuxiliaryProfile); |
| 173 friend class AutofillTest; | 177 friend class AutofillTest; |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 // is queried on another thread, we record the query handle until we | 258 // is queried on another thread, we record the query handle until we |
| 255 // get called back. We store handles for both profile and credit card queries | 259 // get called back. We store handles for both profile and credit card queries |
| 256 // so they can be loaded at the same time. | 260 // so they can be loaded at the same time. |
| 257 WebDataServiceBase::Handle pending_profiles_query_; | 261 WebDataServiceBase::Handle pending_profiles_query_; |
| 258 WebDataServiceBase::Handle pending_creditcards_query_; | 262 WebDataServiceBase::Handle pending_creditcards_query_; |
| 259 | 263 |
| 260 // The observers. | 264 // The observers. |
| 261 ObserverList<PersonalDataManagerObserver> observers_; | 265 ObserverList<PersonalDataManagerObserver> observers_; |
| 262 | 266 |
| 263 private: | 267 private: |
| 268 std::string app_locale_; |
| 264 | 269 |
| 265 // For logging UMA metrics. Overridden by metrics tests. | 270 // For logging UMA metrics. Overridden by metrics tests. |
| 266 scoped_ptr<const AutofillMetrics> metric_logger_; | 271 scoped_ptr<const AutofillMetrics> metric_logger_; |
| 267 | 272 |
| 268 // Whether we have already logged the number of profiles this session. | 273 // Whether we have already logged the number of profiles this session. |
| 269 mutable bool has_logged_profile_count_; | 274 mutable bool has_logged_profile_count_; |
| 270 | 275 |
| 271 DISALLOW_COPY_AND_ASSIGN(PersonalDataManager); | 276 DISALLOW_COPY_AND_ASSIGN(PersonalDataManager); |
| 272 }; | 277 }; |
| 273 | 278 |
| 274 #endif // COMPONENTS_AUTOFILL_BROWSER_PERSONAL_DATA_MANAGER_H_ | 279 #endif // COMPONENTS_AUTOFILL_BROWSER_PERSONAL_DATA_MANAGER_H_ |
| OLD | NEW |