Rename DatabaseManager::manager() to DatabaseManager::singleton()
https://bugs.webkit.org/show_bug.cgi?id=142054
Reviewed by Ryosuke Niwa.
Rename DatabaseManager::manager() to DatabaseManager::singleton() as
per coding style and use WTF::NeverDestroyed.
Source/WebCore:
* Modules/webdatabase/DOMWindowWebDatabase.cpp:
(WebCore::DOMWindowWebDatabase::openDatabase):
* Modules/webdatabase/DatabaseBackendBase.cpp:
(WebCore::DatabaseBackendBase::DatabaseBackendBase):
* Modules/webdatabase/DatabaseContext.cpp:
(WebCore::DatabaseContext::DatabaseContext):
(WebCore::DatabaseContext::~DatabaseContext):
(WebCore::DatabaseContext::stopDatabases):
(WebCore::DatabaseContext::databaseExceededQuota):
* Modules/webdatabase/DatabaseManager.cpp:
(WebCore::DatabaseManager::singleton):
(WebCore::DatabaseManager::manager): Deleted.
* Modules/webdatabase/DatabaseManager.h:
(WebCore::DatabaseManager::~DatabaseManager): Deleted.
* Modules/webdatabase/SQLTransactionClient.cpp:
(WebCore::SQLTransactionClient::didExceedQuota):
* history/PageCache.cpp:
(WebCore::logCanCacheFrameDecision):
(WebCore::PageCache::canCachePageContainingThisFrame):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::stopLoading):
Source/WebKit/mac:
* Storage/WebDatabaseManager.mm:
(-[WebDatabaseManager init]):
(-[WebDatabaseManager origins]):
(-[WebDatabaseManager databasesWithOrigin:]):
(-[WebDatabaseManager detailsForDatabase:withOrigin:]):
(-[WebDatabaseManager deleteAllDatabases]):
(-[WebDatabaseManager deleteOrigin:]):
(-[WebDatabaseManager deleteDatabase:withOrigin:]):
* Storage/WebDatabaseQuotaManager.mm:
(-[WebDatabaseQuotaManager usage]):
(-[WebDatabaseQuotaManager quota]):
(-[WebDatabaseQuotaManager setQuota:]):
* WebCoreSupport/WebSecurityOrigin.mm:
(-[WebSecurityOrigin usage]):
(-[WebSecurityOrigin quota]):
(-[WebSecurityOrigin setQuota:]):
* WebView/WebFrame.mm:
(-[WebFrame _cacheabilityDictionary]):
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Source/WebKit/win:
* WebDatabaseManager.cpp:
(WebDatabaseManager::sharedWebDatabaseManager):
(WebDatabaseManager::origins):
(WebDatabaseManager::databasesWithOrigin):
(WebDatabaseManager::detailsForDatabase):
(WebDatabaseManager::deleteAllDatabases):
(WebDatabaseManager::deleteOrigin):
(WebDatabaseManager::deleteDatabase):
(WebDatabaseManager::setQuota):
(WebKitInitializeWebDatabasesIfNecessary):
* WebSecurityOrigin.cpp:
(WebSecurityOrigin::usage):
(WebSecurityOrigin::quota):
(WebSecurityOrigin::setQuota):
* WebView.cpp:
(WebView::notifyPreferencesChanged):
Source/WebKit2:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::exceededDatabaseQuota):
* WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
(WebKit::WebDatabaseManager::initialize):
(WebKit::WebDatabaseManager::getDatabasesByOrigin):
(WebKit::WebDatabaseManager::getDatabaseOrigins):
(WebKit::WebDatabaseManager::deleteDatabaseWithNameForOrigin):
(WebKit::WebDatabaseManager::deleteDatabasesForOrigin):
(WebKit::WebDatabaseManager::deleteAllDatabases):
(WebKit::WebDatabaseManager::setQuotaForOrigin):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@180704 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index a36294c..d134ef0 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,35 @@
+2015-02-26 Chris Dumez <cdumez@apple.com>
+
+ Rename DatabaseManager::manager() to DatabaseManager::singleton()
+ https://bugs.webkit.org/show_bug.cgi?id=142054
+
+ Reviewed by Ryosuke Niwa.
+
+ Rename DatabaseManager::manager() to DatabaseManager::singleton() as
+ per coding style and use WTF::NeverDestroyed.
+
+ * Modules/webdatabase/DOMWindowWebDatabase.cpp:
+ (WebCore::DOMWindowWebDatabase::openDatabase):
+ * Modules/webdatabase/DatabaseBackendBase.cpp:
+ (WebCore::DatabaseBackendBase::DatabaseBackendBase):
+ * Modules/webdatabase/DatabaseContext.cpp:
+ (WebCore::DatabaseContext::DatabaseContext):
+ (WebCore::DatabaseContext::~DatabaseContext):
+ (WebCore::DatabaseContext::stopDatabases):
+ (WebCore::DatabaseContext::databaseExceededQuota):
+ * Modules/webdatabase/DatabaseManager.cpp:
+ (WebCore::DatabaseManager::singleton):
+ (WebCore::DatabaseManager::manager): Deleted.
+ * Modules/webdatabase/DatabaseManager.h:
+ (WebCore::DatabaseManager::~DatabaseManager): Deleted.
+ * Modules/webdatabase/SQLTransactionClient.cpp:
+ (WebCore::SQLTransactionClient::didExceedQuota):
+ * history/PageCache.cpp:
+ (WebCore::logCanCacheFrameDecision):
+ (WebCore::PageCache::canCachePageContainingThisFrame):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::stopLoading):
+
2015-02-26 Csaba Osztrogonác <ossy@webkit.org>
Fix the !ENABLE(GEOLOCATION) build after r180533
diff --git a/Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp b/Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp
index 50cd393..0154ba0 100644
--- a/Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp
+++ b/Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.cpp
@@ -43,7 +43,7 @@
return 0;
RefPtr<Database> database = 0;
- DatabaseManager& dbManager = DatabaseManager::manager();
+ DatabaseManager& dbManager = DatabaseManager::singleton();
DatabaseError error = DatabaseError::None;
if (dbManager.isAvailable() && window->document()->securityOrigin()->canAccessDatabase(window->document()->topOrigin())) {
database = dbManager.openDatabase(window->document(), name, version, displayName, estimatedSize, creationCallback, error);
diff --git a/Source/WebCore/Modules/webdatabase/DatabaseBackendBase.cpp b/Source/WebCore/Modules/webdatabase/DatabaseBackendBase.cpp
index a67e706..e6d7513 100644
--- a/Source/WebCore/Modules/webdatabase/DatabaseBackendBase.cpp
+++ b/Source/WebCore/Modules/webdatabase/DatabaseBackendBase.cpp
@@ -229,7 +229,7 @@
hashSet->add(this);
}
- m_filename = DatabaseManager::manager().fullPathForDatabase(securityOrigin(), m_name);
+ m_filename = DatabaseManager::singleton().fullPathForDatabase(securityOrigin(), m_name);
}
DatabaseBackendBase::~DatabaseBackendBase()
diff --git a/Source/WebCore/Modules/webdatabase/DatabaseContext.cpp b/Source/WebCore/Modules/webdatabase/DatabaseContext.cpp
index e5d9ef9..277639f 100644
--- a/Source/WebCore/Modules/webdatabase/DatabaseContext.cpp
+++ b/Source/WebCore/Modules/webdatabase/DatabaseContext.cpp
@@ -110,9 +110,10 @@
// For debug accounting only. We must do this before we register the
// instance. The assertions assume this.
- DatabaseManager::manager().didConstructDatabaseContext();
+ auto& databaseManager = DatabaseManager::singleton();
+ databaseManager.didConstructDatabaseContext();
- DatabaseManager::manager().registerDatabaseContext(this);
+ databaseManager.registerDatabaseContext(this);
}
DatabaseContext::~DatabaseContext()
@@ -122,7 +123,7 @@
// For debug accounting only. We must call this last. The assertions assume
// this.
- DatabaseManager::manager().didDestructDatabaseContext();
+ DatabaseManager::singleton().didDestructDatabaseContext();
}
// This is called if the associated ScriptExecutionContext is destroyed while
@@ -185,7 +186,7 @@
bool DatabaseContext::stopDatabases(DatabaseTaskSynchronizer* synchronizer)
{
if (m_isRegistered) {
- DatabaseManager::manager().unregisterDatabaseContext(this);
+ DatabaseManager::singleton().unregisterDatabaseContext(this);
m_isRegistered = false;
}
@@ -231,7 +232,7 @@
ASSERT(m_scriptExecutionContext->isWorkerGlobalScope());
// FIXME: This needs a real implementation; this is a temporary solution for testing.
const unsigned long long defaultQuota = 5 * 1024 * 1024;
- DatabaseManager::manager().setQuota(m_scriptExecutionContext->securityOrigin(), defaultQuota);
+ DatabaseManager::singleton().setQuota(m_scriptExecutionContext->securityOrigin(), defaultQuota);
}
SecurityOrigin* DatabaseContext::securityOrigin() const
diff --git a/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp b/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp
index 98a79ed..b037622 100644
--- a/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp
+++ b/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp
@@ -41,6 +41,7 @@
#include "ScriptController.h"
#include "ScriptExecutionContext.h"
#include "SecurityOrigin.h"
+#include <wtf/NeverDestroyed.h>
namespace WebCore {
@@ -57,15 +58,10 @@
m_manager.removeProposedDatabase(this);
}
-DatabaseManager& DatabaseManager::manager()
+DatabaseManager& DatabaseManager::singleton()
{
- static DatabaseManager* dbManager = 0;
- // FIXME: The following is vulnerable to a race between threads. Need to
- // implement a thread safe on-first-use static initializer.
- if (!dbManager)
- dbManager = new DatabaseManager();
-
- return *dbManager;
+ static NeverDestroyed<DatabaseManager> instance;
+ return instance;
}
DatabaseManager::DatabaseManager()
diff --git a/Source/WebCore/Modules/webdatabase/DatabaseManager.h b/Source/WebCore/Modules/webdatabase/DatabaseManager.h
index 6c4e8c8..22257cb 100644
--- a/Source/WebCore/Modules/webdatabase/DatabaseManager.h
+++ b/Source/WebCore/Modules/webdatabase/DatabaseManager.h
@@ -51,8 +51,9 @@
class DatabaseManager {
WTF_MAKE_NONCOPYABLE(DatabaseManager); WTF_MAKE_FAST_ALLOCATED;
+ friend class WTF::NeverDestroyed<DatabaseManager>;
public:
- WEBCORE_EXPORT static DatabaseManager& manager();
+ WEBCORE_EXPORT static DatabaseManager& singleton();
WEBCORE_EXPORT void initialize(const String& databasePath);
WEBCORE_EXPORT void setClient(DatabaseManagerClient*);
@@ -121,7 +122,7 @@
};
DatabaseManager();
- ~DatabaseManager() { }
+ ~DatabaseManager() = delete;
// This gets a DatabaseContext for the specified ScriptExecutionContext if
// it already exist previously. Otherwise, it returns 0.
diff --git a/Source/WebCore/Modules/webdatabase/SQLTransactionClient.cpp b/Source/WebCore/Modules/webdatabase/SQLTransactionClient.cpp
index af43d10..188391b 100644
--- a/Source/WebCore/Modules/webdatabase/SQLTransactionClient.cpp
+++ b/Source/WebCore/Modules/webdatabase/SQLTransactionClient.cpp
@@ -49,9 +49,10 @@
bool SQLTransactionClient::didExceedQuota(DatabaseBackendBase* database)
{
ASSERT(database->databaseContext()->scriptExecutionContext()->isContextThread());
- unsigned long long currentQuota = DatabaseManager::manager().quotaForOrigin(database->securityOrigin());
+ auto& databaseManager = DatabaseManager::singleton();
+ unsigned long long currentQuota = databaseManager.quotaForOrigin(database->securityOrigin());
database->databaseContext()->databaseExceededQuota(database->stringIdentifier(), database->details());
- unsigned long long newQuota = DatabaseManager::manager().quotaForOrigin(database->securityOrigin());
+ unsigned long long newQuota = databaseManager.quotaForOrigin(database->securityOrigin());
return (newQuota > currentQuota);
}
diff --git a/Source/WebCore/history/PageCache.cpp b/Source/WebCore/history/PageCache.cpp
index 544ced5..b209e3f 100644
--- a/Source/WebCore/history/PageCache.cpp
+++ b/Source/WebCore/history/PageCache.cpp
@@ -153,7 +153,7 @@
logPageCacheFailureDiagnosticMessage(diagnosticLoggingClient, DiagnosticLoggingKeys::httpsNoStoreKey());
rejectReasons |= 1 << IsHttpsAndCacheControlled;
}
- if (DatabaseManager::manager().hasOpenDatabases(frame.document())) {
+ if (DatabaseManager::singleton().hasOpenDatabases(frame.document())) {
PCLOG(" -Frame has open database handles");
logPageCacheFailureDiagnosticMessage(diagnosticLoggingClient, DiagnosticLoggingKeys::hasOpenDatabasesKey());
rejectReasons |= 1 << HasDatabaseHandles;
@@ -319,7 +319,7 @@
&& !(documentLoader->substituteData().isValid() && !documentLoader->substituteData().failingURL().isEmpty())
&& (!frameLoader.subframeLoader().containsPlugins() || frame.page()->settings().pageCacheSupportsPlugins())
&& !(frame.isMainFrame() && document->url().protocolIs("https") && documentLoader->response().cacheControlContainsNoStore())
- && !DatabaseManager::manager().hasOpenDatabases(document)
+ && !DatabaseManager::singleton().hasOpenDatabases(document)
&& frameLoader.history().currentItem()
&& !frameLoader.quickRedirectComing()
&& !documentLoader->isLoadingInAPISense()
diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp
index 96bf0fb..58702e8 100644
--- a/Source/WebCore/loader/FrameLoader.cpp
+++ b/Source/WebCore/loader/FrameLoader.cpp
@@ -488,7 +488,7 @@
doc->setReadyState(Document::Complete);
// FIXME: Should the DatabaseManager watch for something like ActiveDOMObject::stop() rather than being special-cased here?
- DatabaseManager::manager().stopDatabases(doc, 0);
+ DatabaseManager::singleton().stopDatabases(doc, 0);
}
// FIXME: This will cancel redirection timer, which really needs to be restarted when restoring the frame from b/f cache.