Index: components/webdata/common/web_database_service.h |
diff --git a/components/webdata/common/web_database_service.h b/components/webdata/common/web_database_service.h |
index 624660d0d88f914d71168f897c9dd3c9107bee31..1bdfca8504edc317b12d9360a1082f07262fc8f3 100644 |
--- a/components/webdata/common/web_database_service.h |
+++ b/components/webdata/common/web_database_service.h |
@@ -15,6 +15,8 @@ |
#include "base/files/file_path.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/memory/weak_ptr.h" |
+#include "base/observer_list.h" |
#include "components/webdata/common/web_data_service_base.h" |
#include "components/webdata/common/web_database.h" |
#include "components/webdata/common/webdata_export.h" |
@@ -49,7 +51,6 @@ class WEBDATA_EXPORT WebDatabaseService |
public: |
typedef base::Callback<scoped_ptr<WDTypedResult>(WebDatabase*)> ReadTask; |
typedef base::Callback<WebDatabase::State(WebDatabase*)> WriteTask; |
- typedef base::Callback<void(sql::InitStatus)> InitCallback; |
// Takes the path to the WebDatabase file. |
explicit WebDatabaseService(const base::FilePath& path); |
@@ -61,7 +62,7 @@ class WEBDATA_EXPORT WebDatabaseService |
// Initializes the web database service. Takes a callback which will return |
// the status of the DB after the init. |
- virtual void LoadDatabase(const InitCallback& callback); |
+ virtual void LoadDatabase(); |
// Unloads the database without actually shutting down the service. This can |
// be used to temporarily reduce the browser process' memory footprint. |
@@ -90,21 +91,33 @@ class WEBDATA_EXPORT WebDatabaseService |
// somewhere else. |
virtual void CancelRequest(WebDataServiceBase::Handle h); |
+ void AddObserver(WebDatabaseObserver* observer); |
+ void RemoveObserver(WebDatabaseObserver* observer); |
+ |
private: |
+ class BackendDelegate; |
friend struct content::BrowserThread::DeleteOnThread< |
content::BrowserThread::UI>; |
friend class base::DeleteHelper<WebDatabaseService>; |
// We have to friend RCTS<> so WIN shared-lib build is happy (crbug/112250). |
friend class base::RefCountedThreadSafe<WebDatabaseService, |
content::BrowserThread::DeleteOnUIThread>; |
+ friend class BackendDelegate; |
virtual ~WebDatabaseService(); |
+ void OnDatabaseLoadDone(sql::InitStatus status); |
+ |
base::FilePath path_; |
// The primary owner is |WebDatabaseService| but is refcounted because |
// PostTask on DB thread may outlive us. |
scoped_refptr<WebDataServiceBackend> wds_backend_; |
+ |
+ ObserverList<WebDatabaseObserver> observer_list_; |
+ |
+ // All vended weak pointers are invalidated in ShutdownDatabase(). |
+ base::WeakPtrFactory<WebDatabaseService> weak_ptr_factory_; |
}; |
#endif // COMPONENTS_WEBDATA_COMMON_WEB_DATABASE_SERVICE_H_ |