Diff
Modified: trunk/Source/WebCore/ChangeLog (201664 => 201665)
--- trunk/Source/WebCore/ChangeLog 2016-06-03 22:26:50 UTC (rev 201664)
+++ trunk/Source/WebCore/ChangeLog 2016-06-03 22:31:02 UTC (rev 201665)
@@ -1,3 +1,40 @@
+2016-06-03 Brady Eidson <[email protected]>
+
+ More miscellaneous IDBBindingUtilities cleanup.
+ https://bugs.webkit.org/show_bug.cgi?id=158359
+
+ Reviewed by Tim Horton.
+
+ No new tests (Straight refactor, yo).
+
+ Replace more ScriptExecutionContext&s with ExecState&s.
+ Combine more unnecessarily separate functions.
+ Remove some cruft.
+
+ * Modules/indexeddb/IDBCursor.cpp:
+ (WebCore::IDBCursor::setGetResult):
+
+ * Modules/indexeddb/IDBRequest.cpp:
+ (WebCore::IDBRequest::setResult):
+ (WebCore::IDBRequest::setResultToStructuredClone):
+
+ * Modules/indexeddb/server/MemoryObjectStore.cpp:
+ (WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord):
+ (WebCore::IDBServer::MemoryObjectStore::populateIndexWithExistingRecords):
+
+ * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
+ (WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
+ (WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord):
+
+ * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
+ (WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):
+
+ * bindings/js/IDBBindingUtilities.cpp:
+ (WebCore::deserializeIDBValueToJSValue):
+ (WebCore::idbKeyDataToScriptValue):
+ (WebCore::deserializeIDBValueDataToJSValue): Deleted.
+ * bindings/js/IDBBindingUtilities.h:
+
2016-06-03 Chris Dumez <[email protected]>
CanvasRenderingContext2D.createPattern() / putImageData() throw wrong exception type
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBCursor.cpp (201664 => 201665)
--- trunk/Source/WebCore/Modules/indexeddb/IDBCursor.cpp 2016-06-03 22:26:50 UTC (rev 201664)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBCursor.cpp 2016-06-03 22:31:02 UTC (rev 201665)
@@ -399,6 +399,10 @@
if (!context)
return;
+ auto* exec = context->execState();
+ if (!exec)
+ return;
+
if (!getResult.isDefined()) {
m_currentKey = { };
m_currentKeyData = { };
@@ -412,13 +416,13 @@
auto& vm = context->vm();
- m_currentKey = { vm, idbKeyDataToScriptValue(*context, getResult.keyData()) };
+ m_currentKey = { vm, idbKeyDataToScriptValue(*exec, getResult.keyData()) };
m_currentKeyData = getResult.keyData();
- m_currentPrimaryKey = { vm, idbKeyDataToScriptValue(*context, getResult.primaryKeyData()) };
+ m_currentPrimaryKey = { vm, idbKeyDataToScriptValue(*exec, getResult.primaryKeyData()) };
m_currentPrimaryKeyData = getResult.primaryKeyData();
if (isKeyCursorWithValue())
- m_currentValue = { vm, deserializeIDBValueToJSValue(*context, getResult.value()) };
+ m_currentValue = { vm, deserializeIDBValueToJSValue(*exec, getResult.value()) };
else
m_currentValue = { };
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp (201664 => 201665)
--- trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp 2016-06-03 22:26:50 UTC (rev 201664)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp 2016-06-03 22:31:02 UTC (rev 201665)
@@ -330,8 +330,12 @@
if (!context)
return;
+ auto* exec = context->execState();
+ if (!exec)
+ return;
+
clearResult();
- m_scriptResult = { context->vm(), idbKeyDataToScriptValue(*context, keyData) };
+ m_scriptResult = { context->vm(), idbKeyDataToScriptValue(*exec, keyData) };
}
void IDBRequest::setResult(uint64_t number)
@@ -356,8 +360,12 @@
if (!context)
return;
+ auto* exec = context->execState();
+ if (!exec)
+ return;
+
clearResult();
- m_scriptResult = { context->vm(), deserializeIDBValueToJSValue(*context, value) };
+ m_scriptResult = { context->vm(), deserializeIDBValueToJSValue(*exec, value) };
}
void IDBRequest::clearResult()
Modified: trunk/Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp (201664 => 201665)
--- trunk/Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp 2016-06-03 22:26:50 UTC (rev 201664)
+++ trunk/Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp 2016-06-03 22:31:02 UTC (rev 201665)
@@ -303,7 +303,7 @@
{
JSLockHolder locker(UniqueIDBDatabase::databaseThreadVM());
- auto jsValue = deserializeIDBValueDataToJSValue(UniqueIDBDatabase::databaseThreadExecState(), value);
+ auto jsValue = deserializeIDBValueToJSValue(UniqueIDBDatabase::databaseThreadExecState(), value);
if (jsValue.isUndefinedOrNull())
return { };
@@ -341,7 +341,7 @@
JSLockHolder locker(UniqueIDBDatabase::databaseThreadVM());
for (auto iterator : *m_keyValueStore) {
- auto jsValue = deserializeIDBValueDataToJSValue(UniqueIDBDatabase::databaseThreadExecState(), iterator.value);
+ auto jsValue = deserializeIDBValueToJSValue(UniqueIDBDatabase::databaseThreadExecState(), iterator.value);
if (jsValue.isUndefinedOrNull())
return { };
Modified: trunk/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp (201664 => 201665)
--- trunk/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp 2016-06-03 22:26:50 UTC (rev 201664)
+++ trunk/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp 2016-06-03 22:31:02 UTC (rev 201665)
@@ -1480,7 +1480,7 @@
{
JSLockHolder locker(vm());
- auto jsValue = deserializeIDBValueDataToJSValue(*globalObject().globalExec(), value);
+ auto jsValue = deserializeIDBValueToJSValue(*globalObject().globalExec(), value);
if (jsValue.isUndefinedOrNull())
return { };
@@ -1497,7 +1497,7 @@
{
JSLockHolder locker(vm());
- auto jsValue = deserializeIDBValueDataToJSValue(*globalObject().globalExec(), value);
+ auto jsValue = deserializeIDBValueToJSValue(*globalObject().globalExec(), value);
if (jsValue.isUndefinedOrNull())
return { };
Modified: trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp (201664 => 201665)
--- trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp 2016-06-03 22:26:50 UTC (rev 201664)
+++ trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp 2016-06-03 22:31:02 UTC (rev 201665)
@@ -851,7 +851,7 @@
if (usedKeyIsGenerated && !objectStoreInfo->keyPath().isNull()) {
JSLockHolder locker(databaseThreadVM());
- auto value = deserializeIDBValueDataToJSValue(databaseThreadExecState(), originalRecordValue.data());
+ auto value = deserializeIDBValueToJSValue(databaseThreadExecState(), originalRecordValue.data());
if (value.isUndefined()) {
postDatabaseTaskReply(createCrossThreadTask(*this, &UniqueIDBDatabase::didPerformPutOrAdd, callbackIdentifier, IDBError(IDBDatabaseException::ConstraintError, ASCIILiteral("Unable to deserialize record value for record key injection")), usedKey));
return;
Modified: trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp (201664 => 201665)
--- trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp 2016-06-03 22:26:50 UTC (rev 201664)
+++ trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp 2016-06-03 22:31:02 UTC (rev 201665)
@@ -307,8 +307,7 @@
return canInjectNthValueOnKeyPath(exec, scriptValue, keyPathElements, keyPathElements.size() - 1);
}
-
-static JSValue deserializeIDBValueToJSValue(ExecState& exec, const IDBValue& value)
+JSValue deserializeIDBValueToJSValue(ExecState& exec, const IDBValue& value)
{
// FIXME: I think it's peculiar to use undefined to mean "null data" and null to mean "empty data".
// But I am not changing this at the moment because at least some callers are specifically checking isUndefined.
@@ -329,36 +328,15 @@
return result;
}
-JSValue deserializeIDBValueToJSValue(ScriptExecutionContext& context, const IDBValue& value)
-{
- // FIXME: I think it's peculiar to return an empty JSValue, undefined, and null for three different error cases.
-
- auto* exec = context.execState();
- if (!exec)
- return { };
-
- return deserializeIDBValueToJSValue(*exec, value);
-}
-
-JSValue deserializeIDBValueDataToJSValue(ExecState& exec, const ThreadSafeDataBuffer& valueData)
-{
- return deserializeIDBValueToJSValue(exec, IDBValue(valueData));
-}
-
Ref<IDBKey> scriptValueToIDBKey(ExecState& exec, const JSValue& scriptValue)
{
return createIDBKeyFromValue(exec, scriptValue);
}
-JSC::JSValue idbKeyDataToScriptValue(ScriptExecutionContext& context, const IDBKeyData& keyData)
+JSC::JSValue idbKeyDataToScriptValue(JSC::ExecState& exec, const IDBKeyData& keyData)
{
RefPtr<IDBKey> key = keyData.maybeCreateIDBKey();
-
- ExecState* exec = context.execState();
- if (!exec)
- return { };
-
- return toJS(*exec, *exec->lexicalGlobalObject(), key.get());
+ return toJS(exec, *exec.lexicalGlobalObject(), key.get());
}
static Vector<IDBKeyData> createKeyPathArray(ExecState& exec, JSValue value, const IDBIndexInfo& info)
Modified: trunk/Source/WebCore/bindings/js/IDBBindingUtilities.h (201664 => 201665)
--- trunk/Source/WebCore/bindings/js/IDBBindingUtilities.h 2016-06-03 22:26:50 UTC (rev 201664)
+++ trunk/Source/WebCore/bindings/js/IDBBindingUtilities.h 2016-06-03 22:31:02 UTC (rev 201665)
@@ -45,7 +45,6 @@
class IDBValue;
class IndexKey;
class JSDOMGlobalObject;
-class ScriptExecutionContext;
class ThreadSafeDataBuffer;
IDBKeyPath idbKeyPathFromValue(JSC::ExecState&, JSC::JSValue);
@@ -56,11 +55,10 @@
bool injectIDBKeyIntoScriptValue(JSC::ExecState&, const IDBKeyData&, JSC::JSValue, const IDBKeyPath&);
JSC::JSValue toJS(JSC::ExecState&, JSC::JSGlobalObject&, IDBKey*);
-JSC::JSValue idbKeyDataToScriptValue(ScriptExecutionContext&, const IDBKeyData&);
+JSC::JSValue idbKeyDataToScriptValue(JSC::ExecState&, const IDBKeyData&);
void generateIndexKeyForValue(JSC::ExecState&, const IDBIndexInfo&, JSC::JSValue, IndexKey& outKey);
-JSC::JSValue deserializeIDBValueToJSValue(ScriptExecutionContext&, const IDBValue&);
-JSC::JSValue deserializeIDBValueDataToJSValue(JSC::ExecState&, const ThreadSafeDataBuffer& valueData);
+JSC::JSValue deserializeIDBValueToJSValue(JSC::ExecState&, const IDBValue&);
Ref<IDBKey> scriptValueToIDBKey(JSC::ExecState&, const JSC::JSValue&);