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

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: Review comments 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..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()

Powered by Google App Engine
This is Rietveld 408576698