Index: third_party/WebKit/Source/core/loader/DocumentLoader.cpp |
diff --git a/third_party/WebKit/Source/core/loader/DocumentLoader.cpp b/third_party/WebKit/Source/core/loader/DocumentLoader.cpp |
index f17bb791a94af1a3547f8417069ebef192336a70..725c4f3f1192cdf1ebef89e6a40827fd6c4f9222 100644 |
--- a/third_party/WebKit/Source/core/loader/DocumentLoader.cpp |
+++ b/third_party/WebKit/Source/core/loader/DocumentLoader.cpp |
@@ -56,6 +56,7 @@ |
#include "core/loader/FrameLoader.h" |
#include "core/loader/FrameLoaderClient.h" |
#include "core/loader/LinkLoader.h" |
+#include "core/loader/LinkPreloadResourceClients.h" |
#include "core/loader/ProgressTracker.h" |
#include "core/loader/appcache/ApplicationCacheHost.h" |
#include "core/page/FrameTree.h" |
@@ -160,18 +161,22 @@ const KURL& DocumentLoader::url() const |
return m_request.url(); |
} |
-void DocumentLoader::startPreload(Resource::Type type, FetchRequest& request) |
+void DocumentLoader::startPreload(Resource::Type type, FetchRequest& request, LinkLoader* linkLoader) |
{ |
ResourcePtr<Resource> resource; |
+ OwnPtr<LinkPreloadResourceClient> resourceClient = nullptr; |
switch (type) { |
case Resource::Image: |
resource = ImageResource::fetch(request, fetcher()); |
+ resourceClient = LinkPreloadImageResourceClient::create(linkLoader, resource.get()); |
break; |
case Resource::Script: |
resource = ScriptResource::fetch(request, fetcher()); |
+ resourceClient = LinkPreloadScriptResourceClient::create(linkLoader, resource.get()); |
break; |
case Resource::CSSStyleSheet: |
resource = CSSStyleSheetResource::fetch(request, fetcher()); |
+ resourceClient = LinkPreloadStyleResourceClient::create(linkLoader, resource.get()); |
break; |
case Resource::Font: |
resource = FontResource::fetch(request, fetcher()); |
@@ -192,8 +197,12 @@ void DocumentLoader::startPreload(Resource::Type type, FetchRequest& request) |
ASSERT_NOT_REACHED(); |
} |
- if (resource) |
- fetcher()->preloadStarted(resource.get()); |
+ if (!resource) |
+ return; |
+ |
+ if (linkLoader) |
+ linkLoader->setPreloadResourceClient(resourceClient.release()); |
+ fetcher()->preloadStarted(resource.get()); |
} |
void DocumentLoader::didChangePerformanceTiming() |