Title: [200484] trunk/Source/WebCore
- Revision
- 200484
- Author
- beid...@apple.com
- Date
- 2016-05-05 15:14:02 -0700 (Thu, 05 May 2016)
Log Message
Modern IDB: Add isolatedCopy to a few more objects.
https://bugs.webkit.org/show_bug.cgi?id=157330
Reviewed by Alex Christensen.
No new tests (No current change in behavior, will be tested as bug 149953 makes progress).
* Modules/indexeddb/shared/IDBRequestData.cpp:
(WebCore::IDBRequestData::IDBRequestData):
(WebCore::IDBRequestData::isolatedCopy):
* Modules/indexeddb/shared/IDBRequestData.h:
* Modules/indexeddb/shared/IDBResultData.cpp:
(WebCore::IDBResultData::IDBResultData):
(WebCore::IDBResultData::isolatedCopy):
* Modules/indexeddb/shared/IDBResultData.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (200483 => 200484)
--- trunk/Source/WebCore/ChangeLog 2016-05-05 22:13:58 UTC (rev 200483)
+++ trunk/Source/WebCore/ChangeLog 2016-05-05 22:14:02 UTC (rev 200484)
@@ -1,5 +1,24 @@
2016-05-04 Brady Eidson <beid...@apple.com>
+ Modern IDB: Add isolatedCopy to a few more objects.
+ https://bugs.webkit.org/show_bug.cgi?id=157330
+
+ Reviewed by Alex Christensen.
+
+ No new tests (No current change in behavior, will be tested as bug 149953 makes progress).
+
+ * Modules/indexeddb/shared/IDBRequestData.cpp:
+ (WebCore::IDBRequestData::IDBRequestData):
+ (WebCore::IDBRequestData::isolatedCopy):
+ * Modules/indexeddb/shared/IDBRequestData.h:
+
+ * Modules/indexeddb/shared/IDBResultData.cpp:
+ (WebCore::IDBResultData::IDBResultData):
+ (WebCore::IDBResultData::isolatedCopy):
+ * Modules/indexeddb/shared/IDBResultData.h:
+
+2016-05-04 Brady Eidson <beid...@apple.com>
+
Modern IDB: Add thread identifiers and assertions to IDB DOM objects.
https://bugs.webkit.org/show_bug.cgi?id=157329
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp (200483 => 200484)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp 2016-05-05 22:13:58 UTC (rev 200483)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp 2016-05-05 22:14:02 UTC (rev 200484)
@@ -78,6 +78,36 @@
m_cursorIdentifier = std::make_unique<IDBResourceIdentifier>(*other.m_cursorIdentifier);
}
+IDBRequestData::IDBRequestData(const IDBRequestData& that, IsolatedCopyTag)
+{
+ isolatedCopy(that, *this);
+}
+
+
+IDBRequestData IDBRequestData::isolatedCopy() const
+{
+ return { *this, IsolatedCopy };
+}
+
+void IDBRequestData::isolatedCopy(const IDBRequestData& source, IDBRequestData& destination)
+{
+ destination.m_serverConnectionIdentifier = source.m_serverConnectionIdentifier;
+ destination.m_objectStoreIdentifier = source.m_objectStoreIdentifier;
+ destination.m_indexIdentifier = source.m_indexIdentifier;
+ destination.m_indexRecordType = source.m_indexRecordType;
+ destination.m_requestedVersion = source.m_requestedVersion;
+ destination.m_requestType = source.m_requestType;
+
+ destination.m_databaseIdentifier = source.m_databaseIdentifier.isolatedCopy();
+
+ if (source.m_requestIdentifier)
+ destination.m_requestIdentifier = std::make_unique<IDBResourceIdentifier>(*source.m_requestIdentifier);
+ if (source.m_transactionIdentifier)
+ destination.m_transactionIdentifier = std::make_unique<IDBResourceIdentifier>(*source.m_transactionIdentifier);
+ if (source.m_cursorIdentifier)
+ destination.m_cursorIdentifier = std::make_unique<IDBResourceIdentifier>(*source.m_cursorIdentifier);
+}
+
uint64_t IDBRequestData::serverConnectionIdentifier() const
{
ASSERT(m_serverConnectionIdentifier);
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h (200483 => 200484)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h 2016-05-05 22:13:58 UTC (rev 200483)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h 2016-05-05 22:14:02 UTC (rev 200484)
@@ -52,6 +52,10 @@
explicit IDBRequestData(IDBClient::TransactionOperation&);
IDBRequestData(const IDBRequestData&);
+ enum IsolatedCopyTag { IsolatedCopy };
+ IDBRequestData(const IDBRequestData&, IsolatedCopyTag);
+ IDBRequestData isolatedCopy() const;
+
uint64_t serverConnectionIdentifier() const;
IDBResourceIdentifier requestIdentifier() const;
IDBResourceIdentifier transactionIdentifier() const;
@@ -74,6 +78,8 @@
template<class Decoder> static bool decode(Decoder&, IDBRequestData&);
private:
+ static void isolatedCopy(const IDBRequestData& source, IDBRequestData& destination);
+
uint64_t m_serverConnectionIdentifier { 0 };
std::unique_ptr<IDBResourceIdentifier> m_requestIdentifier;
std::unique_ptr<IDBResourceIdentifier> m_transactionIdentifier;
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBResultData.cpp (200483 => 200484)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBResultData.cpp 2016-05-05 22:13:58 UTC (rev 200483)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBResultData.cpp 2016-05-05 22:14:02 UTC (rev 200484)
@@ -66,6 +66,34 @@
m_getResult = std::make_unique<IDBGetResult>(*other.m_getResult);
}
+IDBResultData::IDBResultData(const IDBResultData& that, IsolatedCopyTag)
+{
+ isolatedCopy(that, *this);
+}
+
+IDBResultData IDBResultData::isolatedCopy() const
+{
+ return { *this, IsolatedCopy };
+}
+
+void IDBResultData::isolatedCopy(const IDBResultData& source, IDBResultData& destination)
+{
+ destination.m_type = source.m_type;
+ destination.m_requestIdentifier = source.m_requestIdentifier.isolatedCopy();
+ destination.m_error = source.m_error.isolatedCopy();
+ destination.m_databaseConnectionIdentifier = source.m_databaseConnectionIdentifier;
+ destination.m_resultInteger = source.m_resultInteger;
+
+ if (source.m_databaseInfo)
+ destination.m_databaseInfo = std::make_unique<IDBDatabaseInfo>(*source.m_databaseInfo, IDBDatabaseInfo::IsolatedCopy);
+ if (source.m_transactionInfo)
+ destination.m_transactionInfo = std::make_unique<IDBTransactionInfo>(*source.m_transactionInfo, IDBTransactionInfo::IsolatedCopy);
+ if (source.m_resultKey)
+ destination.m_resultKey = std::make_unique<IDBKeyData>(*source.m_resultKey, IDBKeyData::IsolatedCopy);
+ if (source.m_getResult)
+ destination.m_getResult = std::make_unique<IDBGetResult>(*source.m_getResult, IDBGetResult::IsolatedCopy);
+}
+
IDBResultData IDBResultData::error(const IDBResourceIdentifier& requestIdentifier, const IDBError& error)
{
IDBResultData result(requestIdentifier);
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBResultData.h (200483 => 200484)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBResultData.h 2016-05-05 22:13:58 UTC (rev 200483)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBResultData.h 2016-05-05 22:14:02 UTC (rev 200484)
@@ -84,6 +84,10 @@
WEBCORE_EXPORT IDBResultData(const IDBResultData&);
+ enum IsolatedCopyTag { IsolatedCopy };
+ IDBResultData(const IDBResultData&, IsolatedCopyTag);
+ IDBResultData isolatedCopy() const;
+
IDBResultType type() const { return m_type; }
IDBResourceIdentifier requestIdentifier() const { return m_requestIdentifier; }
@@ -106,6 +110,8 @@
IDBResultData(const IDBResourceIdentifier&);
IDBResultData(IDBResultType, const IDBResourceIdentifier&);
+ static void isolatedCopy(const IDBResultData& source, IDBResultData& destination);
+
IDBResultType m_type { IDBResultType::Error };
IDBResourceIdentifier m_requestIdentifier;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes