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 // Chromium settings and storage represent user-selected preferences and | 5 // Chromium settings and storage represent user-selected preferences and |
6 // information and MUST not be extracted, overwritten or modified except | 6 // information and MUST not be extracted, overwritten or modified except |
7 // through Chromium defined APIs. | 7 // through Chromium defined APIs. |
8 | 8 |
9 #ifndef CHROME_BROWSER_WEBDATA_WEB_DATA_SERVICE_H__ | 9 #ifndef CHROME_BROWSER_WEBDATA_WEB_DATA_SERVICE_H__ |
10 #define CHROME_BROWSER_WEBDATA_WEB_DATA_SERVICE_H__ | 10 #define CHROME_BROWSER_WEBDATA_WEB_DATA_SERVICE_H__ |
11 | 11 |
12 #include <map> | 12 #include <map> |
13 #include <string> | 13 #include <string> |
14 #include <vector> | 14 #include <vector> |
15 | 15 |
16 #include "base/callback_forward.h" | 16 #include "base/callback_forward.h" |
17 #include "base/files/file_path.h" | 17 #include "base/files/file_path.h" |
18 #include "base/location.h" | 18 #include "base/location.h" |
19 #include "base/memory/ref_counted.h" | 19 #include "base/memory/ref_counted.h" |
20 #include "base/sequenced_task_runner_helpers.h" | 20 #include "base/sequenced_task_runner_helpers.h" |
21 #include "chrome/browser/api/webdata/autofill_web_data_service.h" | |
22 #include "chrome/browser/api/webdata/web_data_results.h" | 21 #include "chrome/browser/api/webdata/web_data_results.h" |
23 #include "chrome/browser/api/webdata/web_data_service_base.h" | 22 #include "chrome/browser/api/webdata/web_data_service_base.h" |
24 #include "chrome/browser/api/webdata/web_data_service_consumer.h" | 23 #include "chrome/browser/api/webdata/web_data_service_consumer.h" |
25 #include "chrome/browser/search_engines/template_url.h" | 24 #include "chrome/browser/search_engines/template_url.h" |
26 #include "chrome/browser/search_engines/template_url_id.h" | 25 #include "chrome/browser/search_engines/template_url_id.h" |
27 #include "chrome/browser/webdata/keyword_table.h" | 26 #include "chrome/browser/webdata/keyword_table.h" |
28 #include "chrome/browser/webdata/web_database.h" | 27 #include "chrome/browser/webdata/web_database.h" |
29 | 28 |
30 class AutocompleteSyncableService; | |
31 class AutofillChange; | |
32 class AutofillProfileSyncableService; | |
33 struct DefaultWebIntentService; | 29 struct DefaultWebIntentService; |
34 class GURL; | 30 class GURL; |
35 #if defined(OS_WIN) | 31 #if defined(OS_WIN) |
36 struct IE7PasswordInfo; | 32 struct IE7PasswordInfo; |
37 #endif | 33 #endif |
38 class MessageLoop; | 34 class MessageLoop; |
39 class Profile; | 35 class Profile; |
40 class SkBitmap; | 36 class SkBitmap; |
41 class WebDatabaseService; | 37 class WebDatabaseService; |
42 | 38 |
(...skipping 18 matching lines...) Expand all Loading... |
61 // | 57 // |
62 //////////////////////////////////////////////////////////////////////////////// | 58 //////////////////////////////////////////////////////////////////////////////// |
63 | 59 |
64 | 60 |
65 //////////////////////////////////////////////////////////////////////////////// | 61 //////////////////////////////////////////////////////////////////////////////// |
66 // | 62 // |
67 // WebDataService results | 63 // WebDataService results |
68 // | 64 // |
69 //////////////////////////////////////////////////////////////////////////////// | 65 //////////////////////////////////////////////////////////////////////////////// |
70 | 66 |
71 typedef std::vector<AutofillChange> AutofillChangeList; | |
72 | |
73 typedef base::Callback<scoped_ptr<WDTypedResult>(void)> ResultTask; | 67 typedef base::Callback<scoped_ptr<WDTypedResult>(void)> ResultTask; |
74 | 68 |
75 // Result from GetWebAppImages. | 69 // Result from GetWebAppImages. |
76 struct WDAppImagesResult { | 70 struct WDAppImagesResult { |
77 WDAppImagesResult(); | 71 WDAppImagesResult(); |
78 ~WDAppImagesResult(); | 72 ~WDAppImagesResult(); |
79 | 73 |
80 // True if SetWebAppHasAllImages(true) was invoked. | 74 // True if SetWebAppHasAllImages(true) was invoked. |
81 bool has_all_images; | 75 bool has_all_images; |
82 | 76 |
83 // The images, may be empty. | 77 // The images, may be empty. |
84 std::vector<SkBitmap> images; | 78 std::vector<SkBitmap> images; |
85 }; | 79 }; |
86 | 80 |
87 struct WDKeywordsResult { | 81 struct WDKeywordsResult { |
88 WDKeywordsResult(); | 82 WDKeywordsResult(); |
89 ~WDKeywordsResult(); | 83 ~WDKeywordsResult(); |
90 | 84 |
91 KeywordTable::Keywords keywords; | 85 KeywordTable::Keywords keywords; |
92 // Identifies the ID of the TemplateURL that is the default search. A value of | 86 // Identifies the ID of the TemplateURL that is the default search. A value of |
93 // 0 indicates there is no default search provider. | 87 // 0 indicates there is no default search provider. |
94 int64 default_search_provider_id; | 88 int64 default_search_provider_id; |
95 // Version of the built-in keywords. A value of 0 indicates a first run. | 89 // Version of the built-in keywords. A value of 0 indicates a first run. |
96 int builtin_keyword_version; | 90 int builtin_keyword_version; |
97 }; | 91 }; |
98 | 92 |
99 class WebDataServiceConsumer; | 93 class WebDataServiceConsumer; |
100 | 94 |
101 class WebDataService | 95 class WebDataService : public WebDataServiceBase { |
102 : public WebDataServiceBase, | |
103 public AutofillWebData { | |
104 public: | 96 public: |
105 // Retrieve a WebDataService for the given context. | 97 // Retrieve a WebDataService for the given context. |
106 static scoped_refptr<WebDataService> FromBrowserContext( | 98 static scoped_refptr<WebDataService> FromBrowserContext( |
107 content::BrowserContext* context); | 99 content::BrowserContext* context); |
108 | 100 |
109 WebDataService(scoped_refptr<WebDatabaseService> wdbs, | 101 WebDataService(scoped_refptr<WebDatabaseService> wdbs, |
110 const ProfileErrorCallback& callback); | 102 const ProfileErrorCallback& callback); |
111 | 103 |
112 // Notifies listeners on the UI thread that multiple changes have been made to | |
113 // to Autofill records of the database. | |
114 // NOTE: This method is intended to be called from the DB thread. It | |
115 // it asynchronously notifies listeners on the UI thread. | |
116 // |web_data_service| may be NULL for testing purposes. | |
117 static void NotifyOfMultipleAutofillChanges(WebDataService* web_data_service); | |
118 | |
119 ////////////////////////////////////////////////////////////////////////////// | 104 ////////////////////////////////////////////////////////////////////////////// |
120 // | 105 // |
121 // Keywords | 106 // Keywords |
122 // | 107 // |
123 ////////////////////////////////////////////////////////////////////////////// | 108 ////////////////////////////////////////////////////////////////////////////// |
124 | 109 |
125 // As the database processes requests at a later date, all deletion is | 110 // As the database processes requests at a later date, all deletion is |
126 // done on the background thread. | 111 // done on the background thread. |
127 // | 112 // |
128 // Many of the keyword related methods do not return a handle. This is because | 113 // Many of the keyword related methods do not return a handle. This is because |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 void RemoveIE7Login(const IE7PasswordInfo& info); | 226 void RemoveIE7Login(const IE7PasswordInfo& info); |
242 | 227 |
243 // Get the login matching the information in |info|. |consumer| will be | 228 // Get the login matching the information in |info|. |consumer| will be |
244 // notified when the request is done. The result is of type | 229 // notified when the request is done. The result is of type |
245 // WDResult<IE7PasswordInfo>. | 230 // WDResult<IE7PasswordInfo>. |
246 // If there is no match, the fields of the IE7PasswordInfo will be empty. | 231 // If there is no match, the fields of the IE7PasswordInfo will be empty. |
247 Handle GetIE7Login(const IE7PasswordInfo& info, | 232 Handle GetIE7Login(const IE7PasswordInfo& info, |
248 WebDataServiceConsumer* consumer); | 233 WebDataServiceConsumer* consumer); |
249 #endif // defined(OS_WIN) | 234 #endif // defined(OS_WIN) |
250 | 235 |
251 ////////////////////////////////////////////////////////////////////////////// | |
252 // | |
253 // Autofill. | |
254 // | |
255 ////////////////////////////////////////////////////////////////////////////// | |
256 | |
257 // AutofillWebData implementation. | |
258 virtual void AddFormFields( | |
259 const std::vector<FormFieldData>& fields) OVERRIDE; | |
260 virtual Handle GetFormValuesForElementName( | |
261 const string16& name, | |
262 const string16& prefix, | |
263 int limit, | |
264 WebDataServiceConsumer* consumer) OVERRIDE; | |
265 virtual void RemoveExpiredFormElements() OVERRIDE; | |
266 virtual void RemoveFormValueForElementName(const string16& name, | |
267 const string16& value) OVERRIDE; | |
268 virtual void AddAutofillProfile(const AutofillProfile& profile) OVERRIDE; | |
269 virtual void UpdateAutofillProfile(const AutofillProfile& profile) OVERRIDE; | |
270 virtual void RemoveAutofillProfile(const std::string& guid) OVERRIDE; | |
271 virtual Handle GetAutofillProfiles(WebDataServiceConsumer* consumer) OVERRIDE; | |
272 virtual void AddCreditCard(const CreditCard& credit_card) OVERRIDE; | |
273 virtual void UpdateCreditCard(const CreditCard& credit_card) OVERRIDE; | |
274 virtual void RemoveCreditCard(const std::string& guid) OVERRIDE; | |
275 virtual Handle GetCreditCards(WebDataServiceConsumer* consumer) OVERRIDE; | |
276 | |
277 // Removes Autofill records from the database. | |
278 void RemoveAutofillProfilesAndCreditCardsModifiedBetween( | |
279 const base::Time& delete_begin, | |
280 const base::Time& delete_end); | |
281 | |
282 // Removes form elements recorded for Autocomplete from the database. | |
283 void RemoveFormElementsAddedBetween(const base::Time& delete_begin, | |
284 const base::Time& delete_end); | |
285 | |
286 protected: | 236 protected: |
287 // TODO(caitkp): We probably don't need these anymore. | |
288 friend class TemplateURLServiceTest; | |
289 friend class TemplateURLServiceTestingProfile; | |
290 friend class WebDataServiceTest; | |
291 friend class WebDataRequest; | |
292 | |
293 // For unit tests, passes a null callback. | 237 // For unit tests, passes a null callback. |
294 WebDataService(); | 238 WebDataService(); |
295 | 239 |
296 virtual ~WebDataService(); | 240 virtual ~WebDataService(); |
297 | 241 |
298 private: | 242 private: |
299 ////////////////////////////////////////////////////////////////////////////// | 243 ////////////////////////////////////////////////////////////////////////////// |
300 // | 244 // |
301 // The following methods are only invoked on the DB thread. | 245 // The following methods are only invoked on the DB thread. |
302 // | 246 // |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 // | 319 // |
376 ////////////////////////////////////////////////////////////////////////////// | 320 ////////////////////////////////////////////////////////////////////////////// |
377 WebDatabase::State AddIE7LoginImpl( | 321 WebDatabase::State AddIE7LoginImpl( |
378 const IE7PasswordInfo& info, WebDatabase* db); | 322 const IE7PasswordInfo& info, WebDatabase* db); |
379 WebDatabase::State RemoveIE7LoginImpl( | 323 WebDatabase::State RemoveIE7LoginImpl( |
380 const IE7PasswordInfo& info, WebDatabase* db); | 324 const IE7PasswordInfo& info, WebDatabase* db); |
381 scoped_ptr<WDTypedResult> GetIE7LoginImpl( | 325 scoped_ptr<WDTypedResult> GetIE7LoginImpl( |
382 const IE7PasswordInfo& info, WebDatabase* db); | 326 const IE7PasswordInfo& info, WebDatabase* db); |
383 #endif // defined(OS_WIN) | 327 #endif // defined(OS_WIN) |
384 | 328 |
385 ////////////////////////////////////////////////////////////////////////////// | |
386 // | |
387 // Autofill. | |
388 // | |
389 ////////////////////////////////////////////////////////////////////////////// | |
390 WebDatabase::State AddFormElementsImpl( | |
391 const std::vector<FormFieldData>& fields, WebDatabase* db); | |
392 scoped_ptr<WDTypedResult> GetFormValuesForElementNameImpl( | |
393 const string16& name, const string16& prefix, int limit, WebDatabase* db); | |
394 WebDatabase::State RemoveFormElementsAddedBetweenImpl( | |
395 const base::Time& delete_begin, const base::Time& delete_end, | |
396 WebDatabase* db); | |
397 WebDatabase::State RemoveExpiredFormElementsImpl(WebDatabase* db); | |
398 WebDatabase::State RemoveFormValueForElementNameImpl( | |
399 const string16& name, const string16& value, WebDatabase* db); | |
400 WebDatabase::State AddAutofillProfileImpl( | |
401 const AutofillProfile& profile, WebDatabase* db); | |
402 WebDatabase::State UpdateAutofillProfileImpl( | |
403 const AutofillProfile& profile, WebDatabase* db); | |
404 WebDatabase::State RemoveAutofillProfileImpl( | |
405 const std::string& guid, WebDatabase* db); | |
406 scoped_ptr<WDTypedResult> GetAutofillProfilesImpl(WebDatabase* db); | |
407 WebDatabase::State AddCreditCardImpl( | |
408 const CreditCard& credit_card, WebDatabase* db); | |
409 WebDatabase::State UpdateCreditCardImpl( | |
410 const CreditCard& credit_card, WebDatabase* db); | |
411 WebDatabase::State RemoveCreditCardImpl( | |
412 const std::string& guid, WebDatabase* db); | |
413 scoped_ptr<WDTypedResult> GetCreditCardsImpl(WebDatabase* db); | |
414 WebDatabase::State RemoveAutofillProfilesAndCreditCardsModifiedBetweenImpl( | |
415 const base::Time& delete_begin, const base::Time& delete_end, | |
416 WebDatabase* db); | |
417 | |
418 // Callbacks to ensure that sensitive info is destroyed if request is | |
419 // cancelled. | |
420 void DestroyAutofillProfileResult(const WDTypedResult* result); | |
421 void DestroyAutofillCreditCardResult(const WDTypedResult* result); | |
422 | |
423 DISALLOW_COPY_AND_ASSIGN(WebDataService); | 329 DISALLOW_COPY_AND_ASSIGN(WebDataService); |
424 }; | 330 }; |
425 | 331 |
426 #endif // CHROME_BROWSER_WEBDATA_WEB_DATA_SERVICE_H__ | 332 #endif // CHROME_BROWSER_WEBDATA_WEB_DATA_SERVICE_H__ |
OLD | NEW |