bd183913b598871e3fa64a57c0c6564642876b06
[WebKit-https.git] / Source / WebCore / loader / FrameLoaderTypes.h
1 /*
2  * Copyright (C) 2006-2016 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  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer. 
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution. 
13  * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission. 
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #pragma once
30
31 #include "IntRect.h"
32
33 namespace WebCore {
34
35 enum FrameState {
36     FrameStateProvisional,
37     // This state indicates we are ready to commit to a page,
38     // which means the view will transition to use the new data source.
39     FrameStateCommittedPage,
40     FrameStateComplete
41 };
42
43 enum class PolicyAction {
44     Use,
45     Download,
46     Ignore,
47     Suspend,
48 };
49
50 enum class ReloadOption {
51     ExpiredOnly = 1 << 0,
52     FromOrigin  = 1 << 1,
53     DisableContentBlockers = 1 << 2,
54 };
55
56 enum class FrameLoadType {
57     Standard,
58     Back,
59     Forward,
60     IndexedBackForward, // a multi-item hop in the backforward list
61     Reload,
62     Same, // user loads same URL again (but not reload button)
63     RedirectWithLockedBackForwardList, // FIXME: Merge "lockBackForwardList", "lockHistory", "quickRedirect" and "clientRedirect" into a single concept of redirect.
64     Replace,
65     ReloadFromOrigin,
66     ReloadExpiredOnly
67 };
68
69 enum class NewFrameOpenerPolicy {
70     Suppress,
71     Allow
72 };
73
74 enum class NavigationType {
75     LinkClicked,
76     FormSubmitted,
77     BackForward,
78     Reload,
79     FormResubmitted,
80     Other
81 };
82
83 enum class ShouldOpenExternalURLsPolicy {
84     ShouldNotAllow,
85     ShouldAllowExternalSchemes,
86     ShouldAllow,
87 };
88
89 enum class InitiatedByMainFrame {
90     Yes,
91     Unknown,
92 };
93
94 enum ClearProvisionalItemPolicy {
95     ShouldClearProvisionalItem,
96     ShouldNotClearProvisionalItem
97 };
98
99 enum class ObjectContentType {
100     None,
101     Image,
102     Frame,
103     PlugIn,
104 };
105
106 enum UnloadEventPolicy {
107     UnloadEventPolicyNone,
108     UnloadEventPolicyUnloadOnly,
109     UnloadEventPolicyUnloadAndPageHide
110 };
111
112 enum ShouldSendReferrer {
113     MaybeSendReferrer,
114     NeverSendReferrer
115 };
116
117 // Passed to FrameLoader::urlSelected() and ScriptController::executeIfJavaScriptURL()
118 // to control whether, in the case of a JavaScript URL, executeIfJavaScriptURL() should
119 // replace the document. It is a FIXME to eliminate this extra parameter from
120 // executeIfJavaScriptURL(), in which case this enum can go away.
121 enum ShouldReplaceDocumentIfJavaScriptURL {
122     ReplaceDocumentIfJavaScriptURL,
123     DoNotReplaceDocumentIfJavaScriptURL
124 };
125
126 enum WebGLLoadPolicy {
127     WebGLBlockCreation,
128     WebGLAllowCreation,
129     WebGLPendingCreation
130 };
131
132 enum class LockHistory {
133     Yes,
134     No
135 };
136
137 enum class LockBackForwardList {
138     Yes,
139     No
140 };
141
142 enum class AllowNavigationToInvalidURL {
143     Yes,
144     No
145 };
146
147 enum class HasInsecureContent {
148     Yes,
149     No,
150 };
151
152
153 struct SystemPreviewInfo {
154     IntRect systemPreviewRect;
155     bool isSystemPreview { false };
156 };
157
158 enum class LoadCompletionType {
159     Finish,
160     Cancel
161 };
162
163 } // namespace WebCore
164
165 namespace WTF {
166
167 template<typename> struct EnumTraits;
168 template<typename E, E...> struct EnumValues;
169
170 template<> struct EnumTraits<WebCore::PolicyAction> {
171     using values = EnumValues<
172         WebCore::PolicyAction,
173         WebCore::PolicyAction::Use,
174         WebCore::PolicyAction::Download,
175         WebCore::PolicyAction::Ignore,
176         WebCore::PolicyAction::Suspend
177     >;
178 };
179
180 template<> struct EnumTraits<WebCore::FrameLoadType> {
181     using values = EnumValues<
182         WebCore::FrameLoadType,
183         WebCore::FrameLoadType::Standard,
184         WebCore::FrameLoadType::Back,
185         WebCore::FrameLoadType::Forward,
186         WebCore::FrameLoadType::IndexedBackForward,
187         WebCore::FrameLoadType::Reload,
188         WebCore::FrameLoadType::Same,
189         WebCore::FrameLoadType::RedirectWithLockedBackForwardList,
190         WebCore::FrameLoadType::Replace,
191         WebCore::FrameLoadType::ReloadFromOrigin,
192         WebCore::FrameLoadType::ReloadExpiredOnly
193     >;
194 };
195
196 } // namespace WTF