Commit 5dde1490 authored by michaeln@google.com's avatar michaeln@google.com

Take 2, base::Bind cleanup in SimpleDatabaseSystem

Review URL: http://codereview.chromium.org/8510036

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109943 0039d316-1c4b-4281-b951-d872f2087c98
parent b9616d59
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
#include "webkit/support/simple_database_system.h" #include "webkit/support/simple_database_system.h"
#include "base/auto_reset.h" #include "base/auto_reset.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/file_util.h" #include "base/file_util.h"
#include "base/message_loop.h" #include "base/message_loop.h"
#include "base/message_loop_proxy.h" #include "base/message_loop_proxy.h"
...@@ -45,9 +47,10 @@ SimpleDatabaseSystem::SimpleDatabaseSystem() ...@@ -45,9 +47,10 @@ SimpleDatabaseSystem::SimpleDatabaseSystem()
SimpleDatabaseSystem::~SimpleDatabaseSystem() { SimpleDatabaseSystem::~SimpleDatabaseSystem() {
base::WaitableEvent done_event(false, false); base::WaitableEvent done_event(false, false);
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::ThreadCleanup, FROM_HERE,
&done_event)); base::Bind(&SimpleDatabaseSystem::ThreadCleanup,
base::Unretained(this), &done_event));
done_event.Wait(); done_event.Wait();
instance_ = NULL; instance_ = NULL;
} }
...@@ -56,37 +59,44 @@ void SimpleDatabaseSystem::databaseOpened(const WebKit::WebDatabase& database) { ...@@ -56,37 +59,44 @@ void SimpleDatabaseSystem::databaseOpened(const WebKit::WebDatabase& database) {
string16 origin_identifier = database.securityOrigin().databaseIdentifier(); string16 origin_identifier = database.securityOrigin().databaseIdentifier();
string16 database_name = database.name(); string16 database_name = database.name();
open_connections_->AddOpenConnection(origin_identifier, database_name); open_connections_->AddOpenConnection(origin_identifier, database_name);
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::DatabaseOpened, FROM_HERE,
origin_identifier, base::Bind(&SimpleDatabaseSystem::DatabaseOpened,
database_name, database.displayName(), base::Unretained(this),
database.estimatedSize())); origin_identifier,
database_name, database.displayName(),
database.estimatedSize()));
} }
void SimpleDatabaseSystem::databaseModified( void SimpleDatabaseSystem::databaseModified(
const WebKit::WebDatabase& database) { const WebKit::WebDatabase& database) {
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::DatabaseModified, FROM_HERE,
database.securityOrigin().databaseIdentifier(), base::Bind(&SimpleDatabaseSystem::DatabaseModified,
database.name())); base::Unretained(this),
database.securityOrigin().databaseIdentifier(),
database.name()));
} }
void SimpleDatabaseSystem::databaseClosed(const WebKit::WebDatabase& database) { void SimpleDatabaseSystem::databaseClosed(const WebKit::WebDatabase& database) {
string16 origin_identifier = database.securityOrigin().databaseIdentifier(); string16 origin_identifier = database.securityOrigin().databaseIdentifier();
string16 database_name = database.name(); string16 database_name = database.name();
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::DatabaseClosed, FROM_HERE,
origin_identifier, database_name)); base::Bind(&SimpleDatabaseSystem::DatabaseClosed,
base::Unretained(this), origin_identifier, database_name));
} }
base::PlatformFile SimpleDatabaseSystem::OpenFile( base::PlatformFile SimpleDatabaseSystem::OpenFile(
const string16& vfs_file_name, int desired_flags) { const string16& vfs_file_name, int desired_flags) {
base::PlatformFile result = base::kInvalidPlatformFileValue; base::PlatformFile result = base::kInvalidPlatformFileValue;
base::WaitableEvent done_event(false, false); base::WaitableEvent done_event(false, false);
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::VfsOpenFile, FROM_HERE,
vfs_file_name, desired_flags, base::Bind(&SimpleDatabaseSystem::VfsOpenFile,
&result, &done_event)); base::Unretained(this),
vfs_file_name, desired_flags,
&result, &done_event));
done_event.Wait(); done_event.Wait();
return result; return result;
} }
...@@ -95,10 +105,12 @@ int SimpleDatabaseSystem::DeleteFile( ...@@ -95,10 +105,12 @@ int SimpleDatabaseSystem::DeleteFile(
const string16& vfs_file_name, bool sync_dir) { const string16& vfs_file_name, bool sync_dir) {
int result = SQLITE_OK; int result = SQLITE_OK;
base::WaitableEvent done_event(false, false); base::WaitableEvent done_event(false, false);
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::VfsDeleteFile, FROM_HERE,
vfs_file_name, sync_dir, base::Bind(&SimpleDatabaseSystem::VfsDeleteFile,
&result, &done_event)); base::Unretained(this),
vfs_file_name, sync_dir,
&result, &done_event));
done_event.Wait(); done_event.Wait();
return result; return result;
} }
...@@ -106,9 +118,10 @@ int SimpleDatabaseSystem::DeleteFile( ...@@ -106,9 +118,10 @@ int SimpleDatabaseSystem::DeleteFile(
uint32 SimpleDatabaseSystem::GetFileAttributes(const string16& vfs_file_name) { uint32 SimpleDatabaseSystem::GetFileAttributes(const string16& vfs_file_name) {
uint32 result = 0; uint32 result = 0;
base::WaitableEvent done_event(false, false); base::WaitableEvent done_event(false, false);
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::VfsGetFileAttributes, FROM_HERE,
vfs_file_name, &result, &done_event)); base::Bind(&SimpleDatabaseSystem::VfsGetFileAttributes,
base::Unretained(this), vfs_file_name, &result, &done_event));
done_event.Wait(); done_event.Wait();
return result; return result;
} }
...@@ -116,9 +129,10 @@ uint32 SimpleDatabaseSystem::GetFileAttributes(const string16& vfs_file_name) { ...@@ -116,9 +129,10 @@ uint32 SimpleDatabaseSystem::GetFileAttributes(const string16& vfs_file_name) {
int64 SimpleDatabaseSystem::GetFileSize(const string16& vfs_file_name) { int64 SimpleDatabaseSystem::GetFileSize(const string16& vfs_file_name) {
int64 result = 0; int64 result = 0;
base::WaitableEvent done_event(false, false); base::WaitableEvent done_event(false, false);
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::VfsGetFileSize, FROM_HERE,
vfs_file_name, &result, &done_event)); base::Bind(&SimpleDatabaseSystem::VfsGetFileSize,
base::Unretained(this), vfs_file_name, &result, &done_event));
done_event.Wait(); done_event.Wait();
return result; return result;
} }
...@@ -127,24 +141,28 @@ int64 SimpleDatabaseSystem::GetSpaceAvailable( ...@@ -127,24 +141,28 @@ int64 SimpleDatabaseSystem::GetSpaceAvailable(
const string16& origin_identifier) { const string16& origin_identifier) {
int64 result = 0; int64 result = 0;
base::WaitableEvent done_event(false, false); base::WaitableEvent done_event(false, false);
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::VfsGetSpaceAvailable, FROM_HERE,
origin_identifier, &result, &done_event)); base::Bind(&SimpleDatabaseSystem::VfsGetSpaceAvailable,
base::Unretained(this), origin_identifier,
&result, &done_event));
done_event.Wait(); done_event.Wait();
return result; return result;
} }
void SimpleDatabaseSystem::ClearAllDatabases() { void SimpleDatabaseSystem::ClearAllDatabases() {
open_connections_->WaitForAllDatabasesToClose(); open_connections_->WaitForAllDatabasesToClose();
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::ResetTracker)); FROM_HERE,
base::Bind(&SimpleDatabaseSystem::ResetTracker, base::Unretained(this)));
} }
void SimpleDatabaseSystem::SetDatabaseQuota(int64 quota) { void SimpleDatabaseSystem::SetDatabaseQuota(int64 quota) {
if (!db_thread_proxy_->BelongsToCurrentThread()) { if (!db_thread_proxy_->BelongsToCurrentThread()) {
db_thread_proxy_->PostTask(FROM_HERE, db_thread_proxy_->PostTask(
NewRunnableMethod(this, &SimpleDatabaseSystem::SetDatabaseQuota, FROM_HERE,
quota)); base::Bind(&SimpleDatabaseSystem::SetDatabaseQuota,
base::Unretained(this), quota));
return; return;
} }
quota_per_origin_ = quota; quota_per_origin_ = quota;
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include "base/scoped_temp_dir.h" #include "base/scoped_temp_dir.h"
#include "base/string16.h" #include "base/string16.h"
#include "base/synchronization/lock.h" #include "base/synchronization/lock.h"
#include "base/task.h"
#include "base/threading/thread.h" #include "base/threading/thread.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabaseObserver.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabaseObserver.h"
#include "webkit/database/database_connections.h" #include "webkit/database/database_connections.h"
...@@ -101,6 +100,4 @@ class SimpleDatabaseSystem : public webkit_database::DatabaseTracker::Observer, ...@@ -101,6 +100,4 @@ class SimpleDatabaseSystem : public webkit_database::DatabaseTracker::Observer,
static SimpleDatabaseSystem* instance_; static SimpleDatabaseSystem* instance_;
}; };
DISABLE_RUNNABLE_METHOD_REFCOUNT(SimpleDatabaseSystem);
#endif // WEBKIT_SUPPORT_SIMPLE_DATABASE_SYSTEM_H_ #endif // WEBKIT_SUPPORT_SIMPLE_DATABASE_SYSTEM_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment