Changeset 220922 in webkit
- Timestamp:
- Aug 18, 2017 10:58:41 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r220920 r220922 1 2017-08-18 Chris Dumez <cdumez@apple.com> 2 3 [Beacon] Add support for quota limitation 4 https://bugs.webkit.org/show_bug.cgi?id=175443 5 <rdar://problem/33729002> 6 7 Reviewed by Youenn Fablet. 8 9 Extend layout test coverage and rebaseline test. 10 11 * http/wpt/beacon/beacon-quota-expected.txt: 12 * http/wpt/beacon/beacon-quota.html: 13 1 14 2017-08-18 Ryan Haddad <ryanhaddad@apple.com> 2 15 -
trunk/LayoutTests/http/wpt/beacon/beacon-quota-expected.txt
r220751 r220922 1 CONSOLE MESSAGE: line 14: Reached maximum amount of queued data of 64Kb for keepalive requests 1 CONSOLE MESSAGE: line 44: Reached maximum amount of queued data of 64Kb for keepalive requests 2 CONSOLE MESSAGE: line 52: Reached maximum amount of queued data of 64Kb for keepalive requests 2 3 3 4 PASS Beacon with a body above the Quota Limit should fail. 4 FAIL Multiple Beacons Quota Limit assert_false: Second beacon should not be sent because we reached the quota expected false got true 5 PASS Multiple Beacons Quota Limit 5 6 -
trunk/LayoutTests/http/wpt/beacon/beacon-quota.html
r220751 r220922 2 2 <script src="/resources/testharness.js"></script> 3 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="/common/utils.js"></script> 4 5 <script> 6 const RESOURCES_DIR = "/WebKit/beacon/resources/"; 7 5 8 // We should expect 64KiB of rolling quota for any type of keep-alive request sent. 6 9 var expectedQuota = 65536; 10 11 function checkBeaconReceived(id) 12 { 13 return new Promise(function(resolve, reject) { 14 var checkUrl = RESOURCES_DIR + "beacon-preflight.py?cmd=get&id=" + id; 15 fetch(checkUrl).then(response => { 16 response.json().then(result => { 17 resolve(result['beacon'] == 1); 18 }); 19 }, reject); 20 }); 21 } 22 23 function waitForBeacon(id) 24 { 25 return new Promise(function(resolve, reject) { 26 checkBeaconReceived(id).then(wasReceived => { 27 if (wasReceived) { 28 resolve(); 29 return; 30 } 31 setTimeout(function() { 32 waitForBeacon(id).then(resolve, reject); 33 }, 10); 34 }); 35 }); 36 } 7 37 8 38 function createPayload(payloadSize) … … 15 45 }, "Beacon with a body above the Quota Limit should fail."); 16 46 17 test(function() { 18 assert_true(navigator.sendBeacon("/", createPayload(expectedQuota)), "Beacon with a body at the Quota Limit should succeed."); 19 assert_false(navigator.sendBeacon("/", createPayload(1)), "Second beacon should not be sent because we reached the quota"); 47 promise_test(function() { 48 var id = self.token(); 49 var target = RESOURCES_DIR + "beacon-preflight.py?allowCors=1&cmd=put&id=" + id; 50 51 assert_true(navigator.sendBeacon(target, createPayload(expectedQuota)), "Beacon with a body at the Quota Limit should succeed."); 52 assert_false(navigator.sendBeacon(target, createPayload(1)), "Second beacon should not be sent because we reached the quota"); 53 return waitForBeacon(id).then(function() { 54 assert_true(navigator.sendBeacon(target, createPayload(1)), "Allocated quota should be returned once the beacon is no longer in flight"); 55 }); 20 56 }, "Multiple Beacons Quota Limit"); 21 57 </script> -
trunk/Source/WebCore/ChangeLog
r220917 r220922 1 2017-08-18 Chris Dumez <cdumez@apple.com> 2 3 [Beacon] Add support for quota limitation 4 https://bugs.webkit.org/show_bug.cgi?id=175443 5 <rdar://problem/33729002> 6 7 Reviewed by Youenn Fablet. 8 9 LoaderStrategy::startPingLoad() now takes a completion handler parameter, allowing CachedResource::load() 10 to know when a Beacon load is complete. This was needed in order for the fetch in-flight keepalive request 11 quota limit to work properly for beacon loads as well. We need to know when the beacon load completes in 12 order to know if the beacon is in-flight or not and only free up its allocated quota once it is no longer 13 in-flight. 14 15 No new tests, updated existing test. 16 17 * loader/LoaderStrategy.h: 18 * loader/PingLoader.cpp: 19 (WebCore::PingLoader::startPingLoad): 20 * loader/cache/CachedResource.cpp: 21 (WebCore::CachedResource::load): 22 * platform/network/PingHandle.h: 23 1 24 2017-08-18 Youenn Fablet <youenn@apple.com> 2 25 -
trunk/Source/WebCore/loader/LoaderStrategy.h
r220888 r220922 65 65 virtual void resumePendingRequests() = 0; 66 66 67 virtual void createPingHandle(NetworkingContext*, ResourceRequest&, const HTTPHeaderMap& originalRequestHeaders, Ref<SecurityOrigin>&& sourceOrigin, ContentSecurityPolicy*, const FetchOptions&) = 0;67 virtual void startPingLoad(NetworkingContext*, ResourceRequest&, const HTTPHeaderMap& originalRequestHeaders, Ref<SecurityOrigin>&& sourceOrigin, ContentSecurityPolicy*, const FetchOptions&, WTF::Function<void()>&& completionHandler = { }) = 0; 68 68 69 69 virtual void storeDerivedDataToCache(const SHA1::Digest& bodyKey, const String& type, const String& partition, WebCore::SharedBuffer&) = 0; -
trunk/Source/WebCore/loader/PingLoader.cpp
r220817 r220922 204 204 205 205 auto* contentSecurityPolicy = document.shouldBypassMainWorldContentSecurityPolicy() ? nullptr : document.contentSecurityPolicy(); 206 platformStrategies()->loaderStrategy()-> createPingHandle(frame.loader().networkingContext(), request, WTFMove(originalRequestHeaders), document.securityOrigin(), contentSecurityPolicy, options);207 } 208 209 } 206 platformStrategies()->loaderStrategy()->startPingLoad(frame.loader().networkingContext(), request, WTFMove(originalRequestHeaders), document.securityOrigin(), contentSecurityPolicy, options); 207 } 208 209 } -
trunk/Source/WebCore/loader/cache/CachedResource.cpp
r220888 r220922 269 269 // FIXME: We should not special-case Beacon here. 270 270 if (shouldUsePingLoad(type())) { 271 ASSERT(m_origin);271 ASSERT(m_origin); 272 272 // Beacon is not exposed to workers so it is safe to rely on the document here. 273 273 auto* document = cachedResourceLoader.document(); 274 274 auto* contentSecurityPolicy = document && !document->shouldBypassMainWorldContentSecurityPolicy() ? document->contentSecurityPolicy() : nullptr; 275 275 ASSERT(m_originalRequestHeaders); 276 platformStrategies()->loaderStrategy()->createPingHandle(frame.loader().networkingContext(), request, *m_originalRequestHeaders, *m_origin, contentSecurityPolicy, m_options); 277 // FIXME: We currently do not get notified when ping loads finish so we treat them as finishing right away. 278 finishLoading(nullptr); 276 CachedResourceHandle<CachedResource> protectedThis(this); 277 platformStrategies()->loaderStrategy()->startPingLoad(frame.loader().networkingContext(), request, *m_originalRequestHeaders, *m_origin, contentSecurityPolicy, m_options, [this, protectedThis = WTFMove(protectedThis)] { 278 finishLoading(nullptr); 279 }); 279 280 return; 280 281 } -
trunk/Source/WebCore/platform/network/PingHandle.h
r215173 r220922 44 44 }; 45 45 46 PingHandle(NetworkingContext* networkingContext, const ResourceRequest& request, bool shouldUseCredentialStorage, UsesAsyncCallbacks useAsyncCallbacks, bool shouldFollowRedirects )46 PingHandle(NetworkingContext* networkingContext, const ResourceRequest& request, bool shouldUseCredentialStorage, UsesAsyncCallbacks useAsyncCallbacks, bool shouldFollowRedirects, WTF::Function<void()>&& completionHandler) 47 47 : m_timeoutTimer(*this, &PingHandle::timeoutTimerFired) 48 48 , m_shouldUseCredentialStorage(shouldUseCredentialStorage) 49 49 , m_shouldFollowRedirects(shouldFollowRedirects) 50 50 , m_usesAsyncCallbacks(useAsyncCallbacks) 51 , m_completionHandler(WTFMove(completionHandler)) 51 52 { 52 53 m_handle = ResourceHandle::create(networkingContext, request, this, false, false); … … 80 81 virtual ~PingHandle() 81 82 { 83 if (m_completionHandler) 84 m_completionHandler(); 85 82 86 if (m_handle) { 83 87 ASSERT(m_handle->client() == this); … … 92 96 bool m_shouldFollowRedirects; 93 97 UsesAsyncCallbacks m_usesAsyncCallbacks; 98 WTF::Function<void()> m_completionHandler; 94 99 }; 95 100 -
trunk/Source/WebKit/ChangeLog
r220917 r220922 1 2017-08-18 Chris Dumez <cdumez@apple.com> 2 3 [Beacon] Add support for quota limitation 4 https://bugs.webkit.org/show_bug.cgi?id=175443 5 <rdar://problem/33729002> 6 7 Reviewed by Youenn Fablet. 8 9 WebLoaderStrategy now generates an identifier for ping loads and keep 10 the completion handler in a local HashMap. Once the ping load is done, 11 the network process sends an IPC message back to the WebContent process 12 so that WebLoaderStrategy can look up the completion handler for the 13 ping load and call it. 14 15 * NetworkProcess/NetworkConnectionToWebProcess.cpp: 16 (WebKit::NetworkConnectionToWebProcess::loadPing): 17 (WebKit::NetworkConnectionToWebProcess::didFinishPingLoad): 18 * NetworkProcess/NetworkConnectionToWebProcess.h: 19 * NetworkProcess/PingLoad.cpp: 20 (WebKit::PingLoad::PingLoad): 21 (WebKit::PingLoad::~PingLoad): 22 * NetworkProcess/PingLoad.h: 23 * WebProcess/Network/NetworkProcessConnection.cpp: 24 (WebKit::NetworkProcessConnection::didFinishPingLoad): 25 * WebProcess/Network/NetworkProcessConnection.h: 26 * WebProcess/Network/NetworkProcessConnection.messages.in: 27 * WebProcess/Network/WebLoaderStrategy.cpp: 28 (WebKit::generatePingLoadIdentifier): 29 (WebKit::WebLoaderStrategy::startPingLoad): 30 (WebKit::WebLoaderStrategy::didFinishPingLoad): 31 * WebProcess/Network/WebLoaderStrategy.h: 32 1 33 2017-08-18 Youenn Fablet <youenn@apple.com> 2 34 -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
r220917 r220922 240 240 #if USE(NETWORK_SESSION) 241 241 // PingLoad manages its own lifetime, deleting itself when its purpose has been fulfilled. 242 new PingLoad(WTFMove(loadParameters), WTFMove(originalRequestHeaders) );242 new PingLoad(WTFMove(loadParameters), WTFMove(originalRequestHeaders), *this); 243 243 #else 244 244 UNUSED_PARAM(originalRequestHeaders); … … 246 246 247 247 // PingHandle manages its own lifetime, deleting itself when its purpose has been fulfilled. 248 new PingHandle(context.get(), loadParameters.request, loadParameters.allowStoredCredentials == AllowStoredCredentials, PingHandle::UsesAsyncCallbacks::Yes, loadParameters.shouldFollowRedirects); 249 #endif 248 new PingHandle(context.get(), loadParameters.request, loadParameters.allowStoredCredentials == AllowStoredCredentials, PingHandle::UsesAsyncCallbacks::Yes, loadParameters.shouldFollowRedirects, [this, protectedThis = makeRef(*this), identifier = loadParameters.identifier] { 249 didFinishPingLoad(identifier); 250 }); 251 #endif 252 } 253 254 void NetworkConnectionToWebProcess::didFinishPingLoad(uint64_t pingLoadIdentifier) 255 { 256 if (!m_connection->isValid()) 257 return; 258 259 m_connection->send(Messages::NetworkProcessConnection::DidFinishPingLoad(pingLoadIdentifier), 0); 250 260 } 251 261 -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
r220917 r220922 62 62 63 63 void didCleanupResourceLoader(NetworkResourceLoader&); 64 void didFinishPingLoad(uint64_t pingLoadIdentifier); 64 65 65 66 bool captureExtraNetworkLoadMetricsEnabled() const { return m_captureExtraNetworkLoadMetricsEnabled; } -
trunk/Source/WebKit/NetworkProcess/PingLoad.cpp
r220888 r220922 32 32 #include "Logging.h" 33 33 #include "NetworkCORSPreflightChecker.h" 34 #include "NetworkConnectionToWebProcess.h" 34 35 #include "SessionTracker.h" 35 36 #include <WebCore/ContentSecurityPolicy.h> … … 43 44 using namespace WebCore; 44 45 45 PingLoad::PingLoad(NetworkResourceLoadParameters&& parameters, HTTPHeaderMap&& originalRequestHeaders )46 PingLoad::PingLoad(NetworkResourceLoadParameters&& parameters, HTTPHeaderMap&& originalRequestHeaders, Ref<NetworkConnectionToWebProcess>&& connection) 46 47 : m_parameters(WTFMove(parameters)) 47 48 , m_originalRequestHeaders(WTFMove(originalRequestHeaders)) 49 , m_connection(WTFMove(connection)) 48 50 , m_timeoutTimer(*this, &PingLoad::timeoutTimerFired) 49 51 , m_isSameOriginRequest(securityOrigin().canRequest(m_parameters.request.url())) … … 65 67 PingLoad::~PingLoad() 66 68 { 69 m_connection->didFinishPingLoad(m_parameters.identifier); 70 67 71 if (m_redirectHandler) 68 72 m_redirectHandler({ }); -
trunk/Source/WebKit/NetworkProcess/PingLoad.h
r220888 r220922 40 40 41 41 class NetworkCORSPreflightChecker; 42 class NetworkConnectionToWebProcess; 42 43 43 44 class PingLoad final : private NetworkDataTaskClient { 44 45 public: 45 PingLoad(NetworkResourceLoadParameters&&, WebCore::HTTPHeaderMap&& originalRequestHeaders );46 PingLoad(NetworkResourceLoadParameters&&, WebCore::HTTPHeaderMap&& originalRequestHeaders, Ref<NetworkConnectionToWebProcess>&&); 46 47 47 48 private: … … 71 72 NetworkResourceLoadParameters m_parameters; 72 73 WebCore::HTTPHeaderMap m_originalRequestHeaders; // Needed for CORS checks. 74 Ref<NetworkConnectionToWebProcess> m_connection; 73 75 RefPtr<NetworkDataTask> m_task; 74 76 WebCore::Timer m_timeoutTimer; -
trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp
r220917 r220922 136 136 } 137 137 138 void NetworkProcessConnection::didFinishPingLoad(uint64_t pingLoadIdentifier) 139 { 140 WebProcess::singleton().webLoaderStrategy().didFinishPingLoad(pingLoadIdentifier); 141 } 142 138 143 #if ENABLE(SHAREABLE_RESOURCE) 139 144 void NetworkProcessConnection::didCacheResource(const ResourceRequest& request, const ShareableResource::Handle& handle, PAL::SessionID sessionID) -
trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.h
r220857 r220922 74 74 75 75 void didWriteBlobsToTemporaryFiles(uint64_t requestIdentifier, const Vector<String>& filenames); 76 void didFinishPingLoad(uint64_t pingLoadIdentifier); 76 77 77 78 #if ENABLE(SHAREABLE_RESOURCE) -
trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.messages.in
r220857 r220922 28 28 29 29 DidWriteBlobsToTemporaryFiles(uint64_t requestIdentifier, Vector<String> filenames) 30 DidFinishPingLoad(uint64_t pingLoadIdentifier) 30 31 } -
trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
r220888 r220922 351 351 352 352 m_webResourceLoaders.clear(); 353 354 auto pingLoadCompletionHandlers = WTFMove(m_pingLoadCompletionHandlers); 355 for (auto& pingLoadCompletionHandler : pingLoadCompletionHandlers.values()) 356 pingLoadCompletionHandler(); 353 357 } 354 358 … … 387 391 } 388 392 389 void WebLoaderStrategy::createPingHandle(NetworkingContext* networkingContext, ResourceRequest& request, const HTTPHeaderMap& originalRequestHeaders, Ref<SecurityOrigin>&& sourceOrigin, ContentSecurityPolicy* contentSecurityPolicy, const FetchOptions& options) 393 static uint64_t generatePingLoadIdentifier() 394 { 395 static uint64_t identifier = 0; 396 return ++identifier; 397 } 398 399 void WebLoaderStrategy::startPingLoad(NetworkingContext* networkingContext, ResourceRequest& request, const HTTPHeaderMap& originalRequestHeaders, Ref<SecurityOrigin>&& sourceOrigin, ContentSecurityPolicy* contentSecurityPolicy, const FetchOptions& options, WTF::Function<void()>&& completionHandler) 390 400 { 391 401 // It's possible that call to createPingHandle might be made during initial empty Document creation before a NetworkingContext exists. 392 402 // It is not clear that we should send ping loads during that process anyways. 393 if (!networkingContext) 394 return; 403 if (!networkingContext) { 404 if (completionHandler) 405 completionHandler(); 406 return; 407 } 395 408 396 409 WebFrameNetworkingContext* webContext = static_cast<WebFrameNetworkingContext*>(networkingContext); … … 400 413 401 414 NetworkResourceLoadParameters loadParameters; 415 loadParameters.identifier = generatePingLoadIdentifier(); 402 416 loadParameters.request = request; 403 417 loadParameters.sourceOrigin = WTFMove(sourceOrigin); … … 410 424 loadParameters.cspResponseHeaders = contentSecurityPolicy->responseHeaders(); 411 425 426 if (completionHandler) 427 m_pingLoadCompletionHandlers.add(loadParameters.identifier, WTFMove(completionHandler)); 428 412 429 WebProcess::singleton().networkConnection().connection().send(Messages::NetworkConnectionToWebProcess::LoadPing(WTFMove(loadParameters), originalRequestHeaders), 0); 430 } 431 432 void WebLoaderStrategy::didFinishPingLoad(uint64_t pingLoadIdentifier) 433 { 434 if (auto completionHandler = m_pingLoadCompletionHandlers.take(pingLoadIdentifier)) 435 completionHandler(); 413 436 } 414 437 -
trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h
r220888 r220922 60 60 void resumePendingRequests() final; 61 61 62 void createPingHandle(WebCore::NetworkingContext*, WebCore::ResourceRequest&, const WebCore::HTTPHeaderMap& originalRequestHeaders, Ref<WebCore::SecurityOrigin>&& sourceOrigin, WebCore::ContentSecurityPolicy*, const WebCore::FetchOptions&) final; 62 void startPingLoad(WebCore::NetworkingContext*, WebCore::ResourceRequest&, const WebCore::HTTPHeaderMap& originalRequestHeaders, Ref<WebCore::SecurityOrigin>&& sourceOrigin, WebCore::ContentSecurityPolicy*, const WebCore::FetchOptions&, WTF::Function<void()>&& completionHandler) final; 63 void didFinishPingLoad(uint64_t pingLoadIdentifier); 63 64 64 65 void storeDerivedDataToCache(const SHA1::Digest& bodyHash, const String& type, const String& partition, WebCore::SharedBuffer&) final; … … 85 86 HashMap<unsigned long, RefPtr<WebResourceLoader>> m_webResourceLoaders; 86 87 HashMap<unsigned long, WebURLSchemeTaskProxy*> m_urlSchemeTasks; 88 HashMap<unsigned long, WTF::Function<void()>> m_pingLoadCompletionHandlers; 87 89 }; 88 90 -
trunk/Source/WebKitLegacy/ChangeLog
r220888 r220922 1 2017-08-18 Chris Dumez <cdumez@apple.com> 2 3 [Beacon] Add support for quota limitation 4 https://bugs.webkit.org/show_bug.cgi?id=175443 5 <rdar://problem/33729002> 6 7 Reviewed by Youenn Fablet. 8 9 * WebCoreSupport/WebResourceLoadScheduler.cpp: 10 (WebResourceLoadScheduler::startPingLoad): 11 * WebCoreSupport/WebResourceLoadScheduler.h: 12 1 13 2017-08-17 Chris Dumez <cdumez@apple.com> 2 14 -
trunk/Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.cpp
r220888 r220922 364 364 } 365 365 366 void WebResourceLoadScheduler:: createPingHandle(NetworkingContext* networkingContext, ResourceRequest& request, const HTTPHeaderMap&, Ref<SecurityOrigin>&&, WebCore::ContentSecurityPolicy*, const FetchOptions& options)366 void WebResourceLoadScheduler::startPingLoad(NetworkingContext* networkingContext, ResourceRequest& request, const HTTPHeaderMap&, Ref<SecurityOrigin>&&, WebCore::ContentSecurityPolicy*, const FetchOptions& options, WTF::Function<void()>&& completionHandler) 367 367 { 368 368 // PingHandle manages its own lifetime, deleting itself when its purpose has been fulfilled. 369 new PingHandle(networkingContext, request, options.credentials != FetchOptions::Credentials::Omit, PingHandle::UsesAsyncCallbacks::No, options.redirect == FetchOptions::Redirect::Follow );370 } 371 369 new PingHandle(networkingContext, request, options.credentials != FetchOptions::Credentials::Omit, PingHandle::UsesAsyncCallbacks::No, options.redirect == FetchOptions::Redirect::Follow, WTFMove(completionHandler)); 370 } 371 -
trunk/Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.h
r220888 r220922 45 45 WebResourceLoadScheduler& webResourceLoadScheduler(); 46 46 47 class WebResourceLoadScheduler : public WebCore::LoaderStrategy {47 class WebResourceLoadScheduler final : public WebCore::LoaderStrategy { 48 48 WTF_MAKE_NONCOPYABLE(WebResourceLoadScheduler); WTF_MAKE_FAST_ALLOCATED; 49 49 public: 50 50 WebResourceLoadScheduler(); 51 51 52 RefPtr<WebCore::SubresourceLoader> loadResource(WebCore::Frame&, WebCore::CachedResource&, const WebCore::ResourceRequest&, const WebCore::ResourceLoaderOptions&) override;53 void loadResourceSynchronously(WebCore::NetworkingContext*, unsigned long, const WebCore::ResourceRequest&, WebCore::StoredCredentials, WebCore::ClientCredentialPolicy, WebCore::ResourceError&, WebCore::ResourceResponse&, Vector<char>&) override;54 void remove(WebCore::ResourceLoader*) override;55 void setDefersLoading(WebCore::ResourceLoader*, bool) override;56 void crossOriginRedirectReceived(WebCore::ResourceLoader*, const WebCore::URL& redirectURL) override;52 RefPtr<WebCore::SubresourceLoader> loadResource(WebCore::Frame&, WebCore::CachedResource&, const WebCore::ResourceRequest&, const WebCore::ResourceLoaderOptions&) final; 53 void loadResourceSynchronously(WebCore::NetworkingContext*, unsigned long, const WebCore::ResourceRequest&, WebCore::StoredCredentials, WebCore::ClientCredentialPolicy, WebCore::ResourceError&, WebCore::ResourceResponse&, Vector<char>&) final; 54 void remove(WebCore::ResourceLoader*) final; 55 void setDefersLoading(WebCore::ResourceLoader*, bool) final; 56 void crossOriginRedirectReceived(WebCore::ResourceLoader*, const WebCore::URL& redirectURL) final; 57 57 58 void servePendingRequests(WebCore::ResourceLoadPriority minimumPriority = WebCore::ResourceLoadPriority::VeryLow) override;59 void suspendPendingRequests() override;60 void resumePendingRequests() override;58 void servePendingRequests(WebCore::ResourceLoadPriority minimumPriority = WebCore::ResourceLoadPriority::VeryLow) final; 59 void suspendPendingRequests() final; 60 void resumePendingRequests() final; 61 61 62 void createPingHandle(WebCore::NetworkingContext*, WebCore::ResourceRequest&, const WebCore::HTTPHeaderMap&, Ref<WebCore::SecurityOrigin>&& sourceOrigin, WebCore::ContentSecurityPolicy*, const WebCore::FetchOptions&) override;62 void startPingLoad(WebCore::NetworkingContext*, WebCore::ResourceRequest&, const WebCore::HTTPHeaderMap&, Ref<WebCore::SecurityOrigin>&& sourceOrigin, WebCore::ContentSecurityPolicy*, const WebCore::FetchOptions&, WTF::Function<void()>&& completionHandler) final; 63 63 64 void storeDerivedDataToCache(const SHA1::Digest&, const String&, const String&, WebCore::SharedBuffer&) override{ }64 void storeDerivedDataToCache(const SHA1::Digest&, const String&, const String&, WebCore::SharedBuffer&) final { } 65 65 66 void setCaptureExtraNetworkLoadMetricsEnabled(bool) override{ }66 void setCaptureExtraNetworkLoadMetricsEnabled(bool) final { } 67 67 68 68 bool isSerialLoadingEnabled() const { return m_isSerialLoadingEnabled; }
Note: See TracChangeset
for help on using the changeset viewer.