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