DefaultDownloadDelegate.h [plain text]
#ifndef DefaultDownloadDelegate_h
#define DefaultDownloadDelegate_h
#include "WebKit.h"
#include <wtf/HashSet.h>
#if USE(CFNETWORK)
#include <CFNetwork/CFURLDownloadPriv.h>
#endif
class DefaultDownloadDelegate : public IWebDownloadDelegate
{
public:
static DefaultDownloadDelegate* sharedInstance();
static DefaultDownloadDelegate* createInstance();
private:
DefaultDownloadDelegate();
~DefaultDownloadDelegate();
public:
virtual HRESULT STDMETHODCALLTYPE QueryInterface(_In_ REFIID riid, _COM_Outptr_ void** ppvObject);
virtual ULONG STDMETHODCALLTYPE AddRef();
virtual ULONG STDMETHODCALLTYPE Release();
virtual HRESULT STDMETHODCALLTYPE decideDestinationWithSuggestedFilename(_In_opt_ IWebDownload*, _In_ BSTR filename);
virtual HRESULT STDMETHODCALLTYPE didCancelAuthenticationChallenge(_In_opt_ IWebDownload*, _In_opt_ IWebURLAuthenticationChallenge*);
virtual HRESULT STDMETHODCALLTYPE didCreateDestination(_In_opt_ IWebDownload*, _In_ BSTR destination);
virtual HRESULT STDMETHODCALLTYPE didFailWithError(_In_opt_ IWebDownload*, _In_opt_ IWebError*);
virtual HRESULT STDMETHODCALLTYPE didReceiveAuthenticationChallenge(_In_opt_ IWebDownload*, _In_opt_ IWebURLAuthenticationChallenge*);
virtual HRESULT STDMETHODCALLTYPE didReceiveDataOfLength(_In_opt_ IWebDownload*, unsigned length);
virtual HRESULT STDMETHODCALLTYPE didReceiveResponse(_In_opt_ IWebDownload*, _In_opt_ IWebURLResponse*);
virtual HRESULT STDMETHODCALLTYPE shouldDecodeSourceDataOfMIMEType(_In_opt_ IWebDownload*, _In_ BSTR encodingType, _Out_ BOOL* shouldDecode);
virtual HRESULT STDMETHODCALLTYPE willResumeWithResponse(_In_opt_ IWebDownload*, _In_opt_ IWebURLResponse*, long long fromByte);
virtual HRESULT STDMETHODCALLTYPE willSendRequest(_In_opt_ IWebDownload*, _In_opt_ IWebMutableURLRequest*, _In_opt_ IWebURLResponse* redirectResponse, _COM_Outptr_opt_ IWebMutableURLRequest** finalRequest);
virtual HRESULT STDMETHODCALLTYPE didBegin(_In_opt_ IWebDownload*);
virtual HRESULT STDMETHODCALLTYPE didFinish(_In_opt_ IWebDownload*);
void registerDownload(IWebDownload*);
void unregisterDownload(IWebDownload*);
protected:
ULONG m_refCount { 0 };
HashSet<IWebDownload*> m_downloads;
};
#endif