<!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>[191620] 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/191620">191620</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2015-10-26 22:22:55 -0700 (Mon, 26 Oct 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Make IDBKeyData from a struct to a class.
https://bugs.webkit.org/show_bug.cgi?id=150576

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (No change in behavior).

* Modules/indexeddb/IDBKeyData.cpp:
(WebCore::IDBKeyData::IDBKeyData):
(WebCore::IDBKeyData::maybeCreateIDBKey):
(WebCore::IDBKeyData::isolatedCopy):
(WebCore::IDBKeyData::encode):
(WebCore::IDBKeyData::decode):
(WebCore::IDBKeyData::compare):
(WebCore::IDBKeyData::loggingString):
(WebCore::IDBKeyData::setArrayValue):
(WebCore::IDBKeyData::setStringValue):
(WebCore::IDBKeyData::setDateValue):
(WebCore::IDBKeyData::setNumberValue):
* Modules/indexeddb/IDBKeyData.h:
(WebCore::IDBKeyData::IDBKeyData):
(WebCore::IDBKeyData::minimum):
(WebCore::IDBKeyData::maximum):
(WebCore::IDBKeyData::isNull):
(WebCore::IDBKeyData::type):
(WebCore::IDBKeyData::encode):
(WebCore::IDBKeyData::decode):
* Modules/indexeddb/legacy/IDBTransactionBackendOperations.cpp:
(WebCore::GetOperation::perform):
* bindings/js/IDBBindingUtilities.h:
* platform/CrossThreadCopier.h:

Source/WebKit2:

* DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
* DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:
* DatabaseProcess/IndexedDB/IDBSerialization.h:
* DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
(WebKit::UniqueIDBDatabase::putRecordInBackingStore):
* DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:
* DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
* DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
(WebKit::buildIndexStatement):
(WebKit::buildObjectStoreStatement):
(WebKit::SQLiteIDBCursor::establishStatement):
(WebKit::SQLiteIDBCursor::createSQLiteStatement):
(WebKit::SQLiteIDBCursor::resetAndRebindStatement):
(WebKit::SQLiteIDBCursor::iterate):
* DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::createIndex):
* WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
(WebKit::WebIDBServerConnection::didPutRecord):
* WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
* WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBKeyDatacpp">trunk/Source/WebCore/Modules/indexeddb/IDBKeyData.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBKeyDatah">trunk/Source/WebCore/Modules/indexeddb/IDBKeyData.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddblegacyIDBTransactionBackendOperationscpp">trunk/Source/WebCore/Modules/indexeddb/legacy/IDBTransactionBackendOperations.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsIDBBindingUtilitiesh">trunk/Source/WebCore/bindings/js/IDBBindingUtilities.h</a></li>
<li><a href="#trunkSourceWebCoreplatformCrossThreadCopierh">trunk/Source/WebCore/platform/CrossThreadCopier.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBDatabaseProcessIDBConnectionh">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBDatabaseProcessIDBConnectionmessagesin">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBIDBSerializationh">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.h</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabasecpp">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseh">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseBackingStoreh">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBsqliteSQLiteIDBCursorcpp">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBsqliteUniqueIDBDatabaseBackingStoreSQLitecpp">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessDatabasesIndexedDBWebIDBServerConnectioncpp">trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessDatabasesIndexedDBWebIDBServerConnectionh">trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessDatabasesIndexedDBWebIDBServerConnectionmessagesin">trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebCore/ChangeLog        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2015-10-26  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Make IDBKeyData from a struct to a class.
+        https://bugs.webkit.org/show_bug.cgi?id=150576
+
+        Reviewed by Alex Christensen.
+
+        No new tests (No change in behavior).
+
+        * Modules/indexeddb/IDBKeyData.cpp:
+        (WebCore::IDBKeyData::IDBKeyData):
+        (WebCore::IDBKeyData::maybeCreateIDBKey):
+        (WebCore::IDBKeyData::isolatedCopy):
+        (WebCore::IDBKeyData::encode):
+        (WebCore::IDBKeyData::decode):
+        (WebCore::IDBKeyData::compare):
+        (WebCore::IDBKeyData::loggingString):
+        (WebCore::IDBKeyData::setArrayValue):
+        (WebCore::IDBKeyData::setStringValue):
+        (WebCore::IDBKeyData::setDateValue):
+        (WebCore::IDBKeyData::setNumberValue):
+        * Modules/indexeddb/IDBKeyData.h:
+        (WebCore::IDBKeyData::IDBKeyData):
+        (WebCore::IDBKeyData::minimum):
+        (WebCore::IDBKeyData::maximum):
+        (WebCore::IDBKeyData::isNull):
+        (WebCore::IDBKeyData::type):
+        (WebCore::IDBKeyData::encode):
+        (WebCore::IDBKeyData::decode):
+        * Modules/indexeddb/legacy/IDBTransactionBackendOperations.cpp:
+        (WebCore::GetOperation::perform):
+        * bindings/js/IDBBindingUtilities.h:
+        * platform/CrossThreadCopier.h:
+
</ins><span class="cx"> 2015-10-26  Philip Chimento  &lt;philip.chimento@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] [Stable] Build GL texture mapper only if USE_TEXTURE_MAPPER_GL
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBKeyDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBKeyData.cpp (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBKeyData.cpp        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBKeyData.cpp        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -34,33 +34,30 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> IDBKeyData::IDBKeyData(const IDBKey* key)
</span><del>-    : type(KeyType::Invalid)
-    , numberValue(0)
-    , isNull(false)
</del><ins>+    : m_type(KeyType::Invalid)
</ins><span class="cx"> {
</span><span class="cx">     if (!key) {
</span><del>-        isNull = true;
</del><ins>+        m_isNull = true;
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    type = key-&gt;type();
-    numberValue = 0;
</del><ins>+    m_type = key-&gt;type();
</ins><span class="cx"> 
</span><del>-    switch (type) {
</del><ins>+    switch (m_type) {
</ins><span class="cx">     case KeyType::Invalid:
</span><span class="cx">         break;
</span><span class="cx">     case KeyType::Array:
</span><span class="cx">         for (auto&amp; key2 : key-&gt;array())
</span><del>-            arrayValue.append(IDBKeyData(key2.get()));
</del><ins>+            m_arrayValue.append(IDBKeyData(key2.get()));
</ins><span class="cx">         break;
</span><span class="cx">     case KeyType::String:
</span><del>-        stringValue = key-&gt;string();
</del><ins>+        m_stringValue = key-&gt;string();
</ins><span class="cx">         break;
</span><span class="cx">     case KeyType::Date:
</span><del>-        numberValue = key-&gt;date();
</del><ins>+        m_numberValue = key-&gt;date();
</ins><span class="cx">         break;
</span><span class="cx">     case KeyType::Number:
</span><del>-        numberValue = key-&gt;number();
</del><ins>+        m_numberValue = key-&gt;number();
</ins><span class="cx">         break;
</span><span class="cx">     case KeyType::Max:
</span><span class="cx">     case KeyType::Min:
</span><span class="lines">@@ -70,27 +67,27 @@
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;IDBKey&gt; IDBKeyData::maybeCreateIDBKey() const
</span><span class="cx"> {
</span><del>-    if (isNull)
</del><ins>+    if (m_isNull)
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    switch (type) {
</del><ins>+    switch (m_type) {
</ins><span class="cx">     case KeyType::Invalid:
</span><span class="cx">         return IDBKey::createInvalid();
</span><span class="cx">     case KeyType::Array:
</span><span class="cx">         {
</span><span class="cx">             Vector&lt;RefPtr&lt;IDBKey&gt;&gt; array;
</span><del>-            for (auto&amp; keyData : arrayValue) {
</del><ins>+            for (auto&amp; keyData : m_arrayValue) {
</ins><span class="cx">                 array.append(keyData.maybeCreateIDBKey());
</span><span class="cx">                 ASSERT(array.last());
</span><span class="cx">             }
</span><span class="cx">             return IDBKey::createArray(array);
</span><span class="cx">         }
</span><span class="cx">     case KeyType::String:
</span><del>-        return IDBKey::createString(stringValue);
</del><ins>+        return IDBKey::createString(m_stringValue);
</ins><span class="cx">     case KeyType::Date:
</span><del>-        return IDBKey::createDate(numberValue);
</del><ins>+        return IDBKey::createDate(m_numberValue);
</ins><span class="cx">     case KeyType::Number:
</span><del>-        return IDBKey::createNumber(numberValue);
</del><ins>+        return IDBKey::createNumber(m_numberValue);
</ins><span class="cx">     case KeyType::Max:
</span><span class="cx">     case KeyType::Min:
</span><span class="cx">         ASSERT_NOT_REACHED();
</span><span class="lines">@@ -104,22 +101,22 @@
</span><span class="cx"> IDBKeyData IDBKeyData::isolatedCopy() const
</span><span class="cx"> {
</span><span class="cx">     IDBKeyData result;
</span><del>-    result.type = type;
-    result.isNull = isNull;
</del><ins>+    result.m_type = m_type;
+    result.m_isNull = m_isNull;
</ins><span class="cx"> 
</span><del>-    switch (type) {
</del><ins>+    switch (m_type) {
</ins><span class="cx">     case KeyType::Invalid:
</span><span class="cx">         return result;
</span><span class="cx">     case KeyType::Array:
</span><del>-        for (auto&amp; key : arrayValue)
-            result.arrayValue.append(key.isolatedCopy());
</del><ins>+        for (auto&amp; key : m_arrayValue)
+            result.m_arrayValue.append(key.isolatedCopy());
</ins><span class="cx">         return result;
</span><span class="cx">     case KeyType::String:
</span><del>-        result.stringValue = stringValue.isolatedCopy();
</del><ins>+        result.m_stringValue = m_stringValue.isolatedCopy();
</ins><span class="cx">         return result;
</span><span class="cx">     case KeyType::Date:
</span><span class="cx">     case KeyType::Number:
</span><del>-        result.numberValue = numberValue;
</del><ins>+        result.m_numberValue = m_numberValue;
</ins><span class="cx">         return result;
</span><span class="cx">     case KeyType::Max:
</span><span class="cx">     case KeyType::Min:
</span><span class="lines">@@ -132,26 +129,26 @@
</span><span class="cx"> 
</span><span class="cx"> void IDBKeyData::encode(KeyedEncoder&amp; encoder) const
</span><span class="cx"> {
</span><del>-    encoder.encodeBool(&quot;null&quot;, isNull);
-    if (isNull)
</del><ins>+    encoder.encodeBool(&quot;null&quot;, m_isNull);
+    if (m_isNull)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    encoder.encodeEnum(&quot;type&quot;, type);
</del><ins>+    encoder.encodeEnum(&quot;m_type&quot;, m_type);
</ins><span class="cx"> 
</span><del>-    switch (type) {
</del><ins>+    switch (m_type) {
</ins><span class="cx">     case KeyType::Invalid:
</span><span class="cx">         return;
</span><span class="cx">     case KeyType::Array:
</span><del>-        encoder.encodeObjects(&quot;array&quot;, arrayValue.begin(), arrayValue.end(), [](KeyedEncoder&amp; encoder, const IDBKeyData&amp; key) {
</del><ins>+        encoder.encodeObjects(&quot;array&quot;, m_arrayValue.begin(), m_arrayValue.end(), [](KeyedEncoder&amp; encoder, const IDBKeyData&amp; key) {
</ins><span class="cx">             key.encode(encoder);
</span><span class="cx">         });
</span><span class="cx">         return;
</span><span class="cx">     case KeyType::String:
</span><del>-        encoder.encodeString(&quot;string&quot;, stringValue);
</del><ins>+        encoder.encodeString(&quot;string&quot;, m_stringValue);
</ins><span class="cx">         return;
</span><span class="cx">     case KeyType::Date:
</span><span class="cx">     case KeyType::Number:
</span><del>-        encoder.encodeDouble(&quot;number&quot;, numberValue);
</del><ins>+        encoder.encodeDouble(&quot;number&quot;, m_numberValue);
</ins><span class="cx">         return;
</span><span class="cx">     case KeyType::Max:
</span><span class="cx">     case KeyType::Min:
</span><span class="lines">@@ -163,10 +160,10 @@
</span><span class="cx"> 
</span><span class="cx"> bool IDBKeyData::decode(KeyedDecoder&amp; decoder, IDBKeyData&amp; result)
</span><span class="cx"> {
</span><del>-    if (!decoder.decodeBool(&quot;null&quot;, result.isNull))
</del><ins>+    if (!decoder.decodeBool(&quot;null&quot;, result.m_isNull))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (result.isNull)
</del><ins>+    if (result.m_isNull)
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     auto enumFunction = [](int64_t value) {
</span><span class="lines">@@ -178,71 +175,71 @@
</span><span class="cx">             || value == KeyType::Number
</span><span class="cx">             || value == KeyType::Min;
</span><span class="cx">     };
</span><del>-    if (!decoder.decodeEnum(&quot;type&quot;, result.type, enumFunction))
</del><ins>+    if (!decoder.decodeEnum(&quot;m_type&quot;, result.m_type, enumFunction))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (result.type == KeyType::Invalid)
</del><ins>+    if (result.m_type == KeyType::Invalid)
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    if (result.type == KeyType::Max)
</del><ins>+    if (result.m_type == KeyType::Max)
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    if (result.type == KeyType::Min)
</del><ins>+    if (result.m_type == KeyType::Min)
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    if (result.type == KeyType::String)
-        return decoder.decodeString(&quot;string&quot;, result.stringValue);
</del><ins>+    if (result.m_type == KeyType::String)
+        return decoder.decodeString(&quot;string&quot;, result.m_stringValue);
</ins><span class="cx"> 
</span><del>-    if (result.type == KeyType::Number || result.type == KeyType::Date)
-        return decoder.decodeDouble(&quot;number&quot;, result.numberValue);
</del><ins>+    if (result.m_type == KeyType::Number || result.m_type == KeyType::Date)
+        return decoder.decodeDouble(&quot;number&quot;, result.m_numberValue);
</ins><span class="cx"> 
</span><del>-    ASSERT(result.type == KeyType::Array);
</del><ins>+    ASSERT(result.m_type == KeyType::Array);
</ins><span class="cx"> 
</span><span class="cx">     auto arrayFunction = [](KeyedDecoder&amp; decoder, IDBKeyData&amp; result) {
</span><span class="cx">         return decode(decoder, result);
</span><span class="cx">     };
</span><span class="cx">     
</span><del>-    result.arrayValue.clear();
-    return decoder.decodeObjects(&quot;array&quot;, result.arrayValue, arrayFunction);
</del><ins>+    result.m_arrayValue.clear();
+    return decoder.decodeObjects(&quot;array&quot;, result.m_arrayValue, arrayFunction);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int IDBKeyData::compare(const IDBKeyData&amp; other) const
</span><span class="cx"> {
</span><del>-    if (type == KeyType::Invalid) {
-        if (other.type != KeyType::Invalid)
</del><ins>+    if (m_type == KeyType::Invalid) {
+        if (other.m_type != KeyType::Invalid)
</ins><span class="cx">             return -1;
</span><del>-        if (other.type == KeyType::Invalid)
</del><ins>+        if (other.m_type == KeyType::Invalid)
</ins><span class="cx">             return 0;
</span><del>-    } else if (other.type == KeyType::Invalid)
</del><ins>+    } else if (other.m_type == KeyType::Invalid)
</ins><span class="cx">         return 1;
</span><span class="cx"> 
</span><del>-    // The IDBKey::Type enum is in reverse sort order.
-    if (type != other.type)
-        return type &lt; other.type ? 1 : -1;
</del><ins>+    // The IDBKey::m_type enum is in reverse sort order.
+    if (m_type != other.m_type)
+        return m_type &lt; other.m_type ? 1 : -1;
</ins><span class="cx"> 
</span><span class="cx">     // The types are the same, so handle actual value comparison.
</span><del>-    switch (type) {
</del><ins>+    switch (m_type) {
</ins><span class="cx">     case KeyType::Invalid:
</span><del>-        // InvalidType should have been fully handled above
</del><ins>+        // Invalid type should have been fully handled above
</ins><span class="cx">         ASSERT_NOT_REACHED();
</span><span class="cx">         return 0;
</span><span class="cx">     case KeyType::Array:
</span><del>-        for (size_t i = 0; i &lt; arrayValue.size() &amp;&amp; i &lt; other.arrayValue.size(); ++i) {
-            if (int result = arrayValue[i].compare(other.arrayValue[i]))
</del><ins>+        for (size_t i = 0; i &lt; m_arrayValue.size() &amp;&amp; i &lt; other.m_arrayValue.size(); ++i) {
+            if (int result = m_arrayValue[i].compare(other.m_arrayValue[i]))
</ins><span class="cx">                 return result;
</span><span class="cx">         }
</span><del>-        if (arrayValue.size() &lt; other.arrayValue.size())
</del><ins>+        if (m_arrayValue.size() &lt; other.m_arrayValue.size())
</ins><span class="cx">             return -1;
</span><del>-        if (arrayValue.size() &gt; other.arrayValue.size())
</del><ins>+        if (m_arrayValue.size() &gt; other.m_arrayValue.size())
</ins><span class="cx">             return 1;
</span><span class="cx">         return 0;
</span><span class="cx">     case KeyType::String:
</span><del>-        return codePointCompare(stringValue, other.stringValue);
</del><ins>+        return codePointCompare(m_stringValue, other.m_stringValue);
</ins><span class="cx">     case KeyType::Date:
</span><span class="cx">     case KeyType::Number:
</span><del>-        if (numberValue == other.numberValue)
</del><ins>+        if (m_numberValue == other.m_numberValue)
</ins><span class="cx">             return 0;
</span><del>-        return numberValue &gt; other.numberValue ? 1 : -1;
</del><ins>+        return m_numberValue &gt; other.m_numberValue ? 1 : -1;
</ins><span class="cx">     case KeyType::Max:
</span><span class="cx">     case KeyType::Min:
</span><span class="cx">         return 0;
</span><span class="lines">@@ -255,30 +252,30 @@
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> String IDBKeyData::loggingString() const
</span><span class="cx"> {
</span><del>-    if (isNull)
</del><ins>+    if (m_isNull)
</ins><span class="cx">         return &quot;&lt;null&gt;&quot;;
</span><span class="cx"> 
</span><del>-    switch (type) {
</del><ins>+    switch (m_type) {
</ins><span class="cx">     case KeyType::Invalid:
</span><span class="cx">         return &quot;&lt;invalid&gt;&quot;;
</span><span class="cx">     case KeyType::Array:
</span><span class="cx">         {
</span><span class="cx">             StringBuilder result;
</span><span class="cx">             result.appendLiteral(&quot;&lt;array&gt; - { &quot;);
</span><del>-            for (size_t i = 0; i &lt; arrayValue.size(); ++i) {
-                result.append(arrayValue[i].loggingString());
-                if (i &lt; arrayValue.size() - 1)
</del><ins>+            for (size_t i = 0; i &lt; m_arrayValue.size(); ++i) {
+                result.append(m_arrayValue[i].loggingString());
+                if (i &lt; m_arrayValue.size() - 1)
</ins><span class="cx">                     result.appendLiteral(&quot;, &quot;);
</span><span class="cx">             }
</span><span class="cx">             result.appendLiteral(&quot; }&quot;);
</span><span class="cx">             return result.toString();
</span><span class="cx">         }
</span><span class="cx">     case KeyType::String:
</span><del>-        return &quot;&lt;string&gt; - &quot; + stringValue;
</del><ins>+        return &quot;&lt;string&gt; - &quot; + m_stringValue;
</ins><span class="cx">     case KeyType::Date:
</span><del>-        return String::format(&quot;Date type - %f&quot;, numberValue);
</del><ins>+        return String::format(&quot;Date m_type - %f&quot;, m_numberValue);
</ins><span class="cx">     case KeyType::Number:
</span><del>-        return String::format(&quot;&lt;number&gt; - %f&quot;, numberValue);
</del><ins>+        return String::format(&quot;&lt;number&gt; - %f&quot;, m_numberValue);
</ins><span class="cx">     case KeyType::Max:
</span><span class="cx">         return &quot;&lt;maximum&gt;&quot;;
</span><span class="cx">     case KeyType::Min:
</span><span class="lines">@@ -293,33 +290,33 @@
</span><span class="cx"> void IDBKeyData::setArrayValue(const Vector&lt;IDBKeyData&gt;&amp; value)
</span><span class="cx"> {
</span><span class="cx">     *this = IDBKeyData();
</span><del>-    arrayValue = value;
-    type = KeyType::Array;
-    isNull = false;
</del><ins>+    m_arrayValue = value;
+    m_type = KeyType::Array;
+    m_isNull = false;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void IDBKeyData::setStringValue(const String&amp; value)
</span><span class="cx"> {
</span><span class="cx">     *this = IDBKeyData();
</span><del>-    stringValue = value;
-    type = KeyType::String;
-    isNull = false;
</del><ins>+    m_stringValue = value;
+    m_type = KeyType::String;
+    m_isNull = false;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void IDBKeyData::setDateValue(double value)
</span><span class="cx"> {
</span><span class="cx">     *this = IDBKeyData();
</span><del>-    numberValue = value;
-    type = KeyType::Date;
-    isNull = false;
</del><ins>+    m_numberValue = value;
+    m_type = KeyType::Date;
+    m_isNull = false;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void IDBKeyData::setNumberValue(double value)
</span><span class="cx"> {
</span><span class="cx">     *this = IDBKeyData();
</span><del>-    numberValue = value;
-    type = KeyType::Number;
-    isNull = false;
</del><ins>+    m_numberValue = value;
+    m_type = KeyType::Number;
+    m_isNull = false;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBKeyDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBKeyData.h (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBKeyData.h        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBKeyData.h        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -35,11 +35,11 @@
</span><span class="cx"> class KeyedDecoder;
</span><span class="cx"> class KeyedEncoder;
</span><span class="cx"> 
</span><del>-struct IDBKeyData {
</del><ins>+class IDBKeyData {
+public:
</ins><span class="cx">     IDBKeyData()
</span><del>-        : type(KeyType::Invalid)
-        , numberValue(0)
-        , isNull(true)
</del><ins>+        : m_type(KeyType::Invalid)
+        , m_isNull(true)
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -48,16 +48,16 @@
</span><span class="cx">     static IDBKeyData minimum()
</span><span class="cx">     {
</span><span class="cx">         IDBKeyData result;
</span><del>-        result.type = KeyType::Min;
-        result.isNull = false;
</del><ins>+        result.m_type = KeyType::Min;
+        result.m_isNull = false;
</ins><span class="cx">         return result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     static IDBKeyData maximum()
</span><span class="cx">     {
</span><span class="cx">         IDBKeyData result;
</span><del>-        result.type = KeyType::Max;
-        result.isNull = false;
</del><ins>+        result.m_type = KeyType::Max;
+        result.m_isNull = false;
</ins><span class="cx">         return result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -86,34 +86,38 @@
</span><span class="cx">     WEBCORE_EXPORT String loggingString() const;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    KeyType type;
-    Vector&lt;IDBKeyData&gt; arrayValue;
-    String stringValue;
-    double numberValue;
-    bool isNull;
</del><ins>+    bool isNull() const { return m_isNull; }
+    KeyType type() const { return m_type; }
+
+private:
+    KeyType m_type;
+    Vector&lt;IDBKeyData&gt; m_arrayValue;
+    String m_stringValue;
+    double m_numberValue { 0 };
+    bool m_isNull { false };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> template&lt;class Encoder&gt;
</span><span class="cx"> void IDBKeyData::encode(Encoder&amp; encoder) const
</span><span class="cx"> {
</span><del>-    encoder &lt;&lt; isNull;
-    if (isNull)
</del><ins>+    encoder &lt;&lt; m_isNull;
+    if (m_isNull)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    encoder.encodeEnum(type);
</del><ins>+    encoder.encodeEnum(m_type);
</ins><span class="cx"> 
</span><del>-    switch (type) {
</del><ins>+    switch (m_type) {
</ins><span class="cx">     case KeyType::Invalid:
</span><span class="cx">         break;
</span><span class="cx">     case KeyType::Array:
</span><del>-        encoder &lt;&lt; arrayValue;
</del><ins>+        encoder &lt;&lt; m_arrayValue;
</ins><span class="cx">         break;
</span><span class="cx">     case KeyType::String:
</span><del>-        encoder &lt;&lt; stringValue;
</del><ins>+        encoder &lt;&lt; m_stringValue;
</ins><span class="cx">         break;
</span><span class="cx">     case KeyType::Date:
</span><span class="cx">     case KeyType::Number:
</span><del>-        encoder &lt;&lt; numberValue;
</del><ins>+        encoder &lt;&lt; m_numberValue;
</ins><span class="cx">         break;
</span><span class="cx">     case KeyType::Max:
</span><span class="cx">     case KeyType::Min:
</span><span class="lines">@@ -127,29 +131,29 @@
</span><span class="cx"> template&lt;class Decoder&gt;
</span><span class="cx"> bool IDBKeyData::decode(Decoder&amp; decoder, IDBKeyData&amp; keyData)
</span><span class="cx"> {
</span><del>-    if (!decoder.decode(keyData.isNull))
</del><ins>+    if (!decoder.decode(keyData.m_isNull))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (keyData.isNull)
</del><ins>+    if (keyData.m_isNull)
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    if (!decoder.decodeEnum(keyData.type))
</del><ins>+    if (!decoder.decodeEnum(keyData.m_type))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    switch (keyData.type) {
</del><ins>+    switch (keyData.m_type) {
</ins><span class="cx">     case KeyType::Invalid:
</span><span class="cx">         break;
</span><span class="cx">     case KeyType::Array:
</span><del>-        if (!decoder.decode(keyData.arrayValue))
</del><ins>+        if (!decoder.decode(keyData.m_arrayValue))
</ins><span class="cx">             return false;
</span><span class="cx">         break;
</span><span class="cx">     case KeyType::String:
</span><del>-        if (!decoder.decode(keyData.stringValue))
</del><ins>+        if (!decoder.decode(keyData.m_stringValue))
</ins><span class="cx">             return false;
</span><span class="cx">         break;
</span><span class="cx">     case KeyType::Date:
</span><span class="cx">     case KeyType::Number:
</span><del>-        if (!decoder.decode(keyData.numberValue))
</del><ins>+        if (!decoder.decode(keyData.m_numberValue))
</ins><span class="cx">             return false;
</span><span class="cx">         break;
</span><span class="cx">     case KeyType::Max:
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddblegacyIDBTransactionBackendOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/legacy/IDBTransactionBackendOperations.cpp (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/legacy/IDBTransactionBackendOperations.cpp        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebCore/Modules/indexeddb/legacy/IDBTransactionBackendOperations.cpp        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -101,12 +101,12 @@
</span><span class="cx">             m_callbacks-&gt;onError(error);
</span><span class="cx">         else {
</span><span class="cx">             if (!result.valueBuffer) {
</span><del>-                if (result.keyData.isNull)
</del><ins>+                if (result.keyData.isNull())
</ins><span class="cx">                     m_callbacks-&gt;onSuccess();
</span><span class="cx">                 else
</span><span class="cx">                     m_callbacks-&gt;onSuccess(result.keyData.maybeCreateIDBKey());
</span><span class="cx">             } else {
</span><del>-                if (!result.keyData.isNull)
</del><ins>+                if (!result.keyData.isNull())
</ins><span class="cx">                     m_callbacks-&gt;onSuccess(result.valueBuffer, result.keyData.maybeCreateIDBKey(), result.keyPath);
</span><span class="cx">                 else
</span><span class="cx">                     m_callbacks-&gt;onSuccess(result.valueBuffer.get());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsIDBBindingUtilitiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/IDBBindingUtilities.h (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/IDBBindingUtilities.h        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebCore/bindings/js/IDBBindingUtilities.h        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> class SharedBuffer;
</span><span class="cx"> 
</span><span class="cx"> struct IDBIndexMetadata;
</span><del>-struct IDBKeyData;
</del><ins>+class IDBKeyData;
</ins><span class="cx"> 
</span><span class="cx"> IDBKeyPath idbKeyPathFromValue(JSC::ExecState*, JSC::JSValue);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformCrossThreadCopierh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/CrossThreadCopier.h (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/CrossThreadCopier.h        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebCore/platform/CrossThreadCopier.h        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -173,7 +173,7 @@
</span><span class="cx">         static Type copy(const IDBIndexMetadata&amp;);
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    struct IDBKeyData;
</del><ins>+    class IDBKeyData;
</ins><span class="cx">     template&lt;&gt; struct WEBCORE_EXPORT CrossThreadCopierBase&lt;false, false, IDBKeyData&gt; {
</span><span class="cx">         typedef IDBKeyData Type;
</span><span class="cx">         static Type copy(const IDBKeyData&amp;);
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/ChangeLog        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -1,3 +1,31 @@
</span><ins>+2015-10-26  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Make IDBKeyData from a struct to a class.
+        https://bugs.webkit.org/show_bug.cgi?id=150576
+
+        Reviewed by Alex Christensen.
+
+        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
+        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:
+        * DatabaseProcess/IndexedDB/IDBSerialization.h:
+        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
+        (WebKit::UniqueIDBDatabase::putRecordInBackingStore):
+        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:
+        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
+        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
+        (WebKit::buildIndexStatement):
+        (WebKit::buildObjectStoreStatement):
+        (WebKit::SQLiteIDBCursor::establishStatement):
+        (WebKit::SQLiteIDBCursor::createSQLiteStatement):
+        (WebKit::SQLiteIDBCursor::resetAndRebindStatement):
+        (WebKit::SQLiteIDBCursor::iterate):
+        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
+        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createIndex):
+        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
+        (WebKit::WebIDBServerConnection::didPutRecord):
+        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
+        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:
+
</ins><span class="cx"> 2015-10-26  Philip Chimento  &lt;philip.chimento@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] [Stable] InstallMissingMediaPluginsPermissionRequest not defined when building without GStreamer
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBDatabaseProcessIDBConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><del>-struct IDBKeyData;
</del><ins>+class IDBKeyData;
</ins><span class="cx"> struct IDBKeyRangeData;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBDatabaseProcessIDBConnectionmessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -43,12 +43,12 @@
</span><span class="cx">     CreateIndex(uint64_t requestID, int64_t transactionID, int64_t objectStoreID, struct WebCore::IDBIndexMetadata indexMetadata)
</span><span class="cx">     DeleteIndex(uint64_t requestID, int64_t transactionID, int64_t objectStoreID, int64_t indexID)
</span><span class="cx"> 
</span><del>-    PutRecord(uint64_t requestID, int64_t transactionID, int64_t objectStoreID, struct WebCore::IDBKeyData key, IPC::DataReference value, int64_t putMode, Vector&lt;int64_t&gt; indexIDs, Vector&lt;Vector&lt;WebCore::IDBKeyData&gt;&gt; indexKeys)
</del><ins>+    PutRecord(uint64_t requestID, int64_t transactionID, int64_t objectStoreID, WebCore::IDBKeyData key, IPC::DataReference value, int64_t putMode, Vector&lt;int64_t&gt; indexIDs, Vector&lt;Vector&lt;WebCore::IDBKeyData&gt;&gt; indexKeys)
</ins><span class="cx">     GetRecord(uint64_t requestID, int64_t transactionID, int64_t objectStoreID, int64_t indexID, struct WebCore::IDBKeyRangeData keyRange, int64_t cursorType)
</span><span class="cx">     
</span><span class="cx">     OpenCursor(uint64_t requestID, int64_t transactionID, int64_t objectStoreID, int64_t indexID, int64_t cursorDirection, int64_t cursorType, int64_t taskType, struct WebCore::IDBKeyRangeData keyRange)
</span><span class="cx">     CursorAdvance(uint64_t requestID, int64_t cursorID, uint64_t count)
</span><del>-    CursorIterate(uint64_t requestID, int64_t cursorID, struct WebCore::IDBKeyData key)
</del><ins>+    CursorIterate(uint64_t requestID, int64_t cursorID, WebCore::IDBKeyData key)
</ins><span class="cx">     
</span><span class="cx">     Count(uint64_t requestID, int64_t transactionID, int64_t objectStoreID, int64_t indexID, struct WebCore::IDBKeyRangeData keyRange)
</span><span class="cx">     DeleteRange(uint64_t requestID, int64_t transactionID, int64_t objectStoreID, struct WebCore::IDBKeyRangeData keyRange)
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBIDBSerializationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.h (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.h        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.h        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -32,9 +32,8 @@
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><ins>+class IDBKeyData;
</ins><span class="cx"> class IDBKeyPath;
</span><del>-
-struct IDBKeyData;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -829,7 +829,7 @@
</span><span class="cx">     IDBKeyData key;
</span><span class="cx">     int64_t keyNumber = 0;
</span><span class="cx"> 
</span><del>-    if (putMode != IDBDatabaseBackend::CursorUpdate &amp;&amp; objectStoreMetadata.autoIncrement &amp;&amp; inputKeyData.isNull) {
</del><ins>+    if (putMode != IDBDatabaseBackend::CursorUpdate &amp;&amp; objectStoreMetadata.autoIncrement &amp;&amp; inputKeyData.isNull()) {
</ins><span class="cx">         if (!m_backingStore-&gt;generateKeyNumber(transaction, objectStoreMetadata.id, keyNumber)) {
</span><span class="cx">             postMainThreadTask(createCrossThreadTask(*this, &amp;UniqueIDBDatabase::didPutRecordInBackingStore, requestID, IDBKeyData(), IDBDatabaseException::UnknownError, ASCIILiteral(&quot;Internal backing store error checking for key existence&quot;)));
</span><span class="cx">             return;
</span><span class="lines">@@ -875,7 +875,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_backingStore-&gt;notifyCursorsOfChanges(transaction, objectStoreMetadata.id);
</span><span class="cx"> 
</span><del>-    if (putMode != IDBDatabaseBackend::CursorUpdate &amp;&amp; objectStoreMetadata.autoIncrement &amp;&amp; key.type == KeyType::Number) {
</del><ins>+    if (putMode != IDBDatabaseBackend::CursorUpdate &amp;&amp; objectStoreMetadata.autoIncrement &amp;&amp; key.type() == KeyType::Number) {
</ins><span class="cx">         if (!m_backingStore-&gt;updateKeyGeneratorNumber(transaction, objectStoreMetadata.id, keyNumber, keyWasGenerated)) {
</span><span class="cx">             postMainThreadTask(createCrossThreadTask(*this, &amp;UniqueIDBDatabase::didPutRecordInBackingStore, requestID, IDBKeyData(), IDBDatabaseException::UnknownError, ASCIILiteral(&quot;Internal backing store error updating key generator&quot;)));
</span><span class="cx">             return;
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -46,11 +46,11 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> class CrossThreadTask;
</span><ins>+class IDBKeyData;
</ins><span class="cx"> class SharedBuffer;
</span><span class="cx"> 
</span><span class="cx"> struct IDBDatabaseMetadata;
</span><span class="cx"> struct IDBGetResult;
</span><del>-struct IDBKeyData;
</del><span class="cx"> struct IDBKeyRangeData;
</span><span class="cx"> struct SecurityOriginData;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBUniqueIDBDatabaseBackingStoreh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -33,12 +33,12 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> class IDBKey;
</span><ins>+class IDBKeyData;
</ins><span class="cx"> class IDBKeyRange;
</span><span class="cx"> class SharedBuffer;
</span><span class="cx"> 
</span><span class="cx"> struct IDBDatabaseMetadata;
</span><span class="cx"> struct IDBGetResult;
</span><del>-struct IDBKeyData;
</del><span class="cx"> struct IDBObjectStoreMetadata;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBsqliteSQLiteIDBCursorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -72,13 +72,13 @@
</span><span class="cx">     StringBuilder builder;
</span><span class="cx"> 
</span><span class="cx">     builder.appendLiteral(&quot;SELECT rowid, key, value FROM IndexRecords WHERE indexID = ? AND key &quot;);
</span><del>-    if (!keyRange.lowerKey.isNull &amp;&amp; !keyRange.lowerOpen)
</del><ins>+    if (!keyRange.lowerKey.isNull() &amp;&amp; !keyRange.lowerOpen)
</ins><span class="cx">         builder.appendLiteral(&quot;&gt;=&quot;);
</span><span class="cx">     else
</span><span class="cx">         builder.append('&gt;');
</span><span class="cx"> 
</span><span class="cx">     builder.appendLiteral(&quot; CAST(? AS TEXT) AND key &quot;);
</span><del>-    if (!keyRange.upperKey.isNull &amp;&amp; !keyRange.upperOpen)
</del><ins>+    if (!keyRange.upperKey.isNull() &amp;&amp; !keyRange.upperOpen)
</ins><span class="cx">         builder.appendLiteral(&quot;&lt;=&quot;);
</span><span class="cx">     else
</span><span class="cx">         builder.append('&lt;');
</span><span class="lines">@@ -102,14 +102,14 @@
</span><span class="cx"> 
</span><span class="cx">     builder.appendLiteral(&quot;SELECT rowid, key, value FROM Records WHERE objectStoreID = ? AND key &quot;);
</span><span class="cx"> 
</span><del>-    if (!keyRange.lowerKey.isNull &amp;&amp; !keyRange.lowerOpen)
</del><ins>+    if (!keyRange.lowerKey.isNull() &amp;&amp; !keyRange.lowerOpen)
</ins><span class="cx">         builder.appendLiteral(&quot;&gt;=&quot;);
</span><span class="cx">     else
</span><span class="cx">         builder.append('&gt;');
</span><span class="cx"> 
</span><span class="cx">     builder.appendLiteral(&quot; CAST(? AS TEXT) AND key &quot;);
</span><span class="cx"> 
</span><del>-    if (!keyRange.upperKey.isNull &amp;&amp; !keyRange.upperOpen)
</del><ins>+    if (!keyRange.upperKey.isNull() &amp;&amp; !keyRange.upperOpen)
</ins><span class="cx">         builder.appendLiteral(&quot;&lt;=&quot;);
</span><span class="cx">     else
</span><span class="cx">         builder.append('&lt;');
</span><span class="lines">@@ -137,8 +137,8 @@
</span><span class="cx">         m_boundID = m_objectStoreID;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    m_currentLowerKey = m_keyRange.lowerKey.isNull ? IDBKeyData::minimum() : m_keyRange.lowerKey;
-    m_currentUpperKey = m_keyRange.upperKey.isNull ? IDBKeyData::maximum() : m_keyRange.upperKey;
</del><ins>+    m_currentLowerKey = m_keyRange.lowerKey.isNull() ? IDBKeyData::minimum() : m_keyRange.lowerKey;
+    m_currentUpperKey = m_keyRange.upperKey.isNull() ? IDBKeyData::maximum() : m_keyRange.upperKey;
</ins><span class="cx"> 
</span><span class="cx">     return createSQLiteStatement(sql);
</span><span class="cx"> }
</span><span class="lines">@@ -147,8 +147,8 @@
</span><span class="cx"> {
</span><span class="cx">     LOG(IDB, &quot;Creating cursor with SQL query: \&quot;%s\&quot;&quot;, sql.utf8().data());
</span><span class="cx"> 
</span><del>-    ASSERT(!m_currentLowerKey.isNull);
-    ASSERT(!m_currentUpperKey.isNull);
</del><ins>+    ASSERT(!m_currentLowerKey.isNull());
+    ASSERT(!m_currentUpperKey.isNull());
</ins><span class="cx">     ASSERT(m_transaction-&gt;sqliteTransaction());
</span><span class="cx"> 
</span><span class="cx">     m_statement = std::make_unique&lt;SQLiteStatement&gt;(m_transaction-&gt;sqliteTransaction()-&gt;database(), sql);
</span><span class="lines">@@ -171,8 +171,8 @@
</span><span class="cx"> 
</span><span class="cx"> void SQLiteIDBCursor::resetAndRebindStatement()
</span><span class="cx"> {
</span><del>-    ASSERT(!m_currentLowerKey.isNull);
-    ASSERT(!m_currentUpperKey.isNull);
</del><ins>+    ASSERT(!m_currentLowerKey.isNull());
+    ASSERT(!m_currentUpperKey.isNull());
</ins><span class="cx">     ASSERT(m_transaction-&gt;sqliteTransaction());
</span><span class="cx">     ASSERT(m_statement);
</span><span class="cx">     ASSERT(m_statementNeedsReset);
</span><span class="lines">@@ -180,7 +180,7 @@
</span><span class="cx">     m_statementNeedsReset = false;
</span><span class="cx"> 
</span><span class="cx">     // If this cursor never fetched any records, we don't need to reset the statement.
</span><del>-    if (m_currentKey.isNull)
</del><ins>+    if (m_currentKey.isNull())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // Otherwise update the lower key or upper key used for the cursor range.
</span><span class="lines">@@ -368,7 +368,7 @@
</span><span class="cx">     bool result = advance(1);
</span><span class="cx"> 
</span><span class="cx">     // Iterating with no key is equivalent to advancing 1 step.
</span><del>-    if (targetKey.isNull || !result)
</del><ins>+    if (targetKey.isNull() || !result)
</ins><span class="cx">         return result;
</span><span class="cx"> 
</span><span class="cx">     while (!m_completed) {
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBsqliteUniqueIDBDatabaseBackingStoreSQLitecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -762,7 +762,7 @@
</span><span class="cx">     m_cursors.set(cursor-&gt;identifier(), cursor);
</span><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;JSLockHolder&gt; locker;
</span><del>-    while (!cursor-&gt;currentKey().isNull) {
</del><ins>+    while (!cursor-&gt;currentKey().isNull()) {
</ins><span class="cx">         const IDBKeyData&amp; key = cursor-&gt;currentKey();
</span><span class="cx">         const Vector&lt;uint8_t&gt;&amp; valueBuffer = cursor-&gt;currentValueBuffer();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessDatabasesIndexedDBWebIDBServerConnectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -454,7 +454,7 @@
</span><span class="cx">     if (!serverRequest)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    serverRequest-&gt;completeRequest(resultKey.isNull ? nullptr : resultKey.maybeCreateIDBKey(), errorCode ? IDBDatabaseError::create(errorCode, errorMessage) : nullptr);
</del><ins>+    serverRequest-&gt;completeRequest(resultKey.isNull() ? nullptr : resultKey.maybeCreateIDBKey(), errorCode ? IDBDatabaseError::create(errorCode, errorMessage) : nullptr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebIDBServerConnection::didGetRecord(uint64_t requestID, const WebCore::IDBGetResult&amp; getResult, uint32_t errorCode, const String&amp; errorMessage)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessDatabasesIndexedDBWebIDBServerConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> #include &lt;WebCore/IDBServerConnection.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><del>-struct IDBKeyData;
</del><ins>+class IDBKeyData;
</ins><span class="cx"> class SecurityOrigin;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessDatabasesIndexedDBWebIDBServerConnectionmessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in (191619 => 191620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in        2015-10-27 05:16:17 UTC (rev 191619)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in        2015-10-27 05:22:55 UTC (rev 191620)
</span><span class="lines">@@ -40,11 +40,11 @@
</span><span class="cx">     DidCreateIndex(uint64_t requestID, bool success)
</span><span class="cx">     DidDeleteIndex(uint64_t requestID, bool success)
</span><span class="cx"> 
</span><del>-    DidPutRecord(uint64_t requestID, struct WebCore::IDBKeyData resultKey, uint32_t errorCode, String errorMessage)
</del><ins>+    DidPutRecord(uint64_t requestID, WebCore::IDBKeyData resultKey, uint32_t errorCode, String errorMessage)
</ins><span class="cx">     DidGetRecord(uint64_t requestID, struct WebCore::IDBGetResult getResult, uint32_t errorCode, String errorMessage)
</span><del>-    DidOpenCursor(uint64_t requestID, int64_t cursorID, struct WebCore::IDBKeyData key, struct WebCore::IDBKeyData primaryKey, IPC::DataReference value, uint32_t errorCode, String errorMessage)
-    DidAdvanceCursor(uint64_t requestID, struct WebCore::IDBKeyData key, struct WebCore::IDBKeyData primaryKey, IPC::DataReference value, uint32_t errorCode, String errorMessage)
-    DidIterateCursor(uint64_t requestID, struct WebCore::IDBKeyData key, struct WebCore::IDBKeyData primaryKey, IPC::DataReference value, uint32_t errorCode, String errorMessage)
</del><ins>+    DidOpenCursor(uint64_t requestID, int64_t cursorID, WebCore::IDBKeyData key, WebCore::IDBKeyData primaryKey, IPC::DataReference value, uint32_t errorCode, String errorMessage)
+    DidAdvanceCursor(uint64_t requestID, WebCore::IDBKeyData key, WebCore::IDBKeyData primaryKey, IPC::DataReference value, uint32_t errorCode, String errorMessage)
+    DidIterateCursor(uint64_t requestID, WebCore::IDBKeyData key, WebCore::IDBKeyData primaryKey, IPC::DataReference value, uint32_t errorCode, String errorMessage)
</ins><span class="cx">     DidCount(uint64_t requestID, int64_t count, uint32_t errorCode, String errorMessage)
</span><span class="cx">     DidDeleteRange(uint64_t requestID, uint32_t errorCode, String errorMessage)
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>