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

Unified Diff: components/webdata/common/web_database_service.h

Issue 14103021: Use Observer to notify of WebDB load instead of callbacks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix WIN builds Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
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_
« no previous file with comments | « components/webdata/common/web_database_observer.h ('k') | components/webdata/common/web_database_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698