Title: [182497] trunk/Source/WebCore
Revision
182497
Author
[email protected]
Date
2015-04-07 14:42:38 -0700 (Tue, 07 Apr 2015)

Log Message

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:

Modified Paths

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;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to