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;