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

Unified Diff: third_party/WebKit/Source/core/loader/DocumentLoader.cpp

Issue 1577073005: Add <link rel=preload> onload support for scripts and styles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed lifetime issue of LinkPreloadResourceClients Created 4 years, 11 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/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..d27bff459d171a139a9802ae40a4f470090389c1 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,17 +161,23 @@ 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)
Nate Chapin 2016/01/13 23:52:23 It seems like it would be cleaner to change startP
Yoav Weiss 2016/01/14 10:10:02 Returning things to LinkLoader makes the call from
Nate Chapin 2016/01/14 23:10:53 I don't see how HTMLResourcePreload would need to
{
ResourcePtr<Resource> resource;
switch (type) {
case Resource::Image:
+ if (linkLoader)
+ linkLoader->setPreloadResourceClient(LinkPreloadImageResourceClient::create(linkLoader));
resource = ImageResource::fetch(request, fetcher());
break;
case Resource::Script:
resource = ScriptResource::fetch(request, fetcher());
+ if (linkLoader)
+ linkLoader->setPreloadResourceClient(LinkPreloadScriptResourceClient::create(linkLoader));
break;
case Resource::CSSStyleSheet:
+ if (linkLoader)
+ linkLoader->setPreloadResourceClient(LinkPreloadStyleResourceClient::create(linkLoader));
resource = CSSStyleSheetResource::fetch(request, fetcher());
break;
case Resource::Font:
@@ -192,8 +199,12 @@ void DocumentLoader::startPreload(Resource::Type type, FetchRequest& request)
ASSERT_NOT_REACHED();
}
- if (resource)
- fetcher()->preloadStarted(resource.get());
+ if (!resource)
+ return;
+
+ if (linkLoader && linkLoader->preloadResourceClient())
+ linkLoader->preloadResourceClient()->callSetResource(resource.get());
+ fetcher()->preloadStarted(resource.get());
}
void DocumentLoader::didChangePerformanceTiming()

Powered by Google App Engine
This is Rietveld 408576698