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

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

Issue 15927029: Replace WebDatabaseObserver with callbacks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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.cc
diff --git a/components/webdata/common/web_database_service.cc b/components/webdata/common/web_database_service.cc
index a1b18895e84c0f788c884b8a7231e78f7319a7fb..313707301ac5cb676266d85bc15ab65237d5e89b 100644
--- a/components/webdata/common/web_database_service.cc
+++ b/components/webdata/common/web_database_service.cc
@@ -40,7 +40,8 @@ class WebDatabaseService::BackendDelegate :
WebDatabaseService::WebDatabaseService(
const base::FilePath& path)
: path_(path),
- weak_ptr_factory_(this) {
+ weak_ptr_factory_(this),
+ db_loaded_(false) {
// WebDatabaseService should be instantiated on UI thread.
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// WebDatabaseService requires DB thread if instantiated.
@@ -68,6 +69,7 @@ void WebDatabaseService::LoadDatabase() {
}
void WebDatabaseService::UnloadDatabase() {
+ db_loaded_ = false;
if (!wds_backend_.get())
return;
BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
@@ -76,6 +78,7 @@ void WebDatabaseService::UnloadDatabase() {
}
void WebDatabaseService::ShutdownDatabase() {
+ db_loaded_ = false;
if (!wds_backend_.get())
return;
weak_ptr_factory_.InvalidateWeakPtrs();
@@ -140,24 +143,29 @@ void WebDatabaseService::CancelRequest(WebDataServiceBase::Handle h) {
wds_backend_->request_manager()->CancelRequest(h);
}
-void WebDatabaseService::AddObserver(WebDatabaseObserver* observer) {
- observer_list_.AddObserver(observer);
+void WebDatabaseService::RegisterDBLoadedCallback(
+ const base::Callback<void(void)>& callback) {
+ pending_callbacks_.push_back(callback);
Cait (Slow) 2013/06/05 19:14:48 I'm wondering if I should handle callbacks added p
Jói 2013/06/06 11:37:17 I think just documenting is sufficient.
}
-void WebDatabaseService::RemoveObserver(WebDatabaseObserver* observer) {
- observer_list_.RemoveObserver(observer);
+void WebDatabaseService::RegisterDBErrorCallback(
+ const base::Callback<void(sql::InitStatus)>& callback) {
+ error_callbacks_.push_back(callback);
}
void WebDatabaseService::OnDatabaseLoadDone(sql::InitStatus status) {
if (status == sql::INIT_OK) {
- // Notify that the database has been initialized.
- FOR_EACH_OBSERVER(WebDatabaseObserver,
- observer_list_,
- WebDatabaseLoaded());
+ db_loaded_ = true;
+
+ for (size_t i = 0; i < pending_callbacks_.size(); i++)
+ pending_callbacks_[i].Run();
+
+ pending_callbacks_.clear();
} else {
// Notify that the database load failed.
- FOR_EACH_OBSERVER(WebDatabaseObserver,
- observer_list_,
- WebDatabaseLoadFailed(status));
+ for (size_t i = 0; i < error_callbacks_.size(); i++)
+ error_callbacks_[i].Run(status);
+
+ error_callbacks_.clear();
}
}

Powered by Google App Engine
This is Rietveld 408576698