#ifndef WebArchive_h
#define WebArchive_h
#include "WebKit.h"
#include <wtf/RefPtr.h>
namespace WebCore {
class LegacyWebArchive;
}
class WebArchive : public IWebArchive
{
public:
static WebArchive* createInstance();
static WebArchive* createInstance(RefPtr<WebCore::LegacyWebArchive>&&);
protected:
WebArchive(RefPtr<WebCore::LegacyWebArchive>&&);
~WebArchive();
public:
virtual HRESULT STDMETHODCALLTYPE QueryInterface(_In_ REFIID riid, _COM_Outptr_ void** ppvObject);
virtual ULONG STDMETHODCALLTYPE AddRef();
virtual ULONG STDMETHODCALLTYPE Release();
virtual HRESULT STDMETHODCALLTYPE initWithMainResource(_In_opt_ IWebResource* mainResource,
__inout_ecount_full(cSubResources) IWebResource** subResources, int cSubResources,
__inout_ecount_full(cSubFrameArchives) IWebArchive** subFrameArchives, int cSubFrameArchives);
virtual HRESULT STDMETHODCALLTYPE initWithData(_In_opt_ IStream*);
virtual HRESULT STDMETHODCALLTYPE initWithNode(_In_opt_ IDOMNode*);
virtual HRESULT STDMETHODCALLTYPE mainResource(_COM_Outptr_opt_ IWebResource**);
virtual HRESULT STDMETHODCALLTYPE subResources(_COM_Outptr_opt_ IEnumVARIANT**);
virtual HRESULT STDMETHODCALLTYPE subframeArchives(_COM_Outptr_opt_ IEnumVARIANT**);
virtual HRESULT STDMETHODCALLTYPE data(_COM_Outptr_opt_ IStream**);
protected:
ULONG m_refCount { 0 };
RefPtr<WebCore::LegacyWebArchive> m_archive;
};
#endif // WebArchive_h