#ifndef WebDataSourceImpl_h
#define WebDataSourceImpl_h
#include "WebDataSource.h"
#include "WebPluginLoadObserver.h"
#include "core/loader/DocumentLoader.h"
#include "platform/exported/WrappedResourceRequest.h"
#include "platform/exported/WrappedResourceResponse.h"
#include "platform/weborigin/KURL.h"
#include "wtf/OwnPtr.h"
#include "wtf/PassOwnPtr.h"
#include "wtf/Vector.h"
namespace blink {
class WebPluginLoadObserver;
class WebDataSourceImpl FINAL : public WebCore::DocumentLoader, public WebDataSource {
public:
static PassRefPtr<WebDataSourceImpl> create(WebCore::LocalFrame*, const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
static WebDataSourceImpl* fromDocumentLoader(WebCore::DocumentLoader* loader)
{
return static_cast<WebDataSourceImpl*>(loader);
}
virtual const WebURLRequest& originalRequest() const OVERRIDE;
virtual const WebURLRequest& request() const OVERRIDE;
virtual const WebURLResponse& response() const OVERRIDE;
virtual bool hasUnreachableURL() const OVERRIDE;
virtual WebURL unreachableURL() const OVERRIDE;
virtual void appendRedirect(const WebURL&) OVERRIDE;
virtual void redirectChain(WebVector<WebURL>&) const OVERRIDE;
virtual bool isClientRedirect() const OVERRIDE;
virtual bool replacesCurrentHistoryItem() const OVERRIDE;
virtual WebNavigationType navigationType() const OVERRIDE;
virtual double triggeringEventTime() const OVERRIDE;
virtual ExtraData* extraData() const OVERRIDE;
virtual void setExtraData(ExtraData*) OVERRIDE;
virtual void setNavigationStartTime(double) OVERRIDE;
static WebNavigationType toWebNavigationType(WebCore::NavigationType type);
PassOwnPtr<WebPluginLoadObserver> releasePluginLoadObserver() { return m_pluginLoadObserver.release(); }
static void setNextPluginLoadObserver(PassOwnPtr<WebPluginLoadObserver>);
private:
WebDataSourceImpl(WebCore::LocalFrame*, const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
virtual ~WebDataSourceImpl();
mutable WrappedResourceRequest m_originalRequestWrapper;
mutable WrappedResourceRequest m_requestWrapper;
mutable WrappedResourceResponse m_responseWrapper;
OwnPtr<ExtraData> m_extraData;
OwnPtr<WebPluginLoadObserver> m_pluginLoadObserver;
};
}
#endif