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

Side by Side Diff: chrome/browser/webdata/web_data_service.h

Issue 12851008: Create a common base class for all the webdatas (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Override base methods so AutofillWebData properly delegates to WDS Created 7 years, 9 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 // 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 "base/synchronization/lock.h" 21 #include "base/synchronization/lock.h"
22 #include "chrome/browser/api/webdata/autofill_web_data_service.h" 22 #include "chrome/browser/api/webdata/autofill_web_data_service.h"
23 #include "chrome/browser/api/webdata/web_data_results.h" 23 #include "chrome/browser/api/webdata/web_data_results.h"
24 #include "chrome/browser/api/webdata/web_data_service_base.h" 24 #include "chrome/browser/api/webdata/web_data_service_base.h"
25 #include "chrome/browser/api/webdata/web_data_service_consumer.h" 25 #include "chrome/browser/api/webdata/web_data_service_consumer.h"
26 #include "chrome/browser/search_engines/template_url.h" 26 #include "chrome/browser/search_engines/template_url.h"
27 #include "chrome/browser/search_engines/template_url_id.h" 27 #include "chrome/browser/search_engines/template_url_id.h"
28 #include "chrome/browser/webdata/keyword_table.h" 28 #include "chrome/browser/webdata/keyword_table.h"
29 #include "chrome/browser/webdata/web_data_request_manager.h"
30 #include "chrome/browser/webdata/web_database.h" 29 #include "chrome/browser/webdata/web_database.h"
31 #include "content/public/browser/browser_thread.h"
32 #include "sql/init_status.h"
33 30
34 class AutocompleteSyncableService; 31 class AutocompleteSyncableService;
35 class AutofillChange; 32 class AutofillChange;
36 class AutofillProfileSyncableService; 33 class AutofillProfileSyncableService;
37 struct DefaultWebIntentService; 34 struct DefaultWebIntentService;
38 class GURL; 35 class GURL;
39 #if defined(OS_WIN) 36 #if defined(OS_WIN)
40 struct IE7PasswordInfo; 37 struct IE7PasswordInfo;
41 #endif 38 #endif
42 class MessageLoop; 39 class MessageLoop;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 // Identifies the ID of the TemplateURL that is the default search. A value of 93 // Identifies the ID of the TemplateURL that is the default search. A value of
97 // 0 indicates there is no default search provider. 94 // 0 indicates there is no default search provider.
98 int64 default_search_provider_id; 95 int64 default_search_provider_id;
99 // Version of the built-in keywords. A value of 0 indicates a first run. 96 // Version of the built-in keywords. A value of 0 indicates a first run.
100 int builtin_keyword_version; 97 int builtin_keyword_version;
101 }; 98 };
102 99
103 class WebDataServiceConsumer; 100 class WebDataServiceConsumer;
104 101
105 class WebDataService 102 class WebDataService
106 : public base::RefCountedThreadSafe<WebDataService, 103 : public WebDataServiceBase,
107 content::BrowserThread::DeleteOnUIThread>,
108 public WebDataServiceBase,
109 public AutofillWebData { 104 public AutofillWebData {
110 public: 105 public:
111 // Retrieve a WebDataService for the given context. 106 // Retrieve a WebDataService for the given context.
112 static scoped_refptr<WebDataService> FromBrowserContext( 107 static scoped_refptr<WebDataService> FromBrowserContext(
113 content::BrowserContext* context); 108 content::BrowserContext* context);
114 109
115 WebDataService(); 110 WebDataService();
116 111
117 // WebDataServiceBase implementation. 112 // WebDataServiceBase implementation.
118 virtual void CancelRequest(Handle h) OVERRIDE; 113 virtual void ShutdownOnUIThread() OVERRIDE;
119 virtual content::NotificationSource GetNotificationSource() OVERRIDE; 114 virtual void Init(const base::FilePath& path) OVERRIDE;
120 115
121 // Notifies listeners on the UI thread that multiple changes have been made to 116 // Notifies listeners on the UI thread that multiple changes have been made to
122 // to Autofill records of the database. 117 // to Autofill records of the database.
123 // NOTE: This method is intended to be called from the DB thread. It 118 // NOTE: This method is intended to be called from the DB thread. It
124 // it asynchronously notifies listeners on the UI thread. 119 // it asynchronously notifies listeners on the UI thread.
125 // |web_data_service| may be NULL for testing purposes. 120 // |web_data_service| may be NULL for testing purposes.
126 static void NotifyOfMultipleAutofillChanges(WebDataService* web_data_service); 121 static void NotifyOfMultipleAutofillChanges(WebDataService* web_data_service);
127 122
128 // Shutdown the web data service. The service can no longer be used after this
129 // call.
130 void ShutdownOnUIThread();
131 123
132 // Initializes the web data service.
133 void Init(const base::FilePath& path);
134
135 // Unloads the database without actually shutting down the service. This can
136 // be used to temporarily reduce the browser process' memory footprint.
137 void UnloadDatabase();
138
139 // Unloads the database permanently and shuts down service.
140 void ShutdownDatabase();
141
142 // Returns true if the database load has completetd successfully, and
143 // ShutdownOnUIThread has not yet been called.
144 virtual bool IsDatabaseLoaded();
145
146 // Returns a pointer to the DB (used by SyncableServices). May return NULL if
147 // the database is not loaded or otherwise unavailable. Must be called on
148 // DBThread.
149 virtual WebDatabase* GetDatabase();
150 124
151 ////////////////////////////////////////////////////////////////////////////// 125 //////////////////////////////////////////////////////////////////////////////
152 // 126 //
153 // Keywords 127 // Keywords
154 // 128 //
155 ////////////////////////////////////////////////////////////////////////////// 129 //////////////////////////////////////////////////////////////////////////////
156 130
157 // As the database processes requests at a later date, all deletion is 131 // As the database processes requests at a later date, all deletion is
158 // done on the background thread. 132 // done on the background thread.
159 // 133 //
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 // in this table. The returned service is owned by |this| object. 293 // in this table. The returned service is owned by |this| object.
320 virtual AutofillProfileSyncableService* 294 virtual AutofillProfileSyncableService*
321 GetAutofillProfileSyncableService() const; 295 GetAutofillProfileSyncableService() const;
322 296
323 // Returns the syncable service for field autocomplete stored in this table. 297 // Returns the syncable service for field autocomplete stored in this table.
324 // The returned service is owned by |this| object. 298 // The returned service is owned by |this| object.
325 virtual AutocompleteSyncableService* 299 virtual AutocompleteSyncableService*
326 GetAutocompleteSyncableService() const; 300 GetAutocompleteSyncableService() const;
327 301
328 protected: 302 protected:
303 // TODO (caitkp): We probably don't need these anymore.
Jói 2013/03/18 20:02:17 I think the standard format is to not add a space
Cait (Slow) 2013/03/18 22:06:27 Done.
329 friend class TemplateURLServiceTest; 304 friend class TemplateURLServiceTest;
330 friend class TemplateURLServiceTestingProfile; 305 friend class TemplateURLServiceTestingProfile;
331 friend class WebDataServiceTest; 306 friend class WebDataServiceTest;
332 friend class WebDataRequest; 307 friend class WebDataRequest;
333 308
334 virtual ~WebDataService(); 309 virtual ~WebDataService();
335 310
336 ////////////////////////////////////////////////////////////////////////////// 311 //////////////////////////////////////////////////////////////////////////////
337 // 312 //
338 // The following methods are only invoked in the web data service thread. 313 // The following methods are only invoked in the web data service thread.
339 // 314 //
340 ////////////////////////////////////////////////////////////////////////////// 315 //////////////////////////////////////////////////////////////////////////////
341 private: 316 private:
342 friend struct content::BrowserThread::DeleteOnThread<
343 content::BrowserThread::UI>;
344 friend class base::DeleteHelper<WebDataService>;
345
346 // Initialize any syncable services. 317 // Initialize any syncable services.
347 void InitializeSyncableServices(); 318 void InitializeSyncableServices();
348 319
349 // Deletes the syncable services. 320 // Deletes the syncable services.
350 void ShutdownSyncableServices(); 321 void ShutdownSyncableServices();
351 322
352 void DBInitFailed(sql::InitStatus sql_status);
353 void NotifyDatabaseLoadedOnUIThread();
354 void DatabaseInitOnDB(sql::InitStatus status);
355
356 ////////////////////////////////////////////////////////////////////////////// 323 //////////////////////////////////////////////////////////////////////////////
357 // 324 //
358 // Keywords. 325 // Keywords.
359 // 326 //
360 ////////////////////////////////////////////////////////////////////////////// 327 //////////////////////////////////////////////////////////////////////////////
361 WebDatabase::State AddKeywordImpl( 328 WebDatabase::State AddKeywordImpl(
362 const TemplateURLData& data, WebDatabase* db); 329 const TemplateURLData& data, WebDatabase* db);
363 WebDatabase::State RemoveKeywordImpl( 330 WebDatabase::State RemoveKeywordImpl(
364 TemplateURLID id, WebDatabase* db); 331 TemplateURLID id, WebDatabase* db);
365 WebDatabase::State UpdateKeywordImpl( 332 WebDatabase::State UpdateKeywordImpl(
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 scoped_ptr<WDTypedResult> GetCreditCardsImpl(WebDatabase* db); 431 scoped_ptr<WDTypedResult> GetCreditCardsImpl(WebDatabase* db);
465 WebDatabase::State RemoveAutofillProfilesAndCreditCardsModifiedBetweenImpl( 432 WebDatabase::State RemoveAutofillProfilesAndCreditCardsModifiedBetweenImpl(
466 const base::Time& delete_begin, const base::Time& delete_end, 433 const base::Time& delete_begin, const base::Time& delete_end,
467 WebDatabase* db); 434 WebDatabase* db);
468 435
469 // Callbacks to ensure that sensitive info is destroyed if request is 436 // Callbacks to ensure that sensitive info is destroyed if request is
470 // cancelled. 437 // cancelled.
471 void DestroyAutofillProfileResult(const WDTypedResult* result); 438 void DestroyAutofillProfileResult(const WDTypedResult* result);
472 void DestroyAutofillCreditCardResult(const WDTypedResult* result); 439 void DestroyAutofillCreditCardResult(const WDTypedResult* result);
473 440
474 // Our database service.
475 scoped_ptr<WebDatabaseService> wdbs_;
476
477 // True if we've received a notification that the WebDatabase has loaded.
478 bool db_loaded_;
479
480 // Syncable services for the database data. We own the services, but don't 441 // Syncable services for the database data. We own the services, but don't
481 // use |scoped_ptr|s because the lifetimes must be managed on the database 442 // use |scoped_ptr|s because the lifetimes must be managed on the database
482 // thread. 443 // thread.
483 // Currently only Autocomplete and Autofill profiles use the new Sync API, but 444 // Currently only Autocomplete and Autofill profiles use the new Sync API, but
484 // all the database data should migrate to this API over time. 445 // all the database data should migrate to this API over time.
485 AutocompleteSyncableService* autocomplete_syncable_service_; 446 AutocompleteSyncableService* autocomplete_syncable_service_;
486 AutofillProfileSyncableService* autofill_profile_syncable_service_; 447 AutofillProfileSyncableService* autofill_profile_syncable_service_;
487 448
488 DISALLOW_COPY_AND_ASSIGN(WebDataService); 449 DISALLOW_COPY_AND_ASSIGN(WebDataService);
489 }; 450 };
490 451
491 #endif // CHROME_BROWSER_WEBDATA_WEB_DATA_SERVICE_H__ 452 #endif // CHROME_BROWSER_WEBDATA_WEB_DATA_SERVICE_H__
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698