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

Reply via email to