Title: [148683] trunk/Source
Revision
148683
Author
ander...@apple.com
Date
2013-04-18 10:14:04 -0700 (Thu, 18 Apr 2013)

Log Message

Change storage factory functions to take a PageGroup and Page respectively
https://bugs.webkit.org/show_bug.cgi?id=114776

Reviewed by Beth Dakin.

Source/WebCore:

Change StorageNamespace::localStorageNamespace to take a PageGroup since WebKit2 needs
to know which local storage namespace belongs to which page group. Also remove the quota parameter from
the sessionStorageNamespace function since that's trivial to get from the Page.

* WebCore.exp.in:
* page/Page.cpp:
(WebCore::Page::sessionStorage):
* page/PageGroup.cpp:
(WebCore::PageGroup::localStorage):
* storage/StorageNamespace.cpp:
(WebCore::StorageNamespace::localStorageNamespace):
(WebCore::StorageNamespace::sessionStorageNamespace):
* storage/StorageNamespace.h:
* storage/StorageNamespaceImpl.cpp:
(WebCore::StorageNamespaceImpl::localStorageNamespace):
(WebCore::StorageNamespaceImpl::sessionStorageNamespace):
* storage/StorageNamespaceImpl.h:
* storage/StorageStrategy.cpp:
(WebCore::StorageStrategy::localStorageNamespace):
(WebCore::StorageStrategy::sessionStorageNamespace):
* storage/StorageStrategy.h:

Source/WebKit2:

Update for WebCore changes.

* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::localStorageNamespace):
(WebKit::WebPlatformStrategies::sessionStorageNamespace):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
(WebPlatformStrategies):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (148682 => 148683)


--- trunk/Source/WebCore/ChangeLog	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebCore/ChangeLog	2013-04-18 17:14:04 UTC (rev 148683)
@@ -1,3 +1,32 @@
+2013-04-17  Anders Carlsson  <ander...@apple.com>
+
+        Change storage factory functions to take a PageGroup and Page respectively
+        https://bugs.webkit.org/show_bug.cgi?id=114776
+
+        Reviewed by Beth Dakin.
+
+        Change StorageNamespace::localStorageNamespace to take a PageGroup since WebKit2 needs
+        to know which local storage namespace belongs to which page group. Also remove the quota parameter from
+        the sessionStorageNamespace function since that's trivial to get from the Page.
+
+        * WebCore.exp.in:
+        * page/Page.cpp:
+        (WebCore::Page::sessionStorage):
+        * page/PageGroup.cpp:
+        (WebCore::PageGroup::localStorage):
+        * storage/StorageNamespace.cpp:
+        (WebCore::StorageNamespace::localStorageNamespace):
+        (WebCore::StorageNamespace::sessionStorageNamespace):
+        * storage/StorageNamespace.h:
+        * storage/StorageNamespaceImpl.cpp:
+        (WebCore::StorageNamespaceImpl::localStorageNamespace):
+        (WebCore::StorageNamespaceImpl::sessionStorageNamespace):
+        * storage/StorageNamespaceImpl.h:
+        * storage/StorageStrategy.cpp:
+        (WebCore::StorageStrategy::localStorageNamespace):
+        (WebCore::StorageStrategy::sessionStorageNamespace):
+        * storage/StorageStrategy.h:
+
 2013-04-18  Martin Robinson  <mrobin...@igalia.com>
 
         [GTK] fast/canvas/DrawImageSinglePixelStretch.html fails

Modified: trunk/Source/WebCore/WebCore.exp.in (148682 => 148683)


--- trunk/Source/WebCore/WebCore.exp.in	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebCore/WebCore.exp.in	2013-04-18 17:14:04 UTC (rev 148683)
@@ -472,8 +472,8 @@
 __ZN7WebCore15ResourceRequest24setHTTPPipeliningEnabledEb
 __ZN7WebCore15ScrollAlignment17alignCenterAlwaysE
 __ZN7WebCore15ScrollAlignment19alignToEdgeIfNeededE
-__ZN7WebCore15StorageStrategy21localStorageNamespaceERKN3WTF6StringEj
-__ZN7WebCore15StorageStrategy23sessionStorageNamespaceEPNS_4PageEj
+__ZN7WebCore15StorageStrategy21localStorageNamespaceEPNS_9PageGroupE
+__ZN7WebCore15StorageStrategy23sessionStorageNamespaceEPNS_4PageE
 __ZN7WebCore15StringTruncator13rightTruncateERKN3WTF6StringEfRKNS_4FontENS0_24EnableRoundingHacksOrNotE
 __ZN7WebCore15StringTruncator14centerTruncateERKN3WTF6StringEfRKNS_4FontENS0_24EnableRoundingHacksOrNotE
 __ZN7WebCore15StringTruncator5widthERKN3WTF6StringERKNS_4FontENS0_24EnableRoundingHacksOrNotE

Modified: trunk/Source/WebCore/page/Page.cpp (148682 => 148683)


--- trunk/Source/WebCore/page/Page.cpp	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebCore/page/Page.cpp	2013-04-18 17:14:04 UTC (rev 148683)
@@ -1087,7 +1087,7 @@
 StorageNamespace* Page::sessionStorage(bool optionalCreate)
 {
     if (!m_sessionStorage && optionalCreate)
-        m_sessionStorage = StorageNamespace::sessionStorageNamespace(this, m_settings->sessionStorageQuota());
+        m_sessionStorage = StorageNamespace::sessionStorageNamespace(this);
 
     return m_sessionStorage.get();
 }

Modified: trunk/Source/WebCore/page/PageGroup.cpp (148682 => 148683)


--- trunk/Source/WebCore/page/PageGroup.cpp	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebCore/page/PageGroup.cpp	2013-04-18 17:14:04 UTC (rev 148683)
@@ -257,16 +257,8 @@
 
 StorageNamespace* PageGroup::localStorage()
 {
-    if (!m_localStorage) {
-        // Need a page in this page group to query the settings for the local storage database path.
-        // Having these parameters attached to the page settings is unfortunate since these settings are
-        // not per-page (and, in fact, we simply grab the settings from some page at random), but
-        // at this point we're stuck with it.
-        Page* page = *m_pages.begin();
-        const String& path = page->settings()->localStorageDatabasePath();
-        unsigned quota = m_groupSettings->localStorageQuotaBytes();
-        m_localStorage = StorageNamespace::localStorageNamespace(path, quota);
-    }
+    if (!m_localStorage)
+        m_localStorage = StorageNamespace::localStorageNamespace(this);
 
     return m_localStorage.get();
 }

Modified: trunk/Source/WebCore/storage/StorageNamespace.cpp (148682 => 148683)


