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

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: 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 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)
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
164 { 165 {
165 ResourcePtr<Resource> resource; 166 ResourcePtr<Resource> resource;
166 switch (type) { 167 switch (type) {
167 case Resource::Image: 168 case Resource::Image:
169 if (linkLoader)
170 linkLoader->setPreloadResourceClient(LinkPreloadImageResourceClient: :create(linkLoader));
168 resource = ImageResource::fetch(request, fetcher()); 171 resource = ImageResource::fetch(request, fetcher());
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 if (linkLoader)
176 linkLoader->setPreloadResourceClient(LinkPreloadScriptResourceClient ::create(linkLoader));
172 break; 177 break;
173 case Resource::CSSStyleSheet: 178 case Resource::CSSStyleSheet:
179 if (linkLoader)
180 linkLoader->setPreloadResourceClient(LinkPreloadStyleResourceClient: :create(linkLoader));
174 resource = CSSStyleSheetResource::fetch(request, fetcher()); 181 resource = CSSStyleSheetResource::fetch(request, fetcher());
175 break; 182 break;
176 case Resource::Font: 183 case Resource::Font:
177 resource = FontResource::fetch(request, fetcher()); 184 resource = FontResource::fetch(request, fetcher());
178 break; 185 break;
179 case Resource::Media: 186 case Resource::Media:
180 resource = RawResource::fetchMedia(request, fetcher()); 187 resource = RawResource::fetchMedia(request, fetcher());
181 break; 188 break;
182 case Resource::TextTrack: 189 case Resource::TextTrack:
183 resource = RawResource::fetchTextTrack(request, fetcher()); 190 resource = RawResource::fetchTextTrack(request, fetcher());
184 break; 191 break;
185 case Resource::ImportResource: 192 case Resource::ImportResource:
186 resource = RawResource::fetchImport(request, fetcher()); 193 resource = RawResource::fetchImport(request, fetcher());
187 break; 194 break;
188 case Resource::LinkSubresource: 195 case Resource::LinkSubresource:
189 resource = RawResource::fetch(request, fetcher()); 196 resource = RawResource::fetch(request, fetcher());
190 break; 197 break;
191 default: 198 default:
192 ASSERT_NOT_REACHED(); 199 ASSERT_NOT_REACHED();
193 } 200 }
194 201
195 if (resource) 202 if (!resource)
196 fetcher()->preloadStarted(resource.get()); 203 return;
204
205 if (linkLoader && linkLoader->preloadResourceClient())
206 linkLoader->preloadResourceClient()->callSetResource(resource.get());
207 fetcher()->preloadStarted(resource.get());
197 } 208 }
198 209
199 void DocumentLoader::didChangePerformanceTiming() 210 void DocumentLoader::didChangePerformanceTiming()
200 { 211 {
201 if (frame() && frame()->isMainFrame() && m_state >= Committed) { 212 if (frame() && frame()->isMainFrame() && m_state >= Committed) {
202 frameLoader()->client()->didChangePerformanceTiming(); 213 frameLoader()->client()->didChangePerformanceTiming();
203 } 214 }
204 } 215 }
205 216
206 void DocumentLoader::updateForSameDocumentNavigation(const KURL& newURL, SameDoc umentNavigationSource sameDocumentNavigationSource) 217 void DocumentLoader::updateForSameDocumentNavigation(const KURL& newURL, SameDoc umentNavigationSource sameDocumentNavigationSource)
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 { 854 {
844 m_writer = createWriterFor(ownerDocument, init, mimeType(), m_writer ? m_wri ter->encoding() : emptyAtom, true, ForceSynchronousParsing); 855 m_writer = createWriterFor(ownerDocument, init, mimeType(), m_writer ? m_wri ter->encoding() : emptyAtom, true, ForceSynchronousParsing);
845 if (!source.isNull()) 856 if (!source.isNull())
846 m_writer->appendReplacingData(source); 857 m_writer->appendReplacingData(source);
847 endWriting(m_writer.get()); 858 endWriting(m_writer.get());
848 } 859 }
849 860
850 DEFINE_WEAK_IDENTIFIER_MAP(DocumentLoader); 861 DEFINE_WEAK_IDENTIFIER_MAP(DocumentLoader);
851 862
852 } // namespace blink 863 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698