Index: Source/modules/webdatabase/DatabaseManager.cpp |
=================================================================== |
--- Source/modules/webdatabase/DatabaseManager.cpp (revision 190224) |
+++ Source/modules/webdatabase/DatabaseManager.cpp (working copy) |
@@ -44,13 +44,26 @@ |
namespace blink { |
+static DatabaseManager* s_databaseManager; |
+ |
DatabaseManager& DatabaseManager::manager() |
{ |
ASSERT(isMainThread()); |
- DEFINE_STATIC_LOCAL(DatabaseManager, dbManager, ()); |
- return dbManager; |
+ if (!s_databaseManager) |
+ s_databaseManager = new DatabaseManager(); |
+ return *s_databaseManager; |
} |
+void DatabaseManager::terminateDatabaseThread() |
+{ |
+ ASSERT(isMainThread()); |
+ if (!s_databaseManager || s_databaseManager->m_contextMap.isEmpty()) |
+ return; |
+ // We have at most one DatabaseContext, which is for the main thread. |
+ ASSERT(s_databaseManager->m_contextMap.size() == 1); |
+ (*s_databaseManager->m_contextMap.values().begin())->stopDatabases(); |
+} |
+ |
DatabaseManager::DatabaseManager() |
#if ENABLE(ASSERT) |
: m_databaseContextRegisteredCount(0) |