<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[208633] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/208633">208633</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-11-11 17:18:22 -0800 (Fri, 11 Nov 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Use SecurityOriginData as keys in StorageManager
https://bugs.webkit.org/show_bug.cgi?id=159834
&lt;rdar://problem/27346948&gt;

Patch by Alex Christensen &lt;achristensen@webkit.org&gt; 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!</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepageSecurityOriginDatah">trunk/Source/WebCore/page/SecurityOriginData.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2PlatformIPCHandleMessageh">trunk/Source/WebKit2/Platform/IPC/HandleMessage.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKApplicationCacheManagercpp">trunk/Source/WebKit2/UIProcess/API/C/WKApplicationCacheManager.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKKeyValueStorageManagercpp">trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKResourceCacheManagercpp">trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebsiteDataStoremm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessDatabasesDatabaseProcessProxycpp">trunk/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessDatabasesDatabaseProcessProxyh">trunk/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessNetworkNetworkProcessProxycpp">trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessNetworkNetworkProcessProxyh">trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessStorageLocalStorageDatabasecpp">trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessStorageLocalStorageDatabaseh">trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessStorageLocalStorageDatabaseTrackercpp">trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessStorageLocalStorageDatabaseTrackerh">trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessStorageStorageManagercpp">trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessStorageStorageManagerh">trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebProcessProxycpp">trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebProcessProxyh">trunk/Source/WebKit2/UIProcess/WebProcessProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebsiteDataWebsiteDataRecordcpp">trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebsiteDataWebsiteDataRecordh">trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebsiteDataWebsiteDataStorecpp">trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebsiteDataWebsiteDataStoreh">trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2016-11-11  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Use SecurityOriginData as keys in StorageManager
+        https://bugs.webkit.org/show_bug.cgi?id=159834
+        &lt;rdar://problem/27346948&gt;
+
+        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.
+
</ins><span class="cx"> 2016-11-11  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Hovering over a slotted Text node clears hover state
</span></span></pre></div>
<a id="trunkSourceWebCorepageSecurityOriginDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/SecurityOriginData.h (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -33,6 +33,12 @@
</span><span class="cx"> class SecurityOrigin;
</span><span class="cx"> 
</span><span class="cx"> struct SecurityOriginData {
</span><ins>+    SecurityOriginData() = default;
+    SecurityOriginData(WTF::HashTableDeletedValueType)
+        : protocol(WTF::HashTableDeletedValue)
+    {
+    }
+    
</ins><span class="cx">     WEBCORE_EXPORT static SecurityOriginData fromSecurityOrigin(const SecurityOrigin&amp;);
</span><span class="cx">     WEBCORE_EXPORT static SecurityOriginData fromFrame(Frame*);
</span><span class="cx"> 
</span><span class="lines">@@ -54,6 +60,16 @@
</span><span class="cx">     template&lt;class Encoder&gt; void encode(Encoder&amp;) const;
</span><span class="cx">     template&lt;class Decoder&gt; static bool decode(Decoder&amp;, SecurityOriginData&amp;);
</span><span class="cx"> 
</span><ins>+    bool isEmpty() const
+    {
+        return protocol.isNull() &amp;&amp; host.isNull() &amp;&amp; port == Nullopt;
+    }
+    
+    bool isHashTableDeletedValue() const
+    {
+        return protocol.isHashTableDeletedValue();
+    }
+    
</ins><span class="cx"> #if !LOG_DISABLED
</span><span class="cx">     String debugString() const;
</span><span class="cx"> #endif
</span><span class="lines">@@ -82,4 +98,33 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+struct SecurityOriginDataHashTraits : WTF::SimpleClassHashTraits&lt;SecurityOriginData&gt; {
+    static const bool hasIsEmptyValueFunction = true;
+    static const bool emptyValueIsZero = false;
+    static bool isEmptyValue(const SecurityOriginData&amp; data) { return data.isEmpty(); }
+};
+
+struct SecurityOriginDataHash {
+    static unsigned hash(const SecurityOriginData&amp; data)
+    {
+        unsigned hashCodes[3] = {
+            data.protocol.impl() ? data.protocol.impl()-&gt;hash() : 0,
+            data.host.impl() ? data.host.impl()-&gt;hash() : 0,
+            data.port.valueOr(0)
+        };
+        return StringHasher::hashMemory&lt;sizeof(hashCodes)&gt;(hashCodes);
+    }
+    static bool equal(const SecurityOriginData&amp; a, const SecurityOriginData&amp; b) { return a == b; }
+    static const bool safeToCompareToEmptyOrDeleted = false;
+};
+
</ins><span class="cx"> } // namespace WebCore
</span><ins>+
+namespace WTF {
+
+template&lt;&gt; struct HashTraits&lt;WebCore::SecurityOriginData&gt; : WebCore::SecurityOriginDataHashTraits { };
+template&lt;&gt; struct DefaultHash&lt;WebCore::SecurityOriginData&gt; {
+    typedef WebCore::SecurityOriginDataHash Hash;
+};
+
+} // namespace WTF
</ins></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,91 @@
</span><ins>+2016-11-11  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Use SecurityOriginData as keys in StorageManager
+        https://bugs.webkit.org/show_bug.cgi?id=159834
+        &lt;rdar://problem/27346948&gt;
+
+        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!
+
</ins><span class="cx"> 2016-11-11  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Hovering over a slotted Text node clears hover state
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformIPCHandleMessageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Platform/IPC/HandleMessage.h (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,28 @@
</span><ins>+/*
+ * 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.
+ */
+
</ins><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ArgumentCoders.h&quot;
</span><span class="lines">@@ -54,7 +79,7 @@
</span><span class="cx"> template &lt;typename C, typename MF, typename ArgsTuple, size_t... ArgsIndex&gt;
</span><span class="cx"> void callMemberFunctionImpl(C* object, MF function, Connection&amp; connection, ArgsTuple&amp;&amp; args, std::index_sequence&lt;ArgsIndex...&gt;)
</span><span class="cx"> {
</span><del>-    (object-&gt;*function)(connection, std::get&lt;ArgsIndex&gt;(args)...);
</del><ins>+    (object-&gt;*function)(connection, std::get&lt;ArgsIndex&gt;(std::forward&lt;ArgsTuple&gt;(args))...);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename C, typename MF, typename ArgsTuple, typename ArgsIndicies = std::make_index_sequence&lt;std::tuple_size&lt;ArgsTuple&gt;::value&gt;&gt;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKApplicationCacheManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKApplicationCacheManager.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">         Vector&lt;RefPtr&lt;API::Object&gt;&gt; securityOrigins;
</span><span class="cx">         for (const auto&amp; dataRecord : dataRecords) {
</span><span class="cx">             for (const auto&amp; origin : dataRecord.origins)
</span><del>-                securityOrigins.append(API::SecurityOrigin::create(*origin));
</del><ins>+                securityOrigins.append(API::SecurityOrigin::create(origin.securityOrigin()));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         callback(toAPI(API::Array::create(WTFMove(securityOrigins)).ptr()), nullptr, context);
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     auto&amp; websiteDataStore = toImpl(reinterpret_cast&lt;WKWebsiteDataStoreRef&gt;(applicationCacheManager))-&gt;websiteDataStore();
</span><span class="cx"> 
</span><span class="cx">     WebsiteDataRecord dataRecord;
</span><del>-    dataRecord.add(WebsiteDataType::OfflineWebApplicationCache, &amp;toImpl(origin)-&gt;securityOrigin());
</del><ins>+    dataRecord.add(WebsiteDataType::OfflineWebApplicationCache, WebCore::SecurityOriginData::fromSecurityOrigin(toImpl(origin)-&gt;securityOrigin()));
</ins><span class="cx"> 
</span><span class="cx">     websiteDataStore.removeData(WebsiteDataType::OfflineWebApplicationCache, { dataRecord }, [] { });
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKKeyValueStorageManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">         Vector&lt;RefPtr&lt;API::Object&gt;&gt; webSecurityOrigins;
</span><span class="cx">         webSecurityOrigins.reserveInitialCapacity(securityOrigins.size());
</span><span class="cx">         for (auto&amp; origin : securityOrigins)
</span><del>-            webSecurityOrigins.uncheckedAppend(API::SecurityOrigin::create(*origin));
</del><ins>+            webSecurityOrigins.uncheckedAppend(API::SecurityOrigin::create(origin.securityOrigin()));
</ins><span class="cx"> 
</span><span class="cx">         callback(toAPI(API::Array::create(WTFMove(webSecurityOrigins)).ptr()), nullptr, context);
</span><span class="cx">     });
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx">     if (!storageManager)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    storageManager-&gt;deleteLocalStorageEntriesForOrigin(toImpl(origin)-&gt;securityOrigin());
</del><ins>+    storageManager-&gt;deleteLocalStorageEntriesForOrigin(WebCore::SecurityOriginData::fromSecurityOrigin(toImpl(origin)-&gt;securityOrigin()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WKKeyValueStorageManagerDeleteAllEntries(WKKeyValueStorageManagerRef keyValueStorageManager)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKResourceCacheManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">         Vector&lt;RefPtr&lt;API::Object&gt;&gt; securityOrigins;
</span><span class="cx">         for (const auto&amp; dataRecord : dataRecords) {
</span><span class="cx">             for (const auto&amp; origin : dataRecord.origins)
</span><del>-                securityOrigins.append(API::SecurityOrigin::create(*origin));
</del><ins>+                securityOrigins.append(API::SecurityOrigin::create(origin.securityOrigin()));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         callback(toAPI(API::Array::create(WTFMove(securityOrigins)).ptr()), nullptr, context);
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         WebsiteDataRecord dataRecord;
</span><del>-        dataRecord.add(WebsiteDataType::MemoryCache, &amp;toImpl(origin)-&gt;securityOrigin());
</del><ins>+        dataRecord.add(WebsiteDataType::MemoryCache, WebCore::SecurityOriginData::fromSecurityOrigin(toImpl(origin)-&gt;securityOrigin()));
</ins><span class="cx"> 
</span><span class="cx">         dataRecords.append(dataRecord);
</span><span class="cx">     }
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (cachesToClear == WKResourceCachesToClearAll) {
</span><span class="cx">         WebsiteDataRecord dataRecord;
</span><del>-        dataRecord.add(WebsiteDataType::DiskCache, &amp;toImpl(origin)-&gt;securityOrigin());
</del><ins>+        dataRecord.add(WebsiteDataType::DiskCache, WebCore::SecurityOriginData::fromSecurityOrigin(toImpl(origin)-&gt;securityOrigin()));
</ins><span class="cx"> 
</span><span class="cx">         dataRecords.append(dataRecord);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebsiteDataStoremm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -153,7 +153,7 @@
</span><span class="cx">     if (options &amp; _WKWebsiteDataStoreFetchOptionComputeSizes)
</span><span class="cx">         fetchOptions |= WebKit::WebsiteDataFetchOption::ComputeSizes;
</span><span class="cx"> 
</span><del>-    _websiteDataStore-&gt;websiteDataStore().fetchData(WebKit::toWebsiteDataTypes(dataTypes), fetchOptions, [completionHandlerCopy](auto websiteDataRecords) {
</del><ins>+    _websiteDataStore-&gt;websiteDataStore().fetchData(WebKit::toWebsiteDataTypes(dataTypes), fetchOptions, [completionHandlerCopy = WTFMove(completionHandlerCopy)](auto websiteDataRecords) {
</ins><span class="cx">         Vector&lt;RefPtr&lt;API::Object&gt;&gt; elements;
</span><span class="cx">         elements.reserveInitialCapacity(websiteDataRecords.size());
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessDatabasesDatabaseProcessProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx">     send(Messages::DatabaseProcess::DeleteWebsiteData(sessionID, dataTypes, modifiedSince, callbackID), 0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DatabaseProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet&lt;WebsiteDataType&gt; dataTypes, const Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp; origins, std::function&lt;void ()&gt; completionHandler)
</del><ins>+void DatabaseProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet&lt;WebsiteDataType&gt; dataTypes, const Vector&lt;WebCore::SecurityOriginData&gt;&amp; origins, std::function&lt;void()&gt; completionHandler)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(canSendMessage());
</span><span class="cx"> 
</span><span class="lines">@@ -109,11 +109,7 @@
</span><span class="cx">     uint64_t callbackID = generateCallbackID();
</span><span class="cx">     m_pendingDeleteWebsiteDataForOriginsCallbacks.add(callbackID, WTFMove(completionHandler));
</span><span class="cx"> 
</span><del>-    Vector&lt;SecurityOriginData&gt; originData;
-    for (auto&amp; origin : origins)
-        originData.append(SecurityOriginData::fromSecurityOrigin(*origin));
-
-    send(Messages::DatabaseProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, originData, callbackID), 0);
</del><ins>+    send(Messages::DatabaseProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, origins, callbackID), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DatabaseProcessProxy::getDatabaseProcessConnection(PassRefPtr&lt;Messages::WebProcessProxy::GetDatabaseProcessConnection::DelayedReply&gt; reply)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessDatabasesDatabaseProcessProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> class SecurityOrigin;
</span><span class="cx"> class SessionID;
</span><ins>+struct SecurityOriginData;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -50,9 +51,9 @@
</span><span class="cx">     static Ref&lt;DatabaseProcessProxy&gt; create(WebProcessPool*);
</span><span class="cx">     ~DatabaseProcessProxy();
</span><span class="cx"> 
</span><del>-    void fetchWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, std::function&lt;void (WebsiteData)&gt; completionHandler);
-    void deleteWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, std::chrono::system_clock::time_point modifiedSince, std::function&lt;void ()&gt; completionHandler);
-    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, const Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp; origins, std::function&lt;void ()&gt; completionHandler);
</del><ins>+    void fetchWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, std::function&lt;void(WebsiteData)&gt; completionHandler);
+    void deleteWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, std::chrono::system_clock::time_point modifiedSince, std::function&lt;void()&gt; completionHandler);
+    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, const Vector&lt;WebCore::SecurityOriginData&gt;&amp;, std::function&lt;void()&gt; completionHandler);
</ins><span class="cx"> 
</span><span class="cx">     void getDatabaseProcessConnection(PassRefPtr&lt;Messages::WebProcessProxy::GetDatabaseProcessConnection::DelayedReply&gt;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessNetworkNetworkProcessProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx">     ASSERT_UNUSED(connection, this-&gt;connection() == &amp;connection);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NetworkProcessProxy::getNetworkProcessConnection(PassRefPtr&lt;Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&gt; reply)
</del><ins>+void NetworkProcessProxy::getNetworkProcessConnection(RefPtr&lt;Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&gt;&amp;&amp; reply)
</ins><span class="cx"> {
</span><span class="cx">     m_pendingConnectionReplies.append(reply);
</span><span class="cx"> 
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx">     send(Messages::NetworkProcess::DeleteWebsiteData(sessionID, dataTypes, modifiedSince, callbackID), 0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NetworkProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet&lt;WebsiteDataType&gt; dataTypes, const Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp; origins, const Vector&lt;String&gt;&amp; cookieHostNames, std::function&lt;void ()&gt; completionHandler)
</del><ins>+void NetworkProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet&lt;WebsiteDataType&gt; dataTypes, const Vector&lt;WebCore::SecurityOriginData&gt;&amp; origins, const Vector&lt;String&gt;&amp; cookieHostNames, std::function&lt;void()&gt; completionHandler)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(canSendMessage());
</span><span class="cx"> 
</span><span class="lines">@@ -162,11 +162,7 @@
</span><span class="cx">         RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), ProcessSuspension, &quot;%p - NetworkProcessProxy is releasing a background assertion because the Network process is done deleting Website data for several origins&quot;, this);
</span><span class="cx">     });
</span><span class="cx"> 
</span><del>-    Vector&lt;SecurityOriginData&gt; originData;
-    for (auto&amp; origin : origins)
-        originData.append(SecurityOriginData::fromSecurityOrigin(*origin));
-
-    send(Messages::NetworkProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, originData, cookieHostNames, callbackID), 0);
</del><ins>+    send(Messages::NetworkProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, origins, cookieHostNames, callbackID), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch()
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessNetworkNetworkProcessProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx"> class ProtectionSpace;
</span><span class="cx"> class ResourceRequest;
</span><span class="cx"> class SecurityOrigin;
</span><ins>+struct SecurityOriginData;
</ins><span class="cx"> class SessionID;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -58,13 +59,13 @@
</span><span class="cx">     static Ref&lt;NetworkProcessProxy&gt; create(WebProcessPool&amp;);
</span><span class="cx">     ~NetworkProcessProxy();
</span><span class="cx"> 
</span><del>-    void getNetworkProcessConnection(PassRefPtr&lt;Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&gt;);
</del><ins>+    void getNetworkProcessConnection(RefPtr&lt;Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     DownloadProxy* createDownloadProxy(const WebCore::ResourceRequest&amp;);
</span><span class="cx"> 
</span><del>-    void fetchWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, OptionSet&lt;WebsiteDataFetchOption&gt;, std::function&lt;void (WebsiteData)&gt; completionHandler);
-    void deleteWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, std::chrono::system_clock::time_point modifiedSince, std::function&lt;void ()&gt; completionHandler);
-    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet&lt;WebKit::WebsiteDataType&gt;, const Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp; origins, const Vector&lt;String&gt;&amp; cookieHostNames, std::function&lt;void ()&gt; completionHandler);
</del><ins>+    void fetchWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, OptionSet&lt;WebsiteDataFetchOption&gt;, std::function&lt;void(WebsiteData)&gt; completionHandler);
+    void deleteWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, std::chrono::system_clock::time_point modifiedSince, std::function&lt;void()&gt; completionHandler);
+    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet&lt;WebKit::WebsiteDataType&gt;, const Vector&lt;WebCore::SecurityOriginData&gt;&amp; origins, const Vector&lt;String&gt;&amp; cookieHostNames, std::function&lt;void()&gt; completionHandler);
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     void setProcessSuppressionEnabled(bool);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessStorageLocalStorageDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -46,16 +46,16 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-Ref&lt;LocalStorageDatabase&gt; LocalStorageDatabase::create(Ref&lt;WorkQueue&gt;&amp;&amp; queue, Ref&lt;LocalStorageDatabaseTracker&gt;&amp;&amp; tracker, Ref&lt;SecurityOrigin&gt;&amp;&amp; securityOrigin)
</del><ins>+Ref&lt;LocalStorageDatabase&gt; LocalStorageDatabase::create(Ref&lt;WorkQueue&gt;&amp;&amp; queue, Ref&lt;LocalStorageDatabaseTracker&gt;&amp;&amp; tracker, const SecurityOriginData&amp; securityOrigin)
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new LocalStorageDatabase(WTFMove(queue), WTFMove(tracker), WTFMove(securityOrigin)));
</del><ins>+    return adoptRef(*new LocalStorageDatabase(WTFMove(queue), WTFMove(tracker), securityOrigin));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-LocalStorageDatabase::LocalStorageDatabase(Ref&lt;WorkQueue&gt;&amp;&amp; queue, Ref&lt;LocalStorageDatabaseTracker&gt;&amp;&amp; tracker, Ref&lt;SecurityOrigin&gt;&amp;&amp; securityOrigin)
</del><ins>+LocalStorageDatabase::LocalStorageDatabase(Ref&lt;WorkQueue&gt;&amp;&amp; queue, Ref&lt;LocalStorageDatabaseTracker&gt;&amp;&amp; tracker, const SecurityOriginData&amp; securityOrigin)
</ins><span class="cx">     : m_queue(WTFMove(queue))
</span><span class="cx">     , m_tracker(WTFMove(tracker))
</span><del>-    , m_securityOrigin(WTFMove(securityOrigin))
-    , m_databasePath(m_tracker-&gt;databasePath(m_securityOrigin.ptr()))
</del><ins>+    , m_securityOrigin(securityOrigin)
+    , m_databasePath(m_tracker-&gt;databasePath(m_securityOrigin))
</ins><span class="cx">     , m_failedToOpenDatabase(false)
</span><span class="cx">     , m_didImportItems(false)
</span><span class="cx">     , m_isClosed(false)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (m_database.isOpen())
</span><del>-        m_tracker-&gt;didOpenDatabaseWithOrigin(m_securityOrigin.ptr());
</del><ins>+        m_tracker-&gt;didOpenDatabaseWithOrigin(m_securityOrigin);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool LocalStorageDatabase::tryToOpenDatabase(DatabaseOpeningStrategy openingStrategy)
</span><span class="lines">@@ -230,7 +230,7 @@
</span><span class="cx">         m_database.close();
</span><span class="cx"> 
</span><span class="cx">     if (isEmpty)
</span><del>-        m_tracker-&gt;deleteDatabaseWithOrigin(m_securityOrigin.ptr());
</del><ins>+        m_tracker-&gt;deleteDatabaseWithOrigin(m_securityOrigin);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void LocalStorageDatabase::itemDidChange(const String&amp; key, const String&amp; value)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessStorageLocalStorageDatabaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.h (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include &lt;WebCore/SQLiteDatabase.h&gt;
</span><ins>+#include &lt;WebCore/SecurityOriginData.h&gt;
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="lines">@@ -44,7 +45,7 @@
</span><span class="cx"> 
</span><span class="cx"> class LocalStorageDatabase : public ThreadSafeRefCounted&lt;LocalStorageDatabase&gt; {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;LocalStorageDatabase&gt; create(Ref&lt;WorkQueue&gt;&amp;&amp;, Ref&lt;LocalStorageDatabaseTracker&gt;&amp;&amp;, Ref&lt;WebCore::SecurityOrigin&gt;&amp;&amp;);
</del><ins>+    static Ref&lt;LocalStorageDatabase&gt; create(Ref&lt;WorkQueue&gt;&amp;&amp;, Ref&lt;LocalStorageDatabaseTracker&gt;&amp;&amp;, const WebCore::SecurityOriginData&amp;);
</ins><span class="cx">     ~LocalStorageDatabase();
</span><span class="cx"> 
</span><span class="cx">     // Will block until the import is complete.
</span><span class="lines">@@ -58,7 +59,7 @@
</span><span class="cx">     void close();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    LocalStorageDatabase(Ref&lt;WorkQueue&gt;&amp;&amp;, Ref&lt;LocalStorageDatabaseTracker&gt;&amp;&amp;, Ref&lt;WebCore::SecurityOrigin&gt;&amp;&amp;);
</del><ins>+    LocalStorageDatabase(Ref&lt;WorkQueue&gt;&amp;&amp;, Ref&lt;LocalStorageDatabaseTracker&gt;&amp;&amp;, const WebCore::SecurityOriginData&amp;);
</ins><span class="cx"> 
</span><span class="cx">     enum DatabaseOpeningStrategy {
</span><span class="cx">         CreateIfNonExistent,
</span><span class="lines">@@ -79,7 +80,7 @@
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;WorkQueue&gt; m_queue;
</span><span class="cx">     Ref&lt;LocalStorageDatabaseTracker&gt; m_tracker;
</span><del>-    Ref&lt;WebCore::SecurityOrigin&gt; m_securityOrigin;
</del><ins>+    WebCore::SecurityOriginData m_securityOrigin;
</ins><span class="cx"> 
</span><span class="cx">     String m_databasePath;
</span><span class="cx">     WebCore::SQLiteDatabase m_database;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessStorageLocalStorageDatabaseTrackercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -62,19 +62,19 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String LocalStorageDatabaseTracker::databasePath(SecurityOrigin* securityOrigin) const
</del><ins>+String LocalStorageDatabaseTracker::databasePath(const SecurityOriginData&amp; securityOrigin) const
</ins><span class="cx"> {
</span><del>-    return databasePath(SecurityOriginData::fromSecurityOrigin(*securityOrigin).databaseIdentifier() + &quot;.localstorage&quot;);
</del><ins>+    return databasePath(securityOrigin.databaseIdentifier() + &quot;.localstorage&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void LocalStorageDatabaseTracker::didOpenDatabaseWithOrigin(SecurityOrigin* securityOrigin)
</del><ins>+void LocalStorageDatabaseTracker::didOpenDatabaseWithOrigin(const SecurityOriginData&amp; securityOrigin)
</ins><span class="cx"> {
</span><del>-    addDatabaseWithOriginIdentifier(SecurityOriginData::fromSecurityOrigin(*securityOrigin).databaseIdentifier(), databasePath(securityOrigin));
</del><ins>+    addDatabaseWithOriginIdentifier(securityOrigin.databaseIdentifier(), databasePath(securityOrigin));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void LocalStorageDatabaseTracker::deleteDatabaseWithOrigin(SecurityOrigin* securityOrigin)
</del><ins>+void LocalStorageDatabaseTracker::deleteDatabaseWithOrigin(const SecurityOriginData&amp; securityOrigin)
</ins><span class="cx"> {
</span><del>-    removeDatabaseWithOriginIdentifier(SecurityOriginData::fromSecurityOrigin(*securityOrigin).databaseIdentifier());
</del><ins>+    removeDatabaseWithOriginIdentifier(securityOrigin.databaseIdentifier());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void LocalStorageDatabaseTracker::deleteAllDatabases()
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx">     return time;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Vector&lt;Ref&lt;SecurityOrigin&gt;&gt; LocalStorageDatabaseTracker::deleteDatabasesModifiedSince(std::chrono::system_clock::time_point time)
</del><ins>+Vector&lt;SecurityOriginData&gt; LocalStorageDatabaseTracker::deleteDatabasesModifiedSince(std::chrono::system_clock::time_point time)
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;String&gt; originIdentifiersToDelete;
</span><span class="cx"> 
</span><span class="lines">@@ -155,25 +155,26 @@
</span><span class="cx">             originIdentifiersToDelete.append(origin);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Vector&lt;Ref&lt;SecurityOrigin&gt;&gt; deletedDatabaseOrigins;
</del><ins>+    Vector&lt;SecurityOriginData&gt; deletedDatabaseOrigins;
</ins><span class="cx">     deletedDatabaseOrigins.reserveInitialCapacity(originIdentifiersToDelete.size());
</span><span class="cx"> 
</span><span class="cx">     for (const auto&amp; originIdentifier : originIdentifiersToDelete) {
</span><span class="cx">         removeDatabaseWithOriginIdentifier(originIdentifier);
</span><span class="cx"> 
</span><del>-        deletedDatabaseOrigins.uncheckedAppend(SecurityOrigin::createFromDatabaseIdentifier(originIdentifier));
</del><ins>+        // FIXME: Move createFromDatabaseIdentifier to SecurityOriginData.
+        deletedDatabaseOrigins.uncheckedAppend(SecurityOriginData::fromSecurityOrigin(SecurityOrigin::createFromDatabaseIdentifier(originIdentifier)));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return deletedDatabaseOrigins;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Vector&lt;Ref&lt;WebCore::SecurityOrigin&gt;&gt; LocalStorageDatabaseTracker::origins() const
</del><ins>+Vector&lt;SecurityOriginData&gt; LocalStorageDatabaseTracker::origins() const
</ins><span class="cx"> {
</span><del>-    Vector&lt;Ref&lt;SecurityOrigin&gt;&gt; origins;
</del><ins>+    Vector&lt;SecurityOriginData&gt; origins;
</ins><span class="cx">     origins.reserveInitialCapacity(m_origins.size());
</span><span class="cx"> 
</span><span class="cx">     for (const String&amp; origin : m_origins)
</span><del>-        origins.uncheckedAppend(SecurityOrigin::createFromDatabaseIdentifier(origin));
</del><ins>+        origins.uncheckedAppend(SecurityOriginData::fromSecurityOrigin(SecurityOrigin::createFromDatabaseIdentifier(origin)));
</ins><span class="cx"> 
</span><span class="cx">     return origins;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessStorageLocalStorageDatabaseTrackerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> class SecurityOrigin;
</span><ins>+struct SecurityOriginData;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -47,16 +48,16 @@
</span><span class="cx">     static Ref&lt;LocalStorageDatabaseTracker&gt; create(Ref&lt;WorkQueue&gt;&amp;&amp;, const String&amp; localStorageDirectory);
</span><span class="cx">     ~LocalStorageDatabaseTracker();
</span><span class="cx"> 
</span><del>-    String databasePath(WebCore::SecurityOrigin*) const;
</del><ins>+    String databasePath(const WebCore::SecurityOriginData&amp;) const;
</ins><span class="cx"> 
</span><del>-    void didOpenDatabaseWithOrigin(WebCore::SecurityOrigin*);
-    void deleteDatabaseWithOrigin(WebCore::SecurityOrigin*);
</del><ins>+    void didOpenDatabaseWithOrigin(const WebCore::SecurityOriginData&amp;);
+    void deleteDatabaseWithOrigin(const WebCore::SecurityOriginData&amp;);
</ins><span class="cx">     void deleteAllDatabases();
</span><span class="cx"> 
</span><span class="cx">     // Returns a vector of the origins whose databases have been deleted.
</span><del>-    Vector&lt;Ref&lt;WebCore::SecurityOrigin&gt;&gt; deleteDatabasesModifiedSince(std::chrono::system_clock::time_point);
</del><ins>+    Vector&lt;WebCore::SecurityOriginData&gt; deleteDatabasesModifiedSince(std::chrono::system_clock::time_point);
</ins><span class="cx"> 
</span><del>-    Vector&lt;Ref&lt;WebCore::SecurityOrigin&gt;&gt; origins() const;
</del><ins>+    Vector&lt;WebCore::SecurityOriginData&gt; origins() const;
</ins><span class="cx"> 
</span><span class="cx">     struct OriginDetails {
</span><span class="cx">         String originIdentifier;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessStorageStorageManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -45,10 +45,10 @@
</span><span class="cx"> 
</span><span class="cx"> class StorageManager::StorageArea : public ThreadSafeRefCounted&lt;StorageManager::StorageArea&gt; {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;StorageArea&gt; create(LocalStorageNamespace*, Ref&lt;SecurityOrigin&gt;&amp;&amp;, unsigned quotaInBytes);
</del><ins>+    static Ref&lt;StorageArea&gt; create(LocalStorageNamespace*, const SecurityOriginData&amp;, unsigned quotaInBytes);
</ins><span class="cx">     ~StorageArea();
</span><span class="cx"> 
</span><del>-    SecurityOrigin&amp; securityOrigin() { return m_securityOrigin.get(); }
</del><ins>+    const WebCore::SecurityOriginData&amp; securityOrigin() const { return m_securityOrigin; }
</ins><span class="cx"> 
</span><span class="cx">     void addListener(IPC::Connection&amp;, uint64_t storageMapID);
</span><span class="cx">     void removeListener(IPC::Connection&amp;, uint64_t storageMapID);
</span><span class="lines">@@ -59,24 +59,24 @@
</span><span class="cx">     void removeItem(IPC::Connection* sourceConnection, uint64_t sourceStorageAreaID, const String&amp; key, const String&amp; urlString);
</span><span class="cx">     void clear(IPC::Connection* sourceConnection, uint64_t sourceStorageAreaID, const String&amp; urlString);
</span><span class="cx"> 
</span><del>-    const HashMap&lt;String, String&gt;&amp; items();
</del><ins>+    const HashMap&lt;String, String&gt;&amp; items() const;
</ins><span class="cx">     void clear();
</span><span class="cx"> 
</span><span class="cx">     bool isSessionStorage() const { return !m_localStorageNamespace; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    explicit StorageArea(LocalStorageNamespace*, Ref&lt;SecurityOrigin&gt;&amp;&amp;, unsigned quotaInBytes);
</del><ins>+    explicit StorageArea(LocalStorageNamespace*, const SecurityOriginData&amp;, unsigned quotaInBytes);
</ins><span class="cx"> 
</span><del>-    void openDatabaseAndImportItemsIfNeeded();
</del><ins>+    void openDatabaseAndImportItemsIfNeeded() const;
</ins><span class="cx"> 
</span><span class="cx">     void dispatchEvents(IPC::Connection* sourceConnection, uint64_t sourceStorageAreaID, const String&amp; key, const String&amp; oldValue, const String&amp; newValue, const String&amp; urlString) const;
</span><span class="cx"> 
</span><span class="cx">     // Will be null if the storage area belongs to a session storage namespace.
</span><span class="cx">     LocalStorageNamespace* m_localStorageNamespace;
</span><del>-    RefPtr&lt;LocalStorageDatabase&gt; m_localStorageDatabase;
-    bool m_didImportItemsFromDatabase;
</del><ins>+    mutable RefPtr&lt;LocalStorageDatabase&gt; m_localStorageDatabase;
+    mutable bool m_didImportItemsFromDatabase { false };
</ins><span class="cx"> 
</span><del>-    Ref&lt;SecurityOrigin&gt; m_securityOrigin;
</del><ins>+    SecurityOriginData m_securityOrigin;
</ins><span class="cx">     unsigned m_quotaInBytes;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;StorageMap&gt; m_storageMap;
</span><span class="lines">@@ -90,10 +90,10 @@
</span><span class="cx"> 
</span><span class="cx">     StorageManager* storageManager() const { return m_storageManager; }
</span><span class="cx"> 
</span><del>-    Ref&lt;StorageArea&gt; getOrCreateStorageArea(Ref&lt;SecurityOrigin&gt;&amp;&amp;);
</del><ins>+    Ref&lt;StorageArea&gt; getOrCreateStorageArea(SecurityOriginData&amp;&amp;);
</ins><span class="cx">     void didDestroyStorageArea(StorageArea*);
</span><span class="cx"> 
</span><del>-    void clearStorageAreasMatchingOrigin(const SecurityOrigin&amp;);
</del><ins>+    void clearStorageAreasMatchingOrigin(const SecurityOriginData&amp;);
</ins><span class="cx">     void clearAllStorageAreas();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">     unsigned m_quotaInBytes;
</span><span class="cx"> 
</span><span class="cx">     // We don't hold an explicit reference to the StorageAreas; they are kept alive by the m_storageAreasByConnection map in StorageManager.
</span><del>-    HashMap&lt;RefPtr&lt;SecurityOrigin&gt;, StorageArea*&gt; m_storageAreaMap;
</del><ins>+    HashMap&lt;SecurityOriginData, StorageArea*&gt; m_storageAreaMap;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class StorageManager::TransientLocalStorageNamespace : public ThreadSafeRefCounted&lt;TransientLocalStorageNamespace&gt; {
</span><span class="lines">@@ -118,21 +118,16 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Ref&lt;StorageArea&gt; getOrCreateStorageArea(Ref&lt;SecurityOrigin&gt;&amp;&amp; securityOrigin)
</del><ins>+    Ref&lt;StorageArea&gt; getOrCreateStorageArea(SecurityOriginData&amp;&amp; securityOrigin)
</ins><span class="cx">     {
</span><del>-        auto&amp; slot = m_storageAreaMap.add(securityOrigin.ptr(), nullptr).iterator-&gt;value;
-        if (slot)
-            return *slot;
-
-        auto storageArea = StorageArea::create(nullptr, WTFMove(securityOrigin), m_quotaInBytes);
-        slot = &amp;storageArea.get();
-
-        return storageArea;
</del><ins>+        return *m_storageAreaMap.ensure(securityOrigin, [this, securityOrigin]() mutable {
+            return StorageArea::create(nullptr, WTFMove(securityOrigin), m_quotaInBytes);
+        }).iterator-&gt;value.copyRef();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Vector&lt;Ref&lt;SecurityOrigin&gt;&gt; origins() const
</del><ins>+    Vector&lt;SecurityOriginData&gt; origins() const
</ins><span class="cx">     {
</span><del>-        Vector&lt;Ref&lt;SecurityOrigin&gt;&gt; origins;
</del><ins>+        Vector&lt;SecurityOriginData&gt; origins;
</ins><span class="cx"> 
</span><span class="cx">         for (const auto&amp; storageArea : m_storageAreaMap.values()) {
</span><span class="cx">             if (!storageArea-&gt;items().isEmpty())
</span><span class="lines">@@ -142,10 +137,10 @@
</span><span class="cx">         return origins;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void clearStorageAreasMatchingOrigin(const SecurityOrigin&amp; securityOrigin)
</del><ins>+    void clearStorageAreasMatchingOrigin(const SecurityOriginData&amp; securityOrigin)
</ins><span class="cx">     {
</span><span class="cx">         for (auto&amp; storageArea : m_storageAreaMap.values()) {
</span><del>-            if (storageArea-&gt;securityOrigin().equal(&amp;securityOrigin))
</del><ins>+            if (storageArea-&gt;securityOrigin() == securityOrigin)
</ins><span class="cx">                 storageArea-&gt;clear();
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -163,18 +158,17 @@
</span><span class="cx"> 
</span><span class="cx">     const unsigned m_quotaInBytes = 5 * 1024 * 1024;
</span><span class="cx"> 
</span><del>-    HashMap&lt;RefPtr&lt;SecurityOrigin&gt;, RefPtr&lt;StorageArea&gt;&gt; m_storageAreaMap;
</del><ins>+    HashMap&lt;SecurityOriginData, RefPtr&lt;StorageArea&gt;&gt; m_storageAreaMap;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-Ref&lt;StorageManager::StorageArea&gt; StorageManager::StorageArea::create(LocalStorageNamespace* localStorageNamespace, Ref&lt;SecurityOrigin&gt;&amp;&amp; securityOrigin, unsigned quotaInBytes)
</del><ins>+auto StorageManager::StorageArea::create(LocalStorageNamespace* localStorageNamespace, const SecurityOriginData&amp; securityOrigin, unsigned quotaInBytes) -&gt; Ref&lt;StorageManager::StorageArea&gt;
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new StorageArea(localStorageNamespace, WTFMove(securityOrigin), quotaInBytes));
</del><ins>+    return adoptRef(*new StorageArea(localStorageNamespace, securityOrigin, quotaInBytes));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-StorageManager::StorageArea::StorageArea(LocalStorageNamespace* localStorageNamespace, Ref&lt;SecurityOrigin&gt;&amp;&amp; securityOrigin, unsigned quotaInBytes)
</del><ins>+StorageManager::StorageArea::StorageArea(LocalStorageNamespace* localStorageNamespace, const SecurityOriginData&amp; securityOrigin, unsigned quotaInBytes)
</ins><span class="cx">     : m_localStorageNamespace(localStorageNamespace)
</span><del>-    , m_didImportItemsFromDatabase(false)
-    , m_securityOrigin(WTFMove(securityOrigin))
</del><ins>+    , m_securityOrigin(securityOrigin)
</ins><span class="cx">     , m_quotaInBytes(quotaInBytes)
</span><span class="cx">     , m_storageMap(StorageMap::create(m_quotaInBytes))
</span><span class="cx"> {
</span><span class="lines">@@ -207,7 +201,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_localStorageNamespace);
</span><span class="cx"> 
</span><del>-    auto storageArea = StorageArea::create(0, m_securityOrigin.copyRef(), m_quotaInBytes);
</del><ins>+    auto storageArea = StorageArea::create(nullptr, m_securityOrigin, m_quotaInBytes);
</ins><span class="cx">     storageArea-&gt;m_storageMap = m_storageMap;
</span><span class="cx"> 
</span><span class="cx">     return storageArea;
</span><span class="lines">@@ -265,7 +259,7 @@
</span><span class="cx">     dispatchEvents(sourceConnection, sourceStorageAreaID, String(), String(), String(), urlString);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const HashMap&lt;String, String&gt;&amp; StorageManager::StorageArea::items()
</del><ins>+const HashMap&lt;String, String&gt;&amp; StorageManager::StorageArea::items() const
</ins><span class="cx"> {
</span><span class="cx">     openDatabaseAndImportItemsIfNeeded();
</span><span class="cx"> 
</span><span class="lines">@@ -285,7 +279,7 @@
</span><span class="cx">         it-&gt;first-&gt;send(Messages::StorageAreaMap::ClearCache(), it-&gt;second);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded()
</del><ins>+void StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded() const
</ins><span class="cx"> {
</span><span class="cx">     if (!m_localStorageNamespace)
</span><span class="cx">         return;
</span><span class="lines">@@ -292,7 +286,7 @@
</span><span class="cx"> 
</span><span class="cx">     // 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.
</span><span class="cx">     if (!m_localStorageDatabase)
</span><del>-        m_localStorageDatabase = LocalStorageDatabase::create(m_localStorageNamespace-&gt;storageManager()-&gt;m_queue.copyRef(), m_localStorageNamespace-&gt;storageManager()-&gt;m_localStorageDatabaseTracker.copyRef(), m_securityOrigin.copyRef());
</del><ins>+        m_localStorageDatabase = LocalStorageDatabase::create(m_localStorageNamespace-&gt;storageManager()-&gt;m_queue.copyRef(), m_localStorageNamespace-&gt;storageManager()-&gt;m_localStorageDatabaseTracker.copyRef(), m_securityOrigin);
</ins><span class="cx"> 
</span><span class="cx">     if (m_didImportItemsFromDatabase)
</span><span class="cx">         return;
</span><span class="lines">@@ -329,9 +323,9 @@
</span><span class="cx">     ASSERT(m_storageAreaMap.isEmpty());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;StorageManager::StorageArea&gt; StorageManager::LocalStorageNamespace::getOrCreateStorageArea(Ref&lt;SecurityOrigin&gt;&amp;&amp; securityOrigin)
</del><ins>+auto StorageManager::LocalStorageNamespace::getOrCreateStorageArea(SecurityOriginData&amp;&amp; securityOrigin) -&gt; Ref&lt;StorageArea&gt;
</ins><span class="cx"> {
</span><del>-    auto&amp; slot = m_storageAreaMap.add(securityOrigin.ptr(), nullptr).iterator-&gt;value;
</del><ins>+    auto&amp; slot = m_storageAreaMap.add(securityOrigin, nullptr).iterator-&gt;value;
</ins><span class="cx">     if (slot)
</span><span class="cx">         return *slot;
</span><span class="cx"> 
</span><span class="lines">@@ -343,9 +337,9 @@
</span><span class="cx"> 
</span><span class="cx"> void StorageManager::LocalStorageNamespace::didDestroyStorageArea(StorageArea* storageArea)
</span><span class="cx"> {
</span><del>-    ASSERT(m_storageAreaMap.contains(&amp;storageArea-&gt;securityOrigin()));
</del><ins>+    ASSERT(m_storageAreaMap.contains(storageArea-&gt;securityOrigin()));
</ins><span class="cx"> 
</span><del>-    m_storageAreaMap.remove(&amp;storageArea-&gt;securityOrigin());
</del><ins>+    m_storageAreaMap.remove(storageArea-&gt;securityOrigin());
</ins><span class="cx">     if (!m_storageAreaMap.isEmpty())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -353,10 +347,10 @@
</span><span class="cx">     m_storageManager-&gt;m_localStorageNamespaces.remove(m_storageNamespaceID);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::LocalStorageNamespace::clearStorageAreasMatchingOrigin(const SecurityOrigin&amp; securityOrigin)
</del><ins>+void StorageManager::LocalStorageNamespace::clearStorageAreasMatchingOrigin(const SecurityOriginData&amp; securityOrigin)
</ins><span class="cx"> {
</span><span class="cx">     for (const auto&amp; originAndStorageArea : m_storageAreaMap) {
</span><del>-        if (originAndStorageArea.key-&gt;equal(&amp;securityOrigin))
</del><ins>+        if (originAndStorageArea.key == securityOrigin)
</ins><span class="cx">             originAndStorageArea.value-&gt;clear();
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -363,8 +357,8 @@
</span><span class="cx"> 
</span><span class="cx"> void StorageManager::LocalStorageNamespace::clearAllStorageAreas()
</span><span class="cx"> {
</span><del>-    for (auto it = m_storageAreaMap.begin(), end = m_storageAreaMap.end(); it != end; ++it)
-        it-&gt;value-&gt;clear();
</del><ins>+    for (auto* storageArea : m_storageAreaMap.values())
+        storageArea-&gt;clear();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> class StorageManager::SessionStorageNamespace : public ThreadSafeRefCounted&lt;SessionStorageNamespace&gt; {
</span><span class="lines">@@ -377,13 +371,13 @@
</span><span class="cx">     IPC::Connection* allowedConnection() const { return m_allowedConnection.get(); }
</span><span class="cx">     void setAllowedConnection(IPC::Connection*);
</span><span class="cx"> 
</span><del>-    Ref&lt;StorageArea&gt; getOrCreateStorageArea(Ref&lt;SecurityOrigin&gt;&amp;&amp;);
</del><ins>+    Ref&lt;StorageArea&gt; getOrCreateStorageArea(SecurityOriginData&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void cloneTo(SessionStorageNamespace&amp; newSessionStorageNamespace);
</span><span class="cx"> 
</span><del>-    Vector&lt;Ref&lt;SecurityOrigin&gt;&gt; origins() const
</del><ins>+    Vector&lt;SecurityOriginData&gt; origins() const
</ins><span class="cx">     {
</span><del>-        Vector&lt;Ref&lt;SecurityOrigin&gt;&gt; origins;
</del><ins>+        Vector&lt;SecurityOriginData&gt; origins;
</ins><span class="cx"> 
</span><span class="cx">         for (const auto&amp; storageArea : m_storageAreaMap.values()) {
</span><span class="cx">             if (!storageArea-&gt;items().isEmpty())
</span><span class="lines">@@ -393,10 +387,10 @@
</span><span class="cx">         return origins;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void clearStorageAreasMatchingOrigin(const SecurityOrigin&amp; securityOrigin)
</del><ins>+    void clearStorageAreasMatchingOrigin(const SecurityOriginData&amp; securityOrigin)
</ins><span class="cx">     {
</span><span class="cx">         for (auto&amp; storageArea : m_storageAreaMap.values()) {
</span><del>-            if (storageArea-&gt;securityOrigin().equal(&amp;securityOrigin))
</del><ins>+            if (storageArea-&gt;securityOrigin() == securityOrigin)
</ins><span class="cx">                 storageArea-&gt;clear();
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -413,7 +407,7 @@
</span><span class="cx">     RefPtr&lt;IPC::Connection&gt; m_allowedConnection;
</span><span class="cx">     unsigned m_quotaInBytes;
</span><span class="cx"> 
</span><del>-    HashMap&lt;RefPtr&lt;SecurityOrigin&gt;, RefPtr&lt;StorageArea&gt;&gt; m_storageAreaMap;
</del><ins>+    HashMap&lt;SecurityOriginData, RefPtr&lt;StorageArea&gt;&gt; m_storageAreaMap;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;StorageManager::SessionStorageNamespace&gt; StorageManager::SessionStorageNamespace::create(unsigned quotaInBytes)
</span><span class="lines">@@ -437,13 +431,11 @@
</span><span class="cx">     m_allowedConnection = allowedConnection;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;StorageManager::StorageArea&gt; StorageManager::SessionStorageNamespace::getOrCreateStorageArea(Ref&lt;SecurityOrigin&gt;&amp;&amp; securityOrigin)
</del><ins>+auto StorageManager::SessionStorageNamespace::getOrCreateStorageArea(SecurityOriginData&amp;&amp; securityOrigin) -&gt; Ref&lt;StorageArea&gt;
</ins><span class="cx"> {
</span><del>-    auto&amp; slot = m_storageAreaMap.add(securityOrigin.ptr(), nullptr).iterator-&gt;value;
-    if (!slot)
-        slot = StorageArea::create(0, WTFMove(securityOrigin), m_quotaInBytes);
-
-    return *slot;
</del><ins>+    return *m_storageAreaMap.ensure(securityOrigin, [this, securityOrigin]() mutable {
+        return StorageArea::create(nullptr, WTFMove(securityOrigin), m_quotaInBytes);
+    }).iterator-&gt;value.copyRef();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void StorageManager::SessionStorageNamespace::cloneTo(SessionStorageNamespace&amp; newSessionStorageNamespace)
</span><span class="lines">@@ -450,8 +442,8 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT_UNUSED(newSessionStorageNamespace, newSessionStorageNamespace.isEmpty());
</span><span class="cx"> 
</span><del>-    for (HashMap&lt;RefPtr&lt;SecurityOrigin&gt;, RefPtr&lt;StorageArea&gt;&gt;::const_iterator it = m_storageAreaMap.begin(), end = m_storageAreaMap.end(); it != end; ++it)
-        newSessionStorageNamespace.m_storageAreaMap.add(it-&gt;key, it-&gt;value-&gt;clone());
</del><ins>+    for (auto&amp; pair : m_storageAreaMap)
+        newSessionStorageNamespace.m_storageAreaMap.add(pair.key, pair.value-&gt;clone());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;StorageManager&gt; StorageManager::create(const String&amp; localStorageDirectory)
</span><span class="lines">@@ -539,16 +531,14 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::getSessionStorageOrigins(std::function&lt;void (HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)
</del><ins>+void StorageManager::getSessionStorageOrigins(std::function&lt;void(HashSet&lt;WebCore::SecurityOriginData&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;StorageManager&gt; storageManager(this);
-
</del><span class="cx">     m_queue-&gt;dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
</span><del>-        HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; origins;
</del><ins>+        HashSet&lt;SecurityOriginData&gt; origins;
</ins><span class="cx"> 
</span><span class="cx">         for (const auto&amp; sessionStorageNamespace : m_sessionStorageNamespaces.values()) {
</span><span class="cx">             for (auto&amp; origin : sessionStorageNamespace-&gt;origins())
</span><del>-                origins.add(WTFMove(origin));
</del><ins>+                origins.add(origin);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
</span><span class="lines">@@ -557,7 +547,7 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::deleteSessionStorageOrigins(std::function&lt;void ()&gt;&amp;&amp; completionHandler)
</del><ins>+void StorageManager::deleteSessionStorageOrigins(std::function&lt;void()&gt;&amp;&amp; completionHandler)
</ins><span class="cx"> {
</span><span class="cx">     m_queue-&gt;dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
</span><span class="cx">         for (auto&amp; sessionStorageNamespace : m_sessionStorageNamespaces.values())
</span><span class="lines">@@ -567,18 +557,18 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::deleteSessionStorageEntriesForOrigins(const Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp; origins, std::function&lt;void ()&gt;&amp;&amp; completionHandler)
</del><ins>+void StorageManager::deleteSessionStorageEntriesForOrigins(const Vector&lt;WebCore::SecurityOriginData&gt;&amp; origins, std::function&lt;void()&gt;&amp;&amp; completionHandler)
</ins><span class="cx"> {
</span><del>-    Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; copiedOrigins;
</del><ins>+    Vector&lt;WebCore::SecurityOriginData&gt; copiedOrigins;
</ins><span class="cx">     copiedOrigins.reserveInitialCapacity(origins.size());
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; origin : origins)
</span><del>-        copiedOrigins.uncheckedAppend(origin-&gt;isolatedCopy());
</del><ins>+        copiedOrigins.uncheckedAppend(origin.isolatedCopy());
</ins><span class="cx"> 
</span><span class="cx">     m_queue-&gt;dispatch([this, protectedThis = makeRef(*this), copiedOrigins = WTFMove(copiedOrigins), completionHandler = WTFMove(completionHandler)]() mutable {
</span><span class="cx">         for (auto&amp; origin : copiedOrigins) {
</span><span class="cx">             for (auto&amp; sessionStorageNamespace : m_sessionStorageNamespaces.values())
</span><del>-                sessionStorageNamespace-&gt;clearStorageAreasMatchingOrigin(*origin);
</del><ins>+                sessionStorageNamespace-&gt;clearStorageAreasMatchingOrigin(origin);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         RunLoop::main().dispatch(WTFMove(completionHandler));
</span><span class="lines">@@ -585,17 +575,17 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::getLocalStorageOrigins(std::function&lt;void (HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)
</del><ins>+void StorageManager::getLocalStorageOrigins(std::function&lt;void(HashSet&lt;WebCore::SecurityOriginData&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)
</ins><span class="cx"> {
</span><span class="cx">     m_queue-&gt;dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
</span><del>-        HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; origins;
</del><ins>+        HashSet&lt;SecurityOriginData&gt; origins;
</ins><span class="cx"> 
</span><span class="cx">         for (auto&amp; origin : m_localStorageDatabaseTracker-&gt;origins())
</span><del>-            origins.add(WTFMove(origin));
</del><ins>+            origins.add(origin);
</ins><span class="cx"> 
</span><span class="cx">         for (auto&amp; transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values()) {
</span><span class="cx">             for (auto&amp; origin : transientLocalStorageNamespace-&gt;origins())
</span><del>-                origins.add(WTFMove(origin));
</del><ins>+                origins.add(origin);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
</span><span class="lines">@@ -615,7 +605,7 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::deleteLocalStorageEntriesForOrigin(const SecurityOrigin&amp; securityOrigin)
</del><ins>+void StorageManager::deleteLocalStorageEntriesForOrigin(SecurityOriginData&amp;&amp; securityOrigin)
</ins><span class="cx"> {
</span><span class="cx">     m_queue-&gt;dispatch([this, protectedThis = makeRef(*this), copiedOrigin = securityOrigin.isolatedCopy()]() mutable {
</span><span class="cx">         for (auto&amp; localStorageNamespace : m_localStorageNamespaces.values())
</span><span class="lines">@@ -624,11 +614,11 @@
</span><span class="cx">         for (auto&amp; transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
</span><span class="cx">             transientLocalStorageNamespace-&gt;clearStorageAreasMatchingOrigin(copiedOrigin);
</span><span class="cx"> 
</span><del>-        m_localStorageDatabaseTracker-&gt;deleteDatabaseWithOrigin(copiedOrigin.ptr());
</del><ins>+        m_localStorageDatabaseTracker-&gt;deleteDatabaseWithOrigin(copiedOrigin);
</ins><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point time, std::function&lt;void ()&gt;&amp;&amp; completionHandler)
</del><ins>+void StorageManager::deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point time, std::function&lt;void()&gt;&amp;&amp; completionHandler)
</ins><span class="cx"> {
</span><span class="cx">     m_queue-&gt;dispatch([this, protectedThis = makeRef(*this), time, completionHandler = WTFMove(completionHandler)]() mutable {
</span><span class="cx">         auto deletedOrigins = m_localStorageDatabaseTracker-&gt;deleteDatabasesModifiedSince(time);
</span><span class="lines">@@ -635,7 +625,7 @@
</span><span class="cx"> 
</span><span class="cx">         for (const auto&amp; origin : deletedOrigins) {
</span><span class="cx">             for (auto&amp; localStorageNamespace : m_localStorageNamespaces.values())
</span><del>-                localStorageNamespace-&gt;clearStorageAreasMatchingOrigin(origin.get());
</del><ins>+                localStorageNamespace-&gt;clearStorageAreasMatchingOrigin(origin);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         for (auto&amp; transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
</span><span class="lines">@@ -645,23 +635,23 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::deleteLocalStorageEntriesForOrigins(const Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp; origins, std::function&lt;void ()&gt;&amp;&amp; completionHandler)
</del><ins>+void StorageManager::deleteLocalStorageEntriesForOrigins(const Vector&lt;WebCore::SecurityOriginData&gt;&amp; origins, std::function&lt;void()&gt;&amp;&amp; completionHandler)
</ins><span class="cx"> {
</span><del>-    Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; copiedOrigins;
</del><ins>+    Vector&lt;SecurityOriginData&gt; copiedOrigins;
</ins><span class="cx">     copiedOrigins.reserveInitialCapacity(origins.size());
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; origin : origins)
</span><del>-        copiedOrigins.uncheckedAppend(origin-&gt;isolatedCopy());
</del><ins>+        copiedOrigins.uncheckedAppend(origin.isolatedCopy());
</ins><span class="cx"> 
</span><span class="cx">     m_queue-&gt;dispatch([this, protectedThis = makeRef(*this), copiedOrigins = WTFMove(copiedOrigins), completionHandler = WTFMove(completionHandler)]() mutable {
</span><span class="cx">         for (auto&amp; origin : copiedOrigins) {
</span><span class="cx">             for (auto&amp; localStorageNamespace : m_localStorageNamespaces.values())
</span><del>-                localStorageNamespace-&gt;clearStorageAreasMatchingOrigin(*origin);
</del><ins>+                localStorageNamespace-&gt;clearStorageAreasMatchingOrigin(origin);
</ins><span class="cx"> 
</span><span class="cx">             for (auto&amp; transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
</span><del>-                transientLocalStorageNamespace-&gt;clearStorageAreasMatchingOrigin(*origin);
</del><ins>+                transientLocalStorageNamespace-&gt;clearStorageAreasMatchingOrigin(origin);
</ins><span class="cx"> 
</span><del>-            m_localStorageDatabaseTracker-&gt;deleteDatabaseWithOrigin(origin.get());
</del><ins>+            m_localStorageDatabaseTracker-&gt;deleteDatabaseWithOrigin(origin);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         RunLoop::main().dispatch(WTFMove(completionHandler));
</span><span class="lines">@@ -668,7 +658,7 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::createLocalStorageMap(IPC::Connection&amp; connection, uint64_t storageMapID, uint64_t storageNamespaceID, const SecurityOriginData&amp; securityOriginData)
</del><ins>+void StorageManager::createLocalStorageMap(IPC::Connection&amp; connection, uint64_t storageMapID, uint64_t storageNamespaceID, SecurityOriginData&amp;&amp; securityOriginData)
</ins><span class="cx"> {
</span><span class="cx">     std::pair&lt;RefPtr&lt;IPC::Connection&gt;, uint64_t&gt; connectionAndStorageMapIDPair(&amp;connection, storageMapID);
</span><span class="cx"> 
</span><span class="lines">@@ -686,19 +676,17 @@
</span><span class="cx">     // FIXME: This should be a message check.
</span><span class="cx">     ASSERT(localStorageNamespace);
</span><span class="cx"> 
</span><del>-    auto storageArea = localStorageNamespace-&gt;getOrCreateStorageArea(securityOriginData.securityOrigin());
</del><ins>+    auto storageArea = localStorageNamespace-&gt;getOrCreateStorageArea(WTFMove(securityOriginData));
</ins><span class="cx">     storageArea-&gt;addListener(connection, storageMapID);
</span><span class="cx"> 
</span><span class="cx">     result.iterator-&gt;value = WTFMove(storageArea);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::createTransientLocalStorageMap(IPC::Connection&amp; connection, uint64_t storageMapID, uint64_t storageNamespaceID, const SecurityOriginData&amp; topLevelOriginData, const SecurityOriginData&amp; securityOriginData)
</del><ins>+void StorageManager::createTransientLocalStorageMap(IPC::Connection&amp; connection, uint64_t storageMapID, uint64_t storageNamespaceID, SecurityOriginData&amp;&amp; topLevelOriginData, SecurityOriginData&amp;&amp; origin)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: This should be a message check.
</span><span class="cx">     ASSERT(m_storageAreasByConnection.isValidKey({ &amp;connection, storageMapID }));
</span><span class="cx"> 
</span><del>-    Ref&lt;SecurityOrigin&gt; origin = securityOriginData.securityOrigin();
-
</del><span class="cx">     // See if we already have session storage for this connection/origin combo.
</span><span class="cx">     // If so, update the map with the new ID, otherwise keep on trucking.
</span><span class="cx">     for (auto it = m_storageAreasByConnection.begin(), end = m_storageAreasByConnection.end(); it != end; ++it) {
</span><span class="lines">@@ -707,7 +695,7 @@
</span><span class="cx">         Ref&lt;StorageArea&gt; area = *it-&gt;value;
</span><span class="cx">         if (!area-&gt;isSessionStorage())
</span><span class="cx">             continue;
</span><del>-        if (!origin-&gt;isSameSchemeHostPort(&amp;area-&gt;securityOrigin()))
</del><ins>+        if (!origin.securityOrigin()-&gt;isSameSchemeHostPort(area-&gt;securityOrigin().securityOrigin().ptr()))
</ins><span class="cx">             continue;
</span><span class="cx">         area-&gt;addListener(connection, storageMapID);
</span><span class="cx">         m_storageAreasByConnection.remove(it);
</span><span class="lines">@@ -720,15 +708,15 @@
</span><span class="cx">     // FIXME: This should be a message check.
</span><span class="cx">     ASSERT(!slot);
</span><span class="cx"> 
</span><del>-    TransientLocalStorageNamespace* transientLocalStorageNamespace = getOrCreateTransientLocalStorageNamespace(storageNamespaceID, topLevelOriginData.securityOrigin());
</del><ins>+    TransientLocalStorageNamespace* transientLocalStorageNamespace = getOrCreateTransientLocalStorageNamespace(storageNamespaceID, WTFMove(topLevelOriginData));
</ins><span class="cx"> 
</span><del>-    auto storageArea = transientLocalStorageNamespace-&gt;getOrCreateStorageArea(securityOriginData.securityOrigin());
</del><ins>+    auto storageArea = transientLocalStorageNamespace-&gt;getOrCreateStorageArea(WTFMove(origin));
</ins><span class="cx">     storageArea-&gt;addListener(connection, storageMapID);
</span><span class="cx"> 
</span><span class="cx">     slot = WTFMove(storageArea);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StorageManager::createSessionStorageMap(IPC::Connection&amp; connection, uint64_t storageMapID, uint64_t storageNamespaceID, const SecurityOriginData&amp; securityOriginData)
</del><ins>+void StorageManager::createSessionStorageMap(IPC::Connection&amp; connection, uint64_t storageMapID, uint64_t storageNamespaceID, SecurityOriginData&amp;&amp; securityOriginData)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: This should be a message check.
</span><span class="cx">     ASSERT(m_sessionStorageNamespaces.isValidKey(storageNamespaceID));
</span><span class="lines">@@ -751,7 +739,7 @@
</span><span class="cx">     // FIXME: This should be a message check.
</span><span class="cx">     ASSERT(&amp;connection == sessionStorageNamespace-&gt;allowedConnection());
</span><span class="cx"> 
</span><del>-    auto storageArea = sessionStorageNamespace-&gt;getOrCreateStorageArea(securityOriginData.securityOrigin());
</del><ins>+    auto storageArea = sessionStorageNamespace-&gt;getOrCreateStorageArea(WTFMove(securityOriginData));
</ins><span class="cx">     storageArea-&gt;addListener(connection, storageMapID);
</span><span class="cx"> 
</span><span class="cx">     slot = WTFMove(storageArea);
</span><span class="lines">@@ -859,7 +847,7 @@
</span><span class="cx"> StorageManager::LocalStorageNamespace* StorageManager::getOrCreateLocalStorageNamespace(uint64_t storageNamespaceID)
</span><span class="cx"> {
</span><span class="cx">     if (!m_localStorageNamespaces.isValidKey(storageNamespaceID))
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     auto&amp; slot = m_localStorageNamespaces.add(storageNamespaceID, nullptr).iterator-&gt;value;
</span><span class="cx">     if (!slot)
</span><span class="lines">@@ -868,12 +856,12 @@
</span><span class="cx">     return slot.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-StorageManager::TransientLocalStorageNamespace* StorageManager::getOrCreateTransientLocalStorageNamespace(uint64_t storageNamespaceID, WebCore::SecurityOrigin&amp; topLevelOrigin)
</del><ins>+StorageManager::TransientLocalStorageNamespace* StorageManager::getOrCreateTransientLocalStorageNamespace(uint64_t storageNamespaceID, WebCore::SecurityOriginData&amp;&amp; topLevelOrigin)
</ins><span class="cx"> {
</span><del>-    if (!m_transientLocalStorageNamespaces.isValidKey({ storageNamespaceID, &amp;topLevelOrigin }))
</del><ins>+    if (!m_transientLocalStorageNamespaces.isValidKey({ storageNamespaceID, topLevelOrigin }))
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    auto&amp; slot = m_transientLocalStorageNamespaces.add({ storageNamespaceID, &amp;topLevelOrigin }, nullptr).iterator-&gt;value;
</del><ins>+    auto&amp; slot = m_transientLocalStorageNamespaces.add({ storageNamespaceID, WTFMove(topLevelOrigin) }, nullptr).iterator-&gt;value;
</ins><span class="cx">     if (!slot)
</span><span class="cx">         slot = TransientLocalStorageNamespace::create();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessStorageStorageManagerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -23,11 +23,11 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef StorageManager_h
-#define StorageManager_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;Connection.h&quot;
</span><span class="cx"> #include &quot;LocalStorageDatabaseTracker.h&quot;
</span><ins>+#include &lt;WebCore/SecurityOriginData.h&gt;
</ins><span class="cx"> #include &lt;WebCore/SecurityOriginHash.h&gt;
</span><span class="cx"> #include &lt;chrono&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> class SecurityOrigin;
</span><del>-struct SecurityOriginData;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -59,17 +58,17 @@
</span><span class="cx">     void processDidCloseConnection(WebProcessProxy&amp;, IPC::Connection&amp;);
</span><span class="cx">     void applicationWillTerminate();
</span><span class="cx"> 
</span><del>-    void getSessionStorageOrigins(std::function&lt;void (HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler);
-    void deleteSessionStorageOrigins(std::function&lt;void ()&gt;&amp;&amp; completionHandler);
-    void deleteSessionStorageEntriesForOrigins(const Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp;, std::function&lt;void ()&gt;&amp;&amp; completionHandler);
</del><ins>+    void getSessionStorageOrigins(std::function&lt;void(HashSet&lt;WebCore::SecurityOriginData&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler);
+    void deleteSessionStorageOrigins(std::function&lt;void()&gt;&amp;&amp; completionHandler);
+    void deleteSessionStorageEntriesForOrigins(const Vector&lt;WebCore::SecurityOriginData&gt;&amp;, std::function&lt;void()&gt;&amp;&amp; completionHandler);
</ins><span class="cx"> 
</span><del>-    void getLocalStorageOrigins(std::function&lt;void (HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler);
-    void deleteLocalStorageEntriesForOrigin(const WebCore::SecurityOrigin&amp;);
</del><ins>+    void getLocalStorageOrigins(std::function&lt;void(HashSet&lt;WebCore::SecurityOriginData&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler);
+    void deleteLocalStorageEntriesForOrigin(WebCore::SecurityOriginData&amp;&amp;);
</ins><span class="cx"> 
</span><del>-    void deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point, std::function&lt;void ()&gt;&amp;&amp; completionHandler);
-    void deleteLocalStorageEntriesForOrigins(const Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp;, std::function&lt;void ()&gt;&amp;&amp; completionHandler);
</del><ins>+    void deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point, std::function&lt;void()&gt;&amp;&amp; completionHandler);
+    void deleteLocalStorageEntriesForOrigins(const Vector&lt;WebCore::SecurityOriginData&gt;&amp;, std::function&lt;void()&gt;&amp;&amp; completionHandler);
</ins><span class="cx"> 
</span><del>-    void getLocalStorageOriginDetails(std::function&lt;void (Vector&lt;LocalStorageDatabaseTracker::OriginDetails&gt;)&gt;&amp;&amp; completionHandler);
</del><ins>+    void getLocalStorageOriginDetails(std::function&lt;void(Vector&lt;LocalStorageDatabaseTracker::OriginDetails&gt;)&gt;&amp;&amp; completionHandler);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     explicit StorageManager(const String&amp; localStorageDirectory);
</span><span class="lines">@@ -79,9 +78,9 @@
</span><span class="cx">     void didReceiveSyncMessage(IPC::Connection&amp;, IPC::Decoder&amp;, std::unique_ptr&lt;IPC::Encoder&gt;&amp; replyEncoder) override;
</span><span class="cx"> 
</span><span class="cx">     // Message handlers.
</span><del>-    void createLocalStorageMap(IPC::Connection&amp;, uint64_t storageMapID, uint64_t storageNamespaceID, const WebCore::SecurityOriginData&amp;);
-    void createTransientLocalStorageMap(IPC::Connection&amp;, uint64_t storageMapID, uint64_t storageNamespaceID, const WebCore::SecurityOriginData&amp; topLevelOriginData, const WebCore::SecurityOriginData&amp;);
-    void createSessionStorageMap(IPC::Connection&amp;, uint64_t storageMapID, uint64_t storageNamespaceID, const WebCore::SecurityOriginData&amp;);
</del><ins>+    void createLocalStorageMap(IPC::Connection&amp;, uint64_t storageMapID, uint64_t storageNamespaceID, WebCore::SecurityOriginData&amp;&amp;);
+    void createTransientLocalStorageMap(IPC::Connection&amp;, uint64_t storageMapID, uint64_t storageNamespaceID, WebCore::SecurityOriginData&amp;&amp; topLevelOriginData, WebCore::SecurityOriginData&amp;&amp;);
+    void createSessionStorageMap(IPC::Connection&amp;, uint64_t storageMapID, uint64_t storageNamespaceID, WebCore::SecurityOriginData&amp;&amp;);
</ins><span class="cx">     void destroyStorageMap(IPC::Connection&amp;, uint64_t storageMapID);
</span><span class="cx"> 
</span><span class="cx">     void getValues(IPC::Connection&amp;, uint64_t storageMapID, uint64_t storageMapSeed, HashMap&lt;String, String&gt;&amp; values);
</span><span class="lines">@@ -96,7 +95,7 @@
</span><span class="cx">     LocalStorageNamespace* getOrCreateLocalStorageNamespace(uint64_t storageNamespaceID);
</span><span class="cx"> 
</span><span class="cx">     class TransientLocalStorageNamespace;
</span><del>-    TransientLocalStorageNamespace* getOrCreateTransientLocalStorageNamespace(uint64_t storageNamespaceID, WebCore::SecurityOrigin&amp; topLevelOrigin);
</del><ins>+    TransientLocalStorageNamespace* getOrCreateTransientLocalStorageNamespace(uint64_t storageNamespaceID, WebCore::SecurityOriginData&amp;&amp; topLevelOrigin);
</ins><span class="cx"> 
</span><span class="cx">     Ref&lt;WorkQueue&gt; m_queue;
</span><span class="cx"> 
</span><span class="lines">@@ -103,7 +102,7 @@
</span><span class="cx">     Ref&lt;LocalStorageDatabaseTracker&gt; m_localStorageDatabaseTracker;
</span><span class="cx">     HashMap&lt;uint64_t, RefPtr&lt;LocalStorageNamespace&gt;&gt; m_localStorageNamespaces;
</span><span class="cx"> 
</span><del>-    HashMap&lt;std::pair&lt;uint64_t, RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;, RefPtr&lt;TransientLocalStorageNamespace&gt;&gt; m_transientLocalStorageNamespaces;
</del><ins>+    HashMap&lt;std::pair&lt;uint64_t, WebCore::SecurityOriginData&gt;, RefPtr&lt;TransientLocalStorageNamespace&gt;&gt; m_transientLocalStorageNamespaces;
</ins><span class="cx"> 
</span><span class="cx">     class SessionStorageNamespace;
</span><span class="cx">     HashMap&lt;uint64_t, RefPtr&lt;SessionStorageNamespace&gt;&gt; m_sessionStorageNamespaces;
</span><span class="lines">@@ -112,5 +111,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span><del>-
-#endif // StorageManager_h
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebProcessProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -749,7 +749,7 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet&lt;WebsiteDataType&gt; dataTypes, const Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp; origins, Function&lt;void ()&gt; completionHandler)
</del><ins>+void WebProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, OptionSet&lt;WebsiteDataType&gt; dataTypes, const Vector&lt;WebCore::SecurityOriginData&gt;&amp; origins, Function&lt;void()&gt; completionHandler)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(canSendMessage());
</span><span class="cx"> 
</span><span class="lines">@@ -756,11 +756,7 @@
</span><span class="cx">     auto token = throttler().backgroundActivityToken();
</span><span class="cx">     RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), ProcessSuspension, &quot;%p - WebProcessProxy is taking a background assertion because the Web process is deleting Website data for several origins&quot;, this);
</span><span class="cx"> 
</span><del>-    Vector&lt;SecurityOriginData&gt; originData;
-    for (auto&amp; origin : origins)
-        originData.append(SecurityOriginData::fromSecurityOrigin(*origin));
-
-    connection()-&gt;sendWithReply(Messages::WebProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, originData), 0, RunLoop::main(), [this, token, completionHandler = WTFMove(completionHandler), sessionID](auto reply) {
</del><ins>+    connection()-&gt;sendWithReply(Messages::WebProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, origins), 0, RunLoop::main(), [this, token, completionHandler = WTFMove(completionHandler), sessionID](auto reply) {
</ins><span class="cx">         completionHandler();
</span><span class="cx">         RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), ProcessSuspension, &quot;%p - WebProcessProxy is releasing a background assertion because the Web process is done deleting Website data for several origins&quot;, this);
</span><span class="cx">     });
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebProcessProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.h (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -118,9 +118,9 @@
</span><span class="cx">     void didSaveToPageCache();
</span><span class="cx">     void releasePageCache();
</span><span class="cx"> 
</span><del>-    void fetchWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, Function&lt;void (WebsiteData)&gt; completionHandler);
-    void deleteWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, std::chrono::system_clock::time_point modifiedSince, Function&lt;void ()&gt; completionHandler);
-    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, const Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp; origins, Function&lt;void ()&gt; completionHandler);
</del><ins>+    void fetchWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, Function&lt;void(WebsiteData)&gt; completionHandler);
+    void deleteWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, std::chrono::system_clock::time_point modifiedSince, Function&lt;void()&gt; completionHandler);
+    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt;, const Vector&lt;WebCore::SecurityOriginData&gt;&amp;, Function&lt;void()&gt; completionHandler);
</ins><span class="cx"> 
</span><span class="cx">     void enableSuddenTermination();
</span><span class="cx">     void disableSuddenTermination();
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebsiteDataWebsiteDataRecordcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -66,9 +66,9 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-String WebsiteDataRecord::displayNameForOrigin(const WebCore::SecurityOrigin&amp; securityOrigin)
</del><ins>+String WebsiteDataRecord::displayNameForOrigin(const WebCore::SecurityOriginData&amp; securityOrigin)
</ins><span class="cx"> {
</span><del>-    const auto&amp; protocol = securityOrigin.protocol();
</del><ins>+    const auto&amp; protocol = securityOrigin.protocol;
</ins><span class="cx"> 
</span><span class="cx">     if (protocol == &quot;file&quot;)
</span><span class="cx">         return displayNameForLocalFiles();
</span><span class="lines">@@ -75,17 +75,17 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(PUBLIC_SUFFIX_LIST)
</span><span class="cx">     if (protocol == &quot;http&quot; || protocol == &quot;https&quot;)
</span><del>-        return WebCore::topPrivatelyControlledDomain(securityOrigin.host());
</del><ins>+        return WebCore::topPrivatelyControlledDomain(securityOrigin.host);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebsiteDataRecord::add(WebsiteDataType type, RefPtr&lt;WebCore::SecurityOrigin&gt;&amp;&amp; origin)
</del><ins>+void WebsiteDataRecord::add(WebsiteDataType type, const WebCore::SecurityOriginData&amp; origin)
</ins><span class="cx"> {
</span><span class="cx">     types |= type;
</span><span class="cx"> 
</span><del>-    origins.add(WTFMove(origin));
</del><ins>+    origins.add(origin);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebsiteDataRecord::addCookieHostName(const String&amp; hostName)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebsiteDataWebsiteDataRecordh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataRecord.h (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -23,10 +23,10 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef WebsiteDataRecord_h
-#define WebsiteDataRecord_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;WebsiteDataType.h&quot;
</span><ins>+#include &lt;WebCore/SecurityOriginData.h&gt;
</ins><span class="cx"> #include &lt;WebCore/SecurityOriginHash.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="lines">@@ -46,9 +46,9 @@
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx">     static String displayNameForPluginDataHostName(const String&amp; hostName);
</span><span class="cx"> #endif
</span><del>-    static String displayNameForOrigin(const WebCore::SecurityOrigin&amp;);
</del><ins>+    static String displayNameForOrigin(const WebCore::SecurityOriginData&amp;);
</ins><span class="cx"> 
</span><del>-    void add(WebsiteDataType, RefPtr&lt;WebCore::SecurityOrigin&gt;&amp;&amp;);
</del><ins>+    void add(WebsiteDataType, const WebCore::SecurityOriginData&amp;);
</ins><span class="cx">     void addCookieHostName(const String&amp; hostName);
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx">     void addPluginDataHostName(const String&amp; hostName);
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx">     };
</span><span class="cx">     Optional&lt;Size&gt; size;
</span><span class="cx"> 
</span><del>-    HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; origins;
</del><ins>+    HashSet&lt;WebCore::SecurityOriginData&gt; origins;
</ins><span class="cx">     HashSet&lt;String&gt; cookieHostNames;
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx">     HashSet&lt;String&gt; pluginDataHostNames;
</span><span class="lines">@@ -71,5 +71,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span><del>-
-#endif // WebsiteDataRecord_h
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebsiteDataWebsiteDataStorecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -179,7 +179,7 @@
</span><span class="cx">             --pendingCallbacks;
</span><span class="cx"> 
</span><span class="cx">             for (auto&amp; entry : websiteData.entries) {
</span><del>-                auto displayName = WebsiteDataRecord::displayNameForOrigin(*entry.origin);
</del><ins>+                auto displayName = WebsiteDataRecord::displayNameForOrigin(WebCore::SecurityOriginData::fromSecurityOrigin(*entry.origin));
</ins><span class="cx">                 if (!displayName)
</span><span class="cx">                     continue;
</span><span class="cx"> 
</span><span class="lines">@@ -187,7 +187,7 @@
</span><span class="cx">                 if (!record.displayName)
</span><span class="cx">                     record.displayName = WTFMove(displayName);
</span><span class="cx"> 
</span><del>-                record.add(entry.type, WTFMove(entry.origin));
</del><ins>+                record.add(entry.type, WebCore::SecurityOriginData::fromSecurityOrigin(*entry.origin));
</ins><span class="cx"> 
</span><span class="cx">                 if (fetchOptions.contains(WebsiteDataFetchOption::ComputeSizes)) {
</span><span class="cx">                     if (!record.size)
</span><span class="lines">@@ -325,11 +325,11 @@
</span><span class="cx">     if (dataTypes.contains(WebsiteDataType::SessionStorage) &amp;&amp; m_storageManager) {
</span><span class="cx">         callbackAggregator-&gt;addPendingCallback();
</span><span class="cx"> 
</span><del>-        m_storageManager-&gt;getSessionStorageOrigins([callbackAggregator](HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp;&amp; origins) {
</del><ins>+        m_storageManager-&gt;getSessionStorageOrigins([callbackAggregator](HashSet&lt;WebCore::SecurityOriginData&gt;&amp;&amp; origins) {
</ins><span class="cx">             WebsiteData websiteData;
</span><span class="cx"> 
</span><span class="cx">             while (!origins.isEmpty())
</span><del>-                websiteData.entries.append(WebsiteData::Entry { origins.takeAny(), WebsiteDataType::SessionStorage, 0 });
</del><ins>+                websiteData.entries.append(WebsiteData::Entry { origins.takeAny().securityOrigin(), WebsiteDataType::SessionStorage, 0 });
</ins><span class="cx"> 
</span><span class="cx">             callbackAggregator-&gt;removePendingCallback(WTFMove(websiteData));
</span><span class="cx">         });
</span><span class="lines">@@ -338,11 +338,11 @@
</span><span class="cx">     if (dataTypes.contains(WebsiteDataType::LocalStorage) &amp;&amp; m_storageManager) {
</span><span class="cx">         callbackAggregator-&gt;addPendingCallback();
</span><span class="cx"> 
</span><del>-        m_storageManager-&gt;getLocalStorageOrigins([callbackAggregator](HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp;&amp; origins) {
</del><ins>+        m_storageManager-&gt;getLocalStorageOrigins([callbackAggregator](HashSet&lt;WebCore::SecurityOriginData&gt;&amp;&amp; origins) {
</ins><span class="cx">             WebsiteData websiteData;
</span><span class="cx"> 
</span><span class="cx">             while (!origins.isEmpty())
</span><del>-                websiteData.entries.append(WebsiteData::Entry { origins.takeAny(), WebsiteDataType::LocalStorage, 0 });
</del><ins>+                websiteData.entries.append(WebsiteData::Entry { origins.takeAny().securityOrigin(), WebsiteDataType::LocalStorage, 0 });
</ins><span class="cx"> 
</span><span class="cx">             callbackAggregator-&gt;removePendingCallback(WTFMove(websiteData));
</span><span class="cx">         });
</span><span class="lines">@@ -411,7 +411,7 @@
</span><span class="cx">             RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins)]() mutable {
</span><span class="cx">                 WebsiteData websiteData;
</span><span class="cx">                 for (auto&amp; origin : origins)
</span><del>-                    websiteData.entries.append(WebsiteData::Entry { WTFMove(origin), WebsiteDataType::MediaKeys, 0 });
</del><ins>+                    websiteData.entries.append(WebsiteData::Entry { origin.securityOrigin().ptr(), WebsiteDataType::MediaKeys, 0 });
</ins><span class="cx"> 
</span><span class="cx">                 callbackAggregator-&gt;removePendingCallback(WTFMove(websiteData));
</span><span class="cx">             });
</span><span class="lines">@@ -534,7 +534,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         unsigned pendingCallbacks = 0;
</span><del>-        std::function&lt;void ()&gt; completionHandler;
</del><ins>+        std::function&lt;void()&gt; completionHandler;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CallbackAggregator&gt; callbackAggregator = adoptRef(new CallbackAggregator(WTFMove(completionHandler)));
</span><span class="lines">@@ -735,7 +735,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebsiteDataStore::removeData(OptionSet&lt;WebsiteDataType&gt; dataTypes, const Vector&lt;WebsiteDataRecord&gt;&amp; dataRecords, std::function&lt;void ()&gt; completionHandler)
</span><span class="cx"> {
</span><del>-    Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; origins;
</del><ins>+    Vector&lt;WebCore::SecurityOriginData&gt; origins;
</ins><span class="cx"> 
</span><span class="cx">     for (const auto&amp; dataRecord : dataRecords) {
</span><span class="cx">         for (auto&amp; origin : dataRecord.origins)
</span><span class="lines">@@ -768,13 +768,13 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         unsigned pendingCallbacks = 0;
</span><del>-        std::function&lt;void ()&gt; completionHandler;
</del><ins>+        std::function&lt;void()&gt; completionHandler;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CallbackAggregator&gt; callbackAggregator = adoptRef(new CallbackAggregator(WTFMove(completionHandler)));
</span><span class="cx">     
</span><span class="cx">     if (dataTypes.contains(WebsiteDataType::DiskCache)) {
</span><del>-        HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; origins;
</del><ins>+        HashSet&lt;WebCore::SecurityOriginData&gt; origins;
</ins><span class="cx">         for (const auto&amp; dataRecord : dataRecords) {
</span><span class="cx">             for (const auto&amp; origin : dataRecord.origins)
</span><span class="cx">                 origins.add(origin);
</span><span class="lines">@@ -783,7 +783,13 @@
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="cx">         callbackAggregator-&gt;addPendingCallback();
</span><span class="cx">         m_queue-&gt;dispatch([origins = WTFMove(origins), mediaCacheDirectory = m_configuration.mediaCacheDirectory.isolatedCopy(), callbackAggregator] {
</span><del>-            WebCore::HTMLMediaElement::clearMediaCacheForOrigins(mediaCacheDirectory, origins);
</del><ins>+
+            // FIXME: Move SecurityOrigin::toRawString to SecurityOriginData and
+            // make HTMLMediaElement::clearMediaCacheForOrigins take SecurityOriginData.
+            HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; securityOrigins;
+            for (auto&amp; origin : origins)
+                securityOrigins.add(origin.securityOrigin());
+            WebCore::HTMLMediaElement::clearMediaCacheForOrigins(mediaCacheDirectory, securityOrigins);
</ins><span class="cx">             
</span><span class="cx">             WTF::RunLoop::main().dispatch([callbackAggregator] {
</span><span class="cx">                 callbackAggregator-&gt;removePendingCallback();
</span><span class="lines">@@ -865,7 +871,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (dataTypes.contains(WebsiteDataType::OfflineWebApplicationCache) &amp;&amp; isPersistent()) {
</span><del>-        HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; origins;
</del><ins>+        HashSet&lt;WebCore::SecurityOriginData&gt; origins;
</ins><span class="cx">         for (const auto&amp; dataRecord : dataRecords) {
</span><span class="cx">             for (const auto&amp; origin : dataRecord.origins)
</span><span class="cx">                 origins.add(origin);
</span><span class="lines">@@ -876,7 +882,7 @@
</span><span class="cx">             auto storage = WebCore::ApplicationCacheStorage::create(applicationCacheDirectory, applicationCacheFlatFileSubdirectoryName);
</span><span class="cx"> 
</span><span class="cx">             for (const auto&amp; origin : origins)
</span><del>-                storage-&gt;deleteCacheForOrigin(*origin);
</del><ins>+                storage-&gt;deleteCacheForOrigin(origin.securityOrigin());
</ins><span class="cx"> 
</span><span class="cx">             WTF::RunLoop::main().dispatch([callbackAggregator] {
</span><span class="cx">                 callbackAggregator-&gt;removePendingCallback();
</span><span class="lines">@@ -885,7 +891,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (dataTypes.contains(WebsiteDataType::WebSQLDatabases) &amp;&amp; isPersistent()) {
</span><del>-        HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; origins;
</del><ins>+        HashSet&lt;WebCore::SecurityOriginData&gt; origins;
</ins><span class="cx">         for (const auto&amp; dataRecord : dataRecords) {
</span><span class="cx">             for (const auto&amp; origin : dataRecord.origins)
</span><span class="cx">                 origins.add(origin);
</span><span class="lines">@@ -896,7 +902,7 @@
</span><span class="cx">             auto databaseTracker = WebCore::DatabaseTracker::trackerWithDatabasePath(webSQLDatabaseDirectory);
</span><span class="cx"> 
</span><span class="cx">             for (const auto&amp; origin : origins)
</span><del>-                databaseTracker-&gt;deleteOrigin(origin.get());
</del><ins>+                databaseTracker-&gt;deleteOrigin(origin.securityOrigin().ptr());
</ins><span class="cx"> 
</span><span class="cx">             RunLoop::main().dispatch([callbackAggregator] {
</span><span class="cx">                 callbackAggregator-&gt;removePendingCallback();
</span><span class="lines">@@ -918,7 +924,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     if (dataTypes.contains(WebsiteDataType::MediaKeys) &amp;&amp; isPersistent()) {
</span><del>-        HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; origins;
</del><ins>+        HashSet&lt;WebCore::SecurityOriginData&gt; origins;
</ins><span class="cx">         for (const auto&amp; dataRecord : dataRecords) {
</span><span class="cx">             for (const auto&amp; origin : dataRecord.origins)
</span><span class="cx">                 origins.add(origin);
</span><span class="lines">@@ -1082,11 +1088,11 @@
</span><span class="cx">     return WebCore::pathByAppendingComponent(mediaKeyDirectory, &quot;SecureStop.plist&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; WebsiteDataStore::mediaKeyOrigins(const String&amp; mediaKeysStorageDirectory)
</del><ins>+Vector&lt;WebCore::SecurityOriginData&gt; WebsiteDataStore::mediaKeyOrigins(const String&amp; mediaKeysStorageDirectory)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!mediaKeysStorageDirectory.isEmpty());
</span><span class="cx"> 
</span><del>-    Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; origins;
</del><ins>+    Vector&lt;WebCore::SecurityOriginData&gt; origins;
</ins><span class="cx"> 
</span><span class="cx">     for (const auto&amp; originPath : WebCore::listDirectory(mediaKeysStorageDirectory, &quot;*&quot;)) {
</span><span class="cx">         auto mediaKeyFile = computeMediaKeyFile(originPath);
</span><span class="lines">@@ -1096,7 +1102,7 @@
</span><span class="cx">         auto mediaKeyIdentifier = WebCore::pathGetFileName(originPath);
</span><span class="cx"> 
</span><span class="cx">         if (auto securityOrigin = WebCore::SecurityOrigin::maybeCreateFromDatabaseIdentifier(mediaKeyIdentifier))
</span><del>-            origins.append(WTFMove(securityOrigin));
</del><ins>+            origins.append(WebCore::SecurityOriginData::fromSecurityOrigin(*securityOrigin));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return origins;
</span><span class="lines">@@ -1121,12 +1127,12 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebsiteDataStore::removeMediaKeys(const String&amp; mediaKeysStorageDirectory, const HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp; origins)
</del><ins>+void WebsiteDataStore::removeMediaKeys(const String&amp; mediaKeysStorageDirectory, const HashSet&lt;WebCore::SecurityOriginData&gt;&amp; origins)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!mediaKeysStorageDirectory.isEmpty());
</span><span class="cx"> 
</span><span class="cx">     for (const auto&amp; origin : origins) {
</span><del>-        auto mediaKeyDirectory = WebCore::pathByAppendingComponent(mediaKeysStorageDirectory, WebCore::SecurityOriginData::fromSecurityOrigin(*origin).databaseIdentifier());
</del><ins>+        auto mediaKeyDirectory = WebCore::pathByAppendingComponent(mediaKeysStorageDirectory, origin.databaseIdentifier());
</ins><span class="cx">         auto mediaKeyFile = computeMediaKeyFile(mediaKeyDirectory);
</span><span class="cx"> 
</span><span class="cx">         WebCore::deleteFile(mediaKeyFile);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebsiteDataWebsiteDataStoreh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h (208632 => 208633)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -23,10 +23,10 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef WebsiteDataStore_h
-#define WebsiteDataStore_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;WebProcessLifetimeObserver.h&quot;
</span><ins>+#include &lt;WebCore/SecurityOriginData.h&gt;
</ins><span class="cx"> #include &lt;WebCore/SecurityOriginHash.h&gt;
</span><span class="cx"> #include &lt;WebCore/SessionID.h&gt;
</span><span class="cx"> #include &lt;functional&gt;
</span><span class="lines">@@ -110,9 +110,9 @@
</span><span class="cx">     Vector&lt;PluginModuleInfo&gt; plugins() const;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    static Vector&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt; mediaKeyOrigins(const String&amp; mediaKeysStorageDirectory);
</del><ins>+    static Vector&lt;WebCore::SecurityOriginData&gt; mediaKeyOrigins(const String&amp; mediaKeysStorageDirectory);
</ins><span class="cx">     static void removeMediaKeys(const String&amp; mediaKeysStorageDirectory, std::chrono::system_clock::time_point modifiedSince);
</span><del>-    static void removeMediaKeys(const String&amp; mediaKeysStorageDirectory, const HashSet&lt;RefPtr&lt;WebCore::SecurityOrigin&gt;&gt;&amp;);
</del><ins>+    static void removeMediaKeys(const String&amp; mediaKeysStorageDirectory, const HashSet&lt;WebCore::SecurityOriginData&gt;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     const uint64_t m_identifier;
</span><span class="cx">     const WebCore::SessionID m_sessionID;
</span><span class="lines">@@ -126,5 +126,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span><del>-
-#endif // WebsiteDataStore_h
</del></span></pre>
</div>
</div>

</body>
</html>