Index: third_party/WebKit/Source/modules/webdatabase/Database.cpp |
diff --git a/third_party/WebKit/Source/modules/webdatabase/Database.cpp b/third_party/WebKit/Source/modules/webdatabase/Database.cpp |
index 192a48a100239e3fe349f4b61290440a9bcfb7bc..2d3bf3ce7806f7c9d57f31d38054c594efe83b03 100644 |
--- a/third_party/WebKit/Source/modules/webdatabase/Database.cpp |
+++ b/third_party/WebKit/Source/modules/webdatabase/Database.cpp |
@@ -92,9 +92,14 @@ namespace blink { |
// Defines static local variable after making sure that guid lock is held. |
// (We can't use DEFINE_STATIC_LOCAL for this because it asserts thread |
// safety, which is externally guaranteed by the guideMutex lock) |
+#if DCHECK_IS_ON() |
+#define DEFINE_STATIC_LOCAL_WITH_LOCK(type, name, arguments) \ |
+ DCHECK(GuidMutex().Locked()); \ |
+ static type& name = *new type arguments |
+#else |
#define DEFINE_STATIC_LOCAL_WITH_LOCK(type, name, arguments) \ |
- ASSERT(GuidMutex().Locked()); \ |
static type& name = *new type arguments |
+#endif |
static const char kVersionKey[] = "WebKitDatabaseVersionKey"; |
static const char kInfoTableName[] = "__WebKitDatabaseInfoTable__"; |
@@ -173,7 +178,9 @@ static GuidVersionMap& GuidToVersionMap() { |
// NOTE: Caller must lock guidMutex(). |
static inline void UpdateGuidVersionMap(DatabaseGuid guid, String new_version) { |
// Ensure the the mutex is locked. |
- ASSERT(GuidMutex().Locked()); |
+#if DCHECK_IS_ON() |
+ DCHECK(GuidMutex().Locked()); |
+#endif |
// Note: It is not safe to put an empty string into the guidToVersionMap() |
// map. That's because the map is cross-thread, but empty strings are |
@@ -195,7 +202,9 @@ static HashCountedSet<DatabaseGuid>& GuidCount() { |
static DatabaseGuid GuidForOriginAndName(const String& origin, |
const String& name) { |
// Ensure the the mutex is locked. |
- ASSERT(GuidMutex().Locked()); |
+#if DCHECK_IS_ON() |
+ DCHECK(GuidMutex().Locked()); |
+#endif |
String string_id = origin + "/" + name; |
@@ -246,8 +255,8 @@ Database::Database(DatabaseContext* database_context, |
database_thread_security_origin_ = |
context_thread_security_origin_->IsolatedCopy(); |
- ASSERT(database_context_->GetDatabaseThread()); |
- ASSERT(database_context_->IsContextThread()); |
+ DCHECK(database_context_->GetDatabaseThread()); |
+ DCHECK(database_context_->IsContextThread()); |
database_task_runner_ = |
TaskRunnerHelper::Get(TaskType::kDatabaseAccess, GetExecutionContext()); |
} |
@@ -262,7 +271,7 @@ Database::~Database() { |
// DatabaseContext::stopDatabases()). By the time we get here, the SQLite |
// database should have already been closed. |
- ASSERT(!opened_); |
+ DCHECK(!opened_); |
} |
DEFINE_TRACE(Database) { |
@@ -289,8 +298,8 @@ bool Database::OpenAndVerifyVersion(bool set_version_in_new_database, |
} |
void Database::Close() { |
- ASSERT(GetDatabaseContext()->GetDatabaseThread()); |
- ASSERT(GetDatabaseContext()->GetDatabaseThread()->IsDatabaseThread()); |
+ DCHECK(GetDatabaseContext()->GetDatabaseThread()); |
+ DCHECK(GetDatabaseContext()->GetDatabaseThread()->IsDatabaseThread()); |
{ |
MutexLocker locker(transaction_in_progress_mutex_); |
@@ -340,7 +349,7 @@ void Database::InProgressTransactionCompleted() { |
} |
void Database::ScheduleTransaction() { |
- ASSERT(!transaction_in_progress_mutex_.TryLock()); // Locked by caller. |
+ DCHECK(!transaction_in_progress_mutex_.TryLock()); // Locked by caller. |
SQLTransactionBackend* transaction = nullptr; |
if (is_transaction_queue_enabled_ && !transaction_queue_.IsEmpty()) |
@@ -393,7 +402,7 @@ void Database::CloseDatabase() { |
{ |
MutexLocker locker(GuidMutex()); |
- ASSERT(GuidCount().Contains(guid_)); |
+ DCHECK(GuidCount().Contains(guid_)); |
if (GuidCount().erase(guid_)) { |
GuidToVersionMap().erase(guid_); |
} |
@@ -431,8 +440,9 @@ bool Database::PerformOpenAndVerify(bool should_set_version_in_new_database, |
String& error_message) { |
double call_start_time = WTF::MonotonicallyIncreasingTime(); |
DoneCreatingDatabaseOnExitCaller on_exit_caller(this); |
- ASSERT(error_message.IsEmpty()); |
- ASSERT(error == DatabaseError::kNone); // Better not have any errors already. |
+ DCHECK(error_message.IsEmpty()); |
+ DCHECK_EQ(error, |
+ DatabaseError::kNone); // Better not have any errors already. |
// Presumed failure. We'll clear it if we succeed below. |
error = DatabaseError::kInvalidDatabaseState; |
@@ -575,7 +585,7 @@ bool Database::PerformOpenAndVerify(bool should_set_version_in_new_database, |
return false; |
} |
- ASSERT(database_authorizer_); |
+ DCHECK(database_authorizer_); |
sqlite_database_.SetAuthorizer(database_authorizer_.Get()); |
// See comment at the top this file regarding calling addOpenDatabase(). |
@@ -681,44 +691,44 @@ void Database::SetCachedVersion(const String& actual_version) { |
} |
bool Database::GetActualVersionForTransaction(String& actual_version) { |
- ASSERT(sqlite_database_.TransactionInProgress()); |
+ DCHECK(sqlite_database_.TransactionInProgress()); |
// Note: In multi-process browsers the cached value may be inaccurate. So we |
// retrieve the value from the database and update the cached value here. |
return GetVersionFromDatabase(actual_version, true); |
} |
void Database::DisableAuthorizer() { |
- ASSERT(database_authorizer_); |
+ DCHECK(database_authorizer_); |
database_authorizer_->Disable(); |
} |
void Database::EnableAuthorizer() { |
- ASSERT(database_authorizer_); |
+ DCHECK(database_authorizer_); |
database_authorizer_->Enable(); |
} |
void Database::SetAuthorizerPermissions(int permissions) { |
- ASSERT(database_authorizer_); |
+ DCHECK(database_authorizer_); |
database_authorizer_->SetPermissions(permissions); |
} |
bool Database::LastActionChangedDatabase() { |
- ASSERT(database_authorizer_); |
+ DCHECK(database_authorizer_); |
return database_authorizer_->LastActionChangedDatabase(); |
} |
bool Database::LastActionWasInsert() { |
- ASSERT(database_authorizer_); |
+ DCHECK(database_authorizer_); |
return database_authorizer_->LastActionWasInsert(); |
} |
void Database::ResetDeletes() { |
- ASSERT(database_authorizer_); |
+ DCHECK(database_authorizer_); |
database_authorizer_->ResetDeletes(); |
} |
bool Database::HadDeletes() { |
- ASSERT(database_authorizer_); |
+ DCHECK(database_authorizer_); |
return database_authorizer_->HadDeletes(); |
} |
@@ -814,7 +824,7 @@ ExecutionContext* Database::GetExecutionContext() const { |
} |
void Database::CloseImmediately() { |
- ASSERT(GetExecutionContext()->IsContextThread()); |
+ DCHECK(GetExecutionContext()->IsContextThread()); |
if (GetDatabaseContext()->DatabaseThreadAvailable() && Opened()) { |
LogErrorMessage("forcibly closing database"); |
GetDatabaseContext()->GetDatabaseThread()->ScheduleTask( |
@@ -857,7 +867,7 @@ void Database::RunTransaction(SQLTransactionCallback* callback, |
if (!GetExecutionContext()) |
return; |
- ASSERT(GetExecutionContext()->IsContextThread()); |
+ DCHECK(GetExecutionContext()->IsContextThread()); |
// FIXME: Rather than passing errorCallback to SQLTransaction and then |
// sometimes firing it ourselves, this code should probably be pushed down |
// into Database so that we only create the SQLTransaction if we're |
@@ -871,7 +881,9 @@ void Database::RunTransaction(SQLTransactionCallback* callback, |
RunTransaction(transaction, read_only, change_version_data); |
if (!transaction_backend) { |
SQLTransactionErrorCallback* callback = transaction->ReleaseErrorCallback(); |
- ASSERT(callback == original_error_callback); |
+#if DCHECK_IS_ON() |
+ DCHECK_EQ(callback, original_error_callback); |
+#endif |
if (callback) { |
std::unique_ptr<SQLErrorData> error = SQLErrorData::Create( |
SQLError::kUnknownErr, "database has been closed"); |