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

Side by Side 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2011 Google Inc. All rights reserved. 3 * Copyright (C) 2011 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "core/frame/csp/ContentSecurityPolicy.h" 49 #include "core/frame/csp/ContentSecurityPolicy.h"
50 #include "core/html/HTMLFrameOwnerElement.h" 50 #include "core/html/HTMLFrameOwnerElement.h"
51 #include "core/html/parser/HTMLDocumentParser.h" 51 #include "core/html/parser/HTMLDocumentParser.h"
52 #include "core/html/parser/TextResourceDecoder.h" 52 #include "core/html/parser/TextResourceDecoder.h"
53 #include "core/inspector/ConsoleMessage.h" 53 #include "core/inspector/ConsoleMessage.h"
54 #include "core/inspector/InspectorInstrumentation.h" 54 #include "core/inspector/InspectorInstrumentation.h"
55 #include "core/loader/FrameFetchContext.h" 55 #include "core/loader/FrameFetchContext.h"
56 #include "core/loader/FrameLoader.h" 56 #include "core/loader/FrameLoader.h"
57 #include "core/loader/FrameLoaderClient.h" 57 #include "core/loader/FrameLoaderClient.h"
58 #include "core/loader/LinkLoader.h" 58 #include "core/loader/LinkLoader.h"
59 #include "core/loader/LinkPreloadResourceClients.h"
59 #include "core/loader/ProgressTracker.h" 60 #include "core/loader/ProgressTracker.h"
60 #include "core/loader/appcache/ApplicationCacheHost.h" 61 #include "core/loader/appcache/ApplicationCacheHost.h"
61 #include "core/page/FrameTree.h" 62 #include "core/page/FrameTree.h"
62 #include "core/page/Page.h" 63 #include "core/page/Page.h"
63 #include "platform/HTTPNames.h" 64 #include "platform/HTTPNames.h"
64 #include "platform/Logging.h" 65 #include "platform/Logging.h"
65 #include "platform/ThreadedDataReceiver.h" 66 #include "platform/ThreadedDataReceiver.h"
66 #include "platform/UserGestureIndicator.h" 67 #include "platform/UserGestureIndicator.h"
67 #include "platform/mhtml/ArchiveResource.h" 68 #include "platform/mhtml/ArchiveResource.h"
68 #include "platform/mhtml/ArchiveResourceCollection.h" 69 #include "platform/mhtml/ArchiveResourceCollection.h"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 const ResourceRequest& DocumentLoader::request() const 154 const ResourceRequest& DocumentLoader::request() const
154 { 155 {
155 return m_request; 156 return m_request;
156 } 157 }
157 158
158 const KURL& DocumentLoader::url() const 159 const KURL& DocumentLoader::url() const
159 { 160 {
160 return m_request.url(); 161 return m_request.url();
161 } 162 }
162 163
163 void DocumentLoader::startPreload(Resource::Type type, FetchRequest& request) 164 void DocumentLoader::startPreload(Resource::Type type, FetchRequest& request, Li nkLoader* linkLoader)
164 { 165 {
165 ResourcePtr<Resource> resource; 166 ResourcePtr<Resource> resource;
167 OwnPtr<LinkPreloadResourceClient> resourceClient = nullptr;
166 switch (type) { 168 switch (type) {
167 case Resource::Image: 169 case Resource::Image:
168 resource = ImageResource::fetch(request, fetcher()); 170 resource = ImageResource::fetch(request, fetcher());
171 resourceClient = LinkPreloadImageResourceClient::create(linkLoader, reso urce.get());
169 break; 172 break;
170 case Resource::Script: 173 case Resource::Script:
171 resource = ScriptResource::fetch(request, fetcher()); 174 resource = ScriptResource::fetch(request, fetcher());
175 resourceClient = LinkPreloadScriptResourceClient::create(linkLoader, res ource.get());
172 break; 176 break;
173 case Resource::CSSStyleSheet: 177 case Resource::CSSStyleSheet:
174 resource = CSSStyleSheetResource::fetch(request, fetcher()); 178 resource = CSSStyleSheetResource::fetch(request, fetcher());
179 resourceClient = LinkPreloadStyleResourceClient::create(linkLoader, reso urce.get());
175 break; 180 break;
176 case Resource::Font: 181 case Resource::Font:
177 resource = FontResource::fetch(request, fetcher()); 182 resource = FontResource::fetch(request, fetcher());
178 break; 183 break;
179 case Resource::Media: 184 case Resource::Media:
180 resource = RawResource::fetchMedia(request, fetcher()); 185 resource = RawResource::fetchMedia(request, fetcher());
181 break; 186 break;
182 case Resource::TextTrack: 187 case Resource::TextTrack:
183 resource = RawResource::fetchTextTrack(request, fetcher()); 188 resource = RawResource::fetchTextTrack(request, fetcher());
184 break; 189 break;
185 case Resource::ImportResource: 190 case Resource::ImportResource:
186 resource = RawResource::fetchImport(request, fetcher()); 191 resource = RawResource::fetchImport(request, fetcher());
187 break; 192 break;
188 case Resource::LinkSubresource: 193 case Resource::LinkSubresource:
189 resource = RawResource::fetch(request, fetcher()); 194 resource = RawResource::fetch(request, fetcher());
190 break; 195 break;
191 default: 196 default:
192 ASSERT_NOT_REACHED(); 197 ASSERT_NOT_REACHED();
193 } 198 }
194 199
195 if (resource) 200 if (!resource)
196 fetcher()->preloadStarted(resource.get()); 201 return;
202
203 if (linkLoader)
204 linkLoader->setPreloadResourceClient(resourceClient.release());
205 fetcher()->preloadStarted(resource.get());
197 } 206 }
198 207
199 void DocumentLoader::didChangePerformanceTiming() 208 void DocumentLoader::didChangePerformanceTiming()
200 { 209 {
201 if (frame() && frame()->isMainFrame() && m_state >= Committed) { 210 if (frame() && frame()->isMainFrame() && m_state >= Committed) {
202 frameLoader()->client()->didChangePerformanceTiming(); 211 frameLoader()->client()->didChangePerformanceTiming();
203 } 212 }
204 } 213 }
205 214
206 void DocumentLoader::updateForSameDocumentNavigation(const KURL& newURL, SameDoc umentNavigationSource sameDocumentNavigationSource) 215 void DocumentLoader::updateForSameDocumentNavigation(const KURL& newURL, SameDoc umentNavigationSource sameDocumentNavigationSource)
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 { 852 {
844 m_writer = createWriterFor(ownerDocument, init, mimeType(), m_writer ? m_wri ter->encoding() : emptyAtom, true, ForceSynchronousParsing); 853 m_writer = createWriterFor(ownerDocument, init, mimeType(), m_writer ? m_wri ter->encoding() : emptyAtom, true, ForceSynchronousParsing);
845 if (!source.isNull()) 854 if (!source.isNull())
846 m_writer->appendReplacingData(source); 855 m_writer->appendReplacingData(source);
847 endWriting(m_writer.get()); 856 endWriting(m_writer.get());
848 } 857 }
849 858
850 DEFINE_WEAK_IDENTIFIER_MAP(DocumentLoader); 859 DEFINE_WEAK_IDENTIFIER_MAP(DocumentLoader);
851 860
852 } // namespace blink 861 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698