Introduced back-end database classes + a few small fixes.
https://bugs.webkit.org/show_bug.cgi?id=108759.

Source/WebCore: 

Reviewed by Brady Eidson.

1. Added DatabaseBackendContext, DatabaseBackendAsync, and DatabaseBackendSync.
   These are backends for DatabaseContext, Database, and DatabaseSync
   respectively.
2. Added DatabaseBase to hold common code between Database and DatabaseSync.
3. Renamed a few functions.
4. Cleaned up unneeded code in ~DatabaseSync().
5. Added some FIXMEs as reminders or places to clean up when we're done
   refactoring.
6. Moved the calling of ScriptController::initializeThreading() from the Database
   constructor to DatabaseManager::openDatabase(). This just moves the call
   earlier in the same code path. System initialization work (i.e. initializing
   script threading in this case) should be done by the manager instead of by
   each Database instance.

No new tests.

* CMakeLists.txt:
* GNUmakefile.list.am:
* Modules/webdatabase/AbstractDatabaseServer.h:
(AbstractDatabaseServer):
* Modules/webdatabase/Database.cpp:
(WebCore::Database::Database):
(WebCore::Database::backend):
* Modules/webdatabase/Database.h:
(Database):
* Modules/webdatabase/DatabaseBackend.cpp:
(WebCore::DatabaseBackend::DatabaseBackend):
(WebCore::DatabaseBackend::~DatabaseBackend):
(WebCore::DatabaseBackend::incrementalVacuumIfNeeded):
* Modules/webdatabase/DatabaseBackend.h:
(DatabaseBackend):
(WebCore::DatabaseBackend::databaseContext):
(WebCore::DatabaseBackend::setFrontend):
* Modules/webdatabase/DatabaseBackendAsync.cpp: Added.
(WebCore::DatabaseBackendAsync::DatabaseBackendAsync):
* Modules/webdatabase/DatabaseBackendAsync.h: Added.
(DatabaseBackendAsync):
* Modules/webdatabase/DatabaseBackendContext.cpp: Added.
(WebCore::DatabaseBackendContext::securityOrigin):
(WebCore::DatabaseBackendContext::isContextThread):
* Modules/webdatabase/DatabaseBackendContext.h: Added.
(DatabaseBackendContext):
(WebCore::DatabaseBackendContext::scriptExecutionContext):
* Modules/webdatabase/DatabaseBackendSync.cpp: Added.
(WebCore::DatabaseBackendSync::DatabaseBackendSync):
(WebCore::DatabaseBackendSync::~DatabaseBackendSync):
* Modules/webdatabase/DatabaseBackendSync.h: Added.
(DatabaseBackendSync):
* Modules/webdatabase/DatabaseBase.cpp: Added.
(WebCore::DatabaseBase::DatabaseBase):
(WebCore::DatabaseBase::scriptExecutionContext):
(WebCore::DatabaseBase::logErrorMessage):
* Modules/webdatabase/DatabaseBase.h: Added.
(DatabaseBase):
* Modules/webdatabase/DatabaseContext.cpp:
(WebCore::DatabaseContext::DatabaseContext):
(WebCore::DatabaseContext::backend):
* Modules/webdatabase/DatabaseContext.h:
(DatabaseContext):
* Modules/webdatabase/DatabaseManager.cpp:
(WebCore::DatabaseManager::openDatabase):
(WebCore::DatabaseManager::openDatabaseSync):
(WebCore::DatabaseManager::hasOpenDatabases):
(WebCore::DatabaseManager::interruptAllDatabasesForContext):
(WebCore::DatabaseManager::getMaxSizeForDatabase):
(WebCore::DatabaseManager::logErrorMessage):
* Modules/webdatabase/DatabaseManager.h:
(DatabaseManager):
* Modules/webdatabase/DatabaseServer.cpp:
(WebCore::DatabaseServer::interruptAllDatabasesForContext):
(WebCore::DatabaseServer::canEstablishDatabase):
* Modules/webdatabase/DatabaseServer.h:
* Modules/webdatabase/DatabaseSync.cpp:
(WebCore::DatabaseSync::DatabaseSync):
(WebCore::DatabaseSync::~DatabaseSync):
(WebCore::DatabaseSync::backend):
* Modules/webdatabase/DatabaseSync.h:
(DatabaseSync):
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::openTrackerDatabase):
(WebCore::DatabaseTracker::canEstablishDatabase):
(WebCore::DatabaseTracker::hasEntryForDatabase):
(WebCore::DatabaseTracker::interruptAllDatabasesForContext):
(WebCore::DatabaseTracker::populateOriginsIfNeeded):
(WebCore::DatabaseTracker::databaseNamesForOriginNoLock):
(WebCore::DatabaseTracker::detailsForNameAndOrigin):
(WebCore::DatabaseTracker::setDatabaseDetails):
(WebCore::DatabaseTracker::usageForOriginNoLock):
(WebCore::DatabaseTracker::setQuota):
(WebCore::DatabaseTracker::addDatabase):
(WebCore::DatabaseTracker::deleteOrigin):
(WebCore::DatabaseTracker::isDeletingDatabaseOrOriginFor):
(WebCore::DatabaseTracker::canDeleteDatabase):
(WebCore::DatabaseTracker::isDeletingDatabase):
(WebCore::DatabaseTracker::canDeleteOrigin):
(WebCore::DatabaseTracker::isDeletingOrigin):
(WebCore::DatabaseTracker::recordDeletingOrigin):
(WebCore::DatabaseTracker::doneDeletingOrigin):
(WebCore::DatabaseTracker::deleteDatabase):
(WebCore::DatabaseTracker::deleteDatabaseFile):
* Modules/webdatabase/DatabaseTracker.h:
(DatabaseTracker):
* Modules/webdatabase/SQLTransaction.cpp:
* Modules/webdatabase/SQLTransactionClient.cpp:
(WebCore::SQLTransactionClient::didExceedQuota):
* Modules/webdatabase/SQLTransactionSync.cpp:
* Modules/webdatabase/chromium/DatabaseTrackerChromium.cpp:
(WebCore::DatabaseTracker::canEstablishDatabase):
(WebCore::DatabaseTracker::removeOpenDatabase):
(WebCore::DatabaseTracker::prepareToOpenDatabase):
(WebCore::DatabaseTracker::failedToOpenDatabase):
(WebCore::DatabaseTracker::interruptAllDatabasesForContext):
(WebCore::DatabaseTracker::closeDatabasesImmediately):
* Modules/webdatabase/chromium/SQLTransactionClientChromium.cpp:
(WebCore::SQLTransactionClient::didCommitWriteTransaction):
(WebCore::SQLTransactionClient::didExceedQuota):
* Target.pri:
* WebCore.gypi:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:

Source/WebKit/chromium: 

Reviewed by Brady Eidson.

* src/DatabaseObserver.cpp:
(WebCore::DatabaseObserver::databaseOpened):
(WebCore::DatabaseObserver::databaseModified):
(WebCore::DatabaseObserver::databaseClosed):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@141928 268f45cc-cd09-0410-ab3c-d52691b4dbfc
39 files changed