Get rid of unnecessary null check in wrap(JSDOMGlobalObject*, DOMClass*)
[WebKit-https.git] / Source / WebCore / Modules / fetch / FetchOptions.h
1 /*
2  * Copyright (C) 2016 Canon Inc.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted, provided that the following conditions
6  * are required to be 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 Canon Inc. 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 CANON INC. 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 CANON INC. AND ITS CONTRIBUTORS BE LIABLE FOR
21  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
24  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #ifndef FetchOptions_h
30 #define FetchOptions_h
31
32 #if ENABLE(FETCH_API)
33
34 namespace WebCore {
35
36 class FetchOptions {
37 public:
38     enum class Type {
39         Default,
40         Audio,
41         Font,
42         Image,
43         Script,
44         Style,
45         Track,
46         Video
47     };
48     enum class Destination {
49         Default,
50         Document,
51         SharedWorker,
52         Subresource,
53         Unknown,
54         Worker
55     };
56     enum class Mode {
57         NoCors,
58         Navigate,
59         SameOrigin,
60         Cors
61     };
62     enum class Credentials {
63         Omit,
64         SameOrigin,
65         Include
66     };
67     enum class Cache {
68         Default,
69         NoStore,
70         Reload,
71         NoCache,
72         ForceCache,
73     };
74     enum class Redirect {
75         Follow,
76         Error,
77         Manual
78     };
79     enum class ReferrerPolicy {
80         Empty,
81         NoReferrer,
82         NoReferrerWhenDowngrade,
83         OriginOnly,
84         OriginWhenCrossOrigin,
85         UnsafeURL
86     };
87
88     FetchOptions() { }
89     FetchOptions(Type, Destination, Mode, Credentials, Cache, Redirect, ReferrerPolicy);
90
91     Type type() const { return m_type; }
92     Destination destination() const { return m_destination; }
93     Mode mode() const { return m_mode; }
94     Credentials credentials() const { return m_credentials; }
95     Cache cache() const { return m_cache; }
96     Redirect redirect() const { return m_redirect; }
97     ReferrerPolicy referrerPolicy() const { return m_referrerPolicy; }
98
99     void setType(Type type) { m_type = type; }
100     void setDestination(Destination destination) { m_destination = destination; }
101     void setMode(Mode mode) { m_mode = mode; }
102     void setCredentials(Credentials credentials) { m_credentials = credentials; }
103     void setCache(Cache cache) { m_cache = cache; }
104     void setRedirect(Redirect redirect) { m_redirect = redirect; }
105     void setReferrerPolicy(ReferrerPolicy referrerPolicy) { m_referrerPolicy = referrerPolicy; }
106
107 private:
108     Type m_type = Type::Default;
109     Destination m_destination = Destination::Default;
110     Mode m_mode = Mode::NoCors;
111     Credentials m_credentials = Credentials::Omit;
112     Cache m_cache = Cache::Default;
113     Redirect m_redirect = Redirect:: Follow;
114     ReferrerPolicy m_referrerPolicy = ReferrerPolicy::Empty;
115 };
116
117 inline FetchOptions::FetchOptions(Type type, Destination destination, Mode mode, Credentials credentials, Cache cache, Redirect redirect, ReferrerPolicy referrerPolicy)
118     : m_type(type)
119     , m_destination(destination)
120     , m_mode(mode)
121     , m_credentials(credentials)
122     , m_cache(cache)
123     , m_redirect(redirect)
124     , m_referrerPolicy(referrerPolicy)
125 {
126 }
127
128 } // namespace WebCore
129
130 #endif // ENABLE(FETCH_API)
131
132 #endif // FetchOptions_h