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

Side by Side Diff: third_party/WebKit/Source/core/html/parser/PreloadRequest.cpp

Issue 1563263002: Add HTMLPreloadScanner support for <link rel=preload> (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed a test as well as 2 bugs that other tests revealed 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 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/html/parser/PreloadRequest.h" 5 #include "core/html/parser/PreloadRequest.h"
6 6
7 #include "core/dom/Document.h" 7 #include "core/dom/Document.h"
8 #include "core/fetch/FetchInitiatorInfo.h" 8 #include "core/fetch/FetchInitiatorInfo.h"
9 #include "core/fetch/ResourceFetcher.h"
9 #include "platform/CrossOriginAttributeValue.h" 10 #include "platform/CrossOriginAttributeValue.h"
10 11
11 namespace blink { 12 namespace blink {
12 13
13 bool PreloadRequest::isSafeToSendToAnotherThread() const 14 bool PreloadRequest::isSafeToSendToAnotherThread() const
14 { 15 {
15 return m_initiatorName.isSafeToSendToAnotherThread() 16 return m_initiatorName.isSafeToSendToAnotherThread()
16 && m_charset.isSafeToSendToAnotherThread() 17 && m_charset.isSafeToSendToAnotherThread()
17 && m_resourceURL.isSafeToSendToAnotherThread() 18 && m_resourceURL.isSafeToSendToAnotherThread()
18 && m_baseURL.isSafeToSendToAnotherThread(); 19 && m_baseURL.isSafeToSendToAnotherThread();
19 } 20 }
20 21
21 KURL PreloadRequest::completeURL(Document* document) 22 KURL PreloadRequest::completeURL(Document* document)
22 { 23 {
23 if (!m_baseURL.isEmpty()) 24 if (!m_baseURL.isEmpty())
24 return document->completeURLWithOverride(m_resourceURL, m_baseURL); 25 return document->completeURLWithOverride(m_resourceURL, m_baseURL);
25 return document->completeURL(m_resourceURL); 26 return document->completeURL(m_resourceURL);
26 } 27 }
27 28
28 FetchRequest PreloadRequest::resourceRequest(Document* document) 29 FetchRequest PreloadRequest::resourceRequest(Document* document)
29 { 30 {
30 ASSERT(isMainThread()); 31 ASSERT(isMainThread());
31 FetchInitiatorInfo initiatorInfo; 32 FetchInitiatorInfo initiatorInfo;
32 initiatorInfo.name = AtomicString(m_initiatorName); 33 initiatorInfo.name = AtomicString(m_initiatorName);
33 initiatorInfo.position = m_initiatorPosition; 34 initiatorInfo.position = m_initiatorPosition;
34 ResourceRequest resourceRequest(completeURL(document)); 35 ResourceRequest resourceRequest(completeURL(document));
35 resourceRequest.setHTTPReferrer(SecurityPolicy::generateReferrer(m_referrerP olicy, resourceRequest.url(), document->outgoingReferrer())); 36 resourceRequest.setHTTPReferrer(SecurityPolicy::generateReferrer(m_referrerP olicy, resourceRequest.url(), document->outgoingReferrer()));
37 ResourceFetcher::determineRequestContext(resourceRequest, m_resourceType, fa lse);
36 FetchRequest request(resourceRequest, initiatorInfo); 38 FetchRequest request(resourceRequest, initiatorInfo);
37 39
38 if (m_resourceType == Resource::ImportResource) { 40 if (m_resourceType == Resource::ImportResource) {
39 SecurityOrigin* securityOrigin = document->contextDocument()->securityOr igin(); 41 SecurityOrigin* securityOrigin = document->contextDocument()->securityOr igin();
40 request.setCrossOriginAccessControl(securityOrigin, CrossOriginAttribute Anonymous); 42 request.setCrossOriginAccessControl(securityOrigin, CrossOriginAttribute Anonymous);
41 } 43 }
42 if (m_crossOrigin != CrossOriginAttributeNotSet) 44 if (m_crossOrigin != CrossOriginAttributeNotSet)
43 request.setCrossOriginAccessControl(document->securityOrigin(), m_crossO rigin); 45 request.setCrossOriginAccessControl(document->securityOrigin(), m_crossO rigin);
44 request.setDefer(m_defer); 46 request.setDefer(m_defer);
45 request.setResourceWidth(m_resourceWidth); 47 request.setResourceWidth(m_resourceWidth);
46 request.clientHintsPreferences().updateFrom(m_clientHintsPreferences); 48 request.clientHintsPreferences().updateFrom(m_clientHintsPreferences);
47 request.setIntegrityMetadata(m_integrityMetadata); 49 request.setIntegrityMetadata(m_integrityMetadata);
48 50
51 if (m_requestType == RequestTypeLinkRelPreload)
52 request.setAvoidBlockingOnLoad(true);
Nate Chapin 2016/01/12 03:28:17 It's unfortunate to need to set this in a second p
Yoav Weiss 2016/01/12 06:37:56 agree
49 return request; 53 return request;
50 } 54 }
51 55
52 } 56 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698