NetworkSessionCocoa.h [plain text]
#pragma once
#if USE(NETWORK_SESSION)
OBJC_CLASS NSData;
OBJC_CLASS NSURLSession;
OBJC_CLASS NSURLSessionDownloadTask;
OBJC_CLASS NSOperationQueue;
OBJC_CLASS WKNetworkSessionDelegate;
#include "DownloadID.h"
#include "NetworkDataTaskCocoa.h"
#include "NetworkSession.h"
#include <WebCore/NetworkLoadMetrics.h>
#include <wtf/HashMap.h>
namespace WebKit {
class LegacyCustomProtocolManager;
class NetworkSessionCocoa final : public NetworkSession {
friend class NetworkDataTaskCocoa;
public:
static Ref<NetworkSession> create(NetworkSessionCreationParameters&&);
~NetworkSessionCocoa();
static void setSourceApplicationAuditTokenData(RetainPtr<CFDataRef>&&);
static void setSourceApplicationBundleIdentifier(const String&);
static void setSourceApplicationSecondaryIdentifier(const String&);
static void setUsesNetworkCache(bool);
#if PLATFORM(IOS)
static void setCTDataConnectionServiceType(const String&);
#endif
NetworkDataTaskCocoa* dataTaskForIdentifier(NetworkDataTaskCocoa::TaskIdentifier, WebCore::StoredCredentialsPolicy);
NSURLSessionDownloadTask* downloadTaskWithResumeData(NSData*);
void addDownloadID(NetworkDataTaskCocoa::TaskIdentifier, DownloadID);
DownloadID downloadID(NetworkDataTaskCocoa::TaskIdentifier);
DownloadID takeDownloadID(NetworkDataTaskCocoa::TaskIdentifier);
static bool allowsSpecificHTTPSCertificateForHost(const WebCore::AuthenticationChallenge&);
private:
NetworkSessionCocoa(NetworkSessionCreationParameters&&);
void invalidateAndCancel() override;
void clearCredentials() override;
HashMap<NetworkDataTaskCocoa::TaskIdentifier, NetworkDataTaskCocoa*> m_dataTaskMapWithCredentials;
HashMap<NetworkDataTaskCocoa::TaskIdentifier, NetworkDataTaskCocoa*> m_dataTaskMapWithoutState;
HashMap<NetworkDataTaskCocoa::TaskIdentifier, DownloadID> m_downloadMap;
RetainPtr<NSURLSession> m_sessionWithCredentialStorage;
RetainPtr<WKNetworkSessionDelegate> m_sessionWithCredentialStorageDelegate;
RetainPtr<NSURLSession> m_statelessSession;
RetainPtr<WKNetworkSessionDelegate> m_statelessSessionDelegate;
String m_boundInterfaceIdentifier;
RetainPtr<CFDictionaryRef> m_proxyConfiguration;
};
}
#endif // USE(NETWORK_SESSION)