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

Side by Side Diff: third_party/WebKit/Source/core/loader/FrameFetchContext.cpp

Issue 2167623002: Reload: propagate FrameLoadType to child frames Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add some comments Created 4 years, 5 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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 // are likely to be third party content. 113 // are likely to be third party content.
114 if (request.url().host() == document.getSecurityOrigin()->domain()) 114 if (request.url().host() == document.getSecurityOrigin()->domain())
115 return false; 115 return false;
116 116
117 emitWarningForDocWriteScripts(request.url().getString(), document); 117 emitWarningForDocWriteScripts(request.url().getString(), document);
118 118
119 // Do not block scripts if it is a page reload. This is to enable pages to 119 // Do not block scripts if it is a page reload. This is to enable pages to
120 // recover if blocking of a script is leading to a page break and the user 120 // recover if blocking of a script is leading to a page break and the user
121 // reloads the page. 121 // reloads the page.
122 const FrameLoadType loadType = document.frame()->loader().loadType(); 122 const FrameLoadType loadType = document.frame()->loader().loadType();
123 const bool isReload = loadType == FrameLoadTypeReload || loadType == FrameLo adTypeReloadBypassingCache || loadType == FrameLoadTypeReloadMainResource; 123 if (isReloadLoadType(loadType)) {
124 if (isReload) {
125 // Recording this metric since an increase in number of reloads for page s 124 // Recording this metric since an increase in number of reloads for page s
126 // where a script was blocked could be indicative of a page break. 125 // where a script was blocked could be indicative of a page break.
127 document.loader()->didObserveLoadingBehavior(WebLoadingBehaviorFlag::Web LoadingBehaviorDocumentWriteBlockReload); 126 document.loader()->didObserveLoadingBehavior(WebLoadingBehaviorFlag::Web LoadingBehaviorDocumentWriteBlockReload);
128 return false; 127 return false;
129 } 128 }
130 129
131 // Add the metadata that this page has scripts inserted via document.write 130 // Add the metadata that this page has scripts inserted via document.write
132 // that are eligible for blocking. Note that if there are multiple scripts 131 // that are eligible for blocking. Note that if there are multiple scripts
133 // the flag will be conveyed to the browser process only once. 132 // the flag will be conveyed to the browser process only once.
134 document.loader()->didObserveLoadingBehavior(WebLoadingBehaviorFlag::WebLoad ingBehaviorDocumentWriteBlock); 133 document.loader()->didObserveLoadingBehavior(WebLoadingBehaviorFlag::WebLoad ingBehaviorDocumentWriteBlock);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 CachePolicy parentCachePolicy = toLocalFrame(parentFrame)->document()->f etcher()->context().getCachePolicy(); 211 CachePolicy parentCachePolicy = toLocalFrame(parentFrame)->document()->f etcher()->context().getCachePolicy();
213 if (parentCachePolicy != CachePolicyVerify) 212 if (parentCachePolicy != CachePolicyVerify)
214 return parentCachePolicy; 213 return parentCachePolicy;
215 } 214 }
216 215
217 if (loadType == FrameLoadTypeReload) 216 if (loadType == FrameLoadTypeReload)
218 return CachePolicyRevalidate; 217 return CachePolicyRevalidate;
219 218
220 if (m_documentLoader && m_documentLoader->request().getCachePolicy() == WebC achePolicy::ReturnCacheDataElseLoad) 219 if (m_documentLoader && m_documentLoader->request().getCachePolicy() == WebC achePolicy::ReturnCacheDataElseLoad)
221 return CachePolicyHistoryBuffer; 220 return CachePolicyHistoryBuffer;
221
222 // Returning CachePolicyVerify for FrameLoadTypeReloadMainResource is
223 // intentional.
hiroshige 2016/07/26 07:37:17 Not blocking this CL, but do we have any documents
Takashi Toyoshima 2016/07/26 08:14:20 How about public/web/WebFrameLoadType.h? core/load
222 return CachePolicyVerify; 224 return CachePolicyVerify;
223 } 225 }
224 226
225 static WebCachePolicy memoryCachePolicyToResourceRequestCachePolicy(const CacheP olicy policy) 227 static WebCachePolicy memoryCachePolicyToResourceRequestCachePolicy(const CacheP olicy policy)
226 { 228 {
227 if (policy == CachePolicyVerify) 229 if (policy == CachePolicyVerify)
228 return WebCachePolicy::UseProtocolCachePolicy; 230 return WebCachePolicy::UseProtocolCachePolicy;
229 if (policy == CachePolicyRevalidate) 231 if (policy == CachePolicyRevalidate)
230 return WebCachePolicy::ValidatingCacheData; 232 return WebCachePolicy::ValidatingCacheData;
231 if (policy == CachePolicyReload) 233 if (policy == CachePolicyReload)
(...skipping 19 matching lines...) Expand all
251 if (!f->isLocalFrame()) 253 if (!f->isLocalFrame())
252 continue; 254 continue;
253 frameLoadType = toLocalFrame(f)->loader().loadType(); 255 frameLoadType = toLocalFrame(f)->loader().loadType();
254 if (frameLoadType == FrameLoadTypeBackForward) 256 if (frameLoadType == FrameLoadTypeBackForward)
255 return WebCachePolicy::ReturnCacheDataElseLoad; 257 return WebCachePolicy::ReturnCacheDataElseLoad;
256 if (frameLoadType == FrameLoadTypeReloadBypassingCache) 258 if (frameLoadType == FrameLoadTypeReloadBypassingCache)
257 return WebCachePolicy::BypassingCache; 259 return WebCachePolicy::BypassingCache;
258 if (frameLoadType == FrameLoadTypeReload) 260 if (frameLoadType == FrameLoadTypeReload)
259 return WebCachePolicy::ValidatingCacheData; 261 return WebCachePolicy::ValidatingCacheData;
260 } 262 }
263 // Returning UseProtocolCachePolicy for FrameLoadTypeReloadMainResource
264 // is intentional.
hiroshige 2016/07/26 07:37:17 ditto.
261 return WebCachePolicy::UseProtocolCachePolicy; 265 return WebCachePolicy::UseProtocolCachePolicy;
262 } 266 }
263 267
264 // For users on slow connections, we want to avoid blocking the parser in 268 // For users on slow connections, we want to avoid blocking the parser in
265 // the main frame on script loads inserted via document.write, since it can 269 // the main frame on script loads inserted via document.write, since it can
266 // add significant delays before page content is displayed on the screen. 270 // add significant delays before page content is displayed on the screen.
267 if (type == Resource::Script && isMainFrame() && m_document && shouldDisallo wFetchForMainFrameScript(request, defer, *m_document)) 271 if (type == Resource::Script && isMainFrame() && m_document && shouldDisallo wFetchForMainFrameScript(request, defer, *m_document))
268 return WebCachePolicy::ReturnCacheDataDontLoad; 272 return WebCachePolicy::ReturnCacheDataDontLoad;
269 273
270 if (request.isConditional()) 274 if (request.isConditional())
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 } 813 }
810 814
811 DEFINE_TRACE(FrameFetchContext) 815 DEFINE_TRACE(FrameFetchContext)
812 { 816 {
813 visitor->trace(m_document); 817 visitor->trace(m_document);
814 visitor->trace(m_documentLoader); 818 visitor->trace(m_documentLoader);
815 FetchContext::trace(visitor); 819 FetchContext::trace(visitor);
816 } 820 }
817 821
818 } // namespace blink 822 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698