Changeset 225578 in webkit
- Timestamp:
- Dec 6, 2017 10:55:49 AM (6 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r225573 r225578 1 2017-12-06 Youenn Fablet <youenn@apple.com> 2 3 CacheStorageEngineConnection should protect its IPC Connection when doing asynchronous tasks 4 https://bugs.webkit.org/show_bug.cgi?id=180461 5 6 Reviewed by Chris Dumez. 7 8 Protecting the IPC connection instead of the CacheStorageEngineConnection 9 since CacheStorageEngineConnection only keeps a reference to the NetworkConnectionToWebProcess. 10 11 * NetworkProcess/cache/CacheStorageEngineConnection.cpp: 12 (WebKit::CacheStorageEngineConnection::open): 13 (WebKit::CacheStorageEngineConnection::remove): 14 (WebKit::CacheStorageEngineConnection::caches): 15 (WebKit::CacheStorageEngineConnection::retrieveRecords): 16 (WebKit::CacheStorageEngineConnection::deleteMatchingRecords): 17 (WebKit::CacheStorageEngineConnection::putRecords): 18 (WebKit::CacheStorageEngineConnection::clearMemoryRepresentation): 19 1 20 2017-12-06 Zan Dobersek <zdobersek@igalia.com> 2 21 -
trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.cpp
r222880 r225578 56 56 void CacheStorageEngineConnection::open(PAL::SessionID sessionID, uint64_t requestIdentifier, const String& origin, const String& cacheName) 57 57 { 58 Engine::from(sessionID).open(origin, cacheName, [ protectedThis = makeRef(*this), this, sessionID, requestIdentifier](const CacheIdentifierOrError& result) {59 m_connection.connection().send(Messages::WebCacheStorageConnection::OpenCompleted(requestIdentifier, result), sessionID.sessionID());58 Engine::from(sessionID).open(origin, cacheName, [connection = makeRef(m_connection.connection()), this, sessionID, requestIdentifier](const CacheIdentifierOrError& result) { 59 connection->send(Messages::WebCacheStorageConnection::OpenCompleted(requestIdentifier, result), sessionID.sessionID()); 60 60 }); 61 61 } … … 63 63 void CacheStorageEngineConnection::remove(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier) 64 64 { 65 Engine::from(sessionID).remove(cacheIdentifier, [ protectedThis = makeRef(*this), this, sessionID, requestIdentifier](const CacheIdentifierOrError& result) {66 m_connection.connection().send(Messages::WebCacheStorageConnection::RemoveCompleted(requestIdentifier, result), sessionID.sessionID());65 Engine::from(sessionID).remove(cacheIdentifier, [connection = makeRef(m_connection.connection()), sessionID, requestIdentifier](const CacheIdentifierOrError& result) { 66 connection->send(Messages::WebCacheStorageConnection::RemoveCompleted(requestIdentifier, result), sessionID.sessionID()); 67 67 }); 68 68 } … … 70 70 void CacheStorageEngineConnection::caches(PAL::SessionID sessionID, uint64_t requestIdentifier, const String& origin, uint64_t updateCounter) 71 71 { 72 Engine::from(sessionID).retrieveCaches(origin, updateCounter, [ protectedThis = makeRef(*this), this, sessionID, origin, requestIdentifier](CacheInfosOrError&& result) {73 m_connection.connection().send(Messages::WebCacheStorageConnection::UpdateCaches(requestIdentifier, result), sessionID.sessionID());72 Engine::from(sessionID).retrieveCaches(origin, updateCounter, [connection = makeRef(m_connection.connection()), sessionID, origin, requestIdentifier](CacheInfosOrError&& result) { 73 connection->send(Messages::WebCacheStorageConnection::UpdateCaches(requestIdentifier, result), sessionID.sessionID()); 74 74 }); 75 75 } … … 77 77 void CacheStorageEngineConnection::retrieveRecords(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, WebCore::URL&& url) 78 78 { 79 Engine::from(sessionID).retrieveRecords(cacheIdentifier, WTFMove(url), [ protectedThis = makeRef(*this), this, sessionID, requestIdentifier](RecordsOrError&& result) {80 m_connection.connection().send(Messages::WebCacheStorageConnection::UpdateRecords(requestIdentifier, result), sessionID.sessionID());79 Engine::from(sessionID).retrieveRecords(cacheIdentifier, WTFMove(url), [connection = makeRef(m_connection.connection()), sessionID, requestIdentifier](RecordsOrError&& result) { 80 connection->send(Messages::WebCacheStorageConnection::UpdateRecords(requestIdentifier, result), sessionID.sessionID()); 81 81 }); 82 82 } … … 84 84 void CacheStorageEngineConnection::deleteMatchingRecords(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, WebCore::ResourceRequest&& request, WebCore::CacheQueryOptions&& options) 85 85 { 86 Engine::from(sessionID).deleteMatchingRecords(cacheIdentifier, WTFMove(request), WTFMove(options), [ protectedThis = makeRef(*this), this, sessionID, requestIdentifier](RecordIdentifiersOrError&& result) {87 m_connection.connection().send(Messages::WebCacheStorageConnection::DeleteRecordsCompleted(requestIdentifier, result), sessionID.sessionID());86 Engine::from(sessionID).deleteMatchingRecords(cacheIdentifier, WTFMove(request), WTFMove(options), [connection = makeRef(m_connection.connection()), sessionID, requestIdentifier](RecordIdentifiersOrError&& result) { 87 connection->send(Messages::WebCacheStorageConnection::DeleteRecordsCompleted(requestIdentifier, result), sessionID.sessionID()); 88 88 }); 89 89 } … … 91 91 void CacheStorageEngineConnection::putRecords(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, Vector<Record>&& records) 92 92 { 93 Engine::from(sessionID).putRecords(cacheIdentifier, WTFMove(records), [ protectedThis = makeRef(*this), this, sessionID, requestIdentifier](RecordIdentifiersOrError&& result) {94 m_connection.connection().send(Messages::WebCacheStorageConnection::PutRecordsCompleted(requestIdentifier, result), sessionID.sessionID());93 Engine::from(sessionID).putRecords(cacheIdentifier, WTFMove(records), [connection = makeRef(m_connection.connection()), sessionID, requestIdentifier](RecordIdentifiersOrError&& result) { 94 connection->send(Messages::WebCacheStorageConnection::PutRecordsCompleted(requestIdentifier, result), sessionID.sessionID()); 95 95 }); 96 96 } … … 130 130 void CacheStorageEngineConnection::clearMemoryRepresentation(PAL::SessionID sessionID, uint64_t requestIdentifier, const String& origin) 131 131 { 132 Engine::from(sessionID).clearMemoryRepresentation(origin, [ protectedThis = makeRef(*this), this, sessionID, requestIdentifier] (std::optional<Error>&& error) {133 m_connection.connection().send(Messages::WebCacheStorageConnection::ClearMemoryRepresentationCompleted(requestIdentifier, error), sessionID.sessionID());132 Engine::from(sessionID).clearMemoryRepresentation(origin, [connection = makeRef(m_connection.connection()), sessionID, requestIdentifier] (std::optional<Error>&& error) { 133 connection->send(Messages::WebCacheStorageConnection::ClearMemoryRepresentationCompleted(requestIdentifier, error), sessionID.sessionID()); 134 134 }); 135 135 }
Note: See TracChangeset
for help on using the changeset viewer.