WebKit Bugzilla
Attachment 373213 Details for
Bug 199162
: Cross-origin ongoing prefetches should be reused for top-level navigations
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-199162-20190701100916.patch (text/plain), 21.62 KB, created by
Rob Buis
on 2019-07-01 01:09:17 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Rob Buis
Created:
2019-07-01 01:09:17 PDT
Size:
21.62 KB
patch
obsolete
>Subversion Revision: 246962 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index ca4d9ad0fe289b59c26e4887f10f145a610f7106..863a3c2f01c0be4be30426cc71667e8980bfaffc 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,18 @@ >+2019-07-01 Rob Buis <rbuis@igalia.com> >+ >+ Cross-origin prefetches should be reused for top-level navigations >+ https://bugs.webkit.org/show_bug.cgi?id=199162 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add isPrefetch helper. >+ >+ Test: http/wpt/prefetch/navigate-reuse-prefetch.html >+ >+ * platform/network/ResourceRequestBase.cpp: >+ (WebCore::ResourceRequestBase::isPrefetch const): >+ * platform/network/ResourceRequestBase.h: >+ > 2019-06-30 Antti Koivisto <antti@apple.com> > > Use separate variables for moving and stationary scrolling relationships in RemoteLayerTreeNode >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index af019ebef7c61c45120954c3ab3d61b4210a14e5..131c2e598e354af3c650083245423b41ccc762e3 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,33 @@ >+2019-07-01 Rob Buis <rbuis@igalia.com> >+ >+ Cross-origin prefetches should be reused for top-level navigations >+ https://bugs.webkit.org/show_bug.cgi?id=199162 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ On navigation, pending loaders are stopped. However pending prefetches >+ could be fetching the same url the navigation wants. In that case, do >+ not stop the prefetch load but instead, upon finishing it, use it to >+ perform the navigation. >+ >+ * NetworkProcess/NetworkConnectionToWebProcess.cpp: >+ (WebKit::NetworkConnectionToWebProcess::transferCrossOriginPrefetchLoad): >+ (WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad): >+ (WebKit::NetworkConnectionToWebProcess::prefetchFinished): >+ * NetworkProcess/NetworkConnectionToWebProcess.h: >+ * NetworkProcess/NetworkResourceLoader.cpp: >+ (WebKit::NetworkResourceLoader::abort): >+ (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry): >+ (WebKit::NetworkResourceLoader::isCrossOriginPrefetch const): >+ * NetworkProcess/NetworkSession.cpp: >+ (WebKit::NetworkSession::hasOngoingPrefetch const): >+ (WebKit::NetworkSession::addCrossOriginPrefetchLoad): >+ (WebKit::NetworkSession::takeCrossOriginPrefetchLoad): >+ (WebKit::NetworkSession::hasPendingNavigation const): >+ (WebKit::NetworkSession::addPendingNavigation): >+ (WebKit::NetworkSession::takePendingNavigation): >+ * NetworkProcess/NetworkSession.h: >+ > 2019-06-30 Antti Koivisto <antti@apple.com> > > Use separate variables for moving and stationary scrolling relationships in RemoteLayerTreeNode >diff --git a/Source/WebCore/platform/network/ResourceRequestBase.cpp b/Source/WebCore/platform/network/ResourceRequestBase.cpp >index 619f0847485c1c5a54f3e34c3e53a9fe0b51c404..df09a1b1f07e96bf06fc8b18de225f23a7228dbd 100644 >--- a/Source/WebCore/platform/network/ResourceRequestBase.cpp >+++ b/Source/WebCore/platform/network/ResourceRequestBase.cpp >@@ -270,6 +270,11 @@ void ResourceRequestBase::setIsTopSite(bool isTopSite) > m_platformRequestUpdated = false; > } > >+bool ResourceRequestBase::isPrefetch() const >+{ >+ return httpHeaderField(HTTPHeaderName::Purpose) == "prefetch"; >+} >+ > const String& ResourceRequestBase::httpMethod() const > { > updateResourceRequest(); >diff --git a/Source/WebCore/platform/network/ResourceRequestBase.h b/Source/WebCore/platform/network/ResourceRequestBase.h >index dd446a890cdb9dcea7778b1bc28155af6fb6c079..699df9d226f1625a06d8e3949c92aed5f7475fdb 100644 >--- a/Source/WebCore/platform/network/ResourceRequestBase.h >+++ b/Source/WebCore/platform/network/ResourceRequestBase.h >@@ -90,6 +90,8 @@ public: > WEBCORE_EXPORT bool isTopSite() const; // Whether this request is for a top-level navigation. > WEBCORE_EXPORT void setIsTopSite(bool); > >+ WEBCORE_EXPORT bool isPrefetch() const; >+ > WEBCORE_EXPORT const String& httpMethod() const; > WEBCORE_EXPORT void setHTTPMethod(const String& httpMethod); > >diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >index 5992639caa2e1ba3bd12b014098955cb0de73dc9..a13c73934084a9cedd78d8dd9dea2343a6dd040e 100644 >--- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >@@ -134,6 +134,16 @@ void NetworkConnectionToWebProcess::transferKeptAliveLoad(NetworkResourceLoader& > m_networkProcess->addKeptAliveLoad(takenLoader.releaseNonNull()); > } > >+void NetworkConnectionToWebProcess::transferCrossOriginPrefetchLoad(NetworkResourceLoader& loader) >+{ >+ RELEASE_ASSERT(RunLoop::isMain()); >+ ASSERT(m_networkResourceLoaders.get(loader.identifier()) == &loader); >+ if (auto takenLoader = m_networkResourceLoaders.take(loader.identifier())) { >+ if (auto* session = networkProcess().networkSession(loader.sessionID())) >+ session->addCrossOriginPrefetchLoad(takenLoader.releaseNonNull()); >+ } >+} >+ > void NetworkConnectionToWebProcess::didReceiveMessage(IPC::Connection& connection, IPC::Decoder& decoder) > { > if (decoder.messageReceiverName() == Messages::NetworkConnectionToWebProcess::messageReceiverName()) { >@@ -407,6 +417,16 @@ void NetworkConnectionToWebProcess::scheduleResourceLoad(NetworkResourceLoadPara > RELEASE_ASSERT(RunLoop::isMain()); > ASSERT(!m_networkResourceLoaders.contains(identifier)); > >+ if (loadParameters.options.mode == FetchOptions::Mode::Navigate) { >+ if (auto* session = networkProcess().networkSession(loadParameters.sessionID)) { >+ const auto& url = loadParameters.request.url(); >+ if (session->hasOngoingPrefetch(url)) { >+ session->addPendingNavigation(url, WTFMove(loadParameters)); >+ return; >+ } >+ } >+ } >+ > auto loader = NetworkResourceLoader::create(WTFMove(loadParameters), *this); > m_networkResourceLoaders.add(identifier, loader.copyRef()); > loader->start(); >@@ -913,4 +933,19 @@ void NetworkConnectionToWebProcess::webProcessSessionChanged(PAL::SessionID newS > m_networkProcess->webProcessSessionChanged(m_connection.get(), newSessionID, pages); > } > >+void NetworkConnectionToWebProcess::prefetchFinished(PAL::SessionID sessionID, const URL& url, WebCore::ResourceResponse&& response, RefPtr<WebCore::SharedBuffer>&& buffer) >+{ >+ if (auto* session = networkProcess().networkSession(sessionID)) { >+ session->prefetchCache().store(url, WTFMove(response), WTFMove(buffer)); >+ if (session->hasPendingNavigation(url)) { >+ if (auto crossOriginPrefetch = session->takeCrossOriginPrefetchLoad(url)) >+ m_networkResourceLoaders.add(crossOriginPrefetch->identifier(), crossOriginPrefetch.releaseNonNull()); >+ auto loadParameters = session->takePendingNavigation(url); >+ auto loader = NetworkResourceLoader::create(WTFMove(loadParameters), *this); >+ m_networkResourceLoaders.add(loadParameters.identifier, loader.copyRef()); >+ loader->start(); >+ } >+ } >+} >+ > } // namespace WebKit >diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h >index 19e76723781bfeb470fb2622b93eca74e9aeee8c..4fba51db8ec990ca69d2caf7e67afd82d2772bdf 100644 >--- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h >+++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h >@@ -87,6 +87,7 @@ public: > > void didCleanupResourceLoader(NetworkResourceLoader&); > void transferKeptAliveLoad(NetworkResourceLoader&); >+ void transferCrossOriginPrefetchLoad(NetworkResourceLoader&); > void setOnLineState(bool); > > bool captureExtraNetworkLoadMetricsEnabled() const { return m_captureExtraNetworkLoadMetricsEnabled; } >@@ -148,6 +149,8 @@ public: > > void removeSocketChannel(uint64_t identifier); > >+ void prefetchFinished(PAL::SessionID, const URL&, WebCore::ResourceResponse&&, RefPtr<WebCore::SharedBuffer>&&); >+ > private: > NetworkConnectionToWebProcess(NetworkProcess&, IPC::Connection::Identifier); > >diff --git a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp b/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >index 0b3c081ec8321f74d779dbd43d9c770202a89a80..e2e4c9321918a669a8bbc802a3d915e5061c87c7 100644 >--- a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >@@ -353,6 +353,11 @@ void NetworkResourceLoader::abort() > return; > } > >+ if (isCrossOriginPrefetch()) { >+ m_connection->transferCrossOriginPrefetchLoad(*this); >+ return; >+ } >+ > if (m_networkLoad) { > if (canUseCache(m_networkLoad->currentRequest())) { > // We might already have used data from this incomplete load. Ensure older versions don't remain in the cache after cancel. >@@ -820,8 +825,7 @@ void NetworkResourceLoader::tryStoreAsCacheEntry() > return; > > if (isCrossOriginPrefetch()) { >- if (auto session = m_connection->networkProcess().networkSession(sessionID())) >- session->prefetchCache().store(m_networkLoad->currentRequest().url(), WTFMove(m_response), WTFMove(m_bufferedDataForCache)); >+ m_connection->prefetchFinished(sessionID(), m_networkLoad->currentRequest().url(), WTFMove(m_response), WTFMove(m_bufferedDataForCache)); > return; > } > m_cache->store(m_networkLoad->currentRequest(), m_response, WTFMove(m_bufferedDataForCache), [loader = makeRef(*this)](auto& mappedBody) mutable { >@@ -1162,7 +1166,7 @@ void NetworkResourceLoader::logSlowCacheRetrieveIfNeeded(const NetworkCache::Cac > bool NetworkResourceLoader::isCrossOriginPrefetch() const > { > auto request = originalRequest(); >- return request.httpHeaderField(HTTPHeaderName::Purpose) == "prefetch" && !m_parameters.sourceOrigin->canRequest(request.url()); >+ return request.isPrefetch() && !m_parameters.sourceOrigin->canRequest(request.url()); > } > > } // namespace WebKit >diff --git a/Source/WebKit/NetworkProcess/NetworkSession.cpp b/Source/WebKit/NetworkProcess/NetworkSession.cpp >index 804805baeea08ae1a2dcb2542c8096cdea79ac03..f20cd5d24f3ed5be216ee3915d1089f836eeaf41 100644 >--- a/Source/WebKit/NetworkProcess/NetworkSession.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkSession.cpp >@@ -221,4 +221,37 @@ std::unique_ptr<WebSocketTask> NetworkSession::createWebSocketTask(NetworkSocket > return nullptr; > } > >+bool NetworkSession::hasOngoingPrefetch(const URL& url) const >+{ >+ return m_pendingCrossOriginPrefetchLoads.contains(url); >+} >+ >+void NetworkSession::addCrossOriginPrefetchLoad(Ref<NetworkResourceLoader>&& loader) >+{ >+ auto url = loader->originalRequest().url(); >+ m_pendingCrossOriginPrefetchLoads.add(url, WTFMove(loader)); >+} >+ >+RefPtr<NetworkResourceLoader> NetworkSession::takeCrossOriginPrefetchLoad(const URL& url) >+{ >+ if (auto result = m_pendingCrossOriginPrefetchLoads.take(url)) >+ return WTFMove(*result); >+ return nullptr; >+} >+ >+bool NetworkSession::hasPendingNavigation(const URL& url) const >+{ >+ return m_pendingNavigations.contains(url); >+} >+ >+void NetworkSession::addPendingNavigation(const URL& url, NetworkResourceLoadParameters&& parameters) >+{ >+ m_pendingNavigations.add(url, WTFMove(parameters)); >+} >+ >+NetworkResourceLoadParameters NetworkSession::takePendingNavigation(const URL& url) >+{ >+ return m_pendingNavigations.take(url); >+} >+ > } // namespace WebKit >diff --git a/Source/WebKit/NetworkProcess/NetworkSession.h b/Source/WebKit/NetworkProcess/NetworkSession.h >index f521ad3caff02943416a950cef7d5f96bbc59385..de27ff423ed50c9be8102e67a2c816c026a5c2f8 100644 >--- a/Source/WebKit/NetworkProcess/NetworkSession.h >+++ b/Source/WebKit/NetworkProcess/NetworkSession.h >@@ -52,6 +52,7 @@ class AdClickAttributionManager; > class NetworkDataTask; > class NetworkProcess; > class NetworkResourceLoader; >+class NetworkResourceLoadParameters; > class StorageManager; > class NetworkSocketChannel; > class WebResourceLoadStatisticsStore; >@@ -107,6 +108,14 @@ public: > virtual void removeWebSocketTask(WebSocketTask&) { } > virtual void addWebSocketTask(WebSocketTask&) { } > >+ bool hasOngoingPrefetch(const URL&) const; >+ void addCrossOriginPrefetchLoad(Ref<NetworkResourceLoader>&&); >+ RefPtr<NetworkResourceLoader> takeCrossOriginPrefetchLoad(const URL&); >+ >+ void addPendingNavigation(const URL&, NetworkResourceLoadParameters&&); >+ bool hasPendingNavigation(const URL&) const; >+ NetworkResourceLoadParameters takePendingNavigation(const URL&); >+ > protected: > NetworkSession(NetworkProcess&, PAL::SessionID, const String& localStorageDirectory, SandboxExtension::Handle&); > >@@ -124,6 +133,10 @@ protected: > > HashSet<Ref<NetworkResourceLoader>> m_keptAliveLoads; > >+ HashMap<URL, Ref<NetworkResourceLoader>> m_pendingCrossOriginPrefetchLoads; >+ >+ HashMap<URL, NetworkResourceLoadParameters> m_pendingNavigations; >+ > PrefetchCache m_prefetchCache; > > Ref<StorageManager> m_storageManager; >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 95da3c20f1fdc3c61d8a423089d7537bf01c3185..bb3511a2f271b74d372ff129d4ece3d30e381a54 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,25 @@ >+2019-07-01 Rob Buis <rbuis@igalia.com> >+ >+ Cross-origin prefetches should be reused for top-level navigations >+ https://bugs.webkit.org/show_bug.cgi?id=199162 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add test and adjust wk1 expectations. >+ >+ * http/wpt/prefetch/link-prefetch-main-resource-redirect.html: >+ * http/wpt/prefetch/navigate-reuse-prefetch-expected.txt: Added. >+ * http/wpt/prefetch/navigate-reuse-prefetch.html: Copied from LayoutTests/http/wpt/prefetch/link-prefetch-main-resource-redirect.html. >+ * http/wpt/prefetch/resources/main-resource-no-prefetch.py: Added. >+ (main): >+ * http/wpt/prefetch/resources/main-resource-redirect-no-prefetch.py: Removed. >+ * http/wpt/prefetch/resources/navigate-redirect.sub.html: Added. >+ * http/wpt/prefetch/resources/navigate.sub.html: Added. >+ * http/wpt/prefetch/resources/prefetched-main-resource-redirect.py: >+ (main): >+ * platform/mac-wk1/TestExpectations: >+ * platform/win/TestExpectations: >+ > 2019-06-30 Fujii Hironori <Hironori.Fujii@sony.com> > > Unreviewed, rolling out r246959. >diff --git a/LayoutTests/http/wpt/prefetch/link-prefetch-main-resource-redirect.html b/LayoutTests/http/wpt/prefetch/link-prefetch-main-resource-redirect.html >index d6d5a5bc3a0a289d02ddf1f1d97bead219ca27da..0d70cbf96cb7ab67cde841884908d14839f9b6b5 100644 >--- a/LayoutTests/http/wpt/prefetch/link-prefetch-main-resource-redirect.html >+++ b/LayoutTests/http/wpt/prefetch/link-prefetch-main-resource-redirect.html >@@ -13,7 +13,7 @@ const wait_for_message = () => { > }; > > promise_test(async function(t) { >- let url_from = "resources/navigate.html"; >+ let url_from = "resources/navigate-redirect.sub.html"; > var w = window.open(url_from); > let message = await wait_for_message(); > assert_equals(message.data, ''); >diff --git a/LayoutTests/http/wpt/prefetch/navigate-reuse-prefetch-expected.txt b/LayoutTests/http/wpt/prefetch/navigate-reuse-prefetch-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..5d1c8ab98fa43009e3c375f489b6ba8fdf0c6bd2 >--- /dev/null >+++ b/LayoutTests/http/wpt/prefetch/navigate-reuse-prefetch-expected.txt >@@ -0,0 +1,3 @@ >+ >+PASS Test navigating to slow prefetch. >+ >diff --git a/LayoutTests/http/wpt/prefetch/navigate-reuse-prefetch.html b/LayoutTests/http/wpt/prefetch/navigate-reuse-prefetch.html >new file mode 100644 >index 0000000000000000000000000000000000000000..a3cce7e670718b3a70d83797d2e4c6ad96575c46 >--- /dev/null >+++ b/LayoutTests/http/wpt/prefetch/navigate-reuse-prefetch.html >@@ -0,0 +1,22 @@ >+<!DOCTYPE html> >+<meta charset="utf-8"> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<script> >+ >+const wait_for_message = () => { >+ return new Promise((resolve, reject) => { >+ window.addEventListener('message', e => { >+ resolve(e); >+ }, { once: true }); >+ }); >+}; >+ >+promise_test(async function(t) { >+ let url_from = "resources/navigate.sub.html"; >+ var w = window.open(url_from); >+ let message = await wait_for_message(); >+ assert_equals(message.data, 'prefetch'); >+ w.close(); >+}, 'Test navigating to slow prefetch.'); >+</script> >diff --git a/LayoutTests/http/wpt/prefetch/resources/main-resource-no-prefetch.py b/LayoutTests/http/wpt/prefetch/resources/main-resource-no-prefetch.py >new file mode 100644 >index 0000000000000000000000000000000000000000..831cc6d535acecad90ddf0f5d5c6dc40c40bc0cf >--- /dev/null >+++ b/LayoutTests/http/wpt/prefetch/resources/main-resource-no-prefetch.py >@@ -0,0 +1,15 @@ >+import time >+ >+def main(request, response): >+ headers = [("Cache-Control", "max-age=3600"), ("Content-Type", "text/html")] >+ delay = float(request.GET.first("ms", 500)) / 1E3 >+ time.sleep(delay) >+ >+ document = """ >+<!DOCTYPE html> >+<script> >+ window.opener.postMessage('{result}', '*'); >+</script> >+""".format(result=request.headers.get("purpose", "")) >+ >+ return headers, document >diff --git a/LayoutTests/http/wpt/prefetch/resources/main-resource-redirect-no-prefetch.py b/LayoutTests/http/wpt/prefetch/resources/main-resource-redirect-no-prefetch.py >deleted file mode 100644 >index daa362ff2ef2499624bf708b8b197ef8429e2132..0000000000000000000000000000000000000000 >--- a/LayoutTests/http/wpt/prefetch/resources/main-resource-redirect-no-prefetch.py >+++ /dev/null >@@ -1,11 +0,0 @@ >-def main(request, response): >- headers = [("Content-Type", "text/html")] >- >- document = """ >-<!DOCTYPE html> >-<script> >- window.opener.postMessage('{result}', '*'); >-</script> >-""".format(result=request.headers.get("Purpose", "")) >- >- return headers, document >diff --git a/LayoutTests/http/wpt/prefetch/resources/navigate-redirect.sub.html b/LayoutTests/http/wpt/prefetch/resources/navigate-redirect.sub.html >new file mode 100644 >index 0000000000000000000000000000000000000000..4e71804ed98e175b83599e32744469e4844f9e1c >--- /dev/null >+++ b/LayoutTests/http/wpt/prefetch/resources/navigate-redirect.sub.html >@@ -0,0 +1,11 @@ >+<!DOCTYPE html> >+<meta charset="utf-8"> >+<body> >+<script> >+ var link = document.createElement("link"); >+ link.rel = "prefetch"; >+ link.href = "http://{{hosts[alt][]}}:{{ports[http][0]}}/WebKit/prefetch/resources/prefetched-main-resource-redirect.py"; >+ document.body.appendChild(link); >+ window.location = "http://{{hosts[alt][]}}:{{ports[http][0]}}/WebKit/prefetch/resources/prefetched-main-resource-redirect.py"; >+</script> >+</body> >diff --git a/LayoutTests/http/wpt/prefetch/resources/navigate.sub.html b/LayoutTests/http/wpt/prefetch/resources/navigate.sub.html >new file mode 100644 >index 0000000000000000000000000000000000000000..bc71db1c6ebc2fa016dfd6748bf1234678f9906d >--- /dev/null >+++ b/LayoutTests/http/wpt/prefetch/resources/navigate.sub.html >@@ -0,0 +1,11 @@ >+<!DOCTYPE html> >+<meta charset="utf-8"> >+<body> >+<script> >+ var link = document.createElement("link"); >+ link.rel = "prefetch"; >+ link.href = "http://{{hosts[alt][]}}:{{ports[http][0]}}/WebKit/prefetch/resources/main-resource-no-prefetch.py?ms=2000"; >+ document.body.appendChild(link); >+ window.location = "http://{{hosts[alt][]}}:{{ports[http][0]}}/WebKit/prefetch/resources/main-resource-no-prefetch.py?ms=2000"; >+</script> >+</body> >diff --git a/LayoutTests/http/wpt/prefetch/resources/prefetched-main-resource-redirect.py b/LayoutTests/http/wpt/prefetch/resources/prefetched-main-resource-redirect.py >index 4c54c17223982e326fd774348a69d7a0dedaaf48..5532a41094d391dea1d5b9d2e432333fd41cc17c 100644 >--- a/LayoutTests/http/wpt/prefetch/resources/prefetched-main-resource-redirect.py >+++ b/LayoutTests/http/wpt/prefetch/resources/prefetched-main-resource-redirect.py >@@ -1,5 +1,5 @@ > def main(request, response): > if "prefetch" in request.headers.get("Purpose"): >- headers = [("Cache-Control", "max-age=3600"), ("Location", "/WebKit/prefetch/resources/main-resource-redirect-no-prefetch.py")] >+ headers = [("Cache-Control", "max-age=3600"), ("Location", "/WebKit/prefetch/resources/main-resource-no-prefetch.py")] > return 302, headers, "" > return 200, [], "FAIL" >diff --git a/LayoutTests/platform/mac-wk1/TestExpectations b/LayoutTests/platform/mac-wk1/TestExpectations >index aa11d9bc2965cd7d8465e180fa6762ccb013e0ef..e8ff2849a859b4d69551401747b707594ab2ad20 100644 >--- a/LayoutTests/platform/mac-wk1/TestExpectations >+++ b/LayoutTests/platform/mac-wk1/TestExpectations >@@ -734,6 +734,7 @@ webkit.org/b/195623 http/tests/cache/link-prefetch-main-resource.html [ Skip ] > webkit.org/b/195623 http/tests/cache/link-prefetch-main-resource-iframe.html [ Skip ] > > webkit.org/b/197371 http/wpt/prefetch/link-prefetch-main-resource-redirect.html [ Skip ] >+webkit.org/b/197371 http/wpt/prefetch/navigate-reuse-prefetch.html [ Skip ] > > webkit.org/b/198177 pointerevents/mouse/compatibility-mouse-events-prevention-mouse-pressed.html [ Skip ] > >diff --git a/LayoutTests/platform/win/TestExpectations b/LayoutTests/platform/win/TestExpectations >index 525a242d106e2ed1ffc5becf5a1e0487a3df735f..eaf64a1b4b6033520c3b474dfd7a00a7a2e73e59 100644 >--- a/LayoutTests/platform/win/TestExpectations >+++ b/LayoutTests/platform/win/TestExpectations >@@ -4418,6 +4418,7 @@ webkit.org/b/195623 http/tests/cache/link-prefetch-main-resource.html [ Skip ] > webkit.org/b/195623 http/tests/cache/link-prefetch-main-resource-iframe.html [ Skip ] > > webkit.org/b/197371 http/wpt/prefetch/link-prefetch-main-resource-redirect.html [ Skip ] >+webkit.org/b/197371 http/wpt/prefetch/navigate-reuse-prefetch.html [ Skip ] > > webkit.org/b/198112 http/tests/security/showModalDialog-sync-cross-origin-page-load2.html [ Skip ] >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 199162
:
372766
|
372854
|
372908
|
372909
|
372910
|
372911
|
372936
|
373213
|
373229
|
373384
|
373388
|
375031
|
377007
|
377008
|
377011
|
377106
|
377150
|
380610
|
380617
|
380711
|
391646
|
408325