Title: [249188] trunk
- Revision
- 249188
- Author
- [email protected]
- Date
- 2019-08-27 18:40:42 -0700 (Tue, 27 Aug 2019)
Log Message
Make FrameLoader::open() set outgoing referrer properly
https://bugs.webkit.org/show_bug.cgi?id=167050
Source/WebCore:
<rdar://problem/27972404>
Reviewed by Youenn Fablet.
In debug builds, an assertion failed in WebCore::SecurityPolicy::generateReferrerHeader:
ASSERTION FAILED: referrer == URL(URL(), referrer).strippedForUseAsReferrer()
In release builds, cached pages with a URL fragment sent its URL fragment in the referrer.
m_outgoingReferrer mistakenly had a URL fragment.
Test: http/tests/navigation/page-cache-fragment-referrer.html
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::open): Set m_outgoingReferrer by using
FrameLoader::setOutgoingReferrer to remove URL fragments.
LayoutTests:
Reviewed by Youenn Fablet.
* http/tests/navigation/page-cache-fragment-referrer-expected.html: Added.
* http/tests/navigation/page-cache-fragment-referrer.html: Added.
* http/tests/navigation/resources/referrer.php: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (249187 => 249188)
--- trunk/LayoutTests/ChangeLog 2019-08-28 01:22:37 UTC (rev 249187)
+++ trunk/LayoutTests/ChangeLog 2019-08-28 01:40:42 UTC (rev 249188)
@@ -1,3 +1,14 @@
+2019-08-27 Fujii Hironori <[email protected]>
+
+ Make FrameLoader::open() set outgoing referrer properly
+ https://bugs.webkit.org/show_bug.cgi?id=167050
+
+ Reviewed by Youenn Fablet.
+
+ * http/tests/navigation/page-cache-fragment-referrer-expected.html: Added.
+ * http/tests/navigation/page-cache-fragment-referrer.html: Added.
+ * http/tests/navigation/resources/referrer.php: Added.
+
2019-08-27 Devin Rousso <[email protected]>
Web Inspector: replace uses of added utility `Array.prototype.keySet` with an actual `Set`
Added: trunk/LayoutTests/http/tests/navigation/page-cache-fragment-referrer-expected.txt (0 => 249188)
--- trunk/LayoutTests/http/tests/navigation/page-cache-fragment-referrer-expected.txt (rev 0)
+++ trunk/LayoutTests/http/tests/navigation/page-cache-fragment-referrer-expected.txt 2019-08-28 01:40:42 UTC (rev 249188)
@@ -0,0 +1,11 @@
+A cached page with a URL fragment shouldn't send the fragment in the referrer
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+PASS xhr.responseText is "http://127.0.0.1:8000/navigation/page-cache-fragment-referrer.html"
+PASS xhr.responseText is "http://127.0.0.1:8000/navigation/page-cache-fragment-referrer.html"
+
Added: trunk/LayoutTests/http/tests/navigation/page-cache-fragment-referrer.html (0 => 249188)
--- trunk/LayoutTests/http/tests/navigation/page-cache-fragment-referrer.html (rev 0)
+++ trunk/LayoutTests/http/tests/navigation/page-cache-fragment-referrer.html 2019-08-28 01:40:42 UTC (rev 249188)
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<script>
+description("A cached page with a URL fragment shouldn't send the fragment in the referrer");
+
+if (window.testRunner) {
+ testRunner.clearBackForwardList();
+ testRunner.overridePreference('WebKitUsesPageCachePreferenceKey', 1);
+ testRunner.dumpAsText();
+
+ testRunner.queueLoad('resources/success.html');
+ testRunner.queueBackNavigation(1);
+}
+
+const locationWithoutHash = document.location.href;
+
+document.location = '#fragment';
+
+window.addEventListener('pageshow', () => {
+ xhr = new XMLHttpRequest();
+ xhr.open('GET', 'resources/referrer.php', false);
+ xhr.send(null);
+ shouldBeEqualToString('xhr.responseText', locationWithoutHash);
+});
+</script>
+</head>
+<body>
+</body>
+<script src=""
+</head>
+</html>
Added: trunk/LayoutTests/http/tests/navigation/resources/referrer.php (0 => 249188)
--- trunk/LayoutTests/http/tests/navigation/resources/referrer.php (rev 0)
+++ trunk/LayoutTests/http/tests/navigation/resources/referrer.php 2019-08-28 01:40:42 UTC (rev 249188)
@@ -0,0 +1,6 @@
+<?php
+ // Prevent from being cached.
+ header("Cache-Control: no-store, private, max-age=0");
+ header("Content-Type: text/plain");
+?>
+<?php echo $_SERVER['HTTP_REFERER']; ?>
Modified: trunk/Source/WebCore/ChangeLog (249187 => 249188)
--- trunk/Source/WebCore/ChangeLog 2019-08-28 01:22:37 UTC (rev 249187)
+++ trunk/Source/WebCore/ChangeLog 2019-08-28 01:40:42 UTC (rev 249188)
@@ -1,3 +1,24 @@
+2019-08-27 John Wilander <[email protected]> and Fujii Hironori <[email protected]>
+
+ Make FrameLoader::open() set outgoing referrer properly
+ https://bugs.webkit.org/show_bug.cgi?id=167050
+ <rdar://problem/27972404>
+
+ Reviewed by Youenn Fablet.
+
+ In debug builds, an assertion failed in WebCore::SecurityPolicy::generateReferrerHeader:
+ ASSERTION FAILED: referrer == URL(URL(), referrer).strippedForUseAsReferrer()
+
+ In release builds, cached pages with a URL fragment sent its URL fragment in the referrer.
+
+ m_outgoingReferrer mistakenly had a URL fragment.
+
+ Test: http/tests/navigation/page-cache-fragment-referrer.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::open): Set m_outgoingReferrer by using
+ FrameLoader::setOutgoingReferrer to remove URL fragments.
+
2019-08-27 Said Abou-Hallawa <[email protected]>
Unreviewed. Build fix after r249175.
Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (249187 => 249188)
--- trunk/Source/WebCore/loader/FrameLoader.cpp 2019-08-28 01:22:37 UTC (rev 249187)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp 2019-08-28 01:40:42 UTC (rev 249188)
@@ -2309,7 +2309,7 @@
m_needsClear = true;
m_isComplete = false;
m_didCallImplicitClose = false;
- m_outgoingReferrer = url.string();
+ setOutgoingReferrer(url);
FrameView* view = cachedFrame.view();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes