Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(224)

Unified Diff: third_party/WebKit/Source/core/fetch/Resource.cpp

Issue 1915833002: Introduce Platform::cacheMetadataInCacheStorage() to store V8 code cache in CacheStorage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/fetch/Resource.cpp
diff --git a/third_party/WebKit/Source/core/fetch/Resource.cpp b/third_party/WebKit/Source/core/fetch/Resource.cpp
index 50c6fed7a8020ca05270af05b5652ff6fdb0f03d..05f46b187c33a1feb9a5b392900752ef70036cd9 100644
--- a/third_party/WebKit/Source/core/fetch/Resource.cpp
+++ b/third_party/WebKit/Source/core/fetch/Resource.cpp
@@ -41,6 +41,7 @@
#include "public/platform/Platform.h"
#include "public/platform/WebProcessMemoryDump.h"
#include "public/platform/WebScheduler.h"
+#include "public/platform/WebSecurityOrigin.h"
#include "wtf/CurrentTime.h"
#include "wtf/MathExtras.h"
#include "wtf/StdLibExtras.h"
@@ -105,6 +106,7 @@ public:
void clearCachedMetadata(CacheType) override;
CachedMetadata* cachedMetadata(unsigned) const override;
String encoding() const override;
+ bool shouldAggressivelyCache() const override;
private:
explicit CacheHandler(Resource*);
@@ -142,6 +144,11 @@ String Resource::CacheHandler::encoding() const
return m_resource->encoding();
}
+bool Resource::CacheHandler::shouldAggressivelyCache() const
+{
+ return m_resource->shouldAggressivelyCacheMetadata();
+}
+
class Resource::ResourceCallback final : public GarbageCollectedFinalized<ResourceCallback> {
public:
static ResourceCallback& callbackHandler();
@@ -266,6 +273,7 @@ void Resource::load(ResourceFetcher* fetcher)
KURL url = request.url();
request.setAllowStoredCredentials(m_options.allowCredentials == AllowStoredCredentials);
+ m_fetcherSecurityOrigin = fetcher->context().getSecurityOrigin();
m_loader = ResourceLoader::create(fetcher, this);
m_loader->start(request);
// If the request reference is null (i.e., a synchronous revalidation will
@@ -534,9 +542,17 @@ void Resource::setCachedMetadata(unsigned dataTypeID, const char* data, size_t s
// from poisoning the metadata cache.
// FIXME: Support sending the metadata even if the response was fetched via
// a ServiceWorker. https://crbug.com/448706
- if (cacheType == CachedMetadataHandler::SendToPlatform && !m_response.wasFetchedViaServiceWorker()) {
- const Vector<char>& serializedData = m_cachedMetadata->serialize();
- Platform::current()->cacheMetadata(m_response.url(), m_response.responseTime(), serializedData.data(), serializedData.size());
+ if (cacheType == CachedMetadataHandler::SendToPlatform) {
+ if (cacheMetadataSendToPlatformDisabled())
+ return;
+
+ if (!m_response.wasFetchedViaServiceWorker()) {
+ const Vector<char>& serializedData = m_cachedMetadata->serialize();
+ Platform::current()->cacheMetadata(m_response.url(), m_response.responseTime(), serializedData.data(), serializedData.size());
+ } else if (!m_response.cacheStorageCacheName().isNull()) {
+ const Vector<char>& serializedData = m_cachedMetadata->serialize();
+ Platform::current()->cacheMetadataInCacheStorage(m_response.url(), m_response.responseTime(), serializedData.data(), serializedData.size(), WebSecurityOrigin(m_fetcherSecurityOrigin), m_response.cacheStorageCacheName());
+ }
}
}
@@ -544,8 +560,13 @@ void Resource::clearCachedMetadata(CachedMetadataHandler::CacheType cacheType)
{
m_cachedMetadata.clear();
- if (cacheType == CachedMetadataHandler::SendToPlatform)
- Platform::current()->cacheMetadata(m_response.url(), m_response.responseTime(), 0, 0);
+ if (cacheType == CachedMetadataHandler::SendToPlatform) {
+ if (!m_response.wasFetchedViaServiceWorker()) {
+ Platform::current()->cacheMetadata(m_response.url(), m_response.responseTime(), 0, 0);
+ } else if (!m_response.cacheStorageCacheName().isNull()) {
+ Platform::current()->cacheMetadataInCacheStorage(m_response.url(), m_response.responseTime(), 0, 0, WebSecurityOrigin(m_fetcherSecurityOrigin), m_response.cacheStorageCacheName());
+ }
+ }
}
String Resource::reasonNotDeletable() const

Powered by Google App Engine
This is Rietveld 408576698