WebKit Bugzilla
Attachment 358593 Details for
Bug 193237
: Always call CompletionHandler in Cache::store
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193237-20190108082451.patch (text/plain), 6.66 KB, created by
Alex Christensen
on 2019-01-08 08:24:52 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2019-01-08 08:24:52 PST
Size:
6.66 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 239724) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,20 @@ >+2019-01-08 Alex Christensen <achristensen@webkit.org> >+ >+ Always call CompletionHandler in Cache::store >+ https://bugs.webkit.org/show_bug.cgi?id=193237 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ No change in behavior. This just fixes an assertion introduced in r239710 when the speculative loader finishes. >+ >+ * NetworkProcess/NetworkResourceLoader.cpp: >+ (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry): >+ * NetworkProcess/cache/NetworkCache.cpp: >+ (WebKit::NetworkCache::Cache::store): >+ * NetworkProcess/cache/NetworkCache.h: >+ * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: >+ (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading): >+ > 2019-01-08 Carlos Garcia Campos <cgarcia@igalia.com> > > Unreviewed. Update OptionsGTK.cmake and NEWS for 2.23.2 release >Index: Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (revision 239680) >+++ Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (working copy) >@@ -794,12 +794,12 @@ void NetworkResourceLoader::tryStoreAsCa > if (!m_bufferedDataForCache) > return; > >- m_cache->store(m_networkLoad->currentRequest(), m_response, WTFMove(m_bufferedDataForCache), [loader = makeRef(*this)](auto& mappedBody) mutable { >+ m_cache->store(m_networkLoad->currentRequest(), m_response, WTFMove(m_bufferedDataForCache), [loader = makeRef(*this)](auto* mappedBody) mutable { > #if ENABLE(SHAREABLE_RESOURCE) >- if (mappedBody.shareableResourceHandle.isNull()) >+ if (!mappedBody || mappedBody->shareableResourceHandle.isNull()) > return; > LOG(NetworkCache, "(NetworkProcess) sending DidCacheResource"); >- loader->send(Messages::NetworkProcessConnection::DidCacheResource(loader->originalRequest(), mappedBody.shareableResourceHandle, loader->sessionID())); >+ loader->send(Messages::NetworkProcessConnection::DidCacheResource(loader->originalRequest(), mappedBody->shareableResourceHandle, loader->sessionID())); > #endif > }); > } >Index: Source/WebKit/NetworkProcess/cache/NetworkCache.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/cache/NetworkCache.cpp (revision 239710) >+++ Source/WebKit/NetworkProcess/cache/NetworkCache.cpp (working copy) >@@ -371,7 +371,7 @@ std::unique_ptr<Entry> Cache::makeRedire > return std::make_unique<Entry>(makeCacheKey(request), response, redirectRequest, WebCore::collectVaryingRequestHeaders(request, response)); > } > >-std::unique_ptr<Entry> Cache::store(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, RefPtr<WebCore::SharedBuffer>&& responseData, CompletionHandler<void(MappedBody&)>&& completionHandler) >+std::unique_ptr<Entry> Cache::store(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, RefPtr<WebCore::SharedBuffer>&& responseData, CompletionHandler<void(MappedBody*)>&& completionHandler) > { > ASSERT(responseData); > >@@ -391,6 +391,7 @@ std::unique_ptr<Entry> Cache::store(cons > if (m_statistics) > m_statistics->recordNotCachingResponse(key, storeDecision); > >+ completionHandler(nullptr); > return nullptr; > } > >@@ -406,7 +407,7 @@ std::unique_ptr<Entry> Cache::store(cons > mappedBody.shareableResource->createHandle(mappedBody.shareableResourceHandle); > } > #endif >- completionHandler(mappedBody); >+ completionHandler(&mappedBody); > LOG(NetworkCache, "(NetworkProcess) stored"); > }); > >Index: Source/WebKit/NetworkProcess/cache/NetworkCache.h >=================================================================== >--- Source/WebKit/NetworkProcess/cache/NetworkCache.h (revision 239710) >+++ Source/WebKit/NetworkProcess/cache/NetworkCache.h (working copy) >@@ -113,7 +113,7 @@ public: > }; > using RetrieveCompletionHandler = CompletionHandler<void(std::unique_ptr<Entry>, const RetrieveInfo&)>; > void retrieve(const WebCore::ResourceRequest&, const GlobalFrameID&, RetrieveCompletionHandler&&); >- std::unique_ptr<Entry> store(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, CompletionHandler<void(MappedBody&)>&&); >+ std::unique_ptr<Entry> store(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, CompletionHandler<void(MappedBody*)>&&); > std::unique_ptr<Entry> storeRedirect(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, const WebCore::ResourceRequest& redirectRequest, Optional<Seconds> maxAgeCap); > std::unique_ptr<Entry> update(const WebCore::ResourceRequest&, const GlobalFrameID&, const Entry&, const WebCore::ResourceResponse& validatingResponse); > >Index: Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp (revision 239670) >+++ Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp (working copy) >@@ -121,7 +121,7 @@ void SpeculativeLoad::didFinishLoading(c > if (m_didComplete) > return; > if (!m_cacheEntry && m_bufferedDataForCache) { >- m_cacheEntry = m_cache->store(m_originalRequest, m_response, m_bufferedDataForCache.copyRef(), [](auto& mappedBody) { }); >+ m_cacheEntry = m_cache->store(m_originalRequest, m_response, m_bufferedDataForCache.copyRef(), [](auto* mappedBody) { }); > // Create a synthetic cache entry if we can't store. > if (!m_cacheEntry && isStatusCodeCacheableByDefault(m_response.httpStatusCode())) > m_cacheEntry = m_cache->makeEntry(m_originalRequest, m_response, WTFMove(m_bufferedDataForCache)); >Index: Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp (revision 239670) >+++ Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp (working copy) >@@ -884,8 +884,10 @@ void Storage::store(const Record& record > ASSERT(RunLoop::isMain()); > ASSERT(!record.key.isNull()); > >- if (!m_capacity) >+ if (!m_capacity) { >+ completionHandler(0); > return; >+ } > > auto writeOperation = std::make_unique<WriteOperation>(*this, record, WTFMove(mappedBodyHandler), WTFMove(completionHandler)); > m_pendingWriteOperations.prepend(WTFMove(writeOperation));
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
Flags:
cdumez
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193237
:
358592
| 358593