<!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>[196651] 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/196651">196651</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2016-02-16 12:58:56 -0800 (Tue, 16 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Modern IDB: WK2 IPC Scaffolding.
https://bugs.webkit.org/show_bug.cgi?id=154296

Reviewed by Alex Christensen.

No change in behavior yet; Just laying the groundwork.

Source/WebCore:

* Modules/indexeddb/client/IDBConnectionToServer.h:
* Modules/indexeddb/server/IDBConnectionToClient.h:
* Modules/indexeddb/shared/IDBResourceIdentifier.h:

Source/WebKit2:

* CMakeLists.txt:
* WebKit2.xcodeproj/project.pbxproj:

* DatabaseProcess/DatabaseToWebProcessConnection.cpp:
(WebKit::DatabaseToWebProcessConnection::establishIDBConnectionToServer):
(WebKit::DatabaseToWebProcessConnection::removeIDBConnectionToServer):
* DatabaseProcess/DatabaseToWebProcessConnection.h:
* DatabaseProcess/DatabaseToWebProcessConnection.messages.in:

* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: Added.
(WebKit::WebIDBConnectionToClient::create):
(WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
(WebKit::WebIDBConnectionToClient::~WebIDBConnectionToClient):
(WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
(WebKit::WebIDBConnectionToClient::messageSenderConnection):
(WebKit::WebIDBConnectionToClient::connectionToClient):
(WebKit::WebIDBConnectionToClient::didDeleteDatabase):
(WebKit::WebIDBConnectionToClient::didOpenDatabase):
(WebKit::WebIDBConnectionToClient::didAbortTransaction):
(WebKit::WebIDBConnectionToClient::didCommitTransaction):
(WebKit::WebIDBConnectionToClient::didCreateObjectStore):
(WebKit::WebIDBConnectionToClient::didDeleteObjectStore):
(WebKit::WebIDBConnectionToClient::didClearObjectStore):
(WebKit::WebIDBConnectionToClient::didCreateIndex):
(WebKit::WebIDBConnectionToClient::didDeleteIndex):
(WebKit::WebIDBConnectionToClient::didPutOrAdd):
(WebKit::WebIDBConnectionToClient::didGetRecord):
(WebKit::WebIDBConnectionToClient::didGetCount):
(WebKit::WebIDBConnectionToClient::didDeleteRecord):
(WebKit::WebIDBConnectionToClient::didOpenCursor):
(WebKit::WebIDBConnectionToClient::didIterateCursor):
(WebKit::WebIDBConnectionToClient::fireVersionChangeEvent):
(WebKit::WebIDBConnectionToClient::didStartTransaction):
(WebKit::WebIDBConnectionToClient::notifyOpenDBRequestBlocked):
* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h: Added.

* Platform/Logging.h:

* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: Added.
(WebKit::generateConnectionToServerIdentifier):
(WebKit::WebIDBConnectionToServer::create):
(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
(WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer):
(WebKit::WebIDBConnectionToServer::messageSenderConnection):
(WebKit::WebIDBConnectionToServer::coreConnectionToServer):
(WebKit::WebIDBConnectionToServer::deleteDatabase):
(WebKit::WebIDBConnectionToServer::openDatabase):
(WebKit::WebIDBConnectionToServer::abortTransaction):
(WebKit::WebIDBConnectionToServer::commitTransaction):
(WebKit::WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction):
(WebKit::WebIDBConnectionToServer::createObjectStore):
(WebKit::WebIDBConnectionToServer::deleteObjectStore):
(WebKit::WebIDBConnectionToServer::clearObjectStore):
(WebKit::WebIDBConnectionToServer::createIndex):
(WebKit::WebIDBConnectionToServer::deleteIndex):
(WebKit::WebIDBConnectionToServer::putOrAdd):
(WebKit::WebIDBConnectionToServer::getRecord):
(WebKit::WebIDBConnectionToServer::getCount):
(WebKit::WebIDBConnectionToServer::deleteRecord):
(WebKit::WebIDBConnectionToServer::openCursor):
(WebKit::WebIDBConnectionToServer::iterateCursor):
(WebKit::WebIDBConnectionToServer::establishTransaction):
(WebKit::WebIDBConnectionToServer::databaseConnectionClosed):
(WebKit::WebIDBConnectionToServer::abortOpenAndUpgradeNeeded):
(WebKit::WebIDBConnectionToServer::didFireVersionChangeEvent):
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: Added.

* WebProcess/Databases/WebDatabaseProvider.cpp:
(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
* WebProcess/Databases/WebDatabaseProvider.h:

* WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
(WebKit::WebToDatabaseProcessConnection::idbConnectionToServerForSession):
* WebProcess/Databases/WebToDatabaseProcessConnection.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbclientIDBConnectionToServerh">trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbserverIDBConnectionToClienth">trunk/Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbsharedIDBResourceIdentifierh">trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h</a></li>
<li><a href="#trunkSourceWebKit2CMakeListstxt">trunk/Source/WebKit2/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessDatabaseToWebProcessConnectioncpp">trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessDatabaseToWebProcessConnectionh">trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.h</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessDatabaseToWebProcessConnectionmessagesin">trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in</a></li>
<li><a href="#trunkSourceWebKit2PlatformLoggingh">trunk/Source/WebKit2/Platform/Logging.h</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessDatabasesWebDatabaseProvidercpp">trunk/Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessDatabasesWebDatabaseProviderh">trunk/Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessDatabasesWebToDatabaseProcessConnectioncpp">trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessDatabasesWebToDatabaseProcessConnectionh">trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBWebIDBConnectionToClientcpp">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBWebIDBConnectionToClienth">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessDatabasesIndexedDBWebIDBConnectionToServercpp">trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessDatabasesIndexedDBWebIDBConnectionToServerh">trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebCore/ChangeLog        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-02-16  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Modern IDB: WK2 IPC Scaffolding.
+        https://bugs.webkit.org/show_bug.cgi?id=154296
+
+        Reviewed by Alex Christensen.
+        
+        No change in behavior yet; Just laying the groundwork.
+
+        * Modules/indexeddb/client/IDBConnectionToServer.h:
+        * Modules/indexeddb/server/IDBConnectionToClient.h:
+        * Modules/indexeddb/shared/IDBResourceIdentifier.h:
+
</ins><span class="cx"> 2016-02-16  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Web IDL] Operations should be on the instance for global objects or if [Unforgeable]
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbclientIDBConnectionToServerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> 
</span><span class="cx"> class IDBConnectionToServer : public RefCounted&lt;IDBConnectionToServer&gt; {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;IDBConnectionToServer&gt; create(IDBConnectionToServerDelegate&amp;);
</del><ins>+    WEBCORE_EXPORT static Ref&lt;IDBConnectionToServer&gt; create(IDBConnectionToServerDelegate&amp;);
</ins><span class="cx"> 
</span><span class="cx">     uint64_t identifier() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbserverIDBConnectionToClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.h (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.h        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.h        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> 
</span><span class="cx"> class IDBConnectionToClient : public RefCounted&lt;IDBConnectionToClient&gt; {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;IDBConnectionToClient&gt; create(IDBConnectionToClientDelegate&amp;);
</del><ins>+    WEBCORE_EXPORT static Ref&lt;IDBConnectionToClient&gt; create(IDBConnectionToClientDelegate&amp;);
</ins><span class="cx">     
</span><span class="cx">     uint64_t identifier() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbsharedIDBResourceIdentifierh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     explicit IDBResourceIdentifier(const IDBServer::IDBConnectionToClient&amp;);
</span><span class="cx"> 
</span><span class="cx">     static IDBResourceIdentifier deletedValue();
</span><del>-    bool isHashTableDeletedValue() const;
</del><ins>+    WEBCORE_EXPORT bool isHashTableDeletedValue() const;
</ins><span class="cx"> 
</span><span class="cx">     static IDBResourceIdentifier emptyValue();
</span><span class="cx">     bool isEmpty() const
</span></span></pre></div>
<a id="trunkSourceWebKit2CMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/CMakeLists.txt (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/CMakeLists.txt        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/CMakeLists.txt        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -70,7 +70,10 @@
</span><span class="cx">     &quot;${WEBCORE_DIR}&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/Modules/battery&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/Modules/indexeddb&quot;
</span><ins>+    &quot;${WEBCORE_DIR}/Modules/indexeddb/client&quot;
</ins><span class="cx">     &quot;${WEBCORE_DIR}/Modules/indexeddb/legacy&quot;
</span><ins>+    &quot;${WEBCORE_DIR}/Modules/indexeddb/server&quot;
+    &quot;${WEBCORE_DIR}/Modules/indexeddb/shared&quot;
</ins><span class="cx">     &quot;${WEBCORE_DIR}/Modules/mediastream&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/Modules/networkinfo&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/Modules/notifications&quot;
</span><span class="lines">@@ -195,6 +198,7 @@
</span><span class="cx">     DatabaseProcess/IndexedDB/IDBSerialization.cpp
</span><span class="cx">     DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp
</span><span class="cx">     DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.cpp
</span><ins>+    DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp
</ins><span class="cx"> 
</span><span class="cx">     DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp
</span><span class="cx">     DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp
</span><span class="lines">@@ -508,6 +512,7 @@
</span><span class="cx">     WebProcess/Databases/WebDatabaseProvider.cpp
</span><span class="cx">     WebProcess/Databases/WebToDatabaseProcessConnection.cpp
</span><span class="cx"> 
</span><ins>+    WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp
</ins><span class="cx">     WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp
</span><span class="cx">     WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/ChangeLog        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -1,3 +1,87 @@
</span><ins>+2016-02-16  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Modern IDB: WK2 IPC Scaffolding.
+        https://bugs.webkit.org/show_bug.cgi?id=154296
+
+        Reviewed by Alex Christensen.
+        
+        No change in behavior yet; Just laying the groundwork.
+
+        * CMakeLists.txt:
+        * WebKit2.xcodeproj/project.pbxproj:
+
+        * DatabaseProcess/DatabaseToWebProcessConnection.cpp:
+        (WebKit::DatabaseToWebProcessConnection::establishIDBConnectionToServer):
+        (WebKit::DatabaseToWebProcessConnection::removeIDBConnectionToServer):
+        * DatabaseProcess/DatabaseToWebProcessConnection.h:
+        * DatabaseProcess/DatabaseToWebProcessConnection.messages.in:
+        
+        * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: Added.
+        (WebKit::WebIDBConnectionToClient::create):
+        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
+        (WebKit::WebIDBConnectionToClient::~WebIDBConnectionToClient):
+        (WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
+        (WebKit::WebIDBConnectionToClient::messageSenderConnection):
+        (WebKit::WebIDBConnectionToClient::connectionToClient):
+        (WebKit::WebIDBConnectionToClient::didDeleteDatabase):
+        (WebKit::WebIDBConnectionToClient::didOpenDatabase):
+        (WebKit::WebIDBConnectionToClient::didAbortTransaction):
+        (WebKit::WebIDBConnectionToClient::didCommitTransaction):
+        (WebKit::WebIDBConnectionToClient::didCreateObjectStore):
+        (WebKit::WebIDBConnectionToClient::didDeleteObjectStore):
+        (WebKit::WebIDBConnectionToClient::didClearObjectStore):
+        (WebKit::WebIDBConnectionToClient::didCreateIndex):
+        (WebKit::WebIDBConnectionToClient::didDeleteIndex):
+        (WebKit::WebIDBConnectionToClient::didPutOrAdd):
+        (WebKit::WebIDBConnectionToClient::didGetRecord):
+        (WebKit::WebIDBConnectionToClient::didGetCount):
+        (WebKit::WebIDBConnectionToClient::didDeleteRecord):
+        (WebKit::WebIDBConnectionToClient::didOpenCursor):
+        (WebKit::WebIDBConnectionToClient::didIterateCursor):
+        (WebKit::WebIDBConnectionToClient::fireVersionChangeEvent):
+        (WebKit::WebIDBConnectionToClient::didStartTransaction):
+        (WebKit::WebIDBConnectionToClient::notifyOpenDBRequestBlocked):
+        * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h: Added.
+        
+        * Platform/Logging.h:
+                
+        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: Added.
+        (WebKit::generateConnectionToServerIdentifier):
+        (WebKit::WebIDBConnectionToServer::create):
+        (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
+        (WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer):
+        (WebKit::WebIDBConnectionToServer::messageSenderConnection):
+        (WebKit::WebIDBConnectionToServer::coreConnectionToServer):
+        (WebKit::WebIDBConnectionToServer::deleteDatabase):
+        (WebKit::WebIDBConnectionToServer::openDatabase):
+        (WebKit::WebIDBConnectionToServer::abortTransaction):
+        (WebKit::WebIDBConnectionToServer::commitTransaction):
+        (WebKit::WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction):
+        (WebKit::WebIDBConnectionToServer::createObjectStore):
+        (WebKit::WebIDBConnectionToServer::deleteObjectStore):
+        (WebKit::WebIDBConnectionToServer::clearObjectStore):
+        (WebKit::WebIDBConnectionToServer::createIndex):
+        (WebKit::WebIDBConnectionToServer::deleteIndex):
+        (WebKit::WebIDBConnectionToServer::putOrAdd):
+        (WebKit::WebIDBConnectionToServer::getRecord):
+        (WebKit::WebIDBConnectionToServer::getCount):
+        (WebKit::WebIDBConnectionToServer::deleteRecord):
+        (WebKit::WebIDBConnectionToServer::openCursor):
+        (WebKit::WebIDBConnectionToServer::iterateCursor):
+        (WebKit::WebIDBConnectionToServer::establishTransaction):
+        (WebKit::WebIDBConnectionToServer::databaseConnectionClosed):
+        (WebKit::WebIDBConnectionToServer::abortOpenAndUpgradeNeeded):
+        (WebKit::WebIDBConnectionToServer::didFireVersionChangeEvent):
+        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: Added.
+
+        * WebProcess/Databases/WebDatabaseProvider.cpp:
+        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
+        * WebProcess/Databases/WebDatabaseProvider.h:
+
+        * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
+        (WebKit::WebToDatabaseProcessConnection::idbConnectionToServerForSession):
+        * WebProcess/Databases/WebToDatabaseProcessConnection.h:
+
</ins><span class="cx"> 2016-02-16  Sam Weinig  &lt;sam@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Revert r195826.
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessDatabaseToWebProcessConnectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -29,6 +29,8 @@
</span><span class="cx"> #include &quot;DatabaseProcessIDBConnection.h&quot;
</span><span class="cx"> #include &quot;DatabaseProcessIDBConnectionMessages.h&quot;
</span><span class="cx"> #include &quot;DatabaseToWebProcessConnectionMessages.h&quot;
</span><ins>+#include &quot;Logging.h&quot;
+#include &quot;WebIDBConnectionToClient.h&quot;
</ins><span class="cx"> #include &lt;wtf/RunLoop.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(DATABASE_PROCESS)
</span><span class="lines">@@ -113,6 +115,22 @@
</span><span class="cx">     RefPtr&lt;DatabaseProcessIDBConnection&gt; idbConnection = m_idbConnections.take(serverConnectionIdentifier);
</span><span class="cx">     idbConnection-&gt;disconnectedFromWebProcess();
</span><span class="cx"> }
</span><ins>+
+void DatabaseToWebProcessConnection::establishIDBConnectionToServer(uint64_t serverConnectionIdentifier)
+{
+    LOG(IndexedDB, &quot;DatabaseToWebProcessConnection::establishIDBConnectionToServer - %&quot; PRIu64, serverConnectionIdentifier);
+    ASSERT(!m_webIDBConnections.contains(serverConnectionIdentifier));
+
+    m_webIDBConnections.set(serverConnectionIdentifier, WebIDBConnectionToClient::create(*this, serverConnectionIdentifier));
+}
+
+void DatabaseToWebProcessConnection::removeIDBConnectionToServer(uint64_t serverConnectionIdentifier)
+{
+    ASSERT(m_webIDBConnections.contains(serverConnectionIdentifier));
+
+    auto connection = m_webIDBConnections.take(serverConnectionIdentifier);
+    connection-&gt;disconnectedFromWebProcess();
+}
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessDatabaseToWebProcessConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.h (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.h        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.h        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -36,6 +36,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><ins>+class WebIDBConnectionToClient;
+
</ins><span class="cx"> class DatabaseToWebProcessConnection : public RefCounted&lt;DatabaseToWebProcessConnection&gt;, public IPC::Connection::Client, public IPC::MessageSender {
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;DatabaseToWebProcessConnection&gt; create(IPC::Connection::Identifier);
</span><span class="lines">@@ -60,12 +62,18 @@
</span><span class="cx">     virtual uint64_t messageSenderDestinationID() override { return 0; }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><del>-    // Messages handlers
</del><ins>+    // Messages handlers (Legacy IDB)
</ins><span class="cx">     void establishIDBConnection(uint64_t serverConnectionIdentifier);
</span><span class="cx">     void removeDatabaseProcessIDBConnection(uint64_t serverConnectionIdentifier);
</span><span class="cx"> 
</span><span class="cx">     typedef HashMap&lt;uint64_t, RefPtr&lt;DatabaseProcessIDBConnection&gt;&gt; IDBConnectionMap;
</span><span class="cx">     IDBConnectionMap m_idbConnections;
</span><ins>+
+    // Messages handlers (Modern IDB)
+    void establishIDBConnectionToServer(uint64_t serverConnectionIdentifier);
+    void removeIDBConnectionToServer(uint64_t serverConnectionIdentifier);
+
+    HashMap&lt;uint64_t, RefPtr&lt;WebIDBConnectionToClient&gt;&gt; m_webIDBConnections;
</ins><span class="cx"> #endif // ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;IPC::Connection&gt; m_connection;
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessDatabaseToWebProcessConnectionmessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -24,9 +24,13 @@
</span><span class="cx"> 
</span><span class="cx"> messages -&gt; DatabaseToWebProcessConnection LegacyReceiver {
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><del>-    # Creates a connection for communication with a WebProcess
</del><ins>+    # Creates a connection for communication with a WebProcess (Legacy IDB)
</ins><span class="cx">     EstablishIDBConnection(uint64_t serverConnectionIdentifier)
</span><span class="cx">     RemoveDatabaseProcessIDBConnection(uint64_t serverConnectionIdentifier)
</span><ins>+
+    # Creates a connection for communication with a WebProcess (Modern IDB)
+    EstablishIDBConnectionToServer(uint64_t serverConnectionIdentifier)
+    RemoveIDBConnectionToServer(uint64_t serverConnectionIdentifier)
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBWebIDBConnectionToClientcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp (0 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp                                (rev 0)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -0,0 +1,139 @@
</span><ins>+/*
+ * Copyright (C) 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.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WebIDBConnectionToClient.h&quot;
+
+#if ENABLE(INDEXED_DATABASE)
+
+using namespace WebCore;
+
+namespace WebKit {
+
+Ref&lt;WebIDBConnectionToClient&gt; WebIDBConnectionToClient::create(DatabaseToWebProcessConnection&amp; connection, uint64_t serverConnectionIdentifier)
+{
+    return adoptRef(*new WebIDBConnectionToClient(connection, serverConnectionIdentifier));
+}
+
+WebIDBConnectionToClient::WebIDBConnectionToClient(DatabaseToWebProcessConnection&amp; connection, uint64_t serverConnectionIdentifier)
+    : m_connection(connection)
+{
+    relaxAdoptionRequirement();
+    m_connectionToClient = IDBServer::IDBConnectionToClient::create(*this);
+}
+
+WebIDBConnectionToClient::~WebIDBConnectionToClient()
+{
+}
+
+void WebIDBConnectionToClient::disconnectedFromWebProcess()
+{
+}
+
+IPC::Connection* WebIDBConnectionToClient::messageSenderConnection()
+{
+    return m_connection-&gt;connection();
+}
+
+WebCore::IDBServer::IDBConnectionToClient&amp; WebIDBConnectionToClient::connectionToClient()
+{
+    return *m_connectionToClient;
+}
+
+void WebIDBConnectionToClient::didDeleteDatabase(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didOpenDatabase(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didAbortTransaction(const WebCore::IDBResourceIdentifier&amp; transactionIdentifier, const WebCore::IDBError&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didCommitTransaction(const WebCore::IDBResourceIdentifier&amp; transactionIdentifier, const WebCore::IDBError&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didCreateObjectStore(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didDeleteObjectStore(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didClearObjectStore(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didCreateIndex(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didDeleteIndex(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didPutOrAdd(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didGetRecord(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didGetCount(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didDeleteRecord(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didOpenCursor(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::didIterateCursor(const WebCore::IDBResultData&amp;)
+{
+}
+
+void WebIDBConnectionToClient::fireVersionChangeEvent(WebCore::IDBServer::UniqueIDBDatabaseConnection&amp;, const WebCore::IDBResourceIdentifier&amp; requestIdentifier, uint64_t requestedVersion)
+{
+}
+
+void WebIDBConnectionToClient::didStartTransaction(const WebCore::IDBResourceIdentifier&amp; transactionIdentifier, const WebCore::IDBError&amp;)
+{
+}
+
+void WebIDBConnectionToClient::notifyOpenDBRequestBlocked(const WebCore::IDBResourceIdentifier&amp; requestIdentifier, uint64_t oldVersion, uint64_t newVersion)
+{
+}
+
+} // namespace WebKit
+
+#endif // ENABLE(INDEXED_DATABASE)
</ins></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBWebIDBConnectionToClienth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h (0 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h                                (rev 0)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+/*
+ * Copyright (C) 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.
+ */
+
+#ifndef WebIDBConnectionToClient_h
+#define WebIDBConnectionToClient_h
+
+#if ENABLE(INDEXED_DATABASE)
+
+#include &quot;DatabaseToWebProcessConnection.h&quot;
+#include &quot;MessageSender.h&quot;
+#include &lt;WebCore/IDBConnectionToClient.h&gt;
+
+namespace WebKit {
+
+class WebIDBConnectionToClient final : public WebCore::IDBServer::IDBConnectionToClientDelegate, public IPC::MessageSender, public RefCounted&lt;WebIDBConnectionToClient&gt; {
+public:
+    static Ref&lt;WebIDBConnectionToClient&gt; create(DatabaseToWebProcessConnection&amp;, uint64_t serverConnectionIdentifier);
+
+    virtual ~WebIDBConnectionToClient();
+
+    WebCore::IDBServer::IDBConnectionToClient&amp; connectionToClient();
+    virtual uint64_t identifier() const override final { return m_identifier; }
+    virtual uint64_t messageSenderDestinationID() override final { return m_identifier; }
+
+    virtual void didDeleteDatabase(const WebCore::IDBResultData&amp;) override final;
+    virtual void didOpenDatabase(const WebCore::IDBResultData&amp;) override final;
+    virtual void didAbortTransaction(const WebCore::IDBResourceIdentifier&amp; transactionIdentifier, const WebCore::IDBError&amp;) override final;
+    virtual void didCommitTransaction(const WebCore::IDBResourceIdentifier&amp; transactionIdentifier, const WebCore::IDBError&amp;) override final;
+    virtual void didCreateObjectStore(const WebCore::IDBResultData&amp;) override final;
+    virtual void didDeleteObjectStore(const WebCore::IDBResultData&amp;) override final;
+    virtual void didClearObjectStore(const WebCore::IDBResultData&amp;) override final;
+    virtual void didCreateIndex(const WebCore::IDBResultData&amp;) override final;
+    virtual void didDeleteIndex(const WebCore::IDBResultData&amp;) override final;
+    virtual void didPutOrAdd(const WebCore::IDBResultData&amp;) override final;
+    virtual void didGetRecord(const WebCore::IDBResultData&amp;) override final;
+    virtual void didGetCount(const WebCore::IDBResultData&amp;) override final;
+    virtual void didDeleteRecord(const WebCore::IDBResultData&amp;) override final;
+    virtual void didOpenCursor(const WebCore::IDBResultData&amp;) override final;
+    virtual void didIterateCursor(const WebCore::IDBResultData&amp;) override final;
+
+    virtual void fireVersionChangeEvent(WebCore::IDBServer::UniqueIDBDatabaseConnection&amp;, const WebCore::IDBResourceIdentifier&amp; requestIdentifier, uint64_t requestedVersion) override final;
+    virtual void didStartTransaction(const WebCore::IDBResourceIdentifier&amp; transactionIdentifier, const WebCore::IDBError&amp;) override final;
+    virtual void notifyOpenDBRequestBlocked(const WebCore::IDBResourceIdentifier&amp; requestIdentifier, uint64_t oldVersion, uint64_t newVersion) override final;
+
+    virtual void ref() override { RefCounted&lt;WebIDBConnectionToClient&gt;::ref(); }
+    virtual void deref() override { RefCounted&lt;WebIDBConnectionToClient&gt;::deref(); }
+
+    void disconnectedFromWebProcess();
+
+private:
+    WebIDBConnectionToClient(DatabaseToWebProcessConnection&amp;, uint64_t serverConnectionIdentifier);
+
+    virtual IPC::Connection* messageSenderConnection() override final;
+    Ref&lt;DatabaseToWebProcessConnection&gt; m_connection;
+
+    uint64_t m_identifier;
+    RefPtr&lt;WebCore::IDBServer::IDBConnectionToClient&gt; m_connectionToClient;
+};
+
+} // namespace WebKit
+
+#endif // ENABLE(INDEXED_DATABASE)
+#endif // WebIDBConnectionToClient_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2PlatformLoggingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Platform/Logging.h (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Platform/Logging.h        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/Platform/Logging.h        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -41,6 +41,7 @@
</span><span class="cx">     M(ContextMenu) \
</span><span class="cx">     M(IDB) \
</span><span class="cx">     M(IconDatabase) \
</span><ins>+    M(IndexedDB) \
</ins><span class="cx">     M(InspectorServer) \
</span><span class="cx">     M(KeyHandling) \
</span><span class="cx">     M(Network) \
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -854,6 +854,8 @@
</span><span class="cx">                 51032F19180F73BB00961BB7 /* WebToDatabaseProcessConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 51032F17180F73BB00961BB7 /* WebToDatabaseProcessConnection.h */; };
</span><span class="cx">                 51032F1D180F791700961BB7 /* DatabaseToWebProcessConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51032F1B180F791700961BB7 /* DatabaseToWebProcessConnectionMessageReceiver.cpp */; };
</span><span class="cx">                 51032F1E180F791700961BB7 /* DatabaseToWebProcessConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51032F1C180F791700961BB7 /* DatabaseToWebProcessConnectionMessages.h */; };
</span><ins>+                5105236F1C739D42007993CB /* WebIDBConnectionToClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5105236D1C7393E9007993CB /* WebIDBConnectionToClient.cpp */; };
+                510523701C739D42007993CB /* WebIDBConnectionToClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 5105236E1C7393E9007993CB /* WebIDBConnectionToClient.h */; };
</ins><span class="cx">                 51064D35189781C4004B2FEB /* SQLiteIDBCursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51064D33189781C4004B2FEB /* SQLiteIDBCursor.cpp */; };
</span><span class="cx">                 51064D36189781C4004B2FEB /* SQLiteIDBCursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 51064D34189781C4004B2FEB /* SQLiteIDBCursor.h */; };
</span><span class="cx">                 5106D7C218BDBE73000AB166 /* ContextMenuContextData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5106D7BF18BDBE73000AB166 /* ContextMenuContextData.cpp */; };
</span><span class="lines">@@ -914,6 +916,8 @@
</span><span class="cx">                 513A164D1630A9BF005D7D22 /* NetworkConnectionToWebProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 513A164A1630A9BF005D7D22 /* NetworkConnectionToWebProcess.h */; };
</span><span class="cx">                 513E462D1AD837560016234A /* WKSharingServicePickerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 513E462B1AD837560016234A /* WKSharingServicePickerDelegate.h */; };
</span><span class="cx">                 513E462E1AD837560016234A /* WKSharingServicePickerDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 513E462C1AD837560016234A /* WKSharingServicePickerDelegate.mm */; };
</span><ins>+                514129941C6428BB0059E714 /* WebIDBConnectionToServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 514129921C6428100059E714 /* WebIDBConnectionToServer.h */; };
+                514129951C6428C20059E714 /* WebIDBConnectionToServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514129911C6428100059E714 /* WebIDBConnectionToServer.cpp */; };
</ins><span class="cx">                 514BDED316C98EDD00E4E25E /* StatisticsRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 514BDED216C98EDD00E4E25E /* StatisticsRequest.h */; };
</span><span class="cx">                 514D9F5719119D35000063A7 /* ServicesController.h in Headers */ = {isa = PBXBuildFile; fileRef = 514D9F5519119D35000063A7 /* ServicesController.h */; };
</span><span class="cx">                 514D9F5819119D35000063A7 /* ServicesController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514D9F5619119D35000063A7 /* ServicesController.mm */; };
</span><span class="lines">@@ -2852,6 +2856,8 @@
</span><span class="cx">                 51032F1A180F74F100961BB7 /* DatabaseToWebProcessConnection.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = DatabaseToWebProcessConnection.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51032F1B180F791700961BB7 /* DatabaseToWebProcessConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatabaseToWebProcessConnectionMessageReceiver.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51032F1C180F791700961BB7 /* DatabaseToWebProcessConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseToWebProcessConnectionMessages.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                5105236D1C7393E9007993CB /* WebIDBConnectionToClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebIDBConnectionToClient.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                5105236E1C7393E9007993CB /* WebIDBConnectionToClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIDBConnectionToClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 5105B0D4162F7A7A00E27709 /* NetworkProcessConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkProcessConnection.cpp; path = Network/NetworkProcessConnection.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5105B0D5162F7A7A00E27709 /* NetworkProcessConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkProcessConnection.h; path = Network/NetworkProcessConnection.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5105B0F31630872E00E27709 /* NetworkProcessProxy.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = NetworkProcessProxy.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2920,6 +2926,8 @@
</span><span class="cx">                 513A164B1630A9BF005D7D22 /* NetworkConnectionToWebProcess.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NetworkConnectionToWebProcess.messages.in; path = NetworkProcess/NetworkConnectionToWebProcess.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 513E462B1AD837560016234A /* WKSharingServicePickerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSharingServicePickerDelegate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 513E462C1AD837560016234A /* WKSharingServicePickerDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKSharingServicePickerDelegate.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                514129911C6428100059E714 /* WebIDBConnectionToServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebIDBConnectionToServer.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                514129921C6428100059E714 /* WebIDBConnectionToServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIDBConnectionToServer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 514BDED216C98EDD00E4E25E /* StatisticsRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatisticsRequest.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 514D9F5519119D35000063A7 /* ServicesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServicesController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 514D9F5619119D35000063A7 /* ServicesController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ServicesController.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -5300,6 +5308,8 @@
</span><span class="cx">                 511F8EDA180881660047DA96 /* IndexedDB */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                514129911C6428100059E714 /* WebIDBConnectionToServer.cpp */,
+                                514129921C6428100059E714 /* WebIDBConnectionToServer.h */,
</ins><span class="cx">                                 51E351F1180F5C7500E53BE9 /* WebIDBFactoryBackend.cpp */,
</span><span class="cx">                                 51E351F2180F5C7500E53BE9 /* WebIDBFactoryBackend.h */,
</span><span class="cx">                                 51290990183ACEAF005522A6 /* WebIDBServerConnection.cpp */,
</span><span class="lines">@@ -5450,6 +5460,8 @@
</span><span class="cx">                                 51654EFF184EF34A007DC837 /* UniqueIDBDatabaseBackingStore.h */,
</span><span class="cx">                                 515E773118402D510007203F /* UniqueIDBDatabaseIdentifier.cpp */,
</span><span class="cx">                                 515E773218402D510007203F /* UniqueIDBDatabaseIdentifier.h */,
</span><ins>+                                5105236D1C7393E9007993CB /* WebIDBConnectionToClient.cpp */,
+                                5105236E1C7393E9007993CB /* WebIDBConnectionToClient.h */,
</ins><span class="cx">                         );
</span><span class="cx">                         path = IndexedDB;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -7766,6 +7778,7 @@
</span><span class="cx">                                 1A52C0F81A38CDC70016160A /* WebStorageNamespaceProvider.h in Headers */,
</span><span class="cx">                                 BCC5715B115ADAEF001CCAF9 /* WebSystemInterface.h in Headers */,
</span><span class="cx">                                 51032F19180F73BB00961BB7 /* WebToDatabaseProcessConnection.h in Headers */,
</span><ins>+                                514129941C6428BB0059E714 /* WebIDBConnectionToServer.h in Headers */,
</ins><span class="cx">                                 BCA0EF7F12331E78007D3CFB /* WebUndoStep.h in Headers */,
</span><span class="cx">                                 1AAF08AE1926936700B6390C /* WebUserContentController.h in Headers */,
</span><span class="cx">                                 1AAF08B819269E6D00B6390C /* WebUserContentControllerMessages.h in Headers */,
</span><span class="lines">@@ -7789,6 +7802,7 @@
</span><span class="cx">                                 512F58F812A88A5400629530 /* WKAuthenticationDecisionListener.h in Headers */,
</span><span class="cx">                                 37C4C08D1814AC5C003688B9 /* WKBackForwardList.h in Headers */,
</span><span class="cx">                                 37C4C0951814B9E6003688B9 /* WKBackForwardListInternal.h in Headers */,
</span><ins>+                                510523701C739D42007993CB /* WebIDBConnectionToClient.h in Headers */,
</ins><span class="cx">                                 37C4C08718149C5B003688B9 /* WKBackForwardListItem.h in Headers */,
</span><span class="cx">                                 37C4C08918149F23003688B9 /* WKBackForwardListItemInternal.h in Headers */,
</span><span class="cx">                                 BC646C1D11DD399F006455B0 /* WKBackForwardListItemRef.h in Headers */,
</span><span class="lines">@@ -8796,6 +8810,7 @@
</span><span class="cx">                                 1AB7D4CB1288AAA700CFD08C /* DownloadProxy.cpp in Sources */,
</span><span class="cx">                                 1AD25E95167AB08100EA9BCD /* DownloadProxyMap.cpp in Sources */,
</span><span class="cx">                                 1AB7D6191288B9D900CFD08C /* DownloadProxyMessageReceiver.cpp in Sources */,
</span><ins>+                                5105236F1C739D42007993CB /* WebIDBConnectionToClient.cpp in Sources */,
</ins><span class="cx">                                 BC8452A71162C80900CAB9B5 /* DrawingArea.cpp in Sources */,
</span><span class="cx">                                 1A64229912DD029200CAAE2C /* DrawingAreaMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 BC2652161182608100243E12 /* DrawingAreaProxy.cpp in Sources */,
</span><span class="lines">@@ -9422,6 +9437,7 @@
</span><span class="cx">                                 BCD597D1112B56AC00EC8C23 /* WKPreferences.cpp in Sources */,
</span><span class="cx">                                 1AFDD3191891CA1200153970 /* WKPreferences.mm in Sources */,
</span><span class="cx">                                 0FCB4E6718BBE3D9000FCFC9 /* WKPrintingView.mm in Sources */,
</span><ins>+                                514129951C6428C20059E714 /* WebIDBConnectionToServer.cpp in Sources */,
</ins><span class="cx">                                 BCBAACEC145225E30053F82F /* WKProcessGroup.mm in Sources */,
</span><span class="cx">                                 1A158419189044F50017616C /* WKProcessPool.mm in Sources */,
</span><span class="cx">                                 512F58FB12A88A5400629530 /* WKProtectionSpace.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessDatabasesIndexedDBWebIDBConnectionToServercpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp (0 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp                                (rev 0)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -0,0 +1,162 @@
</span><ins>+/*
+ * Copyright (C) 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.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WebIDBConnectionToServer.h&quot;
+
+#if ENABLE(INDEXED_DATABASE)
+
+#include &quot;DatabaseToWebProcessConnectionMessages.h&quot;
+#include &quot;WebProcess.h&quot;
+#include &quot;WebToDatabaseProcessConnection.h&quot;
+#include &lt;WebCore/IDBConnectionToServer.h&gt;
+#include &lt;WebCore/IDBOpenDBRequestImpl.h&gt;
+
+using namespace WebCore;
+
+namespace WebKit {
+
+static uint64_t generateConnectionToServerIdentifier()
+{
+    ASSERT(RunLoop::isMain());
+    static uint64_t identifier = 0;
+    return ++identifier;
+}
+
+Ref&lt;WebIDBConnectionToServer&gt; WebIDBConnectionToServer::create()
+{
+    return adoptRef(*new WebIDBConnectionToServer);
+}
+
+WebIDBConnectionToServer::WebIDBConnectionToServer()
+    : m_identifier(generateConnectionToServerIdentifier())
+{
+    relaxAdoptionRequirement();
+    m_connectionToServer = IDBClient::IDBConnectionToServer::create(*this);
+
+    send(Messages::DatabaseToWebProcessConnection::EstablishIDBConnectionToServer(m_identifier));
+
+    m_isOpenInServer = true;
+}
+
+WebIDBConnectionToServer::~WebIDBConnectionToServer()
+{
+    if (m_isOpenInServer)
+        send(Messages::DatabaseToWebProcessConnection::RemoveIDBConnectionToServer(m_identifier));
+}
+
+IPC::Connection* WebIDBConnectionToServer::messageSenderConnection()
+{
+    return WebProcess::singleton().webToDatabaseProcessConnection()-&gt;connection();
+}
+
+IDBClient::IDBConnectionToServer&amp; WebIDBConnectionToServer::coreConnectionToServer()
+{
+    return *m_connectionToServer;
+}
+
+void WebIDBConnectionToServer::deleteDatabase(IDBRequestData&amp;)
+{
+}
+
+void WebIDBConnectionToServer::openDatabase(IDBRequestData&amp;)
+{
+}
+
+void WebIDBConnectionToServer::abortTransaction(IDBResourceIdentifier&amp;)
+{
+}
+
+void WebIDBConnectionToServer::commitTransaction(IDBResourceIdentifier&amp;)
+{
+}
+
+void WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction(IDBResourceIdentifier&amp;)
+{
+}
+
+void WebIDBConnectionToServer::createObjectStore(const IDBRequestData&amp;, const IDBObjectStoreInfo&amp;)
+{
+}
+
+void WebIDBConnectionToServer::deleteObjectStore(const IDBRequestData&amp;, const String&amp; objectStoreName)
+{
+}
+
+void WebIDBConnectionToServer::clearObjectStore(const IDBRequestData&amp;, uint64_t objectStoreIdentifier)
+{
+}
+
+void WebIDBConnectionToServer::createIndex(const IDBRequestData&amp;, const IDBIndexInfo&amp;)
+{
+}
+
+void WebIDBConnectionToServer::deleteIndex(const IDBRequestData&amp;, uint64_t objectStoreIdentifier, const String&amp; indexName)
+{
+}
+
+void WebIDBConnectionToServer::putOrAdd(const IDBRequestData&amp;, IDBKey*, SerializedScriptValue&amp;, const IndexedDB::ObjectStoreOverwriteMode)
+{
+}
+
+void WebIDBConnectionToServer::getRecord(const IDBRequestData&amp;, const IDBKeyRangeData&amp;)
+{
+}
+
+void WebIDBConnectionToServer::getCount(const IDBRequestData&amp;, const IDBKeyRangeData&amp;)
+{
+}
+
+void WebIDBConnectionToServer::deleteRecord(const IDBRequestData&amp;, const IDBKeyRangeData&amp;)
+{
+}
+
+void WebIDBConnectionToServer::openCursor(const IDBRequestData&amp;, const IDBCursorInfo&amp;)
+{
+}
+
+void WebIDBConnectionToServer::iterateCursor(const IDBRequestData&amp;, const IDBKeyData&amp;, unsigned long count)
+{
+}
+
+void WebIDBConnectionToServer::establishTransaction(uint64_t databaseConnectionIdentifier, const IDBTransactionInfo&amp;)
+{
+}
+
+void WebIDBConnectionToServer::databaseConnectionClosed(uint64_t databaseConnectionIdentifier)
+{
+}
+
+void WebIDBConnectionToServer::abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier&amp; transactionIdentifier)
+{
+}
+
+void WebIDBConnectionToServer::didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier&amp; requestIdentifier)
+{
+}
+
+} // namespace WebKit
+
+#endif // ENABLE(INDEXED_DATABASE)
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessDatabasesIndexedDBWebIDBConnectionToServerh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h (0 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h                                (rev 0)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+/*
+ * Copyright (C) 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.
+ */
+
+#ifndef WebIDBConnectionToServer_h
+#define WebIDBConnectionToServer_h
+
+#if ENABLE(INDEXED_DATABASE)
+
+#include &quot;MessageSender.h&quot;
+#include &lt;WebCore/IDBConnectionToServer.h&gt;
+
+namespace WebKit {
+
+class WebIDBConnectionToServer final : public WebCore::IDBClient::IDBConnectionToServerDelegate, public IPC::MessageSender, public RefCounted&lt;WebIDBConnectionToServer&gt; {
+public:
+    static Ref&lt;WebIDBConnectionToServer&gt; create();
+
+    virtual ~WebIDBConnectionToServer();
+
+    WebCore::IDBClient::IDBConnectionToServer&amp; coreConnectionToServer();
+    virtual uint64_t identifier() const override final { return m_identifier; }
+    virtual uint64_t messageSenderDestinationID() override final { return m_identifier; }
+
+    virtual void deleteDatabase(WebCore::IDBRequestData&amp;) override final;
+    virtual void openDatabase(WebCore::IDBRequestData&amp;) override final;
+    virtual void abortTransaction(WebCore::IDBResourceIdentifier&amp;) override final;
+    virtual void commitTransaction(WebCore::IDBResourceIdentifier&amp;) override final;
+    virtual void didFinishHandlingVersionChangeTransaction(WebCore::IDBResourceIdentifier&amp;) override final;
+    virtual void createObjectStore(const WebCore::IDBRequestData&amp;, const WebCore::IDBObjectStoreInfo&amp;) override final;
+    virtual void deleteObjectStore(const WebCore::IDBRequestData&amp;, const String&amp; objectStoreName) override final;
+    virtual void clearObjectStore(const WebCore::IDBRequestData&amp;, uint64_t objectStoreIdentifier) override final;
+    virtual void createIndex(const WebCore::IDBRequestData&amp;, const WebCore::IDBIndexInfo&amp;) override final;
+    virtual void deleteIndex(const WebCore::IDBRequestData&amp;, uint64_t objectStoreIdentifier, const String&amp; indexName) override final;
+    virtual void putOrAdd(const WebCore::IDBRequestData&amp;, WebCore::IDBKey*, WebCore::SerializedScriptValue&amp;, const WebCore::IndexedDB::ObjectStoreOverwriteMode) override final;
+    virtual void getRecord(const WebCore::IDBRequestData&amp;, const WebCore::IDBKeyRangeData&amp;) override final;
+    virtual void getCount(const WebCore::IDBRequestData&amp;, const WebCore::IDBKeyRangeData&amp;) override final;
+    virtual void deleteRecord(const WebCore::IDBRequestData&amp;, const WebCore::IDBKeyRangeData&amp;) override final;
+    virtual void openCursor(const WebCore::IDBRequestData&amp;, const WebCore::IDBCursorInfo&amp;) override final;
+    virtual void iterateCursor(const WebCore::IDBRequestData&amp;, const WebCore::IDBKeyData&amp;, unsigned long count) override final;
+    virtual void establishTransaction(uint64_t databaseConnectionIdentifier, const WebCore::IDBTransactionInfo&amp;) override final;
+    virtual void databaseConnectionClosed(uint64_t databaseConnectionIdentifier) override final;
+    virtual void abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const WebCore::IDBResourceIdentifier&amp; transactionIdentifier) override final;
+    virtual void didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const WebCore::IDBResourceIdentifier&amp; requestIdentifier) override final;
+
+    virtual void ref() override { RefCounted&lt;WebIDBConnectionToServer&gt;::ref(); }
+    virtual void deref() override { RefCounted&lt;WebIDBConnectionToServer&gt;::deref(); }
+
+private:
+    WebIDBConnectionToServer();
+
+    virtual IPC::Connection* messageSenderConnection() override final;
+
+    uint64_t m_identifier;
+    bool m_isOpenInServer { false };
+    RefPtr&lt;WebCore::IDBClient::IDBConnectionToServer&gt; m_connectionToServer;
+};
+
+} // namespace WebKit
+
+#endif // ENABLE(INDEXED_DATABASE)
+#endif // WebIDBConnectionToServer_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessDatabasesWebDatabaseProvidercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.cpp (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.cpp        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.cpp        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -27,6 +27,9 @@
</span><span class="cx"> #include &quot;WebDatabaseProvider.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;WebIDBFactoryBackend.h&quot;
</span><ins>+#include &quot;WebProcess.h&quot;
+#include &quot;WebToDatabaseProcessConnection.h&quot;
+#include &lt;WebCore/SessionID.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -66,6 +69,21 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><ins>+
+WebCore::IDBClient::IDBConnectionToServer&amp; WebDatabaseProvider::idbConnectionToServerForSession(const WebCore::SessionID&amp; sessionID)
+{
+    if (sessionID.isEphemeral()) {
+        auto result = m_idbEphemeralConnectionMap.add(sessionID.sessionID(), nullptr);
+        if (result.isNewEntry)
+            result.iterator-&gt;value = WebCore::InProcessIDBServer::create();
+
+        return result.iterator-&gt;value-&gt;connectionToServer();
+    }
+
+    ASSERT(WebProcess::singleton().webToDatabaseProcessConnection());
+    return WebProcess::singleton().webToDatabaseProcessConnection()-&gt;idbConnectionToServerForSession(sessionID).coreConnectionToServer();
+}
+
</ins><span class="cx"> RefPtr&lt;WebCore::IDBFactoryBackendInterface&gt; WebDatabaseProvider::createIDBFactoryBackend()
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(DATABASE_PROCESS)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessDatabasesWebDatabaseProviderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.h (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.h        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.h        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -27,6 +27,8 @@
</span><span class="cx"> #define WebDatabaseProvider_h
</span><span class="cx"> 
</span><span class="cx"> #include &lt;WebCore/DatabaseProvider.h&gt;
</span><ins>+#include &lt;WebCore/InProcessIDBServer.h&gt;
+#include &lt;wtf/HashMap.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="lines">@@ -37,11 +39,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     virtual bool supportsModernIDB() const override { return false; }
</span><del>-
-    virtual WebCore::IDBClient::IDBConnectionToServer&amp; idbConnectionToServerForSession(const WebCore::SessionID&amp;) override
-    {
-        RELEASE_ASSERT_NOT_REACHED();
-    }
</del><ins>+    virtual WebCore::IDBClient::IDBConnectionToServer&amp; idbConnectionToServerForSession(const WebCore::SessionID&amp;) override final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -49,6 +47,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     virtual RefPtr&lt;WebCore::IDBFactoryBackendInterface&gt; createIDBFactoryBackend() override;
</span><ins>+    HashMap&lt;uint64_t, RefPtr&lt;WebCore::InProcessIDBServer&gt;&gt; m_idbEphemeralConnectionMap;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     const uint64_t m_identifier;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessDatabasesWebToDatabaseProcessConnectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.cpp (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.cpp        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.cpp        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -88,6 +88,15 @@
</span><span class="cx"> 
</span><span class="cx">     m_webIDBServerConnections.remove(connection.messageSenderDestinationID());
</span><span class="cx"> }
</span><ins>+
+WebIDBConnectionToServer&amp; WebToDatabaseProcessConnection::idbConnectionToServerForSession(const SessionID&amp; sessionID)
+{
+    auto result = m_webIDBConnections.add(sessionID.sessionID(), nullptr);
+    if (result.isNewEntry)
+        result.iterator-&gt;value = WebIDBConnectionToServer::create();
+
+    return *result.iterator-&gt;value;
+}
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessDatabasesWebToDatabaseProcessConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.h (196650 => 196651)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.h        2016-02-16 20:50:46 UTC (rev 196650)
+++ trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.h        2016-02-16 20:58:56 UTC (rev 196651)
</span><span class="lines">@@ -29,10 +29,15 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Connection.h&quot;
</span><span class="cx"> #include &quot;MessageSender.h&quot;
</span><ins>+#include &quot;WebIDBConnectionToServer.h&quot;
</ins><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(DATABASE_PROCESS)
</span><span class="cx"> 
</span><ins>+namespace WebCore {
+class SessionID;
+}
+
</ins><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> class WebIDBServerConnection;
</span><span class="lines">@@ -51,6 +56,8 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     void registerWebIDBServerConnection(WebIDBServerConnection&amp;);
</span><span class="cx">     void removeWebIDBServerConnection(WebIDBServerConnection&amp;);
</span><ins>+
+    WebIDBConnectionToServer&amp; idbConnectionToServerForSession(const WebCore::SessionID&amp;);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -71,6 +78,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     HashMap&lt;uint64_t, WebIDBServerConnection*&gt; m_webIDBServerConnections;
</span><ins>+
+    HashMap&lt;uint64_t, RefPtr&lt;WebIDBConnectionToServer&gt;&gt; m_webIDBConnections;
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>