Remove the code guarded by STYLE_SCOPED
[WebKit-https.git] / Source / WebCore / bindings / generic / RuntimeEnabledFeatures.cpp
1 /*
2  * Copyright (C) 2009 Google Inc. All rights reserved.
3  * Copyright (C) 2013 Apple Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  *     * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *     * Redistributions in binary form must reproduce the above
12  * copyright notice, this list of conditions and the following disclaimer
13  * in the documentation and/or other materials provided with the
14  * distribution.
15  *     * Neither the name of Google Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31
32 #include "config.h"
33 #include "RuntimeEnabledFeatures.h"
34
35 #include "DatabaseManager.h"
36 #include "MediaPlayer.h"
37 #include "SharedWorkerRepository.h"
38 #include "WebSocket.h"
39 #include <wtf/NeverDestroyed.h>
40
41 #if ENABLE(FILE_SYSTEM)
42 #include "AsyncFileSystem.h"
43 #endif
44
45 namespace WebCore {
46
47 RuntimeEnabledFeatures::RuntimeEnabledFeatures()
48     : m_isLocalStorageEnabled(true)
49     , m_isSessionStorageEnabled(true)
50     , m_isWebkitNotificationsEnabled(false)
51     , m_isApplicationCacheEnabled(true)
52     , m_isDataTransferItemsEnabled(true)
53     , m_isGeolocationEnabled(true)
54     , m_isIndexedDBEnabled(false)
55     , m_isTouchEnabled(true)
56     , m_isDeviceMotionEnabled(true)
57     , m_isDeviceOrientationEnabled(true)
58     , m_isSpeechInputEnabled(true)
59     , m_isCanvasPathEnabled(false)
60     , m_isCSSExclusionsEnabled(true)
61     , m_isCSSShapesEnabled(true)
62     , m_isCSSRegionsEnabled(false)
63     , m_isCSSCompositingEnabled(false)
64     , m_isLangAttributeAwareFormControlUIEnabled(false)
65 #if ENABLE(SCRIPTED_SPEECH)
66     , m_isScriptedSpeechEnabled(false)
67 #endif
68 #if ENABLE(MEDIA_STREAM)
69     , m_isMediaStreamEnabled(true)
70     , m_isPeerConnectionEnabled(true)
71 #endif
72 #if ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
73     , m_isLegacyCSSVendorPrefixesEnabled(false)
74 #endif
75 #if ENABLE(GAMEPAD)
76     , m_isGamepadEnabled(false)
77 #endif
78 #if ENABLE(FILE_SYSTEM)
79     , m_isFileSystemEnabled(false)
80 #endif
81 #if ENABLE(JAVASCRIPT_I18N_API)
82     , m_isJavaScriptI18NAPIEnabled(false)
83 #endif
84 #if ENABLE(QUOTA)
85     , m_isQuotaEnabled(false)
86 #endif
87 #if ENABLE(FULLSCREEN_API)
88     , m_isFullScreenAPIEnabled(true)
89 #endif
90 #if ENABLE(MEDIA_SOURCE)
91     , m_isMediaSourceEnabled(false)
92 #endif
93 #if ENABLE(ENCRYPTED_MEDIA)
94     , m_isEncryptedMediaEnabled(false)
95 #endif
96 #if ENABLE(VIDEO_TRACK)
97 #if PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(EFL) || PLATFORM(BLACKBERRY) || PLATFORM(WIN) || PLATFORM(QT)
98     , m_isVideoTrackEnabled(true)
99 #else
100     , m_isVideoTrackEnabled(false)
101 #endif
102 #endif
103 #if ENABLE(SHADOW_DOM)
104     , m_isShadowDOMEnabled(false)
105     , m_isAuthorShadowDOMForAnyElementEnabled(false)
106 #endif
107 #if ENABLE(CUSTOM_ELEMENTS)
108     , m_isCustomDOMElementsEnabled(false)
109 #endif
110 #if ENABLE(INPUT_TYPE_DATE)
111     , m_isInputTypeDateEnabled(true)
112 #endif
113 #if ENABLE(INPUT_TYPE_DATETIME_INCOMPLETE)
114     , m_isInputTypeDateTimeEnabled(false)
115 #endif
116 #if ENABLE(INPUT_TYPE_DATETIMELOCAL)
117     , m_isInputTypeDateTimeLocalEnabled(true)
118 #endif
119 #if ENABLE(INPUT_TYPE_MONTH)
120     , m_isInputTypeMonthEnabled(true)
121 #endif
122 #if ENABLE(INPUT_TYPE_TIME)
123     , m_isInputTypeTimeEnabled(true)
124 #endif
125 #if ENABLE(INPUT_TYPE_WEEK)
126     , m_isInputTypeWeekEnabled(true)
127 #endif
128 #if ENABLE(CSP_NEXT)
129     , m_areExperimentalContentSecurityPolicyFeaturesEnabled(false)
130 #endif
131 #if ENABLE(IFRAME_SEAMLESS)
132     , m_areSeamlessIFramesEnabled(false)
133 #endif
134 #if ENABLE(FONT_LOAD_EVENTS)
135     , m_isFontLoadEventsEnabled(false)
136 #endif
137 {
138 }
139
140 RuntimeEnabledFeatures& RuntimeEnabledFeatures::sharedFeatures()
141 {
142     static NeverDestroyed<RuntimeEnabledFeatures> runtimeEnabledFeatures;
143
144     return runtimeEnabledFeatures;
145 }
146
147 #if ENABLE(FILE_SYSTEM)
148 bool RuntimeEnabledFeatures::fileSystemEnabled()
149 {
150     return m_isFileSystemEnabled && AsyncFileSystem::isAvailable();
151 }
152 #endif
153
154 #if ENABLE(JAVASCRIPT_I18N_API)
155 bool RuntimeEnabledFeatures::javaScriptI18NAPIEnabled()
156 {
157     return m_isJavaScriptI18NAPIEnabled;
158 }
159 #endif
160
161 #if ENABLE(VIDEO)
162 bool RuntimeEnabledFeatures::audioEnabled() const
163 {
164     return MediaPlayer::isAvailable();
165 }
166
167 bool RuntimeEnabledFeatures::htmlMediaElementEnabled() const
168 {
169     return MediaPlayer::isAvailable();
170 }
171
172 bool RuntimeEnabledFeatures::htmlAudioElementEnabled() const
173 {
174     return MediaPlayer::isAvailable();
175 }
176
177 bool RuntimeEnabledFeatures::htmlVideoElementEnabled() const
178 {
179     return MediaPlayer::isAvailable();
180 }
181
182 bool RuntimeEnabledFeatures::htmlSourceElementEnabled() const
183 {
184     return MediaPlayer::isAvailable();
185 }
186
187 bool RuntimeEnabledFeatures::mediaControllerEnabled() const
188 {
189     return MediaPlayer::isAvailable();
190 }
191
192 bool RuntimeEnabledFeatures::mediaErrorEnabled() const
193 {
194     return MediaPlayer::isAvailable();
195 }
196
197 bool RuntimeEnabledFeatures::timeRangesEnabled() const
198 {
199     return MediaPlayer::isAvailable();
200 }
201 #endif
202
203 #if ENABLE(SHARED_WORKERS)
204 bool RuntimeEnabledFeatures::sharedWorkerEnabled() const
205 {
206     return SharedWorkerRepository::isAvailable();
207 }
208 #endif
209
210 #if ENABLE(WEB_SOCKETS)
211 bool RuntimeEnabledFeatures::webSocketEnabled() const
212 {
213     return WebSocket::isAvailable();
214 }
215 #endif
216
217 #if ENABLE(SQL_DATABASE)
218 bool RuntimeEnabledFeatures::openDatabaseEnabled() const
219 {
220     return DatabaseManager::manager().isAvailable();
221 }
222
223 bool RuntimeEnabledFeatures::openDatabaseSyncEnabled() const
224 {
225     return DatabaseManager::manager().isAvailable();
226 }
227 #endif
228
229 } // namespace WebCore