Title: [208633] trunk/Source
Revision
208633
Author
commit-qu...@webkit.org
Date
2016-11-11 17:18:22 -0800 (Fri, 11 Nov 2016)

Log Message

Use SecurityOriginData as keys in StorageManager
https://bugs.webkit.org/show_bug.cgi?id=159834
<rdar://problem/27346948>

Patch by Alex Christensen <achristen...@webkit.org> on 2016-11-11
Reviewed by Brady Eidson.

Source/WebCore:

No change in behavior.

* page/SecurityOriginData.h:
(WebCore::SecurityOriginData::SecurityOriginData):
(WebCore::SecurityOriginData::isEmpty):
(WebCore::SecurityOriginData::isHashTableDeletedValue):
(WebCore::SecurityOriginDataHashTraits::isEmptyValue):
(WebCore::SecurityOriginDataHash::hash):
(WebCore::SecurityOriginDataHash::equal):
Add some hash functions so a SecurityOriginData can be used as a key in a HashMap.

Source/WebKit2:

* Platform/IPC/HandleMessage.h:
(IPC::callMemberFunctionImpl):
Add a missing std::forward so we can use this callMemberFunctionImpl with rvalues.
* UIProcess/API/C/WKApplicationCacheManager.cpp:
(WKApplicationCacheManagerGetApplicationCacheOrigins):
(WKApplicationCacheManagerDeleteEntriesForOrigin):
* UIProcess/API/C/WKKeyValueStorageManager.cpp:
(WKKeyValueStorageManagerGetKeyValueStorageOrigins):
(WKKeyValueStorageManagerDeleteEntriesForOrigin):
* UIProcess/API/C/WKResourceCacheManager.cpp:
(WKResourceCacheManagerGetCacheOrigins):
(WKResourceCacheManagerClearCacheForOrigin):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _fetchDataRecordsOfTypes:withOptions:completionHandler:]):
* UIProcess/Databases/DatabaseProcessProxy.cpp:
(WebKit::DatabaseProcessProxy::deleteWebsiteDataForOrigins):
* UIProcess/Databases/DatabaseProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::getNetworkProcessConnection):
(WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Storage/LocalStorageDatabase.cpp:
(WebKit::LocalStorageDatabase::create):
(WebKit::LocalStorageDatabase::LocalStorageDatabase):
(WebKit::LocalStorageDatabase::openDatabase):
(WebKit::LocalStorageDatabase::close):
* UIProcess/Storage/LocalStorageDatabase.h:
* UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::databasePath):
(WebKit::LocalStorageDatabaseTracker::didOpenDatabaseWithOrigin):
(WebKit::LocalStorageDatabaseTracker::deleteDatabaseWithOrigin):
(WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):
(WebKit::LocalStorageDatabaseTracker::origins):
* UIProcess/Storage/LocalStorageDatabaseTracker.h:
* UIProcess/Storage/StorageManager.cpp:
(WebKit::StorageManager::StorageArea::securityOrigin):
(WebKit::StorageManager::TransientLocalStorageNamespace::getOrCreateStorageArea):
(WebKit::StorageManager::TransientLocalStorageNamespace::origins):
(WebKit::StorageManager::TransientLocalStorageNamespace::clearStorageAreasMatchingOrigin):
(WebKit::StorageManager::StorageArea::StorageArea):
(WebKit::StorageManager::StorageArea::clone):
(WebKit::StorageManager::StorageArea::items):
(WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded):
(WebKit::StorageManager::LocalStorageNamespace::didDestroyStorageArea):
(WebKit::StorageManager::LocalStorageNamespace::clearStorageAreasMatchingOrigin):
(WebKit::StorageManager::LocalStorageNamespace::clearAllStorageAreas):
(WebKit::StorageManager::SessionStorageNamespace::origins):
(WebKit::StorageManager::SessionStorageNamespace::clearStorageAreasMatchingOrigin):
(WebKit::StorageManager::SessionStorageNamespace::cloneTo):
(WebKit::StorageManager::getSessionStorageOrigins):
(WebKit::StorageManager::deleteSessionStorageOrigins):
(WebKit::StorageManager::deleteSessionStorageEntriesForOrigins):
(WebKit::StorageManager::getLocalStorageOrigins):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
(WebKit::StorageManager::createLocalStorageMap):
(WebKit::StorageManager::createTransientLocalStorageMap):
(WebKit::StorageManager::createSessionStorageMap):
(WebKit::StorageManager::getOrCreateLocalStorageNamespace):
(WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace):
(WebKit::StorageManager::StorageArea::create): Deleted.
(WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea): Deleted.
(WebKit::StorageManager::SessionStorageNamespace::getOrCreateStorageArea): Deleted.
* UIProcess/Storage/StorageManager.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::WebsiteDataRecord::displayNameForOrigin):
(WebKit::WebsiteDataRecord::add):
* UIProcess/WebsiteData/WebsiteDataRecord.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::mediaKeyOrigins):
(WebKit::WebsiteDataStore::removeMediaKeys):
* UIProcess/WebsiteData/WebsiteDataStore.h:
Fewer SecurityOrigin uses in the UIProcess!  Hooray!

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (208632 => 208633)


--- trunk/Source/WebCore/ChangeLog	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebCore/ChangeLog	2016-11-12 01:18:22 UTC (rev 208633)
@@ -1,3 +1,22 @@
+2016-11-11  Alex Christensen  <achristen...@webkit.org>
+
+        Use SecurityOriginData as keys in StorageManager
+        https://bugs.webkit.org/show_bug.cgi?id=159834
+        <rdar://problem/27346948>
+
+        Reviewed by Brady Eidson.
+
+        No change in behavior.
+
+        * page/SecurityOriginData.h:
+        (WebCore::SecurityOriginData::SecurityOriginData):
+        (WebCore::SecurityOriginData::isEmpty):
+        (WebCore::SecurityOriginData::isHashTableDeletedValue):
+        (WebCore::SecurityOriginDataHashTraits::isEmptyValue):
+        (WebCore::SecurityOriginDataHash::hash):
+        (WebCore::SecurityOriginDataHash::equal):
+        Add some hash functions so a SecurityOriginData can be used as a key in a HashMap.
+
 2016-11-11  Ryosuke Niwa  <rn...@webkit.org>
 
         Hovering over a slotted Text node clears hover state

Modified: trunk/Source/WebCore/page/SecurityOriginData.h (208632 => 208633)


--- trunk/Source/WebCore/page/SecurityOriginData.h	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebCore/page/SecurityOriginData.h	2016-11-12 01:18:22 UTC (rev 208633)
@@ -33,6 +33,12 @@
 class SecurityOrigin;
 
 struct SecurityOriginData {
+    SecurityOriginData() = default;
+    SecurityOriginData(WTF::HashTableDeletedValueType)
+        : protocol(WTF::HashTableDeletedValue)
+    {
+    }
+    
     WEBCORE_EXPORT static SecurityOriginData fromSecurityOrigin(const SecurityOrigin&);
     WEBCORE_EXPORT static SecurityOriginData fromFrame(Frame*);
 
@@ -54,6 +60,16 @@
     template<class Encoder> void encode(Encoder&) const;
     template<class Decoder> static bool decode(Decoder&, SecurityOriginData&);
 
+    bool isEmpty() const
+    {
+        return protocol.isNull() && host.isNull() && port == Nullopt;
+    }
+    
+    bool isHashTableDeletedValue() const
+    {
+        return protocol.isHashTableDeletedValue();
+    }
+    
 #if !LOG_DISABLED
     String debugString() const;
 #endif
@@ -82,4 +98,33 @@
     return true;
 }
 
+struct SecurityOriginDataHashTraits : WTF::SimpleClassHashTraits<SecurityOriginData> {
+    static const bool hasIsEmptyValueFunction = true;
+    static const bool emptyValueIsZero = false;
+    static bool isEmptyValue(const SecurityOriginData& data) { return data.isEmpty(); }
+};
+
+struct SecurityOriginDataHash {
+    static unsigned hash(const SecurityOriginData& data)
+    {
+        unsigned hashCodes[3] = {
+            data.protocol.impl() ? data.protocol.impl()->hash() : 0,
+            data.host.impl() ? data.host.impl()->hash() : 0,
+            data.port.valueOr(0)
+        };
+        return StringHasher::hashMemory<sizeof(hashCodes)>(hashCodes);
+    }
+    static bool equal(const SecurityOriginData& a, const SecurityOriginData& b) { return a == b; }
+    static const bool safeToCompareToEmptyOrDeleted = false;
+};
+
 } // namespace WebCore
+
+namespace WTF {
+
+template<> struct HashTraits<WebCore::SecurityOriginData> : WebCore::SecurityOriginDataHashTraits { };
+template<> struct DefaultHash<WebCore::SecurityOriginData> {
+    typedef WebCore::SecurityOriginDataHash Hash;
+};
+
+} // namespace WTF

Modified: trunk/Source/WebKit2/ChangeLog (208632 => 208633)


