Changeset 196715 in webkit
- Timestamp:
- Feb 17, 2016 12:42:55 PM (8 years ago)
- Location:
- trunk/Source
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r196712 r196715 1 2016-02-17 Brady Eidson <beidson@apple.com> 2 3 Modern IDB: Encoder/Decoder/Messaging scaffolding for WK2 IPC. 4 https://bugs.webkit.org/show_bug.cgi?id=154351 5 6 Reviewed by Alex Christensen. 7 8 No change in behavior yet; Just laying the groundwork. 9 10 * Modules/indexeddb/IDBDatabaseIdentifier.h: 11 (WebCore::IDBDatabaseIdentifier::encode): 12 (WebCore::IDBDatabaseIdentifier::decode): 13 14 * Modules/indexeddb/shared/IDBCursorInfo.h: 15 (WebCore::IDBCursorInfo::encode): 16 (WebCore::IDBCursorInfo::decode): 17 18 * Modules/indexeddb/shared/IDBIndexInfo.h: 19 (WebCore::IDBIndexInfo::encode): 20 (WebCore::IDBIndexInfo::decode): 21 22 * Modules/indexeddb/shared/IDBObjectStoreInfo.h: 23 (WebCore::IDBObjectStoreInfo::encode): 24 (WebCore::IDBObjectStoreInfo::decode): 25 26 * Modules/indexeddb/shared/IDBRequestData.h: 27 (WebCore::IDBRequestData::encode): 28 (WebCore::IDBRequestData::decode): 29 30 * Modules/indexeddb/shared/IDBResourceIdentifier.h: 31 (WebCore::IDBResourceIdentifier::encode): 32 (WebCore::IDBResourceIdentifier::decode): 33 34 * Modules/indexeddb/shared/IDBTransactionInfo.h: 35 (WebCore::IDBTransactionInfo::encode): 36 (WebCore::IDBTransactionInfo::decode): 37 1 38 2016-02-17 Andreas Kling <akling@apple.com> 2 39 -
trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.h
r195090 r196715 95 95 String databaseDirectoryRelativeToRoot(const String& rootDirectory) const; 96 96 97 template<class Encoder> void encode(Encoder&) const; 98 template<class Decoder> static bool decode(Decoder&, IDBDatabaseIdentifier&); 99 97 100 #ifndef NDEBUG 98 101 String debugString() const; … … 117 120 }; 118 121 122 template<class Encoder> 123 void IDBDatabaseIdentifier::encode(Encoder& encoder) const 124 { 125 encoder << m_databaseName << m_openingOrigin << m_mainFrameOrigin; 126 } 127 128 template<class Decoder> 129 bool IDBDatabaseIdentifier::decode(Decoder& decoder, IDBDatabaseIdentifier& identifier) 130 { 131 if (!decoder.decode(identifier.m_databaseName)) 132 return false; 133 134 if (!decoder.decode(identifier.m_openingOrigin)) 135 return false; 136 137 if (!decoder.decode(identifier.m_mainFrameOrigin)) 138 return false; 139 140 return true; 141 } 142 119 143 } // namespace WebCore 120 144 -
trunk/Source/WebCore/Modules/indexeddb/shared/IDBCursorInfo.h
r196705 r196715 82 82 IDBResourceIdentifier m_cursorIdentifier; 83 83 IDBResourceIdentifier m_transactionIdentifier; 84 uint64_t m_objectStoreIdentifier ;85 uint64_t m_sourceIdentifier ;84 uint64_t m_objectStoreIdentifier { 0 }; 85 uint64_t m_sourceIdentifier { 0 }; 86 86 87 87 IDBKeyRangeData m_range; … … 92 92 }; 93 93 94 template<class Decoder> bool IDBCursorInfo::decode(Decoder&, IDBCursorInfo&) 94 template<class Encoder> 95 void IDBCursorInfo::encode(Encoder& encoder) const 95 96 { 96 return false; 97 encoder << m_cursorIdentifier << m_transactionIdentifier << m_objectStoreIdentifier << m_sourceIdentifier << m_range; 98 99 encoder.encodeEnum(m_source); 100 encoder.encodeEnum(m_direction); 101 encoder.encodeEnum(m_type); 102 } 103 104 template<class Decoder> 105 bool IDBCursorInfo::decode(Decoder& decoder, IDBCursorInfo& info) 106 { 107 if (!decoder.decode(info.m_cursorIdentifier)) 108 return false; 109 110 if (!decoder.decode(info.m_transactionIdentifier)) 111 return false; 112 113 if (!decoder.decode(info.m_objectStoreIdentifier)) 114 return false; 115 116 if (!decoder.decode(info.m_sourceIdentifier)) 117 return false; 118 119 if (!decoder.decode(info.m_range)) 120 return false; 121 122 if (!decoder.decodeEnum(info.m_source)) 123 return false; 124 125 if (!decoder.decodeEnum(info.m_direction)) 126 return false; 127 128 if (!decoder.decodeEnum(info.m_type)) 129 return false; 130 131 return true; 97 132 } 98 133 -
trunk/Source/WebCore/Modules/indexeddb/shared/IDBIndexInfo.h
r196705 r196715 64 64 }; 65 65 66 template<class Decoder> bool IDBIndexInfo::decode(Decoder&, IDBIndexInfo&) 66 template<class Encoder> 67 void IDBIndexInfo::encode(Encoder& encoder) const 67 68 { 68 return false; 69 encoder << m_identifier << m_objectStoreIdentifier << m_name << m_keyPath << m_unique << m_multiEntry; 70 } 71 72 template<class Decoder> 73 bool IDBIndexInfo::decode(Decoder& decoder, IDBIndexInfo& info) 74 { 75 if (!decoder.decode(info.m_identifier)) 76 return false; 77 78 if (!decoder.decode(info.m_objectStoreIdentifier)) 79 return false; 80 81 if (!decoder.decode(info.m_name)) 82 return false; 83 84 if (!decoder.decode(info.m_keyPath)) 85 return false; 86 87 if (!decoder.decode(info.m_unique)) 88 return false; 89 90 if (!decoder.decode(info.m_multiEntry)) 91 return false; 92 93 return true; 69 94 } 70 95 -
trunk/Source/WebCore/Modules/indexeddb/shared/IDBObjectStoreInfo.h
r196705 r196715 81 81 }; 82 82 83 template<class Decoder> bool IDBObjectStoreInfo::decode(Decoder&, IDBObjectStoreInfo&) 83 template<class Encoder> 84 void IDBObjectStoreInfo::encode(Encoder& encoder) const 84 85 { 85 return false; 86 encoder << m_identifier << m_name << m_keyPath << m_autoIncrement << m_maxIndexID << m_indexMap; 87 } 88 89 template<class Decoder> 90 bool IDBObjectStoreInfo::decode(Decoder& decoder, IDBObjectStoreInfo& info) 91 { 92 if (!decoder.decode(info.m_identifier)) 93 return false; 94 95 if (!decoder.decode(info.m_name)) 96 return false; 97 98 if (!decoder.decode(info.m_keyPath)) 99 return false; 100 101 if (!decoder.decode(info.m_autoIncrement)) 102 return false; 103 104 if (!decoder.decode(info.m_maxIndexID)) 105 return false; 106 107 if (!decoder.decode(info.m_indexMap)) 108 return false; 109 110 return true; 86 111 } 87 112 -
trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h
r196705 r196715 88 88 }; 89 89 90 template<class Decoder> bool IDBRequestData::decode(Decoder&, IDBRequestData&) 90 template<class Encoder> 91 void IDBRequestData::encode(Encoder& encoder) const 91 92 { 92 return false; 93 encoder << m_serverConnectionIdentifier << m_objectStoreIdentifier << m_indexIdentifier << m_databaseIdentifier << m_requestedVersion; 94 95 encoder.encodeEnum(m_indexRecordType); 96 encoder.encodeEnum(m_requestType); 97 98 encoder << !!m_requestIdentifier; 99 if (m_requestIdentifier) 100 encoder << *m_requestIdentifier; 101 102 encoder << !!m_transactionIdentifier; 103 if (m_transactionIdentifier) 104 encoder << *m_transactionIdentifier; 105 106 encoder << !!m_cursorIdentifier; 107 if (m_cursorIdentifier) 108 encoder << *m_cursorIdentifier; 109 } 110 111 template<class Decoder> 112 bool IDBRequestData::decode(Decoder& decoder, IDBRequestData& request) 113 { 114 if (!decoder.decode(request.m_serverConnectionIdentifier)) 115 return false; 116 117 if (!decoder.decode(request.m_objectStoreIdentifier)) 118 return false; 119 120 if (!decoder.decode(request.m_indexIdentifier)) 121 return false; 122 123 if (!decoder.decode(request.m_databaseIdentifier)) 124 return false; 125 126 if (!decoder.decode(request.m_requestedVersion)) 127 return false; 128 129 if (!decoder.decodeEnum(request.m_indexRecordType)) 130 return false; 131 132 if (!decoder.decodeEnum(request.m_requestType)) 133 return false; 134 135 bool hasObject; 136 137 if (!decoder.decode(hasObject)) 138 return false; 139 if (hasObject) { 140 IDBResourceIdentifier identifier; 141 if (!decoder.decode(identifier)) 142 return false; 143 request.m_requestIdentifier = std::make_unique<IDBResourceIdentifier>(identifier); 144 } 145 146 if (!decoder.decode(hasObject)) 147 return false; 148 if (hasObject) { 149 IDBResourceIdentifier identifier; 150 if (!decoder.decode(identifier)) 151 return false; 152 request.m_transactionIdentifier = std::make_unique<IDBResourceIdentifier>(identifier); 153 } 154 155 if (!decoder.decode(hasObject)) 156 return false; 157 if (hasObject) { 158 IDBResourceIdentifier identifier; 159 if (!decoder.decode(identifier)) 160 return false; 161 request.m_cursorIdentifier = std::make_unique<IDBResourceIdentifier>(identifier); 162 } 163 164 return true; 93 165 } 94 166 -
trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h
r196705 r196715 119 119 }; 120 120 121 template<class Decoder> bool IDBResourceIdentifier::decode(Decoder&, IDBResourceIdentifier&) 121 template<class Encoder> 122 void IDBResourceIdentifier::encode(Encoder& encoder) const 122 123 { 123 return false; 124 encoder << m_idbConnectionIdentifier << m_resourceNumber; 125 } 126 127 template<class Decoder> 128 bool IDBResourceIdentifier::decode(Decoder& decoder, IDBResourceIdentifier& identifier) 129 { 130 if (!decoder.decode(identifier.m_idbConnectionIdentifier)) 131 return false; 132 133 if (!decoder.decode(identifier.m_resourceNumber)) 134 return false; 135 136 return true; 124 137 } 125 138 -
trunk/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.h
r196705 r196715 81 81 }; 82 82 83 template<class Decoder> bool IDBTransactionInfo::decode(Decoder&, IDBTransactionInfo&) 83 template<class Encoder> 84 void IDBTransactionInfo::encode(Encoder& encoder) const 84 85 { 85 return false; 86 encoder << m_identifier << m_newVersion << m_objectStores; 87 encoder.encodeEnum(m_mode); 88 } 89 90 template<class Decoder> 91 bool IDBTransactionInfo::decode(Decoder& decoder, IDBTransactionInfo& info) 92 { 93 if (!decoder.decode(info.m_identifier)) 94 return false; 95 96 if (!decoder.decode(info.m_newVersion)) 97 return false; 98 99 if (!decoder.decode(info.m_objectStores)) 100 return false; 101 102 if (!decoder.decodeEnum(info.m_mode)) 103 return false; 104 105 return true; 86 106 } 87 107 -
trunk/Source/WebKit2/ChangeLog
r196711 r196715 1 2016-02-17 Brady Eidson <beidson@apple.com> 2 3 Modern IDB: Encoder/Decoder/Messaging scaffolding for WK2 IPC. 4 https://bugs.webkit.org/show_bug.cgi?id=154351 5 6 Reviewed by Alex Christensen. 7 8 No change in behavior yet; Just laying the groundwork. 9 10 Implement in all of the client->server message sends, requiring many Encoder/Decoders for 11 IDB objects to also be implemented: 12 * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: 13 (WebKit::WebIDBConnectionToServer::deleteDatabase): 14 (WebKit::WebIDBConnectionToServer::openDatabase): 15 (WebKit::WebIDBConnectionToServer::abortTransaction): 16 (WebKit::WebIDBConnectionToServer::commitTransaction): 17 (WebKit::WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction): 18 (WebKit::WebIDBConnectionToServer::createObjectStore): 19 (WebKit::WebIDBConnectionToServer::deleteObjectStore): 20 (WebKit::WebIDBConnectionToServer::clearObjectStore): 21 (WebKit::WebIDBConnectionToServer::createIndex): 22 (WebKit::WebIDBConnectionToServer::deleteIndex): 23 (WebKit::WebIDBConnectionToServer::putOrAdd): 24 (WebKit::WebIDBConnectionToServer::getRecord): 25 (WebKit::WebIDBConnectionToServer::getCount): 26 (WebKit::WebIDBConnectionToServer::deleteRecord): 27 (WebKit::WebIDBConnectionToServer::openCursor): 28 (WebKit::WebIDBConnectionToServer::iterateCursor): 29 (WebKit::WebIDBConnectionToServer::establishTransaction): 30 (WebKit::WebIDBConnectionToServer::databaseConnectionClosed): 31 (WebKit::WebIDBConnectionToServer::abortOpenAndUpgradeNeeded): 32 (WebKit::WebIDBConnectionToServer::didFireVersionChangeEvent): 33 1 34 2016-02-17 Alex Christensen <achristensen@webkit.org> 2 35 -
trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp
r196705 r196715 29 29 #if ENABLE(INDEXED_DATABASE) 30 30 31 #include "DataReference.h" 31 32 #include "DatabaseToWebProcessConnectionMessages.h" 33 #include "WebIDBConnectionToClientMessages.h" 32 34 #include "WebProcess.h" 33 35 #include "WebToDatabaseProcessConnection.h" … … 86 88 } 87 89 88 void WebIDBConnectionToServer::deleteDatabase(IDBRequestData&) 89 { 90 } 91 92 void WebIDBConnectionToServer::openDatabase(IDBRequestData&) 93 { 94 } 95 96 void WebIDBConnectionToServer::abortTransaction(IDBResourceIdentifier&) 97 { 98 } 99 100 void WebIDBConnectionToServer::commitTransaction(IDBResourceIdentifier&) 101 { 102 } 103 104 void WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction(IDBResourceIdentifier&) 105 { 106 } 107 108 void WebIDBConnectionToServer::createObjectStore(const IDBRequestData&, const IDBObjectStoreInfo&) 109 { 110 } 111 112 void WebIDBConnectionToServer::deleteObjectStore(const IDBRequestData&, const String& objectStoreName) 113 { 114 } 115 116 void WebIDBConnectionToServer::clearObjectStore(const IDBRequestData&, uint64_t objectStoreIdentifier) 117 { 118 } 119 120 void WebIDBConnectionToServer::createIndex(const IDBRequestData&, const IDBIndexInfo&) 121 { 122 } 123 124 void WebIDBConnectionToServer::deleteIndex(const IDBRequestData&, uint64_t objectStoreIdentifier, const String& indexName) 125 { 126 } 127 128 void WebIDBConnectionToServer::putOrAdd(const IDBRequestData&, IDBKey*, SerializedScriptValue&, const IndexedDB::ObjectStoreOverwriteMode) 129 { 130 } 131 132 void WebIDBConnectionToServer::getRecord(const IDBRequestData&, const IDBKeyRangeData&) 133 { 134 } 135 136 void WebIDBConnectionToServer::getCount(const IDBRequestData&, const IDBKeyRangeData&) 137 { 138 } 139 140 void WebIDBConnectionToServer::deleteRecord(const IDBRequestData&, const IDBKeyRangeData&) 141 { 142 } 143 144 void WebIDBConnectionToServer::openCursor(const IDBRequestData&, const IDBCursorInfo&) 145 { 146 } 147 148 void WebIDBConnectionToServer::iterateCursor(const IDBRequestData&, const IDBKeyData&, unsigned long count) 149 { 150 } 151 152 void WebIDBConnectionToServer::establishTransaction(uint64_t databaseConnectionIdentifier, const IDBTransactionInfo&) 153 { 90 void WebIDBConnectionToServer::deleteDatabase(IDBRequestData& requestData) 91 { 92 send(Messages::WebIDBConnectionToClient::DeleteDatabase(requestData)); 93 } 94 95 void WebIDBConnectionToServer::openDatabase(IDBRequestData& requestData) 96 { 97 send(Messages::WebIDBConnectionToClient::OpenDatabase(requestData)); 98 } 99 100 void WebIDBConnectionToServer::abortTransaction(IDBResourceIdentifier& transactionIdentifier) 101 { 102 send(Messages::WebIDBConnectionToClient::AbortTransaction(transactionIdentifier)); 103 } 104 105 void WebIDBConnectionToServer::commitTransaction(IDBResourceIdentifier& transactionIdentifier) 106 { 107 send(Messages::WebIDBConnectionToClient::CommitTransaction(transactionIdentifier)); 108 } 109 110 void WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction(IDBResourceIdentifier& transactionIdentifier) 111 { 112 send(Messages::WebIDBConnectionToClient::DidFinishHandlingVersionChangeTransaction(transactionIdentifier)); 113 } 114 115 void WebIDBConnectionToServer::createObjectStore(const IDBRequestData& requestData, const IDBObjectStoreInfo& info) 116 { 117 send(Messages::WebIDBConnectionToClient::CreateObjectStore(requestData, info)); 118 } 119 120 void WebIDBConnectionToServer::deleteObjectStore(const IDBRequestData& requestData, const String& objectStoreName) 121 { 122 send(Messages::WebIDBConnectionToClient::DeleteObjectStore(requestData, objectStoreName)); 123 } 124 125 void WebIDBConnectionToServer::clearObjectStore(const IDBRequestData& requestData, uint64_t objectStoreIdentifier) 126 { 127 send(Messages::WebIDBConnectionToClient::ClearObjectStore(requestData, objectStoreIdentifier)); 128 } 129 130 void WebIDBConnectionToServer::createIndex(const IDBRequestData& requestData, const IDBIndexInfo& info) 131 { 132 send(Messages::WebIDBConnectionToClient::CreateIndex(requestData, info)); 133 } 134 135 void WebIDBConnectionToServer::deleteIndex(const IDBRequestData& requestData, uint64_t objectStoreIdentifier, const String& indexName) 136 { 137 send(Messages::WebIDBConnectionToClient::DeleteIndex(requestData, objectStoreIdentifier, indexName)); 138 } 139 140 void WebIDBConnectionToServer::putOrAdd(const IDBRequestData& requestData, IDBKey* key, SerializedScriptValue& value, const IndexedDB::ObjectStoreOverwriteMode mode) 141 { 142 IDBKeyData keyData(key); 143 IPC::DataReference valueData(value.data()); 144 send(Messages::WebIDBConnectionToClient::PutOrAdd(requestData, keyData, valueData, mode != IndexedDB::ObjectStoreOverwriteMode::NoOverwrite)); 145 } 146 147 void WebIDBConnectionToServer::getRecord(const IDBRequestData& requestData, const IDBKeyRangeData& range) 148 { 149 send(Messages::WebIDBConnectionToClient::GetRecord(requestData, range)); 150 } 151 152 void WebIDBConnectionToServer::getCount(const IDBRequestData& requestData, const IDBKeyRangeData& range) 153 { 154 send(Messages::WebIDBConnectionToClient::GetCount(requestData, range)); 155 } 156 157 void WebIDBConnectionToServer::deleteRecord(const IDBRequestData& requestData, const IDBKeyRangeData& range) 158 { 159 send(Messages::WebIDBConnectionToClient::DeleteRecord(requestData, range)); 160 } 161 162 void WebIDBConnectionToServer::openCursor(const IDBRequestData& requestData, const IDBCursorInfo& info) 163 { 164 send(Messages::WebIDBConnectionToClient::OpenCursor(requestData, info)); 165 } 166 167 void WebIDBConnectionToServer::iterateCursor(const IDBRequestData& requestData, const IDBKeyData& key, unsigned long count) 168 { 169 send(Messages::WebIDBConnectionToClient::IterateCursor(requestData, key, count)); 170 } 171 172 void WebIDBConnectionToServer::establishTransaction(uint64_t databaseConnectionIdentifier, const IDBTransactionInfo& info) 173 { 174 send(Messages::WebIDBConnectionToClient::EstablishTransaction(databaseConnectionIdentifier, info)); 154 175 } 155 176 156 177 void WebIDBConnectionToServer::databaseConnectionClosed(uint64_t databaseConnectionIdentifier) 157 178 { 179 send(Messages::WebIDBConnectionToClient::DatabaseConnectionClosed(databaseConnectionIdentifier)); 158 180 } 159 181 160 182 void WebIDBConnectionToServer::abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier) 161 183 { 184 send(Messages::WebIDBConnectionToClient::AbortOpenAndUpgradeNeeded(databaseConnectionIdentifier, transactionIdentifier)); 162 185 } 163 186 164 187 void WebIDBConnectionToServer::didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier) 165 188 { 189 send(Messages::WebIDBConnectionToClient::DidFireVersionChangeEvent(databaseConnectionIdentifier, requestIdentifier)); 166 190 } 167 191
Note: See TracChangeset
for help on using the changeset viewer.