- Revision
- 199248
- Author
- beid...@apple.com
- Date
- 2016-04-08 14:11:37 -0700 (Fri, 08 Apr 2016)
Log Message
Modern IDB: Make IDBGetResult contain an IDBValue instead of a buffer, and remove unused methods.
https://bugs.webkit.org/show_bug.cgi?id=156416
Reviewed by Alex Christensen.
No new tests (Refactor, no change in behavior).
* Modules/indexeddb/IDBCursor.cpp:
(WebCore::IDBCursor::setGetResult):
* Modules/indexeddb/IDBGetResult.cpp:
(WebCore::IDBGetResult::dataFromBuffer):
(WebCore::IDBGetResult::isolatedCopy):
* Modules/indexeddb/IDBGetResult.h:
(WebCore::IDBGetResult::IDBGetResult):
(WebCore::IDBGetResult::value):
(WebCore::IDBGetResult::encode):
(WebCore::IDBGetResult::decode):
(WebCore::IDBGetResult::valueBuffer): Deleted.
(WebCore::IDBGetResult::setValueBuffer): Deleted.
(WebCore::IDBGetResult::setKeyData): Deleted.
(WebCore::IDBGetResult::setPrimaryKeyData): Deleted.
(WebCore::IDBGetResult::setKeyPath): Deleted.
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::didGetRecordOnServer):
* Modules/indexeddb/IDBValue.cpp:
(WebCore::IDBValue::IDBValue):
* Modules/indexeddb/IDBValue.h:
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (199247 => 199248)
--- trunk/Source/WebCore/ChangeLog 2016-04-08 21:01:50 UTC (rev 199247)
+++ trunk/Source/WebCore/ChangeLog 2016-04-08 21:11:37 UTC (rev 199248)
@@ -1,3 +1,39 @@
+2016-04-08 Brady Eidson <beid...@apple.com>
+
+ Modern IDB: Make IDBGetResult contain an IDBValue instead of a buffer, and remove unused methods.
+ https://bugs.webkit.org/show_bug.cgi?id=156416
+
+ Reviewed by Alex Christensen.
+
+ No new tests (Refactor, no change in behavior).
+
+ * Modules/indexeddb/IDBCursor.cpp:
+ (WebCore::IDBCursor::setGetResult):
+
+ * Modules/indexeddb/IDBGetResult.cpp:
+ (WebCore::IDBGetResult::dataFromBuffer):
+ (WebCore::IDBGetResult::isolatedCopy):
+ * Modules/indexeddb/IDBGetResult.h:
+ (WebCore::IDBGetResult::IDBGetResult):
+ (WebCore::IDBGetResult::value):
+ (WebCore::IDBGetResult::encode):
+ (WebCore::IDBGetResult::decode):
+ (WebCore::IDBGetResult::valueBuffer): Deleted.
+ (WebCore::IDBGetResult::setValueBuffer): Deleted.
+ (WebCore::IDBGetResult::setKeyData): Deleted.
+ (WebCore::IDBGetResult::setPrimaryKeyData): Deleted.
+ (WebCore::IDBGetResult::setKeyPath): Deleted.
+
+ * Modules/indexeddb/IDBTransaction.cpp:
+ (WebCore::IDBTransaction::didGetRecordOnServer):
+
+ * Modules/indexeddb/IDBValue.cpp:
+ (WebCore::IDBValue::IDBValue):
+ * Modules/indexeddb/IDBValue.h:
+
+ * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
+ (WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
+
2016-04-08 Zalan Bujtas <za...@apple.com>
Focus ring drawn at incorrect location on image map with CSS transform.
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBCursor.cpp (199247 => 199248)
--- trunk/Source/WebCore/Modules/indexeddb/IDBCursor.cpp 2016-04-08 21:01:50 UTC (rev 199247)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBCursor.cpp 2016-04-08 21:11:37 UTC (rev 199248)
@@ -418,7 +418,7 @@
if (isKeyCursor())
m_deprecatedCurrentValue = { };
else
- m_deprecatedCurrentValue = deserializeIDBValueData(*context, getResult.valueBuffer());
+ m_deprecatedCurrentValue = deserializeIDBValueData(*context, getResult.value().data());
m_gotValue = true;
}
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBGetResult.cpp (199247 => 199248)
--- trunk/Source/WebCore/Modules/indexeddb/IDBGetResult.cpp 2016-04-08 21:01:50 UTC (rev 199247)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBGetResult.cpp 2016-04-08 21:11:37 UTC (rev 199248)
@@ -35,13 +35,13 @@
Vector<uint8_t> data(buffer.size());
memcpy(data.data(), buffer.data(), buffer.size());
- m_valueBuffer = ThreadSafeDataBuffer::adoptVector(data);
+ m_value = ThreadSafeDataBuffer::adoptVector(data);
}
IDBGetResult IDBGetResult::isolatedCopy() const
{
IDBGetResult result;
- result.m_valueBuffer = m_valueBuffer;
+ result.m_value = m_value.isolatedCopy();
result.m_keyData = m_keyData.isolatedCopy();
result.m_primaryKeyData = m_primaryKeyData.isolatedCopy();
result.m_keyPath = m_keyPath.isolatedCopy();
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBGetResult.h (199247 => 199248)
--- trunk/Source/WebCore/Modules/indexeddb/IDBGetResult.h 2016-04-08 21:01:50 UTC (rev 199247)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBGetResult.h 2016-04-08 21:11:37 UTC (rev 199248)
@@ -31,8 +31,8 @@
#include "IDBKey.h"
#include "IDBKeyData.h"
#include "IDBKeyPath.h"
+#include "IDBValue.h"
#include "SharedBuffer.h"
-#include "ThreadSafeDataBuffer.h"
namespace WebCore {
@@ -43,14 +43,14 @@
{
}
- IDBGetResult(SharedBuffer* buffer)
+ IDBGetResult(Ref<SharedBuffer>&& buffer, const IDBKeyData& currentPrimaryKey)
+ : m_primaryKeyData(currentPrimaryKey)
{
- if (buffer)
- dataFromBuffer(*buffer);
+ dataFromBuffer(buffer.get());
}
IDBGetResult(const ThreadSafeDataBuffer& buffer)
- : m_valueBuffer(buffer)
+ : m_value(buffer)
{
}
@@ -79,7 +79,7 @@
}
IDBGetResult(const IDBKeyData& keyData, const IDBKeyData& primaryKeyData, const ThreadSafeDataBuffer& valueBuffer)
- : m_valueBuffer(valueBuffer)
+ : m_value(valueBuffer)
, m_keyData(keyData)
, m_primaryKeyData(primaryKeyData)
{
@@ -87,7 +87,7 @@
IDBGetResult isolatedCopy() const;
- const ThreadSafeDataBuffer& valueBuffer() const { return m_valueBuffer; }
+ const IDBValue& value() const { return m_value; }
const IDBKeyData& keyData() const { return m_keyData; }
const IDBKeyData& primaryKeyData() const { return m_primaryKeyData; }
const IDBKeyPath& keyPath() const { return m_keyPath; }
@@ -96,18 +96,10 @@
template<class Encoder> void encode(Encoder&) const;
template<class Decoder> static bool decode(Decoder&, IDBGetResult&);
- // FIXME: When removing LegacyIDB, remove these setters.
- // https://bugs.webkit.org/show_bug.cgi?id=150854
-
- void setValueBuffer(const ThreadSafeDataBuffer& valueBuffer) { m_valueBuffer = valueBuffer; }
- void setKeyData(const IDBKeyData& keyData) { m_keyData = keyData; }
- void setPrimaryKeyData(const IDBKeyData& keyData) { m_primaryKeyData = keyData; }
- void setKeyPath(const IDBKeyPath& keyPath) { m_keyPath = keyPath; }
-
private:
WEBCORE_EXPORT void dataFromBuffer(SharedBuffer&);
- ThreadSafeDataBuffer m_valueBuffer;
+ IDBValue m_value;
IDBKeyData m_keyData;
IDBKeyData m_primaryKeyData;
IDBKeyPath m_keyPath;
@@ -117,11 +109,7 @@
template<class Encoder>
void IDBGetResult::encode(Encoder& encoder) const
{
- encoder << m_keyData << m_primaryKeyData << m_keyPath << m_isDefined;
-
- encoder << !!m_valueBuffer.data();
- if (m_valueBuffer.data())
- encoder << *m_valueBuffer.data();
+ encoder << m_keyData << m_primaryKeyData << m_keyPath << m_isDefined << m_value;
}
template<class Decoder>
@@ -139,17 +127,9 @@
if (!decoder.decode(result.m_isDefined))
return false;
- bool hasObject;
- if (!decoder.decode(hasObject))
+ if (!decoder.decode(result.m_value))
return false;
- if (hasObject) {
- Vector<uint8_t> value;
- if (!decoder.decode(value))
- return false;
- result.m_valueBuffer = ThreadSafeDataBuffer::adoptVector(value);
- }
-
return true;
}
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp (199247 => 199248)
--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp 2016-04-08 21:01:50 UTC (rev 199247)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp 2016-04-08 21:11:37 UTC (rev 199248)
@@ -737,8 +737,8 @@
else
request.setResultToUndefined();
} else {
- if (resultData.getResult().valueBuffer().data())
- request.setResultToStructuredClone(resultData.getResult().valueBuffer());
+ if (resultData.getResult().value().data().data())
+ request.setResultToStructuredClone(resultData.getResult().value().data());
else
request.setResultToUndefined();
}
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBValue.cpp (199247 => 199248)
--- trunk/Source/WebCore/Modules/indexeddb/IDBValue.cpp 2016-04-08 21:01:50 UTC (rev 199247)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBValue.cpp 2016-04-08 21:11:37 UTC (rev 199248)
@@ -42,6 +42,11 @@
{
}
+IDBValue::IDBValue(const ThreadSafeDataBuffer& value)
+ : m_data(value)
+{
+}
+
IDBValue::IDBValue(const SerializedScriptValue& scriptValue, const Vector<String>& blobURLs, const Vector<String>& blobFilePaths)
: m_data(ThreadSafeDataBuffer::copyVector(scriptValue.data()))
, m_blobURLs(blobURLs)
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBValue.h (199247 => 199248)
--- trunk/Source/WebCore/Modules/indexeddb/IDBValue.h 2016-04-08 21:01:50 UTC (rev 199247)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBValue.h 2016-04-08 21:11:37 UTC (rev 199248)
@@ -37,6 +37,7 @@
public:
WEBCORE_EXPORT IDBValue();
IDBValue(const SerializedScriptValue&);
+ IDBValue(const ThreadSafeDataBuffer&);
IDBValue(const SerializedScriptValue&, const Vector<String>& blobURLs, const Vector<String>& blobFilePaths);
IDBValue isolatedCopy() const;
Modified: trunk/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp (199247 => 199248)
--- trunk/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp 2016-04-08 21:01:50 UTC (rev 199247)
+++ trunk/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp 2016-04-08 21:11:37 UTC (rev 199248)
@@ -1630,10 +1630,8 @@
else {
if (type == IndexedDB::IndexRecordType::Key)
getResult = { cursor->currentPrimaryKey() };
- else {
- getResult = { SharedBuffer::create(cursor->currentValueBuffer().data(), cursor->currentValueBuffer().size()).ptr() };
- getResult.setKeyData(cursor->currentPrimaryKey());
- }
+ else
+ getResult = { SharedBuffer::create(cursor->currentValueBuffer().data(), cursor->currentValueBuffer().size()), cursor->currentPrimaryKey() };
}
return { };