Title: [184356] trunk/Source/WebKit2
- Revision
- 184356
- Author
- ander...@apple.com
- Date
- 2015-05-14 14:43:30 -0700 (Thu, 14 May 2015)
Log Message
Local storage origins should include origins with transient local storage
https://bugs.webkit.org/show_bug.cgi?id=145017
rdar://problem/10690447
Reviewed by Sam Weinig.
The transient local storage namespaces are used for third party data blocking and will stay
around until the UI process exits so we need to be able to include website data from transient storage
in the website data store APIs.
* UIProcess/Storage/StorageManager.cpp:
(WebKit::StorageManager::TransientLocalStorageNamespace::origins):
(WebKit::StorageManager::getLocalStorageOrigins):
* UIProcess/Storage/StorageManager.h:
* UIProcess/WebKeyValueStorageManager.cpp:
(WebKit::WebKeyValueStorageManager::getKeyValueStorageOrigins):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (184355 => 184356)
--- trunk/Source/WebKit2/ChangeLog 2015-05-14 21:39:50 UTC (rev 184355)
+++ trunk/Source/WebKit2/ChangeLog 2015-05-14 21:43:30 UTC (rev 184356)
@@ -1,3 +1,24 @@
+2015-05-14 Anders Carlsson <ander...@apple.com>
+
+ Local storage origins should include origins with transient local storage
+ https://bugs.webkit.org/show_bug.cgi?id=145017
+ rdar://problem/10690447
+
+ Reviewed by Sam Weinig.
+
+ The transient local storage namespaces are used for third party data blocking and will stay
+ around until the UI process exits so we need to be able to include website data from transient storage
+ in the website data store APIs.
+
+ * UIProcess/Storage/StorageManager.cpp:
+ (WebKit::StorageManager::TransientLocalStorageNamespace::origins):
+ (WebKit::StorageManager::getLocalStorageOrigins):
+ * UIProcess/Storage/StorageManager.h:
+ * UIProcess/WebKeyValueStorageManager.cpp:
+ (WebKit::WebKeyValueStorageManager::getKeyValueStorageOrigins):
+ * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+ (WebKit::WebsiteDataStore::fetchData):
+
2015-05-14 Beth Dakin <bda...@apple.com>
Change range of possible forces for mouseforcechanged DOM event
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (184355 => 184356)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2015-05-14 21:39:50 UTC (rev 184355)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2015-05-14 21:43:30 UTC (rev 184356)
@@ -129,6 +129,18 @@
return storageArea;
}
+ Vector<RefPtr<SecurityOrigin>> origins() const
+ {
+ Vector<RefPtr<SecurityOrigin>> origins;
+
+ for (const auto& storageArea : m_storageAreaMap.values()) {
+ if (!storageArea->items().isEmpty())
+ origins.append(storageArea->securityOrigin());
+ }
+
+ return origins;
+ }
+
void clearStorageAreasMatchingOrigin(const SecurityOrigin& securityOrigin)
{
for (auto& storageArea : m_storageAreaMap.values()) {
@@ -514,13 +526,21 @@
});
}
-void StorageManager::getLocalStorageOrigins(std::function<void (Vector<RefPtr<WebCore::SecurityOrigin>>)> completionHandler)
+void StorageManager::getLocalStorageOrigins(std::function<void (HashSet<RefPtr<WebCore::SecurityOrigin>>&&)> completionHandler)
{
RefPtr<StorageManager> storageManager(this);
m_queue->dispatch([storageManager, completionHandler] {
- auto origins = storageManager->m_localStorageDatabaseTracker->origins();
+ HashSet<RefPtr<SecurityOrigin>> origins;
+ for (auto& origin : storageManager->m_localStorageDatabaseTracker->origins())
+ origins.add(WTF::move(origin));
+
+ for (auto& transientLocalStorageNamespace : storageManager->m_transientLocalStorageNamespaces.values()) {
+ for (auto& origin : transientLocalStorageNamespace->origins())
+ origins.add(WTF::move(origin));
+ }
+
RunLoop::main().dispatch([origins, completionHandler]() mutable {
completionHandler(WTF::move(origins));
});
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h (184355 => 184356)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h 2015-05-14 21:39:50 UTC (rev 184355)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h 2015-05-14 21:43:30 UTC (rev 184356)
@@ -27,8 +27,10 @@
#define StorageManager_h
#include "Connection.h"
+#include <WebCore/SecurityOriginHash.h>
#include <chrono>
#include <wtf/Forward.h>
+#include <wtf/HashSet.h>
#include <wtf/ThreadSafeRefCounted.h>
#include <wtf/text/StringHash.h>
@@ -57,7 +59,7 @@
void processDidCloseConnection(WebProcessProxy&, IPC::Connection&);
void applicationWillTerminate();
- void getLocalStorageOrigins(std::function<void (Vector<RefPtr<WebCore::SecurityOrigin>>)> completionHandler);
+ void getLocalStorageOrigins(std::function<void (HashSet<RefPtr<WebCore::SecurityOrigin>>&&)> completionHandler);
void getLocalStorageDetailsByOrigin(std::function<void (Vector<LocalStorageDetails>)> completionHandler);
void deleteLocalStorageEntriesForOrigin(const WebCore::SecurityOrigin&);
void deleteAllLocalStorageEntries();
Modified: trunk/Source/WebKit2/UIProcess/WebKeyValueStorageManager.cpp (184355 => 184356)
--- trunk/Source/WebKit2/UIProcess/WebKeyValueStorageManager.cpp 2015-05-14 21:39:50 UTC (rev 184355)
+++ trunk/Source/WebKit2/UIProcess/WebKeyValueStorageManager.cpp 2015-05-14 21:43:30 UTC (rev 184356)
@@ -98,11 +98,11 @@
return;
}
- storageManager->getLocalStorageOrigins([callbackFunction](Vector<RefPtr<SecurityOrigin>> securityOrigins) {
+ storageManager->getLocalStorageOrigins([callbackFunction](HashSet<RefPtr<SecurityOrigin>>&& securityOrigins) {
Vector<RefPtr<API::Object>> webSecurityOrigins;
webSecurityOrigins.reserveInitialCapacity(securityOrigins.size());
for (auto& origin : securityOrigins)
- webSecurityOrigins.uncheckedAppend(API::SecurityOrigin::create(WTF::move(origin)));
+ webSecurityOrigins.uncheckedAppend(API::SecurityOrigin::create(origin));
callbackFunction(API::Array::create(WTF::move(webSecurityOrigins)).ptr(), CallbackBase::Error::None);
});
Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp (184355 => 184356)
--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp 2015-05-14 21:39:50 UTC (rev 184355)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp 2015-05-14 21:43:30 UTC (rev 184356)
@@ -269,11 +269,12 @@
if (dataTypes & WebsiteDataTypeLocalStorage && m_storageManager) {
callbackAggregator->addPendingCallback();
- m_storageManager->getLocalStorageOrigins([callbackAggregator](Vector<RefPtr<WebCore::SecurityOrigin>> origins) {
+ m_storageManager->getLocalStorageOrigins([callbackAggregator](HashSet<RefPtr<WebCore::SecurityOrigin>>&& origins) {
WebsiteData websiteData;
- for (auto& origin : origins)
- websiteData.entries.append(WebsiteData::Entry { WTF::move(origin), WebsiteDataTypeLocalStorage });
+ while (!origins.isEmpty())
+ websiteData.entries.append(WebsiteData::Entry { origins.takeAny(), WebsiteDataTypeLocalStorage });
+
callbackAggregator->removePendingCallback(WTF::move(websiteData));
});
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes