Diff
Modified: trunk/Source/WebKit2/ChangeLog (149642 => 149643)
--- trunk/Source/WebKit2/ChangeLog 2013-05-06 21:20:41 UTC (rev 149642)
+++ trunk/Source/WebKit2/ChangeLog 2013-05-06 21:43:15 UTC (rev 149643)
@@ -1,3 +1,30 @@
+2013-05-06 Anders Carlsson <ander...@apple.com>
+
+ Move local storage directory handling to LocalStorageDatabaseTracker
+ https://bugs.webkit.org/show_bug.cgi?id=115676
+
+ Reviewed by Andreas Kling.
+
+ * UIProcess/Storage/LocalStorageDatabase.cpp:
+ (WebKit::LocalStorageDatabase::create):
+ (WebKit::LocalStorageDatabase::LocalStorageDatabase):
+ * UIProcess/Storage/LocalStorageDatabase.h:
+ (WebCore):
+ (LocalStorageDatabase):
+ * UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
+ (WebKit::LocalStorageDatabaseTracker::setLocalStorageDirectory):
+ (WebKit):
+ (WebKit::LocalStorageDatabaseTracker::databaseFilename):
+ (WebKit::LocalStorageDatabaseTracker::setLocalStorageDirectoryInternal):
+ * UIProcess/Storage/LocalStorageDatabaseTracker.h:
+ (WebCore):
+ (LocalStorageDatabaseTracker):
+ * UIProcess/Storage/StorageManager.cpp:
+ (WebKit::StorageManager::StorageArea::StorageArea):
+ (WebKit::StorageManager::setLocalStorageDirectory):
+ * UIProcess/Storage/StorageManager.h:
+ (StorageManager):
+
2013-05-06 Manuel Rego Casasnovas <r...@igalia.com>
[GTK] Add webkit_uri_scheme_request_finish_error
Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp (149642 => 149643)
--- trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp 2013-05-06 21:20:41 UTC (rev 149642)
+++ trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp 2013-05-06 21:43:15 UTC (rev 149643)
@@ -44,15 +44,15 @@
namespace WebKit {
-PassRefPtr<LocalStorageDatabase> LocalStorageDatabase::create(const String& databaseFilename, PassRefPtr<WorkQueue> queue, PassRefPtr<LocalStorageDatabaseTracker> tracker)
+PassRefPtr<LocalStorageDatabase> LocalStorageDatabase::create(PassRefPtr<WorkQueue> queue, PassRefPtr<LocalStorageDatabaseTracker> tracker, SecurityOrigin* securityOrigin)
{
- return adoptRef(new LocalStorageDatabase(databaseFilename, queue, tracker));
+ return adoptRef(new LocalStorageDatabase(queue, tracker, securityOrigin));
}
-LocalStorageDatabase::LocalStorageDatabase(const String& databaseFilename, PassRefPtr<WorkQueue> queue, PassRefPtr<LocalStorageDatabaseTracker> tracker)
- : m_databaseFilename(databaseFilename)
- , m_queue(queue)
+LocalStorageDatabase::LocalStorageDatabase(PassRefPtr<WorkQueue> queue, PassRefPtr<LocalStorageDatabaseTracker> tracker, SecurityOrigin* securityOrigin)
+ : m_queue(queue)
, m_tracker(tracker)
+ , m_databaseFilename(m_tracker->databaseFilename(securityOrigin))
, m_failedToOpenDatabase(false)
, m_didImportItems(false)
, m_isClosed(false)
Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.h (149642 => 149643)
--- trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.h 2013-05-06 21:20:41 UTC (rev 149642)
+++ trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.h 2013-05-06 21:43:15 UTC (rev 149643)
@@ -35,6 +35,7 @@
class WorkQueue;
namespace WebCore {
+class SecurityOrigin;
class StorageMap;
}
@@ -44,7 +45,7 @@
class LocalStorageDatabase : public ThreadSafeRefCounted<LocalStorageDatabase> {
public:
- static PassRefPtr<LocalStorageDatabase> create(const String& databaseFilename, PassRefPtr<WorkQueue>, PassRefPtr<LocalStorageDatabaseTracker>);
+ static PassRefPtr<LocalStorageDatabase> create(PassRefPtr<WorkQueue>, PassRefPtr<LocalStorageDatabaseTracker>, WebCore::SecurityOrigin*);
~LocalStorageDatabase();
// Will block until the import is complete.
@@ -58,7 +59,7 @@
void close();
private:
- LocalStorageDatabase(const String& databaseFilename, PassRefPtr<WorkQueue>, PassRefPtr<LocalStorageDatabaseTracker>);
+ LocalStorageDatabase(PassRefPtr<WorkQueue>, PassRefPtr<LocalStorageDatabaseTracker>, WebCore::SecurityOrigin*);
enum DatabaseOpeningStrategy {
CreateIfNonExistent,
@@ -75,10 +76,10 @@
void updateDatabase();
void updateDatabaseWithChangedItems(const HashMap<String, String>&);
- String m_databaseFilename;
RefPtr<WorkQueue> m_queue;
RefPtr<LocalStorageDatabaseTracker> m_tracker;
+ String m_databaseFilename;
WebCore::SQLiteDatabase m_database;
bool m_failedToOpenDatabase;
bool m_didImportItems;
Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp (149642 => 149643)
--- trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp 2013-05-06 21:20:41 UTC (rev 149642)
+++ trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp 2013-05-06 21:43:15 UTC (rev 149643)
@@ -27,7 +27,12 @@
#include "LocalStorageDatabaseTracker.h"
#include "WorkQueue.h"
+#include <WebCore/FileSystem.h>
+#include <WebCore/SecurityOrigin.h>
+#include <wtf/text/CString.h>
+using namespace WebCore;
+
namespace WebKit {
PassRefPtr<LocalStorageDatabaseTracker> LocalStorageDatabaseTracker::create(PassRefPtr<WorkQueue> queue)
@@ -44,4 +49,24 @@
{
}
+void LocalStorageDatabaseTracker::setLocalStorageDirectory(const String& localStorageDirectory)
+{
+ m_queue->dispatch(bind(&LocalStorageDatabaseTracker::setLocalStorageDirectoryInternal, this, localStorageDirectory.isolatedCopy()));
+}
+
+String LocalStorageDatabaseTracker::databaseFilename(SecurityOrigin* securityOrigin) const
+{
+ if (!makeAllDirectories(m_localStorageDirectory)) {
+ LOG_ERROR("Unabled to create LocalStorage database path %s", m_localStorageDirectory.utf8().data());
+ return String();
+ }
+
+ return pathByAppendingComponent(m_localStorageDirectory, securityOrigin->databaseIdentifier() + ".localstorage");
+}
+
+void LocalStorageDatabaseTracker::setLocalStorageDirectoryInternal(const String& localStorageDirectory)
+{
+ m_localStorageDirectory = localStorageDirectory;
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h (149642 => 149643)
--- trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h 2013-05-06 21:20:41 UTC (rev 149642)
+++ trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h 2013-05-06 21:43:15 UTC (rev 149643)
@@ -29,7 +29,12 @@
#include <wtf/PassRefPtr.h>
#include <wtf/RefPtr.h>
#include <wtf/ThreadSafeRefCounted.h>
+#include <wtf/text/WTFString.h>
+namespace WebCore {
+class SecurityOrigin;
+}
+
class WorkQueue;
namespace WebKit {
@@ -39,10 +44,17 @@
static PassRefPtr<LocalStorageDatabaseTracker> create(PassRefPtr<WorkQueue>);
~LocalStorageDatabaseTracker();
+ void setLocalStorageDirectory(const String&);
+ String databaseFilename(WebCore::SecurityOrigin*) const;
+
private:
explicit LocalStorageDatabaseTracker(PassRefPtr<WorkQueue>);
+ void setLocalStorageDirectoryInternal(const String&);
+
RefPtr<WorkQueue> m_queue;
+
+ String m_localStorageDirectory;
};
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (149642 => 149643)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2013-05-06 21:20:41 UTC (rev 149642)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2013-05-06 21:43:15 UTC (rev 149643)
@@ -33,7 +33,6 @@
#include "StorageManagerMessages.h"
#include "WebProcessProxy.h"
#include "WorkQueue.h"
-#include <WebCore/FileSystem.h>
#include <WebCore/SecurityOriginHash.h>
#include <WebCore/StorageMap.h>
@@ -83,7 +82,6 @@
~LocalStorageNamespace();
StorageManager* storageManager() const { return m_storageManager; }
- String databaseFilename(SecurityOrigin*) const;
PassRefPtr<StorageArea> getOrCreateStorageArea(PassRefPtr<SecurityOrigin>);
void didDestroyStorageArea(StorageArea*);
@@ -111,7 +109,7 @@
, m_storageMap(StorageMap::create(m_quotaInBytes))
{
if (m_localStorageNamespace)
- m_localStorageDatabase = LocalStorageDatabase::create(m_localStorageNamespace->databaseFilename(m_securityOrigin.get()), m_localStorageNamespace->storageManager()->m_queue, m_localStorageNamespace->storageManager()->m_localStorageDatabaseTracker);
+ m_localStorageDatabase = LocalStorageDatabase::create(m_localStorageNamespace->storageManager()->m_queue, m_localStorageNamespace->storageManager()->m_localStorageDatabaseTracker, m_securityOrigin.get());
}
StorageManager::StorageArea::~StorageArea()
@@ -242,16 +240,6 @@
ASSERT(m_storageAreaMap.isEmpty());
}
-String StorageManager::LocalStorageNamespace::databaseFilename(SecurityOrigin* securityOrigin) const
-{
- if (!makeAllDirectories(m_storageManager->m_localStorageDirectory)) {
- LOG_ERROR("Unabled to create LocalStorage database path %s", m_storageManager->m_localStorageDirectory.utf8().data());
- return String();
- }
-
- return pathByAppendingComponent(m_storageManager->m_localStorageDirectory, securityOrigin->databaseIdentifier() + ".localstorage");
-}
-
PassRefPtr<StorageManager::StorageArea> StorageManager::LocalStorageNamespace::getOrCreateStorageArea(PassRefPtr<SecurityOrigin> securityOrigin)
{
HashMap<RefPtr<SecurityOrigin>, StorageArea*>::AddResult result = m_storageAreaMap.add(securityOrigin, 0);
@@ -355,7 +343,7 @@
void StorageManager::setLocalStorageDirectory(const String& localStorageDirectory)
{
- m_queue->dispatch(bind(&StorageManager::setLocalStorageDirectoryInternal, this, localStorageDirectory.isolatedCopy()));
+ m_localStorageDatabaseTracker->setLocalStorageDirectory(localStorageDirectory);
}
void StorageManager::createSessionStorageNamespace(uint64_t storageNamespaceID, CoreIPC::Connection* allowedConnection, unsigned quotaInBytes)
@@ -499,11 +487,6 @@
connection->send(Messages::StorageAreaMap::DidClear(), storageMapID);
}
-void StorageManager::setLocalStorageDirectoryInternal(const String& localStorageDirectory)
-{
- m_localStorageDirectory = localStorageDirectory;
-}
-
void StorageManager::createSessionStorageNamespaceInternal(uint64_t storageNamespaceID, CoreIPC::Connection* allowedConnection, unsigned quotaInBytes)
{
ASSERT(!m_sessionStorageNamespaces.contains(storageNamespaceID));
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h (149642 => 149643)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h 2013-05-06 21:20:41 UTC (rev 149642)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h 2013-05-06 21:43:15 UTC (rev 149643)
@@ -70,8 +70,6 @@
void removeItem(CoreIPC::Connection*, uint64_t storageMapID, uint64_t sourceStorageAreaID, const String& key, const String& urlString);
void clear(CoreIPC::Connection*, uint64_t storageMapID, uint64_t sourceStorageAreaID, const String& urlString);
- void setLocalStorageDirectoryInternal(const String&);
-
void createSessionStorageNamespaceInternal(uint64_t storageNamespaceID, CoreIPC::Connection* allowedConnection, unsigned quotaInBytes);
void destroySessionStorageNamespaceInternal(uint64_t storageNamespaceID);
void setAllowedSessionStorageNamespaceConnectionInternal(uint64_t storageNamespaceID, CoreIPC::Connection* allowedConnection);
@@ -87,8 +85,6 @@
RefPtr<WorkQueue> m_queue;
- String m_localStorageDirectory;
-
RefPtr<LocalStorageDatabaseTracker> m_localStorageDatabaseTracker;
HashMap<uint64_t, RefPtr<LocalStorageNamespace> > m_localStorageNamespaces;