Allow encoding of small enum classes
[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 : uint8_t {
44     Use,
45     Download,
46     Ignore,
47     Suspend,
48 };
49
50 enum class ReloadOption : uint8_t {
51     ExpiredOnly = 1 << 0,
52     FromOrigin  = 1 << 1,
53     DisableContentBlockers = 1 << 2,
54 };
55
56 enum class FrameLoadType : uint8_t {
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 : uint8_t {
70     Suppress,
71     Allow
72 };
73
74 enum class NavigationType : uint8_t {
75     LinkClicked,
76     FormSubmitted,
77     BackForward,
78     Reload,
79     FormResubmitted,
80     Other
81 };
82
83 enum class ShouldOpenExternalURLsPolicy : uint8_t {
84     ShouldNotAllow,
85     ShouldAllowExternalSchemes,
86     ShouldAllow,
87 };
88
89 enum class InitiatedByMainFrame : uint8_t {
90     Yes,
91     Unknown,
92 };
93
94 enum ClearProvisionalItemPolicy {
95     ShouldClearProvisionalItem,
96     ShouldNotClearProvisionalItem
97 };
98
99 enum class ObjectContentType : uint8_t {
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 : uint8_t {
133     Yes,
134     No
135 };
136
137 enum class LockBackForwardList : uint8_t {
138     Yes,
139     No
140 };
141
142 enum class AllowNavigationToInvalidURL : uint8_t {
143     Yes,
144     No
145 };
146
147 enum class HasInsecureContent : uint8_t {
148     Yes,
149     No,
150 };
151
152
153 struct SystemPreviewInfo {
154     IntRect systemPreviewRect;
155     bool isSystemPreview { false };
156 };
157
158 enum class LoadCompletionType : uint8_t {
159     Finish,
160     Cancel
161 };
162
163 } // namespace WebCore
164
165 namespace WTF {
166
167 template<> struct EnumTraits<WebCore::PolicyAction> {
168     using values = EnumValues<
169         WebCore::PolicyAction,
170         WebCore::PolicyAction::Use,
171         WebCore::PolicyAction::Download,
172         WebCore::PolicyAction::Ignore,
173         WebCore::PolicyAction::Suspend
174     >;
175 };
176
177 template<> struct EnumTraits<WebCore::FrameLoadType> {
178     using values = EnumValues<
179         WebCore::FrameLoadType,
180         WebCore::FrameLoadType::Standard,
181         WebCore::FrameLoadType::Back,
182         WebCore::FrameLoadType::Forward,
183         WebCore::FrameLoadType::IndexedBackForward,
184         WebCore::FrameLoadType::Reload,
185         WebCore::FrameLoadType::Same,
186         WebCore::FrameLoadType::RedirectWithLockedBackForwardList,
187         WebCore::FrameLoadType::Replace,
188         WebCore::FrameLoadType::ReloadFromOrigin,
189         WebCore::FrameLoadType::ReloadExpiredOnly
190     >;
191 };
192
193 } // namespace WTF