Diff
Modified: trunk/Source/WebCore/ChangeLog (182496 => 182497)
--- trunk/Source/WebCore/ChangeLog 2015-04-07 21:42:37 UTC (rev 182496)
+++ trunk/Source/WebCore/ChangeLog 2015-04-07 21:42:38 UTC (rev 182497)
@@ -1,3 +1,22 @@
+2015-04-07 Anders Carlsson <[email protected]>
+
+ More work on making the application cache storage be per page
+ https://bugs.webkit.org/show_bug.cgi?id=143498
+
+ Reviewed by Andreas Kling.
+
+ * loader/appcache/ApplicationCacheStorage.cpp:
+ (WebCore::ApplicationCacheStorage::create):
+ (WebCore::ApplicationCacheStorage::singleton):
+ * loader/appcache/ApplicationCacheStorage.h:
+ * page/Page.cpp:
+ (WebCore::Page::Page):
+ * page/Page.h:
+ (WebCore::Page::applicationCacheStorage):
+ * page/PageConfiguration.cpp:
+ (WebCore::PageConfiguration::PageConfiguration): Deleted.
+ * page/PageConfiguration.h:
+
2015-04-07 Matthew Mirman <[email protected]>
Source and stack information should get appended only to native errors
Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp (182496 => 182497)
--- trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp 2015-04-07 21:42:37 UTC (rev 182496)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp 2015-04-07 21:42:38 UTC (rev 182497)
@@ -1549,9 +1549,14 @@
{
}
+Ref<ApplicationCacheStorage> ApplicationCacheStorage::create()
+{
+ return adoptRef(*new ApplicationCacheStorage);
+}
+
ApplicationCacheStorage& ApplicationCacheStorage::singleton()
{
- static NeverDestroyed<ApplicationCacheStorage> storage;
+ static ApplicationCacheStorage& storage = create().leakRef();
return storage;
}
Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.h (182496 => 182497)
--- trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.h 2015-04-07 21:42:37 UTC (rev 182496)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.h 2015-04-07 21:42:38 UTC (rev 182497)
@@ -44,8 +44,7 @@
class SharedBuffer;
template <class T> class StorageIDJournal;
-class ApplicationCacheStorage {
- WTF_MAKE_NONCOPYABLE(ApplicationCacheStorage); WTF_MAKE_FAST_ALLOCATED;
+class ApplicationCacheStorage : public RefCounted<ApplicationCacheStorage> {
public:
enum FailureReason {
OriginQuotaReached,
@@ -53,8 +52,11 @@
DiskOrOperationFailure
};
+ // FIXME: Migrate off of this singleton and towards a world where each page has a storage.
WEBCORE_EXPORT static ApplicationCacheStorage& singleton();
+ WEBCORE_EXPORT static Ref<ApplicationCacheStorage> create();
+
WEBCORE_EXPORT void setCacheDirectory(const String&);
const String& cacheDirectory() const;
Modified: trunk/Source/WebCore/page/Page.cpp (182496 => 182497)
--- trunk/Source/WebCore/page/Page.cpp 2015-04-07 21:42:37 UTC (rev 182496)
+++ trunk/Source/WebCore/page/Page.cpp 2015-04-07 21:42:38 UTC (rev 182497)
@@ -22,6 +22,7 @@
#include "AlternativeTextClient.h"
#include "AnimationController.h"
+#include "ApplicationCacheStorage.h"
#include "BackForwardClient.h"
#include "BackForwardController.h"
#include "Chrome.h"
@@ -207,6 +208,7 @@
#endif
, m_lastSpatialNavigationCandidatesCount(0) // NOTE: Only called from Internals for Spatial Navigation testing.
, m_framesHandlingBeforeUnloadEvent(0)
+ , m_applicationCacheStorage(pageConfiguration.applicationCacheStorage ? *WTF::move(pageConfiguration.applicationCacheStorage) : ApplicationCacheStorage::singleton())
, m_databaseProvider(*WTF::move(pageConfiguration.databaseProvider))
, m_storageNamespaceProvider(*WTF::move(pageConfiguration.storageNamespaceProvider))
, m_userContentController(WTF::move(pageConfiguration.userContentController))
Modified: trunk/Source/WebCore/page/Page.h (182496 => 182497)
--- trunk/Source/WebCore/page/Page.h 2015-04-07 21:42:37 UTC (rev 182496)
+++ trunk/Source/WebCore/page/Page.h 2015-04-07 21:42:38 UTC (rev 182497)
@@ -59,6 +59,7 @@
namespace WebCore {
class AlternativeTextClient;
+class ApplicationCacheStorage;
class BackForwardController;
class BackForwardClient;
class Chrome;
@@ -404,6 +405,7 @@
void setLastSpatialNavigationCandidateCount(unsigned count) { m_lastSpatialNavigationCandidatesCount = count; }
unsigned lastSpatialNavigationCandidateCount() const { return m_lastSpatialNavigationCandidatesCount; }
+ ApplicationCacheStorage& applicationCacheStorage() { return m_applicationCacheStorage; }
DatabaseProvider& databaseProvider() { return m_databaseProvider; }
StorageNamespaceProvider& storageNamespaceProvider() { return m_storageNamespaceProvider.get(); }
@@ -577,6 +579,7 @@
unsigned m_lastSpatialNavigationCandidatesCount;
unsigned m_framesHandlingBeforeUnloadEvent;
+ Ref<ApplicationCacheStorage> m_applicationCacheStorage;
Ref<DatabaseProvider> m_databaseProvider;
Ref<StorageNamespaceProvider> m_storageNamespaceProvider;
RefPtr<UserContentController> m_userContentController;
Modified: trunk/Source/WebCore/page/PageConfiguration.cpp (182496 => 182497)
--- trunk/Source/WebCore/page/PageConfiguration.cpp 2015-04-07 21:42:37 UTC (rev 182496)
+++ trunk/Source/WebCore/page/PageConfiguration.cpp 2015-04-07 21:42:38 UTC (rev 182497)
@@ -26,6 +26,7 @@
#include "config.h"
#include "PageConfiguration.h"
+#include "ApplicationCacheStorage.h"
#include "BackForwardClient.h"
#include "DatabaseProvider.h"
#include "StorageNamespaceProvider.h"
@@ -35,19 +36,6 @@
namespace WebCore {
PageConfiguration::PageConfiguration()
- : alternativeTextClient(nullptr)
- , chromeClient(nullptr)
-#if ENABLE(CONTEXT_MENUS)
- , contextMenuClient(nullptr)
-#endif
- , editorClient(nullptr)
- , dragClient(nullptr)
- , inspectorClient(nullptr)
- , plugInClient(nullptr)
- , progressTrackerClient(nullptr)
- , validationMessageClient(nullptr)
- , loaderClientForMainFrame(nullptr)
- , diagnosticLoggingClient(nullptr)
{
}
Modified: trunk/Source/WebCore/page/PageConfiguration.h (182496 => 182497)
--- trunk/Source/WebCore/page/PageConfiguration.h 2015-04-07 21:42:37 UTC (rev 182496)
+++ trunk/Source/WebCore/page/PageConfiguration.h 2015-04-07 21:42:38 UTC (rev 182497)
@@ -32,11 +32,9 @@
namespace WebCore {
class AlternativeTextClient;
+class ApplicationCacheStorage;
class BackForwardClient;
class ChromeClient;
-#if ENABLE(CONTEXT_MENUS)
-class ContextMenuClient;
-#endif
class DatabaseProvider;
class DiagnosticLoggingClient;
class DragClient;
@@ -50,27 +48,32 @@
class ValidationMessageClient;
class VisitedLinkStore;
+#if ENABLE(CONTEXT_MENUS)
+class ContextMenuClient;
+#endif
+
class PageConfiguration {
WTF_MAKE_NONCOPYABLE(PageConfiguration); WTF_MAKE_FAST_ALLOCATED;
public:
WEBCORE_EXPORT PageConfiguration();
WEBCORE_EXPORT ~PageConfiguration();
- AlternativeTextClient* alternativeTextClient;
- ChromeClient* chromeClient;
+ AlternativeTextClient* alternativeTextClient { nullptr };
+ ChromeClient* chromeClient { nullptr };
#if ENABLE(CONTEXT_MENUS)
- ContextMenuClient* contextMenuClient;
+ ContextMenuClient* contextMenuClient { nullptr };
#endif
- EditorClient* editorClient;
- DragClient* dragClient;
- InspectorClient* inspectorClient;
- PlugInClient* plugInClient;
- ProgressTrackerClient* progressTrackerClient;
+ EditorClient* editorClient { nullptr };
+ DragClient* dragClient { nullptr };
+ InspectorClient* inspectorClient { nullptr };
+ PlugInClient* plugInClient { nullptr };
+ ProgressTrackerClient* progressTrackerClient { nullptr };
RefPtr<BackForwardClient> backForwardClient;
- ValidationMessageClient* validationMessageClient;
- FrameLoaderClient* loaderClientForMainFrame;
- DiagnosticLoggingClient* diagnosticLoggingClient;
+ ValidationMessageClient* validationMessageClient { nullptr };
+ FrameLoaderClient* loaderClientForMainFrame { nullptr };
+ DiagnosticLoggingClient* diagnosticLoggingClient { nullptr };
+ RefPtr<ApplicationCacheStorage> applicationCacheStorage;
RefPtr<DatabaseProvider> databaseProvider;
RefPtr<StorageNamespaceProvider> storageNamespaceProvider;
RefPtr<UserContentController> userContentController;