Use normal loading path for ping loads
[WebKit-https.git] / Source / WebCore / loader / LoaderStrategy.h
index 2f5efeb..8a82381 100644 (file)
@@ -31,7 +31,6 @@
 #include "StoredCredentialsPolicy.h"
 #include <pal/SessionID.h>
 #include <wtf/Forward.h>
-#include <wtf/SHA1.h>
 
 namespace WebCore {
 
@@ -42,6 +41,7 @@ class FrameLoader;
 class HTTPHeaderMap;
 class NetscapePlugInStreamLoader;
 class NetscapePlugInStreamLoaderClient;
+struct NetworkTransactionInformation;
 class NetworkLoadMetrics;
 class ResourceError;
 class ResourceLoader;
@@ -50,7 +50,6 @@ class ResourceResponse;
 class SecurityOrigin;
 class SharedBuffer;
 class SubresourceLoader;
-class URL;
 
 struct FetchOptions;
 
@@ -61,31 +60,35 @@ public:
     virtual void pageLoadCompleted(uint64_t webPageID) = 0;
 
     virtual void remove(ResourceLoader*) = 0;
-    virtual void setDefersLoading(ResourceLoader*, bool) = 0;
+    virtual void setDefersLoading(ResourceLoader&, bool) = 0;
     virtual void crossOriginRedirectReceived(ResourceLoader*, const URL& redirectURL) = 0;
 
     virtual void servePendingRequests(ResourceLoadPriority minimumPriority = ResourceLoadPriority::VeryLow) = 0;
     virtual void suspendPendingRequests() = 0;
     virtual void resumePendingRequests() = 0;
 
+    virtual bool usePingLoad() const { return true; }
     using PingLoadCompletionHandler = WTF::Function<void(const ResourceError&, const ResourceResponse&)>;
-    virtual void startPingLoad(Frame&, ResourceRequest&, const HTTPHeaderMap& originalRequestHeaders, const FetchOptions&, PingLoadCompletionHandler&& = { }) = 0;
+    virtual void startPingLoad(Frame&, ResourceRequest&, const HTTPHeaderMap& originalRequestHeaders, const FetchOptions&, ContentSecurityPolicyImposition, PingLoadCompletionHandler&& = { }) = 0;
 
     using PreconnectCompletionHandler = WTF::Function<void(const ResourceError&)>;
     virtual void preconnectTo(FrameLoader&, const URL&, StoredCredentialsPolicy, PreconnectCompletionHandler&&) = 0;
 
-    virtual void storeDerivedDataToCache(const SHA1::Digest& bodyKey, const String& type, const String& partition, WebCore::SharedBuffer&) = 0;
-
     virtual void setCaptureExtraNetworkLoadMetricsEnabled(bool) = 0;
 
     virtual bool isOnLine() const = 0;
     virtual void addOnlineStateChangeListener(WTF::Function<void(bool)>&&) = 0;
 
-    virtual bool isDoingLoadingSecurityChecks() const { return false; }
+    virtual bool shouldPerformSecurityChecks() const { return false; }
+    virtual bool havePerformedSecurityChecks(const ResourceResponse&) const { return false; }
 
     virtual ResourceResponse responseFromResourceLoadIdentifier(uint64_t resourceLoadIdentifier);
+    virtual Vector<NetworkTransactionInformation> intermediateLoadInformationFromResourceLoadIdentifier(uint64_t resourceLoadIdentifier);
     virtual NetworkLoadMetrics networkMetricsFromResourceLoadIdentifier(uint64_t resourceLoadIdentifier);
 
+    // Used for testing only.
+    virtual Vector<uint64_t> ongoingLoads() const { return { }; }
+
 protected:
     virtual ~LoaderStrategy();
 };