WebDataSourceImpl.h [plain text]
#ifndef WebDataSourceImpl_h
#define WebDataSourceImpl_h
#include "DocumentLoader.h"
#include "KURL.h"
#include "WebDataSource.h"
#include "WebPluginLoadObserver.h"
#include "WrappedResourceRequest.h"
#include "WrappedResourceResponse.h"
#include <wtf/OwnPtr.h>
#include <wtf/PassOwnPtr.h>
#include <wtf/Vector.h>
namespace WebKit {
class WebPluginLoadObserver;
class WebDataSourceImpl : public WebCore::DocumentLoader, public WebDataSource {
public:
static PassRefPtr<WebDataSourceImpl> create(const WebCore::ResourceRequest&,
const WebCore::SubstituteData&);
static WebDataSourceImpl* fromDocumentLoader(WebCore::DocumentLoader* loader)
{
return static_cast<WebDataSourceImpl*>(loader);
}
virtual const WebURLRequest& originalRequest() const;
virtual const WebURLRequest& request() const;
virtual const WebURLResponse& response() const;
virtual bool hasUnreachableURL() const;
virtual WebURL unreachableURL() const;
virtual void redirectChain(WebVector<WebURL>&) const;
virtual WebString pageTitle() const;
virtual WebTextDirection pageTitleDirection() const;
virtual WebNavigationType navigationType() const;
virtual double triggeringEventTime() const;
virtual ExtraData* extraData() const;
virtual void setExtraData(ExtraData*);
virtual WebApplicationCacheHost* applicationCacheHost();
virtual void setDeferMainResourceDataLoad(bool);
virtual void setNavigationStartTime(double);
static WebNavigationType toWebNavigationType(WebCore::NavigationType type);
bool hasRedirectChain() const { return !m_redirectChain.isEmpty(); }
bool isRedirect() const { return m_redirectChain.size() > 1; }
const WebCore::KURL& endOfRedirectChain() const;
void clearRedirectChain();
void appendRedirect(const WebCore::KURL& url);
PassOwnPtr<WebPluginLoadObserver> releasePluginLoadObserver() { return m_pluginLoadObserver.release(); }
static void setNextPluginLoadObserver(PassOwnPtr<WebPluginLoadObserver>);
private:
WebDataSourceImpl(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
~WebDataSourceImpl();
mutable WrappedResourceRequest m_originalRequestWrapper;
mutable WrappedResourceRequest m_requestWrapper;
mutable WrappedResourceResponse m_responseWrapper;
Vector<WebCore::KURL> m_redirectChain;
OwnPtr<ExtraData> m_extraData;
OwnPtr<WebPluginLoadObserver> m_pluginLoadObserver;
};
}
#endif // WebDataSourceImpl_h