WebCoreAVCFResourceLoader.h [plain text]
#pragma once
#if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_LOADER_DELEGATE)
#include "CachedRawResourceClient.h"
#include "CachedResourceHandle.h"
#include <wtf/Noncopyable.h>
#include <wtf/Ref.h>
#include <wtf/RefCounted.h>
#include <wtf/RetainPtr.h>
typedef struct OpaqueAVCFAssetResourceLoadingRequest* AVCFAssetResourceLoadingRequestRef;
namespace WebCore {
class CachedRawResource;
class CachedResourceLoader;
class MediaPlayerPrivateAVFoundationCF;
class WebCoreAVCFResourceLoader : public RefCounted<WebCoreAVCFResourceLoader>, CachedRawResourceClient {
WTF_MAKE_NONCOPYABLE(WebCoreAVCFResourceLoader); WTF_MAKE_FAST_ALLOCATED;
public:
static Ref<WebCoreAVCFResourceLoader> create(MediaPlayerPrivateAVFoundationCF* parent, AVCFAssetResourceLoadingRequestRef);
virtual ~WebCoreAVCFResourceLoader();
void startLoading();
void stopLoading();
void invalidate();
CachedRawResource* resource();
private:
void responseReceived(CachedResource&, const ResourceResponse&, CompletionHandler<void()>&&) override;
void dataReceived(CachedResource&, const char*, int) override;
void notifyFinished(CachedResource&, const NetworkLoadMetrics&) override;
void fulfillRequestWithResource(CachedResource&);
WebCoreAVCFResourceLoader(MediaPlayerPrivateAVFoundationCF* parent, AVCFAssetResourceLoadingRequestRef);
MediaPlayerPrivateAVFoundationCF* m_parent;
RetainPtr<AVCFAssetResourceLoadingRequestRef> m_avRequest;
CachedResourceHandle<CachedRawResource> m_resource;
};
}
#endif // ENABLE(VIDEO) && USE(AVFOUNDATION)