<style scoped>: Add runtime-flag
[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 #if ENABLE(FULLSCREEN_API)
74     static bool webkitFullScreenAPIEnabled() { return isFullScreenAPIEnabled; }
75     static void setWebkitFullScreenAPIEnabled(bool isEnabled) { isFullScreenAPIEnabled = isEnabled; }
76     static bool webkitRequestFullScreenEnabled() { return isFullScreenAPIEnabled; }
77     static bool webkitIsFullScreenEnabled() { return isFullScreenAPIEnabled; }
78     static bool webkitFullScreenKeyboardInputAllowedEnabled() { return isFullScreenAPIEnabled; }
79     static bool webkitCurrentFullScreenElementEnabled() { return isFullScreenAPIEnabled; }
80     static bool webkitCancelFullScreenEnabled() { return isFullScreenAPIEnabled; }
81 #endif
82
83 #if ENABLE(POINTER_LOCK)
84     static bool webkitPointerLockEnabled() { return isPointerLockEnabled; }
85     static void setWebkitPointerLockEnabled(bool isEnabled) { isPointerLockEnabled = isEnabled; }
86     static bool webkitPointerEnabled() { return isPointerLockEnabled; }
87     static bool webkitMovementXEnabled() { return isPointerLockEnabled; }
88     static bool webkitMovementYEnabled() { return isPointerLockEnabled; }
89 #endif
90
91 #if ENABLE(VIDEO)
92     static bool audioEnabled();
93     static bool htmlMediaElementEnabled();
94     static bool htmlAudioElementEnabled();
95     static bool htmlVideoElementEnabled();
96     static bool htmlSourceElementEnabled();
97     static bool mediaControllerEnabled();
98     static bool mediaErrorEnabled();
99     static bool timeRangesEnabled();
100 #endif
101
102 #if ENABLE(SHARED_WORKERS)
103     static bool sharedWorkerEnabled();
104 #endif
105
106 #if ENABLE(WEB_SOCKETS)
107     static bool webSocketEnabled();
108 #endif
109
110 #if ENABLE(SQL_DATABASE)
111     static bool openDatabaseEnabled();
112     static bool openDatabaseSyncEnabled();
113 #endif
114
115 #if ENABLE(WEB_AUDIO)
116     static void setWebkitAudioContextEnabled(bool isEnabled) { isWebAudioEnabled = isEnabled; }
117     static bool webkitAudioContextEnabled() { return isWebAudioEnabled; }
118 #endif
119
120     static void setPushStateEnabled(bool isEnabled) { isPushStateEnabled = isEnabled; }
121     static bool pushStateEnabled() { return isPushStateEnabled; }
122     static bool replaceStateEnabled() { return isPushStateEnabled; }
123
124 #if ENABLE(TOUCH_EVENTS)
125     static bool touchEnabled() { return isTouchEnabled; }
126     static void setTouchEnabled(bool isEnabled) { isTouchEnabled = isEnabled; }
127     static bool ontouchstartEnabled() { return isTouchEnabled; }
128     static bool ontouchmoveEnabled() { return isTouchEnabled; }
129     static bool ontouchendEnabled() { return isTouchEnabled; }
130     static bool ontouchcancelEnabled() { return isTouchEnabled; }
131     static bool createTouchEnabled() { return isTouchEnabled; }
132     static bool createTouchListEnabled() { return isTouchEnabled; }
133 #endif
134
135     static void setDeviceMotionEnabled(bool isEnabled) { isDeviceMotionEnabled = isEnabled; }
136     static bool deviceMotionEnabled() { return isDeviceMotionEnabled; }
137     static bool deviceMotionEventEnabled() { return isDeviceMotionEnabled; }
138     static bool ondevicemotionEnabled() { return isDeviceMotionEnabled; }
139     
140     static void setDeviceOrientationEnabled(bool isEnabled) { isDeviceOrientationEnabled = isEnabled; }
141     static bool deviceOrientationEnabled() { return isDeviceOrientationEnabled; }
142     static bool deviceOrientationEventEnabled() { return isDeviceOrientationEnabled; }
143     static bool ondeviceorientationEnabled() { return isDeviceOrientationEnabled; }
144
145     static void setSpeechInputEnabled(bool isEnabled) { isSpeechInputEnabled = isEnabled; }
146     static bool speechInputEnabled() { return isSpeechInputEnabled; }
147     static bool webkitSpeechEnabled() { return isSpeechInputEnabled; }
148     static bool webkitGrammarEnabled() { return isSpeechInputEnabled; }
149
150 #if ENABLE(XHR_RESPONSE_BLOB)
151     static bool xhrResponseBlobEnabled() { return isXHRResponseBlobEnabled; }
152     static void setXHRResponseBlobEnabled(bool isEnabled) { isXHRResponseBlobEnabled = isEnabled; }
153     static bool responseBlobEnabled() { return isXHRResponseBlobEnabled; }
154     static bool asBlobEnabled()  { return isXHRResponseBlobEnabled; }
155 #endif
156
157 #if ENABLE(FILE_SYSTEM)
158     static bool fileSystemEnabled();
159     static void setFileSystemEnabled(bool isEnabled) { isFileSystemEnabled = isEnabled; }
160 #endif
161
162 #if ENABLE(JAVASCRIPT_I18N_API)
163     static bool javaScriptI18NAPIEnabled();
164     static void setJavaScriptI18NAPIEnabled(bool isEnabled) { isJavaScriptI18NAPIEnabled = isEnabled; }
165 #endif
166
167 #if ENABLE(MEDIA_STREAM)
168     static bool mediaStreamEnabled() { return isMediaStreamEnabled; }
169     static void setMediaStreamEnabled(bool isEnabled) { isMediaStreamEnabled = isEnabled; }
170     static bool webkitGetUserMediaEnabled() { return isMediaStreamEnabled; }
171     static bool webkitPeerConnectionEnabled() { return isMediaStreamEnabled; }
172 #endif
173
174 #if ENABLE(GAMEPAD)
175     static void setWebkitGamepadsEnabled(bool isEnabled) { isGamepadEnabled = isEnabled; }
176     static bool webkitGamepadsEnabled() { return isGamepadEnabled; }
177 #endif
178
179 #if ENABLE(QUOTA)
180     static bool quotaEnabled() { return isQuotaEnabled; }
181     static void setQuotaEnabled(bool isEnabled) { isQuotaEnabled = isEnabled; }
182 #endif
183
184 #if ENABLE(MEDIA_SOURCE)
185     static bool webkitMediaSourceEnabled() { return isMediaSourceEnabled; }
186     static void setWebkitMediaSourceEnabled(bool isEnabled) { isMediaSourceEnabled = isEnabled; }
187 #endif
188
189 #if ENABLE(VIDEO_TRACK)
190     static bool webkitVideoTrackEnabled() { return isVideoTrackEnabled; }
191     static void setWebkitVideoTrackEnabled(bool isEnabled) { isVideoTrackEnabled = isEnabled; }
192 #endif
193
194 #if ENABLE(SHADOW_DOM)
195     static bool shadowDOMEnabled() { return isShadowDOMEnabled; }
196     static void setShadowDOMEnabled(bool isEnabled) { isShadowDOMEnabled = isEnabled; }
197
198     static bool multipleShadowSubtreesEnabled() { return isMultipleShadowSubtreesEnabled; }
199     static void setMultipleShadowSubtreesEnabled(bool isEnabled) { isMultipleShadowSubtreesEnabled = isEnabled; }
200 #endif
201
202 #if ENABLE(STYLE_SCOPED)
203     static bool styleScopedEnabled() { return isStyleScopedEnabled; }
204     static void setStyleScopedEnabled(bool isEnabled) { isStyleScopedEnabled = isEnabled; }
205 #endif
206
207 private:
208     // Never instantiate.
209     RuntimeEnabledFeatures() { }
210
211     static bool isLocalStorageEnabled;
212     static bool isSessionStorageEnabled;
213     static bool isWebkitNotificationsEnabled;
214     static bool isApplicationCacheEnabled;
215     static bool isDataTransferItemsEnabled;
216     static bool isGeolocationEnabled;
217     static bool isIndexedDBEnabled;
218     static bool isWebAudioEnabled;
219     static bool isPushStateEnabled;
220     static bool isTouchEnabled;
221     static bool isDeviceMotionEnabled;
222     static bool isDeviceOrientationEnabled;
223     static bool isSpeechInputEnabled;
224 #if ENABLE(XHR_RESPONSE_BLOB)
225     static bool isXHRResponseBlobEnabled;
226 #endif
227
228 #if ENABLE(FILE_SYSTEM)
229     static bool isFileSystemEnabled;
230 #endif
231
232 #if ENABLE(JAVASCRIPT_I18N_API)
233     static bool isJavaScriptI18NAPIEnabled;
234 #endif
235
236 #if ENABLE(MEDIA_STREAM)
237     static bool isMediaStreamEnabled;
238 #endif
239
240 #if ENABLE(GAMEPAD)
241     static bool isGamepadEnabled;
242 #endif
243
244 #if ENABLE(QUOTA)
245     static bool isQuotaEnabled;
246 #endif
247
248 #if ENABLE(FULLSCREEN_API)
249     static bool isFullScreenAPIEnabled;
250 #endif
251
252 #if ENABLE(POINTER_LOCK)
253     static bool isPointerLockEnabled;
254 #endif
255
256 #if ENABLE(MEDIA_SOURCE)
257     static bool isMediaSourceEnabled;
258 #endif
259
260 #if ENABLE(VIDEO_TRACK)
261     static bool isVideoTrackEnabled;
262 #endif
263
264 #if ENABLE(SHADOW_DOM)
265     static bool isShadowDOMEnabled;
266     static bool isMultipleShadowSubtreesEnabled;
267 #endif
268
269 #if ENABLE(STYLE_SCOPED)
270     static bool isStyleScopedEnabled;
271 #endif
272 };
273
274 } // namespace WebCore
275
276 #endif // RuntimeEnabledFeatures_h