Source/WebCore: Remove ENABLE_CSS_COMPOSITING guards around -webkit-background-blend...
[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 #include "PlatformExportMacros.h"
35
36 namespace WebCore {
37
38 // A class that stores static enablers for all experimental features. Note that
39 // the method names must line up with the JavaScript method they enable for code
40 // generation to work properly.
41
42 class RuntimeEnabledFeatures {
43 public:
44     static void setLocalStorageEnabled(bool isEnabled) { isLocalStorageEnabled = isEnabled; }
45     static bool localStorageEnabled() { return isLocalStorageEnabled; }
46
47     static void setSessionStorageEnabled(bool isEnabled) { isSessionStorageEnabled = isEnabled; }
48     static bool sessionStorageEnabled() { return isSessionStorageEnabled; }
49
50     static void setWebkitNotificationsEnabled(bool isEnabled) { isWebkitNotificationsEnabled = isEnabled; }
51     static bool webkitNotificationsEnabled() { return isWebkitNotificationsEnabled; }
52
53     static void setApplicationCacheEnabled(bool isEnabled) { isApplicationCacheEnabled = isEnabled; }
54     static bool applicationCacheEnabled() { return isApplicationCacheEnabled; }
55
56     static void setDataTransferItemsEnabled(bool isEnabled) { isDataTransferItemsEnabled = isEnabled; }
57     static bool dataTransferItemsEnabled() { return isDataTransferItemsEnabled; }
58
59     static void setGeolocationEnabled(bool isEnabled) { isGeolocationEnabled = isEnabled; }
60     static bool geolocationEnabled() { return isGeolocationEnabled; }
61
62     static void setWebkitIndexedDBEnabled(bool isEnabled) { isIndexedDBEnabled = isEnabled; }
63     static bool webkitIndexedDBEnabled() { return isIndexedDBEnabled; }
64     static bool indexedDBEnabled() { return isIndexedDBEnabled; }
65
66 #if ENABLE(CANVAS_PATH)
67     static void setCanvasPathEnabled(bool isEnabled) { isCanvasPathEnabled = isEnabled; }
68     static bool canvasPathEnabled() { return isCanvasPathEnabled; }
69 #else
70     static void setCanvasPathEnabled(bool) { }
71     static bool canvasPathEnabled() { return false; }
72 #endif
73
74 #if ENABLE(CSS_EXCLUSIONS)
75     static void setCSSExclusionsEnabled(bool isEnabled) { isCSSExclusionsEnabled = isEnabled; }
76     static bool cssExclusionsEnabled() { return isCSSExclusionsEnabled; }
77 #else
78     static void setCSSExclusionsEnabled(bool) { }
79     static bool cssExclusionsEnabled() { return false; }
80 #endif
81
82 #if ENABLE(CSS_SHAPES)
83     static void setCSSShapesEnabled(bool isEnabled) { isCSSShapesEnabled = isEnabled; }
84     static bool cssShapesEnabled() { return isCSSShapesEnabled; }
85 #else
86     static void setCSSShapesEnabled(bool) { }
87     static bool cssShapesEnabled() { return false; }
88 #endif
89
90 #if ENABLE(CSS_REGIONS)
91     static void setCSSRegionsEnabled(bool isEnabled) { isCSSRegionsEnabled = isEnabled; }
92     static bool cssRegionsEnabled() { return isCSSRegionsEnabled; }
93 #else
94     static void setCSSRegionsEnabled(bool) { }
95     static bool cssRegionsEnabled() { return false; }
96 #endif
97
98     static void setCSSCompositingEnabled(bool isEnabled) { isCSSCompositingEnabled = isEnabled; }
99     static bool cssCompositingEnabled() { return isCSSCompositingEnabled; }
100
101 #if ENABLE(FONT_LOAD_EVENTS)
102     static void setFontLoadEventsEnabled(bool isEnabled) { isFontLoadEventsEnabled = isEnabled; }
103     static bool fontLoadEventsEnabled() { return isFontLoadEventsEnabled; }
104 #else
105     static void setFontLoadEventsEnabled(bool) { }
106     static bool fontLoadEventsEnabled() { return false; }
107 #endif
108
109 #if ENABLE(FULLSCREEN_API)
110     // Mozilla version
111     static bool webkitFullScreenAPIEnabled() { return isFullScreenAPIEnabled; }
112     static void setWebkitFullScreenAPIEnabled(bool isEnabled) { isFullScreenAPIEnabled = isEnabled; }
113     static bool webkitRequestFullScreenEnabled() { return isFullScreenAPIEnabled; }
114     static bool webkitIsFullScreenEnabled() { return isFullScreenAPIEnabled; }
115     static bool webkitFullScreenKeyboardInputAllowedEnabled() { return isFullScreenAPIEnabled; }
116     static bool webkitCurrentFullScreenElementEnabled() { return isFullScreenAPIEnabled; }
117     static bool webkitCancelFullScreenEnabled() { return isFullScreenAPIEnabled; }
118
119     // W3C version
120     static bool webkitFullscreenEnabledEnabled() { return isFullScreenAPIEnabled; }
121     static bool webkitFullscreenElementEnabled() { return isFullScreenAPIEnabled; }
122     static bool webkitExitFullscreenEnabled() { return isFullScreenAPIEnabled; }
123     static bool webkitRequestFullscreenEnabled() { return isFullScreenAPIEnabled; }
124 #endif
125
126 #if ENABLE(VIDEO)
127     static bool audioEnabled();
128     static bool htmlMediaElementEnabled();
129     static bool htmlAudioElementEnabled();
130     static bool htmlVideoElementEnabled();
131     static bool htmlSourceElementEnabled();
132     static bool mediaControllerEnabled();
133     static bool mediaErrorEnabled();
134     static bool timeRangesEnabled();
135 #endif
136
137 #if ENABLE(SHARED_WORKERS)
138     static bool sharedWorkerEnabled();
139 #endif
140
141 #if ENABLE(WEB_SOCKETS)
142     static bool webSocketEnabled();
143 #endif
144
145 #if ENABLE(SQL_DATABASE)
146     static bool openDatabaseEnabled();
147     static bool openDatabaseSyncEnabled();
148 #endif
149
150 #if ENABLE(TOUCH_EVENTS)
151     static bool touchEnabled() { return isTouchEnabled; }
152     static void setTouchEnabled(bool isEnabled) { isTouchEnabled = isEnabled; }
153 #endif
154
155     static void setDeviceMotionEnabled(bool isEnabled) { isDeviceMotionEnabled = isEnabled; }
156     static bool deviceMotionEnabled() { return isDeviceMotionEnabled; }
157     static bool deviceMotionEventEnabled() { return isDeviceMotionEnabled; }
158     static bool ondevicemotionEnabled() { return isDeviceMotionEnabled; }
159
160     static void setDeviceOrientationEnabled(bool isEnabled) { isDeviceOrientationEnabled = isEnabled; }
161     static bool deviceOrientationEnabled() { return isDeviceOrientationEnabled; }
162     static bool deviceOrientationEventEnabled() { return isDeviceOrientationEnabled; }
163     static bool ondeviceorientationEnabled() { return isDeviceOrientationEnabled; }
164
165     static void setSpeechInputEnabled(bool isEnabled) { isSpeechInputEnabled = isEnabled; }
166     static bool speechInputEnabled() { return isSpeechInputEnabled; }
167     static bool webkitSpeechEnabled() { return isSpeechInputEnabled; }
168     static bool webkitGrammarEnabled() { return isSpeechInputEnabled; }
169
170 #if ENABLE(SCRIPTED_SPEECH)
171     static void setScriptedSpeechEnabled(bool isEnabled) { isScriptedSpeechEnabled = isEnabled; }
172     static bool scriptedSpeechEnabled() { return isScriptedSpeechEnabled; }
173     static bool webkitSpeechRecognitionEnabled() { return isScriptedSpeechEnabled; }
174     static bool webkitSpeechRecognitionErrorEnabled() { return isScriptedSpeechEnabled; }
175     static bool webkitSpeechRecognitionEventEnabled() { return isScriptedSpeechEnabled; }
176     static bool webkitSpeechGrammarEnabled() { return isScriptedSpeechEnabled; }
177     static bool webkitSpeechGrammarListEnabled() { return isScriptedSpeechEnabled; }
178 #endif
179
180 #if ENABLE(FILE_SYSTEM)
181     static bool fileSystemEnabled();
182     static void setFileSystemEnabled(bool isEnabled) { isFileSystemEnabled = isEnabled; }
183 #endif
184
185 #if ENABLE(JAVASCRIPT_I18N_API)
186     static bool javaScriptI18NAPIEnabled();
187     static void setJavaScriptI18NAPIEnabled(bool isEnabled) { isJavaScriptI18NAPIEnabled = isEnabled; }
188 #endif
189
190 #if ENABLE(MEDIA_STREAM)
191     static bool mediaStreamEnabled() { return isMediaStreamEnabled; }
192     static void setMediaStreamEnabled(bool isEnabled) { isMediaStreamEnabled = isEnabled; }
193     static bool webkitGetUserMediaEnabled() { return isMediaStreamEnabled; }
194     static bool webkitMediaStreamEnabled() { return isMediaStreamEnabled; }
195
196     static bool peerConnectionEnabled() { return isMediaStreamEnabled && isPeerConnectionEnabled; }
197     static void setPeerConnectionEnabled(bool isEnabled) { isPeerConnectionEnabled = isEnabled; }
198     static bool webkitRTCPeerConnectionEnabled() { return peerConnectionEnabled(); }
199 #endif
200
201 #if ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
202     static void setLegacyCSSVendorPrefixesEnabled(bool isEnabled) { isLegacyCSSVendorPrefixesEnabled = isEnabled; }
203     static bool legacyCSSVendorPrefixesEnabled() { return isLegacyCSSVendorPrefixesEnabled; }
204 #endif
205
206 #if ENABLE(GAMEPAD)
207     static void setWebkitGetGamepadsEnabled(bool isEnabled) { isGamepadEnabled = isEnabled; }
208     static bool webkitGetGamepadsEnabled() { return isGamepadEnabled; }
209 #endif
210
211 #if ENABLE(QUOTA)
212     static bool quotaEnabled() { return isQuotaEnabled; }
213     static void setQuotaEnabled(bool isEnabled) { isQuotaEnabled = isEnabled; }
214 #endif
215
216 #if ENABLE(MEDIA_SOURCE)
217     static bool mediaSourceEnabled() { return isMediaSourceEnabled; }
218     static void setMediaSourceEnabled(bool isEnabled) { isMediaSourceEnabled = isEnabled; }
219 #endif
220
221 #if ENABLE(ENCRYPTED_MEDIA)
222     static bool encryptedMediaEnabled() { return isEncryptedMediaEnabled; }
223     static void setEncryptedMediaEnabled(bool isEnabled) { isEncryptedMediaEnabled = isEnabled; }
224 #endif
225
226 #if ENABLE(VIDEO_TRACK)
227     static bool webkitVideoTrackEnabled() { return isVideoTrackEnabled; }
228     static void setWebkitVideoTrackEnabled(bool isEnabled) { isVideoTrackEnabled = isEnabled; }
229 #endif
230
231 #if ENABLE(SHADOW_DOM)
232     static bool shadowDOMEnabled() { return isShadowDOMEnabled; }
233     static void setShadowDOMEnabled(bool isEnabled) { isShadowDOMEnabled = isEnabled; }
234
235     static bool authorShadowDOMForAnyElementEnabled() { return isAuthorShadowDOMForAnyElementEnabled; }
236     static void setAuthorShadowDOMForAnyElementEnabled(bool isEnabled) { isAuthorShadowDOMForAnyElementEnabled = isEnabled; }
237 #endif
238
239 #if ENABLE(CUSTOM_ELEMENTS)
240     static bool customDOMElementsEnabled() { return isCustomDOMElementsEnabled; }
241     static void setCustomDOMElements(bool isEnabled) { isCustomDOMElementsEnabled = isEnabled; }
242 #endif
243
244 #if ENABLE(STYLE_SCOPED)
245     static bool styleScopedEnabled() { return isStyleScopedEnabled; }
246     static void setStyleScopedEnabled(bool isEnabled) { isStyleScopedEnabled = isEnabled; }
247 #endif
248
249 #if ENABLE(INPUT_TYPE_DATE)
250     static bool inputTypeDateEnabled() { return isInputTypeDateEnabled; }
251     static void setInputTypeDateEnabled(bool isEnabled) { isInputTypeDateEnabled = isEnabled; }
252 #endif
253
254 #if ENABLE(INPUT_TYPE_DATETIME_INCOMPLETE)
255     static bool inputTypeDateTimeEnabled() { return isInputTypeDateTimeEnabled; }
256     static void setInputTypeDateTimeEnabled(bool isEnabled) { isInputTypeDateTimeEnabled = isEnabled; }
257 #endif
258
259 #if ENABLE(INPUT_TYPE_DATETIMELOCAL)
260     static bool inputTypeDateTimeLocalEnabled() { return isInputTypeDateTimeLocalEnabled; }
261     static void setInputTypeDateTimeLocalEnabled(bool isEnabled) { isInputTypeDateTimeLocalEnabled = isEnabled; }
262 #endif
263
264 #if ENABLE(INPUT_TYPE_MONTH)
265     static bool inputTypeMonthEnabled() { return isInputTypeMonthEnabled; }
266     static void setInputTypeMonthEnabled(bool isEnabled) { isInputTypeMonthEnabled = isEnabled; }
267 #endif
268
269 #if ENABLE(INPUT_TYPE_TIME)
270     static bool inputTypeTimeEnabled() { return isInputTypeTimeEnabled; }
271     static void setInputTypeTimeEnabled(bool isEnabled) { isInputTypeTimeEnabled = isEnabled; }
272 #endif
273
274 #if ENABLE(INPUT_TYPE_WEEK)
275     static bool inputTypeWeekEnabled() { return isInputTypeWeekEnabled; }
276     static void setInputTypeWeekEnabled(bool isEnabled) { isInputTypeWeekEnabled = isEnabled; }
277 #endif
278
279 #if ENABLE(DIALOG_ELEMENT)
280     static bool dialogElementEnabled() { return isDialogElementEnabled; }
281     static void setDialogElementEnabled(bool isEnabled) { isDialogElementEnabled = isEnabled; }
282 #endif
283
284 #if ENABLE(CSP_NEXT)
285     static bool experimentalContentSecurityPolicyFeaturesEnabled() { return areExperimentalContentSecurityPolicyFeaturesEnabled; }
286     static void setExperimentalContentSecurityPolicyFeaturesEnabled(bool isEnabled) { areExperimentalContentSecurityPolicyFeaturesEnabled = isEnabled; }
287 #endif
288
289 #if ENABLE(IFRAME_SEAMLESS)
290     static bool seamlessIFramesEnabled() { return areSeamlessIFramesEnabled; }
291     static void setSeamlessIFramesEnabled(bool isEnabled) { areSeamlessIFramesEnabled = isEnabled; }
292 #endif
293
294     static bool langAttributeAwareFormControlUIEnabled() { return isLangAttributeAwareFormControlUIEnabled; }
295     // The lang attribute support is incomplete and should only be turned on for tests.
296     static void setLangAttributeAwareFormControlUIEnabled(bool isEnabled) { isLangAttributeAwareFormControlUIEnabled = isEnabled; }
297
298 private:
299     // Never instantiate.
300     RuntimeEnabledFeatures() { }
301
302     static bool isLocalStorageEnabled;
303     static bool isSessionStorageEnabled;
304     static bool isWebkitNotificationsEnabled;
305     static bool isApplicationCacheEnabled;
306     static bool isDataTransferItemsEnabled;
307     static bool isGeolocationEnabled;
308     static bool isIndexedDBEnabled;
309     static bool isTouchEnabled;
310     static bool isDeviceMotionEnabled;
311     static bool isDeviceOrientationEnabled;
312     static bool isSpeechInputEnabled;
313     static bool isCanvasPathEnabled;
314     static bool isCSSExclusionsEnabled;
315     static bool isCSSShapesEnabled;
316     static bool isCSSRegionsEnabled;
317     static bool isCSSCompositingEnabled;
318     WEBCORE_TESTING static bool isLangAttributeAwareFormControlUIEnabled;
319 #if ENABLE(SCRIPTED_SPEECH)
320     static bool isScriptedSpeechEnabled;
321 #endif
322 #if ENABLE(FILE_SYSTEM)
323     static bool isFileSystemEnabled;
324 #endif
325
326 #if ENABLE(JAVASCRIPT_I18N_API)
327     static bool isJavaScriptI18NAPIEnabled;
328 #endif
329
330 #if ENABLE(MEDIA_STREAM)
331     static bool isMediaStreamEnabled;
332     static bool isPeerConnectionEnabled;
333 #endif
334
335 #if ENABLE(GAMEPAD)
336     static bool isGamepadEnabled;
337 #endif
338
339 #if ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
340     static bool isLegacyCSSVendorPrefixesEnabled;
341 #endif
342
343 #if ENABLE(QUOTA)
344     static bool isQuotaEnabled;
345 #endif
346
347 #if ENABLE(FULLSCREEN_API)
348     static bool isFullScreenAPIEnabled;
349 #endif
350
351 #if ENABLE(MEDIA_SOURCE)
352     static bool isMediaSourceEnabled;
353 #endif
354
355 #if ENABLE(ENCRYPTED_MEDIA)
356     static bool isEncryptedMediaEnabled;
357 #endif
358
359 #if ENABLE(VIDEO_TRACK)
360     static bool isVideoTrackEnabled;
361 #endif
362
363 #if ENABLE(SHADOW_DOM)
364     static bool isShadowDOMEnabled;
365
366     static bool isAuthorShadowDOMForAnyElementEnabled;
367 #endif
368
369 #if ENABLE(CUSTOM_ELEMENTS)
370     static bool isCustomDOMElementsEnabled;
371 #endif
372
373 #if ENABLE(STYLE_SCOPED)
374     static bool isStyleScopedEnabled;
375 #endif
376
377 #if ENABLE(INPUT_TYPE_DATE)
378     static bool isInputTypeDateEnabled;
379 #endif
380
381 #if ENABLE(INPUT_TYPE_DATETIME_INCOMPLETE)
382     static bool isInputTypeDateTimeEnabled;
383 #endif
384
385 #if ENABLE(INPUT_TYPE_DATETIMELOCAL)
386     static bool isInputTypeDateTimeLocalEnabled;
387 #endif
388
389 #if ENABLE(INPUT_TYPE_MONTH)
390     static bool isInputTypeMonthEnabled;
391 #endif
392
393 #if ENABLE(INPUT_TYPE_TIME)
394     static bool isInputTypeTimeEnabled;
395 #endif
396
397 #if ENABLE(INPUT_TYPE_WEEK)
398     static bool isInputTypeWeekEnabled;
399 #endif
400
401 #if ENABLE(DIALOG_ELEMENT)
402     static bool isDialogElementEnabled;
403 #endif
404
405 #if ENABLE(CSP_NEXT)
406     static bool areExperimentalContentSecurityPolicyFeaturesEnabled;
407 #endif
408
409 #if ENABLE(IFRAME_SEAMLESS)
410     static bool areSeamlessIFramesEnabled;
411 #endif
412
413 #if ENABLE(FONT_LOAD_EVENTS)
414     static bool isFontLoadEventsEnabled;
415 #endif
416
417 };
418
419 } // namespace WebCore
420
421 #endif // RuntimeEnabledFeatures_h