| OLD | NEW |
| 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 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ | 5 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ |
| 6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ | 6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ |
| 7 | 7 |
| 8 #include <list> | 8 #include <list> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <string> | 10 #include <string> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/basictypes.h" | 13 #include "base/basictypes.h" |
| 14 #include "base/callback_forward.h" | 14 #include "base/callback_forward.h" |
| 15 #include "base/compiler_specific.h" | 15 #include "base/compiler_specific.h" |
| 16 #include "base/gtest_prod_util.h" | 16 #include "base/gtest_prod_util.h" |
| 17 #include "base/memory/scoped_ptr.h" | 17 #include "base/memory/scoped_ptr.h" |
| 18 #include "base/memory/scoped_vector.h" | 18 #include "base/memory/scoped_vector.h" |
| 19 #include "base/memory/weak_ptr.h" | 19 #include "base/memory/weak_ptr.h" |
| 20 #include "base/strings/string16.h" | 20 #include "base/strings/string16.h" |
| 21 #include "base/time/time.h" | 21 #include "base/time/time.h" |
| 22 #include "components/autofill/core/browser/autocomplete_history_manager.h" | 22 #include "components/autofill/core/browser/autocomplete_history_manager.h" |
| 23 #include "components/autofill/core/browser/autofill_client.h" |
| 23 #include "components/autofill/core/browser/autofill_download.h" | 24 #include "components/autofill/core/browser/autofill_download.h" |
| 24 #include "components/autofill/core/browser/autofill_driver.h" | 25 #include "components/autofill/core/browser/autofill_driver.h" |
| 25 #include "components/autofill/core/browser/autofill_manager_delegate.h" | |
| 26 #include "components/autofill/core/browser/form_structure.h" | 26 #include "components/autofill/core/browser/form_structure.h" |
| 27 #include "components/autofill/core/browser/personal_data_manager.h" | 27 #include "components/autofill/core/browser/personal_data_manager.h" |
| 28 #include "components/autofill/core/common/form_data.h" | 28 #include "components/autofill/core/common/form_data.h" |
| 29 | 29 |
| 30 class GURL; | 30 class GURL; |
| 31 | 31 |
| 32 namespace content { | 32 namespace content { |
| 33 class RenderViewHost; | 33 class RenderViewHost; |
| 34 class WebContents; | 34 class WebContents; |
| 35 } | 35 } |
| 36 | 36 |
| 37 namespace gfx { | 37 namespace gfx { |
| 38 class Rect; | 38 class Rect; |
| 39 class RectF; | 39 class RectF; |
| 40 } | 40 } |
| 41 | 41 |
| 42 namespace user_prefs { | 42 namespace user_prefs { |
| 43 class PrefRegistrySyncable; | 43 class PrefRegistrySyncable; |
| 44 } | 44 } |
| 45 | 45 |
| 46 namespace autofill { | 46 namespace autofill { |
| 47 | 47 |
| 48 class AutofillDataModel; | 48 class AutofillDataModel; |
| 49 class AutofillDownloadManager; | 49 class AutofillDownloadManager; |
| 50 class AutofillExternalDelegate; | 50 class AutofillExternalDelegate; |
| 51 class AutofillField; | 51 class AutofillField; |
| 52 class AutofillManagerDelegate; | 52 class AutofillClient; |
| 53 class AutofillManagerTestDelegate; | 53 class AutofillManagerTestDelegate; |
| 54 class AutofillMetrics; | 54 class AutofillMetrics; |
| 55 class AutofillProfile; | 55 class AutofillProfile; |
| 56 class AutofillType; | 56 class AutofillType; |
| 57 class CreditCard; | 57 class CreditCard; |
| 58 class FormStructureBrowserTest; | 58 class FormStructureBrowserTest; |
| 59 | 59 |
| 60 struct FormData; | 60 struct FormData; |
| 61 struct FormFieldData; | 61 struct FormFieldData; |
| 62 struct PasswordFormFillData; | 62 struct PasswordFormFillData; |
| 63 | 63 |
| 64 // Manages saving and restoring the user's personal information entered into web | 64 // Manages saving and restoring the user's personal information entered into web |
| 65 // forms. | 65 // forms. |
| 66 class AutofillManager : public AutofillDownloadManager::Observer { | 66 class AutofillManager : public AutofillDownloadManager::Observer { |
| 67 public: | 67 public: |
| 68 enum AutofillDownloadManagerState { | 68 enum AutofillDownloadManagerState { |
| 69 ENABLE_AUTOFILL_DOWNLOAD_MANAGER, | 69 ENABLE_AUTOFILL_DOWNLOAD_MANAGER, |
| 70 DISABLE_AUTOFILL_DOWNLOAD_MANAGER, | 70 DISABLE_AUTOFILL_DOWNLOAD_MANAGER, |
| 71 }; | 71 }; |
| 72 | 72 |
| 73 // Registers our Enable/Disable Autofill pref. | 73 // Registers our Enable/Disable Autofill pref. |
| 74 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); | 74 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); |
| 75 | 75 |
| 76 AutofillManager(AutofillDriver* driver, | 76 AutofillManager(AutofillDriver* driver, |
| 77 autofill::AutofillManagerDelegate* delegate, | 77 AutofillClient* client, |
| 78 const std::string& app_locale, | 78 const std::string& app_locale, |
| 79 AutofillDownloadManagerState enable_download_manager); | 79 AutofillDownloadManagerState enable_download_manager); |
| 80 virtual ~AutofillManager(); | 80 virtual ~AutofillManager(); |
| 81 | 81 |
| 82 // Sets an external delegate. | 82 // Sets an external delegate. |
| 83 void SetExternalDelegate(AutofillExternalDelegate* delegate); | 83 void SetExternalDelegate(AutofillExternalDelegate* delegate); |
| 84 | 84 |
| 85 void ShowAutofillSettings(); | 85 void ShowAutofillSettings(); |
| 86 | 86 |
| 87 // Called from our external delegate so they cannot be private. | 87 // Called from our external delegate so they cannot be private. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 101 // Remove the specified Autocomplete entry. | 101 // Remove the specified Autocomplete entry. |
| 102 void RemoveAutocompleteEntry(const base::string16& name, | 102 void RemoveAutocompleteEntry(const base::string16& name, |
| 103 const base::string16& value); | 103 const base::string16& value); |
| 104 | 104 |
| 105 // Returns the present form structures seen by Autofill manager. | 105 // Returns the present form structures seen by Autofill manager. |
| 106 const std::vector<FormStructure*>& GetFormStructures(); | 106 const std::vector<FormStructure*>& GetFormStructures(); |
| 107 | 107 |
| 108 // Happens when the autocomplete dialog runs its callback when being closed. | 108 // Happens when the autocomplete dialog runs its callback when being closed. |
| 109 void RequestAutocompleteDialogClosed(); | 109 void RequestAutocompleteDialogClosed(); |
| 110 | 110 |
| 111 autofill::AutofillManagerDelegate* delegate() const { | 111 AutofillClient* client() const { return client_; } |
| 112 return manager_delegate_; | |
| 113 } | |
| 114 | 112 |
| 115 const std::string& app_locale() const { return app_locale_; } | 113 const std::string& app_locale() const { return app_locale_; } |
| 116 | 114 |
| 117 // Only for testing. | 115 // Only for testing. |
| 118 void SetTestDelegate(autofill::AutofillManagerTestDelegate* delegate); | 116 void SetTestDelegate(AutofillManagerTestDelegate* delegate); |
| 119 | 117 |
| 120 void OnFormsSeen(const std::vector<FormData>& forms, | 118 void OnFormsSeen(const std::vector<FormData>& forms, |
| 121 const base::TimeTicks& timestamp); | 119 const base::TimeTicks& timestamp); |
| 122 | 120 |
| 123 // Processes the submitted |form|, saving any new Autofill data and uploading | 121 // Processes the submitted |form|, saving any new Autofill data and uploading |
| 124 // the possible field types for the submitted fields to the crowdsourcing | 122 // the possible field types for the submitted fields to the crowdsourcing |
| 125 // server. Returns false if this form is not relevant for Autofill. | 123 // server. Returns false if this form is not relevant for Autofill. |
| 126 bool OnFormSubmitted(const FormData& form, | 124 bool OnFormSubmitted(const FormData& form, |
| 127 const base::TimeTicks& timestamp); | 125 const base::TimeTicks& timestamp); |
| 128 | 126 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 153 | 151 |
| 154 // Resets cache. | 152 // Resets cache. |
| 155 virtual void Reset(); | 153 virtual void Reset(); |
| 156 | 154 |
| 157 // Returns the value of the AutofillEnabled pref. | 155 // Returns the value of the AutofillEnabled pref. |
| 158 virtual bool IsAutofillEnabled() const; | 156 virtual bool IsAutofillEnabled() const; |
| 159 | 157 |
| 160 protected: | 158 protected: |
| 161 // Test code should prefer to use this constructor. | 159 // Test code should prefer to use this constructor. |
| 162 AutofillManager(AutofillDriver* driver, | 160 AutofillManager(AutofillDriver* driver, |
| 163 autofill::AutofillManagerDelegate* delegate, | 161 AutofillClient* client, |
| 164 PersonalDataManager* personal_data); | 162 PersonalDataManager* personal_data); |
| 165 | 163 |
| 166 // Uploads the form data to the Autofill server. | 164 // Uploads the form data to the Autofill server. |
| 167 virtual void UploadFormData(const FormStructure& submitted_form); | 165 virtual void UploadFormData(const FormStructure& submitted_form); |
| 168 | 166 |
| 169 // Logs quality metrics for the |submitted_form| and uploads the form data | 167 // Logs quality metrics for the |submitted_form| and uploads the form data |
| 170 // to the crowdsourcing server, if appropriate. | 168 // to the crowdsourcing server, if appropriate. |
| 171 virtual void UploadFormDataAsyncCallback( | 169 virtual void UploadFormDataAsyncCallback( |
| 172 const FormStructure* submitted_form, | 170 const FormStructure* submitted_form, |
| 173 const base::TimeTicks& load_time, | 171 const base::TimeTicks& load_time, |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 void UpdateInitialInteractionTimestamp( | 267 void UpdateInitialInteractionTimestamp( |
| 270 const base::TimeTicks& interaction_timestamp); | 268 const base::TimeTicks& interaction_timestamp); |
| 271 | 269 |
| 272 // Shared code to determine if |form| should be uploaded. | 270 // Shared code to determine if |form| should be uploaded. |
| 273 bool ShouldUploadForm(const FormStructure& form); | 271 bool ShouldUploadForm(const FormStructure& form); |
| 274 | 272 |
| 275 // Provides driver-level context to the shared code of the component. Must | 273 // Provides driver-level context to the shared code of the component. Must |
| 276 // outlive this object. | 274 // outlive this object. |
| 277 AutofillDriver* driver_; | 275 AutofillDriver* driver_; |
| 278 | 276 |
| 279 autofill::AutofillManagerDelegate* const manager_delegate_; | 277 AutofillClient* const client_; |
| 280 | 278 |
| 281 std::string app_locale_; | 279 std::string app_locale_; |
| 282 | 280 |
| 283 // The personal data manager, used to save and load personal data to/from the | 281 // The personal data manager, used to save and load personal data to/from the |
| 284 // web database. This is overridden by the AutofillManagerTest. | 282 // web database. This is overridden by the AutofillManagerTest. |
| 285 // Weak reference. | 283 // Weak reference. |
| 286 // May be NULL. NULL indicates OTR. | 284 // May be NULL. NULL indicates OTR. |
| 287 PersonalDataManager* personal_data_; | 285 PersonalDataManager* personal_data_; |
| 288 | 286 |
| 289 std::list<std::string> autofilled_form_signatures_; | 287 std::list<std::string> autofilled_form_signatures_; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 | 319 |
| 322 // GUID to ID mapping. We keep two maps to convert back and forth. | 320 // GUID to ID mapping. We keep two maps to convert back and forth. |
| 323 mutable std::map<PersonalDataManager::GUIDPair, int> guid_id_map_; | 321 mutable std::map<PersonalDataManager::GUIDPair, int> guid_id_map_; |
| 324 mutable std::map<int, PersonalDataManager::GUIDPair> id_guid_map_; | 322 mutable std::map<int, PersonalDataManager::GUIDPair> id_guid_map_; |
| 325 | 323 |
| 326 // Delegate to perform external processing (display, selection) on | 324 // Delegate to perform external processing (display, selection) on |
| 327 // our behalf. Weak. | 325 // our behalf. Weak. |
| 328 AutofillExternalDelegate* external_delegate_; | 326 AutofillExternalDelegate* external_delegate_; |
| 329 | 327 |
| 330 // Delegate used in test to get notifications on certain events. | 328 // Delegate used in test to get notifications on certain events. |
| 331 autofill::AutofillManagerTestDelegate* test_delegate_; | 329 AutofillManagerTestDelegate* test_delegate_; |
| 332 | 330 |
| 333 base::WeakPtrFactory<AutofillManager> weak_ptr_factory_; | 331 base::WeakPtrFactory<AutofillManager> weak_ptr_factory_; |
| 334 | 332 |
| 335 friend class AutofillManagerTest; | 333 friend class AutofillManagerTest; |
| 336 friend class autofill::FormStructureBrowserTest; | 334 friend class FormStructureBrowserTest; |
| 337 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, | 335 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, |
| 338 DeterminePossibleFieldTypesForUpload); | 336 DeterminePossibleFieldTypesForUpload); |
| 339 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, | 337 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, |
| 340 DeterminePossibleFieldTypesForUploadStressTest); | 338 DeterminePossibleFieldTypesForUploadStressTest); |
| 341 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, | 339 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, |
| 342 DisabledAutofillDispatchesError); | 340 DisabledAutofillDispatchesError); |
| 343 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, AddressSuggestionsCount); | 341 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, AddressSuggestionsCount); |
| 344 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, AutofillIsEnabledAtPageLoad); | 342 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, AutofillIsEnabledAtPageLoad); |
| 345 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, DeveloperEngagement); | 343 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, DeveloperEngagement); |
| 346 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, FormFillDuration); | 344 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, FormFillDuration); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 357 UserHappinessFormLoadAndSubmission); | 355 UserHappinessFormLoadAndSubmission); |
| 358 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, UserHappinessFormInteraction); | 356 FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, UserHappinessFormInteraction); |
| 359 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, | 357 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, |
| 360 FormSubmittedAutocompleteEnabled); | 358 FormSubmittedAutocompleteEnabled); |
| 361 DISALLOW_COPY_AND_ASSIGN(AutofillManager); | 359 DISALLOW_COPY_AND_ASSIGN(AutofillManager); |
| 362 }; | 360 }; |
| 363 | 361 |
| 364 } // namespace autofill | 362 } // namespace autofill |
| 365 | 363 |
| 366 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ | 364 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ |
| OLD | NEW |