WebKit Bugzilla
Attachment 373125 Details for
Bug 199320
: Remove IDBValue::m_sessionID
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-199320-20190628101904.patch (text/plain), 35.80 KB, created by
youenn fablet
on 2019-06-28 10:19:05 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2019-06-28 10:19:05 PDT
Size:
35.80 KB
patch
obsolete
>Subversion Revision: 246881 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index fb93f4fbb55a45cd97d7f189d67674a204a6878b..fbc72d29462a3c36bbd245e4ba3555e4b7a01730 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,63 @@ >+2019-06-28 Youenn Fablet <youenn@apple.com> >+ >+ Remove IDBValue::m_sessionID >+ https://bugs.webkit.org/show_bug.cgi?id=199320 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Remove sessionID from IDBValue. >+ This does not seem to be really used in any way. >+ No change of behavior. >+ >+ * Modules/indexeddb/IDBValue.cpp: >+ (WebCore::IDBValue::IDBValue): >+ * Modules/indexeddb/IDBValue.h: >+ (WebCore::IDBValue::blobURLs const): >+ (WebCore::IDBValue::encode const): >+ (WebCore::IDBValue::decode): >+ (WebCore::IDBValue::sessionID const): Deleted. >+ * Modules/indexeddb/shared/IDBRequestData.cpp: >+ (WebCore::IDBRequestData::isolatedCopy): >+ * Modules/indexeddb/shared/IDBRequestData.h: >+ (WebCore::IDBRequestData::databaseIdentifier const): >+ (WebCore::IDBRequestData::decode): >+ * bindings/js/IDBBindingUtilities.cpp: >+ (WebCore::deserializeIDBValueToJSValue): >+ * bindings/js/SerializedScriptValue.cpp: >+ (WebCore::CloneSerializer::serialize): >+ (WebCore::CloneSerializer::CloneSerializer): >+ (WebCore::CloneSerializer::dumpIfTerminal): >+ (WebCore::CloneDeserializer::deserialize): >+ (WebCore::CloneDeserializer::CloneDeserializer): >+ (WebCore::SerializedScriptValue::SerializedScriptValue): >+ (WebCore::SerializedScriptValue::create): >+ (WebCore::SerializedScriptValue::deserialize): >+ (WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB): >+ * bindings/js/SerializedScriptValue.h: >+ (WebCore::SerializedScriptValue::sessionID const): Deleted. >+ >+2019-06-27 Youenn Fablet <youenn@apple.com> >+ >+ ASSERT that a sessionID is valid when encoding it >+ https://bugs.webkit.org/show_bug.cgi?id=199302 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ For IDBValue, instead of encoding an invalid session ID, encode a boolean that tells there is no sessionID. >+ For IDBRequestData, keep track of whether there is an IDBDatabaseIdentifier >+ and encode/decode accordingly to not encode an invalid sessionID. >+ No observable change of behavior. >+ >+ * Modules/indexeddb/IDBValue.h: >+ (WebCore::IDBValue::sessionID const): >+ (WebCore::IDBValue::encode const): >+ (WebCore::IDBValue::decode): >+ * Modules/indexeddb/shared/IDBRequestData.cpp: >+ (WebCore::IDBRequestData::isolatedCopy): >+ * Modules/indexeddb/shared/IDBRequestData.h: >+ (WebCore::IDBRequestData::databaseIdentifier const): >+ (WebCore::IDBRequestData::decode): >+ > 2019-06-27 Youenn Fablet <youenn@apple.com> > > [MacOS] getUserMedia called multiple times should better handle camera resolution >diff --git a/Source/WebCore/PAL/ChangeLog b/Source/WebCore/PAL/ChangeLog >index 4bb87f5eca202f1e8473ff4a5e4dbb103e253ffa..c5f48ce06bf7e12bc6a3b8bc4268f49c4badaa59 100644 >--- a/Source/WebCore/PAL/ChangeLog >+++ b/Source/WebCore/PAL/ChangeLog >@@ -1,3 +1,27 @@ >+2019-06-28 Youenn Fablet <youenn@apple.com> >+ >+ Remove IDBValue::m_sessionID >+ https://bugs.webkit.org/show_bug.cgi?id=199320 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * pal/SessionID.h: >+ (PAL::SessionID::encode const): >+ (PAL::SessionID::decode): >+ >+2019-06-27 Youenn Fablet <youenn@apple.com> >+ >+ ASSERT that a sessionID is valid when encoding it >+ https://bugs.webkit.org/show_bug.cgi?id=199302 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ ASSERT that a sessionID is valid at encoding/decoding time. >+ >+ * pal/SessionID.h: >+ (PAL::SessionID::encode const): >+ (PAL::SessionID::decode): >+ > 2019-06-25 Alex Christensen <achristensen@webkit.org> > > Make HTTPCookieAcceptPolicy an enum class >diff --git a/Source/WebCore/Modules/indexeddb/IDBValue.cpp b/Source/WebCore/Modules/indexeddb/IDBValue.cpp >index b171048fb51a06063bd2fdde8ce8602fe1e6a7a8..af71e9f2434ba1e5f827433499dbeb81a30706fc 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBValue.cpp >+++ b/Source/WebCore/Modules/indexeddb/IDBValue.cpp >@@ -40,7 +40,6 @@ IDBValue::IDBValue() > IDBValue::IDBValue(const SerializedScriptValue& scriptValue) > : m_data(ThreadSafeDataBuffer::copyVector(scriptValue.data())) > , m_blobURLs(scriptValue.blobURLsIsolatedCopy()) >- , m_sessionID(scriptValue.sessionID()) > { > } > >@@ -49,27 +48,24 @@ IDBValue::IDBValue(const ThreadSafeDataBuffer& value) > { > } > >-IDBValue::IDBValue(const SerializedScriptValue& scriptValue, const Vector<String>& blobURLs, const PAL::SessionID& sessionID, const Vector<String>& blobFilePaths) >+IDBValue::IDBValue(const SerializedScriptValue& scriptValue, const Vector<String>& blobURLs, const Vector<String>& blobFilePaths) > : m_data(ThreadSafeDataBuffer::copyVector(scriptValue.data())) > , m_blobURLs(blobURLs) >- , m_sessionID(sessionID) > , m_blobFilePaths(blobFilePaths) > { > ASSERT(m_data.data()); > } > >-IDBValue::IDBValue(const ThreadSafeDataBuffer& value, Vector<String>&& blobURLs, const PAL::SessionID& sessionID, Vector<String>&& blobFilePaths) >+IDBValue::IDBValue(const ThreadSafeDataBuffer& value, Vector<String>&& blobURLs, Vector<String>&& blobFilePaths) > : m_data(value) > , m_blobURLs(WTFMove(blobURLs)) >- , m_sessionID(sessionID) > , m_blobFilePaths(WTFMove(blobFilePaths)) > { > } > >-IDBValue::IDBValue(const ThreadSafeDataBuffer& value, const Vector<String>& blobURLs, const PAL::SessionID& sessionID, const Vector<String>& blobFilePaths) >+IDBValue::IDBValue(const ThreadSafeDataBuffer& value, const Vector<String>& blobURLs, const Vector<String>& blobFilePaths) > : m_data(value) > , m_blobURLs(blobURLs) >- , m_sessionID(sessionID) > , m_blobFilePaths(blobFilePaths) > { > } >@@ -80,7 +76,6 @@ void IDBValue::setAsIsolatedCopy(const IDBValue& other) > > m_data = other.m_data; > m_blobURLs = crossThreadCopy(other.m_blobURLs); >- m_sessionID = other.m_sessionID; > m_blobFilePaths = crossThreadCopy(other.m_blobFilePaths); > } > >diff --git a/Source/WebCore/Modules/indexeddb/IDBValue.h b/Source/WebCore/Modules/indexeddb/IDBValue.h >index fb46700a77538a16e6b6846f3abb6f396865cf36..6892f12305258a8b57e6976a53f7db5bfee0f455 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBValue.h >+++ b/Source/WebCore/Modules/indexeddb/IDBValue.h >@@ -28,7 +28,6 @@ > #if ENABLE(INDEXED_DATABASE) > > #include "ThreadSafeDataBuffer.h" >-#include <pal/SessionID.h> > #include <wtf/text/WTFString.h> > > namespace WebCore { >@@ -41,16 +40,15 @@ public: > WEBCORE_EXPORT IDBValue(); > IDBValue(const SerializedScriptValue&); > IDBValue(const ThreadSafeDataBuffer&); >- IDBValue(const SerializedScriptValue&, const Vector<String>& blobURLs, const PAL::SessionID&, const Vector<String>& blobFilePaths); >- IDBValue(const ThreadSafeDataBuffer&, Vector<String>&& blobURLs, const PAL::SessionID&, Vector<String>&& blobFilePaths); >- IDBValue(const ThreadSafeDataBuffer&, const Vector<String>& blobURLs, const PAL::SessionID&, const Vector<String>& blobFilePaths); >+ IDBValue(const SerializedScriptValue&, const Vector<String>& blobURLs, const Vector<String>& blobFilePaths); >+ IDBValue(const ThreadSafeDataBuffer&, Vector<String>&& blobURLs, Vector<String>&& blobFilePaths); >+ IDBValue(const ThreadSafeDataBuffer&, const Vector<String>& blobURLs, const Vector<String>& blobFilePaths); > > void setAsIsolatedCopy(const IDBValue&); > IDBValue isolatedCopy() const; > > const ThreadSafeDataBuffer& data() const { return m_data; } > const Vector<String>& blobURLs() const { return m_blobURLs; } >- const PAL::SessionID& sessionID() const { return m_sessionID; } > const Vector<String>& blobFilePaths() const { return m_blobFilePaths; } > > template<class Encoder> void encode(Encoder&) const; >@@ -59,7 +57,6 @@ public: > private: > ThreadSafeDataBuffer m_data; > Vector<String> m_blobURLs; >- PAL::SessionID m_sessionID; > Vector<String> m_blobFilePaths; > }; > >@@ -69,7 +66,6 @@ void IDBValue::encode(Encoder& encoder) const > { > encoder << m_data; > encoder << m_blobURLs; >- encoder << m_sessionID; > encoder << m_blobFilePaths; > } > >@@ -83,9 +79,6 @@ Optional<IDBValue> IDBValue::decode(Decoder& decoder) > if (!decoder.decode(result.m_blobURLs)) > return WTF::nullopt; > >- if (!decoder.decode(result.m_sessionID)) >- return WTF::nullopt; >- > if (!decoder.decode(result.m_blobFilePaths)) > return WTF::nullopt; > >diff --git a/Source/WebCore/Modules/indexeddb/server/MemoryIndexCursor.cpp b/Source/WebCore/Modules/indexeddb/server/MemoryIndexCursor.cpp >index 8fbc890bdb87fdc56817a4f21aaa4507b6595e6d..2aed0b21ba5f85f42cb2880328118f69b9f75957 100644 >--- a/Source/WebCore/Modules/indexeddb/server/MemoryIndexCursor.cpp >+++ b/Source/WebCore/Modules/indexeddb/server/MemoryIndexCursor.cpp >@@ -74,7 +74,7 @@ void MemoryIndexCursor::currentData(IDBGetResult& getResult) > if (m_info.cursorType() == IndexedDB::CursorType::KeyOnly) > getResult = { m_currentKey, m_currentPrimaryKey }; > else { >- IDBValue value = { m_index.objectStore().valueForKey(m_currentPrimaryKey), { }, { }, { } }; >+ IDBValue value = { m_index.objectStore().valueForKey(m_currentPrimaryKey), { }, { } }; > getResult = { m_currentKey, m_currentPrimaryKey, WTFMove(value), m_index.objectStore().info().keyPath() }; > } > } >diff --git a/Source/WebCore/Modules/indexeddb/server/MemoryObjectStoreCursor.cpp b/Source/WebCore/Modules/indexeddb/server/MemoryObjectStoreCursor.cpp >index 3703347eb8e51b67ff854b41e0a3e1d7f2fc6d5b..6283860210914c88e24a6e62c980f1dd5b68e32a 100644 >--- a/Source/WebCore/Modules/indexeddb/server/MemoryObjectStoreCursor.cpp >+++ b/Source/WebCore/Modules/indexeddb/server/MemoryObjectStoreCursor.cpp >@@ -193,7 +193,7 @@ void MemoryObjectStoreCursor::currentData(IDBGetResult& data) > if (m_info.cursorType() == IndexedDB::CursorType::KeyOnly) > data = { m_currentPositionKey, m_currentPositionKey }; > else { >- IDBValue value = { m_objectStore.valueForKeyRange(m_currentPositionKey), { }, { }, { } }; >+ IDBValue value = { m_objectStore.valueForKeyRange(m_currentPositionKey), { }, { } }; > data = { m_currentPositionKey, m_currentPositionKey, WTFMove(value), m_objectStore.info().keyPath() }; > } > } >diff --git a/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp b/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp >index d1b047cef65ac3d9f92dbf3fdbc1c645082220ca..f3d944b5fcd163cf953b12a403f254dbf5cddcef 100644 >--- a/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp >+++ b/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp >@@ -1908,7 +1908,7 @@ IDBError SQLiteIDBBackingStore::addRecord(const IDBResourceIdentifier& transacti > return error; > } > >-IDBError SQLiteIDBBackingStore::getBlobRecordsForObjectStoreRecord(int64_t objectStoreRecord, Vector<String>& blobURLs, PAL::SessionID& sessionID, Vector<String>& blobFilePaths) >+IDBError SQLiteIDBBackingStore::getBlobRecordsForObjectStoreRecord(int64_t objectStoreRecord, Vector<String>& blobURLs, Vector<String>& blobFilePaths) > { > ASSERT(objectStoreRecord); > >@@ -1957,7 +1957,6 @@ IDBError SQLiteIDBBackingStore::getBlobRecordsForObjectStoreRecord(int64_t objec > String fileName = sql->getColumnText(0); > blobFilePaths.append(FileSystem::pathByAppendingComponent(m_databaseDirectory, fileName)); > } >- sessionID = m_identifier.sessionID(); > > return IDBError { }; > } >@@ -2085,8 +2084,7 @@ IDBError SQLiteIDBBackingStore::getRecord(const IDBResourceIdentifier& transacti > > ASSERT(recordID); > Vector<String> blobURLs, blobFilePaths; >- PAL::SessionID sessionID; >- auto error = getBlobRecordsForObjectStoreRecord(recordID, blobURLs, sessionID, blobFilePaths); >+ auto error = getBlobRecordsForObjectStoreRecord(recordID, blobURLs, blobFilePaths); > ASSERT(blobURLs.size() == blobFilePaths.size()); > > if (!error.isNull()) >@@ -2094,7 +2092,7 @@ IDBError SQLiteIDBBackingStore::getRecord(const IDBResourceIdentifier& transacti > > auto* objectStoreInfo = infoForObjectStore(objectStoreID); > ASSERT(objectStoreInfo); >- resultValue = { keyData, { valueResultBuffer, WTFMove(blobURLs), sessionID, WTFMove(blobFilePaths) }, objectStoreInfo->keyPath()}; >+ resultValue = { keyData, { valueResultBuffer, WTFMove(blobURLs), WTFMove(blobFilePaths) }, objectStoreInfo->keyPath()}; > return IDBError { }; > } > >@@ -2207,14 +2205,13 @@ IDBError SQLiteIDBBackingStore::getAllObjectStoreRecords(const IDBResourceIdenti > > ASSERT(recordID); > Vector<String> blobURLs, blobFilePaths; >- PAL::SessionID sessionID; >- auto error = getBlobRecordsForObjectStoreRecord(recordID, blobURLs, sessionID, blobFilePaths); >+ auto error = getBlobRecordsForObjectStoreRecord(recordID, blobURLs, blobFilePaths); > ASSERT(blobURLs.size() == blobFilePaths.size()); > > if (!error.isNull()) > return error; > >- result.addValue({ valueResultBuffer, WTFMove(blobURLs), sessionID, WTFMove(blobFilePaths) }); >+ result.addValue({ valueResultBuffer, WTFMove(blobURLs), WTFMove(blobFilePaths) }); > } > > ++returnedResults; >@@ -2369,8 +2366,7 @@ IDBError SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey(int64_t indexID > > int64_t recordID = sql->getColumnInt64(2); > Vector<String> blobURLs, blobFilePaths; >- PAL::SessionID sessionID; >- auto error = getBlobRecordsForObjectStoreRecord(recordID, blobURLs, sessionID, blobFilePaths); >+ auto error = getBlobRecordsForObjectStoreRecord(recordID, blobURLs, blobFilePaths); > ASSERT(blobURLs.size() == blobFilePaths.size()); > > if (!error.isNull()) >@@ -2378,7 +2374,7 @@ IDBError SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey(int64_t indexID > > auto* objectStoreInfo = infoForObjectStore(objectStoreID); > ASSERT(objectStoreInfo); >- getResult = { objectStoreKey, objectStoreKey, { ThreadSafeDataBuffer::create(WTFMove(valueVector)), WTFMove(blobURLs), sessionID, WTFMove(blobFilePaths) }, objectStoreInfo->keyPath() }; >+ getResult = { objectStoreKey, objectStoreKey, { ThreadSafeDataBuffer::create(WTFMove(valueVector)), WTFMove(blobURLs), WTFMove(blobFilePaths) }, objectStoreInfo->keyPath() }; > return IDBError { }; > } > >diff --git a/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.h b/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.h >index c7d56843c7bc73e6e74507b533498957acbf61db..737834384961f2b9e9c4686edfea326d0224c0ab 100644 >--- a/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.h >+++ b/Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.h >@@ -91,7 +91,7 @@ public: > > IDBBackingStoreTemporaryFileHandler& temporaryFileHandler() const { return m_temporaryFileHandler; } > >- IDBError getBlobRecordsForObjectStoreRecord(int64_t objectStoreRecord, Vector<String>& blobURLs, PAL::SessionID&, Vector<String>& blobFilePaths); >+ IDBError getBlobRecordsForObjectStoreRecord(int64_t objectStoreRecord, Vector<String>& blobURLs, Vector<String>& blobFilePaths); > > static String databaseNameFromEncodedFilename(const String&); > static uint64_t databasesSizeForFolder(const String& folder); >diff --git a/Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp b/Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp >index caeacf2412b60d18f3a5944badb2d71c1e97c812..f8405a798a36810dc576af1e73bcaf5310237baf 100644 >--- a/Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp >+++ b/Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp >@@ -456,8 +456,7 @@ SQLiteIDBCursor::FetchResult SQLiteIDBCursor::internalFetchNextRecord(SQLiteCurs > record.record.primaryKey = record.record.key; > > Vector<String> blobURLs, blobFilePaths; >- PAL::SessionID sessionID; >- auto error = m_transaction->backingStore().getBlobRecordsForObjectStoreRecord(record.rowID, blobURLs, sessionID, blobFilePaths); >+ auto error = m_transaction->backingStore().getBlobRecordsForObjectStoreRecord(record.rowID, blobURLs, blobFilePaths); > if (!error.isNull()) { > LOG_ERROR("Unable to fetch blob records from database while advancing cursor"); > markAsErrored(record); >@@ -465,7 +464,7 @@ SQLiteIDBCursor::FetchResult SQLiteIDBCursor::internalFetchNextRecord(SQLiteCurs > } > > if (m_cursorType == IndexedDB::CursorType::KeyAndValue) >- record.record.value = std::make_unique<IDBValue>(ThreadSafeDataBuffer::create(WTFMove(keyData)), blobURLs, sessionID, blobFilePaths); >+ record.record.value = std::make_unique<IDBValue>(ThreadSafeDataBuffer::create(WTFMove(keyData)), blobURLs, blobFilePaths); > } else { > if (!deserializeIDBKeyData(keyData.data(), keyData.size(), record.record.primaryKey)) { > LOG_ERROR("Unable to deserialize value data from database while advancing index cursor"); >diff --git a/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp b/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp >index 574ea8b01d9bbf1329cce89eddc552ef59b81032..b10d84099b2528e6f73c28b1504a8a9324d0b21a 100644 >--- a/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp >+++ b/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp >@@ -98,7 +98,8 @@ void IDBRequestData::isolatedCopy(const IDBRequestData& source, IDBRequestData& > destination.m_requestedVersion = source.m_requestedVersion; > destination.m_requestType = source.m_requestType; > >- destination.m_databaseIdentifier = source.m_databaseIdentifier.isolatedCopy(); >+ if (source.m_databaseIdentifier) >+ destination.m_databaseIdentifier = source.m_databaseIdentifier->isolatedCopy(); > > if (source.m_requestIdentifier) > destination.m_requestIdentifier = std::make_unique<IDBResourceIdentifier>(*source.m_requestIdentifier); >diff --git a/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h b/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h >index b5821675bb9aea12e8d6991a021d9eed18fd6651..9f87477b1d9ab885967f3877a251f390de248126 100644 >--- a/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h >+++ b/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h >@@ -65,7 +65,14 @@ public: > IndexedDB::IndexRecordType indexRecordType() const; > IDBResourceIdentifier cursorIdentifier() const; > >- const IDBDatabaseIdentifier& databaseIdentifier() const { return m_databaseIdentifier; } >+ const IDBDatabaseIdentifier& databaseIdentifier() const >+ { >+ ASSERT(m_databaseIdentifier); >+ if (!m_databaseIdentifier) >+ m_databaseIdentifier = IDBDatabaseIdentifier { }; >+ return *m_databaseIdentifier; >+ } >+ > uint64_t requestedVersion() const; > > bool isOpenRequest() const { return m_requestType == IndexedDB::RequestType::Open; } >@@ -89,7 +96,7 @@ private: > uint64_t m_indexIdentifier { 0 }; > IndexedDB::IndexRecordType m_indexRecordType; > >- IDBDatabaseIdentifier m_databaseIdentifier; >+ mutable Optional<IDBDatabaseIdentifier> m_databaseIdentifier; > uint64_t m_requestedVersion { 0 }; > > IndexedDB::RequestType m_requestType { IndexedDB::RequestType::Other }; >@@ -128,7 +135,7 @@ bool IDBRequestData::decode(Decoder& decoder, IDBRequestData& request) > if (!decoder.decode(request.m_indexIdentifier)) > return false; > >- Optional<IDBDatabaseIdentifier> databaseIdentifier; >+ Optional<Optional<IDBDatabaseIdentifier>> databaseIdentifier; > decoder >> databaseIdentifier; > if (!databaseIdentifier) > return false; >diff --git a/Source/WebCore/PAL/pal/SessionID.h b/Source/WebCore/PAL/pal/SessionID.h >index 2b1cdb29874940f7005f2b9924451402a2cace1c..f7cca7df1347e0ca39055eccb1eac80a92146c7a 100644 >--- a/Source/WebCore/PAL/pal/SessionID.h >+++ b/Source/WebCore/PAL/pal/SessionID.h >@@ -80,7 +80,7 @@ private: > template<class Encoder> > void SessionID::encode(Encoder& encoder) const > { >- // FIXME: Eliminate places that encode invalid SessionIDs, then ASSERT here that the sessionID is valid. >+ ASSERT(isValid()); > encoder << m_sessionID; > } > >@@ -104,7 +104,8 @@ Optional<SessionID> SessionID::decode(Decoder& decoder) > if (!sessionID) > return WTF::nullopt; > >- // FIXME: Eliminate places that encode invalid SessionIDs, then fail to decode an invalid sessionID. >+ // FIXME: We should fail to decode an invalid sessionID. >+ ASSERT(SessionID { *sessionID }.isValid()); > return SessionID { *sessionID }; > } > >diff --git a/Source/WebCore/bindings/js/IDBBindingUtilities.cpp b/Source/WebCore/bindings/js/IDBBindingUtilities.cpp >index 1a625539c67c3a6d10ae008ade13024d74b6abdd..41fbbde000f4a96e5e17e05eb62568be8fb94530 100644 >--- a/Source/WebCore/bindings/js/IDBBindingUtilities.cpp >+++ b/Source/WebCore/bindings/js/IDBBindingUtilities.cpp >@@ -387,7 +387,7 @@ static JSValue deserializeIDBValueToJSValue(ExecState& state, JSC::JSGlobalObjec > > state.vm().apiLock().lock(); > Vector<RefPtr<MessagePort>> messagePorts; >- JSValue result = serializedValue->deserialize(state, &globalObject, messagePorts, value.blobURLs(), value.sessionID(), value.blobFilePaths(), SerializationErrorMode::NonThrowing); >+ JSValue result = serializedValue->deserialize(state, &globalObject, messagePorts, value.blobURLs(), value.blobFilePaths(), SerializationErrorMode::NonThrowing); > state.vm().apiLock().unlock(); > > return result; >diff --git a/Source/WebCore/bindings/js/SerializedScriptValue.cpp b/Source/WebCore/bindings/js/SerializedScriptValue.cpp >index 965ece394b9832604a343bb2863b14be74fb87b4..caa11f2d6ab6577a50e79c0ee98f59a2bd3c1b7e 100644 >--- a/Source/WebCore/bindings/js/SerializedScriptValue.cpp >+++ b/Source/WebCore/bindings/js/SerializedScriptValue.cpp >@@ -548,13 +548,13 @@ public: > #if ENABLE(WEBASSEMBLY) > WasmModuleArray& wasmModules, > #endif >- Vector<String>& blobURLs, const PAL::SessionID& sessionID, Vector<uint8_t>& out, SerializationContext context, ArrayBufferContentsArray& sharedBuffers) >+ Vector<String>& blobURLs, Vector<uint8_t>& out, SerializationContext context, ArrayBufferContentsArray& sharedBuffers) > { > CloneSerializer serializer(exec, messagePorts, arrayBuffers, imageBitmaps, > #if ENABLE(WEBASSEMBLY) > wasmModules, > #endif >- blobURLs, sessionID, out, context, sharedBuffers); >+ blobURLs, out, context, sharedBuffers); > return serializer.serialize(value); > } > >@@ -581,11 +581,10 @@ private: > #if ENABLE(WEBASSEMBLY) > WasmModuleArray& wasmModules, > #endif >- Vector<String>& blobURLs, const PAL::SessionID& sessionID, Vector<uint8_t>& out, SerializationContext context, ArrayBufferContentsArray& sharedBuffers) >+ Vector<String>& blobURLs, Vector<uint8_t>& out, SerializationContext context, ArrayBufferContentsArray& sharedBuffers) > : CloneBase(exec) > , m_buffer(out) > , m_blobURLs(blobURLs) >- , m_sessionID(sessionID) > , m_emptyIdentifier(Identifier::fromString(exec, emptyString())) > , m_context(context) > , m_sharedBuffers(sharedBuffers) >@@ -1058,7 +1057,6 @@ private: > write(CryptoKeyTag); > Vector<uint8_t> serializedKey; > Vector<String> dummyBlobURLs; >- PAL::SessionID dummySessionID; > Vector<RefPtr<MessagePort>> dummyMessagePorts; > Vector<RefPtr<JSC::ArrayBuffer>> dummyArrayBuffers; > #if ENABLE(WEBASSEMBLY) >@@ -1069,7 +1067,7 @@ private: > #if ENABLE(WEBASSEMBLY) > dummyModules, > #endif >- dummyBlobURLs, dummySessionID, serializedKey, SerializationContext::Default, dummySharedBuffers); >+ dummyBlobURLs, serializedKey, SerializationContext::Default, dummySharedBuffers); > rawKeySerializer.write(key); > Vector<uint8_t> wrappedKey; > if (!wrapCryptoKey(m_exec, serializedKey, wrappedKey)) >@@ -1468,7 +1466,6 @@ private: > > Vector<uint8_t>& m_buffer; > Vector<String>& m_blobURLs; >- PAL::SessionID m_sessionID; > ObjectPool m_objectPool; > ObjectPool m_transferredMessagePorts; > ObjectPool m_transferredArrayBuffers; >@@ -1752,7 +1749,7 @@ public: > return str; > } > >- static DeserializationResult deserialize(ExecState* exec, JSGlobalObject* globalObject, const Vector<RefPtr<MessagePort>>& messagePorts, Vector<std::pair<std::unique_ptr<ImageBuffer>, bool>>&& imageBuffers, ArrayBufferContentsArray* arrayBufferContentsArray, const Vector<uint8_t>& buffer, const Vector<String>& blobURLs, const PAL::SessionID& sessionID, const Vector<String> blobFilePaths, ArrayBufferContentsArray* sharedBuffers >+ static DeserializationResult deserialize(ExecState* exec, JSGlobalObject* globalObject, const Vector<RefPtr<MessagePort>>& messagePorts, Vector<std::pair<std::unique_ptr<ImageBuffer>, bool>>&& imageBuffers, ArrayBufferContentsArray* arrayBufferContentsArray, const Vector<uint8_t>& buffer, const Vector<String>& blobURLs, const Vector<String> blobFilePaths, ArrayBufferContentsArray* sharedBuffers > #if ENABLE(WEBASSEMBLY) > , WasmModuleArray* wasmModules > #endif >@@ -1760,7 +1757,7 @@ public: > { > if (!buffer.size()) > return std::make_pair(jsNull(), SerializationReturnCode::UnspecifiedError); >- CloneDeserializer deserializer(exec, globalObject, messagePorts, arrayBufferContentsArray, buffer, blobURLs, sessionID, blobFilePaths, sharedBuffers, WTFMove(imageBuffers) >+ CloneDeserializer deserializer(exec, globalObject, messagePorts, arrayBufferContentsArray, buffer, blobURLs, blobFilePaths, sharedBuffers, WTFMove(imageBuffers) > #if ENABLE(WEBASSEMBLY) > , wasmModules > #endif >@@ -1834,7 +1831,7 @@ private: > m_version = 0xFFFFFFFF; > } > >- CloneDeserializer(ExecState* exec, JSGlobalObject* globalObject, const Vector<RefPtr<MessagePort>>& messagePorts, ArrayBufferContentsArray* arrayBufferContents, const Vector<uint8_t>& buffer, const Vector<String>& blobURLs, const PAL::SessionID& sessionID, const Vector<String> blobFilePaths, ArrayBufferContentsArray* sharedBuffers, Vector<std::pair<std::unique_ptr<ImageBuffer>, bool>>&& imageBuffers >+ CloneDeserializer(ExecState* exec, JSGlobalObject* globalObject, const Vector<RefPtr<MessagePort>>& messagePorts, ArrayBufferContentsArray* arrayBufferContents, const Vector<uint8_t>& buffer, const Vector<String>& blobURLs, const Vector<String> blobFilePaths, ArrayBufferContentsArray* sharedBuffers, Vector<std::pair<std::unique_ptr<ImageBuffer>, bool>>&& imageBuffers > #if ENABLE(WEBASSEMBLY) > , WasmModuleArray* wasmModules > #endif >@@ -1849,7 +1846,6 @@ private: > , m_arrayBufferContents(arrayBufferContents) > , m_arrayBuffers(arrayBufferContents ? arrayBufferContents->size() : 0) > , m_blobURLs(blobURLs) >- , m_sessionID(sessionID) > , m_blobFilePaths(blobFilePaths) > , m_sharedBuffers(sharedBuffers) > , m_imageBuffers(WTFMove(imageBuffers)) >@@ -3059,7 +3055,6 @@ private: > ArrayBufferContentsArray* m_arrayBufferContents; > Vector<RefPtr<JSC::ArrayBuffer>> m_arrayBuffers; > Vector<String> m_blobURLs; >- PAL::SessionID m_sessionID; > Vector<String> m_blobFilePaths; > ArrayBufferContentsArray* m_sharedBuffers; > Vector<std::pair<std::unique_ptr<ImageBuffer>, bool>> m_imageBuffers; >@@ -3280,7 +3275,7 @@ SerializedScriptValue::SerializedScriptValue(Vector<uint8_t>&& buffer, std::uniq > { > } > >-SerializedScriptValue::SerializedScriptValue(Vector<uint8_t>&& buffer, const Vector<String>& blobURLs, const PAL::SessionID& sessionID, std::unique_ptr<ArrayBufferContentsArray> arrayBufferContentsArray, std::unique_ptr<ArrayBufferContentsArray> sharedBufferContentsArray, Vector<std::pair<std::unique_ptr<ImageBuffer>, bool>>&& imageBuffers >+SerializedScriptValue::SerializedScriptValue(Vector<uint8_t>&& buffer, const Vector<String>& blobURLs, std::unique_ptr<ArrayBufferContentsArray> arrayBufferContentsArray, std::unique_ptr<ArrayBufferContentsArray> sharedBufferContentsArray, Vector<std::pair<std::unique_ptr<ImageBuffer>, bool>>&& imageBuffers > #if ENABLE(WEBASSEMBLY) > , std::unique_ptr<WasmModuleArray> wasmModulesArray > #endif >@@ -3292,7 +3287,6 @@ SerializedScriptValue::SerializedScriptValue(Vector<uint8_t>&& buffer, const Vec > #if ENABLE(WEBASSEMBLY) > , m_wasmModulesArray(WTFMove(wasmModulesArray)) > #endif >- , m_sessionID(sessionID) > { > // Since this SerializedScriptValue is meant to be passed between threads, its String data members > // need to be isolatedCopies so we don't run into thread safety issues for the StringImpls. >@@ -3375,7 +3369,6 @@ RefPtr<SerializedScriptValue> SerializedScriptValue::create(ExecState& exec, JSV > { > Vector<uint8_t> buffer; > Vector<String> blobURLs; >- PAL::SessionID sessionID; > Vector<RefPtr<MessagePort>> dummyMessagePorts; > Vector<RefPtr<ImageBitmap>> dummyImageBitmaps; > Vector<RefPtr<JSC::ArrayBuffer>> dummyArrayBuffers; >@@ -3387,7 +3380,7 @@ RefPtr<SerializedScriptValue> SerializedScriptValue::create(ExecState& exec, JSV > #if ENABLE(WEBASSEMBLY) > dummyModules, > #endif >- blobURLs, sessionID, buffer, SerializationContext::Default, dummySharedBuffers); >+ blobURLs, buffer, SerializationContext::Default, dummySharedBuffers); > > #if ENABLE(WEBASSEMBLY) > ASSERT_WITH_MESSAGE(dummyModules.isEmpty(), "Wasm::Module serialization is only allowed in the postMessage context"); >@@ -3399,7 +3392,7 @@ RefPtr<SerializedScriptValue> SerializedScriptValue::create(ExecState& exec, JSV > if (code != SerializationReturnCode::SuccessfullyCompleted) > return nullptr; > >- return adoptRef(*new SerializedScriptValue(WTFMove(buffer), blobURLs, sessionID, nullptr, nullptr, { } >+ return adoptRef(*new SerializedScriptValue(WTFMove(buffer), blobURLs, nullptr, nullptr, { } > #if ENABLE(WEBASSEMBLY) > , nullptr > #endif >@@ -3455,7 +3448,6 @@ ExceptionOr<Ref<SerializedScriptValue>> SerializedScriptValue::create(ExecState& > > Vector<uint8_t> buffer; > Vector<String> blobURLs; >- PAL::SessionID sessionID; > #if ENABLE(WEBASSEMBLY) > WasmModuleArray wasmModules; > #endif >@@ -3464,7 +3456,7 @@ ExceptionOr<Ref<SerializedScriptValue>> SerializedScriptValue::create(ExecState& > #if ENABLE(WEBASSEMBLY) > wasmModules, > #endif >- blobURLs, sessionID, buffer, context, *sharedBuffers); >+ blobURLs, buffer, context, *sharedBuffers); > > if (code != SerializationReturnCode::SuccessfullyCompleted) > return exceptionForSerializationFailure(code); >@@ -3475,7 +3467,7 @@ ExceptionOr<Ref<SerializedScriptValue>> SerializedScriptValue::create(ExecState& > > auto imageBuffers = ImageBitmap::detachBitmaps(WTFMove(imageBitmaps)); > >- return adoptRef(*new SerializedScriptValue(WTFMove(buffer), blobURLs, sessionID, arrayBufferContentsArray.releaseReturnValue(), context == SerializationContext::WorkerPostMessage ? WTFMove(sharedBuffers) : nullptr, WTFMove(imageBuffers) >+ return adoptRef(*new SerializedScriptValue(WTFMove(buffer), blobURLs, arrayBufferContentsArray.releaseReturnValue(), context == SerializationContext::WorkerPostMessage ? WTFMove(sharedBuffers) : nullptr, WTFMove(imageBuffers) > #if ENABLE(WEBASSEMBLY) > , std::make_unique<WasmModuleArray>(wasmModules) > #endif >@@ -3523,13 +3515,12 @@ JSValue SerializedScriptValue::deserialize(ExecState& exec, JSGlobalObject* glob > { > Vector<String> dummyBlobs; > Vector<String> dummyPaths; >- PAL::SessionID dummySessionID; >- return deserialize(exec, globalObject, messagePorts, dummyBlobs, dummySessionID, dummyPaths, throwExceptions); >+ return deserialize(exec, globalObject, messagePorts, dummyBlobs, dummyPaths, throwExceptions); > } > >-JSValue SerializedScriptValue::deserialize(ExecState& exec, JSGlobalObject* globalObject, const Vector<RefPtr<MessagePort>>& messagePorts, const Vector<String>& blobURLs, const PAL::SessionID& sessionID, const Vector<String>& blobFilePaths, SerializationErrorMode throwExceptions) >+JSValue SerializedScriptValue::deserialize(ExecState& exec, JSGlobalObject* globalObject, const Vector<RefPtr<MessagePort>>& messagePorts, const Vector<String>& blobURLs, const Vector<String>& blobFilePaths, SerializationErrorMode throwExceptions) > { >- DeserializationResult result = CloneDeserializer::deserialize(&exec, globalObject, messagePorts, WTFMove(m_imageBuffers), m_arrayBufferContentsArray.get(), m_data, blobURLs, sessionID, blobFilePaths, m_sharedBufferContentsArray.get() >+ DeserializationResult result = CloneDeserializer::deserialize(&exec, globalObject, messagePorts, WTFMove(m_imageBuffers), m_arrayBufferContentsArray.get(), m_data, blobURLs, blobFilePaths, m_sharedBufferContentsArray.get() > #if ENABLE(WEBASSEMBLY) > , m_wasmModulesArray.get() > #endif >@@ -3583,7 +3574,6 @@ void SerializedScriptValue::writeBlobsToDiskForIndexedDB(CompletionHandler<void( > ASSERT(isMainThread()); > ASSERT(hasBlobURLs()); > >- // FIXME: Add m_sessionID as a parameter here. > blobRegistry().writeBlobsToTemporaryFiles(m_blobURLs, [completionHandler = WTFMove(completionHandler), this, protectedThis = makeRef(*this)] (auto&& blobFilePaths) mutable { > ASSERT(isMainThread()); > >@@ -3596,7 +3586,7 @@ void SerializedScriptValue::writeBlobsToDiskForIndexedDB(CompletionHandler<void( > > ASSERT(m_blobURLs.size() == blobFilePaths.size()); > >- completionHandler({ *this, m_blobURLs, m_sessionID, blobFilePaths }); >+ completionHandler({ *this, m_blobURLs, blobFilePaths }); > }); > } > >diff --git a/Source/WebCore/bindings/js/SerializedScriptValue.h b/Source/WebCore/bindings/js/SerializedScriptValue.h >index 7633bfd70821ade7bc9171a0757c14994fadc20c..6bb97e7a73b2d76197c59da979cfcfaf005d0bed 100644 >--- a/Source/WebCore/bindings/js/SerializedScriptValue.h >+++ b/Source/WebCore/bindings/js/SerializedScriptValue.h >@@ -78,7 +78,7 @@ public: > > WEBCORE_EXPORT JSC::JSValue deserialize(JSC::ExecState&, JSC::JSGlobalObject*, SerializationErrorMode = SerializationErrorMode::Throwing); > WEBCORE_EXPORT JSC::JSValue deserialize(JSC::ExecState&, JSC::JSGlobalObject*, const Vector<RefPtr<MessagePort>>&, SerializationErrorMode = SerializationErrorMode::Throwing); >- JSC::JSValue deserialize(JSC::ExecState&, JSC::JSGlobalObject*, const Vector<RefPtr<MessagePort>>&, const Vector<String>& blobURLs, const PAL::SessionID&, const Vector<String>& blobFilePaths, SerializationErrorMode = SerializationErrorMode::Throwing); >+ JSC::JSValue deserialize(JSC::ExecState&, JSC::JSGlobalObject*, const Vector<RefPtr<MessagePort>>&, const Vector<String>& blobURLs, const Vector<String>& blobFilePaths, SerializationErrorMode = SerializationErrorMode::Throwing); > > static uint32_t wireFormatVersion(); > >@@ -93,7 +93,6 @@ public: > > #if ENABLE(INDEXED_DATABASE) > Vector<String> blobURLsIsolatedCopy() const; >- const PAL::SessionID& sessionID() const { return m_sessionID; } > void writeBlobsToDiskForIndexedDB(CompletionHandler<void(IDBValue&&)>&&); > IDBValue writeBlobsToDiskForIndexedDBSynchronously(); > #endif // ENABLE(INDEXED_DATABASE) >@@ -112,7 +111,7 @@ public: > private: > WEBCORE_EXPORT SerializedScriptValue(Vector<unsigned char>&&); > WEBCORE_EXPORT SerializedScriptValue(Vector<unsigned char>&&, std::unique_ptr<ArrayBufferContentsArray>); >- SerializedScriptValue(Vector<unsigned char>&&, const Vector<String>& blobURLs, const PAL::SessionID&, std::unique_ptr<ArrayBufferContentsArray>, std::unique_ptr<ArrayBufferContentsArray> sharedBuffers, Vector<std::pair<std::unique_ptr<ImageBuffer>, bool>>&& imageBuffers >+ SerializedScriptValue(Vector<unsigned char>&&, const Vector<String>& blobURLs, std::unique_ptr<ArrayBufferContentsArray>, std::unique_ptr<ArrayBufferContentsArray> sharedBuffers, Vector<std::pair<std::unique_ptr<ImageBuffer>, bool>>&& imageBuffers > #if ENABLE(WEBASSEMBLY) > , std::unique_ptr<WasmModuleArray> > #endif >@@ -126,7 +125,6 @@ private: > std::unique_ptr<WasmModuleArray> m_wasmModulesArray; > #endif > Vector<String> m_blobURLs; >- PAL::SessionID m_sessionID; > }; > > template<class Encoder>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 199320
:
373125
|
373139
|
375578
|
375689
|
375731