--- trunk/Source/WebCore/storage/StorageNamespace.cpp	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebCore/storage/StorageNamespace.cpp	2013-04-18 17:14:04 UTC (rev 148683)
@@ -35,22 +35,22 @@
 
 namespace WebCore {
 
-PassRefPtr<StorageNamespace> StorageNamespace::localStorageNamespace(const String& path, unsigned quota)
+PassRefPtr<StorageNamespace> StorageNamespace::localStorageNamespace(PageGroup* pageGroup)
 {
 #if USE(PLATFORM_STRATEGIES)
-    return platformStrategies()->storageStrategy()->localStorageNamespace(path, quota);
+    return platformStrategies()->storageStrategy()->localStorageNamespace(pageGroup);
 #else
-    return StorageNamespaceImpl::localStorageNamespace(path, quota);
+    return StorageNamespaceImpl::localStorageNamespace(pageGroup);
 #endif
 }
 
-PassRefPtr<StorageNamespace> StorageNamespace::sessionStorageNamespace(Page* page, unsigned quota)
+PassRefPtr<StorageNamespace> StorageNamespace::sessionStorageNamespace(Page* page)
 {
 #if USE(PLATFORM_STRATEGIES)
-    return platformStrategies()->storageStrategy()->sessionStorageNamespace(page, quota);
+    return platformStrategies()->storageStrategy()->sessionStorageNamespace(page);
 #else
     UNUSED_PARAM(page);
-    return StorageNamespaceImpl::sessionStorageNamespace(quota);
+    return StorageNamespaceImpl::sessionStorageNamespace(page);
 #endif
 }
 

Modified: trunk/Source/WebCore/storage/StorageNamespace.h (148682 => 148683)


--- trunk/Source/WebCore/storage/StorageNamespace.h	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebCore/storage/StorageNamespace.h	2013-04-18 17:14:04 UTC (rev 148683)
@@ -33,13 +33,14 @@
 namespace WebCore {
 
 class Page;
+class PageGroup;
 class SecurityOrigin;
 class StorageArea;
 
 class StorageNamespace : public RefCounted<StorageNamespace> {
 public:
-    static PassRefPtr<StorageNamespace> localStorageNamespace(const String& path, unsigned quota);
-    static PassRefPtr<StorageNamespace> sessionStorageNamespace(Page*, unsigned quota);
+    static PassRefPtr<StorageNamespace> localStorageNamespace(PageGroup*);
+    static PassRefPtr<StorageNamespace> sessionStorageNamespace(Page*);
 
     virtual ~StorageNamespace() { }
     virtual PassRefPtr<StorageArea> storageArea(PassRefPtr<SecurityOrigin>) = 0;

Modified: trunk/Source/WebCore/storage/StorageNamespaceImpl.cpp (148682 => 148683)


--- trunk/Source/WebCore/storage/StorageNamespaceImpl.cpp	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebCore/storage/StorageNamespaceImpl.cpp	2013-04-18 17:14:04 UTC (rev 148683)
@@ -26,7 +26,11 @@
 #include "config.h"
 #include "StorageNamespaceImpl.h"
 
+#include "GroupSettings.h"
+#include "Page.h"
+#include "PageGroup.h"
 #include "SecurityOriginHash.h"
+#include "Settings.h"
 #include "StorageAreaImpl.h"
 #include "StorageMap.h"
 #include "StorageSyncManager.h"
@@ -45,22 +49,30 @@
     return localStorageNamespaceMap;
 }
 
-PassRefPtr<StorageNamespace> StorageNamespaceImpl::localStorageNamespace(const String& path, unsigned quota)
+PassRefPtr<StorageNamespace> StorageNamespaceImpl::localStorageNamespace(PageGroup* pageGroup)
 {
+    // Need a page in this page group to query the settings for the local storage database path.
+    // Having these parameters attached to the page settings is unfortunate since these settings are
+    // not per-page (and, in fact, we simply grab the settings from some page at random), but
+    // at this point we're stuck with it.
+    Page* page = *pageGroup->pages().begin();
+    const String& path = page->settings()->localStorageDatabasePath();
+    unsigned quota = pageGroup->groupSettings()->localStorageQuotaBytes();
     const String lookupPath = path.isNull() ? emptyString() : path;
-    LocalStorageNamespaceMap::iterator it = localStorageNamespaceMap().find(lookupPath);
-    if (it == localStorageNamespaceMap().end()) {
-        RefPtr<StorageNamespace> storageNamespace = adoptRef(new StorageNamespaceImpl(LocalStorage, lookupPath, quota));
-        localStorageNamespaceMap().set(lookupPath, storageNamespace.get());
-        return storageNamespace.release();
-    }
 
-    return it->value;
+    LocalStorageNamespaceMap::AddResult result = localStorageNamespaceMap().add(lookupPath, 0);
+    if (!result.isNewEntry)
+        return result.iterator->value;
+
+    RefPtr<StorageNamespace> storageNamespace = adoptRef(new StorageNamespaceImpl(LocalStorage, lookupPath, quota));
+
+    result.iterator->value = storageNamespace.get();
+    return storageNamespace.release();
 }
 
-PassRefPtr<StorageNamespace> StorageNamespaceImpl::sessionStorageNamespace(unsigned quota)
+PassRefPtr<StorageNamespace> StorageNamespaceImpl::sessionStorageNamespace(Page* page)
 {
-    return adoptRef(new StorageNamespaceImpl(SessionStorage, String(), quota));
+    return adoptRef(new StorageNamespaceImpl(SessionStorage, String(), page->settings()->sessionStorageQuota()));
 }
 
 StorageNamespaceImpl::StorageNamespaceImpl(StorageType storageType, const String& path, unsigned quota)

Modified: trunk/Source/WebCore/storage/StorageNamespaceImpl.h (148682 => 148683)


--- trunk/Source/WebCore/storage/StorageNamespaceImpl.h	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebCore/storage/StorageNamespaceImpl.h	2013-04-18 17:14:04 UTC (rev 148683)
@@ -39,8 +39,8 @@
 
 class StorageNamespaceImpl : public StorageNamespace {
 public:
-    static PassRefPtr<StorageNamespace> localStorageNamespace(const String& path, unsigned quota);
-    static PassRefPtr<StorageNamespace> sessionStorageNamespace(unsigned quota);
+    static PassRefPtr<StorageNamespace> localStorageNamespace(PageGroup*);
+    static PassRefPtr<StorageNamespace> sessionStorageNamespace(Page*);
     virtual ~StorageNamespaceImpl();
 
     virtual PassRefPtr<StorageArea> storageArea(PassRefPtr<SecurityOrigin>)  OVERRIDE;

Modified: trunk/Source/WebCore/storage/StorageStrategy.cpp (148682 => 148683)


--- trunk/Source/WebCore/storage/StorageStrategy.cpp	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebCore/storage/StorageStrategy.cpp	2013-04-18 17:14:04 UTC (rev 148683)
@@ -32,14 +32,14 @@
 
 namespace WebCore {
 
-PassRefPtr<StorageNamespace> StorageStrategy::localStorageNamespace(const String& path, unsigned quota)
+PassRefPtr<StorageNamespace> StorageStrategy::localStorageNamespace(PageGroup* pageGroup)
 {
-    return StorageNamespaceImpl::localStorageNamespace(path, quota);
+    return StorageNamespaceImpl::localStorageNamespace(pageGroup);
 }
 
-PassRefPtr<StorageNamespace> StorageStrategy::sessionStorageNamespace(Page*, unsigned quota)
+PassRefPtr<StorageNamespace> StorageStrategy::sessionStorageNamespace(Page* page)
 {
-    return StorageNamespaceImpl::sessionStorageNamespace(quota);
+    return StorageNamespaceImpl::sessionStorageNamespace(page);
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/storage/StorageStrategy.h (148682 => 148683)


--- trunk/Source/WebCore/storage/StorageStrategy.h	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebCore/storage/StorageStrategy.h	2013-04-18 17:14:04 UTC (rev 148683)
@@ -33,12 +33,13 @@
 namespace WebCore {
 
 class Page;
+class PageGroup;
 class StorageNamespace;
 
 class StorageStrategy {
 public:
-    virtual PassRefPtr<StorageNamespace> localStorageNamespace(const String& path, unsigned quota);
-    virtual PassRefPtr<StorageNamespace> sessionStorageNamespace(Page*, unsigned quota);
+    virtual PassRefPtr<StorageNamespace> localStorageNamespace(PageGroup*);
+    virtual PassRefPtr<StorageNamespace> sessionStorageNamespace(Page*);
 
 protected:
     virtual ~StorageStrategy()

Modified: trunk/Source/WebKit2/ChangeLog (148682 => 148683)


--- trunk/Source/WebKit2/ChangeLog	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebKit2/ChangeLog	2013-04-18 17:14:04 UTC (rev 148683)
@@ -1,3 +1,18 @@
+2013-04-17  Anders Carlsson  <ander...@apple.com>
+
+        Change storage factory functions to take a PageGroup and Page respectively
+        https://bugs.webkit.org/show_bug.cgi?id=114776
+
+        Reviewed by Beth Dakin.
+
+        Update for WebCore changes.
+
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
+        (WebKit::WebPlatformStrategies::localStorageNamespace):
+        (WebKit::WebPlatformStrategies::sessionStorageNamespace):
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
+        (WebPlatformStrategies):
+
 2013-04-18  Timothy Hatcher  <timo...@apple.com>
 
         Remove an ASSERT that is causing flakeyness in Debug builds.

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp (148682 => 148683)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp	2013-04-18 17:14:04 UTC (rev 148683)
@@ -298,17 +298,17 @@
 
 // StorageStrategy
 
-PassRefPtr<StorageNamespace> WebPlatformStrategies::localStorageNamespace(const String& path, unsigned quota)
+PassRefPtr<StorageNamespace> WebPlatformStrategies::localStorageNamespace(PageGroup* pageGroup)
 {
-    return StorageStrategy::localStorageNamespace(path, quota);
+    return StorageStrategy::localStorageNamespace(pageGroup);
 }
 
-PassRefPtr<StorageNamespace> WebPlatformStrategies::sessionStorageNamespace(Page* page, unsigned quota)
+PassRefPtr<StorageNamespace> WebPlatformStrategies::sessionStorageNamespace(Page* page)
 {
 #if ENABLE(UI_PROCESS_STORAGE)
     return StorageNamespaceImpl::createSessionStorageNamespace(WebPage::fromCorePage(page));
 #else
-    return StorageStrategy::sessionStorageNamespace(page, quota);
+    return StorageStrategy::sessionStorageNamespace(page);
 #endif
 }
 

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h (148682 => 148683)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h	2013-04-18 16:34:36 UTC (rev 148682)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h	2013-04-18 17:14:04 UTC (rev 148683)
@@ -84,8 +84,8 @@
     virtual void getPluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>&) OVERRIDE;
 
     // WebCore::StorageStrategy.
-    virtual PassRefPtr<WebCore::StorageNamespace> localStorageNamespace(const String& path, unsigned quota) OVERRIDE;
-    virtual PassRefPtr<WebCore::StorageNamespace> sessionStorageNamespace(WebCore::Page*, unsigned quota) OVERRIDE;
+    virtual PassRefPtr<WebCore::StorageNamespace> localStorageNamespace(WebCore::PageGroup*) OVERRIDE;
+    virtual PassRefPtr<WebCore::StorageNamespace> sessionStorageNamespace(WebCore::Page*) OVERRIDE;
 
     // WebCore::VisitedLinkStrategy
     virtual bool isLinkVisited(WebCore::Page*, WebCore::LinkHash, const WebCore::KURL& baseURL, const WTF::AtomicString& attributeURL) OVERRIDE;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to