<!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>[245784] 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/245784">245784</a></dd>
<dt>Author</dt> <dd>wilander@apple.com</dd>
<dt>Date</dt> <dd>2019-05-26 15:39:09 -0700 (Sun, 26 May 2019)</dd>
</dl>
<h3>Log Message</h3>
<pre>Resource Load Statistics: Downgrade document.referrer to the referrer's eTLD+1 if the page was navigated to with a prevalent resource referrer containing link decoration
https://bugs.webkit.org/show_bug.cgi?id=198227
<rdar://problem/51117258>
Reviewed by Alex Christensen.
Source/WebCore:
Test: http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html
* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::referrer const):
Now checks if the referrer has been overridden.
(WebCore::Document::wasLoadedWithDataTransferFromPrevalentResource):
(WebCore::Document::downgradeReferrerToRegistrableDomain):
* dom/Document.h:
* page/CrossSiteNavigationDataTransfer.h: Added.
New option set for the growing number of navigational data transfers we care about.
* platform/network/NetworkStorageSession.cpp:
(WebCore::NetworkStorageSession::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
(WebCore::NetworkStorageSession::committedCrossSiteLoadWithLinkDecoration): Deleted.
New name since we no longer only look for link decoration but also other means of navigational data transfer.
* platform/network/NetworkStorageSession.h:
Source/WebKit:
This patch adds a call back to the UI process if the network process finds the navigational
data transfer was done by a prevalent resource and we need to adjust something for the page.
Currently, that adjustment is to downgrade document.referrer.
The patch also removes an unused completion handler.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::NetworkProcess::committedCrossSiteLoadWithLinkDecoration): Deleted.
New name since we no longer only look for link decoration but also other means of navigational data transfer.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
(WebKit::NetworkProcessProxy::committedCrossSiteLoadWithLinkDecoration): Deleted.
New name since we no longer only look for link decoration but also other means of navigational data transfer.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/WebPageProxy.cpp:
(WebKit::checkIfNavigationContainsDataTransfer):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
(WebKit::isNonUniqueNavigationWithLinkDecoration): Deleted.
New name since we no longer only look for link decoration but also other means of navigational data transfer.
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::WebProcessPool::committedCrossSiteLoadWithLinkDecoration): Deleted.
New name since we no longer only look for link decoration but also other means of navigational data transfer.
* UIProcess/WebProcessPool.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::wasLoadedWithDataTransferFromPrevalentResource):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
LayoutTests:
* http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-expected.txt: Added.
* http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html: Added.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreHeaderscmake">trunk/Source/WebCore/Headers.cmake</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumenth">trunk/Source/WebCore/dom/Document.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkNetworkStorageSessioncpp">trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkNetworkStorageSessionh">trunk/Source/WebCore/platform/network/NetworkStorageSession.h</a></li>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkProcesscpp">trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkProcessh">trunk/Source/WebKit/NetworkProcess/NetworkProcess.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkProcessmessagesin">trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in</a></li>
<li><a href="#trunkSourceWebKitUIProcessNetworkNetworkProcessProxycpp">trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessNetworkNetworkProcessProxyh">trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessNetworkNetworkProcessProxymessagesin">trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebPageProxycpp">trunk/Source/WebKit/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebPageProxyh">trunk/Source/WebKit/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebProcessPoolcpp">trunk/Source/WebKit/UIProcess/WebProcessPool.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebProcessPoolh">trunk/Source/WebKit/UIProcess/WebProcessPool.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageWebPagecpp">trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageWebPageh">trunk/Source/WebKit/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageWebPagemessagesin">trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestshttptestsresourceLoadStatisticsdowngradedreferrerfornavigationwithlinkqueryfromprevalentresourceexpectedtxt">trunk/LayoutTests/http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestsresourceLoadStatisticsdowngradedreferrerfornavigationwithlinkqueryfromprevalentresourcehtml">trunk/LayoutTests/http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html</a></li>
<li><a href="#trunkSourceWebCorepageCrossSiteNavigationDataTransferh">trunk/Source/WebCore/page/CrossSiteNavigationDataTransfer.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/LayoutTests/ChangeLog 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2019-05-26 John Wilander <wilander@apple.com>
+
+ Resource Load Statistics: Downgrade document.referrer to the referrer's eTLD+1 if the page was navigated to with a prevalent resource referrer containing link decoration
+ https://bugs.webkit.org/show_bug.cgi?id=198227
+ <rdar://problem/51117258>
+
+ Reviewed by Alex Christensen.
+
+ * http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-expected.txt: Added.
+ * http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html: Added.
+
</ins><span class="cx"> 2019-05-25 Youenn Fablet <youenn@apple.com>
</span><span class="cx">
</span><span class="cx"> media/video-remote-control-playpause.html is timing out after r245712
</span></span></pre></div>
<a id="trunkLayoutTestshttptestsresourceLoadStatisticsdowngradedreferrerfornavigationwithlinkqueryfromprevalentresourceexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-expected.txt (0 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-expected.txt (rev 0)
+++ trunk/LayoutTests/http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-expected.txt 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+Check that document.referrer is downgraded to the eTLD+1 after a cross-site navigation with link query.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS The referrer is downgraded.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestsresourceLoadStatisticsdowngradedreferrerfornavigationwithlinkqueryfromprevalentresourcehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html (0 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html (rev 0)
+++ trunk/LayoutTests/http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<head>
+ <script src="/js-test-resources/js-test.js"></script>
+ <script src="/cookies/resources/cookie-utilities.js"></script>
+ <script src="resources/util.js"></script>
+</head>
+<body onload="setTimeout('runTest()', 0)">
+<script>
+ description("Check that document.referrer is downgraded to the eTLD+1 after a cross-site navigation with link query.");
+ jsTestIsAsync = true;
+
+ let numberOfTries = 0;
+ function testReferrer() {
+ if (document.referrer === prevalentResourceOrigin + "/") {
+ testPassed("The referrer is downgraded.");
+ setEnableFeature(false, finishJSTest);
+ } else if (++numberOfTries <= 5)
+ setTimeout(testReferrer, 200);
+ else {
+ testFailed("The referrer is not downgraded: " + document.referrer);
+ setEnableFeature(false, finishJSTest);
+ }
+ }
+
+ function navigateSameOriginToAddQuery() {
+ document.location.href = prevalentResourceOrigin + "/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html?link=query";
+ }
+
+ function navigateCrossOrigin() {
+ document.location.href = destinationOrigin + "/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html";
+ }
+
+ const destinationOrigin = "http://localhost:8000";
+ const prevalentResourceOrigin = "http://127.0.0.1:8000";
+ function runTest() {
+ if (document.location.origin === prevalentResourceOrigin && document.location.search === "") {
+ navigateSameOriginToAddQuery();
+ } else if (document.location.origin === prevalentResourceOrigin) {
+ setEnableFeature(true, function () {
+ testRunner.setStatisticsPrevalentResource(prevalentResourceOrigin, true, function() {
+ if (!testRunner.isStatisticsPrevalentResource(prevalentResourceOrigin))
+ testFailed("Host did not get set as prevalent resource.");
+ testRunner.statisticsUpdateCookieBlocking(navigateCrossOrigin);
+ });
+ });
+ } else {
+ testReferrer();
+ }
+ }
+</script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebCore/ChangeLog 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2019-05-26 John Wilander <wilander@apple.com>
+
+ Resource Load Statistics: Downgrade document.referrer to the referrer's eTLD+1 if the page was navigated to with a prevalent resource referrer containing link decoration
+ https://bugs.webkit.org/show_bug.cgi?id=198227
+ <rdar://problem/51117258>
+
+ Reviewed by Alex Christensen.
+
+ Test: http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource.html
+
+ * Headers.cmake:
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/Document.cpp:
+ (WebCore::Document::referrer const):
+ Now checks if the referrer has been overridden.
+ (WebCore::Document::wasLoadedWithDataTransferFromPrevalentResource):
+ (WebCore::Document::downgradeReferrerToRegistrableDomain):
+ * dom/Document.h:
+ * page/CrossSiteNavigationDataTransfer.h: Added.
+ New option set for the growing number of navigational data transfers we care about.
+ * platform/network/NetworkStorageSession.cpp:
+ (WebCore::NetworkStorageSession::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
+ (WebCore::NetworkStorageSession::committedCrossSiteLoadWithLinkDecoration): Deleted.
+ New name since we no longer only look for link decoration but also other means of navigational data transfer.
+ * platform/network/NetworkStorageSession.h:
+
</ins><span class="cx"> 2019-05-26 Zalan Bujtas <zalan@apple.com>
</span><span class="cx">
</span><span class="cx"> [LFC][Verification] Add areEssentiallyEqual for LayoutRect
</span></span></pre></div>
<a id="trunkSourceWebCoreHeaderscmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Headers.cmake (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Headers.cmake 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebCore/Headers.cmake 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -742,6 +742,7 @@
</span><span class="cx"> page/ContextMenuContext.h
</span><span class="cx"> page/ContextMenuController.h
</span><span class="cx"> page/ContextMenuProvider.h
</span><ins>+ page/CrossSiteNavigationDataTransfer.h
</ins><span class="cx"> page/DOMSelection.h
</span><span class="cx"> page/DOMTimer.h
</span><span class="cx"> page/DOMWindow.h
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -1978,6 +1978,7 @@
</span><span class="cx"> 6A22E8701F10418600F546C3 /* InspectorCanvas.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A22E86F1F10418600F546C3 /* InspectorCanvas.h */; };
</span><span class="cx"> 6A72798B1F16C29C003F39B8 /* InspectorShaderProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A7279881F16C29B003F39B8 /* InspectorShaderProgram.h */; };
</span><span class="cx"> 6B0A07F221FA4B5C00D57391 /* AdClickAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B0A07F021FA4B5C00D57391 /* AdClickAttribution.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+ 6B1F48112298A37E00DE8B82 /* CrossSiteNavigationDataTransfer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B1F480F22989EC400DE8B82 /* CrossSiteNavigationDataTransfer.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx"> 6B3480940EEF50D400AC1B41 /* NativeImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3480920EEF50D400AC1B41 /* NativeImage.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx"> 6B4E8613221B713F0022F389 /* RegistrableDomain.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B4E8612221B713F0022F389 /* RegistrableDomain.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx"> 6B693A2E1C51A82E00B03BEF /* ResourceLoadObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B693A2D1C51A82E00B03BEF /* ResourceLoadObserver.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -9055,6 +9056,7 @@
</span><span class="cx"> 6A7279891F16C29B003F39B8 /* InspectorShaderProgram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorShaderProgram.cpp; sourceTree = "<group>"; };
</span><span class="cx"> 6B0A07F021FA4B5C00D57391 /* AdClickAttribution.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdClickAttribution.h; sourceTree = "<group>"; };
</span><span class="cx"> 6B0A07F121FA4B5C00D57391 /* AdClickAttribution.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AdClickAttribution.cpp; sourceTree = "<group>"; };
</span><ins>+ 6B1F480F22989EC400DE8B82 /* CrossSiteNavigationDataTransfer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CrossSiteNavigationDataTransfer.h; sourceTree = "<group>"; };
</ins><span class="cx"> 6B3480920EEF50D400AC1B41 /* NativeImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NativeImage.h; sourceTree = "<group>"; };
</span><span class="cx"> 6B4E8612221B713F0022F389 /* RegistrableDomain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RegistrableDomain.h; sourceTree = "<group>"; };
</span><span class="cx"> 6B693A2D1C51A82E00B03BEF /* ResourceLoadObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadObserver.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -20095,6 +20097,7 @@
</span><span class="cx"> 065AD4F30B0C2EDA005A2B1D /* ContextMenuController.cpp */,
</span><span class="cx"> 065AD4F40B0C2EDA005A2B1D /* ContextMenuController.h */,
</span><span class="cx"> 7ADE722510CBBB9B006B3B3A /* ContextMenuProvider.h */,
</span><ins>+ 6B1F480F22989EC400DE8B82 /* CrossSiteNavigationDataTransfer.h */,
</ins><span class="cx"> 975CA287130365F800E99AD9 /* Crypto.cpp */,
</span><span class="cx"> 975CA288130365F800E99AD9 /* Crypto.h */,
</span><span class="cx"> 975CA289130365F800E99AD9 /* Crypto.idl */,
</span><span class="lines">@@ -28554,6 +28557,7 @@
</span><span class="cx"> E1C416120F6562FD0092D2FB /* CrossOriginAccessControl.h in Headers */,
</span><span class="cx"> 41ABE67B1D0580DB006D862D /* CrossOriginPreflightChecker.h in Headers */,
</span><span class="cx"> E1C415DA0F655D6F0092D2FB /* CrossOriginPreflightResultCache.h in Headers */,
</span><ins>+ 6B1F48112298A37E00DE8B82 /* CrossSiteNavigationDataTransfer.h in Headers */,
</ins><span class="cx"> E169803D1133542D00894115 /* CRuntimeObject.h in Headers */,
</span><span class="cx"> 975CA28B130365F800E99AD9 /* Crypto.h in Headers */,
</span><span class="cx"> 7C9ACA981F3CCDAD00F3AA09 /* CryptoAesKeyAlgorithm.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebCore/dom/Document.cpp 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -4863,6 +4863,10 @@
</span><span class="cx">
</span><span class="cx"> String Document::referrer() const
</span><span class="cx"> {
</span><ins>+#if ENABLE(RESOURCE_LOAD_STATISTICS)
+ if (!m_referrerOverride.isEmpty())
+ return m_referrerOverride;
+#endif
</ins><span class="cx"> if (frame())
</span><span class="cx"> return frame()->loader().referrer();
</span><span class="cx"> return String();
</span><span class="lines">@@ -7847,6 +7851,37 @@
</span><span class="cx"> {
</span><span class="cx"> m_registrableDomainRequestedPageSpecificStorageAccessWithUserInteraction = domain;
</span><span class="cx"> }
</span><ins>+
+void Document::wasLoadedWithDataTransferFromPrevalentResource()
+{
+ downgradeReferrerToRegistrableDomain();
+}
+
+void Document::downgradeReferrerToRegistrableDomain()
+{
+ auto referrerStr = referrer();
+ if (referrerStr.isEmpty())
+ return;
+
+ URL referrerURL { URL(), referrerStr };
+ auto referrerPort = referrerURL.port();
+ RegistrableDomain referrerRegistrableDomain { referrerURL };
+ auto referrerRegistrableDomainStr = referrerRegistrableDomain.string();
+ if (referrerRegistrableDomainStr.isEmpty())
+ return;
+
+ StringBuilder builder;
+ builder.append(referrerURL.protocol());
+ builder.appendLiteral("://");
+ builder.append(referrerRegistrableDomainStr);
+ if (referrerPort) {
+ builder.append(':');
+ builder.appendNumber(*referrerPort);
+ }
+ builder.append('/');
+
+ m_referrerOverride = builder.toString();
+}
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> void Document::setConsoleMessageListener(RefPtr<StringCallback>&& listener)
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.h (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.h 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebCore/dom/Document.h 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -1496,6 +1496,8 @@
</span><span class="cx"> #if ENABLE(RESOURCE_LOAD_STATISTICS)
</span><span class="cx"> bool hasRequestedPageSpecificStorageAccessWithUserInteraction(const RegistrableDomain&);
</span><span class="cx"> void setHasRequestedPageSpecificStorageAccessWithUserInteraction(const RegistrableDomain&);
</span><ins>+ WEBCORE_EXPORT void wasLoadedWithDataTransferFromPrevalentResource();
+ void downgradeReferrerToRegistrableDomain();
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> String signedPublicKeyAndChallengeString(unsigned keySizeIndex, const String& challengeString, const URL&);
</span><span class="lines">@@ -2043,6 +2045,7 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(RESOURCE_LOAD_STATISTICS)
</span><span class="cx"> RegistrableDomain m_registrableDomainRequestedPageSpecificStorageAccessWithUserInteraction { };
</span><ins>+ String m_referrerOverride;
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> CSSRegisteredCustomPropertySet m_CSSRegisteredPropertySet;
</span></span></pre></div>
<a id="trunkSourceWebCorepageCrossSiteNavigationDataTransferh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/page/CrossSiteNavigationDataTransfer.h (0 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/CrossSiteNavigationDataTransfer.h (rev 0)
+++ trunk/Source/WebCore/page/CrossSiteNavigationDataTransfer.h 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(RESOURCE_LOAD_STATISTICS)
+#include <wtf/OptionSet.h>
+
+namespace WebCore {
+
+struct CrossSiteNavigationDataTransfer {
+ enum class Flag : uint8_t {
+ DestinationLinkDecoration = 1 << 1,
+ ReferrerLinkDecoration = 1 << 2,
+ };
+};
+
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkNetworkStorageSessioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -215,10 +215,9 @@
</span><span class="cx"> m_cacheMaxAgeCapForPrevalentResources = WTF::nullopt;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void NetworkStorageSession::committedCrossSiteLoadWithLinkDecoration(const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID)
</del><ins>+void NetworkStorageSession::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource(const RegistrableDomain& toDomain, uint64_t pageID)
</ins><span class="cx"> {
</span><del>- if (shouldBlockThirdPartyCookies(fromDomain))
- m_navigatedToWithLinkDecorationByPrevalentResource.add(pageID, toDomain);
</del><ins>+ m_navigatedToWithLinkDecorationByPrevalentResource.add(pageID, toDomain);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void NetworkStorageSession::resetCrossSiteLoadsWithLinkDecorationForTesting()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkNetworkStorageSessionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/NetworkStorageSession.h (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/NetworkStorageSession.h 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebCore/platform/network/NetworkStorageSession.h 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -144,6 +144,7 @@
</span><span class="cx"> #if ENABLE(RESOURCE_LOAD_STATISTICS)
</span><span class="cx"> WEBCORE_EXPORT bool shouldBlockCookies(const ResourceRequest&, Optional<uint64_t> frameID, Optional<uint64_t> pageID) const;
</span><span class="cx"> WEBCORE_EXPORT bool shouldBlockCookies(const URL& firstPartyForCookies, const URL& resource, Optional<uint64_t> frameID, Optional<uint64_t> pageID) const;
</span><ins>+ WEBCORE_EXPORT bool shouldBlockThirdPartyCookies(const RegistrableDomain&) const;
</ins><span class="cx"> WEBCORE_EXPORT void setPrevalentDomainsToBlockCookiesFor(const Vector<RegistrableDomain>&);
</span><span class="cx"> WEBCORE_EXPORT void setAgeCapForClientSideCookies(Optional<Seconds>);
</span><span class="cx"> WEBCORE_EXPORT void removePrevalentDomains(const Vector<RegistrableDomain>& domains);
</span><span class="lines">@@ -156,7 +157,7 @@
</span><span class="cx"> WEBCORE_EXPORT void setCacheMaxAgeCapForPrevalentResources(Seconds);
</span><span class="cx"> WEBCORE_EXPORT void resetCacheMaxAgeCapForPrevalentResources();
</span><span class="cx"> WEBCORE_EXPORT Optional<Seconds> maxAgeCacheCap(const ResourceRequest&);
</span><del>- WEBCORE_EXPORT void committedCrossSiteLoadWithLinkDecoration(const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID);
</del><ins>+ WEBCORE_EXPORT void didCommitCrossSiteLoadWithDataTransferFromPrevalentResource(const RegistrableDomain& toDomain, uint64_t pageID);
</ins><span class="cx"> WEBCORE_EXPORT void resetCrossSiteLoadsWithLinkDecorationForTesting();
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -181,7 +182,6 @@
</span><span class="cx"> CredentialStorage m_credentialStorage;
</span><span class="cx">
</span><span class="cx"> #if ENABLE(RESOURCE_LOAD_STATISTICS)
</span><del>- bool shouldBlockThirdPartyCookies(const RegistrableDomain&) const;
</del><span class="cx"> Optional<Seconds> clientSideCookieCap(const RegistrableDomain& firstParty, Optional<uint64_t> pageID) const;
</span><span class="cx"> HashSet<RegistrableDomain> m_registrableDomainsToBlockCookieFor;
</span><span class="cx"> HashMap<uint64_t, HashMap<uint64_t, RegistrableDomain, DefaultHash<uint64_t>::Hash, WTF::UnsignedWithZeroKeyHashTraits<uint64_t>>, DefaultHash<uint64_t>::Hash, WTF::UnsignedWithZeroKeyHashTraits<uint64_t>> m_framesGrantedStorageAccess;
</span></span></pre></div>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/ChangeLog 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -1,3 +1,47 @@
</span><ins>+2019-05-26 John Wilander <wilander@apple.com>
+
+ Resource Load Statistics: Downgrade document.referrer to the referrer's eTLD+1 if the page was navigated to with a prevalent resource referrer containing link decoration
+ https://bugs.webkit.org/show_bug.cgi?id=198227
+ <rdar://problem/51117258>
+
+ Reviewed by Alex Christensen.
+
+ This patch adds a call back to the UI process if the network process finds the navigational
+ data transfer was done by a prevalent resource and we need to adjust something for the page.
+ Currently, that adjustment is to downgrade document.referrer.
+
+ The patch also removes an unused completion handler.
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::didCommitCrossSiteLoadWithDataTransfer):
+ (WebKit::NetworkProcess::committedCrossSiteLoadWithLinkDecoration): Deleted.
+ New name since we no longer only look for link decoration but also other means of navigational data transfer.
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/NetworkProcess.messages.in:
+ * UIProcess/Network/NetworkProcessProxy.cpp:
+ (WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransfer):
+ (WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
+ (WebKit::NetworkProcessProxy::committedCrossSiteLoadWithLinkDecoration): Deleted.
+ New name since we no longer only look for link decoration but also other means of navigational data transfer.
+ * UIProcess/Network/NetworkProcessProxy.h:
+ * UIProcess/Network/NetworkProcessProxy.messages.in:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::checkIfNavigationContainsDataTransfer):
+ (WebKit::WebPageProxy::didCommitLoadForFrame):
+ (WebKit::WebPageProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
+ (WebKit::isNonUniqueNavigationWithLinkDecoration): Deleted.
+ New name since we no longer only look for link decoration but also other means of navigational data transfer.
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::didCommitCrossSiteLoadWithDataTransfer):
+ (WebKit::WebProcessPool::committedCrossSiteLoadWithLinkDecoration): Deleted.
+ New name since we no longer only look for link decoration but also other means of navigational data transfer.
+ * UIProcess/WebProcessPool.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::wasLoadedWithDataTransferFromPrevalentResource):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+
</ins><span class="cx"> 2019-05-26 Wenson Hsieh <wenson_hsieh@apple.com>
</span><span class="cx">
</span><span class="cx"> [iOS] Dropped text, attachments, and images should animate into place
</span></span></pre></div>
<a id="trunkSourceWebKitNetworkProcessNetworkProcesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -1155,21 +1155,28 @@
</span><span class="cx"> completionHandler();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void NetworkProcess::committedCrossSiteLoadWithLinkDecoration(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID, CompletionHandler<void()>&& completionHandler)
</del><ins>+void NetworkProcess::didCommitCrossSiteLoadWithDataTransfer(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, OptionSet<WebCore::CrossSiteNavigationDataTransfer::Flag> navigationDataTransfer, uint64_t pageID)
</ins><span class="cx"> {
</span><del>- if (auto* networkStorageSession = storageSession(sessionID))
- networkStorageSession->committedCrossSiteLoadWithLinkDecoration(fromDomain, toDomain, pageID);
- else
</del><ins>+ ASSERT(!navigationDataTransfer.isEmpty());
+
+ if (auto* networkStorageSession = storageSession(sessionID)) {
+ if (!networkStorageSession->shouldBlockThirdPartyCookies(fromDomain))
+ return;
+
+ if (navigationDataTransfer.contains(CrossSiteNavigationDataTransfer::Flag::DestinationLinkDecoration))
+ networkStorageSession->didCommitCrossSiteLoadWithDataTransferFromPrevalentResource(toDomain, pageID);
+
+ if (navigationDataTransfer.contains(CrossSiteNavigationDataTransfer::Flag::ReferrerLinkDecoration))
+ parentProcessConnection()->send(Messages::NetworkProcessProxy::DidCommitCrossSiteLoadWithDataTransferFromPrevalentResource(pageID), 0);
+ } else
</ins><span class="cx"> ASSERT_NOT_REACHED();
</span><del>-
- if (auto* networkSession = this->networkSession(sessionID)) {
- if (auto* resourceLoadStatistics = networkSession->resourceLoadStatistics())
- resourceLoadStatistics->logCrossSiteLoadWithLinkDecoration(fromDomain, toDomain, WTFMove(completionHandler));
- else
- completionHandler();
- } else {
- ASSERT_NOT_REACHED();
- completionHandler();
</del><ins>+
+ if (navigationDataTransfer.contains(CrossSiteNavigationDataTransfer::Flag::DestinationLinkDecoration)) {
+ if (auto* networkSession = this->networkSession(sessionID)) {
+ if (auto* resourceLoadStatistics = networkSession->resourceLoadStatistics())
+ resourceLoadStatistics->logCrossSiteLoadWithLinkDecoration(fromDomain, toDomain, [] { });
+ } else
+ ASSERT_NOT_REACHED();
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKitNetworkProcessNetworkProcessh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #include "WebsiteData.h"
</span><span class="cx"> #include <WebCore/AdClickAttribution.h>
</span><span class="cx"> #include <WebCore/ClientOrigin.h>
</span><ins>+#include <WebCore/CrossSiteNavigationDataTransfer.h>
</ins><span class="cx"> #include <WebCore/DiagnosticLoggingClient.h>
</span><span class="cx"> #include <WebCore/FetchIdentifier.h>
</span><span class="cx"> #include <WebCore/IDBKeyData.h>
</span><span class="lines">@@ -258,7 +259,7 @@
</span><span class="cx"> void setTopFrameUniqueRedirectTo(PAL::SessionID, const TopFrameDomain&, const RedirectedToDomain&, CompletionHandler<void()>&&);
</span><span class="cx"> void setTopFrameUniqueRedirectFrom(PAL::SessionID, const TopFrameDomain&, const RedirectedFromDomain&, CompletionHandler<void()>&&);
</span><span class="cx"> void registrableDomainsWithWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, bool shouldNotifyPage, CompletionHandler<void(HashSet<RegistrableDomain>&&)>&&);
</span><del>- void committedCrossSiteLoadWithLinkDecoration(PAL::SessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID, CompletionHandler<void()>&&);
</del><ins>+ void didCommitCrossSiteLoadWithDataTransfer(PAL::SessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, OptionSet<WebCore::CrossSiteNavigationDataTransfer::Flag>, uint64_t pageID);
</ins><span class="cx"> void setCrossSiteLoadWithLinkDecorationForTesting(PAL::SessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, CompletionHandler<void()>&&);
</span><span class="cx"> void resetCrossSiteLoadsWithLinkDecorationForTesting(PAL::SessionID, CompletionHandler<void()>&&);
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKitNetworkProcessNetworkProcessmessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx"> SetTopFrameUniqueRedirectTo(PAL::SessionID sessionID, WebCore::RegistrableDomain topFrameDomain, WebCore::RegistrableDomain redirectedToDomain) -> () Async
</span><span class="cx"> SetTopFrameUniqueRedirectFrom(PAL::SessionID sessionID, WebCore::RegistrableDomain topFrameDomain, WebCore::RegistrableDomain redirectedFromDomain) -> () Async
</span><span class="cx"> ResetCacheMaxAgeCapForPrevalentResources(PAL::SessionID sessionID) -> () Async
</span><del>- CommittedCrossSiteLoadWithLinkDecoration(PAL::SessionID sessionID, WebCore::RegistrableDomain fromDomain, WebCore::RegistrableDomain toDomain, uint64_t pageID) -> () Async
</del><ins>+ DidCommitCrossSiteLoadWithDataTransfer(PAL::SessionID sessionID, WebCore::RegistrableDomain fromDomain, WebCore::RegistrableDomain toDomain, OptionSet<WebCore::CrossSiteNavigationDataTransfer::Flag> navigationDataTransfer, uint64_t pageID)
</ins><span class="cx"> SetCrossSiteLoadWithLinkDecorationForTesting(PAL::SessionID sessionID, WebCore::RegistrableDomain fromDomain, WebCore::RegistrableDomain toDomain) -> () Async
</span><span class="cx"> ResetCrossSiteLoadsWithLinkDecorationForTesting(PAL::SessionID sessionID) -> () Async
</span><span class="cx"> DeleteCookiesForTesting(PAL::SessionID sessionID, WebCore::RegistrableDomain domain, bool includeHttpOnlyCookies) -> () Async
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessNetworkNetworkProcessProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -908,16 +908,26 @@
</span><span class="cx"> WebProcessProxy::notifyPageStatisticsTelemetryFinished(API::Dictionary::create(messageBody).ptr());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void NetworkProcessProxy::committedCrossSiteLoadWithLinkDecoration(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID, CompletionHandler<void()>&& completionHandler)
</del><ins>+void NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransfer(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, OptionSet<WebCore::CrossSiteNavigationDataTransfer::Flag> navigationDataTransfer, uint64_t pageID)
</ins><span class="cx"> {
</span><del>- if (!canSendMessage()) {
- completionHandler();
</del><ins>+ if (!canSendMessage())
</ins><span class="cx"> return;
</span><del>- }
-
- sendWithAsyncReply(Messages::NetworkProcess::CommittedCrossSiteLoadWithLinkDecoration(sessionID, fromDomain, toDomain, pageID), WTFMove(completionHandler));
</del><ins>+
+ send(Messages::NetworkProcess::DidCommitCrossSiteLoadWithDataTransfer(sessionID, fromDomain, toDomain, navigationDataTransfer, pageID), 0);
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+void NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource(uint64_t pageID)
+{
+ if (!canSendMessage())
+ return;
+
+ WebPageProxy* page = WebProcessProxy::webPage(pageID);
+ if (!page)
+ return;
+
+ page->didCommitCrossSiteLoadWithDataTransferFromPrevalentResource();
+}
+
</ins><span class="cx"> void NetworkProcessProxy::setCrossSiteLoadWithLinkDecorationForTesting(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, CompletionHandler<void()>&& completionHandler)
</span><span class="cx"> {
</span><span class="cx"> if (!canSendMessage()) {
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessNetworkNetworkProcessProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include "ProcessThrottlerClient.h"
</span><span class="cx"> #include "UserContentControllerIdentifier.h"
</span><span class="cx"> #include "WebProcessProxyMessages.h"
</span><ins>+#include <WebCore/CrossSiteNavigationDataTransfer.h>
</ins><span class="cx"> #include <WebCore/RegistrableDomain.h>
</span><span class="cx"> #include <memory>
</span><span class="cx"> #include <wtf/Deque.h>
</span><span class="lines">@@ -145,7 +146,8 @@
</span><span class="cx"> void setResourceLoadStatisticsDebugMode(PAL::SessionID, bool debugMode, CompletionHandler<void()>&&);
</span><span class="cx"> void setShouldClassifyResourcesBeforeDataRecordsRemoval(PAL::SessionID, bool, CompletionHandler<void()>&&);
</span><span class="cx"> void resetCacheMaxAgeCapForPrevalentResources(PAL::SessionID, CompletionHandler<void()>&&);
</span><del>- void committedCrossSiteLoadWithLinkDecoration(PAL::SessionID, const NavigatedFromDomain&, const NavigatedToDomain&, PageID, CompletionHandler<void()>&&);
</del><ins>+ void didCommitCrossSiteLoadWithDataTransfer(PAL::SessionID, const NavigatedFromDomain&, const NavigatedToDomain&, OptionSet<WebCore::CrossSiteNavigationDataTransfer::Flag>, PageID);
+ void didCommitCrossSiteLoadWithDataTransferFromPrevalentResource(PageID);
</ins><span class="cx"> void setCrossSiteLoadWithLinkDecorationForTesting(PAL::SessionID, const NavigatedFromDomain&, const NavigatedToDomain&, CompletionHandler<void()>&&);
</span><span class="cx"> void resetCrossSiteLoadsWithLinkDecorationForTesting(PAL::SessionID, CompletionHandler<void()>&&);
</span><span class="cx"> void deleteCookiesForTesting(PAL::SessionID, const RegistrableDomain&, bool includeHttpOnlyCookies, CompletionHandler<void()>&&);
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessNetworkNetworkProcessProxymessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -48,6 +48,7 @@
</span><span class="cx"> NotifyResourceLoadStatisticsTelemetryFinished(unsigned totalPrevalentResources, unsigned totalPrevalentResourcesWithUserInteraction, unsigned top3SubframeUnderTopFrameOrigins)
</span><span class="cx"> RequestStorageAccessConfirm(uint64_t pageID, uint64_t frameID, WebCore::RegistrableDomain subFrameDomain, WebCore::RegistrableDomain topFrameDomain) -> (bool userDidGrantAccess) Async
</span><span class="cx"> DeleteWebsiteDataInUIProcessForRegistrableDomains(PAL::SessionID sessionID, OptionSet<WebKit::WebsiteDataType> dataTypes, OptionSet<WebKit::WebsiteDataFetchOption> fetchOptions, Vector<WebCore::RegistrableDomain> domains) -> (HashSet<WebCore::RegistrableDomain> domainsWithMatchingDataRecords) Async
</span><ins>+ DidCommitCrossSiteLoadWithDataTransferFromPrevalentResource(uint64_t pageID)
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><span class="cx"> ContentExtensionRules(WebKit::UserContentControllerIdentifier identifier)
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -134,6 +134,7 @@
</span><span class="cx"> #include "WebsiteDataStore.h"
</span><span class="cx"> #include <WebCore/AdClickAttribution.h>
</span><span class="cx"> #include <WebCore/BitmapImage.h>
</span><ins>+#include <WebCore/CrossSiteNavigationDataTransfer.h>
</ins><span class="cx"> #include <WebCore/DOMPasteAccess.h>
</span><span class="cx"> #include <WebCore/DeprecatedGlobalSettings.h>
</span><span class="cx"> #include <WebCore/DiagnosticLoggingClient.h>
</span><span class="lines">@@ -4133,9 +4134,21 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if ENABLE(RESOURCE_LOAD_STATISTICS)
</span><del>-static bool isNonUniqueNavigationWithLinkDecoration(const SecurityOriginData requesterOrigin, const URL& currentURL)
</del><ins>+static OptionSet<CrossSiteNavigationDataTransfer::Flag> checkIfNavigationContainsDataTransfer(const SecurityOriginData requesterOrigin, const ResourceRequest& currentRequest)
</ins><span class="cx"> {
</span><del>- return !requesterOrigin.securityOrigin()->isUnique() && (!currentURL.query().isEmpty() || !currentURL.fragmentIdentifier().isEmpty());
</del><ins>+ OptionSet<CrossSiteNavigationDataTransfer::Flag> navigationDataTransfer;
+ if (requesterOrigin.securityOrigin()->isUnique())
+ return navigationDataTransfer;
+
+ auto currentURL = currentRequest.url();
+ if (!currentURL.query().isEmpty() || !currentURL.fragmentIdentifier().isEmpty())
+ navigationDataTransfer.add(CrossSiteNavigationDataTransfer::Flag::DestinationLinkDecoration);
+
+ URL referrerURL { URL(), currentRequest.httpReferrer() };
+ if (!referrerURL.query().isEmpty() || !referrerURL.fragmentIdentifier().isEmpty())
+ navigationDataTransfer.add(CrossSiteNavigationDataTransfer::Flag::ReferrerLinkDecoration);
+
+ return navigationDataTransfer;
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -4155,12 +4168,13 @@
</span><span class="cx"> if (frame->isMainFrame() && navigationID && (navigation = navigationState().navigation(navigationID))) {
</span><span class="cx"> #if ENABLE(RESOURCE_LOAD_STATISTICS)
</span><span class="cx"> auto requesterOrigin = navigation->lastNavigationAction().requesterOrigin;
</span><del>- auto currentURL = navigation->currentRequest().url();
- if (isNonUniqueNavigationWithLinkDecoration(requesterOrigin, currentURL)) {
- RegistrableDomain currentDomain { currentURL };
</del><ins>+ auto currentRequest = navigation->currentRequest();
+ auto navigationDataTransfer = checkIfNavigationContainsDataTransfer(requesterOrigin, currentRequest);
+ if (!navigationDataTransfer.isEmpty()) {
+ RegistrableDomain currentDomain { currentRequest.url() };
</ins><span class="cx"> URL requesterURL { URL(), requesterOrigin.toString() };
</span><span class="cx"> if (!currentDomain.matches(requesterURL))
</span><del>- m_process->processPool().committedCrossSiteLoadWithLinkDecoration(m_websiteDataStore->sessionID(), RegistrableDomain { requesterURL }, currentDomain, m_pageID);
</del><ins>+ m_process->processPool().didCommitCrossSiteLoadWithDataTransfer(m_websiteDataStore->sessionID(), RegistrableDomain { requesterURL }, currentDomain, navigationDataTransfer, m_pageID);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -8634,6 +8648,14 @@
</span><span class="cx"> {
</span><span class="cx"> m_uiClient->requestStorageAccessConfirm(*this, m_process->webFrame(frameID), subFrameDomain, topFrameDomain, WTFMove(completionHandler));
</span><span class="cx"> }
</span><ins>+
+void WebPageProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource()
+{
+ if (!hasRunningProcess())
+ return;
+
+ m_process->send(Messages::WebPage::WasLoadedWithDataTransferFromPrevalentResource(), m_pageID);
+}
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> bool WebPageProxy::useDarkAppearance() const
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -1449,6 +1449,7 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(RESOURCE_LOAD_STATISTICS)
</span><span class="cx"> void requestStorageAccessConfirm(const WebCore::RegistrableDomain& subFrameDomain, const WebCore::RegistrableDomain& topFrameDomain, uint64_t frameID, CompletionHandler<void(bool)>&&);
</span><ins>+ void didCommitCrossSiteLoadWithDataTransferFromPrevalentResource();
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if ENABLE(DEVICE_ORIENTATION)
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessWebProcessPoolcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -2519,20 +2519,15 @@
</span><span class="cx"> sendToAllProcesses(Messages::WebProcess::ClearCurrentModifierStateForTesting());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void WebProcessPool::committedCrossSiteLoadWithLinkDecoration(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID)
</del><ins>+#if ENABLE(RESOURCE_LOAD_STATISTICS)
+void WebProcessPool::didCommitCrossSiteLoadWithDataTransfer(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, OptionSet<CrossSiteNavigationDataTransfer::Flag> navigationDataTransfer, uint64_t pageID)
</ins><span class="cx"> {
</span><del>-#if ENABLE(RESOURCE_LOAD_STATISTICS)
</del><span class="cx"> if (!m_networkProcess)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- m_networkProcess->committedCrossSiteLoadWithLinkDecoration(sessionID, fromDomain, toDomain, pageID, [] { });
-#else
- UNUSED_PARAM(sessionID);
- UNUSED_PARAM(fromDomain);
- UNUSED_PARAM(toDomain);
- UNUSED_PARAM(pageID);
</del><ins>+ m_networkProcess->didCommitCrossSiteLoadWithDataTransfer(sessionID, fromDomain, toDomain, navigationDataTransfer, pageID);
+}
</ins><span class="cx"> #endif
</span><del>-}
</del><span class="cx">
</span><span class="cx"> void WebProcessPool::setWebProcessHasUploads(ProcessIdentifier processID)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessWebProcessPoolh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/WebProcessPool.h 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -44,6 +44,7 @@
</span><span class="cx"> #include "WebContextClient.h"
</span><span class="cx"> #include "WebContextConnectionClient.h"
</span><span class="cx"> #include "WebProcessProxy.h"
</span><ins>+#include <WebCore/CrossSiteNavigationDataTransfer.h>
</ins><span class="cx"> #include <WebCore/ProcessIdentifier.h>
</span><span class="cx"> #include <WebCore/RegistrableDomain.h>
</span><span class="cx"> #include <WebCore/SecurityOriginHash.h>
</span><span class="lines">@@ -53,6 +54,7 @@
</span><span class="cx"> #include <wtf/HashMap.h>
</span><span class="cx"> #include <wtf/HashSet.h>
</span><span class="cx"> #include <wtf/MemoryPressureHandler.h>
</span><ins>+#include <wtf/OptionSet.h>
</ins><span class="cx"> #include <wtf/RefCounter.h>
</span><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="cx"> #include <wtf/text/StringHash.h>
</span><span class="lines">@@ -493,7 +495,9 @@
</span><span class="cx"> void sendDisplayConfigurationChangedMessageForTesting();
</span><span class="cx"> void clearCurrentModifierStateForTesting();
</span><span class="cx">
</span><del>- void committedCrossSiteLoadWithLinkDecoration(PAL::SessionID, const WebCore::RegistrableDomain& fromDomain, const WebCore::RegistrableDomain& toDomain, uint64_t pageID);
</del><ins>+#if ENABLE(RESOURCE_LOAD_STATISTICS)
+ void didCommitCrossSiteLoadWithDataTransfer(PAL::SessionID, const WebCore::RegistrableDomain& fromDomain, const WebCore::RegistrableDomain& toDomain, OptionSet<WebCore::CrossSiteNavigationDataTransfer::Flag>, uint64_t pageID);
+#endif
</ins><span class="cx">
</span><span class="cx"> #if PLATFORM(GTK) || PLATFORM(WPE)
</span><span class="cx"> void setSandboxEnabled(bool enabled) { m_sandboxEnabled = enabled; };
</span></span></pre></div>
<a id="trunkSourceWebKitWebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -6492,6 +6492,15 @@
</span><span class="cx"> {
</span><span class="cx"> WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::RequestStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, m_pageID), WTFMove(completionHandler));
</span><span class="cx"> }
</span><ins>+
+void WebPage::wasLoadedWithDataTransferFromPrevalentResource()
+{
+ auto* frame = mainFrame();
+ if (!frame || !frame->document())
+ return;
+
+ frame->document()->wasLoadedWithDataTransferFromPrevalentResource();
+}
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if ENABLE(DEVICE_ORIENTATION)
</span></span></pre></div>
<a id="trunkSourceWebKitWebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -1133,6 +1133,7 @@
</span><span class="cx"> #if ENABLE(RESOURCE_LOAD_STATISTICS)
</span><span class="cx"> void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, uint64_t frameID, CompletionHandler<void(bool)>&&);
</span><span class="cx"> void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, uint64_t frameID, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&&);
</span><ins>+ void wasLoadedWithDataTransferFromPrevalentResource();
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if ENABLE(DEVICE_ORIENTATION)
</span></span></pre></div>
<a id="trunkSourceWebKitWebProcessWebPageWebPagemessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (245783 => 245784)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2019-05-26 19:56:11 UTC (rev 245783)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2019-05-26 22:39:09 UTC (rev 245784)
</span><span class="lines">@@ -567,4 +567,8 @@
</span><span class="cx">
</span><span class="cx"> TextInputContextsInRect(WebCore::FloatRect rect) -> (Vector<struct WebKit::TextInputContext> contexts) Async
</span><span class="cx"> FocusTextInputContext(struct WebKit::TextInputContext context) -> (bool success) Async
</span><ins>+
+#if ENABLE(RESOURCE_LOAD_STATISTICS)
+ WasLoadedWithDataTransferFromPrevalentResource()
+#endif
</ins><span class="cx"> }
</span></span></pre>
</div>
</div>
</body>
</html>