Changeset 207330 in webkit
- Timestamp:
- Oct 14, 2016 1:47:16 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 20 added
- 2 deleted
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r207326 r207330 1 2016-10-14 Youenn Fablet <youenn@apple.com> 2 3 Make NetworkCache aware of fetch cache mode 4 https://bugs.webkit.org/show_bug.cgi?id=163332 5 6 Reviewed by Antti Koivisto. 7 8 * platform/ios-simulator/TestExpectations: 9 * platform/mac-wk1/imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt: Added. 10 * platform/mac-wk1/imported/w3c/web-platform-tests/fetch/api/request/request-cache-reload-expected.txt: Added. 11 * platform/win/TestExpectations: 12 * platform/wk2/TestExpectations: 13 1 14 2016-10-13 Joseph Pecoraro <pecoraro@apple.com> 2 15 -
trunk/LayoutTests/imported/w3c/ChangeLog
r207326 r207330 1 2016-10-14 Youenn Fablet <youenn@apple.com> 2 3 Make NetworkCache aware of fetch cache mode 4 https://bugs.webkit.org/show_bug.cgi?id=163332 5 6 Reviewed by Antti Koivisto. 7 8 Splitting web-platform-tests/fetch/api/request/request-cache.html in several files so that running the individual test files 9 is more manageable. 10 11 * web-platform-tests/fetch/api/request/request-cache-default-conditional-expected.txt: Added. 12 * web-platform-tests/fetch/api/request/request-cache-default-conditional.html: Added. 13 * web-platform-tests/fetch/api/request/request-cache-default-expected.txt: Added. 14 * web-platform-tests/fetch/api/request/request-cache-default.html: Added. 15 * web-platform-tests/fetch/api/request/request-cache-expected.txt: Removed. 16 * web-platform-tests/fetch/api/request/request-cache-force-cache-expected.txt: Added. 17 * web-platform-tests/fetch/api/request/request-cache-force-cache.html: Added. 18 * web-platform-tests/fetch/api/request/request-cache-no-cache-expected.txt: Added. 19 * web-platform-tests/fetch/api/request/request-cache-no-cache.html: Added. 20 * web-platform-tests/fetch/api/request/request-cache-no-store-expected.txt: Added. 21 * web-platform-tests/fetch/api/request/request-cache-no-store.html: Added. 22 * web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt: Added. 23 * web-platform-tests/fetch/api/request/request-cache-only-if-cached.html: Added. 24 * web-platform-tests/fetch/api/request/request-cache-reload-expected.txt: Added. 25 * web-platform-tests/fetch/api/request/request-cache-reload.html: Added. 26 * web-platform-tests/fetch/api/request/request-cache.html: Removed. 27 * web-platform-tests/fetch/api/request/request-cache.js: Added. 28 (base_path): 29 (make_url): 30 (expected_status): 31 (expected_response_text): 32 (server_state): 33 (run_next_step): 34 (make_test): 35 1 36 2016-10-13 Joseph Pecoraro <pecoraro@apple.com> 2 37 -
trunk/LayoutTests/platform/ios-simulator/TestExpectations
r207277 r207330 2521 2521 webkit.org/b/156561 perf/rel-list-remove.html [ Pass Timeout Failure ] 2522 2522 2523 webkit.org/b/159683 imported/w3c/web-platform-tests/fetch/api/request/request-cache.html [ Pass Failure ] 2523 webkit.org/b/163332 imported/w3c/web-platform-tests/fetch/api/request/request-cache-reload.html [ Pass Failure ] 2524 webkit.org/b/163332 imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached.html [ Pass Failure ] 2524 2525 2525 2526 webkit.org/b/158640 imported/blink/storage/indexeddb/blob-valid-after-deletion.html [ Pass Failure ] -
trunk/LayoutTests/platform/win/TestExpectations
r206883 r207330 3495 3495 imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.html [ Failure ] 3496 3496 imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method-worker.html [ Failure ] 3497 imported/w3c/web-platform-tests/fetch/api/request/request-cache.html [ Failure ] 3497 imported/w3c/web-platform-tests/fetch/api/request/request-cache-reload.html [ Failure ] 3498 imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached.html [ Failure ] 3498 3499 imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/007.html [ Failure ] 3499 3500 imported/w3c/web-platform-tests/html/browsers/history/the-history-interface/history_forward_1.html [ Failure ] -
trunk/LayoutTests/platform/wk2/TestExpectations
r207086 r207330 686 686 687 687 # bug 162281 688 imported/w3c/web-platform-tests/fetch/api/request/request-cache .html [ Skip]688 imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached.html [ Failure ] 689 689 690 690 ### END OF (5) Progressions, expected successes that are expected failures in WebKit1. -
trunk/Source/WebCore/ChangeLog
r207328 r207330 1 2016-10-14 Youenn Fablet <youenn@apple.com> 2 3 Make NetworkCache aware of fetch cache mode 4 https://bugs.webkit.org/show_bug.cgi?id=163332 5 6 Reviewed by Antti Koivisto. 7 8 Tests: imported/w3c/web-platform-tests/fetch/api/request/request-cache-default-conditional.html 9 imported/w3c/web-platform-tests/fetch/api/request/request-cache-default.html 10 imported/w3c/web-platform-tests/fetch/api/request/request-cache-force-cache.html 11 imported/w3c/web-platform-tests/fetch/api/request/request-cache-no-cache.html 12 imported/w3c/web-platform-tests/fetch/api/request/request-cache-no-store.html 13 imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached.html 14 imported/w3c/web-platform-tests/fetch/api/request/request-cache-reload.html 15 16 * loader/cache/CachedResourceLoader.cpp: 17 (WebCore::updateRequestAccordingCacheMode): Setting request cache policy according cache mode. 18 Basically, these two are about the same. 19 (WebCore::CachedResourceLoader::determineRevalidationPolicy): Making use of cache policy instead of cache mode. 20 * platform/network/ResourceRequestBase.h: Adding new cache policies, aligned with fetch cache modes. 21 * platform/network/cf/ResourceRequestCFNet.cpp: 22 (WebCore::toPlatformRequestCachePolicy): If policy is not supported by CFNetwork, fallback to ReloadIgnoringCacheData. 23 This is the best approximate we might find. 24 (WebCore::ResourceRequest::doUpdatePlatformHTTPBody): 25 (WebCore::ResourceRequest::doUpdateResourceRequest): Only updating cache policy, if cache policy is the default. 26 * platform/network/cf/ResourceRequestCFNet.h: 27 * platform/network/cocoa/ResourceRequestCocoa.mm: Doing the same modifications as for ResourceRequestCFNet. 28 (WebCore::ResourceRequest::doUpdateResourceRequest): 29 (WebCore::toPlatformRequestCachePolicy): 30 (WebCore::ResourceRequest::doUpdatePlatformRequest): 31 1 32 2016-10-13 Youenn Fablet <youenn@apple.com> 2 33 -
trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp
r207281 r207330 836 836 auto& memoryCache = MemoryCache::singleton(); 837 837 ASSERT(!request.allowsCaching() || !memoryCache.resourceForRequest(request.resourceRequest(), sessionID()) 838 || request. options().cache == FetchOptions::Cache::NoCache || request.options().cache == FetchOptions::Cache::NoStore || request.options().cache == FetchOptions::Cache::Reload);838 || request.resourceRequest().cachePolicy() == DoNotUseAnyCache || request.resourceRequest().cachePolicy() == ReloadIgnoringCacheData || request.resourceRequest().cachePolicy() == RefreshAnyCacheData); 839 839 840 840 LOG(ResourceLoading, "Loading CachedResource for '%s'.", request.resourceRequest().url().stringCenterEllipsizedToLength().latin1().data()); … … 889 889 return Load; 890 890 891 if ( cachedResourceRequest.options().cache == FetchOptions::Cache::NoStore)891 if (request.cachePolicy() == DoNotUseAnyCache || request.cachePolicy() == ReloadIgnoringCacheData) 892 892 return Load; 893 893 894 if ( cachedResourceRequest.options().cache == FetchOptions::Cache::Reload)894 if (request.cachePolicy() == RefreshAnyCacheData) 895 895 return Reload; 896 896 -
trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp
r207281 r207330 154 154 switch (m_options.cache) { 155 155 case FetchOptions::Cache::NoCache: 156 m_resourceRequest.setCachePolicy(Re loadIgnoringCacheData);156 m_resourceRequest.setCachePolicy(RefreshAnyCacheData); 157 157 m_resourceRequest.addHTTPHeaderFieldIfNotPresent(HTTPHeaderName::CacheControl, HTTPHeaderValues::maxAge0()); 158 158 break; 159 159 case FetchOptions::Cache::NoStore: 160 160 m_options.cachingPolicy = CachingPolicy::DisallowCaching; 161 m_resourceRequest.setCachePolicy( ReloadIgnoringCacheData);161 m_resourceRequest.setCachePolicy(DoNotUseAnyCache); 162 162 m_resourceRequest.addHTTPHeaderFieldIfNotPresent(HTTPHeaderName::Pragma, HTTPHeaderValues::noCache()); 163 163 m_resourceRequest.addHTTPHeaderFieldIfNotPresent(HTTPHeaderName::CacheControl, HTTPHeaderValues::noCache()); -
trunk/Source/WebCore/platform/network/ResourceRequestBase.h
r207086 r207330 37 37 38 38 enum ResourceRequestCachePolicy { 39 UseProtocolCachePolicy, // normal load 40 ReloadIgnoringCacheData, // reload 41 ReturnCacheDataElseLoad, // back/forward or encoding change - allow stale data 42 ReturnCacheDataDontLoad // results of a post - allow stale data and only use cache 39 UseProtocolCachePolicy, // normal load, equivalent to fetch "default" cache mode. 40 ReloadIgnoringCacheData, // reload, equivalent to fetch "reload"cache mode. 41 ReturnCacheDataElseLoad, // back/forward or encoding change - allow stale data, equivalent to fetch "force-cache" cache mode. 42 ReturnCacheDataDontLoad, // results of a post - allow stale data and only use cache, equivalent to fetch "only-if-cached" cache mode. 43 DoNotUseAnyCache, // Bypass the cache entirely, equivalent to fetch "no-store" cache mode. 44 RefreshAnyCacheData, // Serve cache data only if revalidated, equivalent to fetch "no-cache" mode. 43 45 }; 44 46 -
trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp
r207151 r207330 171 171 } 172 172 173 static inline CFURLRequestCachePolicy toPlatformRequestCachePolicy(ResourceRequestCachePolicy policy) 174 { 175 switch (policy) { 176 case UseProtocolCachePolicy: 177 return CFURLRequestUseProtocolCachePolicy; 178 case ReturnCacheDataElseLoad: 179 return CFURLRequestReturnCacheDataElseLoad; 180 case ReturnCacheDataDontLoad: 181 return CFURLRequestReturnCacheDataDontLoad; 182 default: 183 return CFURLRequestReloadIgnoringLocalCacheData; 184 } 185 } 186 173 187 void ResourceRequest::doUpdatePlatformHTTPBody() 174 188 { … … 181 195 CFURLRequestSetURL(cfRequest, url.get()); 182 196 CFURLRequestSetMainDocumentURL(cfRequest, firstPartyForCookies.get()); 183 CFURLRequestSetCachePolicy(cfRequest, (CFURLRequestCachePolicy)cachePolicy());197 CFURLRequestSetCachePolicy(cfRequest, toPlatformRequestCachePolicy(cachePolicy())); 184 198 CFURLRequestSetTimeoutInterval(cfRequest, timeoutInterval()); 185 199 } else … … 212 226 m_url = CFURLRequestGetURL(m_cfRequest.get()); 213 227 214 m_cachePolicy = (ResourceRequestCachePolicy)CFURLRequestGetCachePolicy(m_cfRequest.get()); 228 if (!m_cachePolicy) 229 m_cachePolicy = (ResourceRequestCachePolicy)CFURLRequestGetCachePolicy(m_cfRequest.get()); 215 230 m_timeoutInterval = CFURLRequestGetTimeoutInterval(m_cfRequest.get()); 216 231 m_firstPartyForCookies = CFURLRequestGetMainDocumentURL(m_cfRequest.get()); -
trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.h
r207151 r207330 21 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 24 */ 25 25 … … 28 28 #include "CFNetworkSPI.h" 29 29 #include "ResourceLoadPriority.h" 30 #include "ResourceRequestBase.h" 30 31 31 32 namespace WebCore { -
trunk/Source/WebCore/platform/network/cocoa/ResourceRequestCocoa.mm
r207151 r207330 62 62 } 63 63 64 static inline ResourceRequestCachePolicy fromPlatformRequestCachePolicy(NSURLRequestCachePolicy policy) 65 { 66 switch (policy) { 67 case NSURLRequestUseProtocolCachePolicy: 68 return UseProtocolCachePolicy; 69 case NSURLRequestReturnCacheDataElseLoad: 70 return ReturnCacheDataElseLoad; 71 case NSURLRequestReturnCacheDataDontLoad: 72 return ReturnCacheDataDontLoad; 73 default: 74 return ReloadIgnoringCacheData; 75 } 76 } 77 78 static inline NSURLRequestCachePolicy toPlatformRequestCachePolicy(ResourceRequestCachePolicy policy) 79 { 80 switch (policy) { 81 case UseProtocolCachePolicy: 82 return NSURLRequestUseProtocolCachePolicy; 83 case ReturnCacheDataElseLoad: 84 return NSURLRequestReturnCacheDataElseLoad; 85 case ReturnCacheDataDontLoad: 86 return NSURLRequestReturnCacheDataDontLoad; 87 default: 88 return NSURLRequestReloadIgnoringLocalCacheData; 89 } 90 } 91 64 92 void ResourceRequest::doUpdateResourceRequest() 65 93 { 66 94 m_url = [m_nsRequest.get() URL]; 67 m_cachePolicy = (ResourceRequestCachePolicy)[m_nsRequest.get() cachePolicy]; 95 96 if (!m_cachePolicy) 97 m_cachePolicy = fromPlatformRequestCachePolicy([m_nsRequest.get() cachePolicy]); 68 98 m_timeoutInterval = [m_nsRequest.get() timeoutInterval]; 69 99 m_firstPartyForCookies = [m_nsRequest.get() mainDocumentURL]; … … 133 163 CFURLRequestSetRequestPriority([nsRequest _CFURLRequest], toPlatformRequestPriority(priority())); 134 164 135 [nsRequest setCachePolicy: (NSURLRequestCachePolicy)cachePolicy()];165 [nsRequest setCachePolicy:toPlatformRequestCachePolicy(cachePolicy())]; 136 166 _CFURLRequestSetProtocolProperty([nsRequest _CFURLRequest], kCFURLRequestAllowAllPOSTCaching, kCFBooleanTrue); 137 167 -
trunk/Source/WebKit2/ChangeLog
r207298 r207330 1 2016-10-14 Youenn Fablet <youenn@apple.com> 2 3 Make NetworkCache aware of fetch cache mode 4 https://bugs.webkit.org/show_bug.cgi?id=163332 5 6 Reviewed by Antti Koivisto. 7 8 Adding explicit serialization of ResourceRequest cachePolicy since it does no longer map to platform request cache policy. 9 10 Added support for: 11 - Bypassing entirely the network cache in case cache mode is NoStore. 12 - requiring revalidation in case of cache hit and cache mode is NoCache. 13 - Not using any entry if cache mode is Reload (but cache can still be updated) 14 15 Also made sure that the ResourceRequest::cachePolicy remains the same throughout redirections. 16 17 * NetworkProcess/NetworkResourceLoader.cpp: 18 (WebKit::NetworkResourceLoader::canUseCache): 19 (WebKit::NetworkResourceLoader::retrieveCacheEntry): 20 (WebKit::NetworkResourceLoader::continueWillSendRequest): 21 * NetworkProcess/cache/NetworkCache.cpp: 22 (WebKit::NetworkCache::cachePolicyAllowsExpired): 23 (WebKit::NetworkCache::makeRetrieveDecision): 24 * Shared/mac/WebCoreArgumentCodersMac.mm: 25 (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData): 26 (IPC::ArgumentCoder<ResourceRequest>::decodePlatformData): 27 1 28 2016-10-13 Tim Horton <timothy_horton@apple.com> 2 29 -
trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp
r206855 r207330 123 123 if (!request.url().protocolIsInHTTPFamily()) 124 124 return false; 125 if (originalRequest().cachePolicy() == WebCore::DoNotUseAnyCache) 126 return false; 125 127 126 128 return true; … … 189 191 return; 190 192 } 191 if (entry->needsValidation() ) {193 if (entry->needsValidation() || request.cachePolicy() == WebCore::RefreshAnyCacheData) { 192 194 loader->validateCacheEntry(WTFMove(entry)); 193 195 return; … … 471 473 { 472 474 RELEASE_LOG_IF_ALLOWED("continueWillSendRequest: (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier); 475 476 // If there is a match in the network cache, we need to reuse the original cache policy. 477 newRequest.setCachePolicy(originalRequest().cachePolicy()); 473 478 474 479 #if ENABLE(NETWORK_CACHE) -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp
r202439 r207330 137 137 case WebCore::UseProtocolCachePolicy: 138 138 case WebCore::ReloadIgnoringCacheData: 139 case WebCore::RefreshAnyCacheData: 139 140 return false; 140 } 141 ASSERT_NOT_REACHED(); 141 case WebCore::DoNotUseAnyCache: 142 ASSERT_NOT_REACHED(); 143 return false; 144 } 142 145 return false; 143 146 } … … 199 202 static RetrieveDecision makeRetrieveDecision(const WebCore::ResourceRequest& request) 200 203 { 204 ASSERT(request.cachePolicy() != WebCore::DoNotUseAnyCache); 205 201 206 // FIXME: Support HEAD requests. 202 207 if (request.httpMethod() != "GET") -
trunk/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm
r207151 r207330 78 78 encoder << resourceRequest.responseContentDispositionEncodingFallbackArray(); 79 79 encoder.encodeEnum(resourceRequest.requester()); 80 encoder.encodeEnum(resourceRequest.cachePolicy()); 80 81 } 81 82 … … 115 116 return false; 116 117 resourceRequest.setRequester(requester); 118 119 ResourceRequestCachePolicy cachePolicy; 120 if (!decoder.decodeEnum(cachePolicy)) 121 return false; 122 resourceRequest.setCachePolicy(cachePolicy); 117 123 118 124 return true;
Note: See TracChangeset
for help on using the changeset viewer.