<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[214113] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/214113">214113</a></dd>
<dt>Author</dt> <dd>antti@apple.com</dd>
<dt>Date</dt> <dd>2017-03-17 12:52:49 -0700 (Fri, 17 Mar 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>Add a reload policy where only expired subresources are revalidated
https://bugs.webkit.org/show_bug.cgi?id=169756
Reviewed by Andreas Kling.
Source/WebCore:
Test: http/tests/cache/reload-expired-only.html
The default reload behavior revalidates all resources on the page. This patch adds
a new policy that revalidates expired (and uncacheable) resources only. Using this
policy can speed up reloads significantly and also reduce network traffic and server
load.
* history/PageCache.cpp:
(WebCore::canCachePage):
* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::reload):
* loader/FrameLoader.cpp:
(WebCore::isBackForwardLoadType):
(WebCore::isReload):
Add a helper function.
(WebCore::FrameLoader::loadURL):
(WebCore::logNavigation):
(WebCore::FrameLoader::reload):
Replace bool arguments with OptionSet<ReloadOption>. Most of the patch is about adapting to this.
(WebCore::FrameLoader::transitionToCommitted):
(WebCore::FrameLoader::subresourceCachePolicy):
Return CachePolicyVerify for 'ReloadExpiredOnly' frame load type. This is the substantive
change that causes the behavior difference.
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
(WebCore::FrameLoader::defaultRequestCachingPolicy):
Flip the isMainResource condition for better readability.
(WebCore::FrameLoader::shouldPerformFragmentNavigation):
(WebCore::FrameLoader::loadDifferentDocumentItem):
* loader/FrameLoader.h:
(WebCore::FrameLoader::reload):
* loader/FrameLoaderTypes.h:
* loader/HistoryController.cpp:
(WebCore::HistoryController::restoreDocumentState):
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::reloadRevalidatingExpiredKey):
* page/DiagnosticLoggingKeys.h:
* replay/UserInputBridge.cpp:
(WebCore::UserInputBridge::reloadFrame):
* replay/UserInputBridge.h:
* testing/Internals.cpp:
(WebCore::Internals::forceReload):
(WebCore::Internals::reloadExpiredOnly):
Testing support.
* testing/Internals.h:
* testing/Internals.idl:
Source/WebKit/mac:
* WebView/WebFrame.mm:
(toWebFrameLoadType):
(-[WebFrame reload]):
(-[WebFrame reloadFromOrigin]):
Source/WebKit2:
* UIProcess/API/C/WKPage.cpp:
(WKPageReload):
(WKPageReloadWithoutContentBlockers):
(WKPageReloadFromOrigin):
(WKPageReloadExpiredOnly):
* UIProcess/API/C/WKPage.h:
* UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(-[WKBrowsingContextController reload]):
(-[WKBrowsingContextController reloadFromOrigin]):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView reload]):
(-[WKWebView reloadFromOrigin]):
(-[WKWebView _reloadWithoutContentBlockers]):
(-[WKWebView _reloadExpiredOnly]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::reloadBrowsingContext):
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::didHandleContentFilterUnblockNavigation):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reload):
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::reload):
(WebKit::shouldReuseCommittedSandboxExtension):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
LayoutTests:
* http/tests/cache/reload-expired-only-expected.txt: Added.
* http/tests/cache/reload-expired-only.html: Added.
* http/tests/cache/resources/document-with-cached-unique-script.html: Added.
* http/tests/cache/resources/random-cached.cgi:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestshttptestscacheresourcesrandomcachedcgi">trunk/LayoutTests/http/tests/cache/resources/random-cached.cgi</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorehistoryPageCachecpp">trunk/Source/WebCore/history/PageCache.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorPageAgentcpp">trunk/Source/WebCore/inspector/InspectorPageAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoadercpp">trunk/Source/WebCore/loader/FrameLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoaderh">trunk/Source/WebCore/loader/FrameLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoaderTypesh">trunk/Source/WebCore/loader/FrameLoaderTypes.h</a></li>
<li><a href="#trunkSourceWebCoreloaderHistoryControllercpp">trunk/Source/WebCore/loader/HistoryController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDiagnosticLoggingKeyscpp">trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDiagnosticLoggingKeysh">trunk/Source/WebCore/page/DiagnosticLoggingKeys.h</a></li>
<li><a href="#trunkSourceWebCorereplayUserInputBridgecpp">trunk/Source/WebCore/replay/UserInputBridge.cpp</a></li>
<li><a href="#trunkSourceWebCorereplayUserInputBridgeh">trunk/Source/WebCore/replay/UserInputBridge.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalscpp">trunk/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsh">trunk/Source/WebCore/testing/Internals.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsidl">trunk/Source/WebCore/testing/Internals.idl</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebFramemm">trunk/Source/WebKit/mac/WebView/WebFrame.mm</a></li>
<li><a href="#trunkSourceWebKitwinWebFramecpp">trunk/Source/WebKit/win/WebFrame.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPagecpp">trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPageh">trunk/Source/WebKit2/UIProcess/API/C/WKPage.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKBrowsingContextControllermm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewPrivateh">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIgtkWebKitWebViewcpp">trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAutomationWebAutomationSessioncpp">trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebFrameProxycpp">trunk/Source/WebKit2/UIProcess/WebFrameProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagemessagesin">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestshttptestscachereloadexpiredonlyexpectedtxt">trunk/LayoutTests/http/tests/cache/reload-expired-only-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestscachereloadexpiredonlyhtml">trunk/LayoutTests/http/tests/cache/reload-expired-only.html</a></li>
<li><a href="#trunkLayoutTestshttptestscacheresourcesdocumentwithcacheduniquescripthtml">trunk/LayoutTests/http/tests/cache/resources/document-with-cached-unique-script.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/LayoutTests/ChangeLog        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2017-03-17 Antti Koivisto <antti@apple.com>
+
+ Add a reload policy where only expired subresources are revalidated
+ https://bugs.webkit.org/show_bug.cgi?id=169756
+
+ Reviewed by Andreas Kling.
+
+ * http/tests/cache/reload-expired-only-expected.txt: Added.
+ * http/tests/cache/reload-expired-only.html: Added.
+ * http/tests/cache/resources/document-with-cached-unique-script.html: Added.
+ * http/tests/cache/resources/random-cached.cgi:
+
</ins><span class="cx"> 2017-03-17 Nan Wang <n_wang@apple.com>
</span><span class="cx">
</span><span class="cx"> AX: VoiceOver no longer works corectly with editable text in the web
</span></span></pre></div>
<a id="trunkLayoutTestshttptestscachereloadexpiredonlyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/cache/reload-expired-only-expected.txt (0 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/cache/reload-expired-only-expected.txt         (rev 0)
+++ trunk/LayoutTests/http/tests/cache/reload-expired-only-expected.txt        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestscachereloadexpiredonlyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/cache/reload-expired-only.html (0 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/cache/reload-expired-only.html         (rev 0)
+++ trunk/LayoutTests/http/tests/cache/reload-expired-only.html        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+<body>
+<script>
+if (testRunner) {
+ testRunner.dumpAsText();
+ testRunner.setCanOpenWindows();
+ testRunner.waitUntilDone();
+}
+const testWindow = window.open('http://127.0.0.1:8000/cache/resources/document-with-cached-unique-script.html');
+
+var firstNumber;
+window.addEventListener("message", (event) => {
+ if (firstNumber) {
+ const secondNumber = event.data;
+ if (firstNumber == secondNumber)
+ document.body.innerHTML = "PASS";
+ else
+ document.body.innerHTML = `FAIL: firstNumber={$firstNumber} secondNumber={$secondNumber}`;
+ if (testRunner)
+ testRunner.notifyDone();
+ return;
+ }
+ firstNumber = event.data;
+ if (testWindow.internals)
+ testWindow.internals.reloadExpiredOnly();
+});
+
+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestscacheresourcesdocumentwithcacheduniquescripthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/cache/resources/document-with-cached-unique-script.html (0 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/cache/resources/document-with-cached-unique-script.html         (rev 0)
+++ trunk/LayoutTests/http/tests/cache/resources/document-with-cached-unique-script.html        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+<h1></h1>
+<script src='random-cached.cgi'></script>
+<script>
+window.opener.postMessage(randomNumber, '*');
+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestscacheresourcesrandomcachedcgi"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/cache/resources/random-cached.cgi (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/cache/resources/random-cached.cgi        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/LayoutTests/http/tests/cache/resources/random-cached.cgi        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -2,7 +2,6 @@
</span><span class="cx">
</span><span class="cx"> print "Content-type: text/javascript\n";
</span><span class="cx"> print "Cache-control: max-age=60000\n";
</span><del>-print "ETag: \"123456789\"\n";
</del><span class="cx"> print "\n";
</span><span class="cx">
</span><span class="cx"> my $random_number = int(rand(1000000000000));
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/ChangeLog        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -1,3 +1,66 @@
</span><ins>+2017-03-17 Antti Koivisto <antti@apple.com>
+
+ Add a reload policy where only expired subresources are revalidated
+ https://bugs.webkit.org/show_bug.cgi?id=169756
+
+ Reviewed by Andreas Kling.
+
+ Test: http/tests/cache/reload-expired-only.html
+
+ The default reload behavior revalidates all resources on the page. This patch adds
+ a new policy that revalidates expired (and uncacheable) resources only. Using this
+ policy can speed up reloads significantly and also reduce network traffic and server
+ load.
+
+ * history/PageCache.cpp:
+ (WebCore::canCachePage):
+ * inspector/InspectorPageAgent.cpp:
+ (WebCore::InspectorPageAgent::reload):
+ * loader/FrameLoader.cpp:
+ (WebCore::isBackForwardLoadType):
+ (WebCore::isReload):
+
+ Add a helper function.
+
+ (WebCore::FrameLoader::loadURL):
+ (WebCore::logNavigation):
+ (WebCore::FrameLoader::reload):
+
+ Replace bool arguments with OptionSet<ReloadOption>. Most of the patch is about adapting to this.
+
+ (WebCore::FrameLoader::transitionToCommitted):
+ (WebCore::FrameLoader::subresourceCachePolicy):
+
+ Return CachePolicyVerify for 'ReloadExpiredOnly' frame load type. This is the substantive
+ change that causes the behavior difference.
+
+ (WebCore::FrameLoader::checkLoadCompleteForThisFrame):
+ (WebCore::FrameLoader::defaultRequestCachingPolicy):
+
+ Flip the isMainResource condition for better readability.
+
+ (WebCore::FrameLoader::shouldPerformFragmentNavigation):
+ (WebCore::FrameLoader::loadDifferentDocumentItem):
+ * loader/FrameLoader.h:
+ (WebCore::FrameLoader::reload):
+ * loader/FrameLoaderTypes.h:
+ * loader/HistoryController.cpp:
+ (WebCore::HistoryController::restoreDocumentState):
+ * page/DiagnosticLoggingKeys.cpp:
+ (WebCore::DiagnosticLoggingKeys::reloadRevalidatingExpiredKey):
+ * page/DiagnosticLoggingKeys.h:
+ * replay/UserInputBridge.cpp:
+ (WebCore::UserInputBridge::reloadFrame):
+ * replay/UserInputBridge.h:
+ * testing/Internals.cpp:
+ (WebCore::Internals::forceReload):
+ (WebCore::Internals::reloadExpiredOnly):
+
+ Testing support.
+
+ * testing/Internals.h:
+ * testing/Internals.idl:
+
</ins><span class="cx"> 2017-03-17 Nan Wang <n_wang@apple.com>
</span><span class="cx">
</span><span class="cx"> AX: VoiceOver no longer works corectly with editable text in the web
</span></span></pre></div>
<a id="trunkSourceWebCorehistoryPageCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/history/PageCache.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/history/PageCache.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/history/PageCache.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -249,6 +249,13 @@
</span><span class="cx"> isCacheable = false;
</span><span class="cx"> break;
</span><span class="cx"> }
</span><ins>+ case FrameLoadType::ReloadExpiredOnly: {
+ // No point writing to the cache on a reload, since we will just write over it again when we leave that page.
+ PCLOG(" -Load type is: ReloadRevalidatingExpired");
+ logPageCacheFailureDiagnosticMessage(diagnosticLoggingClient, DiagnosticLoggingKeys::reloadRevalidatingExpiredKey());
+ isCacheable = false;
+ break;
+ }
</ins><span class="cx"> case FrameLoadType::Standard:
</span><span class="cx"> case FrameLoadType::Back:
</span><span class="cx"> case FrameLoadType::Forward:
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorPageAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorPageAgent.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -423,7 +423,11 @@
</span><span class="cx"> void InspectorPageAgent::reload(ErrorString&, const bool* const optionalIgnoreCache, const String* optionalScriptToEvaluateOnLoad)
</span><span class="cx"> {
</span><span class="cx"> m_pendingScriptToEvaluateOnLoadOnce = optionalScriptToEvaluateOnLoad ? *optionalScriptToEvaluateOnLoad : emptyString();
</span><del>- m_page.mainFrame().loader().reload(optionalIgnoreCache ? *optionalIgnoreCache : false);
</del><ins>+
+ OptionSet<ReloadOption> reloadOptions;
+ if (optionalIgnoreCache && *optionalIgnoreCache)
+ reloadOptions |= ReloadOption::FromOrigin;
+ m_page.mainFrame().loader().reload(reloadOptions);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorPageAgent::navigate(ErrorString&, const String& url)
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoader.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -156,6 +156,7 @@
</span><span class="cx"> case FrameLoadType::Standard:
</span><span class="cx"> case FrameLoadType::Reload:
</span><span class="cx"> case FrameLoadType::ReloadFromOrigin:
</span><ins>+ case FrameLoadType::ReloadExpiredOnly:
</ins><span class="cx"> case FrameLoadType::Same:
</span><span class="cx"> case FrameLoadType::RedirectWithLockedBackForwardList:
</span><span class="cx"> case FrameLoadType::Replace:
</span><span class="lines">@@ -169,6 +170,26 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+bool isReload(FrameLoadType type)
+{
+ switch (type) {
+ case FrameLoadType::Reload:
+ case FrameLoadType::ReloadFromOrigin:
+ case FrameLoadType::ReloadExpiredOnly:
+ return true;
+ case FrameLoadType::Standard:
+ case FrameLoadType::Same:
+ case FrameLoadType::RedirectWithLockedBackForwardList:
+ case FrameLoadType::Replace:
+ case FrameLoadType::Back:
+ case FrameLoadType::Forward:
+ case FrameLoadType::IndexedBackForward:
+ return false;
+ }
+ ASSERT_NOT_REACHED();
+ return false;
+}
+
</ins><span class="cx"> // This is not in the FrameLoader class to emphasize that it does not depend on
</span><span class="cx"> // private FrameLoader data, and to avoid increasing the number of public functions
</span><span class="cx"> // with access to private data. Since only this .cpp file needs it, making it
</span><span class="lines">@@ -1213,7 +1234,7 @@
</span><span class="cx"> request.setDomainForCachePartition(m_frame.tree().top().document()->securityOrigin().domainForCachePartition());
</span><span class="cx">
</span><span class="cx"> addExtraFieldsToRequest(request, newLoadType, true);
</span><del>- if (newLoadType == FrameLoadType::Reload || newLoadType == FrameLoadType::ReloadFromOrigin)
</del><ins>+ if (isReload(newLoadType))
</ins><span class="cx"> request.setCachePolicy(ReloadIgnoringCacheData);
</span><span class="cx">
</span><span class="cx"> ASSERT(newLoadType != FrameLoadType::Same);
</span><span class="lines">@@ -1266,7 +1287,7 @@
</span><span class="cx"> m_quickRedirectComing = false;
</span><span class="cx"> if (m_provisionalDocumentLoader)
</span><span class="cx"> m_provisionalDocumentLoader->setIsClientRedirect(true);
</span><del>- } else if (sameURL && newLoadType != FrameLoadType::Reload && newLoadType != FrameLoadType::ReloadFromOrigin) {
</del><ins>+ } else if (sameURL && !isReload(newLoadType)) {
</ins><span class="cx"> // Example of this case are sites that reload the same URL with a different cookie
</span><span class="cx"> // driving the generated content, or a master frame with links that drive a target
</span><span class="cx"> // frame, where the user has clicked on the same link repeatedly.
</span><span class="lines">@@ -1404,6 +1425,9 @@
</span><span class="cx"> case FrameLoadType::ReloadFromOrigin:
</span><span class="cx"> navigationDescription = ASCIILiteral("reloadFromOrigin");
</span><span class="cx"> break;
</span><ins>+ case FrameLoadType::ReloadExpiredOnly:
+ navigationDescription = ASCIILiteral("reloadRevalidatingExpired");
+ break;
</ins><span class="cx"> case FrameLoadType::Replace:
</span><span class="cx"> case FrameLoadType::RedirectWithLockedBackForwardList:
</span><span class="cx"> // Not logging those for now.
</span><span class="lines">@@ -1576,7 +1600,7 @@
</span><span class="cx"> loadWithDocumentLoader(loader.ptr(), FrameLoadType::Reload, 0, AllowNavigationToInvalidURL::Yes);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void FrameLoader::reload(bool endToEndReload, bool contentBlockersEnabled)
</del><ins>+void FrameLoader::reload(OptionSet<ReloadOption> options)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_documentLoader)
</span><span class="cx"> return;
</span><span class="lines">@@ -1597,7 +1621,7 @@
</span><span class="cx"> Ref<DocumentLoader> loader = m_client.createDocumentLoader(initialRequest, defaultSubstituteDataForURL(initialRequest.url()));
</span><span class="cx"> applyShouldOpenExternalURLsPolicyToNewDocumentLoader(loader, m_documentLoader->shouldOpenExternalURLsPolicyToPropagate());
</span><span class="cx">
</span><del>- loader->setUserContentExtensionsEnabled(contentBlockersEnabled);
</del><ins>+ loader->setUserContentExtensionsEnabled(!options.contains(ReloadOption::DisableContentBlockers));
</ins><span class="cx">
</span><span class="cx"> ResourceRequest& request = loader->request();
</span><span class="cx">
</span><span class="lines">@@ -1609,8 +1633,16 @@
</span><span class="cx"> loader->setTriggeringAction(NavigationAction(request, NavigationType::FormResubmitted));
</span><span class="cx">
</span><span class="cx"> loader->setOverrideEncoding(m_documentLoader->overrideEncoding());
</span><ins>+
+ auto frameLoadTypeForReloadOptions = [] (auto options) {
+ if (options.contains(ReloadOption::FromOrigin))
+ return FrameLoadType::ReloadFromOrigin;
+ if (options.contains(ReloadOption::ExpiredOnly))
+ return FrameLoadType::ReloadExpiredOnly;
+ return FrameLoadType::Reload;
+ };
</ins><span class="cx">
</span><del>- loadWithDocumentLoader(loader.ptr(), endToEndReload ? FrameLoadType::ReloadFromOrigin : FrameLoadType::Reload, 0, AllowNavigationToInvalidURL::Yes);
</del><ins>+ loadWithDocumentLoader(loader.ptr(), frameLoadTypeForReloadOptions(options), 0, AllowNavigationToInvalidURL::Yes);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void FrameLoader::stopAllLoaders(ClearProvisionalItemPolicy clearProvisionalItemPolicy)
</span><span class="lines">@@ -1972,6 +2004,7 @@
</span><span class="cx">
</span><span class="cx"> case FrameLoadType::Reload:
</span><span class="cx"> case FrameLoadType::ReloadFromOrigin:
</span><ins>+ case FrameLoadType::ReloadExpiredOnly:
</ins><span class="cx"> case FrameLoadType::Same:
</span><span class="cx"> case FrameLoadType::Replace:
</span><span class="cx"> history().updateForReload();
</span><span class="lines">@@ -1989,11 +2022,6 @@
</span><span class="cx"> history().updateForRedirectWithLockedBackForwardList();
</span><span class="cx"> m_client.transitionToCommittedForNewPage();
</span><span class="cx"> break;
</span><del>-
- // FIXME Remove this check when dummy ds is removed (whatever "dummy ds" is).
- // An exception should be thrown if we're in the FrameLoadTypeUninitialized state.
- default:
- ASSERT_NOT_REACHED();
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> m_documentLoader->writer().setMIMEType(dl->responseMIMEType());
</span><span class="lines">@@ -2229,6 +2257,7 @@
</span><span class="cx"> case FrameLoadType::Replace:
</span><span class="cx"> case FrameLoadType::Same:
</span><span class="cx"> case FrameLoadType::Standard:
</span><ins>+ case FrameLoadType::ReloadExpiredOnly:
</ins><span class="cx"> return CachePolicyVerify;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2315,7 +2344,7 @@
</span><span class="cx">
</span><span class="cx"> // If the user had a scroll point, scroll to it, overriding the anchor point if any.
</span><span class="cx"> if (m_frame.page()) {
</span><del>- if (isBackForwardLoadType(m_loadType) || m_loadType == FrameLoadType::Reload || m_loadType == FrameLoadType::ReloadFromOrigin)
</del><ins>+ if (isBackForwardLoadType(m_loadType) || isReload(m_loadType))
</ins><span class="cx"> history().restoreScrollPositionAndViewState();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2613,27 +2642,31 @@
</span><span class="cx"> {
</span><span class="cx"> if (m_overrideCachePolicyForTesting)
</span><span class="cx"> return m_overrideCachePolicyForTesting.value();
</span><del>- if (!isMainResource) {
- if (request.isConditional())
</del><ins>+
+ if (isMainResource) {
+ if (isReload(loadType) || request.isConditional())
</ins><span class="cx"> return ReloadIgnoringCacheData;
</span><del>- if (documentLoader()->isLoadingInAPISense()) {
- // If we inherit cache policy from a main resource, we use the DocumentLoader's
- // original request cache policy for two reasons:
- // 1. For POST requests, we mutate the cache policy for the main resource,
- // but we do not want this to apply to subresources
- // 2. Delegates that modify the cache policy using willSendRequest: should
- // not affect any other resources. Such changes need to be done
- // per request.
- ResourceRequestCachePolicy mainDocumentOriginalCachePolicy = documentLoader()->originalRequest().cachePolicy();
- // Back-forward navigations try to load main resource from cache only to avoid re-submitting form data, and start over (with a warning dialog) if that fails.
- // This policy is set on initial request too, but should not be inherited.
- return (mainDocumentOriginalCachePolicy == ReturnCacheDataDontLoad) ? ReturnCacheDataElseLoad : mainDocumentOriginalCachePolicy;
- }
- // FIXME: Other FrameLoader functions have duplicated code for setting cache policy of main request when reloading.
- // It seems better to manage it explicitly than to hide the logic inside addExtraFieldsToRequest().
- } else if (loadType == FrameLoadType::Reload || loadType == FrameLoadType::ReloadFromOrigin || request.isConditional())
</del><ins>+
+ return UseProtocolCachePolicy;
+ }
+
+ if (request.isConditional())
</ins><span class="cx"> return ReloadIgnoringCacheData;
</span><span class="cx">
</span><ins>+ if (documentLoader()->isLoadingInAPISense()) {
+ // If we inherit cache policy from a main resource, we use the DocumentLoader's
+ // original request cache policy for two reasons:
+ // 1. For POST requests, we mutate the cache policy for the main resource,
+ // but we do not want this to apply to subresources
+ // 2. Delegates that modify the cache policy using willSendRequest: should
+ // not affect any other resources. Such changes need to be done
+ // per request.
+ ResourceRequestCachePolicy mainDocumentOriginalCachePolicy = documentLoader()->originalRequest().cachePolicy();
+ // Back-forward navigations try to load main resource from cache only to avoid re-submitting form data, and start over (with a warning dialog) if that fails.
+ // This policy is set on initial request too, but should not be inherited.
+ return (mainDocumentOriginalCachePolicy == ReturnCacheDataDontLoad) ? ReturnCacheDataElseLoad : mainDocumentOriginalCachePolicy;
+ }
+
</ins><span class="cx"> return UseProtocolCachePolicy;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2899,8 +2932,7 @@
</span><span class="cx"> // FIXME: What about load types other than Standard and Reload?
</span><span class="cx">
</span><span class="cx"> return (!isFormSubmission || equalLettersIgnoringASCIICase(httpMethod, "get"))
</span><del>- && loadType != FrameLoadType::Reload
- && loadType != FrameLoadType::ReloadFromOrigin
</del><ins>+ && !isReload(loadType)
</ins><span class="cx"> && loadType != FrameLoadType::Same
</span><span class="cx"> && !shouldReload(m_frame.document()->url(), url)
</span><span class="cx"> // We don't want to just scroll if a link from within a
</span><span class="lines">@@ -3447,6 +3479,7 @@
</span><span class="cx"> switch (loadType) {
</span><span class="cx"> case FrameLoadType::Reload:
</span><span class="cx"> case FrameLoadType::ReloadFromOrigin:
</span><ins>+ case FrameLoadType::ReloadExpiredOnly:
</ins><span class="cx"> request.setCachePolicy(ReloadIgnoringCacheData);
</span><span class="cx"> break;
</span><span class="cx"> case FrameLoadType::Back:
</span><span class="lines">@@ -3466,7 +3499,7 @@
</span><span class="cx"> case FrameLoadType::RedirectWithLockedBackForwardList:
</span><span class="cx"> break;
</span><span class="cx"> case FrameLoadType::Same:
</span><del>- default:
</del><ins>+ case FrameLoadType::Replace:
</ins><span class="cx"> ASSERT_NOT_REACHED();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoader.h (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoader.h        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/loader/FrameLoader.h        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -81,6 +81,7 @@
</span><span class="cx"> struct WindowFeatures;
</span><span class="cx">
</span><span class="cx"> WEBCORE_EXPORT bool isBackForwardLoadType(FrameLoadType);
</span><ins>+WEBCORE_EXPORT bool isReload(FrameLoadType);
</ins><span class="cx">
</span><span class="cx"> class FrameLoader {
</span><span class="cx"> WTF_MAKE_NONCOPYABLE(FrameLoader);
</span><span class="lines">@@ -119,7 +120,7 @@
</span><span class="cx"> WEBCORE_EXPORT void urlSelected(const URL&, const String& target, Event*, LockHistory, LockBackForwardList, ShouldSendReferrer, ShouldOpenExternalURLsPolicy, std::optional<NewFrameOpenerPolicy> = std::nullopt, const AtomicString& downloadAttribute = nullAtom);
</span><span class="cx"> void submitForm(Ref<FormSubmission>&&);
</span><span class="cx">
</span><del>- WEBCORE_EXPORT void reload(bool endToEndReload = false, bool contentBlockersEnabled = true);
</del><ins>+ WEBCORE_EXPORT void reload(OptionSet<ReloadOption> = { });
</ins><span class="cx"> WEBCORE_EXPORT void reloadWithOverrideEncoding(const String& overrideEncoding);
</span><span class="cx">
</span><span class="cx"> void open(CachedFrameBase&);
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoaderTypesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoaderTypes.h (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoaderTypes.h        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/loader/FrameLoaderTypes.h        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -28,6 +28,8 @@
</span><span class="cx">
</span><span class="cx"> #pragma once
</span><span class="cx">
</span><ins>+#include <wtf/OptionSet.h>
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="cx"> enum FrameState {
</span><span class="lines">@@ -44,6 +46,12 @@
</span><span class="cx"> PolicyIgnore
</span><span class="cx"> };
</span><span class="cx">
</span><ins>+enum class ReloadOption {
+ ExpiredOnly = 1 << 0,
+ FromOrigin = 1 << 1,
+ DisableContentBlockers = 1 << 2,
+};
+
</ins><span class="cx"> enum class FrameLoadType {
</span><span class="cx"> Standard,
</span><span class="cx"> Back,
</span><span class="lines">@@ -54,6 +62,7 @@
</span><span class="cx"> RedirectWithLockedBackForwardList, // FIXME: Merge "lockBackForwardList", "lockHistory", "quickRedirect" and "clientRedirect" into a single concept of redirect.
</span><span class="cx"> Replace,
</span><span class="cx"> ReloadFromOrigin,
</span><ins>+ ReloadExpiredOnly
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> enum class NewFrameOpenerPolicy {
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderHistoryControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/HistoryController.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/HistoryController.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/loader/HistoryController.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -229,6 +229,7 @@
</span><span class="cx"> switch (m_frame.loader().loadType()) {
</span><span class="cx"> case FrameLoadType::Reload:
</span><span class="cx"> case FrameLoadType::ReloadFromOrigin:
</span><ins>+ case FrameLoadType::ReloadExpiredOnly:
</ins><span class="cx"> case FrameLoadType::Same:
</span><span class="cx"> case FrameLoadType::Replace:
</span><span class="cx"> // Not restoring the document state.
</span></span></pre></div>
<a id="trunkSourceWebCorepageDiagnosticLoggingKeyscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -488,6 +488,11 @@
</span><span class="cx"> return ASCIILiteral("reloadFromOrigin");
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+String DiagnosticLoggingKeys::reloadRevalidatingExpiredKey()
+{
+ return ASCIILiteral("reloadRevalidatingExpired");
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::sameLoadKey()
</span><span class="cx"> {
</span><span class="cx"> return ASCIILiteral("sameLoad");
</span></span></pre></div>
<a id="trunkSourceWebCorepageDiagnosticLoggingKeysh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DiagnosticLoggingKeys.h (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DiagnosticLoggingKeys.h        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/page/DiagnosticLoggingKeys.h        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -123,6 +123,7 @@
</span><span class="cx"> static String redirectKey();
</span><span class="cx"> static String reloadFromOriginKey();
</span><span class="cx"> static String reloadKey();
</span><ins>+ static String reloadRevalidatingExpiredKey();
</ins><span class="cx"> static String replaceKey();
</span><span class="cx"> static String resourceLoadedKey();
</span><span class="cx"> static String resourceResponseSourceKey();
</span></span></pre></div>
<a id="trunkSourceWebCorereplayUserInputBridgecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/replay/UserInputBridge.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/replay/UserInputBridge.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/replay/UserInputBridge.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -242,9 +242,9 @@
</span><span class="cx"> m_page.mainFrame().loader().load(request);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void UserInputBridge::reloadFrame(Frame* frame, bool endToEndReload, bool contentBlockersEnabled, InputSource)
</del><ins>+void UserInputBridge::reloadFrame(Frame* frame, OptionSet<ReloadOption> options, InputSource)
</ins><span class="cx"> {
</span><del>- frame->loader().reload(endToEndReload, contentBlockersEnabled);
</del><ins>+ frame->loader().reload(options);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void UserInputBridge::stopLoadingFrame(Frame* frame, InputSource)
</span></span></pre></div>
<a id="trunkSourceWebCorereplayUserInputBridgeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/replay/UserInputBridge.h (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/replay/UserInputBridge.h        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/replay/UserInputBridge.h        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx">
</span><span class="cx"> #pragma once
</span><span class="cx">
</span><ins>+#include "FrameLoaderTypes.h"
</ins><span class="cx"> #include "ScrollTypes.h"
</span><span class="cx"> #include <wtf/Noncopyable.h>
</span><span class="cx">
</span><span class="lines">@@ -88,7 +89,7 @@
</span><span class="cx">
</span><span class="cx"> // Navigation APIs.
</span><span class="cx"> WEBCORE_EXPORT void loadRequest(const FrameLoadRequest&, InputSource source = InputSource::User);
</span><del>- WEBCORE_EXPORT void reloadFrame(Frame*, bool endToEndReload, bool contentBlockersEnabled, InputSource = InputSource::User);
</del><ins>+ WEBCORE_EXPORT void reloadFrame(Frame*, OptionSet<ReloadOption>, InputSource = InputSource::User);
</ins><span class="cx"> WEBCORE_EXPORT void stopLoadingFrame(Frame*, InputSource source = InputSource::User);
</span><span class="cx"> WEBCORE_EXPORT bool tryClosePage(InputSource source = InputSource::User);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/testing/Internals.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -2838,9 +2838,18 @@
</span><span class="cx">
</span><span class="cx"> void Internals::forceReload(bool endToEnd)
</span><span class="cx"> {
</span><del>- frame()->loader().reload(endToEnd);
</del><ins>+ OptionSet<ReloadOption> reloadOptions;
+ if (endToEnd)
+ reloadOptions |= ReloadOption::FromOrigin;
+
+ frame()->loader().reload(reloadOptions);
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+void Internals::reloadExpiredOnly()
+{
+ frame()->loader().reload(ReloadOption::ExpiredOnly);
+}
+
</ins><span class="cx"> void Internals::enableAutoSizeMode(bool enabled, int minimumWidth, int minimumHeight, int maximumWidth, int maximumHeight)
</span><span class="cx"> {
</span><span class="cx"> auto* document = contextDocument();
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.h (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.h        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/testing/Internals.h        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -388,6 +388,7 @@
</span><span class="cx"> String toolTipFromElement(Element&) const;
</span><span class="cx">
</span><span class="cx"> void forceReload(bool endToEnd);
</span><ins>+ void reloadExpiredOnly();
</ins><span class="cx">
</span><span class="cx"> void enableAutoSizeMode(bool enabled, int minimumWidth, int minimumHeight, int maximumWidth, int maximumHeight);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.idl (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.idl        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebCore/testing/Internals.idl        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -392,6 +392,7 @@
</span><span class="cx"> void setUsesMockScrollAnimator(boolean enabled);
</span><span class="cx">
</span><span class="cx"> void forceReload(boolean endToEnd);
</span><ins>+ void reloadExpiredOnly();
</ins><span class="cx">
</span><span class="cx"> void enableAutoSizeMode(boolean enabled, long minimumWidth, long minimumHeight, long maximumWidth, long maximumHeight);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit/mac/ChangeLog        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2017-03-17 Antti Koivisto <antti@apple.com>
+
+ Add a reload policy where only expired subresources are revalidated
+ https://bugs.webkit.org/show_bug.cgi?id=169756
+
+ Reviewed by Andreas Kling.
+
+ * WebView/WebFrame.mm:
+ (toWebFrameLoadType):
+ (-[WebFrame reload]):
+ (-[WebFrame reloadFromOrigin]):
+
</ins><span class="cx"> 2017-03-17 Wenson Hsieh <wenson_hsieh@apple.com>
</span><span class="cx">
</span><span class="cx"> [WK1] Support animated transitions when performing a data interaction operation
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebFramemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebFrame.mm (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebFrame.mm        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit/mac/WebView/WebFrame.mm        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -1059,6 +1059,9 @@
</span><span class="cx"> return WebFrameLoadTypeReplace;
</span><span class="cx"> case FrameLoadType::ReloadFromOrigin:
</span><span class="cx"> return WebFrameLoadTypeReloadFromOrigin;
</span><ins>+ case FrameLoadType::ReloadExpiredOnly:
+ ASSERT_NOT_REACHED();
+ return WebFrameLoadTypeReload;
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2539,12 +2542,12 @@
</span><span class="cx">
</span><span class="cx"> - (void)reload
</span><span class="cx"> {
</span><del>- _private->coreFrame->loader().reload(false);
</del><ins>+ _private->coreFrame->loader().reload({ });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> - (void)reloadFromOrigin
</span><span class="cx"> {
</span><del>- _private->coreFrame->loader().reload(true);
</del><ins>+ _private->coreFrame->loader().reload(WebCore::ReloadOption::FromOrigin);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> - (WebFrame *)findFrameNamed:(NSString *)name
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebFrame.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebFrame.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit/win/WebFrame.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -306,7 +306,7 @@
</span><span class="cx"> if (!coreFrame)
</span><span class="cx"> return E_UNEXPECTED;
</span><span class="cx">
</span><del>- coreFrame->loader().reload(true);
</del><ins>+ coreFrame->loader().reload(WebCore::ReloadOption::FromOrigin);
</ins><span class="cx"> return S_OK;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/ChangeLog        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -1,3 +1,38 @@
</span><ins>+2017-03-17 Antti Koivisto <antti@apple.com>
+
+ Add a reload policy where only expired subresources are revalidated
+ https://bugs.webkit.org/show_bug.cgi?id=169756
+
+ Reviewed by Andreas Kling.
+
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageReload):
+ (WKPageReloadWithoutContentBlockers):
+ (WKPageReloadFromOrigin):
+ (WKPageReloadExpiredOnly):
+ * UIProcess/API/C/WKPage.h:
+ * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
+ (-[WKBrowsingContextController reload]):
+ (-[WKBrowsingContextController reloadFromOrigin]):
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView reload]):
+ (-[WKWebView reloadFromOrigin]):
+ (-[WKWebView _reloadWithoutContentBlockers]):
+ (-[WKWebView _reloadExpiredOnly]):
+ * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+ * UIProcess/Automation/WebAutomationSession.cpp:
+ (WebKit::WebAutomationSession::reloadBrowsingContext):
+ * UIProcess/WebFrameProxy.cpp:
+ (WebKit::WebFrameProxy::didHandleContentFilterUnblockNavigation):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::reload):
+ * UIProcess/WebPageProxy.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::reload):
+ (WebKit::shouldReuseCommittedSandboxExtension):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+
</ins><span class="cx"> 2017-03-16 Alex Christensen <achristensen@webkit.org>
</span><span class="cx">
</span><span class="cx"> Use completion handlers instead of return values for sending websocket data
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -242,25 +242,24 @@
</span><span class="cx">
</span><span class="cx"> void WKPageReload(WKPageRef pageRef)
</span><span class="cx"> {
</span><del>- const bool reloadFromOrigin = false;
- const bool contentBlockersEnabled = true;
- toImpl(pageRef)->reload(reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ toImpl(pageRef)->reload({ });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WKPageReloadWithoutContentBlockers(WKPageRef pageRef)
</span><span class="cx"> {
</span><del>- const bool reloadFromOrigin = false;
- const bool contentBlockersEnabled = false;
- toImpl(pageRef)->reload(reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ toImpl(pageRef)->reload(WebCore::ReloadOption::DisableContentBlockers);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WKPageReloadFromOrigin(WKPageRef pageRef)
</span><span class="cx"> {
</span><del>- const bool reloadFromOrigin = true;
- const bool contentBlockersEnabled = true;
- toImpl(pageRef)->reload(reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ toImpl(pageRef)->reload(WebCore::ReloadOption::FromOrigin);
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+void WKPageReloadExpiredOnly(WKPageRef pageRef)
+{
+ toImpl(pageRef)->reload(WebCore::ReloadOption::ExpiredOnly);
+}
+
</ins><span class="cx"> bool WKPageTryClose(WKPageRef pageRef)
</span><span class="cx"> {
</span><span class="cx"> return toImpl(pageRef)->tryClose();
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.h (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.h        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.h        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -84,6 +84,7 @@
</span><span class="cx"> WK_EXPORT void WKPageReload(WKPageRef page);
</span><span class="cx"> WK_EXPORT void WKPageReloadWithoutContentBlockers(WKPageRef page);
</span><span class="cx"> WK_EXPORT void WKPageReloadFromOrigin(WKPageRef page);
</span><ins>+WK_EXPORT void WKPageReloadExpiredOnly(WKPageRef page);
</ins><span class="cx">
</span><span class="cx"> WK_EXPORT bool WKPageTryClose(WKPageRef page);
</span><span class="cx"> WK_EXPORT void WKPageClose(WKPageRef page);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKBrowsingContextControllermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -187,16 +187,12 @@
</span><span class="cx">
</span><span class="cx"> - (void)reload
</span><span class="cx"> {
</span><del>- const bool reloadFromOrigin = false;
- const bool contentBlockersEnabled = true;
- _page->reload(reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ _page->reload({ });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> - (void)reloadFromOrigin
</span><span class="cx"> {
</span><del>- const bool reloadFromOrigin = true;
- const bool contentBlockersEnabled = true;
- _page->reload(reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ _page->reload(WebCore::ReloadOption::FromOrigin);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> - (NSString *)applicationNameForUserAgent
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -844,9 +844,7 @@
</span><span class="cx">
</span><span class="cx"> - (WKNavigation *)reload
</span><span class="cx"> {
</span><del>- const bool reloadFromOrigin = false;
- const bool contentBlockersEnabled = true;
- auto navigation = _page->reload(reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ auto navigation = _page->reload({ });
</ins><span class="cx"> if (!navigation)
</span><span class="cx"> return nil;
</span><span class="cx">
</span><span class="lines">@@ -855,9 +853,7 @@
</span><span class="cx">
</span><span class="cx"> - (WKNavigation *)reloadFromOrigin
</span><span class="cx"> {
</span><del>- const bool reloadFromOrigin = true;
- const bool contentBlockersEnabled = true;
- auto navigation = _page->reload(reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ auto navigation = _page->reload(WebCore::ReloadOption::FromOrigin);
</ins><span class="cx"> if (!navigation)
</span><span class="cx"> return nil;
</span><span class="cx">
</span><span class="lines">@@ -3692,9 +3688,7 @@
</span><span class="cx">
</span><span class="cx"> - (WKNavigation *)_reloadWithoutContentBlockers
</span><span class="cx"> {
</span><del>- const bool reloadFromOrigin = false;
- const bool contentBlockersEnabled = false;
- auto navigation = _page->reload(reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ auto navigation = _page->reload(WebCore::ReloadOption::DisableContentBlockers);
</ins><span class="cx"> if (!navigation)
</span><span class="cx"> return nil;
</span><span class="cx">
</span><span class="lines">@@ -3701,6 +3695,15 @@
</span><span class="cx"> return [wrapper(*navigation.leakRef()) autorelease];
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+- (WKNavigation *)_reloadExpiredOnly
+{
+ auto navigation = _page->reload(WebCore::ReloadOption::ExpiredOnly);
+ if (!navigation)
+ return nil;
+
+ return [wrapper(*navigation.leakRef()) autorelease];
+}
+
</ins><span class="cx"> - (void)_killWebContentProcessAndResetState
</span><span class="cx"> {
</span><span class="cx"> _page->terminateProcess();
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -228,6 +228,7 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> - (WKNavigation *)_reloadWithoutContentBlockers WK_API_AVAILABLE(macosx(10.12), ios(10.0));
</span><ins>+- (WKNavigation *)_reloadExpiredOnly WK_API_AVAILABLE(macosx(10.13), ios(11.0));
</ins><span class="cx">
</span><span class="cx"> - (void)_killWebContentProcessAndResetState;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIgtkWebKitWebViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -2539,9 +2539,7 @@
</span><span class="cx"> {
</span><span class="cx"> g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
</span><span class="cx">
</span><del>- const bool reloadFromOrigin = false;
- const bool contentBlockersEnabled = true;
- getPage(webView)->reload(reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ getPage(webView)->reload({ });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span><span class="lines">@@ -2555,9 +2553,7 @@
</span><span class="cx"> {
</span><span class="cx"> g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
</span><span class="cx">
</span><del>- const bool reloadFromOrigin = true;
- const bool contentBlockersEnabled = true;
- getPage(webView)->reload(reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ getPage(webView)->reload(WebCore::ReloadOption::FromOrigin);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAutomationWebAutomationSessioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -341,8 +341,7 @@
</span><span class="cx"> callback->sendFailure(STRING_FOR_PREDEFINED_ERROR_NAME(Timeout));
</span><span class="cx"> m_pendingNavigationInBrowsingContextCallbacksPerPage.set(page->pageID(), WTFMove(callback));
</span><span class="cx">
</span><del>- const bool reloadFromOrigin = false;
- page->reload(reloadFromOrigin, { });
</del><ins>+ page->reload({ });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebAutomationSession::navigationOccurredForPage(const WebPageProxy& page)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebFrameProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebFrameProxy.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebFrameProxy.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/UIProcess/WebFrameProxy.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -248,11 +248,8 @@
</span><span class="cx"> RefPtr<WebPageProxy> page { m_page };
</span><span class="cx"> ASSERT(page);
</span><span class="cx"> m_contentFilterUnblockHandler.requestUnblockAsync([page](bool unblocked) {
</span><del>- if (unblocked) {
- const bool reloadFromOrigin = false;
- const bool contentBlockersEnabled = true;
- page->reload(reloadFromOrigin, contentBlockersEnabled);
- }
</del><ins>+ if (unblocked)
+ page->reload({ });
</ins><span class="cx"> });
</span><span class="cx"> return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -1164,7 +1164,7 @@
</span><span class="cx"> m_process->responsivenessTimer().start();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<API::Navigation> WebPageProxy::reload(bool reloadFromOrigin, bool contentBlockersEnabled)
</del><ins>+RefPtr<API::Navigation> WebPageProxy::reload(OptionSet<WebCore::ReloadOption> options)
</ins><span class="cx"> {
</span><span class="cx"> SandboxExtension::Handle sandboxExtensionHandle;
</span><span class="cx">
</span><span class="lines">@@ -1187,7 +1187,7 @@
</span><span class="cx">
</span><span class="cx"> auto navigation = m_navigationState->createReloadNavigation();
</span><span class="cx">
</span><del>- m_process->send(Messages::WebPage::Reload(navigation->navigationID(), reloadFromOrigin, contentBlockersEnabled, sandboxExtensionHandle), m_pageID);
</del><ins>+ m_process->send(Messages::WebPage::Reload(navigation->navigationID(), options.toRaw(), sandboxExtensionHandle), m_pageID);
</ins><span class="cx"> m_process->responsivenessTimer().start();
</span><span class="cx">
</span><span class="cx"> return WTFMove(navigation);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -404,7 +404,7 @@
</span><span class="cx"> void navigateToPDFLinkWithSimulatedClick(const String& url, WebCore::IntPoint documentPoint, WebCore::IntPoint screenPoint);
</span><span class="cx">
</span><span class="cx"> void stopLoading();
</span><del>- RefPtr<API::Navigation> reload(bool reloadFromOrigin, bool contentBlockersEnabled);
</del><ins>+ RefPtr<API::Navigation> reload(OptionSet<WebCore::ReloadOption>);
</ins><span class="cx">
</span><span class="cx"> RefPtr<API::Navigation> goForward();
</span><span class="cx"> RefPtr<API::Navigation> goBack();
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -1315,7 +1315,7 @@
</span><span class="cx"> m_page->setDefersLoading(defersLoading);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void WebPage::reload(uint64_t navigationID, bool reloadFromOrigin, bool contentBlockersEnabled, const SandboxExtension::Handle& sandboxExtensionHandle)
</del><ins>+void WebPage::reload(uint64_t navigationID, uint32_t reloadOptions, const SandboxExtension::Handle& sandboxExtensionHandle)
</ins><span class="cx"> {
</span><span class="cx"> SendStopResponsivenessTimer stopper(this);
</span><span class="cx">
</span><span class="lines">@@ -1323,7 +1323,7 @@
</span><span class="cx"> m_pendingNavigationID = navigationID;
</span><span class="cx">
</span><span class="cx"> m_sandboxExtensionTracker.beginLoad(m_mainFrame.get(), sandboxExtensionHandle);
</span><del>- corePage()->userInputBridge().reloadFrame(m_mainFrame->coreFrame(), reloadFromOrigin, contentBlockersEnabled);
</del><ins>+ corePage()->userInputBridge().reloadFrame(m_mainFrame->coreFrame(), OptionSet<ReloadOption>::fromRaw(reloadOptions));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPage::goForward(uint64_t navigationID, uint64_t backForwardItemID)
</span><span class="lines">@@ -4140,7 +4140,7 @@
</span><span class="cx"> FrameLoadType frameLoadType = frameLoader.loadType();
</span><span class="cx">
</span><span class="cx"> // If the page is being reloaded, it should reuse whatever extension is committed.
</span><del>- if (frameLoadType == FrameLoadType::Reload || frameLoadType == FrameLoadType::ReloadFromOrigin)
</del><ins>+ if (isReload(frameLoadType))
</ins><span class="cx"> return true;
</span><span class="cx">
</span><span class="cx"> DocumentLoader* documentLoader = frameLoader.documentLoader();
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -1047,7 +1047,7 @@
</span><span class="cx"> void loadString(const LoadParameters&);
</span><span class="cx"> void loadAlternateHTMLString(const LoadParameters&);
</span><span class="cx"> void navigateToPDFLinkWithSimulatedClick(const String& url, WebCore::IntPoint documentPoint, WebCore::IntPoint screenPoint);
</span><del>- void reload(uint64_t navigationID, bool reloadFromOrigin, bool contentBlockersEnabled, const SandboxExtension::Handle&);
</del><ins>+ void reload(uint64_t navigationID, uint32_t reloadOptions, const SandboxExtension::Handle&);
</ins><span class="cx"> void goForward(uint64_t navigationID, uint64_t);
</span><span class="cx"> void goBack(uint64_t navigationID, uint64_t);
</span><span class="cx"> void goToBackForwardItem(uint64_t navigationID, uint64_t);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagemessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (214112 => 214113)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2017-03-17 19:48:36 UTC (rev 214112)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2017-03-17 19:52:49 UTC (rev 214113)
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx">
</span><span class="cx"> NavigateToPDFLinkWithSimulatedClick(String url, WebCore::IntPoint documentPoint, WebCore::IntPoint screenPoint)
</span><span class="cx">
</span><del>- Reload(uint64_t navigationID, bool reloadFromOrigin, bool contentBlockersEnabled, WebKit::SandboxExtension::Handle sandboxExtensionHandle)
</del><ins>+ Reload(uint64_t navigationID, uint32_t reloadOptions, WebKit::SandboxExtension::Handle sandboxExtensionHandle)
</ins><span class="cx"> StopLoading()
</span><span class="cx">
</span><span class="cx"> StopLoadingFrame(uint64_t frameID)
</span></span></pre>
</div>
</div>
</body>
</html>