9a053031b85f691299413cb3dfbbe3c4ddc51d11
[WebKit-https.git] / Source / WebCore / loader / FrameLoadRequest.h
1 /*
2  * Copyright (C) 2003-2017 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #pragma once
27
28 #include "FrameLoaderTypes.h"
29 #include "ResourceRequest.h"
30 #include "SubstituteData.h"
31 #include <wtf/Forward.h>
32
33 namespace WebCore {
34
35 class Document;
36 class Frame;
37 class SecurityOrigin;
38
39 class FrameLoadRequest {
40 public:
41     WEBCORE_EXPORT FrameLoadRequest(Document&, SecurityOrigin&, const ResourceRequest&, const String& frameName, LockHistory, LockBackForwardList, ShouldSendReferrer, AllowNavigationToInvalidURL, NewFrameOpenerPolicy, ShouldOpenExternalURLsPolicy, NavigationInitiatedByMainFrame, ShouldReplaceDocumentIfJavaScriptURL = ReplaceDocumentIfJavaScriptURL, const AtomicString& downloadAttribute = { });
42     WEBCORE_EXPORT FrameLoadRequest(Frame&, const ResourceRequest&, ShouldOpenExternalURLsPolicy, const SubstituteData& = SubstituteData());
43
44     WEBCORE_EXPORT ~FrameLoadRequest();
45
46     WEBCORE_EXPORT FrameLoadRequest(FrameLoadRequest&&);
47     WEBCORE_EXPORT FrameLoadRequest& operator=(FrameLoadRequest&&);
48
49     bool isEmpty() const { return m_resourceRequest.isEmpty(); }
50
51     Document& requester();
52     const SecurityOrigin& requesterSecurityOrigin() const;
53
54     ResourceRequest& resourceRequest() { return m_resourceRequest; }
55     const ResourceRequest& resourceRequest() const { return m_resourceRequest; }
56
57     const String& frameName() const { return m_frameName; }
58     void setFrameName(const String& frameName) { m_frameName = frameName; }
59
60     void setShouldCheckNewWindowPolicy(bool checkPolicy) { m_shouldCheckNewWindowPolicy = checkPolicy; }
61     bool shouldCheckNewWindowPolicy() const { return m_shouldCheckNewWindowPolicy; }
62
63     const SubstituteData& substituteData() const { return m_substituteData; }
64     void setSubstituteData(const SubstituteData& data) { m_substituteData = data; }
65     bool hasSubstituteData() { return m_substituteData.isValid(); }
66
67     LockHistory lockHistory() const { return m_lockHistory; }
68     LockBackForwardList lockBackForwardList() const { return m_lockBackForwardList; }
69     ShouldSendReferrer shouldSendReferrer() const { return m_shouldSendReferrer; }
70     AllowNavigationToInvalidURL allowNavigationToInvalidURL() const { return m_allowNavigationToInvalidURL; }
71     NewFrameOpenerPolicy newFrameOpenerPolicy() const { return m_newFrameOpenerPolicy; }
72
73     // The shouldReplaceDocumentIfJavaScriptURL parameter will go away when the FIXME to eliminate the
74     // corresponding parameter from ScriptController::executeIfJavaScriptURL() is addressed.
75     ShouldReplaceDocumentIfJavaScriptURL shouldReplaceDocumentIfJavaScriptURL() const { return m_shouldReplaceDocumentIfJavaScriptURL; }
76
77     void setShouldOpenExternalURLsPolicy(ShouldOpenExternalURLsPolicy policy) { m_shouldOpenExternalURLsPolicy = policy; }
78     ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy() const { return m_shouldOpenExternalURLsPolicy; }
79
80     const AtomicString& downloadAttribute() const { return m_downloadAttribute; }
81
82     NavigationInitiatedByMainFrame navigationInitiatedByMainFrame() const { return m_navigationInitiatedByMainFrame; }
83
84 private:
85     Ref<Document> m_requester;
86     Ref<SecurityOrigin> m_requesterSecurityOrigin;
87     ResourceRequest m_resourceRequest;
88     String m_frameName;
89     SubstituteData m_substituteData;
90
91     bool m_shouldCheckNewWindowPolicy { false };
92     LockHistory m_lockHistory;
93     LockBackForwardList m_lockBackForwardList;
94     ShouldSendReferrer m_shouldSendReferrer;
95     AllowNavigationToInvalidURL m_allowNavigationToInvalidURL;
96     NewFrameOpenerPolicy m_newFrameOpenerPolicy;
97     ShouldReplaceDocumentIfJavaScriptURL m_shouldReplaceDocumentIfJavaScriptURL;
98     ShouldOpenExternalURLsPolicy m_shouldOpenExternalURLsPolicy { ShouldOpenExternalURLsPolicy::ShouldNotAllow };
99     AtomicString m_downloadAttribute;
100     NavigationInitiatedByMainFrame m_navigationInitiatedByMainFrame { NavigationInitiatedByMainFrame::Unknown };
101 };
102
103 } // namespace WebCore