Title: [136255] trunk/Source/WebCore
Revision
136255
Author
[email protected]
Date
2012-11-30 11:17:45 -0800 (Fri, 30 Nov 2012)

Log Message

Remember the CachedResourceRequest for preloads
https://bugs.webkit.org/show_bug.cgi?id=102995

Reviewed by Tony Gentilcore.

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):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (136254 => 136255)


--- trunk/Source/WebCore/ChangeLog	2012-11-30 18:47:23 UTC (rev 136254)
+++ trunk/Source/WebCore/ChangeLog	2012-11-30 19:17:45 UTC (rev 136255)
@@ -1,3 +1,25 @@
+2012-11-30  James Simonsen  <[email protected]>
+
+        Remember the CachedResourceRequest for preloads
+        https://bugs.webkit.org/show_bug.cgi?id=102995
+
+        Reviewed by Tony Gentilcore.
+
+        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-30  Michelangelo De Simone  <[email protected]>
 
         [CSS Shaders] Clamp input colors before blending

Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (136254 => 136255)


--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2012-11-30 18:47:23 UTC (rev 136254)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2012-11-30 19:17:45 UTC (rev 136255)
@@ -446,7 +446,7 @@
         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());
@@ -500,14 +500,14 @@
     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;
@@ -783,12 +783,12 @@
         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() 
@@ -798,22 +798,22 @@
     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();
@@ -843,7 +843,7 @@
     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;

Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.h (136254 => 136255)


--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.h	2012-11-30 18:47:23 UTC (rev 136254)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.h	2012-11-30 19:17:45 UTC (rev 136255)
@@ -144,8 +144,8 @@
 
     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 @@
     OwnPtr<ListHashSet<CachedResource*> > m_preloads;
     struct PendingPreload {
         CachedResource::Type m_type;
-        ResourceRequest m_request;
+        CachedResourceRequest m_request;
         String m_charset;
     };
     Deque<PendingPreload> m_pendingPreloads;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to