<!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>[164314] trunk/Source/WebCore</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/164314">164314</a></dd>
<dt>Author</dt> <dd>zandobersek@gmail.com</dd>
<dt>Date</dt> <dd>2014-02-18 14:08:45 -0800 (Tue, 18 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move IndexedDB module, LevelDB code to std::unique_ptr
https://bugs.webkit.org/show_bug.cgi?id=128964

Reviewed by Andreas Kling.

Replace uses of OwnPtr and PassOwnPtr in the IndexedDB module and LevelDB platform code with std::unique_ptr.

* Modules/indexeddb/IDBCursorBackend.h:
* Modules/indexeddb/IDBDatabaseBackend.cpp:
(WebCore::IDBDatabaseBackend::IDBDatabaseBackend):
(WebCore::IDBDatabaseBackend::transactionFinishedAndAbortFired):
(WebCore::IDBDatabaseBackend::processPendingCalls):
(WebCore::IDBDatabaseBackend::processPendingOpenCalls):
(WebCore::IDBDatabaseBackend::openConnection):
(WebCore::IDBDatabaseBackend::runIntVersionChangeTransaction):
(WebCore::IDBDatabaseBackend::deleteDatabase):
(WebCore::IDBDatabaseBackend::close):
* Modules/indexeddb/IDBDatabaseBackend.h:
(WebCore::IDBDatabaseBackend::hasPendingSecondHalfOpen):
(WebCore::IDBDatabaseBackend::setPendingSecondHalfOpen):
* Modules/indexeddb/IDBPendingDeleteCall.h:
(WebCore::IDBPendingDeleteCall::IDBPendingDeleteCall):
* Modules/indexeddb/IDBPendingOpenCall.h:
(WebCore::IDBPendingOpenCall::IDBPendingOpenCall):
* Modules/indexeddb/IDBTransactionBackendOperations.cpp:
(WebCore::IDBDatabaseBackend::VersionChangeOperation::perform):
* Modules/indexeddb/IDBTransactionCoordinator.cpp:
* Modules/indexeddb/IDBTransactionCoordinator.h:
* Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h:
* Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:
(WebCore::setUpMetadata):
(WebCore::DefaultLevelDBFactory::openLevelDB):
(WebCore::IDBBackingStoreLevelDB::IDBBackingStoreLevelDB):
(WebCore::IDBBackingStoreLevelDB::~IDBBackingStoreLevelDB):
(WebCore::IDBBackingStoreLevelDB::open):
(WebCore::IDBBackingStoreLevelDB::openInMemory):
(WebCore::IDBBackingStoreLevelDB::create):
(WebCore::IDBBackingStoreLevelDB::getDatabaseNames):
(WebCore::deleteRange):
(WebCore::IDBBackingStoreLevelDB::deleteDatabase):
(WebCore::IDBBackingStoreLevelDB::getObjectStores):
(WebCore::IDBBackingStoreLevelDB::getKeyGeneratorCurrentNumber):
(WebCore::IDBBackingStoreLevelDB::getIndexes):
(WebCore::findGreatestKeyLessThanOrEqual):
(WebCore::IDBBackingStoreLevelDB::findKeyInIndex):
* Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h:
* platform/leveldb/LevelDBDatabase.cpp:
(WebCore::LevelDBDatabase::~LevelDBDatabase):
(WebCore::LevelDBDatabase::open):
(WebCore::LevelDBDatabase::openInMemory):
(WebCore::IteratorImpl::IteratorImpl):
(WebCore::LevelDBDatabase::createIterator):
* platform/leveldb/LevelDBDatabase.h:
* platform/leveldb/LevelDBTransaction.cpp:
(WebCore::LevelDBTransaction::commit):
(WebCore::LevelDBTransaction::createIterator):
(WebCore::LevelDBTransaction::TransactionIterator::TransactionIterator):
(WebCore::LevelDBTransaction::TransactionIterator::refreshTreeIterator):
(WebCore::LevelDBWriteOnlyTransaction::LevelDBWriteOnlyTransaction):
* platform/leveldb/LevelDBTransaction.h:
* platform/leveldb/LevelDBWriteBatch.cpp:
(WebCore::LevelDBWriteBatch::LevelDBWriteBatch):
* platform/leveldb/LevelDBWriteBatch.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBCursorBackendh">trunk/Source/WebCore/Modules/indexeddb/IDBCursorBackend.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBDatabaseBackendcpp">trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBDatabaseBackendh">trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBPendingDeleteCallh">trunk/Source/WebCore/Modules/indexeddb/IDBPendingDeleteCall.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBPendingOpenCallh">trunk/Source/WebCore/Modules/indexeddb/IDBPendingOpenCall.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBTransactionBackendOperationscpp">trunk/Source/WebCore/Modules/indexeddb/IDBTransactionBackendOperations.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBTransactionCoordinatorcpp">trunk/Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBTransactionCoordinatorh">trunk/Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbleveldbIDBBackingStoreCursorLevelDBh">trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbleveldbIDBBackingStoreLevelDBcpp">trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbleveldbIDBBackingStoreLevelDBh">trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h</a></li>
<li><a href="#trunkSourceWebCoreplatformleveldbLevelDBDatabasecpp">trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformleveldbLevelDBDatabaseh">trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.h</a></li>
<li><a href="#trunkSourceWebCoreplatformleveldbLevelDBTransactioncpp">trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformleveldbLevelDBTransactionh">trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.h</a></li>
<li><a href="#trunkSourceWebCoreplatformleveldbLevelDBWriteBatchcpp">trunk/Source/WebCore/platform/leveldb/LevelDBWriteBatch.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformleveldbLevelDBWriteBatchh">trunk/Source/WebCore/platform/leveldb/LevelDBWriteBatch.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/ChangeLog        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -1,3 +1,69 @@
</span><ins>+2014-02-18  Zan Dobersek  &lt;zdobersek@igalia.com&gt;
+
+        Move IndexedDB module, LevelDB code to std::unique_ptr
+        https://bugs.webkit.org/show_bug.cgi?id=128964
+
+        Reviewed by Andreas Kling.
+
+        Replace uses of OwnPtr and PassOwnPtr in the IndexedDB module and LevelDB platform code with std::unique_ptr.
+
+        * Modules/indexeddb/IDBCursorBackend.h:
+        * Modules/indexeddb/IDBDatabaseBackend.cpp:
+        (WebCore::IDBDatabaseBackend::IDBDatabaseBackend):
+        (WebCore::IDBDatabaseBackend::transactionFinishedAndAbortFired):
+        (WebCore::IDBDatabaseBackend::processPendingCalls):
+        (WebCore::IDBDatabaseBackend::processPendingOpenCalls):
+        (WebCore::IDBDatabaseBackend::openConnection):
+        (WebCore::IDBDatabaseBackend::runIntVersionChangeTransaction):
+        (WebCore::IDBDatabaseBackend::deleteDatabase):
+        (WebCore::IDBDatabaseBackend::close):
+        * Modules/indexeddb/IDBDatabaseBackend.h:
+        (WebCore::IDBDatabaseBackend::hasPendingSecondHalfOpen):
+        (WebCore::IDBDatabaseBackend::setPendingSecondHalfOpen):
+        * Modules/indexeddb/IDBPendingDeleteCall.h:
+        (WebCore::IDBPendingDeleteCall::IDBPendingDeleteCall):
+        * Modules/indexeddb/IDBPendingOpenCall.h:
+        (WebCore::IDBPendingOpenCall::IDBPendingOpenCall):
+        * Modules/indexeddb/IDBTransactionBackendOperations.cpp:
+        (WebCore::IDBDatabaseBackend::VersionChangeOperation::perform):
+        * Modules/indexeddb/IDBTransactionCoordinator.cpp:
+        * Modules/indexeddb/IDBTransactionCoordinator.h:
+        * Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h:
+        * Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:
+        (WebCore::setUpMetadata):
+        (WebCore::DefaultLevelDBFactory::openLevelDB):
+        (WebCore::IDBBackingStoreLevelDB::IDBBackingStoreLevelDB):
+        (WebCore::IDBBackingStoreLevelDB::~IDBBackingStoreLevelDB):
+        (WebCore::IDBBackingStoreLevelDB::open):
+        (WebCore::IDBBackingStoreLevelDB::openInMemory):
+        (WebCore::IDBBackingStoreLevelDB::create):
+        (WebCore::IDBBackingStoreLevelDB::getDatabaseNames):
+        (WebCore::deleteRange):
+        (WebCore::IDBBackingStoreLevelDB::deleteDatabase):
+        (WebCore::IDBBackingStoreLevelDB::getObjectStores):
+        (WebCore::IDBBackingStoreLevelDB::getKeyGeneratorCurrentNumber):
+        (WebCore::IDBBackingStoreLevelDB::getIndexes):
+        (WebCore::findGreatestKeyLessThanOrEqual):
+        (WebCore::IDBBackingStoreLevelDB::findKeyInIndex):
+        * Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h:
+        * platform/leveldb/LevelDBDatabase.cpp:
+        (WebCore::LevelDBDatabase::~LevelDBDatabase):
+        (WebCore::LevelDBDatabase::open):
+        (WebCore::LevelDBDatabase::openInMemory):
+        (WebCore::IteratorImpl::IteratorImpl):
+        (WebCore::LevelDBDatabase::createIterator):
+        * platform/leveldb/LevelDBDatabase.h:
+        * platform/leveldb/LevelDBTransaction.cpp:
+        (WebCore::LevelDBTransaction::commit):
+        (WebCore::LevelDBTransaction::createIterator):
+        (WebCore::LevelDBTransaction::TransactionIterator::TransactionIterator):
+        (WebCore::LevelDBTransaction::TransactionIterator::refreshTreeIterator):
+        (WebCore::LevelDBWriteOnlyTransaction::LevelDBWriteOnlyTransaction):
+        * platform/leveldb/LevelDBTransaction.h:
+        * platform/leveldb/LevelDBWriteBatch.cpp:
+        (WebCore::LevelDBWriteBatch::LevelDBWriteBatch):
+        * platform/leveldb/LevelDBWriteBatch.h:
+
</ins><span class="cx"> 2014-02-18  David Kilzer  &lt;ddkilzer@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Follow-up: Add type-checked casts for StyleImage and subclasses
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBCursorBackendh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBCursorBackend.h (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBCursorBackend.h        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBCursorBackend.h        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -32,8 +32,6 @@
</span><span class="cx"> #include &quot;IDBDatabaseBackend.h&quot;
</span><span class="cx"> #include &quot;IDBTransactionBackend.h&quot;
</span><span class="cx"> #include &quot;SharedBuffer.h&quot;
</span><del>-#include &lt;wtf/OwnPtr.h&gt;
-#include &lt;wtf/PassOwnPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBDatabaseBackendcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.cpp (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.cpp        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.cpp        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     , m_identifier(uniqueIdentifier)
</span><span class="cx">     , m_factory(factory)
</span><span class="cx">     , m_serverConnection(serverConnection)
</span><del>-    , m_transactionCoordinator(IDBTransactionCoordinator::create())
</del><ins>+    , m_transactionCoordinator(std::make_unique&lt;IDBTransactionCoordinator&gt;())
</ins><span class="cx">     , m_closingConnection(false)
</span><span class="cx">     , m_didOpenInternal(false)
</span><span class="cx"> {
</span><span class="lines">@@ -346,7 +346,7 @@
</span><span class="cx">         // FIXME: When we no longer support setVersion, assert such a thing.
</span><span class="cx">         if (m_pendingSecondHalfOpen) {
</span><span class="cx">             m_pendingSecondHalfOpen-&gt;callbacks()-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::AbortError, &quot;Version change transaction was aborted in upgradeneeded event handler.&quot;));
</span><del>-            m_pendingSecondHalfOpen.release();
</del><ins>+            m_pendingSecondHalfOpen = nullptr;
</ins><span class="cx">         }
</span><span class="cx">         processPendingCalls();
</span><span class="cx">     }
</span><span class="lines">@@ -375,7 +375,7 @@
</span><span class="cx">         ASSERT(m_pendingSecondHalfOpen-&gt;version() == m_metadata.version);
</span><span class="cx">         ASSERT(m_metadata.id != InvalidId);
</span><span class="cx">         m_pendingSecondHalfOpen-&gt;callbacks()-&gt;onSuccess(this, this-&gt;metadata());
</span><del>-        m_pendingSecondHalfOpen.release();
</del><ins>+        m_pendingSecondHalfOpen = nullptr;
</ins><span class="cx">         // Fall through when complete, as pending deletes may be (partially) unblocked.
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -388,7 +388,7 @@
</span><span class="cx">     if (!m_pendingDeleteCalls.isEmpty() &amp;&amp; isDeleteDatabaseBlocked())
</span><span class="cx">         return;
</span><span class="cx">     while (!m_pendingDeleteCalls.isEmpty()) {
</span><del>-        OwnPtr&lt;IDBPendingDeleteCall&gt; pendingDeleteCall = m_pendingDeleteCalls.takeFirst();
</del><ins>+        std::unique_ptr&lt;IDBPendingDeleteCall&gt; pendingDeleteCall = m_pendingDeleteCalls.takeFirst();
</ins><span class="cx">         m_deleteCallbacksWaitingCompletion.add(pendingDeleteCall-&gt;callbacks());
</span><span class="cx">         deleteDatabaseAsync(pendingDeleteCall-&gt;callbacks());
</span><span class="cx">     }
</span><span class="lines">@@ -410,16 +410,16 @@
</span><span class="cx"> void IDBDatabaseBackend::processPendingOpenCalls(bool success)
</span><span class="cx"> {
</span><span class="cx">     // Open calls can be requeued if an open call started a version change transaction or deletes the database.
</span><del>-    Deque&lt;OwnPtr&lt;IDBPendingOpenCall&gt;&gt; pendingOpenCalls;
</del><ins>+    Deque&lt;std::unique_ptr&lt;IDBPendingOpenCall&gt;&gt; pendingOpenCalls;
</ins><span class="cx">     m_pendingOpenCalls.swap(pendingOpenCalls);
</span><span class="cx"> 
</span><span class="cx">     while (!pendingOpenCalls.isEmpty()) {
</span><del>-        OwnPtr&lt;IDBPendingOpenCall&gt; pendingOpenCall = pendingOpenCalls.takeFirst();
</del><ins>+        std::unique_ptr&lt;IDBPendingOpenCall&gt; pendingOpenCall = pendingOpenCalls.takeFirst();
</ins><span class="cx">         if (success) {
</span><span class="cx">             if (m_metadata.id == InvalidId) {
</span><span class="cx">                 // This database was deleted then quickly re-opened.
</span><span class="cx">                 // openInternalAsync() will recreate it in the backing store and then resume processing pending callbacks.
</span><del>-                pendingOpenCalls.prepend(pendingOpenCall.release());
</del><ins>+                pendingOpenCalls.prepend(std::move(pendingOpenCall));
</ins><span class="cx">                 pendingOpenCalls.swap(m_pendingOpenCalls);
</span><span class="cx"> 
</span><span class="cx">                 openInternalAsync();
</span><span class="lines">@@ -450,7 +450,7 @@
</span><span class="cx">     RefPtr&lt;IDBCallbacks&gt; callbacks = prpCallbacks;
</span><span class="cx">     RefPtr&lt;IDBDatabaseCallbacks&gt; databaseCallbacks = prpDatabaseCallbacks;
</span><span class="cx"> 
</span><del>-    m_pendingOpenCalls.append(IDBPendingOpenCall::create(*callbacks, *databaseCallbacks, transactionId, version));
</del><ins>+    m_pendingOpenCalls.append(std::make_unique&lt;IDBPendingOpenCall&gt;(*callbacks, *databaseCallbacks, transactionId, version));
</ins><span class="cx"> 
</span><span class="cx">     processPendingCalls();
</span><span class="cx"> }
</span><span class="lines">@@ -513,7 +513,7 @@
</span><span class="cx">         callbacks-&gt;onBlocked(m_metadata.version);
</span><span class="cx">     // FIXME: Add test for m_runningVersionChangeTransaction.
</span><span class="cx">     if (m_runningVersionChangeTransaction || connectionCount()) {
</span><del>-        m_pendingOpenCalls.append(IDBPendingOpenCall::create(*callbacks, *databaseCallbacks, transactionId, requestedVersion));
</del><ins>+        m_pendingOpenCalls.append(std::make_unique&lt;IDBPendingOpenCall&gt;(*callbacks, *databaseCallbacks, transactionId, requestedVersion));
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -539,7 +539,7 @@
</span><span class="cx">         // VersionChangeEvents are received, not just set up to fire.
</span><span class="cx">         // https://bugs.webkit.org/show_bug.cgi?id=71130
</span><span class="cx">         callbacks-&gt;onBlocked(m_metadata.version);
</span><del>-        m_pendingDeleteCalls.append(IDBPendingDeleteCall::create(callbacks.release()));
</del><ins>+        m_pendingDeleteCalls.append(std::make_unique&lt;IDBPendingDeleteCall&gt;(callbacks.release()));
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     deleteDatabaseAsync(callbacks.release());
</span><span class="lines">@@ -583,7 +583,7 @@
</span><span class="cx">     m_databaseCallbacksSet.remove(callbacks);
</span><span class="cx">     if (m_pendingSecondHalfOpen &amp;&amp; m_pendingSecondHalfOpen-&gt;databaseCallbacks() == callbacks) {
</span><span class="cx">         m_pendingSecondHalfOpen-&gt;callbacks()-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::AbortError, &quot;The connection was closed.&quot;));
</span><del>-        m_pendingSecondHalfOpen.release();
</del><ins>+        m_pendingSecondHalfOpen = nullptr;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (connectionCount() &gt; 1)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBDatabaseBackendh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.h (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.h        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.h        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -118,8 +118,8 @@
</span><span class="cx">     const IDBDatabaseMetadata&amp; metadata() const { return m_metadata; }
</span><span class="cx">     void setCurrentVersion(uint64_t version) { m_metadata.version = version; }
</span><span class="cx"> 
</span><del>-    bool hasPendingSecondHalfOpen() { return m_pendingSecondHalfOpen; }
-    void setPendingSecondHalfOpen(PassOwnPtr&lt;IDBPendingOpenCall&gt; pendingOpenCall) { m_pendingSecondHalfOpen = pendingOpenCall; }
</del><ins>+    bool hasPendingSecondHalfOpen() { return m_pendingSecondHalfOpen.get(); }
+    void setPendingSecondHalfOpen(std::unique_ptr&lt;IDBPendingOpenCall&gt; pendingOpenCall) { m_pendingSecondHalfOpen = std::move(pendingOpenCall); }
</ins><span class="cx"> 
</span><span class="cx">     IDBFactoryBackendInterface&amp; factoryBackend() { return *m_factory; }
</span><span class="cx"> 
</span><span class="lines">@@ -149,16 +149,16 @@
</span><span class="cx">     RefPtr&lt;IDBFactoryBackendInterface&gt; m_factory;
</span><span class="cx">     Ref&lt;IDBServerConnection&gt; m_serverConnection;
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;IDBTransactionCoordinator&gt; m_transactionCoordinator;
</del><ins>+    std::unique_ptr&lt;IDBTransactionCoordinator&gt; m_transactionCoordinator;
</ins><span class="cx">     RefPtr&lt;IDBTransactionBackend&gt; m_runningVersionChangeTransaction;
</span><span class="cx"> 
</span><span class="cx">     typedef HashMap&lt;int64_t, IDBTransactionBackend*&gt; TransactionMap;
</span><span class="cx">     TransactionMap m_transactions;
</span><span class="cx"> 
</span><del>-    Deque&lt;OwnPtr&lt;IDBPendingOpenCall&gt;&gt; m_pendingOpenCalls;
-    OwnPtr&lt;IDBPendingOpenCall&gt; m_pendingSecondHalfOpen;
</del><ins>+    Deque&lt;std::unique_ptr&lt;IDBPendingOpenCall&gt;&gt; m_pendingOpenCalls;
+    std::unique_ptr&lt;IDBPendingOpenCall&gt; m_pendingSecondHalfOpen;
</ins><span class="cx"> 
</span><del>-    Deque&lt;OwnPtr&lt;IDBPendingDeleteCall&gt;&gt; m_pendingDeleteCalls;
</del><ins>+    Deque&lt;std::unique_ptr&lt;IDBPendingDeleteCall&gt;&gt; m_pendingDeleteCalls;
</ins><span class="cx">     HashSet&lt;RefPtr&lt;IDBCallbacks&gt;&gt; m_deleteCallbacksWaitingCompletion;
</span><span class="cx"> 
</span><span class="cx">     typedef ListHashSet&lt;RefPtr&lt;IDBDatabaseCallbacks&gt;&gt; DatabaseCallbacksSet;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBPendingDeleteCallh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBPendingDeleteCall.h (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBPendingDeleteCall.h        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBPendingDeleteCall.h        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #define IDBPendingDeleteCall_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;IDBCallbacks.h&quot;
</span><del>-#include &lt;wtf/PassOwnPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="lines">@@ -36,17 +35,14 @@
</span><span class="cx"> 
</span><span class="cx"> class IDBPendingDeleteCall {
</span><span class="cx"> public:
</span><del>-    static PassOwnPtr&lt;IDBPendingDeleteCall&gt; create(PassRefPtr&lt;IDBCallbacks&gt; callbacks)
</del><ins>+    explicit IDBPendingDeleteCall(PassRefPtr&lt;IDBCallbacks&gt; callbacks)
+        : m_callbacks(callbacks)
</ins><span class="cx">     {
</span><del>-        return adoptPtr(new IDBPendingDeleteCall(callbacks));
</del><span class="cx">     }
</span><ins>+
</ins><span class="cx">     IDBCallbacks* callbacks() { return m_callbacks.get(); }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    IDBPendingDeleteCall(PassRefPtr&lt;IDBCallbacks&gt; callbacks)
-        : m_callbacks(callbacks)
-    {
-    }
</del><span class="cx">     RefPtr&lt;IDBCallbacks&gt; m_callbacks;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBPendingOpenCallh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBPendingOpenCall.h (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBPendingOpenCall.h        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBPendingOpenCall.h        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #ifndef IDBPendingOpenCall_h
</span><span class="cx"> #define IDBPendingOpenCall_h
</span><span class="cx"> 
</span><del>-#include &lt;wtf/PassOwnPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="lines">@@ -38,23 +37,20 @@
</span><span class="cx"> 
</span><span class="cx"> class IDBPendingOpenCall {
</span><span class="cx"> public:
</span><del>-    static PassOwnPtr&lt;IDBPendingOpenCall&gt; create(IDBCallbacks&amp; callbacks, IDBDatabaseCallbacks&amp; databaseCallbacks, int64_t transactionId, uint64_t version)
</del><ins>+    IDBPendingOpenCall(IDBCallbacks&amp; callbacks, IDBDatabaseCallbacks&amp; databaseCallbacks, int64_t transactionId, uint64_t version)
+        : m_callbacks(&amp;callbacks)
+        , m_databaseCallbacks(&amp;databaseCallbacks)
+        , m_version(version)
+        , m_transactionId(transactionId)
</ins><span class="cx">     {
</span><del>-        return adoptPtr(new IDBPendingOpenCall(callbacks, databaseCallbacks, transactionId, version));
</del><span class="cx">     }
</span><ins>+
</ins><span class="cx">     IDBCallbacks* callbacks() { return m_callbacks.get(); }
</span><span class="cx">     IDBDatabaseCallbacks* databaseCallbacks() { return m_databaseCallbacks.get(); }
</span><span class="cx">     uint64_t version() { return m_version; }
</span><span class="cx">     int64_t transactionId() const { return m_transactionId; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    IDBPendingOpenCall(IDBCallbacks&amp; callbacks, IDBDatabaseCallbacks&amp; databaseCallbacks, int64_t transactionId, uint64_t version)
-        : m_callbacks(&amp;callbacks)
-        , m_databaseCallbacks(&amp;databaseCallbacks)
-        , m_version(version)
-        , m_transactionId(transactionId)
-    {
-    }
</del><span class="cx">     RefPtr&lt;IDBCallbacks&gt; m_callbacks;
</span><span class="cx">     RefPtr&lt;IDBDatabaseCallbacks&gt; m_databaseCallbacks;
</span><span class="cx">     uint64_t m_version;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBTransactionBackendOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransactionBackendOperations.cpp (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBTransactionBackendOperations.cpp        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransactionBackendOperations.cpp        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -249,7 +249,7 @@
</span><span class="cx">         } else {
</span><span class="cx">             ASSERT(!m_transaction-&gt;database().hasPendingSecondHalfOpen());
</span><span class="cx">             m_transaction-&gt;database().setCurrentVersion(m_version);
</span><del>-            m_transaction-&gt;database().setPendingSecondHalfOpen(IDBPendingOpenCall::create(*m_callbacks, *m_databaseCallbacks, m_transaction-&gt;id(), m_version));
</del><ins>+            m_transaction-&gt;database().setPendingSecondHalfOpen(std::make_unique&lt;IDBPendingOpenCall&gt;(*m_callbacks, *m_databaseCallbacks, m_transaction-&gt;id(), m_version));
</ins><span class="cx">             m_callbacks-&gt;onUpgradeNeeded(oldVersion, &amp;m_transaction-&gt;database(), m_transaction-&gt;database().metadata());
</span><span class="cx">         }
</span><span class="cx">         completionCallback();
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBTransactionCoordinatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -33,11 +33,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-PassOwnPtr&lt;IDBTransactionCoordinator&gt; IDBTransactionCoordinator::create()
-{
-    return adoptPtr(new IDBTransactionCoordinator());
-}
-
</del><span class="cx"> IDBTransactionCoordinator::IDBTransactionCoordinator()
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBTransactionCoordinatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.h (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.h        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.h        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><ins>+#include &lt;memory&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/ListHashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="lines">@@ -39,7 +40,7 @@
</span><span class="cx"> // Transactions are executed in the order the were created.
</span><span class="cx"> class IDBTransactionCoordinator {
</span><span class="cx"> public:
</span><del>-    static PassOwnPtr&lt;IDBTransactionCoordinator&gt; create();
</del><ins>+    IDBTransactionCoordinator();
</ins><span class="cx">     virtual ~IDBTransactionCoordinator();
</span><span class="cx"> 
</span><span class="cx">     // Called by transactions as they start and finish.
</span><span class="lines">@@ -53,8 +54,6 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    IDBTransactionCoordinator();
-
</del><span class="cx">     void processStartedTransactions();
</span><span class="cx">     bool canRunTransaction(IDBTransactionBackend*);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbleveldbIDBBackingStoreCursorLevelDBh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;IDBKey.h&quot;
</span><span class="cx"> #include &quot;IDBRecordIdentifier.h&quot;
</span><span class="cx"> #include &quot;LevelDBIterator.h&quot;
</span><ins>+#include &lt;memory&gt;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> #if USE(LEVELDB)
</span><span class="lines">@@ -88,7 +89,7 @@
</span><span class="cx">     int64_t m_cursorID;
</span><span class="cx">     LevelDBTransaction* m_transaction;
</span><span class="cx">     const CursorOptions m_cursorOptions;
</span><del>-    OwnPtr&lt;LevelDBIterator&gt; m_iterator;
</del><ins>+    std::unique_ptr&lt;LevelDBIterator&gt; m_iterator;
</ins><span class="cx">     RefPtr&lt;IDBKey&gt; m_currentKey;
</span><span class="cx">     RefPtr&lt;IDBRecordIdentifier&gt; m_recordIdentifier;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbleveldbIDBBackingStoreLevelDBcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -250,7 +250,7 @@
</span><span class="cx">             putInt(transaction.get(), schemaVersionKey, dbSchemaVersion);
</span><span class="cx">             const Vector&lt;char&gt; startKey = DatabaseNameKey::encodeMinKeyForOrigin(origin);
</span><span class="cx">             const Vector&lt;char&gt; stopKey = DatabaseNameKey::encodeStopKeyForOrigin(origin);
</span><del>-            OwnPtr&lt;LevelDBIterator&gt; it = db-&gt;createIterator();
</del><ins>+            std::unique_ptr&lt;LevelDBIterator&gt; it = db-&gt;createIterator();
</ins><span class="cx">             for (it-&gt;seek(startKey); it-&gt;isValid() &amp;&amp; compareKeys(it-&gt;key(), stopKey) &lt; 0; it-&gt;next()) {
</span><span class="cx">                 int64_t databaseId = 0;
</span><span class="cx">                 found = false;
</span><span class="lines">@@ -326,7 +326,7 @@
</span><span class="cx"> 
</span><span class="cx"> class DefaultLevelDBFactory : public LevelDBFactory {
</span><span class="cx"> public:
</span><del>-    virtual PassOwnPtr&lt;LevelDBDatabase&gt; openLevelDB(const String&amp; fileName, const LevelDBComparator* comparator)
</del><ins>+    virtual std::unique_ptr&lt;LevelDBDatabase&gt; openLevelDB(const String&amp; fileName, const LevelDBComparator* comparator)
</ins><span class="cx">     {
</span><span class="cx">         return LevelDBDatabase::open(fileName, comparator);
</span><span class="cx">     }
</span><span class="lines">@@ -336,10 +336,10 @@
</span><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-IDBBackingStoreLevelDB::IDBBackingStoreLevelDB(const String&amp; identifier, PassOwnPtr&lt;LevelDBDatabase&gt; db, PassOwnPtr&lt;LevelDBComparator&gt; comparator)
</del><ins>+IDBBackingStoreLevelDB::IDBBackingStoreLevelDB(const String&amp; identifier, std::unique_ptr&lt;LevelDBDatabase&gt; db, std::unique_ptr&lt;LevelDBComparator&gt; comparator)
</ins><span class="cx">     : m_identifier(identifier)
</span><del>-    , m_db(db)
-    , m_comparator(comparator)
</del><ins>+    , m_db(std::move(db))
+    , m_comparator(std::move(comparator))
</ins><span class="cx">     , m_weakFactory(this)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -347,8 +347,8 @@
</span><span class="cx"> IDBBackingStoreLevelDB::~IDBBackingStoreLevelDB()
</span><span class="cx"> {
</span><span class="cx">     // m_db's destructor uses m_comparator. The order of destruction is important.
</span><del>-    m_db.clear();
-    m_comparator.clear();
</del><ins>+    m_db = nullptr;
+    m_comparator = nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> enum IDBLevelDBBackingStoreOpenResult {
</span><span class="lines">@@ -378,8 +378,8 @@
</span><span class="cx">     ASSERT(!pathBaseArg.isEmpty());
</span><span class="cx">     String pathBase = pathBaseArg;
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LevelDBComparator&gt; comparator = adoptPtr(new Comparator());
-    OwnPtr&lt;LevelDBDatabase&gt; db;
</del><ins>+    std::unique_ptr&lt;LevelDBComparator&gt; comparator = std::make_unique&lt;Comparator&gt;();
+    std::unique_ptr&lt;LevelDBDatabase&gt; db;
</ins><span class="cx"> 
</span><span class="cx">     if (!pathBase.containsOnlyASCII())
</span><span class="cx">             HistogramSupport::histogramEnumeration(&quot;WebCore.IndexedDB.BackingStore.OpenStatus&quot;, IDBLevelDBBackingStoreOpenAttemptNonASCII, IDBLevelDBBackingStoreOpenMax);
</span><span class="lines">@@ -398,11 +398,11 @@
</span><span class="cx">         if (!ok) {
</span><span class="cx">             LOG_ERROR(&quot;IndexedDB had IO error checking schema, treating it as failure to open&quot;);
</span><span class="cx">             HistogramSupport::histogramEnumeration(&quot;WebCore.IndexedDB.BackingStore.OpenStatus&quot;, IDBLevelDBBackingStoreOpenFailedIOErrCheckingSchema, IDBLevelDBBackingStoreOpenMax);
</span><del>-            db.clear();
</del><ins>+            db = nullptr;
</ins><span class="cx">         } else if (!known) {
</span><span class="cx">             LOG_ERROR(&quot;IndexedDB backing store had unknown schema, treating it as failure to open&quot;);
</span><span class="cx">             HistogramSupport::histogramEnumeration(&quot;WebCore.IndexedDB.BackingStore.OpenStatus&quot;, IDBLevelDBBackingStoreOpenFailedUnknownSchema, IDBLevelDBBackingStoreOpenMax);
</span><del>-            db.clear();
</del><ins>+            db = nullptr;
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -433,7 +433,7 @@
</span><span class="cx">         return PassRefPtr&lt;IDBBackingStoreLevelDB&gt;();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return create(fileIdentifier, db.release(), comparator.release());
</del><ins>+    return create(fileIdentifier, std::move(db), std::move(comparator));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;IDBBackingStoreLevelDB&gt; IDBBackingStoreLevelDB::openInMemory(const String&amp; identifier)
</span><span class="lines">@@ -446,8 +446,8 @@
</span><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBBackingStoreLevelDB::openInMemory&quot;);
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LevelDBComparator&gt; comparator = adoptPtr(new Comparator());
-    OwnPtr&lt;LevelDBDatabase&gt; db = LevelDBDatabase::openInMemory(comparator.get());
</del><ins>+    std::unique_ptr&lt;LevelDBComparator&gt; comparator = std::make_unique&lt;Comparator&gt;();
+    std::unique_ptr&lt;LevelDBDatabase&gt; db = LevelDBDatabase::openInMemory(comparator.get());
</ins><span class="cx">     if (!db) {
</span><span class="cx">         LOG_ERROR(&quot;LevelDBDatabase::openInMemory failed.&quot;);
</span><span class="cx">         HistogramSupport::histogramEnumeration(&quot;WebCore.IndexedDB.BackingStore.OpenStatus&quot;, IDBLevelDBBackingStoreOpenMemoryFailed, IDBLevelDBBackingStoreOpenMax);
</span><span class="lines">@@ -455,13 +455,13 @@
</span><span class="cx">     }
</span><span class="cx">     HistogramSupport::histogramEnumeration(&quot;WebCore.IndexedDB.BackingStore.OpenStatus&quot;, IDBLevelDBBackingStoreOpenMemorySuccess, IDBLevelDBBackingStoreOpenMax);
</span><span class="cx"> 
</span><del>-    return create(identifier, db.release(), comparator.release());
</del><ins>+    return create(identifier, std::move(db), std::move(comparator));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;IDBBackingStoreLevelDB&gt; IDBBackingStoreLevelDB::create(const String&amp; identifier, PassOwnPtr&lt;LevelDBDatabase&gt; db, PassOwnPtr&lt;LevelDBComparator&gt; comparator)
</del><ins>+PassRefPtr&lt;IDBBackingStoreLevelDB&gt; IDBBackingStoreLevelDB::create(const String&amp; identifier, std::unique_ptr&lt;LevelDBDatabase&gt; db, std::unique_ptr&lt;LevelDBComparator&gt; comparator)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: Handle comparator name changes.
</span><del>-    RefPtr&lt;IDBBackingStoreLevelDB&gt; backingStore(adoptRef(new IDBBackingStoreLevelDB(identifier, db, comparator)));
</del><ins>+    RefPtr&lt;IDBBackingStoreLevelDB&gt; backingStore(adoptRef(new IDBBackingStoreLevelDB(identifier, std::move(db), std::move(comparator))));
</ins><span class="cx"> 
</span><span class="cx">     if (!setUpMetadata(backingStore-&gt;m_db.get(), identifier))
</span><span class="cx">         return PassRefPtr&lt;IDBBackingStoreLevelDB&gt;();
</span><span class="lines">@@ -477,7 +477,7 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT(foundNames.isEmpty());
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LevelDBIterator&gt; it = m_db-&gt;createIterator();
</del><ins>+    std::unique_ptr&lt;LevelDBIterator&gt; it = m_db-&gt;createIterator();
</ins><span class="cx">     for (it-&gt;seek(startKey); it-&gt;isValid() &amp;&amp; compareKeys(it-&gt;key(), stopKey) &lt; 0; it-&gt;next()) {
</span><span class="cx">         const char* p = it-&gt;key().begin();
</span><span class="cx">         const char* limit = it-&gt;key().end();
</span><span class="lines">@@ -655,7 +655,7 @@
</span><span class="cx"> 
</span><span class="cx"> static void deleteRange(LevelDBTransaction* transaction, const Vector&lt;char&gt;&amp; begin, const Vector&lt;char&gt;&amp; end)
</span><span class="cx"> {
</span><del>-    OwnPtr&lt;LevelDBIterator&gt; it = transaction-&gt;createIterator();
</del><ins>+    std::unique_ptr&lt;LevelDBIterator&gt; it = transaction-&gt;createIterator();
</ins><span class="cx">     for (it-&gt;seek(begin); it-&gt;isValid() &amp;&amp; compareKeys(it-&gt;key(), end) &lt; 0; it-&gt;next())
</span><span class="cx">         transaction-&gt;remove(it-&gt;key());
</span><span class="cx"> }
</span><span class="lines">@@ -663,7 +663,7 @@
</span><span class="cx"> void IDBBackingStoreLevelDB::deleteDatabase(const String&amp; name, std::function&lt;void (bool success)&gt; boolCallbackFunction)
</span><span class="cx"> {
</span><span class="cx">     LOG(StorageAPI, &quot;IDBBackingStoreLevelDB::deleteDatabase&quot;);
</span><del>-    OwnPtr&lt;LevelDBWriteOnlyTransaction&gt; transaction = LevelDBWriteOnlyTransaction::create(m_db.get());
</del><ins>+    std::unique_ptr&lt;LevelDBWriteOnlyTransaction&gt; transaction = std::make_unique&lt;LevelDBWriteOnlyTransaction&gt;(m_db.get());
</ins><span class="cx"> 
</span><span class="cx">     IDBDatabaseMetadata metadata;
</span><span class="cx">     bool success = false;
</span><span class="lines">@@ -680,7 +680,7 @@
</span><span class="cx"> 
</span><span class="cx">     const Vector&lt;char&gt; startKey = DatabaseMetaDataKey::encode(metadata.id, DatabaseMetaDataKey::OriginName);
</span><span class="cx">     const Vector&lt;char&gt; stopKey = DatabaseMetaDataKey::encode(metadata.id + 1, DatabaseMetaDataKey::OriginName);
</span><del>-    OwnPtr&lt;LevelDBIterator&gt; it = m_db-&gt;createIterator();
</del><ins>+    std::unique_ptr&lt;LevelDBIterator&gt; it = m_db-&gt;createIterator();
</ins><span class="cx">     for (it-&gt;seek(startKey); it-&gt;isValid() &amp;&amp; compareKeys(it-&gt;key(), stopKey) &lt; 0; it-&gt;next())
</span><span class="cx">         transaction-&gt;remove(it-&gt;key());
</span><span class="cx"> 
</span><span class="lines">@@ -721,7 +721,7 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT(objectStores-&gt;isEmpty());
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LevelDBIterator&gt; it = m_db-&gt;createIterator();
</del><ins>+    std::unique_ptr&lt;LevelDBIterator&gt; it = m_db-&gt;createIterator();
</ins><span class="cx">     it-&gt;seek(startKey);
</span><span class="cx">     while (it-&gt;isValid() &amp;&amp; compareKeys(it-&gt;key(), stopKey) &lt; 0) {
</span><span class="cx">         const char* p = it-&gt;key().begin();
</span><span class="lines">@@ -1030,7 +1030,7 @@
</span><span class="cx">         const Vector&lt;char&gt; startKey = ObjectStoreDataKey::encode(databaseId, objectStoreId, minIDBKey());
</span><span class="cx">         const Vector&lt;char&gt; stopKey = ObjectStoreDataKey::encode(databaseId, objectStoreId, maxIDBKey());
</span><span class="cx"> 
</span><del>-        OwnPtr&lt;LevelDBIterator&gt; it = levelDBTransaction-&gt;createIterator();
</del><ins>+        std::unique_ptr&lt;LevelDBIterator&gt; it = levelDBTransaction-&gt;createIterator();
</ins><span class="cx">         int64_t maxNumericKey = 0;
</span><span class="cx"> 
</span><span class="cx">         for (it-&gt;seek(startKey); it-&gt;isValid() &amp;&amp; compareKeys(it-&gt;key(), stopKey) &lt; 0; it-&gt;next()) {
</span><span class="lines">@@ -1127,7 +1127,7 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT(indexes-&gt;isEmpty());
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LevelDBIterator&gt; it = m_db-&gt;createIterator();
</del><ins>+    std::unique_ptr&lt;LevelDBIterator&gt; it = m_db-&gt;createIterator();
</ins><span class="cx">     it-&gt;seek(startKey);
</span><span class="cx">     while (it-&gt;isValid() &amp;&amp; compareKeys(it-&gt;key(), stopKey) &lt; 0) {
</span><span class="cx">         const char* p = it-&gt;key().begin();
</span><span class="lines">@@ -1254,7 +1254,7 @@
</span><span class="cx"> 
</span><span class="cx"> static bool findGreatestKeyLessThanOrEqual(LevelDBTransaction* transaction, const Vector&lt;char&gt;&amp; target, Vector&lt;char&gt;&amp; foundKey)
</span><span class="cx"> {
</span><del>-    OwnPtr&lt;LevelDBIterator&gt; it = transaction-&gt;createIterator();
</del><ins>+    std::unique_ptr&lt;LevelDBIterator&gt; it = transaction-&gt;createIterator();
</ins><span class="cx">     it-&gt;seek(target);
</span><span class="cx"> 
</span><span class="cx">     if (!it-&gt;isValid()) {
</span><span class="lines">@@ -1307,7 +1307,7 @@
</span><span class="cx"> 
</span><span class="cx">     LevelDBTransaction* levelDBTransaction = IDBBackingStoreTransactionLevelDB::levelDBTransactionFrom(transaction);
</span><span class="cx">     const Vector&lt;char&gt; leveldbKey = IndexDataKey::encode(databaseId, objectStoreId, indexId, key);
</span><del>-    OwnPtr&lt;LevelDBIterator&gt; it = levelDBTransaction-&gt;createIterator();
</del><ins>+    std::unique_ptr&lt;LevelDBIterator&gt; it = levelDBTransaction-&gt;createIterator();
</ins><span class="cx">     it-&gt;seek(leveldbKey);
</span><span class="cx"> 
</span><span class="cx">     for (;;) {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbleveldbIDBBackingStoreLevelDBh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> #include &quot;LevelDBIterator.h&quot;
</span><span class="cx"> #include &quot;LevelDBTransaction.h&quot;
</span><span class="cx"> #include &lt;functional&gt;
</span><del>-#include &lt;wtf/OwnPtr.h&gt;
</del><ins>+#include &lt;memory&gt;
</ins><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/WeakPtr.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> class LevelDBFactory {
</span><span class="cx"> public:
</span><span class="cx">     virtual ~LevelDBFactory() { }
</span><del>-    virtual PassOwnPtr&lt;LevelDBDatabase&gt; openLevelDB(const String&amp; fileName, const LevelDBComparator*) = 0;
</del><ins>+    virtual std::unique_ptr&lt;LevelDBDatabase&gt; openLevelDB(const String&amp; fileName, const LevelDBComparator*) = 0;
</ins><span class="cx">     virtual bool destroyLevelDB(const String&amp; fileName) = 0;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -116,8 +116,8 @@
</span><span class="cx">     void removeBackingStoreTransaction(IDBBackingStoreTransactionLevelDB*);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    IDBBackingStoreLevelDB(const String&amp; identifier, PassOwnPtr&lt;LevelDBDatabase&gt;, PassOwnPtr&lt;LevelDBComparator&gt;);
-    static PassRefPtr&lt;IDBBackingStoreLevelDB&gt; create(const String&amp; identifier, PassOwnPtr&lt;LevelDBDatabase&gt;, PassOwnPtr&lt;LevelDBComparator&gt;);
</del><ins>+    IDBBackingStoreLevelDB(const String&amp; identifier, std::unique_ptr&lt;LevelDBDatabase&gt;, std::unique_ptr&lt;LevelDBComparator&gt;);
+    static PassRefPtr&lt;IDBBackingStoreLevelDB&gt; create(const String&amp; identifier, std::unique_ptr&lt;LevelDBDatabase&gt;, std::unique_ptr&lt;LevelDBComparator&gt;);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: LevelDB needs to support uint64_t as the version type.
</span><span class="cx">     bool createIDBDatabaseMetaData(IDBDatabaseMetadata&amp;);
</span><span class="lines">@@ -129,8 +129,8 @@
</span><span class="cx"> 
</span><span class="cx">     String m_identifier;
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LevelDBDatabase&gt; m_db;
-    OwnPtr&lt;LevelDBComparator&gt; m_comparator;
</del><ins>+    std::unique_ptr&lt;LevelDBDatabase&gt; m_db;
+    std::unique_ptr&lt;LevelDBComparator&gt; m_comparator;
</ins><span class="cx">     WeakPtrFactory&lt;IDBBackingStoreLevelDB&gt; m_weakFactory;
</span><span class="cx"> 
</span><span class="cx">     HashMap&lt;int64_t, RefPtr&lt;IDBBackingStoreTransactionLevelDB&gt;&gt; m_backingStoreTransactions;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformleveldbLevelDBDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> #include &lt;leveldb/env.h&gt;
</span><span class="cx"> #include &lt;leveldb/slice.h&gt;
</span><span class="cx"> #include &lt;string&gt;
</span><del>-#include &lt;wtf/PassOwnPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -111,9 +110,9 @@
</span><span class="cx"> LevelDBDatabase::~LevelDBDatabase()
</span><span class="cx"> {
</span><span class="cx">     // m_db's destructor uses m_comparatorAdapter; order of deletion is important.
</span><del>-    m_db.clear();
-    m_comparatorAdapter.clear();
-    m_env.clear();
</del><ins>+    m_db = nullptr;
+    m_comparatorAdapter = nullptr;
+    m_env = nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static leveldb::Status openDB(leveldb::Comparator* comparator, leveldb::Env* env, const String&amp; path, leveldb::DB** db)
</span><span class="lines">@@ -157,9 +156,9 @@
</span><span class="cx">     HistogramSupport::histogramEnumeration(histogramName, levelDBError, LevelDBMaxError);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassOwnPtr&lt;LevelDBDatabase&gt; LevelDBDatabase::open(const String&amp; fileName, const LevelDBComparator* comparator)
</del><ins>+std::unique_ptr&lt;LevelDBDatabase&gt; LevelDBDatabase::open(const String&amp; fileName, const LevelDBComparator* comparator)
</ins><span class="cx"> {
</span><del>-    OwnPtr&lt;ComparatorAdapter&gt; comparatorAdapter = adoptPtr(new ComparatorAdapter(comparator));
</del><ins>+    auto comparatorAdapter = std::make_unique&lt;ComparatorAdapter&gt;(comparator);
</ins><span class="cx"> 
</span><span class="cx">     leveldb::DB* db;
</span><span class="cx">     const leveldb::Status s = openDB(comparatorAdapter.get(), leveldb::IDBEnv(), fileName, &amp;db);
</span><span class="lines">@@ -171,18 +170,18 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LevelDBDatabase&gt; result = adoptPtr(new LevelDBDatabase);
-    result-&gt;m_db = adoptPtr(db);
-    result-&gt;m_comparatorAdapter = comparatorAdapter.release();
</del><ins>+    auto result = std::make_unique&lt;LevelDBDatabase&gt;();
+    result-&gt;m_db = std::unique_ptr&lt;leveldb::DB&gt;(db);
+    result-&gt;m_comparatorAdapter = std::move(comparatorAdapter);
</ins><span class="cx">     result-&gt;m_comparator = comparator;
</span><span class="cx"> 
</span><del>-    return result.release();
</del><ins>+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassOwnPtr&lt;LevelDBDatabase&gt; LevelDBDatabase::openInMemory(const LevelDBComparator* comparator)
</del><ins>+std::unique_ptr&lt;LevelDBDatabase&gt; LevelDBDatabase::openInMemory(const LevelDBComparator* comparator)
</ins><span class="cx"> {
</span><del>-    OwnPtr&lt;ComparatorAdapter&gt; comparatorAdapter = adoptPtr(new ComparatorAdapter(comparator));
-    OwnPtr&lt;leveldb::Env&gt; inMemoryEnv = adoptPtr(leveldb::NewMemEnv(leveldb::IDBEnv()));
</del><ins>+    auto comparatorAdapter = std::make_unique&lt;ComparatorAdapter&gt;(comparator);
+    std::unique_ptr&lt;leveldb::Env&gt; inMemoryEnv(leveldb::NewMemEnv(leveldb::IDBEnv()));
</ins><span class="cx"> 
</span><span class="cx">     leveldb::DB* db;
</span><span class="cx">     const leveldb::Status s = openDB(comparatorAdapter.get(), inMemoryEnv.get(), String(), &amp;db);
</span><span class="lines">@@ -192,13 +191,13 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LevelDBDatabase&gt; result = adoptPtr(new LevelDBDatabase);
-    result-&gt;m_env = inMemoryEnv.release();
-    result-&gt;m_db = adoptPtr(db);
-    result-&gt;m_comparatorAdapter = comparatorAdapter.release();
</del><ins>+    auto result = std::make_unique&lt;LevelDBDatabase&gt;();
+    result-&gt;m_env = std::move(inMemoryEnv);
+    result-&gt;m_db = std::unique_ptr&lt;leveldb::DB&gt;(db);
+    result-&gt;m_comparatorAdapter = std::move(comparatorAdapter);
</ins><span class="cx">     result-&gt;m_comparator = comparator;
</span><span class="cx"> 
</span><del>-    return result.release();
</del><ins>+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool LevelDBDatabase::put(const LevelDBSlice&amp; key, const Vector&lt;char&gt;&amp; value)
</span><span class="lines">@@ -264,6 +263,7 @@
</span><span class="cx"> namespace {
</span><span class="cx"> class IteratorImpl : public LevelDBIterator {
</span><span class="cx"> public:
</span><ins>+    explicit IteratorImpl(std::unique_ptr&lt;leveldb::Iterator&gt;);
</ins><span class="cx">     ~IteratorImpl() { };
</span><span class="cx"> 
</span><span class="cx">     virtual bool isValid() const;
</span><span class="lines">@@ -275,16 +275,14 @@
</span><span class="cx">     virtual LevelDBSlice value() const;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    friend class WebCore::LevelDBDatabase;
-    IteratorImpl(PassOwnPtr&lt;leveldb::Iterator&gt;);
</del><span class="cx">     void checkStatus();
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;leveldb::Iterator&gt; m_iterator;
</del><ins>+    std::unique_ptr&lt;leveldb::Iterator&gt; m_iterator;
</ins><span class="cx"> };
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-IteratorImpl::IteratorImpl(PassOwnPtr&lt;leveldb::Iterator&gt; it)
-    : m_iterator(it)
</del><ins>+IteratorImpl::IteratorImpl(std::unique_ptr&lt;leveldb::Iterator&gt; it)
+    : m_iterator(std::move(it))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -338,15 +336,15 @@
</span><span class="cx">     return makeLevelDBSlice(m_iterator-&gt;value());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassOwnPtr&lt;LevelDBIterator&gt; LevelDBDatabase::createIterator(const LevelDBSnapshot* snapshot)
</del><ins>+std::unique_ptr&lt;LevelDBIterator&gt; LevelDBDatabase::createIterator(const LevelDBSnapshot* snapshot)
</ins><span class="cx"> {
</span><span class="cx">     leveldb::ReadOptions readOptions;
</span><span class="cx">     readOptions.verify_checksums = true; // FIXME: Disable this if the performance impact is too great.
</span><span class="cx">     readOptions.snapshot = snapshot ? snapshot-&gt;m_snapshot : 0;
</span><del>-    OwnPtr&lt;leveldb::Iterator&gt; i = adoptPtr(m_db-&gt;NewIterator(readOptions));
</del><ins>+    std::unique_ptr&lt;leveldb::Iterator&gt; i(m_db-&gt;NewIterator(readOptions));
</ins><span class="cx">     if (!i) // FIXME: Double check if we actually need to check this.
</span><span class="cx">         return nullptr;
</span><del>-    return adoptPtr(new IteratorImpl(i.release()));
</del><ins>+    return std::make_unique&lt;IteratorImpl&gt;(std::move(i));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const LevelDBComparator* LevelDBDatabase::comparator() const
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformleveldbLevelDBDatabaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.h (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.h        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.h        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -28,8 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if USE(LEVELDB)
</span><span class="cx"> 
</span><del>-#include &lt;wtf/OwnPtr.h&gt;
-#include &lt;wtf/PassOwnPtr.h&gt;
</del><ins>+#include &lt;memory&gt;
</ins><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -62,8 +61,9 @@
</span><span class="cx"> 
</span><span class="cx"> class LevelDBDatabase {
</span><span class="cx"> public:
</span><del>-    static PassOwnPtr&lt;LevelDBDatabase&gt; open(const String&amp; fileName, const LevelDBComparator*);
-    static PassOwnPtr&lt;LevelDBDatabase&gt; openInMemory(const LevelDBComparator*);
</del><ins>+    static std::unique_ptr&lt;LevelDBDatabase&gt; open(const String&amp; fileName, const LevelDBComparator*);
+    static std::unique_ptr&lt;LevelDBDatabase&gt; openInMemory(const LevelDBComparator*);
+    LevelDBDatabase();
</ins><span class="cx">     static bool destroy(const String&amp; fileName);
</span><span class="cx">     virtual ~LevelDBDatabase();
</span><span class="cx"> 
</span><span class="lines">@@ -71,18 +71,15 @@
</span><span class="cx">     bool remove(const LevelDBSlice&amp; key);
</span><span class="cx">     virtual bool safeGet(const LevelDBSlice&amp; key, Vector&lt;char&gt;&amp; value, bool&amp; found, const LevelDBSnapshot* = 0);
</span><span class="cx">     bool write(LevelDBWriteBatch&amp;);
</span><del>-    PassOwnPtr&lt;LevelDBIterator&gt; createIterator(const LevelDBSnapshot* = 0);
</del><ins>+    std::unique_ptr&lt;LevelDBIterator&gt; createIterator(const LevelDBSnapshot* = 0);
</ins><span class="cx">     const LevelDBComparator* comparator() const;
</span><span class="cx"> 
</span><del>-protected:
-    LevelDBDatabase();
-
</del><span class="cx"> private:
</span><span class="cx">     friend class LevelDBSnapshot;
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;leveldb::Env&gt; m_env;
-    OwnPtr&lt;leveldb::Comparator&gt; m_comparatorAdapter;
-    OwnPtr&lt;leveldb::DB&gt; m_db;
</del><ins>+    std::unique_ptr&lt;leveldb::Env&gt; m_env;
+    std::unique_ptr&lt;leveldb::Comparator&gt; m_comparatorAdapter;
+    std::unique_ptr&lt;leveldb::DB&gt; m_db;
</ins><span class="cx">     const LevelDBComparator* m_comparator;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformleveldbLevelDBTransactioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.cpp (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.cpp        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.cpp        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LevelDBWriteBatch&gt; writeBatch = LevelDBWriteBatch::create();
</del><ins>+    std::unique_ptr&lt;LevelDBWriteBatch&gt; writeBatch = std::make_unique&lt;LevelDBWriteBatch&gt;();
</ins><span class="cx"> 
</span><span class="cx">     TreeType::Iterator iterator;
</span><span class="cx">     iterator.start_iter_least(m_tree);
</span><span class="lines">@@ -168,16 +168,11 @@
</span><span class="cx">     clearTree();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassOwnPtr&lt;LevelDBIterator&gt; LevelDBTransaction::createIterator()
</del><ins>+std::unique_ptr&lt;LevelDBIterator&gt; LevelDBTransaction::createIterator()
</ins><span class="cx"> {
</span><del>-    return TransactionIterator::create(this);
</del><ins>+    return std::make_unique&lt;TransactionIterator&gt;(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassOwnPtr&lt;LevelDBTransaction::TreeIterator&gt; LevelDBTransaction::TreeIterator::create(LevelDBTransaction* transaction)
-{
-    return adoptPtr(new TreeIterator(transaction));
-}
-
</del><span class="cx"> bool LevelDBTransaction::TreeIterator::isValid() const
</span><span class="cx"> {
</span><span class="cx">     return *m_iterator;
</span><span class="lines">@@ -257,15 +252,10 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassOwnPtr&lt;LevelDBTransaction::TransactionIterator&gt; LevelDBTransaction::TransactionIterator::create(PassRefPtr&lt;LevelDBTransaction&gt; transaction)
-{
-    return adoptPtr(new TransactionIterator(transaction));
-}
-
</del><span class="cx"> LevelDBTransaction::TransactionIterator::TransactionIterator(PassRefPtr&lt;LevelDBTransaction&gt; transaction)
</span><span class="cx">     : m_transaction(transaction)
</span><span class="cx">     , m_comparator(m_transaction-&gt;m_comparator)
</span><del>-    , m_treeIterator(TreeIterator::create(m_transaction.get()))
</del><ins>+    , m_treeIterator(std::make_unique&lt;TreeIterator&gt;((m_transaction.get())))
</ins><span class="cx">     , m_dbIterator(m_transaction-&gt;m_db-&gt;createIterator(&amp;m_transaction-&gt;m_snapshot))
</span><span class="cx">     , m_current(0)
</span><span class="cx">     , m_direction(kForward)
</span><span class="lines">@@ -387,7 +377,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_treeChanged = false;
</span><span class="cx"> 
</span><del>-    if (m_treeIterator-&gt;isValid() &amp;&amp; m_treeIterator == m_current) {
</del><ins>+    if (m_treeIterator-&gt;isValid() &amp;&amp; m_treeIterator.get() == m_current) {
</ins><span class="cx">         m_treeIterator-&gt;reset();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -499,14 +489,9 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassOwnPtr&lt;LevelDBWriteOnlyTransaction&gt; LevelDBWriteOnlyTransaction::create(LevelDBDatabase* db)
-{
-    return adoptPtr(new LevelDBWriteOnlyTransaction(db));
-}
-
</del><span class="cx"> LevelDBWriteOnlyTransaction::LevelDBWriteOnlyTransaction(LevelDBDatabase* db)
</span><span class="cx">     : m_db(db)
</span><del>-    , m_writeBatch(LevelDBWriteBatch::create())
</del><ins>+    , m_writeBatch(std::make_unique&lt;LevelDBWriteBatch&gt;())
</ins><span class="cx">     , m_finished(false)
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformleveldbLevelDBTransactionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.h (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.h        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/platform/leveldb/LevelDBTransaction.h        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> #include &quot;LevelDBSlice.h&quot;
</span><span class="cx"> #include &lt;wtf/AVLTree.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><del>-#include &lt;wtf/PassOwnPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="lines">@@ -59,7 +58,7 @@
</span><span class="cx">     bool commit();
</span><span class="cx">     void rollback();
</span><span class="cx"> 
</span><del>-    PassOwnPtr&lt;LevelDBIterator&gt; createIterator();
</del><ins>+    std::unique_ptr&lt;LevelDBIterator&gt; createIterator();
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     LevelDBTransaction(LevelDBDatabase*);
</span><span class="lines">@@ -100,7 +99,7 @@
</span><span class="cx"> 
</span><span class="cx">     class TreeIterator : public LevelDBIterator {
</span><span class="cx">     public:
</span><del>-        static PassOwnPtr&lt;TreeIterator&gt; create(LevelDBTransaction*);
</del><ins>+        explicit TreeIterator(LevelDBTransaction*);
</ins><span class="cx">         ~TreeIterator();
</span><span class="cx"> 
</span><span class="cx">         virtual bool isValid() const;
</span><span class="lines">@@ -114,7 +113,6 @@
</span><span class="cx">         void reset();
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        TreeIterator(LevelDBTransaction*);
</del><span class="cx">         mutable TreeType::Iterator m_iterator; // Dereferencing this is non-const.
</span><span class="cx">         TreeType* m_tree;
</span><span class="cx">         LevelDBTransaction* m_transaction;
</span><span class="lines">@@ -123,8 +121,8 @@
</span><span class="cx"> 
</span><span class="cx">     class TransactionIterator : public LevelDBIterator {
</span><span class="cx">     public:
</span><ins>+        explicit TransactionIterator(PassRefPtr&lt;LevelDBTransaction&gt;);
</ins><span class="cx">         ~TransactionIterator();
</span><del>-        static PassOwnPtr&lt;TransactionIterator&gt; create(PassRefPtr&lt;LevelDBTransaction&gt;);
</del><span class="cx"> 
</span><span class="cx">         virtual bool isValid() const;
</span><span class="cx">         virtual void seekToLast();
</span><span class="lines">@@ -136,7 +134,6 @@
</span><span class="cx">         void treeChanged();
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        TransactionIterator(PassRefPtr&lt;LevelDBTransaction&gt;);
</del><span class="cx">         void handleConflictsAndDeletes();
</span><span class="cx">         void setCurrentIteratorToSmallestKey();
</span><span class="cx">         void setCurrentIteratorToLargestKey();
</span><span class="lines">@@ -146,8 +143,8 @@
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;LevelDBTransaction&gt; m_transaction;
</span><span class="cx">         const LevelDBComparator* m_comparator;
</span><del>-        mutable OwnPtr&lt;TreeIterator&gt; m_treeIterator;
-        OwnPtr&lt;LevelDBIterator&gt; m_dbIterator;
</del><ins>+        mutable std::unique_ptr&lt;TreeIterator&gt; m_treeIterator;
+        std::unique_ptr&lt;LevelDBIterator&gt; m_dbIterator;
</ins><span class="cx">         LevelDBIterator* m_current;
</span><span class="cx"> 
</span><span class="cx">         enum Direction {
</span><span class="lines">@@ -174,17 +171,14 @@
</span><span class="cx"> 
</span><span class="cx"> class LevelDBWriteOnlyTransaction {
</span><span class="cx"> public:
</span><del>-    static PassOwnPtr&lt;LevelDBWriteOnlyTransaction&gt; create(LevelDBDatabase*);
-
</del><ins>+    explicit LevelDBWriteOnlyTransaction(LevelDBDatabase*);
</ins><span class="cx">     ~LevelDBWriteOnlyTransaction();
</span><span class="cx">     void remove(const LevelDBSlice&amp; key);
</span><span class="cx">     bool commit();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    LevelDBWriteOnlyTransaction(LevelDBDatabase*);
-
</del><span class="cx">     LevelDBDatabase* m_db;
</span><del>-    OwnPtr&lt;LevelDBWriteBatch&gt; m_writeBatch;
</del><ins>+    std::unique_ptr&lt;LevelDBWriteBatch&gt; m_writeBatch;
</ins><span class="cx">     bool m_finished;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformleveldbLevelDBWriteBatchcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/leveldb/LevelDBWriteBatch.cpp (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/leveldb/LevelDBWriteBatch.cpp        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/platform/leveldb/LevelDBWriteBatch.cpp        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -34,13 +34,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-PassOwnPtr&lt;LevelDBWriteBatch&gt; LevelDBWriteBatch::create()
-{
-    return adoptPtr(new LevelDBWriteBatch);
-}
-
</del><span class="cx"> LevelDBWriteBatch::LevelDBWriteBatch()
</span><del>-    : m_writeBatch(adoptPtr(new leveldb::WriteBatch))
</del><ins>+    : m_writeBatch(std::make_unique&lt;leveldb::WriteBatch&gt;())
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformleveldbLevelDBWriteBatchh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/leveldb/LevelDBWriteBatch.h (164313 => 164314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/leveldb/LevelDBWriteBatch.h        2014-02-18 21:59:43 UTC (rev 164313)
+++ trunk/Source/WebCore/platform/leveldb/LevelDBWriteBatch.h        2014-02-18 22:08:45 UTC (rev 164314)
</span><span class="lines">@@ -28,8 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if USE(LEVELDB)
</span><span class="cx"> 
</span><del>-#include &lt;wtf/OwnPtr.h&gt;
-#include &lt;wtf/PassOwnPtr.h&gt;
</del><ins>+#include &lt;memory&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace leveldb {
</span><span class="cx"> class WriteBatch;
</span><span class="lines">@@ -43,7 +42,7 @@
</span><span class="cx"> // This class holds a collection of updates to apply atomically to a database.
</span><span class="cx"> class LevelDBWriteBatch {
</span><span class="cx"> public:
</span><del>-    static PassOwnPtr&lt;LevelDBWriteBatch&gt; create();
</del><ins>+    LevelDBWriteBatch();
</ins><span class="cx">     ~LevelDBWriteBatch();
</span><span class="cx"> 
</span><span class="cx">     void put(const LevelDBSlice&amp; key, const LevelDBSlice&amp; value);
</span><span class="lines">@@ -52,9 +51,8 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     friend class LevelDBDatabase;
</span><del>-    LevelDBWriteBatch();
</del><span class="cx"> 
</span><del>-    OwnPtr&lt;leveldb::WriteBatch&gt; m_writeBatch;
</del><ins>+    std::unique_ptr&lt;leveldb::WriteBatch&gt; m_writeBatch;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>