#ifndef WebDataSource_H
#define WebDataSource_H
#include "WebKit.h"
#include <WebCore/COMPtr.h>
#include <wtf/RefPtr.h>
class WebDocumentLoader;
class WebMutableURLRequest;
extern const GUID IID_WebDataSource;
class WebDataSource : public IWebDataSource, public IWebDataSourcePrivate
{
public:
static WebDataSource* createInstance(WebDocumentLoader*);
protected:
WebDataSource(WebDocumentLoader*);
~WebDataSource();
public:
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
virtual ULONG STDMETHODCALLTYPE AddRef(void);
virtual ULONG STDMETHODCALLTYPE Release(void);
virtual HRESULT STDMETHODCALLTYPE initWithRequest(
IWebURLRequest *request);
virtual HRESULT STDMETHODCALLTYPE data(
IStream **stream);
virtual HRESULT STDMETHODCALLTYPE representation(
IWebDocumentRepresentation **rep);
virtual HRESULT STDMETHODCALLTYPE webFrame(
IWebFrame **frame);
virtual HRESULT STDMETHODCALLTYPE initialRequest(
IWebURLRequest **request);
virtual HRESULT STDMETHODCALLTYPE request(
IWebMutableURLRequest **request);
virtual HRESULT STDMETHODCALLTYPE response(
IWebURLResponse **response);
virtual HRESULT STDMETHODCALLTYPE textEncodingName(
BSTR *name);
virtual HRESULT STDMETHODCALLTYPE isLoading(
BOOL *loading);
virtual HRESULT STDMETHODCALLTYPE pageTitle(
BSTR *title);
virtual HRESULT STDMETHODCALLTYPE unreachableURL(
BSTR *url);
virtual HRESULT STDMETHODCALLTYPE webArchive(
IWebArchive **archive);
virtual HRESULT STDMETHODCALLTYPE mainResource(
IWebResource **resource);
virtual HRESULT STDMETHODCALLTYPE subresources(
IEnumVARIANT **enumResources);
virtual HRESULT STDMETHODCALLTYPE subresourceForURL(
BSTR url,
IWebResource **resource);
virtual HRESULT STDMETHODCALLTYPE addSubresource(
IWebResource *subresource);
virtual HRESULT STDMETHODCALLTYPE overrideEncoding(
BSTR *encoding);
virtual HRESULT STDMETHODCALLTYPE setOverrideEncoding(
BSTR encoding);
virtual HRESULT STDMETHODCALLTYPE mainDocumentError(
IWebError** error);
virtual HRESULT STDMETHODCALLTYPE setDeferMainResourceDataLoad(
BOOL flag);
WebDocumentLoader* documentLoader() const;
protected:
ULONG m_refCount;
RefPtr<WebDocumentLoader> m_loader;
COMPtr<IWebDocumentRepresentation> m_representation;
};
#endif