Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / loader / DocumentThreadableLoader.h
index bf8a3ca..bb836d4 100644 (file)
@@ -51,16 +51,16 @@ class ResourceRequest;
 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:
@@ -71,27 +71,35 @@ class DocumentThreadableLoader FINAL : public ThreadableLoader, private Resource
 
         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
@@ -103,7 +111,7 @@ class DocumentThreadableLoader FINAL : public ThreadableLoader, private Resource
 
         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.
@@ -125,8 +133,12 @@ class DocumentThreadableLoader FINAL : public ThreadableLoader, private Resource
 
         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;