WebCoreAVFResourceLoader.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>
OBJC_CLASS AVAssetResourceLoadingRequest;
namespace WebCore {
class CachedRawResource;
class CachedResourceLoader;
class MediaPlayerPrivateAVFoundationObjC;
class WebCoreAVFResourceLoader : public RefCounted<WebCoreAVFResourceLoader>, CachedRawResourceClient {
WTF_MAKE_NONCOPYABLE(WebCoreAVFResourceLoader); WTF_MAKE_FAST_ALLOCATED;
public:
static Ref<WebCoreAVFResourceLoader> create(MediaPlayerPrivateAVFoundationObjC* parent, AVAssetResourceLoadingRequest *);
virtual ~WebCoreAVFResourceLoader();
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&) override;
void fulfillRequestWithResource(CachedResource&);
WebCoreAVFResourceLoader(MediaPlayerPrivateAVFoundationObjC* parent, AVAssetResourceLoadingRequest *);
MediaPlayerPrivateAVFoundationObjC* m_parent;
RetainPtr<AVAssetResourceLoadingRequest> m_avRequest;
CachedResourceHandle<CachedRawResource> m_resource;
};
}
#endif // ENABLE(VIDEO) && USE(AVFOUNDATION)