1 /* 2 * Copyright (C) 2013 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 "public/web/WebRuntimeFeatures.h" 33 34 #include "platform/RuntimeEnabledFeatures.h" 35 #include "web/WebMediaPlayerClientImpl.h" 36 37 using namespace WebCore; 38 39 namespace blink { 40 41 void WebRuntimeFeatures::enableExperimentalFeatures(bool enable) 42 { 43 RuntimeEnabledFeatures::setExperimentalFeaturesEnabled(enable); 44 } 45 46 void WebRuntimeFeatures::enableBleedingEdgeFastPaths(bool enable) 47 { 48 ASSERT(enable); 49 RuntimeEnabledFeatures::setBleedingEdgeFastPathsEnabled(enable); 50 RuntimeEnabledFeatures::setSubpixelFontScalingEnabled(enable || RuntimeEnabledFeatures::subpixelFontScalingEnabled()); 51 RuntimeEnabledFeatures::setCSSWillChangeEnabled(enable); 52 RuntimeEnabledFeatures::setWebAnimationsAPIEnabled(enable); 53 } 54 55 void WebRuntimeFeatures::enableTestOnlyFeatures(bool enable) 56 { 57 RuntimeEnabledFeatures::setTestFeaturesEnabled(enable); 58 } 59 60 void WebRuntimeFeatures::enableApplicationCache(bool enable) 61 { 62 RuntimeEnabledFeatures::setApplicationCacheEnabled(enable); 63 } 64 65 void WebRuntimeFeatures::enableDatabase(bool enable) 66 { 67 RuntimeEnabledFeatures::setDatabaseEnabled(enable); 68 } 69 70 void WebRuntimeFeatures::enableDialogElement(bool enable) 71 { 72 RuntimeEnabledFeatures::setDialogElementEnabled(enable); 73 } 74 75 void WebRuntimeFeatures::enableEncryptedMedia(bool enable) 76 { 77 RuntimeEnabledFeatures::setEncryptedMediaEnabled(enable); 78 // FIXME: Hack to allow MediaKeyError to be enabled for either version. 79 RuntimeEnabledFeatures::setEncryptedMediaAnyVersionEnabled( 80 RuntimeEnabledFeatures::encryptedMediaEnabled() 81 || RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled()); 82 } 83 84 bool WebRuntimeFeatures::isEncryptedMediaEnabled() 85 { 86 return RuntimeEnabledFeatures::encryptedMediaEnabled(); 87 } 88 89 void WebRuntimeFeatures::enablePrefixedEncryptedMedia(bool enable) 90 { 91 RuntimeEnabledFeatures::setPrefixedEncryptedMediaEnabled(enable); 92 // FIXME: Hack to allow MediaKeyError to be enabled for either version. 93 RuntimeEnabledFeatures::setEncryptedMediaAnyVersionEnabled( 94 RuntimeEnabledFeatures::encryptedMediaEnabled() 95 || RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled()); 96 } 97 98 bool WebRuntimeFeatures::isPrefixedEncryptedMediaEnabled() 99 { 100 return RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled(); 101 } 102 103 void WebRuntimeFeatures::enableExperimentalCanvasFeatures(bool enable) 104 { 105 RuntimeEnabledFeatures::setExperimentalCanvasFeaturesEnabled(enable); 106 } 107 108 void WebRuntimeFeatures::enableFastMobileScrolling(bool enable) 109 { 110 RuntimeEnabledFeatures::setFastMobileScrollingEnabled(enable); 111 } 112 113 void WebRuntimeFeatures::enableFastTextAutosizing(bool enable) 114 { 115 RuntimeEnabledFeatures::setFastTextAutosizingEnabled(enable); 116 } 117 118 void WebRuntimeFeatures::enableFileSystem(bool enable) 119 { 120 RuntimeEnabledFeatures::setFileSystemEnabled(enable); 121 } 122 123 void WebRuntimeFeatures::enableGamepad(bool enable) 124 { 125 RuntimeEnabledFeatures::setGamepadEnabled(enable); 126 } 127 128 void WebRuntimeFeatures::enableLocalStorage(bool enable) 129 { 130 RuntimeEnabledFeatures::setLocalStorageEnabled(enable); 131 } 132 133 void WebRuntimeFeatures::enableMediaPlayer(bool enable) 134 { 135 RuntimeEnabledFeatures::setMediaEnabled(enable); 136 } 137 138 void WebRuntimeFeatures::enableSubpixelFontScaling(bool enable) 139 { 140 RuntimeEnabledFeatures::setSubpixelFontScalingEnabled(enable); 141 } 142 143 void WebRuntimeFeatures::enableMediaSource(bool enable) 144 { 145 RuntimeEnabledFeatures::setMediaSourceEnabled(enable); 146 } 147 148 void WebRuntimeFeatures::enableMediaStream(bool enable) 149 { 150 RuntimeEnabledFeatures::setMediaStreamEnabled(enable); 151 } 152 153 void WebRuntimeFeatures::enableNotifications(bool enable) 154 { 155 RuntimeEnabledFeatures::setNotificationsEnabled(enable); 156 } 157 158 void WebRuntimeFeatures::enableNavigatorContentUtils(bool enable) 159 { 160 RuntimeEnabledFeatures::setNavigatorContentUtilsEnabled(enable); 161 } 162 163 void WebRuntimeFeatures::enableOrientationEvent(bool enable) 164 { 165 RuntimeEnabledFeatures::setOrientationEventEnabled(enable); 166 } 167 168 void WebRuntimeFeatures::enablePagePopup(bool enable) 169 { 170 RuntimeEnabledFeatures::setPagePopupEnabled(enable); 171 } 172 173 void WebRuntimeFeatures::enablePeerConnection(bool enable) 174 { 175 RuntimeEnabledFeatures::setPeerConnectionEnabled(enable); 176 } 177 178 void WebRuntimeFeatures::enableRequestAutocomplete(bool enable) 179 { 180 RuntimeEnabledFeatures::setRequestAutocompleteEnabled(enable); 181 } 182 183 void WebRuntimeFeatures::enableScriptedSpeech(bool enable) 184 { 185 RuntimeEnabledFeatures::setScriptedSpeechEnabled(enable); 186 } 187 188 void WebRuntimeFeatures::enableServiceWorker(bool enable) 189 { 190 RuntimeEnabledFeatures::setServiceWorkerEnabled(enable); 191 } 192 193 void WebRuntimeFeatures::enableSessionStorage(bool enable) 194 { 195 RuntimeEnabledFeatures::setSessionStorageEnabled(enable); 196 } 197 198 void WebRuntimeFeatures::enableSpeechSynthesis(bool enable) 199 { 200 RuntimeEnabledFeatures::setSpeechSynthesisEnabled(enable); 201 } 202 203 void WebRuntimeFeatures::enableTouch(bool enable) 204 { 205 RuntimeEnabledFeatures::setTouchEnabled(enable); 206 } 207 208 void WebRuntimeFeatures::enableTouchIconLoading(bool enable) 209 { 210 RuntimeEnabledFeatures::setTouchIconLoadingEnabled(enable); 211 } 212 213 void WebRuntimeFeatures::enableWebAnimationsSVG(bool enable) 214 { 215 RuntimeEnabledFeatures::setWebAnimationsSVGEnabled(enable); 216 } 217 218 void WebRuntimeFeatures::enableWebAudio(bool enable) 219 { 220 RuntimeEnabledFeatures::setWebAudioEnabled(enable); 221 } 222 223 void WebRuntimeFeatures::enableWebGLDraftExtensions(bool enable) 224 { 225 RuntimeEnabledFeatures::setWebGLDraftExtensionsEnabled(enable); 226 } 227 228 void WebRuntimeFeatures::enableWebGLImageChromium(bool enable) 229 { 230 RuntimeEnabledFeatures::setWebGLImageChromiumEnabled(enable); 231 } 232 233 void WebRuntimeFeatures::enableWebMIDI(bool enable) 234 { 235 return RuntimeEnabledFeatures::setWebMIDIEnabled(enable); 236 } 237 238 void WebRuntimeFeatures::enableHTMLImports(bool enable) 239 { 240 RuntimeEnabledFeatures::setHTMLImportsEnabled(enable); 241 } 242 243 void WebRuntimeFeatures::enableXSLT(bool enable) 244 { 245 RuntimeEnabledFeatures::setXSLTEnabled(enable); 246 } 247 248 void WebRuntimeFeatures::enableOverlayScrollbars(bool enable) 249 { 250 RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(enable); 251 } 252 253 void WebRuntimeFeatures::enableOverlayFullscreenVideo(bool enable) 254 { 255 RuntimeEnabledFeatures::setOverlayFullscreenVideoEnabled(enable); 256 } 257 258 void WebRuntimeFeatures::enableSharedWorker(bool enable) 259 { 260 RuntimeEnabledFeatures::setSharedWorkerEnabled(enable); 261 } 262 263 void WebRuntimeFeatures::enableRepaintAfterLayout(bool enable) 264 { 265 RuntimeEnabledFeatures::setRepaintAfterLayoutEnabled(enable); 266 } 267 268 void WebRuntimeFeatures::enableExperimentalWebSocket(bool enable) 269 { 270 RuntimeEnabledFeatures::setExperimentalWebSocketEnabled(enable); 271 } 272 273 void WebRuntimeFeatures::enableTargetedStyleRecalc(bool enable) 274 { 275 RuntimeEnabledFeatures::setTargetedStyleRecalcEnabled(enable); 276 } 277 278 void WebRuntimeFeatures::enablePreciseMemoryInfo(bool enable) 279 { 280 RuntimeEnabledFeatures::setPreciseMemoryInfoEnabled(enable); 281 } 282 283 void WebRuntimeFeatures::enableLayerSquashing(bool enable) 284 { 285 RuntimeEnabledFeatures::setLayerSquashingEnabled(enable); 286 } 287 288 void WebRuntimeFeatures::enableShowModalDialog(bool enable) 289 { 290 RuntimeEnabledFeatures::setShowModalDialogEnabled(enable); 291 } 292 293 } // namespace blink 294