Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp (201375 => 201376)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp 2016-05-25 10:58:30 UTC (rev 201375)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp 2016-05-25 10:59:06 UTC (rev 201376)
@@ -84,25 +84,25 @@
return Key(resourceKey.partition(), subresourcesType(), resourceKey.range(), resourceKey.identifier());
}
-static inline std::unique_ptr<ResourceRequest> constructRevalidationRequest(const Entry& entry, const SubresourceInfo& subResourceInfo)
+static inline ResourceRequest constructRevalidationRequest(const Entry& entry, const SubresourceInfo& subResourceInfo)
{
- auto revalidationRequest = std::make_unique<ResourceRequest>(entry.key().identifier());
- revalidationRequest->setHTTPHeaderFields(subResourceInfo.requestHeaders);
- revalidationRequest->setFirstPartyForCookies(subResourceInfo.firstPartyForCookies);
+ ResourceRequest revalidationRequest(entry.key().identifier());
+ revalidationRequest.setHTTPHeaderFields(subResourceInfo.requestHeaders);
+ revalidationRequest.setFirstPartyForCookies(subResourceInfo.firstPartyForCookies);
#if ENABLE(CACHE_PARTITIONING)
if (entry.key().hasPartition())
- revalidationRequest->setCachePartition(entry.key().partition());
+ revalidationRequest.setCachePartition(entry.key().partition());
#endif
ASSERT_WITH_MESSAGE(entry.key().range().isEmpty(), "range is not supported");
- revalidationRequest->makeUnconditional();
+ revalidationRequest.makeUnconditional();
String eTag = entry.response().httpHeaderField(HTTPHeaderName::ETag);
if (!eTag.isEmpty())
- revalidationRequest->setHTTPHeaderField(HTTPHeaderName::IfNoneMatch, eTag);
+ revalidationRequest.setHTTPHeaderField(HTTPHeaderName::IfNoneMatch, eTag);
String lastModified = entry.response().httpHeaderField(HTTPHeaderName::LastModified);
if (!lastModified.isEmpty())
- revalidationRequest->setHTTPHeaderField(HTTPHeaderName::IfModifiedSince, lastModified);
+ revalidationRequest.setHTTPHeaderField(HTTPHeaderName::IfModifiedSince, lastModified);
return revalidationRequest;
}
@@ -133,7 +133,7 @@
class SpeculativeLoadManager::PreloadedEntry : private ExpiringEntry {
WTF_MAKE_FAST_ALLOCATED;
public:
- PreloadedEntry(std::unique_ptr<Entry> entry, std::unique_ptr<ResourceRequest> speculativeValidationRequest, std::function<void()>&& lifetimeReachedHandler)
+ PreloadedEntry(std::unique_ptr<Entry> entry, Optional<ResourceRequest>&& speculativeValidationRequest, std::function<void()>&& lifetimeReachedHandler)
: ExpiringEntry(WTFMove(lifetimeReachedHandler))
, m_entry(WTFMove(entry))
, m_speculativeValidationRequest(WTFMove(speculativeValidationRequest))
@@ -145,12 +145,12 @@
return WTFMove(m_entry);
}
- ResourceRequest* revalidationRequest() const { return m_speculativeValidationRequest.get(); }
+ const Optional<ResourceRequest>& revalidationRequest() const { return m_speculativeValidationRequest; }
bool wasRevalidated() const { return !!m_speculativeValidationRequest; }
private:
std::unique_ptr<Entry> m_entry;
- std::unique_ptr<ResourceRequest> m_speculativeValidationRequest;
+ Optional<ResourceRequest> m_speculativeValidationRequest;
};
class SpeculativeLoadManager::PendingFrameLoad : public RefCounted<PendingFrameLoad> {
@@ -392,7 +392,7 @@
pendingFrameLoad->registerSubresourceLoad(request, resourceKey);
}
-void SpeculativeLoadManager::addPreloadedEntry(std::unique_ptr<Entry> entry, const GlobalFrameID& frameID, std::unique_ptr<ResourceRequest> revalidationRequest)
+void SpeculativeLoadManager::addPreloadedEntry(std::unique_ptr<Entry> entry, const GlobalFrameID& frameID, Optional<ResourceRequest>&& revalidationRequest)
{
ASSERT(entry);
ASSERT(!entry->needsValidation());
@@ -463,15 +463,14 @@
if (!key.range().isEmpty())
return;
- ResourceRequest* revalidationRequestPtr = constructRevalidationRequest(*entry, subresourceInfo).release();
+ ResourceRequest revalidationRequest = constructRevalidationRequest(*entry, subresourceInfo);
LOG(NetworkCacheSpeculativePreloading, "(NetworkProcess) Speculatively revalidating '%s':", key.identifier().utf8().data());
- auto revalidator = std::make_unique<SpeculativeLoad>(frameID, *revalidationRequestPtr, WTFMove(entry), [this, key, revalidationRequestPtr, frameID](std::unique_ptr<Entry> revalidatedEntry) {
+ auto revalidator = std::make_unique<SpeculativeLoad>(frameID, revalidationRequest, WTFMove(entry), [this, key, revalidationRequest, frameID](std::unique_ptr<Entry> revalidatedEntry) {
ASSERT(!revalidatedEntry || !revalidatedEntry->needsValidation());
ASSERT(!revalidatedEntry || revalidatedEntry->key() == key);
- auto revalidationRequest = std::unique_ptr<ResourceRequest>(revalidationRequestPtr);
auto protectRevalidator = m_pendingPreloads.take(key);
LOG(NetworkCacheSpeculativePreloading, "(NetworkProcess) Speculative revalidation completed for '%s':", key.identifier().utf8().data());
@@ -482,7 +481,7 @@
}
if (revalidatedEntry)
- addPreloadedEntry(WTFMove(revalidatedEntry), frameID, WTFMove(revalidationRequest));
+ addPreloadedEntry(WTFMove(revalidatedEntry), frameID, revalidationRequest);
});
m_pendingPreloads.add(key, WTFMove(revalidator));
}
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h (201375 => 201376)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h 2016-05-25 10:58:30 UTC (rev 201375)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h 2016-05-25 10:59:06 UTC (rev 201376)
@@ -57,7 +57,7 @@
private:
class PreloadedEntry;
- void addPreloadedEntry(std::unique_ptr<Entry>, const GlobalFrameID&, std::unique_ptr<WebCore::ResourceRequest> revalidationRequest = nullptr);
+ void addPreloadedEntry(std::unique_ptr<Entry>, const GlobalFrameID&, Optional<WebCore::ResourceRequest>&& revalidationRequest = Nullopt);
void preloadEntry(const Key&, const SubresourceInfo&, const GlobalFrameID&);
void retrieveEntryFromStorage(const Key&, const RetrieveCompletionHandler&);
void revalidateEntry(std::unique_ptr<Entry>, const SubresourceInfo&, const GlobalFrameID&);