NetworkSessionCocoa.h [plain text]
#pragma once
#if USE(NETWORK_SESSION)
OBJC_CLASS NSURLSession;
OBJC_CLASS NSOperationQueue;
OBJC_CLASS WKNetworkSessionDelegate;
#include "DownloadID.h"
#include "NetworkDataTaskCocoa.h"
#include "NetworkSession.h"
#include <wtf/HashMap.h>
namespace WebKit {
class NetworkSessionCocoa final : public NetworkSession {
friend class NetworkDataTaskCocoa;
public:
static Ref<NetworkSession> create(WebCore::SessionID, CustomProtocolManager*);
static NetworkSession& defaultSession();
~NetworkSessionCocoa();
static void setCustomProtocolManager(CustomProtocolManager*);
static void setSourceApplicationAuditTokenData(RetainPtr<CFDataRef>&&);
static void setSourceApplicationBundleIdentifier(const String&);
static void setSourceApplicationSecondaryIdentifier(const String&);
#if PLATFORM(IOS)
static void setCTDataConnectionServiceType(const String&);
#endif
NetworkDataTaskCocoa* dataTaskForIdentifier(NetworkDataTaskCocoa::TaskIdentifier, WebCore::StoredCredentials);
void addDownloadID(NetworkDataTaskCocoa::TaskIdentifier, DownloadID);
DownloadID downloadID(NetworkDataTaskCocoa::TaskIdentifier);
DownloadID takeDownloadID(NetworkDataTaskCocoa::TaskIdentifier);
private:
NetworkSessionCocoa(WebCore::SessionID, CustomProtocolManager*);
void invalidateAndCancel() override;
void clearCredentials() override;
HashMap<NetworkDataTaskCocoa::TaskIdentifier, NetworkDataTaskCocoa*> m_dataTaskMapWithCredentials;
HashMap<NetworkDataTaskCocoa::TaskIdentifier, NetworkDataTaskCocoa*> m_dataTaskMapWithoutCredentials;
HashMap<NetworkDataTaskCocoa::TaskIdentifier, DownloadID> m_downloadMap;
RetainPtr<NSURLSession> m_sessionWithCredentialStorage;
RetainPtr<WKNetworkSessionDelegate> m_sessionWithCredentialStorageDelegate;
RetainPtr<NSURLSession> m_sessionWithoutCredentialStorage;
RetainPtr<WKNetworkSessionDelegate> m_sessionWithoutCredentialStorageDelegate;
};
}
#endif // USE(NETWORK_SESSION)