[Preferences] Adopt shared preferences configuration and script in WebKit
[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 #if PLATFORM(IOS_FAMILY)
40
41 bool defaultPassiveTouchListenersAsDefaultOnDocument()
42 {
43     static bool result = linkedOnOrAfter(WebKit::SDKVersion::FirstThatDefaultsToPassiveTouchListenersOnDocument);
44     return result;
45 }
46
47 bool defaultCSSOMViewScrollingAPIEnabled()
48 {
49     static bool result = WebCore::IOSApplication::isIMDb() && applicationSDKVersion() < DYLD_IOS_VERSION_13_0;
50     return !result;
51 }
52
53 #endif
54
55 #if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
56
57 bool defaultDisallowSyncXHRDuringPageDismissalEnabled()
58 {
59 #if PLATFORM(MAC) || PLATFORM(MACCATALYST)
60     if (CFPreferencesGetAppBooleanValue(CFSTR("allowDeprecatedSynchronousXMLHttpRequestDuringUnload"), CFSTR("com.apple.WebKit"), nullptr)) {
61         WTFLogAlways("Allowing synchronous XHR during page unload due to managed preference");
62         return false;
63     }
64 #elif PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)
65     if (allowsDeprecatedSynchronousXMLHttpRequestDuringUnload()) {
66         WTFLogAlways("Allowing synchronous XHR during page unload due to managed preference");
67         return false;
68     }
69 #endif
70     return true;
71 }
72
73 #endif
74
75
76 static bool defaultAsyncFrameAndOverflowScrollingEnabled()
77 {
78 #if PLATFORM(IOS_FAMILY)
79     return true;
80 #endif
81
82 #if HAVE(SYSTEM_FEATURE_FLAGS)
83     return isFeatureFlagEnabled("async_frame_and_overflow_scrolling");
84 #endif
85
86 #if PLATFORM(MAC)
87     return true;
88 #endif
89
90     return false;
91 }
92
93 bool defaultAsyncFrameScrollingEnabled()
94 {
95 #if USE(NICOSIA)
96     return true;
97 #endif
98
99     return defaultAsyncFrameAndOverflowScrollingEnabled();
100 }
101
102 bool defaultAsyncOverflowScrollingEnabled()
103 {
104     return defaultAsyncFrameAndOverflowScrollingEnabled();
105 }
106
107 #if ENABLE(GPU_PROCESS)
108
109 bool defaultUseGPUProcessForCanvasRenderingEnabled()
110 {
111 #if HAVE(SYSTEM_FEATURE_FLAGS)
112     return isFeatureFlagEnabled("gpu_process_canvas_rendering");
113 #endif
114
115     return false;
116 }
117
118 bool defaultUseGPUProcessForDOMRenderingEnabled()
119 {
120 #if HAVE(SYSTEM_FEATURE_FLAGS)
121     return isFeatureFlagEnabled("gpu_process_dom_rendering");
122 #endif
123
124     return false;
125 }
126
127 bool defaultUseGPUProcessForMediaEnabled()
128 {
129 #if HAVE(SYSTEM_FEATURE_FLAGS)
130     return isFeatureFlagEnabled("gpu_process_media");
131 #endif
132
133     return false;
134 }
135
136 bool defaultUseGPUProcessForWebGLEnabled()
137 {
138 #if HAVE(SYSTEM_FEATURE_FLAGS)
139     return isFeatureFlagEnabled("gpu_process_webgl");
140 #endif
141
142     return false;
143 }
144
145 #endif // ENABLE(GPU_PROCESS)
146
147 #if ENABLE(MEDIA_STREAM)
148
149 bool defaultCaptureAudioInGPUProcessEnabled()
150 {
151 #if HAVE(SYSTEM_FEATURE_FLAGS)
152 #if PLATFORM(MAC)
153     return isFeatureFlagEnabled("gpu_process_webrtc");
154 #elif PLATFORM(IOS_FAMILY)
155     return isFeatureFlagEnabled("canvas_and_media_in_gpu_process");
156 #endif
157 #endif
158
159     return false;
160 }
161
162 bool defaultCaptureAudioInUIProcessEnabled()
163 {
164 #if PLATFORM(MAC)
165     return !defaultCaptureAudioInGPUProcessEnabled();
166 #endif
167
168     return false;
169 }
170
171 bool defaultCaptureVideoInGPUProcessEnabled()
172 {
173 #if HAVE(SYSTEM_FEATURE_FLAGS)
174     return isFeatureFlagEnabled("gpu_process_webrtc");
175 #endif
176
177     return false;
178 }
179
180 bool defaultCaptureVideoInUIProcessEnabled()
181 {
182 #if PLATFORM(MAC)
183     return !MacApplication::isSafari();
184 #endif
185
186     return false;
187 }
188
189 #endif // ENABLE(MEDIA_STREAM)
190
191 #if ENABLE(WEB_RTC)
192
193 bool defaultWebRTCCodecsInGPUProcess()
194 {
195 #if HAVE(SYSTEM_FEATURE_FLAGS)
196     return isFeatureFlagEnabled("gpu_process_webrtc");
197 #endif
198
199     return false;
200 }
201
202 #endif // ENABLE(WEB_RTC)
203
204 #if ENABLE(WEBGPU)
205
206 bool defaultWebGPUEnabled()
207 {
208 #if HAVE(SYSTEM_FEATURE_FLAGS)
209     return isFeatureFlagEnabled("WebGPU");
210 #endif
211
212     return false;
213 }
214
215 #endif // ENABLE(WEBGPU)
216
217 bool defaultInAppBrowserPrivacy()
218 {
219 #if HAVE(SYSTEM_FEATURE_FLAGS)
220     return isFeatureFlagEnabled("InAppBrowserPrivacy");
221 #endif
222
223     return false;
224 }
225
226 #if HAVE(INCREMENTAL_PDF_APIS)
227 bool defaultIncrementalPDFEnabled()
228 {
229 #if HAVE(SYSTEM_FEATURE_FLAGS)
230     return isFeatureFlagEnabled("incremental_pdf");
231 #endif
232
233     return false;
234 }
235 #endif
236
237 #if ENABLE(WEBXR)
238
239 bool defaultWebXREnabled()
240 {
241 #if HAVE(SYSTEM_FEATURE_FLAGS)
242     return isFeatureFlagEnabled("WebXR");
243 #endif
244
245     return false;
246 }
247
248 #endif // ENABLE(WEBXR)
249
250 #if ENABLE(VP9)
251
252 bool defaultVP9DecoderEnabled()
253 {
254 #if HAVE(SYSTEM_FEATURE_FLAGS)
255     return isFeatureFlagEnabled("vp9_decoder");
256 #endif
257
258     return true;
259 }
260
261 bool defaultVP9SWDecoderEnabledOnBattery()
262 {
263 #if HAVE(SYSTEM_FEATURE_FLAGS)
264     return isFeatureFlagEnabled("SW_vp9_decoder_on_battery");
265 #endif
266
267     return false;
268 }
269
270 #if ENABLE(MEDIA_SOURCE)
271
272 bool defaultWebMParserEnabled()
273 {
274 #if HAVE(SYSTEM_FEATURE_FLAGS)
275     return isFeatureFlagEnabled("webm_parser");
276 #endif
277
278     return true;
279 }
280
281 #endif // ENABLE(MEDIA_SOURCE)
282 #endif // ENABLE(VP9)
283
284 } // namespace WebKit