| 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_WEBDATA_AUTOFILL_WEBDATA_SERVICE_H_ | 5 #ifndef COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_SERVICE_H_ |
| 6 #define COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_SERVICE_H_ | 6 #define COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_SERVICE_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
| 11 #include "base/observer_list.h" | 11 #include "base/observer_list.h" |
| 12 #include "base/supports_user_data.h" |
| 12 #include "components/autofill/browser/webdata/autofill_webdata.h" | 13 #include "components/autofill/browser/webdata/autofill_webdata.h" |
| 13 #include "components/autofill/common/form_field_data.h" | 14 #include "components/autofill/common/form_field_data.h" |
| 14 #include "components/webdata/common/web_data_results.h" | 15 #include "components/webdata/common/web_data_results.h" |
| 15 #include "components/webdata/common/web_data_service_base.h" | 16 #include "components/webdata/common/web_data_service_base.h" |
| 16 #include "components/webdata/common/web_data_service_consumer.h" | 17 #include "components/webdata/common/web_data_service_consumer.h" |
| 17 #include "components/webdata/common/web_database.h" | 18 #include "components/webdata/common/web_database.h" |
| 18 | 19 |
| 19 class WebDatabaseService; | 20 class WebDatabaseService; |
| 20 | 21 |
| 21 namespace content { | 22 namespace content { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 45 content::BrowserContext* context); | 46 content::BrowserContext* context); |
| 46 | 47 |
| 47 // Notifies listeners on the UI thread that multiple changes have been made to | 48 // Notifies listeners on the UI thread that multiple changes have been made to |
| 48 // to Autofill records of the database. | 49 // to Autofill records of the database. |
| 49 // NOTE: This method is intended to be called from the DB thread. It | 50 // NOTE: This method is intended to be called from the DB thread. It |
| 50 // it asynchronously notifies listeners on the UI thread. | 51 // it asynchronously notifies listeners on the UI thread. |
| 51 // |web_data_service| may be NULL for testing purposes. | 52 // |web_data_service| may be NULL for testing purposes. |
| 52 static void NotifyOfMultipleAutofillChanges( | 53 static void NotifyOfMultipleAutofillChanges( |
| 53 AutofillWebDataService* web_data_service); | 54 AutofillWebDataService* web_data_service); |
| 54 | 55 |
| 56 // WebDataServiceBase implementation. |
| 57 virtual void ShutdownOnUIThread() OVERRIDE; |
| 58 |
| 55 // AutofillWebData implementation. | 59 // AutofillWebData implementation. |
| 56 virtual void AddFormFields( | 60 virtual void AddFormFields( |
| 57 const std::vector<FormFieldData>& fields) OVERRIDE; | 61 const std::vector<FormFieldData>& fields) OVERRIDE; |
| 58 virtual WebDataServiceBase::Handle GetFormValuesForElementName( | 62 virtual WebDataServiceBase::Handle GetFormValuesForElementName( |
| 59 const base::string16& name, | 63 const base::string16& name, |
| 60 const base::string16& prefix, | 64 const base::string16& prefix, |
| 61 int limit, | 65 int limit, |
| 62 WebDataServiceConsumer* consumer) OVERRIDE; | 66 WebDataServiceConsumer* consumer) OVERRIDE; |
| 63 virtual void RemoveFormElementsAddedBetween( | 67 virtual void RemoveFormElementsAddedBetween( |
| 64 const base::Time& delete_begin, const base::Time& delete_end) OVERRIDE; | 68 const base::Time& delete_begin, const base::Time& delete_end) OVERRIDE; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 78 WebDataServiceConsumer* consumer) OVERRIDE; | 82 WebDataServiceConsumer* consumer) OVERRIDE; |
| 79 virtual void RemoveAutofillDataModifiedBetween( | 83 virtual void RemoveAutofillDataModifiedBetween( |
| 80 const base::Time& delete_begin, const base::Time& delete_end) OVERRIDE; | 84 const base::Time& delete_begin, const base::Time& delete_end) OVERRIDE; |
| 81 | 85 |
| 82 void AddObserver(AutofillWebDataServiceObserverOnDBThread* observer); | 86 void AddObserver(AutofillWebDataServiceObserverOnDBThread* observer); |
| 83 void RemoveObserver(AutofillWebDataServiceObserverOnDBThread* observer); | 87 void RemoveObserver(AutofillWebDataServiceObserverOnDBThread* observer); |
| 84 | 88 |
| 85 void AddObserver(AutofillWebDataServiceObserverOnUIThread* observer); | 89 void AddObserver(AutofillWebDataServiceObserverOnUIThread* observer); |
| 86 void RemoveObserver(AutofillWebDataServiceObserverOnUIThread* observer); | 90 void RemoveObserver(AutofillWebDataServiceObserverOnUIThread* observer); |
| 87 | 91 |
| 92 // Returns a SupportsUserData objects that may be used to store data |
| 93 // owned by the DB thread on this object. Should be called only from |
| 94 // the DB thread, and will be destroyed on the DB thread soon after |
| 95 // |ShutdownOnUIThread()| is called. |
| 96 base::SupportsUserData* GetDBUserData(); |
| 97 |
| 88 protected: | 98 protected: |
| 89 virtual ~AutofillWebDataService(); | 99 virtual ~AutofillWebDataService(); |
| 90 | 100 |
| 101 virtual void ShutdownOnDBThread(); |
| 102 |
| 91 private: | 103 private: |
| 92 WebDatabase::State AddFormElementsImpl( | 104 WebDatabase::State AddFormElementsImpl( |
| 93 const std::vector<FormFieldData>& fields, WebDatabase* db); | 105 const std::vector<FormFieldData>& fields, WebDatabase* db); |
| 94 scoped_ptr<WDTypedResult> GetFormValuesForElementNameImpl( | 106 scoped_ptr<WDTypedResult> GetFormValuesForElementNameImpl( |
| 95 const base::string16& name, const base::string16& prefix, int limit, | 107 const base::string16& name, const base::string16& prefix, int limit, |
| 96 WebDatabase* db); | 108 WebDatabase* db); |
| 97 WebDatabase::State RemoveFormElementsAddedBetweenImpl( | 109 WebDatabase::State RemoveFormElementsAddedBetweenImpl( |
| 98 const base::Time& delete_begin, const base::Time& delete_end, | 110 const base::Time& delete_begin, const base::Time& delete_end, |
| 99 WebDatabase* db); | 111 WebDatabase* db); |
| 100 WebDatabase::State RemoveExpiredFormElementsImpl(WebDatabase* db); | 112 WebDatabase::State RemoveExpiredFormElementsImpl(WebDatabase* db); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 118 const base::Time& delete_begin, const base::Time& delete_end, | 130 const base::Time& delete_begin, const base::Time& delete_end, |
| 119 WebDatabase* db); | 131 WebDatabase* db); |
| 120 | 132 |
| 121 // Callbacks to ensure that sensitive info is destroyed if request is | 133 // Callbacks to ensure that sensitive info is destroyed if request is |
| 122 // cancelled. | 134 // cancelled. |
| 123 void DestroyAutofillProfileResult(const WDTypedResult* result); | 135 void DestroyAutofillProfileResult(const WDTypedResult* result); |
| 124 void DestroyAutofillCreditCardResult(const WDTypedResult* result); | 136 void DestroyAutofillCreditCardResult(const WDTypedResult* result); |
| 125 | 137 |
| 126 void NotifyAutofillMultipleChangedOnUIThread(); | 138 void NotifyAutofillMultipleChangedOnUIThread(); |
| 127 | 139 |
| 140 // This makes the destructor public, and thus allows us to aggregate |
| 141 // SupportsUserData. It is private by default to prevent incorrect |
| 142 // usage in class hierarchies where it is inherited by |
| 143 // reference-counted objects. |
| 144 class SupportsUserDataAggregatable : public base::SupportsUserData { |
| 145 public: |
| 146 SupportsUserDataAggregatable() {} |
| 147 virtual ~SupportsUserDataAggregatable() {} |
| 148 private: |
| 149 DISALLOW_COPY_AND_ASSIGN(SupportsUserDataAggregatable); |
| 150 }; |
| 151 |
| 152 // Storage for user data to be accessed only on the DB thread. May |
| 153 // be used e.g. for SyncableService subclasses that need to be owned |
| 154 // by this object. Is created on first call to |GetDBUserData()|. |
| 155 scoped_ptr<SupportsUserDataAggregatable> db_thread_user_data_; |
| 156 |
| 128 ObserverList<AutofillWebDataServiceObserverOnDBThread> db_observer_list_; | 157 ObserverList<AutofillWebDataServiceObserverOnDBThread> db_observer_list_; |
| 129 ObserverList<AutofillWebDataServiceObserverOnUIThread> ui_observer_list_; | 158 ObserverList<AutofillWebDataServiceObserverOnUIThread> ui_observer_list_; |
| 130 | 159 |
| 131 DISALLOW_COPY_AND_ASSIGN(AutofillWebDataService); | 160 DISALLOW_COPY_AND_ASSIGN(AutofillWebDataService); |
| 132 }; | 161 }; |
| 133 | 162 |
| 134 } // namespace autofill | 163 } // namespace autofill |
| 135 | 164 |
| 136 #endif // COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_SERVICE_H_ | 165 #endif // COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_SERVICE_H_ |
| OLD | NEW |