Access GCController instance via GCController::singleton() instead of a free function
[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 "WebSocket.h"
38 #include <wtf/NeverDestroyed.h>
39
40 namespace WebCore {
41
42 RuntimeEnabledFeatures::RuntimeEnabledFeatures()
43     : m_isLocalStorageEnabled(true)
44     , m_isSessionStorageEnabled(true)
45     , m_isWebkitNotificationsEnabled(false)
46     , m_isApplicationCacheEnabled(true)
47     , m_isDataTransferItemsEnabled(true)
48     , m_isGeolocationEnabled(true)
49     , m_isIndexedDBEnabled(false)
50     , m_isTouchEnabled(true)
51     , m_isDeviceMotionEnabled(true)
52     , m_isDeviceOrientationEnabled(true)
53     , m_isCSSShapesEnabled(true)
54     , m_isCSSRegionsEnabled(false)
55     , m_isCSSCompositingEnabled(false)
56     , m_isLangAttributeAwareFormControlUIEnabled(false)
57 #if PLATFORM(IOS)
58     , m_isPluginReplacementEnabled(true)
59 #else
60     , m_isPluginReplacementEnabled(false)
61 #endif
62 #if ENABLE(MEDIA_STREAM)
63     , m_isMediaStreamEnabled(true)
64     , m_isPeerConnectionEnabled(true)
65 #endif
66 #if ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
67     , m_isLegacyCSSVendorPrefixesEnabled(false)
68 #endif
69 #if ENABLE(JAVASCRIPT_I18N_API)
70     , m_isJavaScriptI18NAPIEnabled(false)
71 #endif
72 #if ENABLE(VIDEO_TRACK)
73     , m_isVideoTrackEnabled(true)
74 #endif
75 #if ENABLE(INPUT_TYPE_DATE)
76     , m_isInputTypeDateEnabled(true)
77 #endif
78 #if ENABLE(INPUT_TYPE_DATETIME_INCOMPLETE)
79     , m_isInputTypeDateTimeEnabled(false)
80 #endif
81 #if ENABLE(INPUT_TYPE_DATETIMELOCAL)
82     , m_isInputTypeDateTimeLocalEnabled(true)
83 #endif
84 #if ENABLE(INPUT_TYPE_MONTH)
85     , m_isInputTypeMonthEnabled(true)
86 #endif
87 #if ENABLE(INPUT_TYPE_TIME)
88     , m_isInputTypeTimeEnabled(true)
89 #endif
90 #if ENABLE(INPUT_TYPE_WEEK)
91     , m_isInputTypeWeekEnabled(true)
92 #endif
93 #if ENABLE(CSP_NEXT)
94     , m_areExperimentalContentSecurityPolicyFeaturesEnabled(false)
95 #endif
96 #if ENABLE(FONT_LOAD_EVENTS)
97     , m_isFontLoadEventsEnabled(true)
98 #endif
99 #if ENABLE(GAMEPAD)
100     , m_areGamepadsEnabled(false)
101 #endif
102 #if ENABLE(CSS_ANIMATIONS_LEVEL_2)
103     , m_areAnimationTriggersEnabled(false)
104 #endif
105 {
106 }
107
108 RuntimeEnabledFeatures& RuntimeEnabledFeatures::sharedFeatures()
109 {
110     static NeverDestroyed<RuntimeEnabledFeatures> runtimeEnabledFeatures;
111
112     return runtimeEnabledFeatures;
113 }
114
115 #if ENABLE(JAVASCRIPT_I18N_API)
116 bool RuntimeEnabledFeatures::javaScriptI18NAPIEnabled()
117 {
118     return m_isJavaScriptI18NAPIEnabled;
119 }
120 #endif
121
122 #if ENABLE(VIDEO)
123 bool RuntimeEnabledFeatures::audioEnabled() const
124 {
125     return MediaPlayer::isAvailable();
126 }
127
128 bool RuntimeEnabledFeatures::htmlMediaElementEnabled() const
129 {
130     return MediaPlayer::isAvailable();
131 }
132
133 bool RuntimeEnabledFeatures::htmlAudioElementEnabled() const
134 {
135     return MediaPlayer::isAvailable();
136 }
137
138 bool RuntimeEnabledFeatures::htmlVideoElementEnabled() const
139 {
140     return MediaPlayer::isAvailable();
141 }
142
143 bool RuntimeEnabledFeatures::htmlSourceElementEnabled() const
144 {
145     return MediaPlayer::isAvailable();
146 }
147
148 bool RuntimeEnabledFeatures::mediaControllerEnabled() const
149 {
150     return MediaPlayer::isAvailable();
151 }
152
153 bool RuntimeEnabledFeatures::mediaErrorEnabled() const
154 {
155     return MediaPlayer::isAvailable();
156 }
157
158 bool RuntimeEnabledFeatures::timeRangesEnabled() const
159 {
160     return MediaPlayer::isAvailable();
161 }
162 #endif
163
164 #if ENABLE(WEB_SOCKETS)
165 bool RuntimeEnabledFeatures::webSocketEnabled() const
166 {
167     return WebSocket::isAvailable();
168 }
169 #endif
170
171 } // namespace WebCore