class SecurityOrigin;
class ThreadableLoaderClient;
-class DocumentThreadableLoader FINAL : public ThreadableLoader, private ResourceOwner<RawResource> {
+class DocumentThreadableLoader final : public ThreadableLoader, private ResourceOwner<RawResource> {
WTF_MAKE_FAST_ALLOCATED;
public:
static void loadResourceSynchronously(Document&, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&, const ResourceLoaderOptions&);
static PassRefPtr<DocumentThreadableLoader> create(Document&, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&, const ResourceLoaderOptions&);
virtual ~DocumentThreadableLoader();
- virtual void overrideTimeout(unsigned long timeout) OVERRIDE;
+ virtual void overrideTimeout(unsigned long timeout) override;
- virtual void cancel() OVERRIDE;
+ virtual void cancel() override;
void setDefersLoading(bool);
private:
DocumentThreadableLoader(Document&, ThreadableLoaderClient*, BlockingBehavior, const ResourceRequest&, const ThreadableLoaderOptions&, const ResourceLoaderOptions&);
- // RawResourceClient implementation
- virtual void dataSent(Resource*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) OVERRIDE;
- virtual void responseReceived(Resource*, const ResourceResponse&) OVERRIDE;
- virtual void dataReceived(Resource*, const char* data, int dataLength) OVERRIDE;
- virtual void redirectReceived(Resource*, ResourceRequest&, const ResourceResponse&) OVERRIDE;
- virtual void notifyFinished(Resource*) OVERRIDE;
- virtual void dataDownloaded(Resource*, int) OVERRIDE;
+ // ResourceClient
+ void notifyFinished(Resource*) override;
+ // RawResourceClient
+ void dataSent(Resource*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override;
+ void responseReceived(Resource*, const ResourceResponse&, PassOwnPtr<WebDataConsumerHandle>) override;
+ void dataReceived(Resource*, const char* data, unsigned dataLength) override;
+ void redirectReceived(Resource*, ResourceRequest&, const ResourceResponse&) override;
+ void dataDownloaded(Resource*, int) override;
void cancelWithError(const ResourceError&);
- // Notify Inspector about resource response. Use this method if response is not going to be finished normally.
- void notifyResponseReceived(unsigned long identifier, const ResourceResponse&);
+ // Notify Inspector and log to console about resource response. Use
+ // this method if response is not going to be finished normally.
+ void reportResponseReceived(unsigned long identifier, const ResourceResponse&);
// Methods containing code to handle resource fetch results which is
// common to both sync and async mode.
- void handleResponse(unsigned long identifier, const ResourceResponse&);
- void handleReceivedData(const char* data, int dataLength);
+ void handleResponse(unsigned long identifier, const ResourceResponse&, PassOwnPtr<WebDataConsumerHandle>);
+ void handleReceivedData(const char* data, unsigned dataLength);
void handleSuccessfulFinish(unsigned long identifier, double finishTime);
void didTimeout(Timer<DocumentThreadableLoader>*);
+ // Calls the appropriate loading method according to policy and data
+ // about origin. Only for handling the initial load (including fallback
+ // after consulting ServiceWorker).
+ void dispatchInitialRequest(const ResourceRequest&);
void makeCrossOriginAccessRequest(const ResourceRequest&);
+ // Loads m_fallbackRequestForServiceWorker.
+ void loadFallbackRequestForServiceWorker();
// Loads m_actualRequest.
void loadActualRequest();
// Clears m_actualRequest and reports access control check failure to
void loadRequest(const ResourceRequest&, ResourceLoaderOptions);
bool isAllowedRedirect(const KURL&) const;
- bool isAllowedByPolicy(const KURL&) const;
+ bool isAllowedByContentSecurityPolicy(const KURL&) const;
// Returns DoNotAllowStoredCredentials
// if m_forceDoNotAllowStoredCredentials is set. Otherwise, just
// returns allowCredentials value of m_resourceLoaderOptions.
bool m_sameOriginRequest;
bool m_simpleRequest;
- bool m_async;
+ const bool m_async;
+
+ // Holds the original request for fallback in case the Service Worker
+ // does not respond.
+ OwnPtr<ResourceRequest> m_fallbackRequestForServiceWorker;
// Holds the original request and options for it during preflight
// request handling phase.
OwnPtr<ResourceRequest> m_actualRequest;