c84c91197cc143c54d1519fd9a3000c6b06663b0
[WebKit-https.git] / Source / WebKit / Shared / WebPreferencesDefaultValues.cpp
1 /*
2  * Copyright (C) 2018 Apple 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
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "WebPreferencesDefaultValues.h"
28
29 #include <WebCore/RuntimeApplicationChecks.h>
30
31 #if PLATFORM(COCOA)
32 #include "VersionChecks.h"
33 #include <pal/spi/cocoa/FeatureFlagsSPI.h>
34 #include <wtf/cocoa/RuntimeApplicationChecksCocoa.h>
35 #endif
36
37 namespace WebKit {
38
39 bool defaultPassiveTouchListenersAsDefaultOnDocument()
40 {
41 #if PLATFORM(IOS_FAMILY)
42     return linkedOnOrAfter(WebKit::SDKVersion::FirstThatDefaultsToPassiveTouchListenersOnDocument);
43 #else
44     return true;
45 #endif
46 }
47
48 bool defaultCSSOMViewScrollingAPIEnabled()
49 {
50 #if PLATFORM(IOS_FAMILY)
51     if (WebCore::IOSApplication::isIMDb() && applicationSDKVersion() < DYLD_IOS_VERSION_13_0)
52         return false;
53 #endif
54     return true;
55 }
56
57 #if ENABLE(TEXT_AUTOSIZING) && !PLATFORM(IOS_FAMILY)
58
59 bool defaultTextAutosizingUsesIdempotentMode()
60 {
61     return false;
62 }
63
64 #endif // ENABLE(TEXT_AUTOSIZING) && !PLATFORM(IOS_FAMILY)
65
66 bool defaultDisallowSyncXHRDuringPageDismissalEnabled()
67 {
68 #if PLATFORM(MAC) || PLATFORM(MACCATALYST)
69     if (CFPreferencesGetAppBooleanValue(CFSTR("allowDeprecatedSynchronousXMLHttpRequestDuringUnload"), CFSTR("com.apple.WebKit"), nullptr)) {
70         WTFLogAlways("Allowing synchronous XHR during page unload due to managed preference");
71         return false;
72     }
73 #elif PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)
74     if (allowsDeprecatedSynchronousXMLHttpRequestDuringUnload()) {
75         WTFLogAlways("Allowing synchronous XHR during page unload due to managed preference");
76         return false;
77     }
78 #endif
79     return true;
80 }
81
82 static bool defaultAsyncFrameAndOverflowScrollingEnabled()
83 {
84 #if PLATFORM(IOS_FAMILY)
85     return true;
86 #endif
87
88 #if HAVE(SYSTEM_FEATURE_FLAGS)
89     return isFeatureFlagEnabled("async_frame_and_overflow_scrolling");
90 #endif
91
92 #if PLATFORM(MAC)
93     return true;
94 #endif
95
96     return false;
97 }
98
99 bool defaultAsyncFrameScrollingEnabled()
100 {
101 #if USE(NICOSIA)
102     return true;
103 #endif
104
105     return defaultAsyncFrameAndOverflowScrollingEnabled();
106 }
107
108 bool defaultAsyncOverflowScrollingEnabled()
109 {
110     return defaultAsyncFrameAndOverflowScrollingEnabled();
111 }
112
113 #if ENABLE(GPU_PROCESS)
114
115 bool defaultUseGPUProcessForCanvasRenderingEnabled()
116 {
117 #if HAVE(SYSTEM_FEATURE_FLAGS)
118     return isFeatureFlagEnabled("gpu_process_canvas_rendering");
119 #endif
120
121     return false;
122 }
123
124 bool defaultUseGPUProcessForDOMRenderingEnabled()
125 {
126 #if HAVE(SYSTEM_FEATURE_FLAGS)
127     return isFeatureFlagEnabled("gpu_process_dom_rendering");
128 #endif
129
130     return false;
131 }
132
133 bool defaultUseGPUProcessForMediaEnabled()
134 {
135 #if HAVE(SYSTEM_FEATURE_FLAGS)
136     return isFeatureFlagEnabled("gpu_process_media");
137 #endif
138
139     return false;
140 }
141
142 bool defaultUseGPUProcessForWebGLEnabled()
143 {
144 #if HAVE(SYSTEM_FEATURE_FLAGS)
145     return isFeatureFlagEnabled("gpu_process_webgl");
146 #endif
147
148     return false;
149 }
150
151 #endif // ENABLE(GPU_PROCESS)
152
153 #if ENABLE(MEDIA_STREAM)
154
155 bool defaultCaptureAudioInGPUProcessEnabled()
156 {
157 #if PLATFORM(MAC) && HAVE(SYSTEM_FEATURE_FLAGS)
158     return isFeatureFlagEnabled("gpu_process_webrtc");
159 #endif
160
161 #if PLATFORM(IOS_FAMILY) && HAVE(SYSTEM_FEATURE_FLAGS)
162     return isFeatureFlagEnabled("canvas_and_media_in_gpu_process");
163 #endif
164
165     return false;
166 }
167
168 bool defaultCaptureAudioInUIProcessEnabled()
169 {
170 #if PLATFORM(IOS_FAMILY)
171     return false;
172 #endif
173
174 #if PLATFORM(MAC)
175     return !defaultCaptureAudioInGPUProcessEnabled();
176 #endif
177
178     return false;
179 }
180
181 bool defaultCaptureVideoInGPUProcessEnabled()
182 {
183 #if HAVE(SYSTEM_FEATURE_FLAGS)
184     return isFeatureFlagEnabled("gpu_process_webrtc");
185 #endif
186
187     return false;
188 }
189
190 bool defaultCaptureVideoInUIProcessEnabled()
191 {
192 #if PLATFORM(MAC)
193     return !MacApplication::isSafari();
194 #endif
195
196     return false;
197 }
198
199 #endif // ENABLE(MEDIA_STREAM)
200
201 #if ENABLE(WEB_RTC)
202
203 bool defaultWebRTCCodecsInGPUProcess()
204 {
205 #if HAVE(SYSTEM_FEATURE_FLAGS)
206     return isFeatureFlagEnabled("gpu_process_webrtc");
207 #endif
208
209     return false;
210 }
211
212 #endif // ENABLE(WEB_RTC)
213
214 #if ENABLE(WEBGPU)
215
216 bool defaultWebGPUEnabled()
217 {
218 #if HAVE(SYSTEM_FEATURE_FLAGS)
219     return isFeatureFlagEnabled("WebGPU");
220 #endif
221
222     return false;
223 }
224
225 #endif // ENABLE(WEBGPU)
226
227 bool defaultInAppBrowserPrivacy()
228 {
229 #if HAVE(SYSTEM_FEATURE_FLAGS)
230     return isFeatureFlagEnabled("InAppBrowserPrivacy");
231 #endif
232
233     return false;
234 }
235
236 #if HAVE(INCREMENTAL_PDF_APIS)
237 bool defaultIncrementalPDFEnabled()
238 {
239 #if HAVE(SYSTEM_FEATURE_FLAGS)
240     return isFeatureFlagEnabled("incremental_pdf");
241 #endif
242
243     return false;
244 }
245 #endif
246
247 #if ENABLE(WEBXR)
248
249 bool defaultWebXREnabled()
250 {
251 #if HAVE(SYSTEM_FEATURE_FLAGS)
252     return isFeatureFlagEnabled("WebXR");
253 #endif
254
255     return false;
256 }
257
258 #endif // ENABLE(WEBXR)
259
260 #if ENABLE(VP9)
261 bool defaultVP9DecoderEnabled()
262 {
263 #if HAVE(SYSTEM_FEATURE_FLAGS)
264     return isFeatureFlagEnabled("vp9_decoder");
265 #endif
266
267     return true;
268 }
269 #endif
270
271 #if ENABLE(VP9)
272 bool defaultVP9SWDecoderEnabledOnBattery()
273 {
274 #if HAVE(SYSTEM_FEATURE_FLAGS)
275     return isFeatureFlagEnabled("SW_vp9_decoder_on_battery");
276 #endif
277
278     return false;
279 }
280 #endif
281
282 #if ENABLE(MEDIA_SOURCE) && ENABLE(VP9)
283 bool defaultWebMParserEnabled()
284 {
285 #if HAVE(SYSTEM_FEATURE_FLAGS)
286     return isFeatureFlagEnabled("webm_parser");
287 #endif
288
289     return true;
290 }
291 #endif
292
293 #if ENABLE(MEDIA_STREAM)
294 bool defaultMediaRecorderEnabled()
295 {
296 #if HAVE(AVASSETWRITERDELEGATE)
297     return true;
298 #else
299     return false;
300 #endif
301 }
302 #endif
303
304 #if ENABLE(WEB_RTC)
305 bool defaultWebRTCH264LowLatencyEncoderEnabled()
306 {
307     return true;
308 }
309 #endif
310
311 } // namespace WebKit