--- trunk/Source/WebKit2/ChangeLog	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/ChangeLog	2016-11-12 01:18:22 UTC (rev 208633)
@@ -1,3 +1,91 @@
+2016-11-11  Alex Christensen  <achristen...@webkit.org>
+
+        Use SecurityOriginData as keys in StorageManager
+        https://bugs.webkit.org/show_bug.cgi?id=159834
+        <rdar://problem/27346948>
+
+        Reviewed by Brady Eidson.
+
+        * Platform/IPC/HandleMessage.h:
+        (IPC::callMemberFunctionImpl):
+        Add a missing std::forward so we can use this callMemberFunctionImpl with rvalues.
+        * UIProcess/API/C/WKApplicationCacheManager.cpp:
+        (WKApplicationCacheManagerGetApplicationCacheOrigins):
+        (WKApplicationCacheManagerDeleteEntriesForOrigin):
+        * UIProcess/API/C/WKKeyValueStorageManager.cpp:
+        (WKKeyValueStorageManagerGetKeyValueStorageOrigins):
+        (WKKeyValueStorageManagerDeleteEntriesForOrigin):
+        * UIProcess/API/C/WKResourceCacheManager.cpp:
+        (WKResourceCacheManagerGetCacheOrigins):
+        (WKResourceCacheManagerClearCacheForOrigin):
+        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
+        (-[WKWebsiteDataStore _fetchDataRecordsOfTypes:withOptions:completionHandler:]):
+        * UIProcess/Databases/DatabaseProcessProxy.cpp:
+        (WebKit::DatabaseProcessProxy::deleteWebsiteDataForOrigins):
+        * UIProcess/Databases/DatabaseProcessProxy.h:
+        * UIProcess/Network/NetworkProcessProxy.cpp:
+        (WebKit::NetworkProcessProxy::getNetworkProcessConnection):
+        (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
+        * UIProcess/Network/NetworkProcessProxy.h:
+        * UIProcess/Storage/LocalStorageDatabase.cpp:
+        (WebKit::LocalStorageDatabase::create):
+        (WebKit::LocalStorageDatabase::LocalStorageDatabase):
+        (WebKit::LocalStorageDatabase::openDatabase):
+        (WebKit::LocalStorageDatabase::close):
+        * UIProcess/Storage/LocalStorageDatabase.h:
+        * UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
+        (WebKit::LocalStorageDatabaseTracker::databasePath):
+        (WebKit::LocalStorageDatabaseTracker::didOpenDatabaseWithOrigin):
+        (WebKit::LocalStorageDatabaseTracker::deleteDatabaseWithOrigin):
+        (WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):
+        (WebKit::LocalStorageDatabaseTracker::origins):
+        * UIProcess/Storage/LocalStorageDatabaseTracker.h:
+        * UIProcess/Storage/StorageManager.cpp:
+        (WebKit::StorageManager::StorageArea::securityOrigin):
+        (WebKit::StorageManager::TransientLocalStorageNamespace::getOrCreateStorageArea):
+        (WebKit::StorageManager::TransientLocalStorageNamespace::origins):
+        (WebKit::StorageManager::TransientLocalStorageNamespace::clearStorageAreasMatchingOrigin):
+        (WebKit::StorageManager::StorageArea::StorageArea):
+        (WebKit::StorageManager::StorageArea::clone):
+        (WebKit::StorageManager::StorageArea::items):
+        (WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded):
+        (WebKit::StorageManager::LocalStorageNamespace::didDestroyStorageArea):
+        (WebKit::StorageManager::LocalStorageNamespace::clearStorageAreasMatchingOrigin):
+        (WebKit::StorageManager::LocalStorageNamespace::clearAllStorageAreas):
+        (WebKit::StorageManager::SessionStorageNamespace::origins):
+        (WebKit::StorageManager::SessionStorageNamespace::clearStorageAreasMatchingOrigin):
+        (WebKit::StorageManager::SessionStorageNamespace::cloneTo):
+        (WebKit::StorageManager::getSessionStorageOrigins):
+        (WebKit::StorageManager::deleteSessionStorageOrigins):
+        (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins):
+        (WebKit::StorageManager::getLocalStorageOrigins):
+        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
+        (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
+        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
+        (WebKit::StorageManager::createLocalStorageMap):
+        (WebKit::StorageManager::createTransientLocalStorageMap):
+        (WebKit::StorageManager::createSessionStorageMap):
+        (WebKit::StorageManager::getOrCreateLocalStorageNamespace):
+        (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace):
+        (WebKit::StorageManager::StorageArea::create): Deleted.
+        (WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea): Deleted.
+        (WebKit::StorageManager::SessionStorageNamespace::getOrCreateStorageArea): Deleted.
+        * UIProcess/Storage/StorageManager.h:
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
+        * UIProcess/WebProcessProxy.h:
+        * UIProcess/WebsiteData/WebsiteDataRecord.cpp:
+        (WebKit::WebsiteDataRecord::displayNameForOrigin):
+        (WebKit::WebsiteDataRecord::add):
+        * UIProcess/WebsiteData/WebsiteDataRecord.h:
+        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+        (WebKit::WebsiteDataStore::fetchData):
+        (WebKit::WebsiteDataStore::removeData):
+        (WebKit::WebsiteDataStore::mediaKeyOrigins):
+        (WebKit::WebsiteDataStore::removeMediaKeys):
+        * UIProcess/WebsiteData/WebsiteDataStore.h:
+        Fewer SecurityOrigin uses in the UIProcess!  Hooray!
+
 2016-11-11  Ryosuke Niwa  <rn...@webkit.org>
 
         Hovering over a slotted Text node clears hover state

Modified: trunk/Source/WebKit2/Platform/IPC/HandleMessage.h (208632 => 208633)


--- trunk/Source/WebKit2/Platform/IPC/HandleMessage.h	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/Platform/IPC/HandleMessage.h	2016-11-12 01:18:22 UTC (rev 208633)
@@ -1,3 +1,28 @@
+/*
+ * Copyright (C) 2010-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 #pragma once
 
 #include "ArgumentCoders.h"
@@ -54,7 +79,7 @@
 template <typename C, typename MF, typename ArgsTuple, size_t... ArgsIndex>
 void callMemberFunctionImpl(C* object, MF function, Connection& connection, ArgsTuple&& args, std::index_sequence<ArgsIndex...>)
 {
-    (object->*function)(connection, std::get<ArgsIndex>(args)...);
+    (object->*function)(connection, std::get<ArgsIndex>(std::forward<ArgsTuple>(args))...);
 }
 
 template<typename C, typename MF, typename ArgsTuple, typename ArgsIndicies = std::make_index_sequence<std::tuple_size<ArgsTuple>::value>>

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKApplicationCacheManager.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/API/C/WKApplicationCacheManager.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKApplicationCacheManager.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -44,7 +44,7 @@
         Vector<RefPtr<API::Object>> securityOrigins;
         for (const auto& dataRecord : dataRecords) {
             for (const auto& origin : dataRecord.origins)
-                securityOrigins.append(API::SecurityOrigin::create(*origin));
+                securityOrigins.append(API::SecurityOrigin::create(origin.securityOrigin()));
         }
 
         callback(toAPI(API::Array::create(WTFMove(securityOrigins)).ptr()), nullptr, context);
@@ -56,7 +56,7 @@
     auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(applicationCacheManager))->websiteDataStore();
 
     WebsiteDataRecord dataRecord;
-    dataRecord.add(WebsiteDataType::OfflineWebApplicationCache, &toImpl(origin)->securityOrigin());
+    dataRecord.add(WebsiteDataType::OfflineWebApplicationCache, WebCore::SecurityOriginData::fromSecurityOrigin(toImpl(origin)->securityOrigin()));
 
     websiteDataStore.removeData(WebsiteDataType::OfflineWebApplicationCache, { dataRecord }, [] { });
 }

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -73,7 +73,7 @@
         Vector<RefPtr<API::Object>> webSecurityOrigins;
         webSecurityOrigins.reserveInitialCapacity(securityOrigins.size());
         for (auto& origin : securityOrigins)
-            webSecurityOrigins.uncheckedAppend(API::SecurityOrigin::create(*origin));
+            webSecurityOrigins.uncheckedAppend(API::SecurityOrigin::create(origin.securityOrigin()));
 
         callback(toAPI(API::Array::create(WTFMove(webSecurityOrigins)).ptr()), nullptr, context);
     });
@@ -118,7 +118,7 @@
     if (!storageManager)
         return;
 
-    storageManager->deleteLocalStorageEntriesForOrigin(toImpl(origin)->securityOrigin());
+    storageManager->deleteLocalStorageEntriesForOrigin(WebCore::SecurityOriginData::fromSecurityOrigin(toImpl(origin)->securityOrigin()));
 }
 
 void WKKeyValueStorageManagerDeleteAllEntries(WKKeyValueStorageManagerRef keyValueStorageManager)

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -56,7 +56,7 @@
         Vector<RefPtr<API::Object>> securityOrigins;
         for (const auto& dataRecord : dataRecords) {
             for (const auto& origin : dataRecord.origins)
-                securityOrigins.append(API::SecurityOrigin::create(*origin));
+                securityOrigins.append(API::SecurityOrigin::create(origin.securityOrigin()));
         }
 
         callback(toAPI(API::Array::create(WTFMove(securityOrigins)).ptr()), nullptr, context);
@@ -71,7 +71,7 @@
 
     {
         WebsiteDataRecord dataRecord;
-        dataRecord.add(WebsiteDataType::MemoryCache, &toImpl(origin)->securityOrigin());
+        dataRecord.add(WebsiteDataType::MemoryCache, WebCore::SecurityOriginData::fromSecurityOrigin(toImpl(origin)->securityOrigin()));
 
         dataRecords.append(dataRecord);
     }
@@ -78,7 +78,7 @@
 
     if (cachesToClear == WKResourceCachesToClearAll) {
         WebsiteDataRecord dataRecord;
-        dataRecord.add(WebsiteDataType::DiskCache, &toImpl(origin)->securityOrigin());
+        dataRecord.add(WebsiteDataType::DiskCache, WebCore::SecurityOriginData::fromSecurityOrigin(toImpl(origin)->securityOrigin()));
 
         dataRecords.append(dataRecord);
     }

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm	2016-11-12 01:18:22 UTC (rev 208633)
@@ -153,7 +153,7 @@
     if (options & _WKWebsiteDataStoreFetchOptionComputeSizes)
         fetchOptions |= WebKit::WebsiteDataFetchOption::ComputeSizes;
 
-    _websiteDataStore->websiteDataStore().fetchData(WebKit::toWebsiteDataTypes(dataTypes), fetchOptions, [completionHandlerCopy](auto websiteDataRecords) {
+    _websiteDataStore->websiteDataStore().fetchData(WebKit::toWebsiteDataTypes(dataTypes), fetchOptions, [completionHandlerCopy = WTFMove(completionHandlerCopy)](auto websiteDataRecords) {
         Vector<RefPtr<API::Object>> elements;
         elements.reserveInitialCapacity(websiteDataRecords.size());
 

Modified: trunk/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -102,7 +102,7 @@
     send(Messages::DatabaseProcess::DeleteWebsiteData(sessionID, dataTypes, modifiedSince, callbackID), 0);
 }
 
-void DatabaseProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet<WebsiteDataType> dataTypes, const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, std::function<void ()> completionHandler)
+void DatabaseProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet<WebsiteDataType> dataTypes, const Vector<WebCore::SecurityOriginData>& origins, std::function<void()> completionHandler)
 {
     ASSERT(canSendMessage());
 
@@ -109,11 +109,7 @@
     uint64_t callbackID = generateCallbackID();
     m_pendingDeleteWebsiteDataForOriginsCallbacks.add(callbackID, WTFMove(completionHandler));
 
-    Vector<SecurityOriginData> originData;
-    for (auto& origin : origins)
-        originData.append(SecurityOriginData::fromSecurityOrigin(*origin));
-
-    send(Messages::DatabaseProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, originData, callbackID), 0);
+    send(Messages::DatabaseProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, origins, callbackID), 0);
 }
 
 void DatabaseProcessProxy::getDatabaseProcessConnection(PassRefPtr<Messages::WebProcessProxy::GetDatabaseProcessConnection::DelayedReply> reply)

Modified: trunk/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h	2016-11-12 01:18:22 UTC (rev 208633)
@@ -37,6 +37,7 @@
 namespace WebCore {
 class SecurityOrigin;
 class SessionID;
+struct SecurityOriginData;
 }
 
 namespace WebKit {
@@ -50,9 +51,9 @@
     static Ref<DatabaseProcessProxy> create(WebProcessPool*);
     ~DatabaseProcessProxy();
 
-    void fetchWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, std::function<void (WebsiteData)> completionHandler);
-    void deleteWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, std::chrono::system_clock::time_point modifiedSince, std::function<void ()> completionHandler);
-    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet<WebsiteDataType>, const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, std::function<void ()> completionHandler);
+    void fetchWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, std::function<void(WebsiteData)> completionHandler);
+    void deleteWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, std::chrono::system_clock::time_point modifiedSince, std::function<void()> completionHandler);
+    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet<WebsiteDataType>, const Vector<WebCore::SecurityOriginData>&, std::function<void()> completionHandler);
 
     void getDatabaseProcessConnection(PassRefPtr<Messages::WebProcessProxy::GetDatabaseProcessConnection::DelayedReply>);
 

Modified: trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -100,7 +100,7 @@
     ASSERT_UNUSED(connection, this->connection() == &connection);
 }
 
-void NetworkProcessProxy::getNetworkProcessConnection(PassRefPtr<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply> reply)
+void NetworkProcessProxy::getNetworkProcessConnection(RefPtr<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&& reply)
 {
     m_pendingConnectionReplies.append(reply);
 
@@ -149,7 +149,7 @@
     send(Messages::NetworkProcess::DeleteWebsiteData(sessionID, dataTypes, modifiedSince, callbackID), 0);
 }
 
-void NetworkProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet<WebsiteDataType> dataTypes, const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, const Vector<String>& cookieHostNames, std::function<void ()> completionHandler)
+void NetworkProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet<WebsiteDataType> dataTypes, const Vector<WebCore::SecurityOriginData>& origins, const Vector<String>& cookieHostNames, std::function<void()> completionHandler)
 {
     ASSERT(canSendMessage());
 
@@ -162,11 +162,7 @@
         RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), ProcessSuspension, "%p - NetworkProcessProxy is releasing a background assertion because the Network process is done deleting Website data for several origins", this);
     });
 
-    Vector<SecurityOriginData> originData;
-    for (auto& origin : origins)
-        originData.append(SecurityOriginData::fromSecurityOrigin(*origin));
-
-    send(Messages::NetworkProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, originData, cookieHostNames, callbackID), 0);
+    send(Messages::NetworkProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, origins, cookieHostNames, callbackID), 0);
 }
 
 void NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch()

Modified: trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h	2016-11-12 01:18:22 UTC (rev 208633)
@@ -40,6 +40,7 @@
 class ProtectionSpace;
 class ResourceRequest;
 class SecurityOrigin;
+struct SecurityOriginData;
 class SessionID;
 }
 
@@ -58,13 +59,13 @@
     static Ref<NetworkProcessProxy> create(WebProcessPool&);
     ~NetworkProcessProxy();
 
-    void getNetworkProcessConnection(PassRefPtr<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>);
+    void getNetworkProcessConnection(RefPtr<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&&);
 
     DownloadProxy* createDownloadProxy(const WebCore::ResourceRequest&);
 
-    void fetchWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, OptionSet<WebsiteDataFetchOption>, std::function<void (WebsiteData)> completionHandler);
-    void deleteWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, std::chrono::system_clock::time_point modifiedSince, std::function<void ()> completionHandler);
-    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet<WebKit::WebsiteDataType>, const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, const Vector<String>& cookieHostNames, std::function<void ()> completionHandler);
+    void fetchWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, OptionSet<WebsiteDataFetchOption>, std::function<void(WebsiteData)> completionHandler);
+    void deleteWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, std::chrono::system_clock::time_point modifiedSince, std::function<void()> completionHandler);
+    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet<WebKit::WebsiteDataType>, const Vector<WebCore::SecurityOriginData>& origins, const Vector<String>& cookieHostNames, std::function<void()> completionHandler);
 
 #if PLATFORM(COCOA)
     void setProcessSuppressionEnabled(bool);

Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -46,16 +46,16 @@
 
 namespace WebKit {
 
-Ref<LocalStorageDatabase> LocalStorageDatabase::create(Ref<WorkQueue>&& queue, Ref<LocalStorageDatabaseTracker>&& tracker, Ref<SecurityOrigin>&& securityOrigin)
+Ref<LocalStorageDatabase> LocalStorageDatabase::create(Ref<WorkQueue>&& queue, Ref<LocalStorageDatabaseTracker>&& tracker, const SecurityOriginData& securityOrigin)
 {
-    return adoptRef(*new LocalStorageDatabase(WTFMove(queue), WTFMove(tracker), WTFMove(securityOrigin)));
+    return adoptRef(*new LocalStorageDatabase(WTFMove(queue), WTFMove(tracker), securityOrigin));
 }
 
-LocalStorageDatabase::LocalStorageDatabase(Ref<WorkQueue>&& queue, Ref<LocalStorageDatabaseTracker>&& tracker, Ref<SecurityOrigin>&& securityOrigin)
+LocalStorageDatabase::LocalStorageDatabase(Ref<WorkQueue>&& queue, Ref<LocalStorageDatabaseTracker>&& tracker, const SecurityOriginData& securityOrigin)
     : m_queue(WTFMove(queue))
     , m_tracker(WTFMove(tracker))
-    , m_securityOrigin(WTFMove(securityOrigin))
-    , m_databasePath(m_tracker->databasePath(m_securityOrigin.ptr()))
+    , m_securityOrigin(securityOrigin)
+    , m_databasePath(m_tracker->databasePath(m_securityOrigin))
     , m_failedToOpenDatabase(false)
     , m_didImportItems(false)
     , m_isClosed(false)
@@ -80,7 +80,7 @@
     }
 
     if (m_database.isOpen())
-        m_tracker->didOpenDatabaseWithOrigin(m_securityOrigin.ptr());
+        m_tracker->didOpenDatabaseWithOrigin(m_securityOrigin);
 }
 
 bool LocalStorageDatabase::tryToOpenDatabase(DatabaseOpeningStrategy openingStrategy)
@@ -230,7 +230,7 @@
         m_database.close();
 
     if (isEmpty)
-        m_tracker->deleteDatabaseWithOrigin(m_securityOrigin.ptr());
+        m_tracker->deleteDatabaseWithOrigin(m_securityOrigin);
 }
 
 void LocalStorageDatabase::itemDidChange(const String& key, const String& value)

Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.h (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.h	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.h	2016-11-12 01:18:22 UTC (rev 208633)
@@ -26,6 +26,7 @@
 #pragma once
 
 #include <WebCore/SQLiteDatabase.h>
+#include <WebCore/SecurityOriginData.h>
 #include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/RefPtr.h>
@@ -44,7 +45,7 @@
 
 class LocalStorageDatabase : public ThreadSafeRefCounted<LocalStorageDatabase> {
 public:
-    static Ref<LocalStorageDatabase> create(Ref<WorkQueue>&&, Ref<LocalStorageDatabaseTracker>&&, Ref<WebCore::SecurityOrigin>&&);
+    static Ref<LocalStorageDatabase> create(Ref<WorkQueue>&&, Ref<LocalStorageDatabaseTracker>&&, const WebCore::SecurityOriginData&);
     ~LocalStorageDatabase();
 
     // Will block until the import is complete.
@@ -58,7 +59,7 @@
     void close();
 
 private:
-    LocalStorageDatabase(Ref<WorkQueue>&&, Ref<LocalStorageDatabaseTracker>&&, Ref<WebCore::SecurityOrigin>&&);
+    LocalStorageDatabase(Ref<WorkQueue>&&, Ref<LocalStorageDatabaseTracker>&&, const WebCore::SecurityOriginData&);
 
     enum DatabaseOpeningStrategy {
         CreateIfNonExistent,
@@ -79,7 +80,7 @@
 
     Ref<WorkQueue> m_queue;
     Ref<LocalStorageDatabaseTracker> m_tracker;
-    Ref<WebCore::SecurityOrigin> m_securityOrigin;
+    WebCore::SecurityOriginData m_securityOrigin;
 
     String m_databasePath;
     WebCore::SQLiteDatabase m_database;

Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -62,19 +62,19 @@
 {
 }
 
-String LocalStorageDatabaseTracker::databasePath(SecurityOrigin* securityOrigin) const
+String LocalStorageDatabaseTracker::databasePath(const SecurityOriginData& securityOrigin) const
 {
-    return databasePath(SecurityOriginData::fromSecurityOrigin(*securityOrigin).databaseIdentifier() + ".localstorage");
+    return databasePath(securityOrigin.databaseIdentifier() + ".localstorage");
 }
 
-void LocalStorageDatabaseTracker::didOpenDatabaseWithOrigin(SecurityOrigin* securityOrigin)
+void LocalStorageDatabaseTracker::didOpenDatabaseWithOrigin(const SecurityOriginData& securityOrigin)
 {
-    addDatabaseWithOriginIdentifier(SecurityOriginData::fromSecurityOrigin(*securityOrigin).databaseIdentifier(), databasePath(securityOrigin));
+    addDatabaseWithOriginIdentifier(securityOrigin.databaseIdentifier(), databasePath(securityOrigin));
 }
 
-void LocalStorageDatabaseTracker::deleteDatabaseWithOrigin(SecurityOrigin* securityOrigin)
+void LocalStorageDatabaseTracker::deleteDatabaseWithOrigin(const SecurityOriginData& securityOrigin)
 {
-    removeDatabaseWithOriginIdentifier(SecurityOriginData::fromSecurityOrigin(*securityOrigin).databaseIdentifier());
+    removeDatabaseWithOriginIdentifier(securityOrigin.databaseIdentifier());
 }
 
 void LocalStorageDatabaseTracker::deleteAllDatabases()
@@ -140,7 +140,7 @@
     return time;
 }
 
-Vector<Ref<SecurityOrigin>> LocalStorageDatabaseTracker::deleteDatabasesModifiedSince(std::chrono::system_clock::time_point time)
+Vector<SecurityOriginData> LocalStorageDatabaseTracker::deleteDatabasesModifiedSince(std::chrono::system_clock::time_point time)
 {
     Vector<String> originIdentifiersToDelete;
 
@@ -155,25 +155,26 @@
             originIdentifiersToDelete.append(origin);
     }
 
-    Vector<Ref<SecurityOrigin>> deletedDatabaseOrigins;
+    Vector<SecurityOriginData> deletedDatabaseOrigins;
     deletedDatabaseOrigins.reserveInitialCapacity(originIdentifiersToDelete.size());
 
     for (const auto& originIdentifier : originIdentifiersToDelete) {
         removeDatabaseWithOriginIdentifier(originIdentifier);
 
-        deletedDatabaseOrigins.uncheckedAppend(SecurityOrigin::createFromDatabaseIdentifier(originIdentifier));
+        // FIXME: Move createFromDatabaseIdentifier to SecurityOriginData.
+        deletedDatabaseOrigins.uncheckedAppend(SecurityOriginData::fromSecurityOrigin(SecurityOrigin::createFromDatabaseIdentifier(originIdentifier)));
     }
 
     return deletedDatabaseOrigins;
 }
 
-Vector<Ref<WebCore::SecurityOrigin>> LocalStorageDatabaseTracker::origins() const
+Vector<SecurityOriginData> LocalStorageDatabaseTracker::origins() const
 {
-    Vector<Ref<SecurityOrigin>> origins;
+    Vector<SecurityOriginData> origins;
     origins.reserveInitialCapacity(m_origins.size());
 
     for (const String& origin : m_origins)
-        origins.uncheckedAppend(SecurityOrigin::createFromDatabaseIdentifier(origin));
+        origins.uncheckedAppend(SecurityOriginData::fromSecurityOrigin(SecurityOrigin::createFromDatabaseIdentifier(origin)));
 
     return origins;
 }

Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h	2016-11-12 01:18:22 UTC (rev 208633)
@@ -36,6 +36,7 @@
 
 namespace WebCore {
 class SecurityOrigin;
+struct SecurityOriginData;
 }
 
 namespace WebKit {
@@ -47,16 +48,16 @@
     static Ref<LocalStorageDatabaseTracker> create(Ref<WorkQueue>&&, const String& localStorageDirectory);
     ~LocalStorageDatabaseTracker();
 
-    String databasePath(WebCore::SecurityOrigin*) const;
+    String databasePath(const WebCore::SecurityOriginData&) const;
 
-    void didOpenDatabaseWithOrigin(WebCore::SecurityOrigin*);
-    void deleteDatabaseWithOrigin(WebCore::SecurityOrigin*);
+    void didOpenDatabaseWithOrigin(const WebCore::SecurityOriginData&);
+    void deleteDatabaseWithOrigin(const WebCore::SecurityOriginData&);
     void deleteAllDatabases();
 
     // Returns a vector of the origins whose databases have been deleted.
-    Vector<Ref<WebCore::SecurityOrigin>> deleteDatabasesModifiedSince(std::chrono::system_clock::time_point);
+    Vector<WebCore::SecurityOriginData> deleteDatabasesModifiedSince(std::chrono::system_clock::time_point);
 
-    Vector<Ref<WebCore::SecurityOrigin>> origins() const;
+    Vector<WebCore::SecurityOriginData> origins() const;
 
     struct OriginDetails {
         String originIdentifier;

Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -45,10 +45,10 @@
 
 class StorageManager::StorageArea : public ThreadSafeRefCounted<StorageManager::StorageArea> {
 public:
-    static Ref<StorageArea> create(LocalStorageNamespace*, Ref<SecurityOrigin>&&, unsigned quotaInBytes);
+    static Ref<StorageArea> create(LocalStorageNamespace*, const SecurityOriginData&, unsigned quotaInBytes);
     ~StorageArea();
 
-    SecurityOrigin& securityOrigin() { return m_securityOrigin.get(); }
+    const WebCore::SecurityOriginData& securityOrigin() const { return m_securityOrigin; }
 
     void addListener(IPC::Connection&, uint64_t storageMapID);
     void removeListener(IPC::Connection&, uint64_t storageMapID);
@@ -59,24 +59,24 @@
     void removeItem(IPC::Connection* sourceConnection, uint64_t sourceStorageAreaID, const String& key, const String& urlString);
     void clear(IPC::Connection* sourceConnection, uint64_t sourceStorageAreaID, const String& urlString);
 
-    const HashMap<String, String>& items();
+    const HashMap<String, String>& items() const;
     void clear();
 
     bool isSessionStorage() const { return !m_localStorageNamespace; }
 
 private:
-    explicit StorageArea(LocalStorageNamespace*, Ref<SecurityOrigin>&&, unsigned quotaInBytes);
+    explicit StorageArea(LocalStorageNamespace*, const SecurityOriginData&, unsigned quotaInBytes);
 
-    void openDatabaseAndImportItemsIfNeeded();
+    void openDatabaseAndImportItemsIfNeeded() const;
 
     void dispatchEvents(IPC::Connection* sourceConnection, uint64_t sourceStorageAreaID, const String& key, const String& oldValue, const String& newValue, const String& urlString) const;
 
     // Will be null if the storage area belongs to a session storage namespace.
     LocalStorageNamespace* m_localStorageNamespace;
-    RefPtr<LocalStorageDatabase> m_localStorageDatabase;
-    bool m_didImportItemsFromDatabase;
+    mutable RefPtr<LocalStorageDatabase> m_localStorageDatabase;
+    mutable bool m_didImportItemsFromDatabase { false };
 
-    Ref<SecurityOrigin> m_securityOrigin;
+    SecurityOriginData m_securityOrigin;
     unsigned m_quotaInBytes;
 
     RefPtr<StorageMap> m_storageMap;
@@ -90,10 +90,10 @@
 
     StorageManager* storageManager() const { return m_storageManager; }
 
-    Ref<StorageArea> getOrCreateStorageArea(Ref<SecurityOrigin>&&);
+    Ref<StorageArea> getOrCreateStorageArea(SecurityOriginData&&);
     void didDestroyStorageArea(StorageArea*);
 
-    void clearStorageAreasMatchingOrigin(const SecurityOrigin&);
+    void clearStorageAreasMatchingOrigin(const SecurityOriginData&);
     void clearAllStorageAreas();
 
 private:
@@ -104,7 +104,7 @@
     unsigned m_quotaInBytes;
 
     // We don't hold an explicit reference to the StorageAreas; they are kept alive by the m_storageAreasByConnection map in StorageManager.
-    HashMap<RefPtr<SecurityOrigin>, StorageArea*> m_storageAreaMap;
+    HashMap<SecurityOriginData, StorageArea*> m_storageAreaMap;
 };
 
 class StorageManager::TransientLocalStorageNamespace : public ThreadSafeRefCounted<TransientLocalStorageNamespace> {
@@ -118,21 +118,16 @@
     {
     }
 
-    Ref<StorageArea> getOrCreateStorageArea(Ref<SecurityOrigin>&& securityOrigin)
+    Ref<StorageArea> getOrCreateStorageArea(SecurityOriginData&& securityOrigin)
     {
-        auto& slot = m_storageAreaMap.add(securityOrigin.ptr(), nullptr).iterator->value;
-        if (slot)
-            return *slot;
-
-        auto storageArea = StorageArea::create(nullptr, WTFMove(securityOrigin), m_quotaInBytes);
-        slot = &storageArea.get();
-
-        return storageArea;
+        return *m_storageAreaMap.ensure(securityOrigin, [this, securityOrigin]() mutable {
+            return StorageArea::create(nullptr, WTFMove(securityOrigin), m_quotaInBytes);
+        }).iterator->value.copyRef();
     }
 
-    Vector<Ref<SecurityOrigin>> origins() const
+    Vector<SecurityOriginData> origins() const
     {
-        Vector<Ref<SecurityOrigin>> origins;
+        Vector<SecurityOriginData> origins;
 
         for (const auto& storageArea : m_storageAreaMap.values()) {
             if (!storageArea->items().isEmpty())
@@ -142,10 +137,10 @@
         return origins;
     }
 
-    void clearStorageAreasMatchingOrigin(const SecurityOrigin& securityOrigin)
+    void clearStorageAreasMatchingOrigin(const SecurityOriginData& securityOrigin)
     {
         for (auto& storageArea : m_storageAreaMap.values()) {
-            if (storageArea->securityOrigin().equal(&securityOrigin))
+            if (storageArea->securityOrigin() == securityOrigin)
                 storageArea->clear();
         }
     }
@@ -163,18 +158,17 @@
 
     const unsigned m_quotaInBytes = 5 * 1024 * 1024;
 
-    HashMap<RefPtr<SecurityOrigin>, RefPtr<StorageArea>> m_storageAreaMap;
+    HashMap<SecurityOriginData, RefPtr<StorageArea>> m_storageAreaMap;
 };
 
-Ref<StorageManager::StorageArea> StorageManager::StorageArea::create(LocalStorageNamespace* localStorageNamespace, Ref<SecurityOrigin>&& securityOrigin, unsigned quotaInBytes)
+auto StorageManager::StorageArea::create(LocalStorageNamespace* localStorageNamespace, const SecurityOriginData& securityOrigin, unsigned quotaInBytes) -> Ref<StorageManager::StorageArea>
 {
-    return adoptRef(*new StorageArea(localStorageNamespace, WTFMove(securityOrigin), quotaInBytes));
+    return adoptRef(*new StorageArea(localStorageNamespace, securityOrigin, quotaInBytes));
 }
 
-StorageManager::StorageArea::StorageArea(LocalStorageNamespace* localStorageNamespace, Ref<SecurityOrigin>&& securityOrigin, unsigned quotaInBytes)
+StorageManager::StorageArea::StorageArea(LocalStorageNamespace* localStorageNamespace, const SecurityOriginData& securityOrigin, unsigned quotaInBytes)
     : m_localStorageNamespace(localStorageNamespace)
-    , m_didImportItemsFromDatabase(false)
-    , m_securityOrigin(WTFMove(securityOrigin))
+    , m_securityOrigin(securityOrigin)
     , m_quotaInBytes(quotaInBytes)
     , m_storageMap(StorageMap::create(m_quotaInBytes))
 {
@@ -207,7 +201,7 @@
 {
     ASSERT(!m_localStorageNamespace);
 
-    auto storageArea = StorageArea::create(0, m_securityOrigin.copyRef(), m_quotaInBytes);
+    auto storageArea = StorageArea::create(nullptr, m_securityOrigin, m_quotaInBytes);
     storageArea->m_storageMap = m_storageMap;
 
     return storageArea;
@@ -265,7 +259,7 @@
     dispatchEvents(sourceConnection, sourceStorageAreaID, String(), String(), String(), urlString);
 }
 
-const HashMap<String, String>& StorageManager::StorageArea::items()
+const HashMap<String, String>& StorageManager::StorageArea::items() const
 {
     openDatabaseAndImportItemsIfNeeded();
 
@@ -285,7 +279,7 @@
         it->first->send(Messages::StorageAreaMap::ClearCache(), it->second);
 }
 
-void StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded()
+void StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded() const
 {
     if (!m_localStorageNamespace)
         return;
@@ -292,7 +286,7 @@
 
     // We open the database here even if we've already imported our items to ensure that the database is open if we need to write to it.
     if (!m_localStorageDatabase)
-        m_localStorageDatabase = LocalStorageDatabase::create(m_localStorageNamespace->storageManager()->m_queue.copyRef(), m_localStorageNamespace->storageManager()->m_localStorageDatabaseTracker.copyRef(), m_securityOrigin.copyRef());
+        m_localStorageDatabase = LocalStorageDatabase::create(m_localStorageNamespace->storageManager()->m_queue.copyRef(), m_localStorageNamespace->storageManager()->m_localStorageDatabaseTracker.copyRef(), m_securityOrigin);
 
     if (m_didImportItemsFromDatabase)
         return;
@@ -329,9 +323,9 @@
     ASSERT(m_storageAreaMap.isEmpty());
 }
 
-Ref<StorageManager::StorageArea> StorageManager::LocalStorageNamespace::getOrCreateStorageArea(Ref<SecurityOrigin>&& securityOrigin)
+auto StorageManager::LocalStorageNamespace::getOrCreateStorageArea(SecurityOriginData&& securityOrigin) -> Ref<StorageArea>
 {
-    auto& slot = m_storageAreaMap.add(securityOrigin.ptr(), nullptr).iterator->value;
+    auto& slot = m_storageAreaMap.add(securityOrigin, nullptr).iterator->value;
     if (slot)
         return *slot;
 
@@ -343,9 +337,9 @@
 
 void StorageManager::LocalStorageNamespace::didDestroyStorageArea(StorageArea* storageArea)
 {
-    ASSERT(m_storageAreaMap.contains(&storageArea->securityOrigin()));
+    ASSERT(m_storageAreaMap.contains(storageArea->securityOrigin()));
 
-    m_storageAreaMap.remove(&storageArea->securityOrigin());
+    m_storageAreaMap.remove(storageArea->securityOrigin());
     if (!m_storageAreaMap.isEmpty())
         return;
 
@@ -353,10 +347,10 @@
     m_storageManager->m_localStorageNamespaces.remove(m_storageNamespaceID);
 }
 
-void StorageManager::LocalStorageNamespace::clearStorageAreasMatchingOrigin(const SecurityOrigin& securityOrigin)
+void StorageManager::LocalStorageNamespace::clearStorageAreasMatchingOrigin(const SecurityOriginData& securityOrigin)
 {
     for (const auto& originAndStorageArea : m_storageAreaMap) {
-        if (originAndStorageArea.key->equal(&securityOrigin))
+        if (originAndStorageArea.key == securityOrigin)
             originAndStorageArea.value->clear();
     }
 }
@@ -363,8 +357,8 @@
 
 void StorageManager::LocalStorageNamespace::clearAllStorageAreas()
 {
-    for (auto it = m_storageAreaMap.begin(), end = m_storageAreaMap.end(); it != end; ++it)
-        it->value->clear();
+    for (auto* storageArea : m_storageAreaMap.values())
+        storageArea->clear();
 }
 
 class StorageManager::SessionStorageNamespace : public ThreadSafeRefCounted<SessionStorageNamespace> {
@@ -377,13 +371,13 @@
     IPC::Connection* allowedConnection() const { return m_allowedConnection.get(); }
     void setAllowedConnection(IPC::Connection*);
 
-    Ref<StorageArea> getOrCreateStorageArea(Ref<SecurityOrigin>&&);
+    Ref<StorageArea> getOrCreateStorageArea(SecurityOriginData&&);
 
     void cloneTo(SessionStorageNamespace& newSessionStorageNamespace);
 
-    Vector<Ref<SecurityOrigin>> origins() const
+    Vector<SecurityOriginData> origins() const
     {
-        Vector<Ref<SecurityOrigin>> origins;
+        Vector<SecurityOriginData> origins;
 
         for (const auto& storageArea : m_storageAreaMap.values()) {
             if (!storageArea->items().isEmpty())
@@ -393,10 +387,10 @@
         return origins;
     }
 
-    void clearStorageAreasMatchingOrigin(const SecurityOrigin& securityOrigin)
+    void clearStorageAreasMatchingOrigin(const SecurityOriginData& securityOrigin)
     {
         for (auto& storageArea : m_storageAreaMap.values()) {
-            if (storageArea->securityOrigin().equal(&securityOrigin))
+            if (storageArea->securityOrigin() == securityOrigin)
                 storageArea->clear();
         }
     }
@@ -413,7 +407,7 @@
     RefPtr<IPC::Connection> m_allowedConnection;
     unsigned m_quotaInBytes;
 
-    HashMap<RefPtr<SecurityOrigin>, RefPtr<StorageArea>> m_storageAreaMap;
+    HashMap<SecurityOriginData, RefPtr<StorageArea>> m_storageAreaMap;
 };
 
 Ref<StorageManager::SessionStorageNamespace> StorageManager::SessionStorageNamespace::create(unsigned quotaInBytes)
@@ -437,13 +431,11 @@
     m_allowedConnection = allowedConnection;
 }
 
-Ref<StorageManager::StorageArea> StorageManager::SessionStorageNamespace::getOrCreateStorageArea(Ref<SecurityOrigin>&& securityOrigin)
+auto StorageManager::SessionStorageNamespace::getOrCreateStorageArea(SecurityOriginData&& securityOrigin) -> Ref<StorageArea>
 {
-    auto& slot = m_storageAreaMap.add(securityOrigin.ptr(), nullptr).iterator->value;
-    if (!slot)
-        slot = StorageArea::create(0, WTFMove(securityOrigin), m_quotaInBytes);
-
-    return *slot;
+    return *m_storageAreaMap.ensure(securityOrigin, [this, securityOrigin]() mutable {
+        return StorageArea::create(nullptr, WTFMove(securityOrigin), m_quotaInBytes);
+    }).iterator->value.copyRef();
 }
 
 void StorageManager::SessionStorageNamespace::cloneTo(SessionStorageNamespace& newSessionStorageNamespace)
@@ -450,8 +442,8 @@
 {
     ASSERT_UNUSED(newSessionStorageNamespace, newSessionStorageNamespace.isEmpty());
 
-    for (HashMap<RefPtr<SecurityOrigin>, RefPtr<StorageArea>>::const_iterator it = m_storageAreaMap.begin(), end = m_storageAreaMap.end(); it != end; ++it)
-        newSessionStorageNamespace.m_storageAreaMap.add(it->key, it->value->clone());
+    for (auto& pair : m_storageAreaMap)
+        newSessionStorageNamespace.m_storageAreaMap.add(pair.key, pair.value->clone());
 }
 
 Ref<StorageManager> StorageManager::create(const String& localStorageDirectory)
@@ -539,16 +531,14 @@
     });
 }
 
-void StorageManager::getSessionStorageOrigins(std::function<void (HashSet<RefPtr<WebCore::SecurityOrigin>>&&)>&& completionHandler)
+void StorageManager::getSessionStorageOrigins(std::function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler)
 {
-    RefPtr<StorageManager> storageManager(this);
-
     m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
-        HashSet<RefPtr<SecurityOrigin>> origins;
+        HashSet<SecurityOriginData> origins;
 
         for (const auto& sessionStorageNamespace : m_sessionStorageNamespaces.values()) {
             for (auto& origin : sessionStorageNamespace->origins())
-                origins.add(WTFMove(origin));
+                origins.add(origin);
         }
 
         RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
@@ -557,7 +547,7 @@
     });
 }
 
-void StorageManager::deleteSessionStorageOrigins(std::function<void ()>&& completionHandler)
+void StorageManager::deleteSessionStorageOrigins(std::function<void()>&& completionHandler)
 {
     m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
         for (auto& sessionStorageNamespace : m_sessionStorageNamespaces.values())
@@ -567,18 +557,18 @@
     });
 }
 
-void StorageManager::deleteSessionStorageEntriesForOrigins(const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, std::function<void ()>&& completionHandler)
+void StorageManager::deleteSessionStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>& origins, std::function<void()>&& completionHandler)
 {
-    Vector<RefPtr<WebCore::SecurityOrigin>> copiedOrigins;
+    Vector<WebCore::SecurityOriginData> copiedOrigins;
     copiedOrigins.reserveInitialCapacity(origins.size());
 
     for (auto& origin : origins)
-        copiedOrigins.uncheckedAppend(origin->isolatedCopy());
+        copiedOrigins.uncheckedAppend(origin.isolatedCopy());
 
     m_queue->dispatch([this, protectedThis = makeRef(*this), copiedOrigins = WTFMove(copiedOrigins), completionHandler = WTFMove(completionHandler)]() mutable {
         for (auto& origin : copiedOrigins) {
             for (auto& sessionStorageNamespace : m_sessionStorageNamespaces.values())
-                sessionStorageNamespace->clearStorageAreasMatchingOrigin(*origin);
+                sessionStorageNamespace->clearStorageAreasMatchingOrigin(origin);
         }
 
         RunLoop::main().dispatch(WTFMove(completionHandler));
@@ -585,17 +575,17 @@
     });
 }
 
-void StorageManager::getLocalStorageOrigins(std::function<void (HashSet<RefPtr<WebCore::SecurityOrigin>>&&)>&& completionHandler)
+void StorageManager::getLocalStorageOrigins(std::function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler)
 {
     m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
-        HashSet<RefPtr<SecurityOrigin>> origins;
+        HashSet<SecurityOriginData> origins;
 
         for (auto& origin : m_localStorageDatabaseTracker->origins())
-            origins.add(WTFMove(origin));
+            origins.add(origin);
 
         for (auto& transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values()) {
             for (auto& origin : transientLocalStorageNamespace->origins())
-                origins.add(WTFMove(origin));
+                origins.add(origin);
         }
 
         RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
@@ -615,7 +605,7 @@
     });
 }
 
-void StorageManager::deleteLocalStorageEntriesForOrigin(const SecurityOrigin& securityOrigin)
+void StorageManager::deleteLocalStorageEntriesForOrigin(SecurityOriginData&& securityOrigin)
 {
     m_queue->dispatch([this, protectedThis = makeRef(*this), copiedOrigin = securityOrigin.isolatedCopy()]() mutable {
         for (auto& localStorageNamespace : m_localStorageNamespaces.values())
@@ -624,11 +614,11 @@
         for (auto& transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
             transientLocalStorageNamespace->clearStorageAreasMatchingOrigin(copiedOrigin);
 
-        m_localStorageDatabaseTracker->deleteDatabaseWithOrigin(copiedOrigin.ptr());
+        m_localStorageDatabaseTracker->deleteDatabaseWithOrigin(copiedOrigin);
     });
 }
 
-void StorageManager::deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point time, std::function<void ()>&& completionHandler)
+void StorageManager::deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point time, std::function<void()>&& completionHandler)
 {
     m_queue->dispatch([this, protectedThis = makeRef(*this), time, completionHandler = WTFMove(completionHandler)]() mutable {
         auto deletedOrigins = m_localStorageDatabaseTracker->deleteDatabasesModifiedSince(time);
@@ -635,7 +625,7 @@
 
         for (const auto& origin : deletedOrigins) {
             for (auto& localStorageNamespace : m_localStorageNamespaces.values())
-                localStorageNamespace->clearStorageAreasMatchingOrigin(origin.get());
+                localStorageNamespace->clearStorageAreasMatchingOrigin(origin);
         }
 
         for (auto& transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
@@ -645,23 +635,23 @@
     });
 }
 
-void StorageManager::deleteLocalStorageEntriesForOrigins(const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, std::function<void ()>&& completionHandler)
+void StorageManager::deleteLocalStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>& origins, std::function<void()>&& completionHandler)
 {
-    Vector<RefPtr<WebCore::SecurityOrigin>> copiedOrigins;
+    Vector<SecurityOriginData> copiedOrigins;
     copiedOrigins.reserveInitialCapacity(origins.size());
 
     for (auto& origin : origins)
-        copiedOrigins.uncheckedAppend(origin->isolatedCopy());
+        copiedOrigins.uncheckedAppend(origin.isolatedCopy());
 
     m_queue->dispatch([this, protectedThis = makeRef(*this), copiedOrigins = WTFMove(copiedOrigins), completionHandler = WTFMove(completionHandler)]() mutable {
         for (auto& origin : copiedOrigins) {
             for (auto& localStorageNamespace : m_localStorageNamespaces.values())
-                localStorageNamespace->clearStorageAreasMatchingOrigin(*origin);
+                localStorageNamespace->clearStorageAreasMatchingOrigin(origin);
 
             for (auto& transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
-                transientLocalStorageNamespace->clearStorageAreasMatchingOrigin(*origin);
+                transientLocalStorageNamespace->clearStorageAreasMatchingOrigin(origin);
 
-            m_localStorageDatabaseTracker->deleteDatabaseWithOrigin(origin.get());
+            m_localStorageDatabaseTracker->deleteDatabaseWithOrigin(origin);
         }
 
         RunLoop::main().dispatch(WTFMove(completionHandler));
@@ -668,7 +658,7 @@
     });
 }
 
-void StorageManager::createLocalStorageMap(IPC::Connection& connection, uint64_t storageMapID, uint64_t storageNamespaceID, const SecurityOriginData& securityOriginData)
+void StorageManager::createLocalStorageMap(IPC::Connection& connection, uint64_t storageMapID, uint64_t storageNamespaceID, SecurityOriginData&& securityOriginData)
 {
     std::pair<RefPtr<IPC::Connection>, uint64_t> connectionAndStorageMapIDPair(&connection, storageMapID);
 
@@ -686,19 +676,17 @@
     // FIXME: This should be a message check.
     ASSERT(localStorageNamespace);
 
-    auto storageArea = localStorageNamespace->getOrCreateStorageArea(securityOriginData.securityOrigin());
+    auto storageArea = localStorageNamespace->getOrCreateStorageArea(WTFMove(securityOriginData));
     storageArea->addListener(connection, storageMapID);
 
     result.iterator->value = WTFMove(storageArea);
 }
 
-void StorageManager::createTransientLocalStorageMap(IPC::Connection& connection, uint64_t storageMapID, uint64_t storageNamespaceID, const SecurityOriginData& topLevelOriginData, const SecurityOriginData& securityOriginData)
+void StorageManager::createTransientLocalStorageMap(IPC::Connection& connection, uint64_t storageMapID, uint64_t storageNamespaceID, SecurityOriginData&& topLevelOriginData, SecurityOriginData&& origin)
 {
     // FIXME: This should be a message check.
     ASSERT(m_storageAreasByConnection.isValidKey({ &connection, storageMapID }));
 
-    Ref<SecurityOrigin> origin = securityOriginData.securityOrigin();
-
     // See if we already have session storage for this connection/origin combo.
     // If so, update the map with the new ID, otherwise keep on trucking.
     for (auto it = m_storageAreasByConnection.begin(), end = m_storageAreasByConnection.end(); it != end; ++it) {
@@ -707,7 +695,7 @@
         Ref<StorageArea> area = *it->value;
         if (!area->isSessionStorage())
             continue;
-        if (!origin->isSameSchemeHostPort(&area->securityOrigin()))
+        if (!origin.securityOrigin()->isSameSchemeHostPort(area->securityOrigin().securityOrigin().ptr()))
             continue;
         area->addListener(connection, storageMapID);
         m_storageAreasByConnection.remove(it);
@@ -720,15 +708,15 @@
     // FIXME: This should be a message check.
     ASSERT(!slot);
 
-    TransientLocalStorageNamespace* transientLocalStorageNamespace = getOrCreateTransientLocalStorageNamespace(storageNamespaceID, topLevelOriginData.securityOrigin());
+    TransientLocalStorageNamespace* transientLocalStorageNamespace = getOrCreateTransientLocalStorageNamespace(storageNamespaceID, WTFMove(topLevelOriginData));
 
-    auto storageArea = transientLocalStorageNamespace->getOrCreateStorageArea(securityOriginData.securityOrigin());
+    auto storageArea = transientLocalStorageNamespace->getOrCreateStorageArea(WTFMove(origin));
     storageArea->addListener(connection, storageMapID);
 
     slot = WTFMove(storageArea);
 }
 
-void StorageManager::createSessionStorageMap(IPC::Connection& connection, uint64_t storageMapID, uint64_t storageNamespaceID, const SecurityOriginData& securityOriginData)
+void StorageManager::createSessionStorageMap(IPC::Connection& connection, uint64_t storageMapID, uint64_t storageNamespaceID, SecurityOriginData&& securityOriginData)
 {
     // FIXME: This should be a message check.
     ASSERT(m_sessionStorageNamespaces.isValidKey(storageNamespaceID));
@@ -751,7 +739,7 @@
     // FIXME: This should be a message check.
     ASSERT(&connection == sessionStorageNamespace->allowedConnection());
 
-    auto storageArea = sessionStorageNamespace->getOrCreateStorageArea(securityOriginData.securityOrigin());
+    auto storageArea = sessionStorageNamespace->getOrCreateStorageArea(WTFMove(securityOriginData));
     storageArea->addListener(connection, storageMapID);
 
     slot = WTFMove(storageArea);
@@ -859,7 +847,7 @@
 StorageManager::LocalStorageNamespace* StorageManager::getOrCreateLocalStorageNamespace(uint64_t storageNamespaceID)
 {
     if (!m_localStorageNamespaces.isValidKey(storageNamespaceID))
-        return 0;
+        return nullptr;
 
     auto& slot = m_localStorageNamespaces.add(storageNamespaceID, nullptr).iterator->value;
     if (!slot)
@@ -868,12 +856,12 @@
     return slot.get();
 }
 
-StorageManager::TransientLocalStorageNamespace* StorageManager::getOrCreateTransientLocalStorageNamespace(uint64_t storageNamespaceID, WebCore::SecurityOrigin& topLevelOrigin)
+StorageManager::TransientLocalStorageNamespace* StorageManager::getOrCreateTransientLocalStorageNamespace(uint64_t storageNamespaceID, WebCore::SecurityOriginData&& topLevelOrigin)
 {
-    if (!m_transientLocalStorageNamespaces.isValidKey({ storageNamespaceID, &topLevelOrigin }))
+    if (!m_transientLocalStorageNamespaces.isValidKey({ storageNamespaceID, topLevelOrigin }))
         return nullptr;
 
-    auto& slot = m_transientLocalStorageNamespaces.add({ storageNamespaceID, &topLevelOrigin }, nullptr).iterator->value;
+    auto& slot = m_transientLocalStorageNamespaces.add({ storageNamespaceID, WTFMove(topLevelOrigin) }, nullptr).iterator->value;
     if (!slot)
         slot = TransientLocalStorageNamespace::create();
 

Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h	2016-11-12 01:18:22 UTC (rev 208633)
@@ -23,11 +23,11 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef StorageManager_h
-#define StorageManager_h
+#pragma once
 
 #include "Connection.h"
 #include "LocalStorageDatabaseTracker.h"
+#include <WebCore/SecurityOriginData.h>
 #include <WebCore/SecurityOriginHash.h>
 #include <chrono>
 #include <wtf/Forward.h>
@@ -37,7 +37,6 @@
 
 namespace WebCore {
 class SecurityOrigin;
-struct SecurityOriginData;
 }
 
 namespace WebKit {
@@ -59,17 +58,17 @@
     void processDidCloseConnection(WebProcessProxy&, IPC::Connection&);
     void applicationWillTerminate();
 
-    void getSessionStorageOrigins(std::function<void (HashSet<RefPtr<WebCore::SecurityOrigin>>&&)>&& completionHandler);
-    void deleteSessionStorageOrigins(std::function<void ()>&& completionHandler);
-    void deleteSessionStorageEntriesForOrigins(const Vector<RefPtr<WebCore::SecurityOrigin>>&, std::function<void ()>&& completionHandler);
+    void getSessionStorageOrigins(std::function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler);
+    void deleteSessionStorageOrigins(std::function<void()>&& completionHandler);
+    void deleteSessionStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>&, std::function<void()>&& completionHandler);
 
-    void getLocalStorageOrigins(std::function<void (HashSet<RefPtr<WebCore::SecurityOrigin>>&&)>&& completionHandler);
-    void deleteLocalStorageEntriesForOrigin(const WebCore::SecurityOrigin&);
+    void getLocalStorageOrigins(std::function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler);
+    void deleteLocalStorageEntriesForOrigin(WebCore::SecurityOriginData&&);
 
-    void deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point, std::function<void ()>&& completionHandler);
-    void deleteLocalStorageEntriesForOrigins(const Vector<RefPtr<WebCore::SecurityOrigin>>&, std::function<void ()>&& completionHandler);
+    void deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point, std::function<void()>&& completionHandler);
+    void deleteLocalStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>&, std::function<void()>&& completionHandler);
 
-    void getLocalStorageOriginDetails(std::function<void (Vector<LocalStorageDatabaseTracker::OriginDetails>)>&& completionHandler);
+    void getLocalStorageOriginDetails(std::function<void(Vector<LocalStorageDatabaseTracker::OriginDetails>)>&& completionHandler);
 
 private:
     explicit StorageManager(const String& localStorageDirectory);
@@ -79,9 +78,9 @@
     void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>& replyEncoder) override;
 
     // Message handlers.
-    void createLocalStorageMap(IPC::Connection&, uint64_t storageMapID, uint64_t storageNamespaceID, const WebCore::SecurityOriginData&);
-    void createTransientLocalStorageMap(IPC::Connection&, uint64_t storageMapID, uint64_t storageNamespaceID, const WebCore::SecurityOriginData& topLevelOriginData, const WebCore::SecurityOriginData&);
-    void createSessionStorageMap(IPC::Connection&, uint64_t storageMapID, uint64_t storageNamespaceID, const WebCore::SecurityOriginData&);
+    void createLocalStorageMap(IPC::Connection&, uint64_t storageMapID, uint64_t storageNamespaceID, WebCore::SecurityOriginData&&);
+    void createTransientLocalStorageMap(IPC::Connection&, uint64_t storageMapID, uint64_t storageNamespaceID, WebCore::SecurityOriginData&& topLevelOriginData, WebCore::SecurityOriginData&&);
+    void createSessionStorageMap(IPC::Connection&, uint64_t storageMapID, uint64_t storageNamespaceID, WebCore::SecurityOriginData&&);
     void destroyStorageMap(IPC::Connection&, uint64_t storageMapID);
 
     void getValues(IPC::Connection&, uint64_t storageMapID, uint64_t storageMapSeed, HashMap<String, String>& values);
@@ -96,7 +95,7 @@
     LocalStorageNamespace* getOrCreateLocalStorageNamespace(uint64_t storageNamespaceID);
 
     class TransientLocalStorageNamespace;
-    TransientLocalStorageNamespace* getOrCreateTransientLocalStorageNamespace(uint64_t storageNamespaceID, WebCore::SecurityOrigin& topLevelOrigin);
+    TransientLocalStorageNamespace* getOrCreateTransientLocalStorageNamespace(uint64_t storageNamespaceID, WebCore::SecurityOriginData&& topLevelOrigin);
 
     Ref<WorkQueue> m_queue;
 
@@ -103,7 +102,7 @@
     Ref<LocalStorageDatabaseTracker> m_localStorageDatabaseTracker;
     HashMap<uint64_t, RefPtr<LocalStorageNamespace>> m_localStorageNamespaces;
 
-    HashMap<std::pair<uint64_t, RefPtr<WebCore::SecurityOrigin>>, RefPtr<TransientLocalStorageNamespace>> m_transientLocalStorageNamespaces;
+    HashMap<std::pair<uint64_t, WebCore::SecurityOriginData>, RefPtr<TransientLocalStorageNamespace>> m_transientLocalStorageNamespaces;
 
     class SessionStorageNamespace;
     HashMap<uint64_t, RefPtr<SessionStorageNamespace>> m_sessionStorageNamespaces;
@@ -112,5 +111,3 @@
 };
 
 } // namespace WebKit
-
-#endif // StorageManager_h

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -749,7 +749,7 @@
     });
 }
 
-void WebProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet<WebsiteDataType> dataTypes, const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, Function<void ()> completionHandler)
+void WebProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet<WebsiteDataType> dataTypes, const Vector<WebCore::SecurityOriginData>& origins, Function<void()> completionHandler)
 {
     ASSERT(canSendMessage());
 
@@ -756,11 +756,7 @@
     auto token = throttler().backgroundActivityToken();
     RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), ProcessSuspension, "%p - WebProcessProxy is taking a background assertion because the Web process is deleting Website data for several origins", this);
 
-    Vector<SecurityOriginData> originData;
-    for (auto& origin : origins)
-        originData.append(SecurityOriginData::fromSecurityOrigin(*origin));
-
-    connection()->sendWithReply(Messages::WebProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, originData), 0, RunLoop::main(), [this, token, completionHandler = WTFMove(completionHandler), sessionID](auto reply) {
+    connection()->sendWithReply(Messages::WebProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, origins), 0, RunLoop::main(), [this, token, completionHandler = WTFMove(completionHandler), sessionID](auto reply) {
         completionHandler();
         RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), ProcessSuspension, "%p - WebProcessProxy is releasing a background assertion because the Web process is done deleting Website data for several origins", this);
     });

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.h (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2016-11-12 01:18:22 UTC (rev 208633)
@@ -118,9 +118,9 @@
     void didSaveToPageCache();
     void releasePageCache();
 
-    void fetchWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, Function<void (WebsiteData)> completionHandler);
-    void deleteWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, std::chrono::system_clock::time_point modifiedSince, Function<void ()> completionHandler);
-    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet<WebsiteDataType>, const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, Function<void ()> completionHandler);
+    void fetchWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, Function<void(WebsiteData)> completionHandler);
+    void deleteWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, std::chrono::system_clock::time_point modifiedSince, Function<void()> completionHandler);
+    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet<WebsiteDataType>, const Vector<WebCore::SecurityOriginData>&, Function<void()> completionHandler);
 
     void enableSuddenTermination();
     void disableSuddenTermination();

Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -66,9 +66,9 @@
 }
 #endif
 
-String WebsiteDataRecord::displayNameForOrigin(const WebCore::SecurityOrigin& securityOrigin)
+String WebsiteDataRecord::displayNameForOrigin(const WebCore::SecurityOriginData& securityOrigin)
 {
-    const auto& protocol = securityOrigin.protocol();
+    const auto& protocol = securityOrigin.protocol;
 
     if (protocol == "file")
         return displayNameForLocalFiles();
@@ -75,17 +75,17 @@
 
 #if ENABLE(PUBLIC_SUFFIX_LIST)
     if (protocol == "http" || protocol == "https")
-        return WebCore::topPrivatelyControlledDomain(securityOrigin.host());
+        return WebCore::topPrivatelyControlledDomain(securityOrigin.host);
 #endif
 
     return String();
 }
 
-void WebsiteDataRecord::add(WebsiteDataType type, RefPtr<WebCore::SecurityOrigin>&& origin)
+void WebsiteDataRecord::add(WebsiteDataType type, const WebCore::SecurityOriginData& origin)
 {
     types |= type;
 
-    origins.add(WTFMove(origin));
+    origins.add(origin);
 }
 
 void WebsiteDataRecord::addCookieHostName(const String& hostName)

Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.h (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.h	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.h	2016-11-12 01:18:22 UTC (rev 208633)
@@ -23,10 +23,10 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef WebsiteDataRecord_h
-#define WebsiteDataRecord_h
+#pragma once
 
 #include "WebsiteDataType.h"
+#include <WebCore/SecurityOriginData.h>
 #include <WebCore/SecurityOriginHash.h>
 #include <wtf/HashMap.h>
 #include <wtf/HashSet.h>
@@ -46,9 +46,9 @@
 #if ENABLE(NETSCAPE_PLUGIN_API)
     static String displayNameForPluginDataHostName(const String& hostName);
 #endif
-    static String displayNameForOrigin(const WebCore::SecurityOrigin&);
+    static String displayNameForOrigin(const WebCore::SecurityOriginData&);
 
-    void add(WebsiteDataType, RefPtr<WebCore::SecurityOrigin>&&);
+    void add(WebsiteDataType, const WebCore::SecurityOriginData&);
     void addCookieHostName(const String& hostName);
 #if ENABLE(NETSCAPE_PLUGIN_API)
     void addPluginDataHostName(const String& hostName);
@@ -63,7 +63,7 @@
     };
     Optional<Size> size;
 
-    HashSet<RefPtr<WebCore::SecurityOrigin>> origins;
+    HashSet<WebCore::SecurityOriginData> origins;
     HashSet<String> cookieHostNames;
 #if ENABLE(NETSCAPE_PLUGIN_API)
     HashSet<String> pluginDataHostNames;
@@ -71,5 +71,3 @@
 };
 
 }
-
-#endif // WebsiteDataRecord_h

Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp	2016-11-12 01:18:22 UTC (rev 208633)
@@ -179,7 +179,7 @@
             --pendingCallbacks;
 
             for (auto& entry : websiteData.entries) {
-                auto displayName = WebsiteDataRecord::displayNameForOrigin(*entry.origin);
+                auto displayName = WebsiteDataRecord::displayNameForOrigin(WebCore::SecurityOriginData::fromSecurityOrigin(*entry.origin));
                 if (!displayName)
                     continue;
 
@@ -187,7 +187,7 @@
                 if (!record.displayName)
                     record.displayName = WTFMove(displayName);
 
-                record.add(entry.type, WTFMove(entry.origin));
+                record.add(entry.type, WebCore::SecurityOriginData::fromSecurityOrigin(*entry.origin));
 
                 if (fetchOptions.contains(WebsiteDataFetchOption::ComputeSizes)) {
                     if (!record.size)
@@ -325,11 +325,11 @@
     if (dataTypes.contains(WebsiteDataType::SessionStorage) && m_storageManager) {
         callbackAggregator->addPendingCallback();
 
-        m_storageManager->getSessionStorageOrigins([callbackAggregator](HashSet<RefPtr<WebCore::SecurityOrigin>>&& origins) {
+        m_storageManager->getSessionStorageOrigins([callbackAggregator](HashSet<WebCore::SecurityOriginData>&& origins) {
             WebsiteData websiteData;
 
             while (!origins.isEmpty())
-                websiteData.entries.append(WebsiteData::Entry { origins.takeAny(), WebsiteDataType::SessionStorage, 0 });
+                websiteData.entries.append(WebsiteData::Entry { origins.takeAny().securityOrigin(), WebsiteDataType::SessionStorage, 0 });
 
             callbackAggregator->removePendingCallback(WTFMove(websiteData));
         });
@@ -338,11 +338,11 @@
     if (dataTypes.contains(WebsiteDataType::LocalStorage) && m_storageManager) {
         callbackAggregator->addPendingCallback();
 
-        m_storageManager->getLocalStorageOrigins([callbackAggregator](HashSet<RefPtr<WebCore::SecurityOrigin>>&& origins) {
+        m_storageManager->getLocalStorageOrigins([callbackAggregator](HashSet<WebCore::SecurityOriginData>&& origins) {
             WebsiteData websiteData;
 
             while (!origins.isEmpty())
-                websiteData.entries.append(WebsiteData::Entry { origins.takeAny(), WebsiteDataType::LocalStorage, 0 });
+                websiteData.entries.append(WebsiteData::Entry { origins.takeAny().securityOrigin(), WebsiteDataType::LocalStorage, 0 });
 
             callbackAggregator->removePendingCallback(WTFMove(websiteData));
         });
@@ -411,7 +411,7 @@
             RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins)]() mutable {
                 WebsiteData websiteData;
                 for (auto& origin : origins)
-                    websiteData.entries.append(WebsiteData::Entry { WTFMove(origin), WebsiteDataType::MediaKeys, 0 });
+                    websiteData.entries.append(WebsiteData::Entry { origin.securityOrigin().ptr(), WebsiteDataType::MediaKeys, 0 });
 
                 callbackAggregator->removePendingCallback(WTFMove(websiteData));
             });
@@ -534,7 +534,7 @@
         }
 
         unsigned pendingCallbacks = 0;
-        std::function<void ()> completionHandler;
+        std::function<void()> completionHandler;
     };
 
     RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator(WTFMove(completionHandler)));
@@ -735,7 +735,7 @@
 
 void WebsiteDataStore::removeData(OptionSet<WebsiteDataType> dataTypes, const Vector<WebsiteDataRecord>& dataRecords, std::function<void ()> completionHandler)
 {
-    Vector<RefPtr<WebCore::SecurityOrigin>> origins;
+    Vector<WebCore::SecurityOriginData> origins;
 
     for (const auto& dataRecord : dataRecords) {
         for (auto& origin : dataRecord.origins)
@@ -768,13 +768,13 @@
         }
 
         unsigned pendingCallbacks = 0;
-        std::function<void ()> completionHandler;
+        std::function<void()> completionHandler;
     };
 
     RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator(WTFMove(completionHandler)));
     
     if (dataTypes.contains(WebsiteDataType::DiskCache)) {
-        HashSet<RefPtr<WebCore::SecurityOrigin>> origins;
+        HashSet<WebCore::SecurityOriginData> origins;
         for (const auto& dataRecord : dataRecords) {
             for (const auto& origin : dataRecord.origins)
                 origins.add(origin);
@@ -783,7 +783,13 @@
 #if ENABLE(VIDEO)
         callbackAggregator->addPendingCallback();
         m_queue->dispatch([origins = WTFMove(origins), mediaCacheDirectory = m_configuration.mediaCacheDirectory.isolatedCopy(), callbackAggregator] {
-            WebCore::HTMLMediaElement::clearMediaCacheForOrigins(mediaCacheDirectory, origins);
+
+            // FIXME: Move SecurityOrigin::toRawString to SecurityOriginData and
+            // make HTMLMediaElement::clearMediaCacheForOrigins take SecurityOriginData.
+            HashSet<RefPtr<WebCore::SecurityOrigin>> securityOrigins;
+            for (auto& origin : origins)
+                securityOrigins.add(origin.securityOrigin());
+            WebCore::HTMLMediaElement::clearMediaCacheForOrigins(mediaCacheDirectory, securityOrigins);
             
             WTF::RunLoop::main().dispatch([callbackAggregator] {
                 callbackAggregator->removePendingCallback();
@@ -865,7 +871,7 @@
     }
 
     if (dataTypes.contains(WebsiteDataType::OfflineWebApplicationCache) && isPersistent()) {
-        HashSet<RefPtr<WebCore::SecurityOrigin>> origins;
+        HashSet<WebCore::SecurityOriginData> origins;
         for (const auto& dataRecord : dataRecords) {
             for (const auto& origin : dataRecord.origins)
                 origins.add(origin);
@@ -876,7 +882,7 @@
             auto storage = WebCore::ApplicationCacheStorage::create(applicationCacheDirectory, applicationCacheFlatFileSubdirectoryName);
 
             for (const auto& origin : origins)
-                storage->deleteCacheForOrigin(*origin);
+                storage->deleteCacheForOrigin(origin.securityOrigin());
 
             WTF::RunLoop::main().dispatch([callbackAggregator] {
                 callbackAggregator->removePendingCallback();
@@ -885,7 +891,7 @@
     }
 
     if (dataTypes.contains(WebsiteDataType::WebSQLDatabases) && isPersistent()) {
-        HashSet<RefPtr<WebCore::SecurityOrigin>> origins;
+        HashSet<WebCore::SecurityOriginData> origins;
         for (const auto& dataRecord : dataRecords) {
             for (const auto& origin : dataRecord.origins)
                 origins.add(origin);
@@ -896,7 +902,7 @@
             auto databaseTracker = WebCore::DatabaseTracker::trackerWithDatabasePath(webSQLDatabaseDirectory);
 
             for (const auto& origin : origins)
-                databaseTracker->deleteOrigin(origin.get());
+                databaseTracker->deleteOrigin(origin.securityOrigin().ptr());
 
             RunLoop::main().dispatch([callbackAggregator] {
                 callbackAggregator->removePendingCallback();
@@ -918,7 +924,7 @@
 #endif
 
     if (dataTypes.contains(WebsiteDataType::MediaKeys) && isPersistent()) {
-        HashSet<RefPtr<WebCore::SecurityOrigin>> origins;
+        HashSet<WebCore::SecurityOriginData> origins;
         for (const auto& dataRecord : dataRecords) {
             for (const auto& origin : dataRecord.origins)
                 origins.add(origin);
@@ -1082,11 +1088,11 @@
     return WebCore::pathByAppendingComponent(mediaKeyDirectory, "SecureStop.plist");
 }
 
-Vector<RefPtr<WebCore::SecurityOrigin>> WebsiteDataStore::mediaKeyOrigins(const String& mediaKeysStorageDirectory)
+Vector<WebCore::SecurityOriginData> WebsiteDataStore::mediaKeyOrigins(const String& mediaKeysStorageDirectory)
 {
     ASSERT(!mediaKeysStorageDirectory.isEmpty());
 
-    Vector<RefPtr<WebCore::SecurityOrigin>> origins;
+    Vector<WebCore::SecurityOriginData> origins;
 
     for (const auto& originPath : WebCore::listDirectory(mediaKeysStorageDirectory, "*")) {
         auto mediaKeyFile = computeMediaKeyFile(originPath);
@@ -1096,7 +1102,7 @@
         auto mediaKeyIdentifier = WebCore::pathGetFileName(originPath);
 
         if (auto securityOrigin = WebCore::SecurityOrigin::maybeCreateFromDatabaseIdentifier(mediaKeyIdentifier))
-            origins.append(WTFMove(securityOrigin));
+            origins.append(WebCore::SecurityOriginData::fromSecurityOrigin(*securityOrigin));
     }
 
     return origins;
@@ -1121,12 +1127,12 @@
     }
 }
 
-void WebsiteDataStore::removeMediaKeys(const String& mediaKeysStorageDirectory, const HashSet<RefPtr<WebCore::SecurityOrigin>>& origins)
+void WebsiteDataStore::removeMediaKeys(const String& mediaKeysStorageDirectory, const HashSet<WebCore::SecurityOriginData>& origins)
 {
     ASSERT(!mediaKeysStorageDirectory.isEmpty());
 
     for (const auto& origin : origins) {
-        auto mediaKeyDirectory = WebCore::pathByAppendingComponent(mediaKeysStorageDirectory, WebCore::SecurityOriginData::fromSecurityOrigin(*origin).databaseIdentifier());
+        auto mediaKeyDirectory = WebCore::pathByAppendingComponent(mediaKeysStorageDirectory, origin.databaseIdentifier());
         auto mediaKeyFile = computeMediaKeyFile(mediaKeyDirectory);
 
         WebCore::deleteFile(mediaKeyFile);

Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h (208632 => 208633)


--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h	2016-11-12 01:13:31 UTC (rev 208632)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h	2016-11-12 01:18:22 UTC (rev 208633)
@@ -23,10 +23,10 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef WebsiteDataStore_h
-#define WebsiteDataStore_h
+#pragma once
 
 #include "WebProcessLifetimeObserver.h"
+#include <WebCore/SecurityOriginData.h>
 #include <WebCore/SecurityOriginHash.h>
 #include <WebCore/SessionID.h>
 #include <functional>
@@ -110,9 +110,9 @@
     Vector<PluginModuleInfo> plugins() const;
 #endif
 
-    static Vector<RefPtr<WebCore::SecurityOrigin>> mediaKeyOrigins(const String& mediaKeysStorageDirectory);
+    static Vector<WebCore::SecurityOriginData> mediaKeyOrigins(const String& mediaKeysStorageDirectory);
     static void removeMediaKeys(const String& mediaKeysStorageDirectory, std::chrono::system_clock::time_point modifiedSince);
-    static void removeMediaKeys(const String& mediaKeysStorageDirectory, const HashSet<RefPtr<WebCore::SecurityOrigin>>&);
+    static void removeMediaKeys(const String& mediaKeysStorageDirectory, const HashSet<WebCore::SecurityOriginData>&);
 
     const uint64_t m_identifier;
     const WebCore::SessionID m_sessionID;
@@ -126,5 +126,3 @@
 };
 
 }
-
-#endif // WebsiteDataStore_h
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to