WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-102995-20121126155526.patch (text/plain), 7.38 KB, created by
James Simonsen
on 2012-11-26 15:57:48 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
James Simonsen
Created:
2012-11-26 15:57:48 PST
Size:
7.38 KB
patch
obsolete
>Subversion Revision: 135757 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 6b7bf30ed806073e36d65efe696c372d2be7c791..2e34c96e2bbc33a53cc8543a95bb7a81608205d5 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,25 @@ >+2012-11-21 James Simonsen <simonjam@chromium.org> >+ >+ Remember the CachedResourceRequest for preloads >+ https://bugs.webkit.org/show_bug.cgi?id=102995 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Without this, the initiator is lost. >+ >+ Tests: http/tests/w3c/webperf/submission/resource-timing >+ >+ * loader/cache/CachedResourceLoader.cpp: >+ (WebCore::CachedResourceLoader::requestResource): >+ (WebCore::CachedResourceLoader::loadResource): >+ (WebCore::CachedResourceLoader::preload): >+ (WebCore::CachedResourceLoader::checkForPendingPreloads): >+ (WebCore::CachedResourceLoader::requestPreload): >+ (WebCore::CachedResourceLoader::isPreloaded): >+ * loader/cache/CachedResourceLoader.h: >+ (CachedResourceLoader): >+ (PendingPreload): >+ > 2012-11-26 Pratik Solanki <psolanki@apple.com> > > Add ResourceBuffer::append(CFDataRef) to get code to compile with USE(NETWORK_CFDATA_ARRAY_CALLBACK) >diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.cpp b/Source/WebCore/loader/cache/CachedResourceLoader.cpp >index 83a5a1ce674cc72c5f110096cb348ab0825e4d5f..17e7dc847c80dc9475553138beec0372f771cbfb 100644 >--- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp >+++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp >@@ -443,7 +443,7 @@ CachedResourceHandle<CachedResource> CachedResourceLoader::requestResource(Cache > memoryCache()->remove(resource.get()); > // Fall through > case Load: >- resource = loadResource(type, request.mutableResourceRequest(), request.charset()); >+ resource = loadResource(type, request, request.charset()); > break; > case Revalidate: > resource = revalidateResource(resource.get()); >@@ -497,14 +497,14 @@ CachedResourceHandle<CachedResource> CachedResourceLoader::revalidateResource(Ca > return newResource; > } > >-CachedResourceHandle<CachedResource> CachedResourceLoader::loadResource(CachedResource::Type type, ResourceRequest& request, const String& charset) >+CachedResourceHandle<CachedResource> CachedResourceLoader::loadResource(CachedResource::Type type, CachedResourceRequest& request, const String& charset) > { >- ASSERT(!memoryCache()->resourceForURL(request.url())); >- >- LOG(ResourceLoading, "Loading CachedResource for '%s'.", request.url().string().latin1().data()); >- >- CachedResourceHandle<CachedResource> resource = createResource(type, request, charset); >- >+ ASSERT(!memoryCache()->resourceForURL(request.resourceRequest().url())); >+ >+ LOG(ResourceLoading, "Loading CachedResource for '%s'.", request.resourceRequest().url().string().latin1().data()); >+ >+ CachedResourceHandle<CachedResource> resource = createResource(type, request.mutableResourceRequest(), charset); >+ > if (!memoryCache()->add(resource.get())) > resource->setOwningCachedResourceLoader(this); > return resource; >@@ -780,12 +780,12 @@ void CachedResourceLoader::preload(CachedResource::Type type, CachedResourceRequ > if (!hasRendering && !canBlockParser) { > // Don't preload subresources that can't block the parser before we have something to draw. > // This helps prevent preloads from delaying first display when bandwidth is limited. >- PendingPreload pendingPreload = { type, request.resourceRequest(), charset }; >+ PendingPreload pendingPreload = { type, request, charset }; > m_pendingPreloads.append(pendingPreload); > return; > } > } >- requestPreload(type, request.mutableResourceRequest(), charset); >+ requestPreload(type, request, charset); > } > > void CachedResourceLoader::checkForPendingPreloads() >@@ -795,22 +795,22 @@ void CachedResourceLoader::checkForPendingPreloads() > while (!m_pendingPreloads.isEmpty()) { > PendingPreload preload = m_pendingPreloads.takeFirst(); > // Don't request preload if the resource already loaded normally (this will result in double load if the page is being reloaded with cached results ignored). >- if (!cachedResource(preload.m_request.url())) >+ if (!cachedResource(preload.m_request.resourceRequest().url())) > requestPreload(preload.m_type, preload.m_request, preload.m_charset); > } > m_pendingPreloads.clear(); > } > >-void CachedResourceLoader::requestPreload(CachedResource::Type type, ResourceRequest& request, const String& charset) >+void CachedResourceLoader::requestPreload(CachedResource::Type type, CachedResourceRequest& request, const String& charset) > { > String encoding; > if (type == CachedResource::Script || type == CachedResource::CSSStyleSheet) > encoding = charset.isEmpty() ? m_document->charset() : charset; > >- CachedResourceRequest cachedResourceRequest(request, encoding); >- cachedResourceRequest.setForPreload(true); >+ request.setCharset(encoding); >+ request.setForPreload(true); > >- CachedResourceHandle<CachedResource> resource = requestResource(type, cachedResourceRequest); >+ CachedResourceHandle<CachedResource> resource = requestResource(type, request); > if (!resource || (m_preloads && m_preloads->contains(resource.get()))) > return; > resource->increasePreloadCount(); >@@ -840,7 +840,7 @@ bool CachedResourceLoader::isPreloaded(const String& urlString) const > Deque<PendingPreload>::const_iterator dequeEnd = m_pendingPreloads.end(); > for (Deque<PendingPreload>::const_iterator it = m_pendingPreloads.begin(); it != dequeEnd; ++it) { > PendingPreload pendingPreload = *it; >- if (pendingPreload.m_request.url() == url) >+ if (pendingPreload.m_request.resourceRequest().url() == url) > return true; > } > return false; >diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.h b/Source/WebCore/loader/cache/CachedResourceLoader.h >index c5b23650dea31b2e0d1c9db12afe43c17830f74b..e3cf67fd6df8e29f53bcb09ce34cc104284ccf6d 100644 >--- a/Source/WebCore/loader/cache/CachedResourceLoader.h >+++ b/Source/WebCore/loader/cache/CachedResourceLoader.h >@@ -144,8 +144,8 @@ private: > > CachedResourceHandle<CachedResource> requestResource(CachedResource::Type, CachedResourceRequest&); > CachedResourceHandle<CachedResource> revalidateResource(CachedResource*); >- CachedResourceHandle<CachedResource> loadResource(CachedResource::Type, ResourceRequest&, const String& charset); >- void requestPreload(CachedResource::Type, ResourceRequest&, const String& charset); >+ CachedResourceHandle<CachedResource> loadResource(CachedResource::Type, CachedResourceRequest&, const String& charset); >+ void requestPreload(CachedResource::Type, CachedResourceRequest&, const String& charset); > > enum RevalidationPolicy { Use, Revalidate, Reload, Load }; > RevalidationPolicy determineRevalidationPolicy(CachedResource::Type, ResourceRequest&, bool forPreload, CachedResource* existingResource, CachedResourceRequest::DeferOption) const; >@@ -169,7 +169,7 @@ private: > OwnPtr<ListHashSet<CachedResource*> > m_preloads; > struct PendingPreload { > CachedResource::Type m_type; >- ResourceRequest m_request; >+ CachedResourceRequest m_request; > String m_charset; > }; > Deque<PendingPreload> m_pendingPreloads;
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
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 102995
:
175554
| 176100