Index: third_party/WebKit/Source/core/loader/FrameFetchContext.cpp |
diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp |
index f2cbded4f2adefc8f3706cb283e862b355a7fc52..5580e4f2b26908b54799d19f1e186c8dddc520bf 100644 |
--- a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp |
+++ b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp |
@@ -89,14 +89,6 @@ bool shouldDisallowFetchForMainFrameScript(const ResourceRequest& request, Fetch |
if (!document.frame()) |
return false; |
- // Do not block scripts if it is a page reload. This is to enable pages to |
- // recover if blocking of a script is leading to a page break and the user |
- // reloads the page. |
- const FrameLoadType loadType = document.frame()->loader().loadType(); |
- const bool isReload = (loadType == FrameLoadTypeReload || loadType == FrameLoadTypeReloadBypassingCache || loadType == FrameLoadTypeSame); |
- if (isReload) |
- return false; |
- |
const bool isSlowConnection = networkStateNotifier().connectionType() == WebConnectionTypeCellular2G; |
const bool disallowFetch = document.settings()->disallowFetchForDocWrittenScriptsInMainFrame() || (document.settings()->disallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections() && isSlowConnection); |
if (!disallowFetch) |
@@ -112,6 +104,22 @@ bool shouldDisallowFetchForMainFrameScript(const ResourceRequest& request, Fetch |
if (request.url().host() == document.getSecurityOrigin()->domain()) |
return false; |
+ // Do not block scripts if it is a page reload. This is to enable pages to |
Bryan McQuade
2016/04/27 14:29:24
looks like you may need to rebase now that this lo
|
+ // recover if blocking of a script is leading to a page break and the user |
+ // reloads the page. |
+ const FrameLoadType loadType = document.frame()->loader().loadType(); |
+ const bool isReload = loadType == FrameLoadTypeReload || loadType == FrameLoadTypeReloadBypassingCache || loadType == FrameLoadTypeSame; |
+ if (isReload) { |
+ // Recording this metric since an increase in number of reloads for pages |
+ // where a script was blocked could be indicative of a page break. |
+ document.loader()->didObserveLoadingBehavior(WebLoadingBehaviorFlag::WebLoadingBehaviorDocumentWriteBlockReload); |
+ return false; |
+ } |
+ |
+ // Add the metadata that this page has scripts inserted via document.write |
+ // that are eligible for blocking. Note that if there are multiple scripts |
+ // the flag will be conveyed to the browser process only once. |
+ document.loader()->didObserveLoadingBehavior(WebLoadingBehaviorFlag::WebLoadingBehaviorDocumentWriteBlock); |
return true; |
} |