diff options
Diffstat (limited to 'Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp b/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp index 825a448..6104a50 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp +++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp @@ -67,6 +67,8 @@ void WebDatabaseManager::didReceiveMessage(CoreIPC::Connection* connection, Core void WebDatabaseManager::getDatabasesByOrigin(uint64_t callbackID) const { + WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared()); + // FIXME: This could be made more efficient by adding a function to DatabaseTracker // to get both the origins and the Vector of DatabaseDetails for each origin in one // shot. That would avoid taking the numerous locks this requires. @@ -105,11 +107,12 @@ void WebDatabaseManager::getDatabasesByOrigin(uint64_t callbackID) const } WebProcess::shared().connection()->send(Messages::WebDatabaseManagerProxy::DidGetDatabasesByOrigin(originAndDatabasesVector, callbackID), 0); - WebProcess::shared().terminateIfPossible(); } void WebDatabaseManager::getDatabaseOrigins(uint64_t callbackID) const { + WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared()); + Vector<RefPtr<SecurityOrigin> > origins; DatabaseTracker::tracker().origins(origins); @@ -119,37 +122,41 @@ void WebDatabaseManager::getDatabaseOrigins(uint64_t callbackID) const for (size_t i = 0; i < numOrigins; ++i) identifiers[i] = origins[i]->databaseIdentifier(); WebProcess::shared().connection()->send(Messages::WebDatabaseManagerProxy::DidGetDatabaseOrigins(identifiers, callbackID), 0); - WebProcess::shared().terminateIfPossible(); } void WebDatabaseManager::deleteDatabaseWithNameForOrigin(const String& databaseIdentifier, const String& originIdentifier) const { + WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared()); + RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromDatabaseIdentifier(originIdentifier); if (!origin) return; DatabaseTracker::tracker().deleteDatabase(origin.get(), databaseIdentifier); - WebProcess::shared().terminateIfPossible(); } void WebDatabaseManager::deleteDatabasesForOrigin(const String& originIdentifier) const { + WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared()); + RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromDatabaseIdentifier(originIdentifier); if (!origin) return; DatabaseTracker::tracker().deleteOrigin(origin.get()); - WebProcess::shared().terminateIfPossible(); } void WebDatabaseManager::deleteAllDatabases() const { + WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared()); + DatabaseTracker::tracker().deleteAllDatabases(); - WebProcess::shared().terminateIfPossible(); } void WebDatabaseManager::setQuotaForOrigin(const String& originIdentifier, unsigned long long quota) const { + WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared()); + // If the quota is set to a value lower than the current usage, that quota will // "stick" but no data will be purged to meet the new quota. This will simply // prevent new data from being added to databases in that origin. @@ -159,7 +166,6 @@ void WebDatabaseManager::setQuotaForOrigin(const String& originIdentifier, unsig return; DatabaseTracker::tracker().setQuota(origin.get(), quota); - WebProcess::shared().terminateIfPossible(); } void WebDatabaseManager::dispatchDidModifyOrigin(SecurityOrigin* origin) |