Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / loader / DocumentLoader.h
index 713d3d1..f0af67c 100644 (file)
@@ -33,6 +33,7 @@
 #include "core/fetch/RawResource.h"
 #include "core/fetch/ResourceLoaderOptions.h"
 #include "core/fetch/ResourcePtr.h"
+#include "core/frame/csp/ContentSecurityPolicy.h"
 #include "core/loader/DocumentLoadTiming.h"
 #include "core/loader/DocumentWriter.h"
 #include "core/loader/NavigationAction.h"
@@ -47,23 +48,15 @@ namespace blink {
 class WebThreadedDataReceiver;
 }
 
-namespace WTF {
-class SchedulePair;
-}
-
-namespace WebCore {
+namespace blink {
     class ApplicationCacheHost;
-    class ArchiveResource;
     class ArchiveResourceCollection;
     class ResourceFetcher;
-    class ContentFilter;
-    class FormState;
+    class DocumentInit;
     class LocalFrame;
     class FrameLoader;
     class MHTMLArchive;
-    class Page;
     class ResourceLoader;
-    class SharedBuffer;
 
     class DocumentLoader : public RefCounted<DocumentLoader>, private RawResourceClient {
         WTF_MAKE_FAST_ALLOCATED;
@@ -80,7 +73,7 @@ namespace WebCore {
 
         unsigned long mainResourceIdentifier() const;
 
-        void replaceDocument(const String& source, Document*);
+        void replaceDocumentWhileExecutingJavaScriptURL(const DocumentInit&, const String& source, Document*);
 
         const AtomicString& mimeType() const;
 
@@ -100,7 +93,7 @@ namespace WebCore {
 
         const AtomicString& responseMIMEType() const;
 
-        void updateForSameDocumentNavigation(const KURL&);
+        void updateForSameDocumentNavigation(const KURL&, SameDocumentNavigationSource);
         void stopLoading();
         bool isCommitted() const { return m_committed; }
         bool isLoading() const;
@@ -111,16 +104,13 @@ namespace WebCore {
         void setIsClientRedirect(bool isClientRedirect) { m_isClientRedirect = isClientRedirect; }
         bool replacesCurrentHistoryItem() const { return m_replacesCurrentHistoryItem; }
         void setReplacesCurrentHistoryItem(bool replacesCurrentHistoryItem) { m_replacesCurrentHistoryItem = replacesCurrentHistoryItem; }
-        const AtomicString& overrideEncoding() const { return m_overrideEncoding; }
 
         bool scheduleArchiveLoad(Resource*, const ResourceRequest&);
 
-        bool shouldContinueForNavigationPolicy(const ResourceRequest&);
+        bool shouldContinueForNavigationPolicy(const ResourceRequest&, ContentSecurityPolicyCheck shouldCheckMainWorldContentSecurityPolicy, bool isTransitionNavigation = false);
         const NavigationAction& triggeringAction() const { return m_triggeringAction; }
         void setTriggeringAction(const NavigationAction& action) { m_triggeringAction = action; }
 
-        void setOverrideEncoding(const AtomicString& encoding) { m_overrideEncoding = encoding; }
-
         void setDefersLoading(bool);
 
         void startLoadingMainResource();
@@ -135,13 +125,15 @@ namespace WebCore {
         void clearRedirectChain();
         void appendRedirect(const KURL&);
 
+        PassRefPtr<ContentSecurityPolicy> releaseContentSecurityPolicy() { return m_contentSecurityPolicy.release(); }
+
     protected:
         DocumentLoader(LocalFrame*, const ResourceRequest&, const SubstituteData&);
 
         Vector<KURL> m_redirectChain;
 
     private:
-        static PassRefPtr<DocumentWriter> createWriterFor(LocalFrame*, const Document* ownerDocument, const KURL&, const AtomicString& mimeType, const AtomicString& encoding, bool userChosen, bool dispatch);
+        static PassRefPtrWillBeRawPtr<DocumentWriter> createWriterFor(const Document* ownerDocument, const DocumentInit&, const AtomicString& mimeType, const AtomicString& encoding, bool dispatch);
 
         void ensureWriter(const AtomicString& mimeType, const KURL& overridingURL = KURL());
         void endWriting(DocumentWriter*);
@@ -164,11 +156,12 @@ namespace WebCore {
         void willSendRequest(ResourceRequest&, const ResourceResponse&);
         void finishedLoading(double finishTime);
         void mainReceivedError(const ResourceError&);
-        virtual void redirectReceived(Resource*, ResourceRequest&, const ResourceResponse&) OVERRIDE FINAL;
-        virtual void updateRequest(Resource*, const ResourceRequest&) OVERRIDE FINAL;
-        virtual void responseReceived(Resource*, const ResourceResponse&) OVERRIDE FINAL;
-        virtual void dataReceived(Resource*, const char* data, int length) OVERRIDE FINAL;
-        virtual void notifyFinished(Resource*) OVERRIDE FINAL;
+        void cancelLoadAfterXFrameOptionsOrCSPDenied(const ResourceResponse&);
+        virtual void redirectReceived(Resource*, ResourceRequest&, const ResourceResponse&) override final;
+        virtual void updateRequest(Resource*, const ResourceRequest&) override final;
+        virtual void responseReceived(Resource*, const ResourceResponse&, PassOwnPtr<WebDataConsumerHandle>) override final;
+        virtual void dataReceived(Resource*, const char* data, unsigned length) override final;
+        virtual void notifyFinished(Resource*) override final;
 
         bool maybeLoadEmpty();
 
@@ -181,7 +174,7 @@ namespace WebCore {
 
         ResourcePtr<RawResource> m_mainResource;
 
-        RefPtr<DocumentWriter> m_writer;
+        RefPtrWillBePersistent<DocumentWriter> m_writer;
 
         // A reference to actual request used to create the data source.
         // The only part of this request that should change is the url, and
@@ -203,14 +196,12 @@ namespace WebCore {
         bool m_isClientRedirect;
         bool m_replacesCurrentHistoryItem;
 
-        AtomicString m_overrideEncoding;
-
         // The action that triggered loading - we keep this around for the
         // benefit of the various policy handlers.
         NavigationAction m_triggeringAction;
 
-        OwnPtr<ArchiveResourceCollection> m_archiveResourceCollection;
-        RefPtr<MHTMLArchive> m_archive;
+        OwnPtrWillBePersistent<ArchiveResourceCollection> m_archiveResourceCollection;
+        RefPtrWillBePersistent<MHTMLArchive> m_archive;
 
         bool m_loadingMainResource;
         DocumentLoadTiming m_documentLoadTiming;
@@ -218,7 +209,9 @@ namespace WebCore {
         double m_timeOfLastDataReceived;
 
         friend class ApplicationCacheHost;  // for substitute resource delivery
-        OwnPtr<ApplicationCacheHost> m_applicationCacheHost;
+        OwnPtrWillBePersistent<ApplicationCacheHost> m_applicationCacheHost;
+
+        RefPtr<ContentSecurityPolicy> m_contentSecurityPolicy;
     };
 }