#ifndef WebResource_h
#define WebResource_h
#include "WebKit.h"
#include <WebCore/COMPtr.h>
#include <WebCore/URL.h>
#include <WebCore/ResourceResponse.h>
#include <WebCore/SharedBuffer.h>
#include <wtf/PassRefPtr.h>
#include <wtf/text/WTFString.h>
class WebResource : public IWebResource {
public:
static WebResource* createInstance(PassRefPtr<WebCore::SharedBuffer> data, const WebCore::ResourceResponse& response);
protected:
WebResource(IStream* data, const WebCore::URL& url, const WTF::String& mimeType, const WTF::String& textEncodingName, const WTF::String& frameName);
~WebResource();
public:
virtual HRESULT STDMETHODCALLTYPE QueryInterface(_In_ REFIID riid, _COM_Outptr_ void** ppvObject);
virtual ULONG STDMETHODCALLTYPE AddRef();
virtual ULONG STDMETHODCALLTYPE Release();
virtual HRESULT STDMETHODCALLTYPE initWithData(_In_opt_ IStream* data, _In_ BSTR url, _In_ BSTR mimeType, _In_ BSTR textEncodingName, _In_ BSTR frameName);
virtual HRESULT STDMETHODCALLTYPE data(_COM_Outptr_opt_ IStream** data);
virtual HRESULT STDMETHODCALLTYPE URL(__deref_opt_out BSTR* url);
virtual HRESULT STDMETHODCALLTYPE MIMEType(__deref_opt_out BSTR* mime);
virtual HRESULT STDMETHODCALLTYPE textEncodingName(__deref_opt_out BSTR* encodingName);
virtual HRESULT STDMETHODCALLTYPE frameName(__deref_opt_out BSTR* name);
private:
ULONG m_refCount { 0 };
COMPtr<IStream> m_data;
WebCore::URL m_url;
WTF::String m_mimeType;
WTF::String m_textEncodingName;
WTF::String m_frameName;
};
#endif