8b47009c8a533b232e34b7324693c10879541e75
[WebKit-https.git] / Source / WebCore / bindings / generic / RuntimeEnabledFeatures.h
1 /*
2  * Copyright (C) 2009 Google 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 are
6  * met:
7  *
8  *     * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *     * Neither the name of Google Inc. nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #ifndef RuntimeEnabledFeatures_h
32 #define RuntimeEnabledFeatures_h
33
34 namespace WebCore {
35
36 // A class that stores static enablers for all experimental features. Note that
37 // the method names must line up with the JavaScript method they enable for code
38 // generation to work properly.
39
40 class RuntimeEnabledFeatures {
41 public:
42     static void setLocalStorageEnabled(bool isEnabled) { isLocalStorageEnabled = isEnabled; }
43     static bool localStorageEnabled() { return isLocalStorageEnabled; }
44
45     static void setSessionStorageEnabled(bool isEnabled) { isSessionStorageEnabled = isEnabled; }
46     static bool sessionStorageEnabled() { return isSessionStorageEnabled; }
47
48     static void setWebkitNotificationsEnabled(bool isEnabled) { isWebkitNotificationsEnabled = isEnabled; }
49     static bool webkitNotificationsEnabled() { return isWebkitNotificationsEnabled; }
50
51     static void setApplicationCacheEnabled(bool isEnabled) { isApplicationCacheEnabled = isEnabled; }
52     static bool applicationCacheEnabled() { return isApplicationCacheEnabled; }
53
54     static void setDataTransferItemsEnabled(bool isEnabled) { isDataTransferItemsEnabled = isEnabled; }
55     static bool dataTransferItemsEnabled() { return isDataTransferItemsEnabled; }
56
57     static void setGeolocationEnabled(bool isEnabled) { isGeolocationEnabled = isEnabled; }
58     static bool geolocationEnabled() { return isGeolocationEnabled; }
59
60     static void setWebkitIndexedDBEnabled(bool isEnabled) { isIndexedDBEnabled = isEnabled; }
61     static bool webkitIndexedDBEnabled() { return isIndexedDBEnabled; }
62     static bool webkitIDBCursorEnabled() { return isIndexedDBEnabled; }
63     static bool webkitIDBDatabaseEnabled() { return isIndexedDBEnabled; }
64     static bool webkitIDBDatabaseErrorEnabled() { return isIndexedDBEnabled; }
65     static bool webkitIDBDatabaseExceptionEnabled() { return isIndexedDBEnabled; }
66     static bool webkitIDBFactoryEnabled() { return isIndexedDBEnabled; }
67     static bool webkitIDBIndexEnabled() { return isIndexedDBEnabled; }
68     static bool webkitIDBKeyRangeEnabled() { return isIndexedDBEnabled; }
69     static bool webkitIDBObjectStoreEnabled() { return isIndexedDBEnabled; }
70     static bool webkitIDBRequestEnabled() { return isIndexedDBEnabled; }
71     static bool webkitIDBTransactionEnabled() { return isIndexedDBEnabled; }
72
73     static void setCSSExclusionsEnabled(bool isEnabled) { isCSSExclusionsEnabled = isEnabled; }
74     static bool cssExclusionsEnabled() { return isCSSExclusionsEnabled; }
75
76 #if ENABLE(FULLSCREEN_API)
77     // Mozilla version
78     static bool webkitFullScreenAPIEnabled() { return isFullScreenAPIEnabled; }
79     static void setWebkitFullScreenAPIEnabled(bool isEnabled) { isFullScreenAPIEnabled = isEnabled; }
80     static bool webkitRequestFullScreenEnabled() { return isFullScreenAPIEnabled; }
81     static bool webkitIsFullScreenEnabled() { return isFullScreenAPIEnabled; }
82     static bool webkitFullScreenKeyboardInputAllowedEnabled() { return isFullScreenAPIEnabled; }
83     static bool webkitCurrentFullScreenElementEnabled() { return isFullScreenAPIEnabled; }
84     static bool webkitCancelFullScreenEnabled() { return isFullScreenAPIEnabled; }
85
86     // W3C version
87     static bool webkitFullscreenEnabledEnabled() { return isFullScreenAPIEnabled; }
88     static bool webkitFullscreenElementEnabled() { return isFullScreenAPIEnabled; }
89     static bool webkitExitFullscreenEnabled() { return isFullScreenAPIEnabled; }
90     static bool webkitRequestFullscreenEnabled() { return isFullScreenAPIEnabled; }
91 #endif
92
93 #if ENABLE(POINTER_LOCK)
94     static bool webkitPointerLockEnabled() { return isPointerLockEnabled; }
95     static void setWebkitPointerLockEnabled(bool isEnabled) { isPointerLockEnabled = isEnabled; }
96     static bool webkitPointerEnabled() { return isPointerLockEnabled; }
97     static bool webkitMovementXEnabled() { return isPointerLockEnabled; }
98     static bool webkitMovementYEnabled() { return isPointerLockEnabled; }
99 #endif
100
101 #if ENABLE(VIDEO)
102     static bool audioEnabled();
103     static bool htmlMediaElementEnabled();
104     static bool htmlAudioElementEnabled();
105     static bool htmlVideoElementEnabled();
106     static bool htmlSourceElementEnabled();
107     static bool mediaControllerEnabled();
108     static bool mediaErrorEnabled();
109     static bool timeRangesEnabled();
110 #endif
111
112 #if ENABLE(SHARED_WORKERS)
113     static bool sharedWorkerEnabled();
114 #endif
115
116 #if ENABLE(WEB_SOCKETS)
117     static bool webSocketEnabled();
118 #endif
119
120 #if ENABLE(SQL_DATABASE)
121     static bool openDatabaseEnabled();
122     static bool openDatabaseSyncEnabled();
123 #endif
124
125 #if ENABLE(WEB_AUDIO)
126     static void setWebkitAudioContextEnabled(bool isEnabled) { isWebAudioEnabled = isEnabled; }
127     static bool webkitAudioContextEnabled() { return isWebAudioEnabled; }
128 #endif
129
130     static void setPushStateEnabled(bool isEnabled) { isPushStateEnabled = isEnabled; }
131     static bool pushStateEnabled() { return isPushStateEnabled; }
132     static bool replaceStateEnabled() { return isPushStateEnabled; }
133
134 #if ENABLE(TOUCH_EVENTS)
135     static bool touchEnabled() { return isTouchEnabled; }
136     static void setTouchEnabled(bool isEnabled) { isTouchEnabled = isEnabled; }
137     static bool ontouchstartEnabled() { return isTouchEnabled; }
138     static bool ontouchmoveEnabled() { return isTouchEnabled; }
139     static bool ontouchendEnabled() { return isTouchEnabled; }
140     static bool ontouchcancelEnabled() { return isTouchEnabled; }
141     static bool createTouchEnabled() { return isTouchEnabled; }
142     static bool createTouchListEnabled() { return isTouchEnabled; }
143 #endif
144
145     static void setDeviceMotionEnabled(bool isEnabled) { isDeviceMotionEnabled = isEnabled; }
146     static bool deviceMotionEnabled() { return isDeviceMotionEnabled; }
147     static bool deviceMotionEventEnabled() { return isDeviceMotionEnabled; }
148     static bool ondevicemotionEnabled() { return isDeviceMotionEnabled; }
149     
150     static void setDeviceOrientationEnabled(bool isEnabled) { isDeviceOrientationEnabled = isEnabled; }
151     static bool deviceOrientationEnabled() { return isDeviceOrientationEnabled; }
152     static bool deviceOrientationEventEnabled() { return isDeviceOrientationEnabled; }
153     static bool ondeviceorientationEnabled() { return isDeviceOrientationEnabled; }
154
155     static void setSpeechInputEnabled(bool isEnabled) { isSpeechInputEnabled = isEnabled; }
156     static bool speechInputEnabled() { return isSpeechInputEnabled; }
157     static bool webkitSpeechEnabled() { return isSpeechInputEnabled; }
158     static bool webkitGrammarEnabled() { return isSpeechInputEnabled; }
159
160 #if ENABLE(SCRIPTED_SPEECH)
161     static void setScriptedSpeechEnabled(bool isEnabled) { isScriptedSpeechEnabled = isEnabled; }
162     static bool scriptedSpeechEnabled() { return isScriptedSpeechEnabled; }
163     static bool webkitSpeechRecognitionEnabled() { return isScriptedSpeechEnabled; }
164     static bool webkitSpeechRecognitionErrorEnabled() { return isScriptedSpeechEnabled; }
165     static bool webkitSpeechRecognitionEventEnabled() { return isScriptedSpeechEnabled; }
166     static bool webkitSpeechGrammarEnabled() { return isScriptedSpeechEnabled; }
167     static bool webkitSpeechGrammarListEnabled() { return isScriptedSpeechEnabled; }
168 #endif
169
170 #if ENABLE(XHR_RESPONSE_BLOB)
171     static bool xhrResponseBlobEnabled() { return isXHRResponseBlobEnabled; }
172     static void setXHRResponseBlobEnabled(bool isEnabled) { isXHRResponseBlobEnabled = isEnabled; }
173     static bool responseBlobEnabled() { return isXHRResponseBlobEnabled; }
174     static bool asBlobEnabled()  { return isXHRResponseBlobEnabled; }
175 #endif
176
177 #if ENABLE(FILE_SYSTEM)
178     static bool fileSystemEnabled();
179     static void setFileSystemEnabled(bool isEnabled) { isFileSystemEnabled = isEnabled; }
180 #endif
181
182 #if ENABLE(JAVASCRIPT_I18N_API)
183     static bool javaScriptI18NAPIEnabled();
184     static void setJavaScriptI18NAPIEnabled(bool isEnabled) { isJavaScriptI18NAPIEnabled = isEnabled; }
185 #endif
186
187 #if ENABLE(MEDIA_STREAM)
188     static bool mediaStreamEnabled() { return isMediaStreamEnabled; }
189     static void setMediaStreamEnabled(bool isEnabled) { isMediaStreamEnabled = isEnabled; }
190     static bool webkitGetUserMediaEnabled() { return isMediaStreamEnabled; }
191     static bool webkitMediaStreamEnabled() { return isMediaStreamEnabled; }
192
193     static bool peerConnectionEnabled() { return isMediaStreamEnabled && isPeerConnectionEnabled; }
194     static void setPeerConnectionEnabled(bool isEnabled) { isPeerConnectionEnabled = isEnabled; }
195     static bool webkitDeprecatedPeerConnectionEnabled() { return peerConnectionEnabled(); }
196     static bool webkitPeerConnection00Enabled() { return peerConnectionEnabled(); }
197 #endif
198
199 #if ENABLE(GAMEPAD)
200     static void setWebkitGamepadsEnabled(bool isEnabled) { isGamepadEnabled = isEnabled; }
201     static bool webkitGamepadsEnabled() { return isGamepadEnabled; }
202 #endif
203
204 #if ENABLE(QUOTA)
205     static bool quotaEnabled() { return isQuotaEnabled; }
206     static void setQuotaEnabled(bool isEnabled) { isQuotaEnabled = isEnabled; }
207 #endif
208
209 #if ENABLE(MEDIA_SOURCE)
210     static bool mediaSourceEnabled() { return isMediaSourceEnabled; }
211     static void setMediaSourceEnabled(bool isEnabled) { isMediaSourceEnabled = isEnabled; }
212 #endif
213
214 #if ENABLE(ENCRYPTED_MEDIA)
215     static bool encryptedMediaEnabled() { return isEncryptedMediaEnabled; }
216     static void setEncryptedMediaEnabled(bool isEnabled) { isEncryptedMediaEnabled = isEnabled; }
217 #endif
218
219 #if ENABLE(VIDEO_TRACK)
220     static bool webkitVideoTrackEnabled() { return isVideoTrackEnabled; }
221     static void setWebkitVideoTrackEnabled(bool isEnabled) { isVideoTrackEnabled = isEnabled; }
222 #endif
223
224 #if ENABLE(SHADOW_DOM)
225     static bool shadowDOMEnabled() { return isShadowDOMEnabled; }
226     static void setShadowDOMEnabled(bool isEnabled) { isShadowDOMEnabled = isEnabled; }
227 #endif
228
229 #if ENABLE(STYLE_SCOPED)
230     static bool styleScopedEnabled() { return isStyleScopedEnabled; }
231     static void setStyleScopedEnabled(bool isEnabled) { isStyleScopedEnabled = isEnabled; }
232 #endif
233
234 #if ENABLE(INPUT_TYPE_DATE)
235     static bool inputTypeDateEnabled() { return isInputTypeDateEnabled; }
236     static void setInputTypeDateEnabled(bool isEnabled) { isInputTypeDateEnabled = isEnabled; }
237 #endif
238
239 private:
240     // Never instantiate.
241     RuntimeEnabledFeatures() { }
242
243     static bool isLocalStorageEnabled;
244     static bool isSessionStorageEnabled;
245     static bool isWebkitNotificationsEnabled;
246     static bool isApplicationCacheEnabled;
247     static bool isDataTransferItemsEnabled;
248     static bool isGeolocationEnabled;
249     static bool isIndexedDBEnabled;
250     static bool isWebAudioEnabled;
251     static bool isPushStateEnabled;
252     static bool isTouchEnabled;
253     static bool isDeviceMotionEnabled;
254     static bool isDeviceOrientationEnabled;
255     static bool isSpeechInputEnabled;
256     static bool isCSSExclusionsEnabled;
257 #if ENABLE(SCRIPTED_SPEECH)
258     static bool isScriptedSpeechEnabled;
259 #endif
260 #if ENABLE(XHR_RESPONSE_BLOB)
261     static bool isXHRResponseBlobEnabled;
262 #endif
263
264 #if ENABLE(FILE_SYSTEM)
265     static bool isFileSystemEnabled;
266 #endif
267
268 #if ENABLE(JAVASCRIPT_I18N_API)
269     static bool isJavaScriptI18NAPIEnabled;
270 #endif
271
272 #if ENABLE(MEDIA_STREAM)
273     static bool isMediaStreamEnabled;
274     static bool isPeerConnectionEnabled;
275 #endif
276
277 #if ENABLE(GAMEPAD)
278     static bool isGamepadEnabled;
279 #endif
280
281 #if ENABLE(QUOTA)
282     static bool isQuotaEnabled;
283 #endif
284
285 #if ENABLE(FULLSCREEN_API)
286     static bool isFullScreenAPIEnabled;
287 #endif
288
289 #if ENABLE(POINTER_LOCK)
290     static bool isPointerLockEnabled;
291 #endif
292
293 #if ENABLE(MEDIA_SOURCE)
294     static bool isMediaSourceEnabled;
295 #endif
296
297 #if ENABLE(ENCRYPTED_MEDIA)
298     static bool isEncryptedMediaEnabled;
299 #endif
300
301 #if ENABLE(VIDEO_TRACK)
302     static bool isVideoTrackEnabled;
303 #endif
304
305 #if ENABLE(SHADOW_DOM)
306     static bool isShadowDOMEnabled;
307 #endif
308
309 #if ENABLE(STYLE_SCOPED)
310     static bool isStyleScopedEnabled;
311 #endif
312
313 #if ENABLE(INPUT_TYPE_DATE)
314     static bool isInputTypeDateEnabled;
315 #endif
316 };
317
318 } // namespace WebCore
319
320 #endif // RuntimeEnabledFeatures_h