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 #include "config.h" 32 #include "WebRuntimeFeatures.h" 33 34 #include "AbstractDatabase.h" 35 #include "RuntimeEnabledFeatures.h" 36 #include "WebMediaPlayerClientImpl.h" 37 #include "WebSocket.h" 38 39 using namespace WebCore; 40 41 namespace WebKit { 42 43 void WebRuntimeFeatures::enableDatabase(bool enable) 44 { 45 #if ENABLE(DATABASE) 46 AbstractDatabase::setIsAvailable(enable); 47 #endif 48 } 49 50 bool WebRuntimeFeatures::isDatabaseEnabled() 51 { 52 #if ENABLE(DATABASE) 53 return AbstractDatabase::isAvailable(); 54 #else 55 return false; 56 #endif 57 } 58 59 void WebRuntimeFeatures::enableLocalStorage(bool enable) 60 { 61 #if ENABLE(DOM_STORAGE) 62 RuntimeEnabledFeatures::setLocalStorageEnabled(enable); 63 #endif 64 } 65 66 bool WebRuntimeFeatures::isLocalStorageEnabled() 67 { 68 #if ENABLE(DOM_STORAGE) 69 return RuntimeEnabledFeatures::localStorageEnabled(); 70 #else 71 return false; 72 #endif 73 } 74 75 void WebRuntimeFeatures::enableSessionStorage(bool enable) 76 { 77 #if ENABLE(DOM_STORAGE) 78 RuntimeEnabledFeatures::setSessionStorageEnabled(enable); 79 #endif 80 } 81 82 bool WebRuntimeFeatures::isSessionStorageEnabled() 83 { 84 #if ENABLE(DOM_STORAGE) 85 return RuntimeEnabledFeatures::sessionStorageEnabled(); 86 #else 87 return false; 88 #endif 89 } 90 91 void WebRuntimeFeatures::enableMediaPlayer(bool enable) 92 { 93 #if ENABLE(VIDEO) 94 WebMediaPlayerClientImpl::setIsEnabled(enable); 95 #endif 96 } 97 98 bool WebRuntimeFeatures::isMediaPlayerEnabled() 99 { 100 #if ENABLE(VIDEO) 101 return WebMediaPlayerClientImpl::isEnabled(); 102 #else 103 return false; 104 #endif 105 } 106 107 void WebRuntimeFeatures::enableSockets(bool enable) 108 { 109 #if ENABLE(WEB_SOCKETS) 110 WebSocket::setIsAvailable(enable); 111 #endif 112 } 113 114 bool WebRuntimeFeatures::isSocketsEnabled() 115 { 116 #if ENABLE(WEB_SOCKETS) 117 return WebSocket::isAvailable(); 118 #else 119 return false; 120 #endif 121 } 122 123 void WebRuntimeFeatures::enableNotifications(bool enable) 124 { 125 #if ENABLE(NOTIFICATIONS) 126 RuntimeEnabledFeatures::setWebkitNotificationsEnabled(enable); 127 #endif 128 } 129 130 bool WebRuntimeFeatures::isNotificationsEnabled() 131 { 132 #if ENABLE(NOTIFICATIONS) 133 return RuntimeEnabledFeatures::webkitNotificationsEnabled(); 134 #else 135 return false; 136 #endif 137 } 138 139 void WebRuntimeFeatures::enableApplicationCache(bool enable) 140 { 141 #if ENABLE(OFFLINE_WEB_APPLICATIONS) 142 RuntimeEnabledFeatures::setApplicationCacheEnabled(enable); 143 #endif 144 } 145 146 bool WebRuntimeFeatures::isApplicationCacheEnabled() 147 { 148 #if ENABLE(OFFLINE_WEB_APPLICATIONS) 149 return RuntimeEnabledFeatures::applicationCacheEnabled(); 150 #else 151 return false; 152 #endif 153 } 154 155 void WebRuntimeFeatures::enableDataTransferItems(bool enable) 156 { 157 #if ENABLE(DATA_TRANSFER_ITEMS) 158 RuntimeEnabledFeatures::setDataTransferItemsEnabled(enable); 159 #endif 160 } 161 162 bool WebRuntimeFeatures::isDataTransferItemsEnabled() 163 { 164 #if ENABLE(DATA_TRANSFER_ITEMS) 165 return RuntimeEnabledFeatures::dataTransferItemsEnabled(); 166 #else 167 return false; 168 #endif 169 } 170 171 void WebRuntimeFeatures::enableGeolocation(bool enable) 172 { 173 #if ENABLE(GEOLOCATION) 174 RuntimeEnabledFeatures::setGeolocationEnabled(enable); 175 #endif 176 } 177 178 bool WebRuntimeFeatures::isGeolocationEnabled() 179 { 180 #if ENABLE(GEOLOCATION) 181 return RuntimeEnabledFeatures::geolocationEnabled(); 182 #else 183 return false; 184 #endif 185 } 186 187 void WebRuntimeFeatures::enableIndexedDatabase(bool enable) 188 { 189 #if ENABLE(INDEXED_DATABASE) 190 RuntimeEnabledFeatures::setWebkitIndexedDBEnabled(enable); 191 #endif 192 } 193 194 bool WebRuntimeFeatures::isIndexedDatabaseEnabled() 195 { 196 #if ENABLE(INDEXED_DATABASE) 197 return RuntimeEnabledFeatures::webkitIndexedDBEnabled(); 198 #else 199 return false; 200 #endif 201 } 202 203 void WebRuntimeFeatures::enableWebAudio(bool enable) 204 { 205 #if ENABLE(WEB_AUDIO) 206 RuntimeEnabledFeatures::setWebkitAudioContextEnabled(enable); 207 #endif 208 } 209 210 bool WebRuntimeFeatures::isWebAudioEnabled() 211 { 212 #if ENABLE(WEB_AUDIO) 213 return RuntimeEnabledFeatures::webkitAudioContextEnabled(); 214 #else 215 return false; 216 #endif 217 } 218 219 void WebRuntimeFeatures::enablePushState(bool enable) 220 { 221 RuntimeEnabledFeatures::setPushStateEnabled(enable); 222 } 223 224 bool WebRuntimeFeatures::isPushStateEnabled(bool enable) 225 { 226 return RuntimeEnabledFeatures::pushStateEnabled(); 227 } 228 229 void WebRuntimeFeatures::enableTouch(bool enable) 230 { 231 #if ENABLE(TOUCH_EVENTS) 232 RuntimeEnabledFeatures::setTouchEnabled(enable); 233 #endif 234 } 235 236 bool WebRuntimeFeatures::isTouchEnabled() 237 { 238 #if ENABLE(TOUCH_EVENTS) 239 return RuntimeEnabledFeatures::touchEnabled(); 240 #else 241 return false; 242 #endif 243 } 244 245 void WebRuntimeFeatures::enableDeviceMotion(bool enable) 246 { 247 RuntimeEnabledFeatures::setDeviceMotionEnabled(enable); 248 } 249 250 bool WebRuntimeFeatures::isDeviceMotionEnabled() 251 { 252 return RuntimeEnabledFeatures::deviceMotionEnabled(); 253 } 254 255 void WebRuntimeFeatures::enableDeviceOrientation(bool enable) 256 { 257 RuntimeEnabledFeatures::setDeviceOrientationEnabled(enable); 258 } 259 260 bool WebRuntimeFeatures::isDeviceOrientationEnabled() 261 { 262 return RuntimeEnabledFeatures::deviceOrientationEnabled(); 263 } 264 265 void WebRuntimeFeatures::enableSpeechInput(bool enable) 266 { 267 RuntimeEnabledFeatures::setSpeechInputEnabled(enable); 268 } 269 270 bool WebRuntimeFeatures::isSpeechInputEnabled() 271 { 272 return RuntimeEnabledFeatures::speechInputEnabled(); 273 } 274 275 void WebRuntimeFeatures::enableXHRResponseBlob(bool enable) 276 { 277 #if ENABLE(XHR_RESPONSE_BLOB) 278 RuntimeEnabledFeatures::setXHRResponseBlobEnabled(enable); 279 #endif 280 } 281 282 bool WebRuntimeFeatures::isXHRResponseBlobEnabled() 283 { 284 #if ENABLE(XHR_RESPONSE_BLOB) 285 return RuntimeEnabledFeatures::xhrResponseBlobEnabled(); 286 #else 287 return false; 288 #endif 289 } 290 291 void WebRuntimeFeatures::enableFileSystem(bool enable) 292 { 293 #if ENABLE(FILE_SYSTEM) 294 RuntimeEnabledFeatures::setFileSystemEnabled(enable); 295 #endif 296 } 297 298 bool WebRuntimeFeatures::isFileSystemEnabled() 299 { 300 #if ENABLE(FILE_SYSTEM) 301 return RuntimeEnabledFeatures::fileSystemEnabled(); 302 #else 303 return false; 304 #endif 305 } 306 307 void WebRuntimeFeatures::enableJavaScriptI18NAPI(bool enable) 308 { 309 #if ENABLE(JAVASCRIPT_I18N_API) 310 RuntimeEnabledFeatures::setJavaScriptI18NAPIEnabled(enable); 311 #endif 312 } 313 314 bool WebRuntimeFeatures::isJavaScriptI18NAPIEnabled() 315 { 316 #if ENABLE(JAVASCRIPT_I18N_API) 317 return RuntimeEnabledFeatures::javaScriptI18NAPIEnabled(); 318 #else 319 return false; 320 #endif 321 } 322 323 void WebRuntimeFeatures::enableQuota(bool enable) 324 { 325 #if ENABLE(QUOTA) 326 RuntimeEnabledFeatures::setQuotaEnabled(enable); 327 #endif 328 } 329 330 bool WebRuntimeFeatures::isQuotaEnabled() 331 { 332 #if ENABLE(QUOTA) 333 return RuntimeEnabledFeatures::quotaEnabled(); 334 #else 335 return false; 336 #endif 337 } 338 339 } // namespace WebKit 340