Introduce an experimental feature to toggle WebRTC socket proxying
[WebKit-https.git] / Source / WTF / ChangeLog
1 2021-05-10  Rob Buis  <rbuis@igalia.com>
2
3         Implement <form>.requestSubmit()
4         https://bugs.webkit.org/show_bug.cgi?id=197958
5
6         Reviewed by Darin Adler.
7
8         Add requestSubmit as experimental feature, disabled by default.
9
10         * Scripts/Preferences/WebPreferencesExperimental.yaml:
11
12 2021-05-09  Darin Adler  <darin@apple.com>
13
14         Remove uses of the String::toInt family of functions from WebCore/html and similar directories
15         https://bugs.webkit.org/show_bug.cgi?id=225577
16
17         Reviewed by Sam Weinig.
18
19         * wtf/text/StringBuilder.h: Added conversion operator to make a StringView, built on the exiting
20         is8Bit, characters8, characters16 and length functions. Removed now-uneeded equal function and
21         == and != operators since the StringView ones work for those same cases with the same syntax.
22
23 2021-05-08  Darin Adler  <darin@apple.com>
24
25         Rename toIntegralType to parseInteger and prepare to use it to replace all our integer-parsing functions
26         https://bugs.webkit.org/show_bug.cgi?id=225560
27
28         Reviewed by Sam Weinig.
29
30         I have a much larger patch that replaces all the many toInt functions with these parseInteger
31         function templates. The parseInteger ones take StringView, which means we can pass almost any
32         type of string or character/length pair including a substring without allocating a new string,
33         return Optional rather than using an out argument to report failure, take the integer type as
34         a template parameter so can be used for precisely the desired type at each call site, and make
35         the "allow trailing junk" feature explicit, rather than implicitly including it in the shortest
36         named functions, which I hope will discourage people from using that junk-ignoring mode
37         when it's not desirable.
38
39         Also includes adoption of parseInteger within WTF itself, outside the string classes.
40
41         My plan is to land the rest of adoption of this in chunks so we can review carefully and spot
42         mistakes as we go. Then return to files like WTFString.h and remove the many old functions
43         this replaces, including the String::toInt and charactersToInt families of functions.
44
45         * wtf/URL.cpp:
46         (WTF::URL::port const): Use parseInteger<uint16_t>.
47         (WTF::URL::setHostAndPort): Ditto.
48
49         * wtf/text/StringToIntegerConversion.h: Refactored the existing code to tighten things up
50         a bit, and got rid of overloads that take pointer and length and the the generic "any string
51         type" feature, since StringView already works well for that. Renamed toIntegralType to
52         parseInteger, leaving the old name behind to ease the transition while adopting parseInteger.
53
54         * wtf/text/WTFString.cpp:
55         (WTF::toDoubleType): Use the TrailingJunkPolicy enumeration from the
56         StringToIntegerConversion.h header.
57         (WTF::charactersToDouble): Ditto.
58         (WTF::charactersToFloat): Ditto.
59
60 2021-05-08  Chris Dumez  <cdumez@apple.com>
61
62         Port Filesystem::pathByAppendingComponent() & Filesystem:: pathByAppendingComponents() to std::filesystem
63         https://bugs.webkit.org/show_bug.cgi?id=225550
64
65         Reviewed by Darin Adler.
66
67         Port Filesystem::pathByAppendingComponent() & Filesystem:: pathByAppendingComponents() to std::filesystem
68         and get rid of platform-specific implementations.
69
70         * wtf/FileSystem.cpp:
71         (WTF::FileSystemImpl::pathByAppendingComponent):
72         (WTF::FileSystemImpl::pathByAppendingComponents):
73         * wtf/glib/FileSystemGlib.cpp:
74         * wtf/posix/FileSystemPOSIX.cpp:
75         * wtf/win/FileSystemWin.cpp:
76
77 2021-05-08  Diego Pino Garcia  <dpino@igalia.com>
78
79         [GLIB] REGRESSION(r277158) imported/w3c/web-platform-tests/xhr/FormData-append.html is crashing
80         https://bugs.webkit.org/show_bug.cgi?id=225551
81
82         Reviewed by Chris Dumez.
83
84         * wtf/FileSystem.cpp:
85         (WTF::FileSystemImpl::fileIsDirectory): Remove unnecessary path.isEmpty check.
86         * wtf/glib/FileSystemGlib.cpp:
87         (WTF::FileSystemImpl::fileSystemRepresentation): Return empty CString if path is empty.
88
89 2021-05-07  Chris Dumez  <cdumez@apple.com>
90
91         Port FileSystem::pathGetFileName() & Filesystem::directoryName() to std::filesystem
92         https://bugs.webkit.org/show_bug.cgi?id=225524
93
94         Reviewed by Darin Adler.
95
96         Port FileSystem::pathGetFileName() & Filesystem::directoryName() to std::filesystem so
97         that we can get rid of platform-specific implementions.
98
99         * wtf/FileSystem.cpp:
100         (WTF::FileSystemImpl::pathGetFileName):
101         (WTF::FileSystemImpl::directoryName):
102         * wtf/glib/FileSystemGlib.cpp:
103         (WTF::FileSystemImpl::pathGetFileName): Deleted.
104         (WTF::FileSystemImpl::directoryName): Deleted.
105         * wtf/posix/FileSystemPOSIX.cpp:
106         (WTF::FileSystemImpl::pathGetFileName): Deleted.
107         (WTF::FileSystemImpl::directoryName): Deleted.
108         * wtf/win/FileSystemWin.cpp:
109         (WTF::FileSystemImpl::pathGetFileName): Deleted.
110         (WTF::FileSystemImpl::directoryName): Deleted.
111
112 2021-05-07  Tim Horton  <timothy_horton@apple.com>
113
114         Add an experimental alternative display-list-based RemoteLayerBackingStore implementation
115         https://bugs.webkit.org/show_bug.cgi?id=225508
116
117         Reviewed by Sam Weinig.
118
119         * Scripts/Preferences/WebPreferencesInternal.yaml:
120
121 2021-05-07  Philippe Normand  <pnormand@igalia.com>
122
123         [GTK] Warnings about unused filesystem functions
124         https://bugs.webkit.org/show_bug.cgi?id=225507
125
126         Reviewed by Adrian Perez de Castro.
127
128         Since r277158 these functions are no longer needed.
129         
130         * wtf/glib/FileSystemGlib.cpp:
131         (WTF::FileSystemImpl::getFileStat): Deleted.
132         (WTF::FileSystemImpl::getFileLStat): Deleted.
133
134 2021-05-06  Chris Dumez  <cdumez@apple.com>
135
136         Port Filesystem::fileMetadata() & Filesystem::getFileModificationTime() to std::filesystem
137         https://bugs.webkit.org/show_bug.cgi?id=225362
138
139         Reviewed by Darin Adler.
140
141         Port Filesystem::fileMetadata() & Filesystem::getFileModificationTime() to std::filesystem
142         and get rid of platform-specific implementations.
143
144         * wtf/FileSystem.cpp:
145         (WTF::FileSystemImpl::toWallTime):
146         (WTF::FileSystemImpl::getFileModificationTime):
147         (WTF::FileSystemImpl::fileMetadata):
148         * wtf/FileSystem.h:
149         * wtf/glib/FileSystemGlib.cpp:
150         * wtf/posix/FileSystemPOSIX.cpp:
151         * wtf/win/FileSystemWin.cpp:
152
153 2021-05-06  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>
154
155         [OpenSSL] Implement CryptoAlgorithmRSA*
156         https://bugs.webkit.org/show_bug.cgi?id=225294
157
158         Reviewed by Don Olmstead.
159
160         Implement RSA for OpenSSL.
161
162         Implement CryptoAlgorithmRSA_OAEP, CryptoAlgorithmRSA_PSS,
163         CryptoAlgorithmRSAES_PKCS1_v1_5, CryptoAlgorithmRSASA_PKCS1_v1_5,
164         and CryptoKeyRSA for OpenSSL.
165
166         Note that if such OpenSSL version that does not support RSA_OAEP or
167         RSA_PSS, the WebCrypto API for those algorithm will return a
168         NotSupportedError.
169
170         * wtf/Platform.h: Set HAVE_RSA_PSS for USE(OPENSSL)
171
172 2021-05-06  Chris Dumez  <cdumez@apple.com>
173
174         Regression(r254389?) navigator.languages returns all lowercase languages for ports using CF
175         https://bugs.webkit.org/show_bug.cgi?id=225461
176
177         Reviewed by Darin Adler.
178
179         Stop lowercasing the languages returned by navigator.language / navigator.languages
180         as this does not match the specification [1][2] or other Web browsers. The proper format is
181         'en-US', not 'en-us'.
182
183         [1] https://html.spec.whatwg.org/#dom-navigator-language
184         [2] https://tools.ietf.org/html/bcp47
185
186         * wtf/cf/LanguageCF.cpp:
187         (WTF::httpStyleLanguageCode):
188
189 2021-05-06  Filip Pizlo  <fpizlo@apple.com>
190
191         Remove old and unused memory barrier abstractions
192         https://bugs.webkit.org/show_bug.cgi?id=225487
193
194         Reviewed by Mark Lam.
195
196         We don't use memoryBarrierBlahBlah anymore.
197
198         * wtf/Atomics.h:
199         (WTF::memoryBarrierAfterLock): Deleted.
200         (WTF::memoryBarrierBeforeUnlock): Deleted.
201
202 2021-05-06  Filip Pizlo  <fpizlo@apple.com>
203
204         Reduce use of dmb ish on ARM64
205         https://bugs.webkit.org/show_bug.cgi?id=225465
206
207         Reviewed by Keith Miller.
208
209         * wtf/Atomics.h:
210         (WTF::dependentLoadLoadFence):
211
212 2021-05-06  Per Arne Vollan  <pvollan@apple.com>
213
214         Add sandbox extension flag to specify that path contains no symlinks
215         https://bugs.webkit.org/show_bug.cgi?id=219428
216         <rdar://problem/66551986>
217
218         Reviewed by Brent Fulgham.
219
220         Declare canonical sandbox flag.
221
222         * wtf/spi/darwin/SandboxSPI.h:
223
224 2021-05-06  Dean Jackson  <dino@apple.com>
225
226         [WebXR] Add IOSurface to FrameData::LayerData
227         https://bugs.webkit.org/show_bug.cgi?id=225428
228         <rdar://problem/77586270>
229
230         Reviewed by Tim Horton.
231
232         Add USE(IOSURFACE_FOR_XR_LAYER_DATA) and make it true
233         for Cocoa platforms.
234
235         * wtf/PlatformUse.h:
236
237 2021-05-06  Darin Adler  <darin@apple.com>
238
239         Streamline codec parsing, replacing uses of HashMap with SortedArrayMap
240         https://bugs.webkit.org/show_bug.cgi?id=225368
241
242         Reviewed by Sam Weinig.
243
244         * wtf/SortedArrayMap.h: Moved PackedASCIILowerCodes here for reuse.
245         Slightly tweaked ComparableASCIISubsetLiteral to match better.
246
247 2021-05-05  Devin Rousso  <drousso@apple.com>
248
249         Sampled Page Top Color: take additional snapshots further down the page to see if the sampled top color is more than just a tiny strip
250         https://bugs.webkit.org/show_bug.cgi?id=225323
251
252         Reviewed by Beth Dakin.
253
254         Add a `SampledPageTopColorMinHeight` setting that controls how far down the sampled page top
255         color needs to extend in order for us to not bail. If the value > 0, we take an additional
256         snapshot at (0, SampledPageTopColorMinHeight) and (width, SampledPageTopColorMinHeight),
257         comparing each to the snapshot directly above (e.g. (0, SampledPageTopColorMinHeight) is
258         compared to (0, 0)) using the `SampledPageTopColorMaxDifference`. Depending on the value, if
259         the color across the top of the page is only a small strip, these extra snapshot comparisons
260         will prevent a resulting color from being derived.
261
262         * Scripts/Preferences/WebPreferences.yaml:
263
264 2021-05-05  Sam Weinig  <weinig@apple.com>
265
266         Add preliminary support for specifying a color space for 2D canvas
267         https://bugs.webkit.org/show_bug.cgi?id=225286
268
269         Reviewed by Dean Jackson.
270
271         Add new experimental feature, CanvasColorSpaceEnabled, which blocks
272         access to the new ability to specify color spaces for 2D canvas.
273
274         * Scripts/Preferences/WebPreferencesExperimental.yaml:
275
276 2021-05-04  Alex Christensen  <achristensen@webkit.org>
277
278         Don't iterate NetworkProcessProxy::m_websiteDataStores
279         https://bugs.webkit.org/show_bug.cgi?id=225337
280         <rdar://77233103>
281
282         Reviewed by Geoffrey Garen.
283
284         * wtf/Vector.h:
285         (WTF::copyToVectorOf):
286         Use a universal reference instead of const&.
287         * wtf/WeakHashSet.h:
288         WeakHashSet iteration returns T&, and we need this instead of WeakPtr<T> to be able to return a Ref from a map function.
289
290 2021-05-04  Chris Dumez  <cdumez@apple.com>
291
292         Drop std::filesystem logic in PlatformJSCOnly.cmake
293         https://bugs.webkit.org/show_bug.cgi?id=225355
294
295         Reviewed by Alex Christensen.
296
297         Drop std::filesystem logic in PlatformJSCOnly.cmake as it is no longer needed after r276946.
298
299         * wtf/PlatformJSCOnly.cmake:
300
301 2021-05-03  Kimmo Kinnunen  <kkinnunen@apple.com>
302
303         [GPUP] Move GPUProcess WebGL to Experimental Feature
304         https://bugs.webkit.org/show_bug.cgi?id=222836
305         rdar://75048190
306
307         Reviewed by Brent Fulgham.
308
309         Move the setting for WebGL in GPU process
310         to experimental features but disable it by default,
311         even on layout tests.
312
313         * Scripts/Preferences/WebPreferencesExperimental.yaml:
314         * Scripts/Preferences/WebPreferencesInternal.yaml:
315
316 2021-05-03  Lauro Moura  <lmoura@igalia.com>
317
318         REGRESSION(r276879) Add libstdc++fs to wtf libraries when using experimental fs headers
319         https://bugs.webkit.org/show_bug.cgi?id=225341
320
321         Reviewed by Chris Dumez.
322
323         After r276879, Filesystem.cpp uses std::filesystem directly. So,
324         expose the need for stdc++fs like was done in r268708 when std::fs was
325         used in WTR.
326
327         * wtf/CMakeLists.txt:
328
329 2021-05-03  Chris Dumez  <cdumez@apple.com>
330
331         Restore pre-r276879 behavior for FileSystem::moveFile()
332         https://bugs.webkit.org/show_bug.cgi?id=225307
333
334         Reviewed by Sam Weinig.
335
336         Update FileSystem::moveFile() so that it now supports again moving a file across different
337         volumes by copying the file over and then deleting the source file.
338
339         I have verified locally that the function is now able to move a file to a different volumes.
340         Sadly, I don't think having an API test is feasible here as it requires pre-determined
341         volumes to be available.
342
343         * wtf/FileSystem.cpp:
344         (WTF::FileSystemImpl::moveFile):
345
346 2021-05-03  Chris Dumez  <cdumez@apple.com>
347
348         Unreviewed attempt to fix JSCOnly build with recent clang after r276879
349         https://bugs.webkit.org/show_bug.cgi?id=225327
350
351         * wtf/PlatformJSCOnly.cmake:
352
353 2021-05-03  Diego Pino Garcia  <dpino@igalia.com>
354
355         [GLIB] REGRESSION(r276879): Several tests are crashing or failing
356         https://bugs.webkit.org/show_bug.cgi?id=225292
357
358         Reviewed by Carlos Alberto Lopez Perez.
359
360         * wtf/FileSystem.cpp: 
361         (WTF::FileSystemImpl::fileIsDirectory): Return false if path is empty.
362
363 2021-05-03  Chris Dumez  <cdumez@apple.com>
364
365         Restore pre-r276879 behavior for FileSystem::deleteFile() and FileSystem::deleteEmptyDirectory()
366         https://bugs.webkit.org/show_bug.cgi?id=225289
367
368         Reviewed by Darin Adler.
369
370         Restore pre-r276879 behavior for FileSystem::deleteFile() and FileSystem::deleteEmptyDirectory() to
371         reduce the risk of regressions. In particular, calling FileSystem::deleteFile() on an empty directory
372         now fails and calling FileSystem::deleteEmptyDirectory() on a non-directory now fails.
373
374         I have also gotten rid of the macOS-specific implementation of deleteEmptyDirectory() and merged the
375         needed behavior (Dealing with .DS_Store files) to the generic function.
376
377         * wtf/FileSystem.cpp:
378         (WTF::FileSystemImpl::deleteFile):
379         (WTF::FileSystemImpl::deleteEmptyDirectory):
380         * wtf/mac/FileSystemMac.mm:
381         (WTF::FileSystem::deleteEmptyDirectory): Deleted.
382
383 2021-05-02  Sam Weinig  <weinig@apple.com>
384
385         Add support for DestinationColorSpace::DisplayP3 in preparation for DisplayP3 canvas
386         https://bugs.webkit.org/show_bug.cgi?id=225280
387
388         Reviewed by Anders Carlsson.
389
390         Add new ENABLE_DESTINATION_COLOR_SPACE_DISPLAY_P3 macro to declare which ports
391         support P3 backing stores. Currently, only the Apple/Cocoa ports support it.
392
393         * wtf/PlatformEnable.h:
394         * wtf/PlatformEnableCocoa.h:
395
396 2021-04-30  Darin Adler  <darin@apple.com>
397
398         Use SortedArrayMap in a few more places
399         https://bugs.webkit.org/show_bug.cgi?id=225251
400
401         Reviewed by Sam Weinig.
402
403         * wtf/SortedArrayMap.h: Added support for types that don't have a parse member function.
404
405         * wtf/cocoa/MainThreadCocoa.mm: Removed unneeded includes.
406         * wtf/text/AtomStringImpl.cpp: Ditto.
407         * wtf/text/AtomStringTable.cpp: Ditto.
408
409 2021-05-01  Chris Dumez  <cdumez@apple.com>
410
411         Start leveraging std::filesystem in WTF::FileSystem
412         https://bugs.webkit.org/show_bug.cgi?id=225255
413
414         Reviewed by Sam Weinig.
415
416          Start leveraging std::filesystem in WTF::FileSystem to reduce the amount of
417         platform-specific code.
418
419         * WTF.xcodeproj/project.pbxproj:
420         * wtf/FileSystem.cpp:
421         (WTF::FileSystemImpl::fileExists):
422         (WTF::FileSystemImpl::deleteFile):
423         (WTF::FileSystemImpl::deleteEmptyDirectory):
424         (WTF::FileSystemImpl::moveFile):
425         (WTF::FileSystemImpl::getFileSize):
426         (WTF::FileSystemImpl::fileIsDirectory):
427         (WTF::FileSystemImpl::makeAllDirectories):
428         (WTF::FileSystemImpl::getVolumeFreeSpace):
429         (WTF::FileSystemImpl::createSymbolicLink):
430         (WTF::FileSystemImpl::hardLink):
431         (WTF::FileSystemImpl::hardLinkOrCopyFile):
432         (WTF::FileSystemImpl::deleteNonEmptyDirectory):
433         * wtf/FileSystem.h:
434         * wtf/cocoa/FileSystemCocoa.mm:
435         (WTF::FileSystemImpl::createTemporaryDirectory):
436         * wtf/glib/FileSystemGlib.cpp:
437         * wtf/posix/FileSystemPOSIX.cpp:
438         * wtf/win/FileSystemWin.cpp:
439
440         * wtf/PlatformJSCOnly.cmake:
441         GNU implementation prior to 9.1 requires linking with -lstdc++fs and LLVM implementation
442         prior to LLVM 9.0 requires linking with -lc++fs.
443
444         * wtf/StdFilesystem.cpp: Removed.
445         * wtf/StdFilesystem.h:
446         Drop our own copy of std::filesystem as all the operating system we support now have
447         support for this.
448
449 2021-05-01  Sam Weinig  <weinig@apple.com>
450
451         Make destination color space enumeration match supported destination color spaces for the port
452         https://bugs.webkit.org/show_bug.cgi?id=225237
453
454         Reviewed by Simon Fraser.
455
456         Add ENABLE_DESTINATION_COLOR_SPACE_LINEAR_SRGB and enabled it for all ports
457         except the Apple Windows port, which is the only one doesn't have any support
458         for it.
459
460         * wtf/PlatformEnable.h:
461         * wtf/PlatformEnableCocoa.h:
462         * wtf/PlatformEnableWinApple.h:
463
464 2021-04-30  Darin Adler  <darin@apple.com>
465
466         Optimize SortedArrayMap by using linear search for small arrays
467         https://bugs.webkit.org/show_bug.cgi?id=225223
468
469         Reviewed by Yusuke Suzuki.
470
471         * wtf/SortedArrayMap.h: Added a base class SortedArrayBase that contains a constant
472         for the cutoff between linear and binary search. Based on a quick empirical test,
473         it seems faster to do linear search for arrays that have less then 20 elements.
474         While doing this also switched from tryBinarySearch to std::find/find_if/lower_bound
475         because the standard library function templates should be excellent for this purpose,
476         and there's no reason to use our own. Also filled out the operations for the
477         ComparableASCIILiteral family so that the "<" operator works in either direction,
478         since that's needed for compatibility with standard library algorithms.
479
480 2021-04-29  Ben Nham  <nham@apple.com>
481
482         Reduce memory footprint for background tabs
483         https://bugs.webkit.org/show_bug.cgi?id=225007
484
485         Reviewed by Chris Dumez.
486
487         Add an option to slim background tabs by proactively calling WebCore::releaseMemory on Macs.
488
489         * wtf/PlatformEnableCocoa.h:
490
491 2021-04-29  Darin Adler  <darin@apple.com>
492
493         Extend SortedArrayMap further to work on case-folded strings, use in MIMETypeRegistry
494         https://bugs.webkit.org/show_bug.cgi?id=224968
495
496         Reviewed by Sam Weinig.
497
498         * wtf/ASCIICType.h: Make most functions constexpr.
499
500         * wtf/Forward.h: Added FixedVector.
501
502         * wtf/SortedArrayMap.h: Added SortedArraySet. Added ComparableCaseFoldingASCIILiteral
503         and ComparableLettersLiteral, using a template shared with ComparableASCIILiteral.
504
505         * wtf/StdLibExtras.h: Added isSortedConstExpr and allOfConstExpr.
506
507 2021-04-29  Ben Nham  <nham@apple.com>
508
509         Unreviewed, reverting r276619.
510
511         Causes multiple regressions on perf bots.
512
513         Reverted changeset:
514
515         "Reduce memory footprint for background tabs"
516         https://bugs.webkit.org/show_bug.cgi?id=225007
517         https://commits.webkit.org/r276619
518
519 2021-04-28  Devin Rousso  <drousso@apple.com>
520
521         experiment with averaging sampling colors across the top of the page as the scroll area background
522         https://bugs.webkit.org/show_bug.cgi?id=224987
523         <rdar://problem/76251889>
524
525         Reviewed by Darin Adler.
526
527         * Scripts/Preferences/WebPreferences.yaml:
528         Add a `SampledPageTopColorMaxDifference` setting that controls both whether or not to sample
529         colors from the top of the page (only if value > 0) and the max Lab color difference allowed
530         across all samples.
531
532         * Scripts/Preferences/WebPreferencesInternal.yaml:
533         Add a `UseSampledPageTopColorForScrollAreaBackgroundColor` internal setting that controls
534         whether the sampled page top color can be used as the overscroll area background color.
535
536 2021-04-28  Kate Cheney  <katherine_cheney@apple.com>
537
538         Disable App Bound Requests on macOS
539         https://bugs.webkit.org/show_bug.cgi?id=225155
540         <rdar://problem/77288787>
541
542         App-bound requests is causing potential performance issues on macOS.
543         We should disable it while we investigate further.
544
545         Reviewed by Brent Fulgham.
546
547         * wtf/PlatformEnableCocoa.h:
548
549 2021-04-28  Basuke Suzuki  <basuke.suzuki@sony.com>
550
551         Suppress warnings for %{private}s format specifier
552         https://bugs.webkit.org/show_bug.cgi?id=225137
553
554         Reviewed by Alex Christensen.
555
556         Add PRIVATE_LOG_STRING macro which is defined depending on if
557         os_log() is used or rather old printf().
558         See also: https://bugs.webkit.org/show_bug.cgi?id=207478
559
560         * wtf/Assertions.h:
561
562 2021-04-28  Alex Christensen  <achristensen@webkit.org>
563
564         Remove support for NPAPI plugins in WebView
565         https://bugs.webkit.org/show_bug.cgi?id=224449
566
567         Reviewed by Geoffrey Garen.
568
569         * Scripts/Preferences/WebPreferencesInternal.yaml:
570
571 2021-04-28  Chris Dumez  <cdumez@apple.com>
572
573         Drop ModernUnprefixedWebAudio & AudioWorklet experimental feature flags
574         https://bugs.webkit.org/show_bug.cgi?id=225130
575
576         Reviewed by Eric Carlson.
577
578         Drop ModernUnprefixedWebAudio & AudioWorklet experimental feature flags now that
579         these features have shipped. It also doesn't make sense to disable them given
580         that the prefixed WebAudio API is no longer exposed and there is no feature flag
581         to turn the legacy prefixed API back on.
582
583         * Scripts/Preferences/WebPreferencesExperimental.yaml:
584
585 2021-04-28  Kimmo Kinnunen  <kkinnunen@apple.com>
586
587         Asserting that function or variable is accessed in a certain thread should be simpler and more robust
588         https://bugs.webkit.org/show_bug.cgi?id=224971
589
590         Reviewed by Darin Adler.
591
592         Adds support for more fine-grained thread assertion than
593         ASSERT(isMainThread()) / ASSERT(!isMainThread())
594
595         * WTF.xcodeproj/project.pbxproj:
596         * wtf/CMakeLists.txt:
597         * wtf/Compiler.h:
598         Add NO_UNIQUE_ADDRESS which can be used to declare members that are empty in
599         RELEASE builds. The declaration avoids increasing the size of the enclosing type.
600         This should be used with ThreadAssertion:
601         class MyThreadAware {
602             ....
603             NO_UNIQUE_ADDRESS ThreadAssertion m_ownerThread;
604         };
605
606         * wtf/ThreadAssertions.h: Added.
607         Add ThreadAssertion class that can be held as a member of a type.
608         This allows consistent assertions that the code in the type
609         runs in the expected thread.
610
611         Add NamedAssertion& WTF::mainThread.
612         Add NamedAssertion& WTF::mainRunLoop.
613         These are only to be used in thread safety analysis phase. These are undefined
614         symbols, it is an error to reference them.
615
616         Adds functions assertIsMainThread() and assertIsMainRunLoop() to replace
617         patterns of  ASSERT(isMainThread()), ASSERT(isMainRunLoop().
618         In addition to behaving as the direct ASSERT behaves, the functions
619         enable compile-time thread safety analysis to know that the calling
620         scope has the assertions. These can be optionally then used in the
621         function and member signatures to require the assertions.
622
623 2021-04-28  Daniel Kolesa  <dkolesa@igalia.com>
624
625         [WPE][GTK] More correct fixes for stack size issues on musl libc
626         https://bugs.webkit.org/show_bug.cgi?id=225099
627
628         Reviewed by Adrian Perez de Castro.
629
630         Partial revert https://bugs.webkit.org/show_bug.cgi?id=210068
631
632         While the changes in r236306 stopped JSC from crashing outright,
633         they are not correct, since they also make it rather unstable.
634
635         To counter this, increase stack size for threads on Linux with
636         non-glibc/bionic libcs to 1 megabyte, which is a robust enough
637         value that should always be sufficient.
638
639         While at it, the previous approach to musl thread stack size was
640         breaking use of DEFAULT_THREAD_STACK_SIZE_IN_KB (if defined) as
641         well as not properly taking care of the unused parameter. Move
642         the code to a more appropriate place, which solves these problems.
643
644         All this is however not enough, since there is still the main thread;
645         using pthread_attr_getstack on a main thread is not reliable since main
646         thread stacks are allowed to grow, and we expect the bounds to always
647         be constant. On glibc, this already behaved right, but e.g. on musl
648         (and possibly other C libraries) this is not necessarily the case - at
649         the point of the check, it was returning 128k (since that's the initial
650         size reserved by the kernel). Therefore, do the same thing as on Darwin
651         and use process resource limits to get the boundary on Linux as well.
652
653         This results in JavaScriptCore behaving correctly on musl libc and
654         allows us to drop the options special-casing that was in place.
655
656         * wtf/StackBounds.cpp:
657         (WTF::StackBounds::currentThreadStackBoundsInternal):
658         * wtf/Threading.cpp:
659         (WTF::stackSize):
660
661 2021-04-27  Kimmo Kinnunen  <kkinnunen@apple.com>
662
663         Add a Condition type that supports thread safety analysis
664         https://bugs.webkit.org/show_bug.cgi?id=224970
665
666         Reviewed by Darin Adler.
667
668         Add CheckedCondition, a condition variable to be used with CheckedLock.
669         Use thread safety analysis annotations for CheckedCondition.
670
671         * WTF.xcodeproj/project.pbxproj:
672         * wtf/CMakeLists.txt:
673         * wtf/CheckedCondition.h: Added.
674         * wtf/CheckedLock.h:
675
676 2021-04-27  Ben Nham  <nham@apple.com>
677
678         Memory pressure events should be logged to com.apple.WebKit subsystem
679         https://bugs.webkit.org/show_bug.cgi?id=225112
680
681         Reviewed by Chris Dumez.
682
683         Currently memory pressure events are logged to the default os_log subsystem instead of the
684         com.apple.WebKit subsystem. This makes it hard to capture such events using common logging
685         prefs (e.g. a pref that persists all logs from the WebKit subsystem).
686
687         To fix this, call WTFInitializeLogChannelStatesFromString at init time. This associates the
688         WTFLogChannel with an os_log object that sends the messages to the WebKit subsystem.
689
690         * wtf/MemoryPressureHandler.cpp:
691         (WTF::MemoryPressureHandler::singleton):
692         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
693         (WTF::MemoryPressureHandler::install):
694
695 2021-04-27  Alex Christensen  <achristensen@webkit.org>
696
697         Unreviewed, reverting r275912.
698         rdar://77179042
699
700         Broke internal client
701
702         Reverted changeset:
703
704         "Remove support for NPAPI plugins in WebView"
705         https://bugs.webkit.org/show_bug.cgi?id=224449
706         https://commits.webkit.org/r275912
707
708 2021-04-26  Ben Nham  <nham@apple.com>
709
710         Reduce memory footprint for background tabs
711         https://bugs.webkit.org/show_bug.cgi?id=225007
712
713         Reviewed by Chris Dumez.
714
715         When a WebContent process contains only non-visible pages (e.g. if it is a background tab),
716         we should attempt to reduce our memory footprint after some time interval to help relieve
717         system-wide memory pressure. This is enabled only on Mac because iOS already does something
718         similar just before WebContent suspends.
719
720         * wtf/PlatformEnableCocoa.h:
721
722 2021-04-26  Keith Miller  <keith_miller@apple.com>
723
724         CodeBlock should do a better job accounting for extra memory it allocates.
725         https://bugs.webkit.org/show_bug.cgi?id=225068
726
727         Reviewed by Mark Lam.
728
729         Small convenience function to help compute the memory used by a Bag for JS GC
730         accounting.
731
732         * wtf/Bag.h:
733
734 2021-04-26  Angelos Oikonomopoulos  <angelos@igalia.com>
735
736         Bump CeilingOnPageSize to 16KB on MIPS
737         https://bugs.webkit.org/show_bug.cgi?id=225030
738
739         Reviewed by Michael Catanzaro.
740
741         * wtf/PageBlock.h:
742
743 2021-04-25  Darin Adler  <darin@apple.com>
744
745         Fix handling of overflow of /= and *= operators with double over Checked<uint64_t> and other 64-bit types.
746         https://bugs.webkit.org/show_bug.cgi?id=224835
747
748         Reviewed by Chris Dumez.
749
750         * wtf/CheckedArithmetic.h: Since it is quite difficult to write correct implementations of the
751         operations where we multiply or divide a checked integer by a floating point number, deleted
752         those functions, which were barely used. Also corrected return types of various member functions,
753         which were unconventional "const Type", replacing them with the conventional "Type" for functions
754         that return a distinct value, "Type&" for assignment operators, and bool for relational operators.
755
756 2021-04-25  Devin Rousso  <drousso@apple.com>
757
758         Add `ALWAYS_LOG_WITH_STREAM` macro for easier development/debugging
759         https://bugs.webkit.org/show_bug.cgi?id=224959
760
761         Reviewed by Darin Adler.
762
763         It's often very helpful to use existing `operator<<` defined on objects, but annoying to
764         have to copypaste the boilerplate code that creates a `WTF::TextStream` and uses it in a
765         `WTFLogAlways` or wait for a debug build to enable existing `LOG_WITH_STREAM`.
766
767         * wtf/Assertions.h:
768         (LOG_WITH_STREAM): Moved from `Source/WebCore/pal/LogMacros.h`.
769         (ALWAYS_LOG_WITH_STREAM): Added.
770         Add `ALWAYS_LOG_WITH_STREAM` so that one change existing `LOG` when debugging with minimal
771         friction. As an example, many times I've wished I could've just changed
772         ```
773             LOG_WITH_STREAM(Channel, stream << node);
774         ```
775         to something like
776         ```
777             ALWAYS_LOG_WITH_STREAM(stream << node);
778         ```
779         and avoid having to modify the surrounding code too much.
780
781 2021-04-23  Darin Adler  <darin@apple.com>
782
783         Remove decoder memory allocations based on untrusted data (sizes) in the stream; related changes
784         https://bugs.webkit.org/show_bug.cgi?id=224984
785
786         Reviewed by Sam Weinig.
787
788         * wtf/persistence/PersistentDecoder.cpp:
789         (WTF::Persistence::Decoder::bufferPointerForDirectRead): Added.
790         (WTF::Persistence::Decoder::decodeFixedLengthData): Refactor to use bufferPointerForDirectRead.
791
792         * wtf/persistence/PersistentDecoder.h: Added bufferPointerForDirectRead function for use in the
793         rare cases where we want to read directly out of the decoder buffer, rather than writing to a
794         passed-in pointer. Also did a small refactoring of bufferIsLargeEnoughToContain to use &&
795         rather than an if statement.
796
797 2021-04-23  Chris Dumez  <cdumez@apple.com>
798
799         Disable GPUProcess on shipping iOS
800         https://bugs.webkit.org/show_bug.cgi?id=224897
801
802         Reviewed by Eric Carlson.
803
804         * wtf/PlatformEnableCocoa.h:
805
806 2021-04-22  Lauro Moura  <lmoura@igalia.com>
807
808         [WTF] Undefined behavior warning in StringBuilder::allocateBuffer
809         https://bugs.webkit.org/show_bug.cgi?id=224942
810
811         Reviewed by Chris Dumez.
812
813         * wtf/text/StringBuilder.cpp:
814         (WTF::StringBuilder::allocateBuffer): Add check before calling memcpy
815
816 2021-04-22  Simon Fraser  <simon.fraser@apple.com>
817
818         Add trace points for WKWebView snapshotting
819         https://bugs.webkit.org/show_bug.cgi?id=224943
820
821         Reviewed by Tim Horton.
822
823         New snapshot values.
824
825         * wtf/SystemTracing.h:
826
827 2021-04-22  Martin Robinson  <mrobinson@webkit.org>
828
829         [GTK] Turn on editable <input type=date> and <input type=time> fields
830         https://bugs.webkit.org/show_bug.cgi?id=224921
831
832         Reviewed by Carlos Garcia Campos.
833
834         Turn on editable date and time inputs for GTK.
835
836         * Scripts/Preferences/WebPreferencesInternal.yaml: Set editable date/time inputs
837         on by default for GTK as well.
838
839 2021-04-22  Aditya Keerthi  <akeerthi@apple.com>
840
841         Fix the tvOS build after r276325
842         https://bugs.webkit.org/show_bug.cgi?id=224929
843         <rdar://problem/77003408>
844
845         Reviewed by Wenson Hsieh.
846
847         Fix the tvOS build after r276325
848
849         * wtf/PlatformHave.h:
850
851 2021-04-21  Aditya Keerthi  <akeerthi@apple.com>
852
853         [iOS] Fix internal builds after r276325
854         https://bugs.webkit.org/show_bug.cgi?id=224896
855
856         Reviewed by Tim Horton.
857
858         * wtf/PlatformHave.h:
859
860 2021-04-21  Martin Robinson  <mrobinson@igalia.com>
861
862         Enable CSS Scroll Snap by default
863         https://bugs.webkit.org/show_bug.cgi?id=224867
864
865         Reviewed by Don Olmstead.
866
867         * wtf/PlatformEnable.h: Move the preprocessor enabling of scroll snap here.
868         * wtf/PlatformEnableCocoa.h: Move it from here.
869
870 2021-04-21  Simon Fraser  <simon.fraser@apple.com>
871
872         Enhance scrolling-related trace points
873         https://bugs.webkit.org/show_bug.cgi?id=224852
874
875         Reviewed by Tim Horton.
876         
877         One new trace point, and some argument descriptors.
878
879         * wtf/SystemTracing.h:
880
881 2021-04-20  Brent Fulgham  <bfulgham@apple.com>
882
883         [Cocoa] Prevent GPU and WebContent processes from attempting to connect to the AppSSO service 
884         https://bugs.webkit.org/show_bug.cgi?id=224834
885         <rdar://problem/72157514>
886
887         Reviewed by Jiewen Tan.
888
889         * wtf/PlatformHave.h:
890
891 2021-04-20  Eric Carlson  <eric.carlson@apple.com>
892
893         [Cocoa] Enable MediaSession and MediaSessionCoordinator experimental features
894         https://bugs.webkit.org/show_bug.cgi?id=224822
895         <rdar://problem/76908014>
896
897         Reviewed by Jer Noble.
898
899         * Scripts/Preferences/WebPreferencesExperimental.yaml: Change the defaults for
900         MediaSessionCoordinatorEnabled and MediaSessionEnabled to true.
901
902 2021-04-20  Michael Catanzaro  <mcatanzaro@gnome.org>
903
904         Lots of spurious -Wnonnull warnings with GCC 11
905         https://bugs.webkit.org/show_bug.cgi?id=224452
906
907         Reviewed by Darin Adler.
908
909         * wtf/RefPtr.h:
910         (WTF::DefaultRefDerefTraits::derefIfNotNull):
911
912 2021-04-20  Keith Miller  <keith_miller@apple.com>
913
914         FullGCActivityCallback should use the percentage of pages uncompressed in RAM to determine deferral.
915         https://bugs.webkit.org/show_bug.cgi?id=224817
916
917         Reviewed by Filip Pizlo.
918
919         Add a noexcept flavor of FunctionTraits. On Linux mincore (and probably other syscalls) are marked noexcept so the existing overloads don't work.
920
921         * wtf/FunctionTraits.h:
922
923 2021-04-20  Chris Dumez  <cdumez@apple.com>
924
925         Make sure we don't exit the GPUProcess too frequently while under memory pressure
926         https://bugs.webkit.org/show_bug.cgi?id=224798
927
928         Reviewed by Darin Adler.
929
930         Add member function to the MemoryPressureHandler to indicate if we're currently simulating memory
931         pressure or not.
932
933         * wtf/MemoryPressureHandler.h:
934         (WTF::MemoryPressureHandler::isSimulatingMemoryPressure const):
935
936 2021-04-19  Darin Adler  <darin@apple.com>
937
938         Refactor sorted array mapping machinery in LocaleToScriptMapping.cpp for reuse elsewhere
939         https://bugs.webkit.org/show_bug.cgi?id=224733
940
941         Reviewed by Yusuke Suzuki.
942
943         * WTF.xcodeproj/project.pbxproj: Added SortedArrayMap.h.
944         * wtf/CMakeLists.txt: Ditto.
945
946         * wtf/SortedArrayMap.h: Added. Builds on the idiom in LocalToScriptMapping, and to be
947         generic uses std::pair instead of custom structures. Includes the ComparableASCIILiteral
948         structure for maps that are keyed by case-sensitive ASCII strings.
949
950         * wtf/StdLibExtras.h:
951         (WTF::binarySearchImpl): Use auto in one place to make this a bit more generic.
952
953 2021-04-19  Kimmo Kinnunen  <kkinnunen@apple.com>
954
955         Enable -Wthread-safety, add attributes to custom lock classes, and provide macros to declare guards
956         https://bugs.webkit.org/show_bug.cgi?id=221614
957         <rdar://problem/74396781>
958
959         Reviewed by David Kilzer.
960
961         Implement rudimentary support for clang thread safety analysis.
962         The added macros can be used to declare which member variables or
963         global variables are locked by which mutexes. The compiler will
964         check statically that the mutexes are held correctly. The checking
965         is intra procedural, not global.
966
967         * Configurations/Base.xcconfig:
968             Add -Wthread-safety to compile flags.
969
970         * wtf/CheckedLock.h: Added.
971         Add CheckedLock, a Lock variant that is amenable to static
972         analysis.
973         Add a Locker specialization for CheckedLock that is amenable to
974         static analysis.
975
976         Locker<CheckedLock> is a std::scoped_lock. The scoped_lock cannot be aliased,
977         since it appears that (Apple's) libcxx is not compiled with thread safety
978         analysis support enabled by default.
979
980         New types are needed due Locker move constructor and conditional locking.
981         The Locker has default usage pattern of:
982           auto locker = holdLock(m_lock);
983         This forces dynamism that removes the possibility of simple statical
984         analysis that thread safety analysis capabilities "mutex" and "scoped_lock"
985         currently implement. Most likely large fraction of call sites is due to historical
986         lack of CTAD and as such can be converted to less general form.
987         Once the pattern is not used by default, CheckedLock can be deleted
988         and the move dynamism bits of Locker can be moved to some more specific type
989         ("UncheckedLocker").
990
991         * wtf/ThreadSafetyAnalysis.h: Added.
992         Add macro wrappers around clang "mutex" and "scoped_lock" capability attributes.
993
994 2021-04-17  Sam Weinig  <weinig@apple.com>
995
996         Move RuntimeEnabledFeatures to Settings (Part 1)
997         https://bugs.webkit.org/show_bug.cgi?id=224440
998
999         Reviewed by Alex Christensen.
1000
1001         Move a few RuntimeEnabledFeatures to Settings to consolidate settings
1002         in one object and removes the need for additional boilerplate. This 
1003         is now possible as Settings are now accessible in workers.
1004
1005         Moves PeerConnectionEnabled, WebGLUsingMetal, WebGL2Enabled, WebGPUEnabled
1006         and MaskWebGLStringsEnabled.
1007
1008         * Scripts/Preferences/WebPreferences.yaml:
1009         * Scripts/Preferences/WebPreferencesExperimental.yaml:
1010
1011 2021-04-16  Kate Cheney  <katherine_cheney@apple.com>
1012
1013         Disable app-bound request API tests on specific OS versions
1014         https://bugs.webkit.org/show_bug.cgi?id=223692
1015         <rdar://problem/75787288>
1016
1017         Reviewed by Brent Fulgham.
1018
1019         * wtf/PlatformEnableCocoa.h:
1020
1021 2021-04-16  Alex Christensen  <achristensen@webkit.org>
1022
1023         Disable ApplicationCache with linkedOnOrAfter check
1024         https://bugs.webkit.org/show_bug.cgi?id=224629
1025
1026         Reviewed by Brady Eidson.
1027
1028         * Scripts/Preferences/WebPreferences.yaml:
1029
1030 2021-04-16  Alex Christensen  <achristensen@webkit.org>
1031
1032         Reduce maximum HashTable entry size to 128 bytes
1033         https://bugs.webkit.org/show_bug.cgi?id=224381
1034
1035         Reviewed by Yusuke Suzuki.
1036
1037         * wtf/HashTable.h:
1038         (WTF::KeyTraits>::inlineLookup):
1039
1040 2021-04-16  Tyler Wilcock  <twilco.o@protonmail.com>
1041
1042         [css-counter-styles] Parse and add feature flag for @counter-style
1043         https://bugs.webkit.org/show_bug.cgi?id=223150
1044
1045         Reviewed by Darin Adler.
1046
1047         * Scripts/Preferences/WebPreferencesExperimental.yaml:
1048          Add CSSCounterStyleAtRulesEnabled and CSSCounterStyleAtRuleImageSymbolsEnabled flags.
1049
1050 2021-04-15  Alex Christensen  <achristensen@webkit.org>
1051
1052         Use WTF::Function instead of std::function in SVGPropertyAnimatorFactory::attributeAnimatorCreator
1053         https://bugs.webkit.org/show_bug.cgi?id=224586
1054
1055         Reviewed by Darin Adler.
1056
1057         This requires something like r223122 until something like http://wg21.link/P1249 is accepted.
1058         I also added a missing reserveInitialCapacity call that could reduce rehashing when constructing a HashMap from an initializer_list.
1059
1060         * wtf/HashMap.h:
1061
1062 2021-04-14  Alex Christensen  <achristensen@webkit.org>
1063
1064         Revert important part of r275948
1065         https://bugs.webkit.org/show_bug.cgi?id=224381
1066
1067         It caused an internal build failure.
1068
1069         * wtf/HashTable.h:
1070         (WTF::KeyTraits>::inlineLookup):
1071
1072 2021-04-14  Alex Christensen  <achristensen@webkit.org>
1073
1074         Reduce maximum HashTable entry size to 128 bytes
1075         https://bugs.webkit.org/show_bug.cgi?id=224381
1076
1077         Reviewed by Yusuke Suzuki.
1078
1079         It turns out that HashMaps use HashTable::Value as KeyValuePair, so sizeof(Key) + sizeof(Value) was double counting the key size.
1080         This caused FontCascadeCache to be a false positive.  It has a key size of a little over 100 bytes.  Only counting it once reflects what is intended.
1081         Also, the USE(ANGLE) exception was convenient for a downstream branch, but isn't needed.  Next time they rebase they will use UniqueRef.
1082
1083         * wtf/HashTable.h:
1084         (WTF::KeyTraits>::inlineLookup):
1085
1086 2021-04-13  Ada Chan  <ada.chan@apple.com>
1087
1088         Implement PlatformXRSystem::xrCoordinator() for USE(APPLE_INTERNAL_SDK)
1089         https://bugs.webkit.org/show_bug.cgi?id=224510
1090
1091         Reviewed by Dean Jackson.
1092
1093         Update ENABLE_WEBXR flag
1094
1095         * wtf/PlatformEnableCocoa.h:
1096
1097 2021-04-13  Alex Christensen  <achristensen@webkit.org>
1098
1099         WebProcessPool should store Vector<Ref<WebProcessProxy>> instead of Vector<RefPtr>
1100         https://bugs.webkit.org/show_bug.cgi?id=224412
1101
1102         Reviewed by Chris Dumez.
1103
1104         * wtf/Ref.h:
1105         (WTF::operator==):
1106         (WTF::operator!=):
1107
1108 2021-04-13  Alex Christensen  <achristensen@webkit.org>
1109
1110         Remove support for NPAPI plugins in WebView
1111         https://bugs.webkit.org/show_bug.cgi?id=224449
1112
1113         Reviewed by Chris Dumez.
1114
1115         * Scripts/Preferences/WebPreferences.yaml:
1116
1117 2021-04-13  Chris Dumez  <cdumez@apple.com>
1118
1119         Make MemoryPressureHandler::isUnderMemoryPressure() return true for 2 seconds after a simulated warning
1120         https://bugs.webkit.org/show_bug.cgi?id=224505
1121
1122         Reviewed by Darin Adler.
1123
1124         Make MemoryPressureHandler::isUnderMemoryPressure() return true for 2 seconds after a simulated warning,
1125         to make our simulated warning more realistic.
1126
1127         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
1128         (WTF::MemoryPressureHandler::install):
1129
1130 2021-04-13  Yusuke Suzuki  <ysuzuki@apple.com>
1131
1132         [WTF] Add Vector&& move constructor / assignment to FixedVector and RefCountedArray
1133         https://bugs.webkit.org/show_bug.cgi?id=224475
1134
1135         Reviewed by Ryosuke Niwa.
1136
1137         This patch adds move constructor and move-assignment taking Vector to FixedVector / RefCountedArray.
1138         This allows transferring MoveOnly things from Vector to FixedVector.
1139
1140         * wtf/FixedVector.h:
1141         (WTF::FixedVector::FixedVector):
1142         (WTF::FixedVector::operator=):
1143         * wtf/RefCountedArray.h:
1144         (WTF::RefCountedArray::RefCountedArray):
1145         (WTF::RefCountedArray::operator=):
1146         (WTF::RefCountedArray::~RefCountedArray):
1147         (WTF::RefCountedArray::allocateUninitializedData):
1148         (WTF::RefCountedArray::assign):
1149
1150 2021-04-13  Alex Christensen  <achristensen@webkit.org>
1151
1152         Revert r275172
1153         https://bugs.webkit.org/show_bug.cgi?id=224499
1154         <rdar://76396241>
1155
1156         Reviewed by Tim Horton.
1157
1158         * wtf/spi/darwin/XPCSPI.h:
1159
1160 2021-04-12  Basuke Suzuki  <basuke.suzuki@sony.com>
1161
1162         [PlayStation] Enable WTFCrashWithInfo implementation
1163         https://bugs.webkit.org/show_bug.cgi?id=224458
1164
1165         Reviewed by Don Olmstead.
1166
1167         Enable WTFCrashWithInfo implementation for PlayStation platform. It is x86_64 and uses clang
1168         so that it can share Darwin's implemetation with us.
1169
1170         * wtf/Assertions.cpp:
1171
1172 2021-04-12  Youenn Fablet  <youenn@apple.com>
1173
1174         Block loading for port 10080
1175         https://bugs.webkit.org/show_bug.cgi?id=224432
1176
1177         Reviewed by Alex Christensen.
1178
1179         Follow Chrome and Firefox by blocking port 10080.
1180
1181         * wtf/URL.cpp:
1182         (WTF::portAllowed):
1183
1184 2021-04-11  Sam Weinig  <weinig@apple.com>
1185
1186         Reduce compile time and binary size cost of enabling proper CSSStyleDeclaration property access behavior
1187         https://bugs.webkit.org/show_bug.cgi?id=222518
1188         <rdar://problem/75136887>
1189
1190         Reviewed by Darin Adler.
1191
1192         * wtf/PlatformEnable.h:
1193         Remove ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION, as it is now the default and on everwhere.
1194
1195 2021-04-09  Jer Noble  <jer.noble@apple.com>
1196
1197         WTF SoftLinking macros can cause collisions with their target functions
1198         https://bugs.webkit.org/show_bug.cgi?id=224379
1199         <rdar://76434202>
1200
1201         Reviewed by Eric Carlson.
1202
1203         Do not declare an inline version of the target function, as this will collide if the target function
1204         becomes inlined. Instead, callers should use the explicit softLink_Library_Function() syntax, or
1205         the LibrarySoftLinking.h headers should use #defines to re-declare the function name.
1206
1207         * wtf/cocoa/SoftLinking.h:
1208
1209 2021-04-08  Stephan Szabo  <stephan.szabo@sony.com>
1210
1211         [RunLoopGeneric] OneShotTimer should not remain "isActive" after fired
1212         https://bugs.webkit.org/show_bug.cgi?id=189335
1213         <rdar://problem/44226604>
1214
1215         Reviewed by Geoffrey Garen.
1216
1217         * wtf/generic/RunLoopGeneric.cpp:
1218
1219         Deactivate one-shot timer before invoking its callback.
1220
1221 2021-04-08  Khem Raj  <raj.khem@gmail.com>
1222
1223         [WPE] Build fixes for musl C library on Linux
1224         https://bugs.webkit.org/show_bug.cgi?id=210068
1225
1226         Reviewed by Carlos Alberto Lopez Perez.
1227
1228         Define 128KB DEFAULT_THREAD_STACK_SIZE_IN_KB for musl
1229         Use OS(LINUX) check to include musl when building for
1230         Linux based platforms.
1231
1232         * wtf/PlatformHave.h:
1233         * wtf/Threading.cpp:
1234
1235 2021-04-08  Chris Dumez  <cdumez@apple.com>
1236
1237         OfflineAudioContext objects are leaking
1238         https://bugs.webkit.org/show_bug.cgi?id=224279
1239
1240         Reviewed by Darin Adler.
1241
1242         Add flag that can be passed when constructing a WeakPtr to disable threading assertions.
1243         This is useful for cases where we know it is safe due to locking but we'd like to use a
1244         WeakPtr instead of a raw pointer because it is safer.
1245
1246         * wtf/WeakPtr.h:
1247         (WTF::WeakPtr::get const):
1248         (WTF::WeakPtr::operator-> const):
1249         (WTF::WeakPtr::operator* const):
1250         (WTF::WeakPtr::WeakPtr):
1251         (WTF::WeakPtrFactory::createWeakPtr const):
1252         (WTF::=):
1253         (WTF::makeWeakPtr):
1254
1255 2021-04-08  Simon Fraser  <simon.fraser@apple.com>
1256
1257         Copy-constructed Vectors should not have excess capacity
1258         https://bugs.webkit.org/show_bug.cgi?id=224313
1259
1260         Reviewed by Darin Adler.
1261
1262         When copy-constructing a Vector<>, set the capacity to the size of the input.
1263         This avoids wasted vector capacity at call sites that dynamically build vectors
1264         and then copy them into read-only caches.
1265
1266         * wtf/Vector.h:
1267         (WTF::Malloc>::Vector):
1268
1269 2021-04-02  Darin Adler  <darin@apple.com>
1270
1271         Use Hasher more, remove IntegerHasher, fix hashing-related mistakes
1272         https://bugs.webkit.org/show_bug.cgi?id=224138
1273
1274         Reviewed by Chris Dumez.
1275
1276         * wtf/HashFunctions.h: Export intHash and pairIntHash to the global namespace
1277         so they can be called without an explicit WTF prefix. This follows the usual
1278         WTF design pattern given that these functions are intended for use outside WTF.
1279
1280         * wtf/Hasher.h: Deleted IntegerHasher.
1281         (WTF::add): Added overloads for String, AtomString, and URL.
1282
1283         * wtf/ObjectIdentifier.h:
1284         (WTF::add): Added a Hasher overload for any ObjectIdentifier.
1285
1286         * wtf/RetainPtr.h: Export safeCFEqual and safeCFHash to the global namespace
1287         so they can be called without an explicit WTF prefix. This follows the usual
1288         WTF design pattern given that these functions are intended for use outside WTF.
1289
1290         * wtf/VectorHash.h: Removed the VectorHash template, instead just specializing
1291         DefaultHash. Use computeHash to hash the contents of the vector instead of
1292         hashing the hashes of the items in the vector. This is better in general and
1293         better for the one case where we are currently using this, for a Vector<int>.
1294         We want to hash all the integers rather than hashing hashes of all the integers.
1295         In the future, this means the elements of the Vector need to be hashable using
1296         the Hasher machinery. The old requirement was the the elements had a DefaultHash.
1297
1298 2021-04-07  Michael Catanzaro  <mcatanzaro@gnome.org>
1299
1300         Suppress -Warray-bounds warning spam in Bitmap.h
1301         https://bugs.webkit.org/show_bug.cgi?id=224207
1302
1303         Reviewed by Don Olmstead.
1304
1305         Suppress this warning.
1306
1307         * wtf/Bitmap.h:
1308         (WTF::WordType>::clear):
1309
1310 2021-04-07  Yusuke Suzuki  <ysuzuki@apple.com>
1311
1312         [JSC] Use FixedVector more in bytecode dir and JumpTable
1313         https://bugs.webkit.org/show_bug.cgi?id=224275
1314
1315         Reviewed by Michael Saboff and Mark Lam.
1316
1317         * wtf/FixedVector.h:
1318         (WTF::FixedVector::offsetOfStorage):
1319         * wtf/RefCountedArray.h:
1320         (WTF::RefCountedArray::Header::size):
1321         (WTF::RefCountedArray::Header::offsetOfLength):
1322
1323 2021-04-07  Alex Christensen  <achristensen@webkit.org>
1324
1325         Use os_transaction_create instead of deprecated xpc_transaction_begin/end
1326         https://bugs.webkit.org/show_bug.cgi?id=224288
1327
1328         Reviewed by Tim Horton.
1329
1330         * wtf/spi/darwin/XPCSPI.h:
1331
1332 2021-04-06  Yusuke Suzuki  <ysuzuki@apple.com>
1333
1334         [JSC] WasmMemory caging should care nullptr
1335         https://bugs.webkit.org/show_bug.cgi?id=224268
1336         <rdar://problem/74654838>
1337
1338         Reviewed by Mark Lam.
1339
1340         Accept size_t since Wasm::Memory's length can be larger than 4GB.
1341
1342         * wtf/CagedPtr.h:
1343         (WTF::CagedPtr::CagedPtr):
1344         (WTF::CagedPtr::get const):
1345         (WTF::CagedPtr::getMayBeNull const):
1346         (WTF::CagedPtr::at const):
1347         (WTF::CagedPtr::recage):
1348         * wtf/CagedUniquePtr.h:
1349         (WTF::CagedUniquePtr::CagedUniquePtr):
1350         (WTF::CagedUniquePtr::create):
1351         (WTF::CagedUniquePtr::tryCreate):
1352
1353 2021-04-06  Alex Christensen  <achristensen@webkit.org>
1354
1355         Add U+0581 and U+0585 to list of Armenian characters that look like Latin characters
1356         https://bugs.webkit.org/show_bug.cgi?id=224219
1357         <rdar://75896365>
1358
1359         Reviewed by Brent Fulgham.
1360
1361         These code points are allowed in the context of other Armenian code points and punctuation, but not other script code points.
1362         This was already implemented for the others, but I consolidated the list to one location to avoid having two locations for the list.
1363
1364         * wtf/URLHelpers.cpp:
1365         (WTF::URLHelpers::isArmenianLookalikeCharacter):
1366         (WTF::URLHelpers::isArmenianLookalikeSequence):
1367         (WTF::URLHelpers::isLookalikeCharacter):
1368
1369 2021-04-06  Yusuke Suzuki  <ysuzuki@apple.com>
1370
1371         [WTF] Introduce FixedVector and use it for FixedOperands
1372         https://bugs.webkit.org/show_bug.cgi?id=224171
1373
1374         Reviewed by Mark Lam.
1375
1376         This FixedVector<T> is a wrapper around RefCountedArray<T>, but this offers Vector-like copy / move semantics,
1377         so that we can use this FixedVector<T> as a drop-in-replacement for fixed-sized Vector fields. The purpose
1378         of that is saving memory by removing unnecessary storage (FixedVector is fixed-sized allocated) and putting size
1379         into the allocated memory.
1380
1381         * WTF.xcodeproj/project.pbxproj:
1382         * wtf/CMakeLists.txt:
1383         * wtf/FastBitVector.h:
1384         (WTF::FastBitVector::FastBitVector):
1385         * wtf/FixedVector.h: Added.
1386         (WTF::FixedVector::FixedVector):
1387         (WTF::FixedVector::operator=):
1388         (WTF::FixedVector::size const):
1389         (WTF::FixedVector::isEmpty const):
1390         (WTF::FixedVector::byteSize const):
1391         (WTF::FixedVector::data):
1392         (WTF::FixedVector::begin):
1393         (WTF::FixedVector::end):
1394         (WTF::FixedVector::data const):
1395         (WTF::FixedVector::begin const):
1396         (WTF::FixedVector::end const):
1397         (WTF::FixedVector::rbegin):
1398         (WTF::FixedVector::rend):
1399         (WTF::FixedVector::rbegin const):
1400         (WTF::FixedVector::rend const):
1401         (WTF::FixedVector::at):
1402         (WTF::FixedVector::at const):
1403         (WTF::FixedVector::operator[]):
1404         (WTF::FixedVector::operator[] const):
1405         (WTF::FixedVector::first):
1406         (WTF::FixedVector::first const):
1407         (WTF::FixedVector::last):
1408         (WTF::FixedVector::last const):
1409         (WTF::FixedVector::fill):
1410         (WTF::FixedVector::operator== const):
1411         (WTF::FixedVector::swap):
1412         (WTF::swap):
1413         * wtf/RefCountedArray.h:
1414         (WTF::RefCountedArray::RefCountedArray):
1415         (WTF::RefCountedArray::fill):
1416         (WTF::RefCountedArray::swap):
1417
1418 2021-04-06  Youenn Fablet  <youenn@apple.com>
1419
1420         Enable NSURLSession WebSocket code path by default
1421         https://bugs.webkit.org/show_bug.cgi?id=224102
1422
1423         Reviewed by Alex Christensen.
1424
1425         * Scripts/Preferences/WebPreferencesExperimental.yaml:
1426
1427 2021-04-05  Yusuke Suzuki  <ysuzuki@apple.com>
1428
1429         [JSC] Shrink some of Vectors in JSC
1430         https://bugs.webkit.org/show_bug.cgi?id=224162
1431
1432         Reviewed by Simon Fraser.
1433
1434         Add rbegin and rend to make RefCountedArray usable for Vector clients who use these features.
1435
1436         * wtf/RefCountedArray.h:
1437         (WTF::RefCountedArray::begin):
1438         (WTF::RefCountedArray::end):
1439         (WTF::RefCountedArray::begin const):
1440         (WTF::RefCountedArray::end const):
1441         (WTF::RefCountedArray::rbegin):
1442         (WTF::RefCountedArray::rend):
1443         (WTF::RefCountedArray::rbegin const):
1444         (WTF::RefCountedArray::rend const):
1445
1446 2021-04-05  Alex Christensen  <achristensen@webkit.org>
1447
1448         Resurrect Mac CMake build
1449         https://bugs.webkit.org/show_bug.cgi?id=224084
1450
1451         Reviewed by Tim Horton.
1452
1453         * wtf/PlatformMac.cmake:
1454
1455 2021-04-05  Wenson Hsieh  <wenson_hsieh@apple.com>
1456
1457         REGRESSION: ASSERTION FAILED: settings().textAutosizingEnabled() && settings().textAutosizingUsesIdempotentMode() on various tests
1458         https://bugs.webkit.org/show_bug.cgi?id=209450
1459         <rdar://problem/60799255>
1460
1461         Reviewed by Tim Horton.
1462
1463         Replace the call to `setNeedsRecalcStyleInAllFrames` with `textAutosizingUsesIdempotentModeChanged` when
1464         changing whether idempotent text autosizing is enabled.
1465
1466         * Scripts/Preferences/WebPreferencesInternal.yaml:
1467
1468 2021-04-05  Yusuke Suzuki  <ysuzuki@apple.com>
1469
1470         Define AtomString(ASCIILiteral) and use ASCIILiteral more to avoid memory allocation
1471         https://bugs.webkit.org/show_bug.cgi?id=224125
1472
1473         Reviewed by Saam Barati.
1474
1475         Add AtomString(ASCIILiteral). ASCIILiteral ensures that storage is constant non-heap string by its type.
1476         So we can just use it as a literal (not allocating a string storage).
1477
1478         * wtf/text/AtomString.h:
1479
1480 2021-04-02  Simon Fraser  <simon.fraser@apple.com>
1481
1482         Enable PreferPageRenderingUpdatesNear60FPSEnabled by default
1483         https://bugs.webkit.org/show_bug.cgi?id=224133
1484
1485         Reviewed by Tim Horton.
1486
1487         Turn the PreferPageRenderingUpdatesNear60FPSEnabled internal setting on by default. This
1488         means that requestAnimationFrame on 144Hz displays will fire at 72Hz. 60Hz displays are
1489         unaffected.
1490
1491         Firing at "close to 60fps" was determined to be necessary for web compatibility and power.
1492
1493         * Scripts/Preferences/WebPreferencesInternal.yaml:
1494
1495 2021-04-02  Youenn Fablet  <youenn@apple.com>
1496
1497         [MacOS] Enable NSURLSession WebSocket code path in WebKitTestRunner
1498         https://bugs.webkit.org/show_bug.cgi?id=220973
1499         <rdar://problem/73655870>
1500
1501         Reviewed by Darin Adler.
1502
1503         * wtf/PlatformHave.h:
1504         Bump NSURLSessionWebSocket path to above BigSur and iOS14.
1505
1506 2021-04-02  Yusuke Suzuki  <ysuzuki@apple.com>
1507
1508         Unreviewed, fix passing hash value
1509         https://bugs.webkit.org/show_bug.cgi?id=223895
1510
1511         * wtf/RobinHoodHashTable.h:
1512         (WTF::SizePolicy>::addPassingHashCode):
1513
1514 2021-04-01  Yusuke Suzuki  <ysuzuki@apple.com>
1515
1516         [WTF] Introduce RobinHoodHashTable
1517         https://bugs.webkit.org/show_bug.cgi?id=223895
1518
1519         Reviewed by Fil Pizlo.
1520
1521         This patch implements RobinHoodHashTable[1]. We don't use it as a default hashtable since it has different performance v.s. memory-saving characteristics,
1522         and this patch's goal is not tackling on making this default. Rather, the goal of this patch is introducing it to non-performance sensitive area quickly
1523         so that we can save memory. RobinHoodHashTable more frequently computes hash value compared to HashTable, so this is not drop-in replacement for the existing
1524         one. But still, this is useful since we know that "while there are many small HashTables and they holds much memory, there are super large HashTables and
1525         they holds almost same amount of memory while they are a few.". This patch's goal is applying this RobinHoodHashTable to these "large, but a few" singleton tables.
1526
1527         RobinHoodHashTable maintains distance-from-initial-bucket (DIB) small by adjusting existing entries when inserting. When inserting, if we found that the
1528         existing entry has less DIB than the current inserting entry's DIB, then we swap entries, and insert the existing entry to the other place. This is giving
1529         some good DIB from rich entry to poor entry (that's why it is called RobinHood Hashing), and making average DIB lower. And this algorithm adds good invariant
1530         that, when looking up an entry, and we found that existing entry has smaller DIB, then we can stop searching in the middle of the chain since we know that
1531         we should swap entries when this happened when inserting. These two tricks maintain HashTable performance even under significantly high load factor: 90% load-factor
1532         just works. 95% load-factor regress adding performance, but still it does not become catastrophic compared to normal open-addressing HashTable.
1533
1534         We introduce RobinHoodHashTable, and adding several kinds of tables based on load-factors.
1535
1536         1. MemoryCompactLookupOnlyRobinHoodHashSet / HashMap
1537
1538             This has 95% load-factor. This is suitable for sets and maps which is mostly-constant: constructing once, and looking up repeatedly. In WebKit, there are so
1539             many this kind of tables e.g. singleton HashMap for various kinds of things. We can use this super high load-factor table so that we can save memory even while
1540             we are maintains fast HashTable lookup.
1541
1542         2. MemoryCompactRobinHoodHashSet / HashMap
1543
1544             This has 90% load-factor. It just works, and we can try using it if sets and maps are significantly performance intensive.
1545
1546         3. FastRobinHoodHashSet / HashMap
1547
1548             This has 75% load-factor. This is still good compared to HashSet and HashMap since they are using 50% load-factor for large sized tables. This has very slightly performance regressed
1549             compared to 50% load-factor large HashSet and HashMap, but if that is not performance intensive (e.g. AtomStringTable is one of the most performance intensive table), this is good.
1550
1551         In this patch, we replace many singleton HashSet / HashMap with RobinHoodHashTable.
1552
1553         [1]: https://www.sebastiansylvan.com/post/robin-hood-hashing-should-be-your-default-hash-table-implementation/
1554
1555         * WTF.xcodeproj/project.pbxproj:
1556         * wtf/CMakeLists.txt:
1557         * wtf/Forward.h:
1558         * wtf/HashMap.h:
1559         (WTF::Y>::swap):
1560         (WTF::Y>::size const):
1561         (WTF::Y>::capacity const):
1562         (WTF::Y>::isEmpty const):
1563         (WTF::Y>::begin):
1564         (WTF::Y>::end):
1565         (WTF::Y>::begin const):
1566         (WTF::Y>::end const):
1567         (WTF::Y>::find):
1568         (WTF::Y>::find const):
1569         (WTF::Y>::contains const):
1570         (WTF::Y>::get const):
1571         (WTF::Y>::inlineGet const):
1572         (WTF::TableTraitsArg>::inlineSet):
1573         (WTF::TableTraitsArg>::inlineAdd):
1574         (WTF::TableTraitsArg>::inlineEnsure):
1575         (WTF::TableTraitsArg>::set):
1576         (WTF::TableTraitsArg>::add):
1577         (WTF::TableTraitsArg>::fastAdd):
1578         (WTF::TableTraitsArg>::ensure):
1579         (WTF::Y>::remove):
1580         (WTF::Y>::removeIf):
1581         (WTF::Y>::clear):
1582         (WTF::Y>::take):
1583         (WTF::Y>::checkConsistency const):
1584         (WTF::Y>::isValidKey):
1585         (WTF::operator==):
1586         (WTF::operator!=):
1587         (WTF::X>::swap): Deleted.
1588         (WTF::X>::size const): Deleted.
1589         (WTF::X>::capacity const): Deleted.
1590         (WTF::X>::isEmpty const): Deleted.
1591         (WTF::X>::begin): Deleted.
1592         (WTF::X>::end): Deleted.
1593         (WTF::X>::begin const): Deleted.
1594         (WTF::X>::end const): Deleted.
1595         (WTF::X>::find): Deleted.
1596         (WTF::X>::find const): Deleted.
1597         (WTF::X>::contains const): Deleted.
1598         (WTF::X>::get const): Deleted.
1599         (WTF::X>::inlineGet const): Deleted.
1600         (WTF::MappedTraitsArg>::inlineSet): Deleted.
1601         (WTF::MappedTraitsArg>::inlineAdd): Deleted.
1602         (WTF::MappedTraitsArg>::inlineEnsure): Deleted.
1603         (WTF::MappedTraitsArg>::set): Deleted.
1604         (WTF::MappedTraitsArg>::add): Deleted.
1605         (WTF::MappedTraitsArg>::fastAdd): Deleted.
1606         (WTF::MappedTraitsArg>::ensure): Deleted.
1607         (WTF::MappedTraits>::get const): Deleted.
1608         (WTF::MappedTraits>::inlineGet const): Deleted.
1609         (WTF::X>::remove): Deleted.
1610         (WTF::X>::removeIf): Deleted.
1611         (WTF::X>::clear): Deleted.
1612         (WTF::MappedTraits>::take): Deleted.
1613         (WTF::X>::take): Deleted.
1614         (WTF::X>::checkConsistency const): Deleted.
1615         (WTF::X>::isValidKey): Deleted.
1616         * wtf/HashSet.h:
1617         (WTF::W>::swap):
1618         (WTF::W>::size const):
1619         (WTF::W>::capacity const):
1620         (WTF::W>::isEmpty const):
1621         (WTF::W>::begin const):
1622         (WTF::W>::end const):
1623         (WTF::W>::find const):
1624         (WTF::W>::contains const):
1625         (WTF::TableTraits>::find const):
1626         (WTF::TableTraits>::contains const):
1627         (WTF::TableTraits>::ensure):
1628         (WTF::W>::add):
1629         (WTF::W>::addVoid):
1630         (WTF::TableTraits>::add):
1631         (WTF::W>::remove):
1632         (WTF::W>::removeIf):
1633         (WTF::W>::clear):
1634         (WTF::W>::take):
1635         (WTF::W>::takeAny):
1636         (WTF::TableTraits>::remove):
1637         (WTF::TableTraits>::take):
1638         (WTF::W>::isValidValue):
1639         (WTF::= const):
1640         (WTF::W>::checkConsistency const):
1641         (WTF::V>::swap): Deleted.
1642         (WTF::V>::size const): Deleted.
1643         (WTF::V>::capacity const): Deleted.
1644         (WTF::V>::isEmpty const): Deleted.
1645         (WTF::V>::begin const): Deleted.
1646         (WTF::V>::end const): Deleted.
1647         (WTF::V>::find const): Deleted.
1648         (WTF::V>::contains const): Deleted.
1649         (WTF::Traits>::find const): Deleted.
1650         (WTF::Traits>::contains const): Deleted.
1651         (WTF::Traits>::ensure): Deleted.
1652         (WTF::V>::add): Deleted.
1653         (WTF::V>::addVoid): Deleted.
1654         (WTF::Traits>::add): Deleted.
1655         (WTF::V>::remove): Deleted.
1656         (WTF::V>::removeIf): Deleted.
1657         (WTF::V>::clear): Deleted.
1658         (WTF::V>::take): Deleted.
1659         (WTF::V>::takeAny): Deleted.
1660         (WTF::Traits>::remove): Deleted.
1661         (WTF::Traits>::take): Deleted.
1662         (WTF::V>::isValidValue): Deleted.
1663         (WTF::V>::checkConsistency const): Deleted.
1664         * wtf/HashTable.h:
1665         (WTF::addIterator):
1666         (WTF::removeIterator):
1667         (WTF::invalidateIterators):
1668         (WTF::HashTable::~HashTable):
1669         (WTF::HashTable::random):
1670         (WTF::KeyTraits>::inlineLookup):
1671         (WTF::KeyTraits>::lookupForWriting):
1672         (WTF::KeyTraits>::fullLookupForWriting):
1673         (WTF::KeyTraits>::addUniqueForInitialization):
1674         (WTF::KeyTraits>::add):
1675         (WTF::KeyTraits>::addPassingHashCode):
1676         (WTF::KeyTraits>::removeAndInvalidateWithoutEntryConsistencyCheck):
1677         (WTF::KeyTraits>::removeAndInvalidate):
1678         (WTF::KeyTraits>::clear):
1679         (WTF::KeyTraits>::swap):
1680         (WTF::KeyTraits>::HashTable):
1681         (WTF::HashTable::invalidateIterators): Deleted.
1682         (WTF::KeyTraits>::invalidateIterators): Deleted.
1683         * wtf/RobinHoodHashMap.h: Added.
1684         * wtf/RobinHoodHashSet.h: Added.
1685         * wtf/RobinHoodHashTable.h: Added.
1686         (WTF::RobinHoodHashTable::~RobinHoodHashTable):
1687         (WTF::RobinHoodHashTable::begin):
1688         (WTF::RobinHoodHashTable::end):
1689         (WTF::RobinHoodHashTable::begin const):
1690         (WTF::RobinHoodHashTable::end const):
1691         (WTF::RobinHoodHashTable::random):
1692         (WTF::RobinHoodHashTable::random const):
1693         (WTF::RobinHoodHashTable::size const):
1694         (WTF::RobinHoodHashTable::capacity const):
1695         (WTF::RobinHoodHashTable::isEmpty const):
1696         (WTF::RobinHoodHashTable::reserveInitialCapacity):
1697         (WTF::RobinHoodHashTable::add):
1698         (WTF::RobinHoodHashTable::find):
1699         (WTF::RobinHoodHashTable::find const):
1700         (WTF::RobinHoodHashTable::contains const):
1701         (WTF::RobinHoodHashTable::isEmptyBucket):
1702         (WTF::RobinHoodHashTable::isEmptyOrDeletedBucket):
1703         (WTF::RobinHoodHashTable::lookup):
1704         (WTF::RobinHoodHashTable::checkTableConsistency):
1705         (WTF::RobinHoodHashTable::internalCheckTableConsistency const):
1706         (WTF::RobinHoodHashTable::internalCheckTableConsistencyExceptSize const):
1707         (WTF::RobinHoodHashTable::internalCheckTableConsistencyExceptSize):
1708         (WTF::RobinHoodHashTable::internalCheckTableConsistency):
1709         (WTF::RobinHoodHashTable::shouldExpand):
1710         (WTF::RobinHoodHashTable::computeTableHash):
1711         (WTF::RobinHoodHashTable::shouldExpand const):
1712         (WTF::RobinHoodHashTable::shouldShrink const):
1713         (WTF::RobinHoodHashTable::shrink):
1714         (WTF::RobinHoodHashTable::deleteBucket):
1715         (WTF::RobinHoodHashTable::desiredIndex):
1716         (WTF::RobinHoodHashTable::probeDistance):
1717         (WTF::RobinHoodHashTable::makeIterator):
1718         (WTF::RobinHoodHashTable::makeConstIterator const):
1719         (WTF::RobinHoodHashTable::makeKnownGoodIterator):
1720         (WTF::RobinHoodHashTable::makeKnownGoodConstIterator const):
1721         (WTF::RobinHoodHashTable::checkTableConsistencyExceptSize):
1722         (WTF::RobinHoodHashTable::tableSize const):
1723         (WTF::RobinHoodHashTable::tableSizeMask const):
1724         (WTF::RobinHoodHashTable::keyCount const):
1725         (WTF::RobinHoodHashTable::tableHash const):
1726         (WTF::SizePolicy>::checkKey):
1727         (WTF::SizePolicy>::lookup):
1728         (WTF::SizePolicy>::inlineLookup):
1729         (WTF::SizePolicy>::initializeBucket):
1730         (WTF::SizePolicy>::add):
1731         (WTF::SizePolicy>::maintainProbeDistanceForAdd):
1732         (WTF::SizePolicy>::addPassingHashCode):
1733         (WTF::SizePolicy>::reinsert):
1734         (WTF::SizePolicy>::find):
1735         (WTF::SizePolicy>::find const):
1736         (WTF::SizePolicy>::contains const):
1737         (WTF::SizePolicy>::removeAndInvalidateWithoutEntryConsistencyCheck):
1738         (WTF::SizePolicy>::removeAndInvalidate):
1739         (WTF::SizePolicy>::remove):
1740         (WTF::SizePolicy>::removeWithoutEntryConsistencyCheck):
1741         (WTF::SizePolicy>::allocateTable):
1742         (WTF::SizePolicy>::deallocateTable):
1743         (WTF::SizePolicy>::expand):
1744         (WTF::SizePolicy>::computeBestTableSize):
1745         (WTF::SizePolicy>::shrinkToBestSize):
1746         (WTF::SizePolicy>::rehash):
1747         (WTF::SizePolicy>::clear):
1748         (WTF::SizePolicy>::RobinHoodHashTable):
1749         (WTF::SizePolicy>::swap):
1750         (WTF::=):
1751         (WTF::SizePolicy>::checkTableConsistency const):
1752         (WTF::SizePolicy>::checkTableConsistencyExceptSize const):
1753         * wtf/text/AtomStringHash.h:
1754         * wtf/text/AtomStringImpl.cpp:
1755         * wtf/text/AtomStringTable.cpp:
1756         (WTF::AtomStringTable::~AtomStringTable):
1757         * wtf/text/AtomStringTable.h:
1758         (WTF::AtomStringTable::table):
1759         * wtf/text/StringHash.h:
1760
1761 2021-04-01  Kate Cheney  <katherine_cheney@apple.com>
1762
1763         Clear network website data when a user clears history/website data
1764         https://bugs.webkit.org/show_bug.cgi?id=224030
1765         <rdar://problem/75288338>
1766
1767         Reviewed by David Kilzer.
1768
1769         * wtf/cocoa/SoftLinking.h:
1770         Add a new soft link macro to link umbrella private frameworks. We need
1771         this to support internal additions we need to clear network domain data.
1772
1773 2021-04-01  Chris Dumez  <cdumez@apple.com>
1774
1775         REGRESSION(r275267): [GTK][WPE] 12 new crashes on service-workers layout tests
1776         https://bugs.webkit.org/show_bug.cgi?id=224059
1777
1778         Reviewed by Carlos Alberto Lopez Perez.
1779
1780         Have the glib implementation of FileSystem::writeToFile() return early when the size to
1781         write is 0, instead of calling g_output_stream_write_all(). It appears that passing a
1782         NULL buffer to g_output_stream_write_all() crashes, even if size is 0.
1783
1784         * wtf/glib/FileSystemGlib.cpp:
1785         (WTF::FileSystemImpl::writeToFile):
1786
1787 2021-03-31  Jiewen Tan  <jiewen_tan@apple.com>
1788
1789         Allow ASCWebKitSPISupport to be used on macOS
1790         https://bugs.webkit.org/show_bug.cgi?id=224036
1791         <rdar://76028645>
1792
1793         Reviewed by Brent Fulgham.
1794
1795         * wtf/PlatformHave.h:
1796
1797 2021-03-31  Sam Weinig  <weinig@apple.com>
1798
1799         Ease experimentation by enabling <model> if SEPARATED_MODEL is being used
1800         https://bugs.webkit.org/show_bug.cgi?id=224011
1801
1802         Reviewed by Tim Horton.
1803
1804         * Scripts/Preferences/WebPreferencesExperimental.yaml:
1805         There is little point to experimenting with SEPARATED_MODEL if <model> is disabled.
1806
1807 2021-03-31  Antoine Quint  <graouts@webkit.org>
1808
1809         Remove CA_WHERE_ADDITIVE_TRANSFORMS_ARE_REVERSED
1810         https://bugs.webkit.org/show_bug.cgi?id=224000
1811
1812         Reviewed by Simon Fraser.
1813
1814         Since trunk is no longer maintained on macOS versions earlier than 10.15,
1815         we can remove this compile-time flag.
1816
1817         * wtf/PlatformHave.h:
1818
1819 2021-03-30  Chris Dumez  <cdumez@apple.com>
1820
1821         Service Worker scripts use too much memory in the network process
1822         https://bugs.webkit.org/show_bug.cgi?id=223808
1823         <rdar://75637093>
1824
1825         Reviewed by Geoff Garen.
1826
1827         * wtf/FileSystem.cpp:
1828         (WTF::FileSystemImpl::deleteNonEmptyDirectory):
1829         Add an implementation of FileSystem::deleteNonEmptyDirectory() on all supported platforms.
1830         We previously only had implemetations for Cocoa and Windows.
1831
1832         (WTF::FileSystemImpl::mapToFile):
1833         Moved most of the mapToFile() logic from NetworkCacheData::mapToFile() to FileSystem, so that
1834         it can be reused by the new SWScriptStorage class. It creates the destination file, mmap's it,
1835         writes the provided data to it and then returns the mmap'd file.
1836
1837         (WTF::FileSystemImpl::readOrMakeSalt):
1838         Move readOrMakeSalt() from NetworkCacheData to FileSystem so that it can be reused by the new
1839         SWScriptStorage.
1840         
1841         * wtf/FileSystem.h:
1842
1843 2021-03-30  Sam Weinig  <weinig@apple.com>
1844
1845         JSGlobalObject's m_customGetterFunctionMap and m_customSetterFunctionMap should be sets, not maps, and should use both the identifier and function pointer as the key
1846         https://bugs.webkit.org/show_bug.cgi?id=223613
1847
1848         Reviewed by Saam Barati.
1849
1850         Adds a heterogenous HashSet::ensure, which allows lazy construction of the value to
1851         insert into the HashSet only if the heterogenous key (e.g. a key + HashTranslator
1852         that are not the same as the HashSet's ValueType) does not match any item in the
1853         set. For example given a set of ExpensiveToConstruct, but uniquely identifiable
1854         by CheapToConstruct:
1855         
1856             HashSet<ExpensiveToConstruct> hashSet;
1857             ...
1858             struct Translator {
1859                 static unsigned hash(const CheapToConstruct& key)
1860                 {
1861                     return key.hash();
1862                 }
1863                 static bool equal(const ExpensiveToConstruct& a, const CheapToConstruct& b)
1864                 {
1865                     return a == b;
1866                 }
1867             };
1868             
1869             hashSet.ensure<Translator>(CheapToConstruct { ... }, [] {
1870                 return ExpensiveToConstruct { ... };
1871             });
1872
1873         This will be used by the custom getter/setter sets to avoid constructing the GC objects
1874         unless they are really needed.
1875
1876         Also took the opertunity to replace some typedefs with usings, and fixed some comments.
1877
1878         * wtf/HashSet.h:
1879         (WTF::Traits>::ensure):
1880
1881 2021-03-30  Mark Lam  <mark.lam@apple.com>
1882
1883         Add disableForwardingVPrintfStdErrToOSLog() and use it in the jsc shell.
1884         https://bugs.webkit.org/show_bug.cgi?id=223963
1885
1886         Reviewed by Saam Barati.
1887
1888         * wtf/Assertions.cpp:
1889         (WTF::disableForwardingVPrintfStdErrToOSLog):
1890         * wtf/Assertions.h:
1891         * wtf/WTFConfig.h:
1892
1893 2021-03-29  Alex Christensen  <achristensen@webkit.org>
1894
1895         Use terminate_with_reason instead of xpc_connection_kill
1896         https://bugs.webkit.org/show_bug.cgi?id=223618
1897
1898         Reviewed by Darin Adler.
1899
1900         * wtf/spi/darwin/XPCSPI.h:
1901
1902 2021-03-28  Cameron McCormack  <heycam@apple.com>
1903
1904         Enable AspectRatioOfImgFromWidthAndHeightEnabled for WebKitLegacy.
1905         https://bugs.webkit.org/show_bug.cgi?id=223815
1906
1907         Reviewed by Sam Weinig.
1908
1909         There's no reason this is enabled for WebKit and not WebKitLegacy.
1910         And set WebCore = true since this feature could conceivably be
1911         used in SVG images.
1912
1913         * Scripts/Preferences/WebPreferencesExperimental.yaml:
1914
1915 2021-03-28  Sam Weinig  <weinig@apple.com>
1916
1917         Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS, it seems like it is on for all ports
1918         https://bugs.webkit.org/show_bug.cgi?id=223810
1919
1920         Reviewed by Simon Fraser.
1921
1922         * wtf/PlatformEnable.h:
1923         * wtf/PlatformEnableCocoa.h:
1924         Remove ENABLE_INDEXED_DATABASE and ENABLE_INDEXED_DATABASE_IN_WORKERS.
1925
1926 2021-03-27  Chris Dumez  <cdumez@apple.com>
1927
1928         wtf/Vector.h:1276:88: runtime error: reference binding to null pointer of type 'const WebCore::Style::RuleFeature'
1929         https://bugs.webkit.org/show_bug.cgi?id=223828
1930
1931         Reviewed by David Kilzer.
1932
1933         Fix issue found by UBSan in Vector::append(const U*, size_t):
1934         wtf/Vector.h:1276:88: runtime error: reference binding to null pointer of type 'const WebCore::Style::RuleFeature'
1935         wtf/Vector.h:1276:88: runtime error: reference binding to null pointer of type 'const WebCore::LayoutRect'
1936         wtf/Vector.h:1276:88: runtime error: reference binding to null pointer of type 'const WTF::RefPtr<WebCore::CSSStyleSheet, WTF::RawPtrTraits<WebCore::CSSStyleSheet>, WTF::DefaultRefDerefTraits<WebCore::CSSStyleSheet> >'
1937
1938         * wtf/Vector.h:
1939         (WTF::Malloc>::append):
1940         Return early if dataSize is 0. For some call sites, the pointer may be null and dataSize is 0. In such cases,
1941         we should just return early instead of proceeding and using the null pointer. I believe this can happen if
1942         you call Vector::appendVector() with an empty Vector for example.
1943
1944 2021-03-26  Chris Dumez  <cdumez@apple.com>
1945
1946         REGRESSION (r275038?): Perf test IndexedDB/stress/large-binary-keys.html failing with logging about memory pressure events
1947         https://bugs.webkit.org/show_bug.cgi?id=223826
1948         <rdar://problem/75906134>
1949
1950         Reviewed by Darin Adler.
1951
1952         Use RELEASE_LOG() instead of WTFLogAlways() to log memory pressure events, so that they don't
1953         show on stdout in the performance tests and make them fail.
1954
1955         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
1956         (WTF::MemoryPressureHandler::install):
1957
1958 2021-03-26  Wenson Hsieh  <wenson_hsieh@apple.com>
1959
1960         Use PUICQuickboardController for text input when HAVE(QUICKBOARD_CONTROLLER) is defined
1961         https://bugs.webkit.org/show_bug.cgi?id=223809
1962         <rdar://problem/56730407>
1963
1964         Reviewed by Tim Horton.
1965
1966         Remove the `QuickboardControllerForTextInputEnabled` WebKit preference, now that the feature is enabled by
1967         default behind a build-time flag.
1968
1969         * Scripts/Preferences/WebPreferencesInternal.yaml:
1970
1971 2021-03-26  Yusuke Suzuki  <ysuzuki@apple.com>
1972
1973         [JSC] Use new Apple ICU APIs to avoid C++ ICU API usage
1974         https://bugs.webkit.org/show_bug.cgi?id=223783
1975         <rdar://problem/75060240>
1976
1977         Reviewed by Mark Lam.
1978
1979         * wtf/DateMath.h:
1980         (WTF::LocalTimeOffset::LocalTimeOffset):
1981
1982 2021-03-26  Per Arne  <pvollan@apple.com>
1983
1984         Enforce notifyd message filtering
1985         https://bugs.webkit.org/show_bug.cgi?id=223601
1986         <rdar://75098580>
1987
1988         Reviewed by Brent Fulgham.
1989
1990         Add ENABLE define for Notify filtering.
1991
1992         * wtf/PlatformEnableCocoa.h:
1993
1994 2021-03-26  Dean Jackson  <dino@apple.com>
1995
1996         Enable Metal ANGLE backend for WebGL
1997         https://bugs.webkit.org/show_bug.cgi?id=220076
1998         <rdar://problem/72565020>
1999
2000         Reviewed by Sam Weinig.
2001
2002         Turn the Metal backend for ANGLE on, moving the feature
2003         from Internal to Experimental.
2004
2005         * Scripts/Preferences/WebPreferencesExperimental.yaml:
2006         * Scripts/Preferences/WebPreferencesInternal.yaml:
2007
2008 2021-03-26  Jessie Berlin  <jberlin@webkit.org>
2009
2010         Update the BEFORE/SINCE, SYSTEM_VERSION_PREFIX, and MACOSX_DEPLOYMENT_TARGET flags
2011         https://bugs.webkit.org/show_bug.cgi?id=223779
2012
2013         Reviewed by Tim Horton.
2014
2015         * Configurations/DebugRelease.xcconfig:
2016
2017 2021-03-25  Megan Gardner  <megan_gardner@apple.com>
2018
2019         Have App Highlights be a Configuration Setting instead of an internal Preference setting.
2020         https://bugs.webkit.org/show_bug.cgi?id=223720
2021         rdar://75196085
2022
2023         Reviewed by Wenson Hsieh.
2024
2025         * Scripts/Preferences/WebPreferences.yaml:
2026         * Scripts/Preferences/WebPreferencesInternal.yaml:
2027
2028 2021-03-25  Jessie Berlin  <jberlin@webkit.org>
2029
2030         Remove 10.13 DEPLOYMENT_TARGETs and SYSTEM_VERSION_PREFIXs
2031         https://bugs.webkit.org/show_bug.cgi?id=223765
2032
2033         Reviewed by Tim Horton.
2034
2035         * Configurations/Base.xcconfig:
2036         * Configurations/DebugRelease.xcconfig:
2037
2038 2021-03-25  Commit Queue  <commit-queue@webkit.org>
2039
2040         Unreviewed, reverting r275057.
2041         https://bugs.webkit.org/show_bug.cgi?id=223768
2042
2043         Caused build failure
2044
2045         Reverted changeset:
2046
2047         "Enforce notifyd message filtering"
2048         https://bugs.webkit.org/show_bug.cgi?id=223601
2049         https://trac.webkit.org/changeset/275057
2050
2051 2021-03-25  Kate Cheney  <katherine_cheney@apple.com>
2052
2053         Some calls in AuthenticatorPresenterCoordinator::selectAssertionResponse are not yet available for mac
2054         https://bugs.webkit.org/show_bug.cgi?id=223752
2055         <rdar://problem/75808515>
2056
2057         Reviewed by Jiewen Tan.
2058
2059         * wtf/PlatformHave.h:
2060
2061 2021-03-25  Per Arne  <pvollan@apple.com>
2062
2063         Enforce notifyd message filtering
2064         https://bugs.webkit.org/show_bug.cgi?id=223601
2065         <rdar://75098580>
2066
2067         Reviewed by Brent Fulgham.
2068
2069         Add ENABLE define for Notify filtering.
2070
2071         * wtf/PlatformEnableCocoa.h:
2072
2073 2021-03-25  Don Olmstead  <don.olmstead@sony.com>
2074
2075         Embiggen maximum HashTable size when not using ANGLE
2076         https://bugs.webkit.org/show_bug.cgi?id=223757
2077
2078         Reviewed by Alex Christensen.
2079
2080         This is a partial revert of r274603 which cut the maximum size HashTable from 400 to 250.
2081         When not using ANGLE directly for an OpenGL ES implementation there's some code hashing its
2082         sh::ShaderVariable from the shader compiler ANGLE ships with. This type is too big and
2083         triggers the static_assert.
2084
2085         The eventual goal is for ANGLE to be the OpenGL ES implementation for WebKit when enabling
2086         WebGL. On PlayStation we already have a system OpenGL ES and any use of WebGL is in legacy
2087         applications. The WebGL compliance features in ANGLE aren't needed in this case so ideally
2088         we wouldn't even compile out ANGLE.
2089
2090         This patch punts on fixing the actual problem and just resolves this build issue.
2091
2092         * wtf/HashTable.h:
2093         (WTF::KeyTraits>::inlineLookup):
2094
2095 2021-03-25  Chris Dumez  <cdumez@apple.com>
2096
2097         Do not do process pre-warming when the system is under memory pressure
2098         https://bugs.webkit.org/show_bug.cgi?id=223717
2099         <rdar://problem/75810423>
2100
2101         Reviewed by Antti Koivisto.
2102
2103         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
2104         (WTF::MemoryPressureHandler::install):
2105         - Listen to the same memory pressure notifications on macOS and iOS. Previously, macOS would not respond to
2106           non-critical memory pressure notifications for example. Also, since macOS would not listen for the notification
2107           that happens when the memory usage goes back to normal, MemoruPressureHandler::isUnderMemoryPressure() would
2108           start returning true after a critical memory pressure notification and it would never go back to false.
2109
2110 2021-03-25  Alberto Garcia  <berto@igalia.com>
2111
2112         REGRESSION(r271560): [Linux] release assert in Thread::initializePlatformThreading
2113         https://bugs.webkit.org/show_bug.cgi?id=223069
2114
2115         Reviewed by Carlos Garcia Campos.
2116
2117         Replace an existing signal handler instead of aborting.
2118
2119         * wtf/posix/ThreadingPOSIX.cpp:
2120         (WTF::Thread::initializePlatformThreading):
2121
2122 2021-03-24  Mark Lam  <mark.lam@apple.com>
2123
2124         WTF::setPermissionsOfConfigPage() should allow its VM_FLAGS_PERMANENT workaround unconditionally.
2125         https://bugs.webkit.org/show_bug.cgi?id=223725
2126         rdar://75813316
2127
2128         Reviewed by Saam Barati.
2129
2130         If the OS does not support the flag, then we should not require it.
2131
2132         * wtf/WTFConfig.cpp:
2133         (WTF::setPermissionsOfConfigPage):
2134
2135 2021-03-24  Yusuke Suzuki  <ysuzuki@apple.com>
2136
2137         Use StaticStringImpl instead of StringImpl::createStaticStringImpl if it is not dynamic string content
2138         https://bugs.webkit.org/show_bug.cgi?id=223714
2139
2140         Reviewed by Saam Barati.
2141
2142         We should just use StaticStringImpl instead of StringImpl::createStaticStringImpl if the string content is
2143         not dynamically allocated one. Keep in mind that this URL code is strongly assuming that internal StringImpl
2144         is static so that this string (and URL) can be used in multiple threads. And StaticStringImpl meets this requirement.
2145
2146         * wtf/URL.cpp:
2147         (WTF::aboutBlankURL):
2148         (WTF::aboutSrcDocURL):
2149
2150 2021-03-24  Yusuke Suzuki  <ysuzuki@apple.com>
2151
2152         All string resources from UserAgentStyleSheets / UserAgentScripts should be used as non-copying StringImpl
2153         https://bugs.webkit.org/show_bug.cgi?id=223685
2154
2155         Reviewed by Saam Barati.
2156
2157         Add StringImpl::createWithoutCopying for `const char*`.
2158
2159         * wtf/text/StringImpl.h:
2160         (WTF::StringImpl::createWithoutCopying):
2161
2162 2021-03-24  Eric Carlson  <eric.carlson@apple.com>
2163
2164         [Cocoa] Add Experimental MediaSession coordinator
2165         https://bugs.webkit.org/show_bug.cgi?id=222158
2166         <rdar://problem/74508862>
2167
2168         Reviewed by Jer Noble.
2169
2170         * Scripts/Preferences/WebPreferencesExperimental.yaml:
2171         * wtf/PlatformEnableCocoa.h:
2172
2173 2021-03-24  Chris Dumez  <cdumez@apple.com>
2174
2175         Address undefined behavior found by UBSan in StringToIntegerConversion.h
2176         https://bugs.webkit.org/show_bug.cgi?id=223694
2177
2178         Reviewed by Geoffrey Garen.
2179
2180         Update StringToIntegerConversion to deal with overflows in a well-defined manner,
2181         by relying on CheckedArithmetics. This addresses undefined behavior reborted by
2182         UBSan:
2183         - wtf/text/StringToIntegerConversion.h:94:30: runtime error: signed integer overflow: 2147483640 + 8 cannot be represented in type 'int'
2184         - wtf/text/StringToIntegerConversion.h:104:17: runtime error: negation of -2147483648 cannot be represented in type 'int'; cast to an unsigned type to negate this value to itself
2185
2186         * wtf/text/StringToIntegerConversion.h:
2187         (WTF::toIntegralType):
2188
2189 2021-03-24  Truitt Savell  <tsavell@apple.com>
2190
2191         Unreviewed, reverting r274927.
2192
2193         Broke many tests in WebGL
2194
2195         Reverted changeset:
2196
2197         "Enable Metal ANGLE backend for WebGL"
2198         https://bugs.webkit.org/show_bug.cgi?id=220076
2199         https://commits.webkit.org/r274927
2200
2201 2021-03-24  Chris Dumez  <cdumez@apple.com>
2202
2203         Address undefined behavior found by UBSan in DateMath.h
2204         https://bugs.webkit.org/show_bug.cgi?id=223663
2205
2206         Reviewed by Darin Adler.
2207
2208         Address undefined behavior found by UBSan in DateMath.h
2209         Release/usr/local/include/wtf/DateMath.h:247:39: runtime error: nan is outside the range of representable values of type 'int'
2210         Release/usr/local/include/wtf/DateMath.h:221:29: runtime error: nan is outside the range of representable values of type 'int'
2211         Release/usr/local/include/wtf/DateMath.h:165:38: runtime error: signed integer overflow: -2147483648 - 1 cannot be represented in type 'int'
2212
2213         * wtf/DateMath.h:
2214         (WTF::daysFrom1970ToYear):
2215         Cast year to a double *before* substracting 1 instead of *after*. This works around the fact that INT_MIN-1 would not
2216         fit in an int and would be undefined behavior.
2217
2218         (WTF::dayInYear):
2219         (WTF::msToYear):
2220         Deal with the double potentially being NaN before casting to an int, since
2221         casting NaN to an int type has undefined behavior.
2222
2223 2021-03-23  Dean Jackson  <yolo@apple.com>
2224
2225         Enable Metal ANGLE backend for WebGL
2226         https://bugs.webkit.org/show_bug.cgi?id=220076
2227         <rdar://problem/72565020>
2228
2229         Reviewed by Sam Weinig.
2230
2231         Turn the Metal backend for ANGLE on, moving the feature
2232         from Internal to Experimental.
2233
2234         * Scripts/Preferences/WebPreferencesExperimental.yaml:
2235         * Scripts/Preferences/WebPreferencesInternal.yaml:
2236
2237 2021-03-23  Chris Dumez  <cdumez@apple.com>
2238
2239         DerivedSources/WebKitTestRunner/JSAccessibilityUIElement.cpp:802:72: runtime error: -1 is outside the range of representable values of type 'unsigned int'
2240         https://bugs.webkit.org/show_bug.cgi?id=223650
2241
2242         Reviewed by Darin Adler.
2243
2244         Update the clampTo() template specialization that converts floating types into integer types so that
2245         it deals with NaN inputs in a well-defined manner. Previously, it would simply cast the NaN to the
2246         integer type, which was undefined behavior. We now return the minimum range boundary for the output
2247         when the input is NaN.
2248
2249         * wtf/MathExtras.h:
2250         (clampTo):
2251
2252 2021-03-23  Saam Barati  <sbarati@apple.com>
2253
2254         Don't require VM_FLAGS_PERMANENT on the simulator builds
2255         https://bugs.webkit.org/show_bug.cgi?id=223649
2256         <rdar://problem/75747788>
2257
2258         Reviewed by Alexey Proskuryakov.
2259
2260         Since VM_FLAGS_PERMANENT must be supported by the kernel, let's make
2261         it so that the vm_map that passes this flag in can fail when running
2262         on the simulator. This is to support the use case of running a newer
2263         simulator on an older OS. When the call to vm_map fails when running
2264         on the simulator, we try again without the VM_FLAGS_PERMANENT flag.
2265
2266         * wtf/WTFConfig.cpp:
2267         (WTF::setPermissionsOfConfigPage):
2268
2269 2021-03-23  Alex Christensen  <achristensen@webkit.org>
2270
2271         Remove unused WTF::String::percentage
2272         https://bugs.webkit.org/show_bug.cgi?id=223651
2273
2274         Reviewed by Chris Dumez.
2275
2276         * wtf/text/AtomString.h:
2277         * wtf/text/WTFString.cpp:
2278         (WTF::String::percentage const): Deleted.
2279         * wtf/text/WTFString.h:
2280
2281 2021-03-23  Chris Dumez  <cdumez@apple.com>
2282
2283         wtf/text/IntegerToStringConversion.h:54:104: runtime error: negation of -2147483648 cannot be represented in type 'int'; cast to an unsigned type to negate this value to itself
2284         https://bugs.webkit.org/show_bug.cgi?id=223614
2285
2286         Reviewed by Darin Adler.
2287
2288         numberToStringSigned() was calling -number when number is negative. This could trigger undefined behavior
2289         since -number may not be representable in the input type. For example, if the type was int and number was
2290         INT_MIN, -INT_MIN would overflow and the result would be undefined. To address the issue, we now cast
2291         number to the destination *unsigned* type *before* negating it.
2292
2293         * wtf/text/IntegerToStringConversion.h:
2294         (WTF::numberToStringSigned):
2295
2296 2021-03-23  Alex Christensen  <achristensen@webkit.org>
2297
2298         Optimize StringView::CodePoints::Iterator
2299         https://bugs.webkit.org/show_bug.cgi?id=162315
2300
2301         Reviewed by Darin Adler.
2302
2303         This stores range pointers in the iterator instead of a pointer to a pointer.
2304
2305         * wtf/text/StringView.h:
2306         (WTF::StringView::CodePoints::Iterator::Iterator):
2307         (WTF::StringView::CodePoints::Iterator::operator++):
2308         (WTF::StringView::CodePoints::Iterator::operator* const):
2309         (WTF::StringView::CodePoints::Iterator::operator== const):
2310
2311 2021-03-23  Chris Dumez  <cdumez@apple.com>
2312
2313         Add assertions to guard against heap allocations on the audio thread
2314         https://bugs.webkit.org/show_bug.cgi?id=223226
2315
2316         Reviewed by Darin Adler.
2317
2318         Add ForbidMallocUseForCurrentThreadScope to FastMalloc.h to enable assertions guarding against
2319         doing heap allocations on the current thread (during the lifetime of the Scope object).
2320
2321         Also add a DisableMallocRestrictionsForCurrentThreadScope to temporarily disable those checks
2322         to allow for some very specific assertions (either because they are required, or simply because
2323         they are not fixed yet).
2324
2325         * wtf/FastMalloc.cpp:
2326         (WTF::ForbidMallocUseForCurrentThreadScope::ForbidMallocUseForCurrentThreadScope):
2327         (WTF::ForbidMallocUseForCurrentThreadScope::~ForbidMallocUseForCurrentThreadScope):
2328         (WTF::DisableMallocRestrictionsForCurrentThreadScope::DisableMallocRestrictionsForCurrentThreadScope):
2329         (WTF::DisableMallocRestrictionsForCurrentThreadScope::~DisableMallocRestrictionsForCurrentThreadScope):
2330         (WTF::tryFastMalloc):
2331         (WTF::fastMalloc):
2332         (WTF::tryFastCalloc):
2333         (WTF::fastCalloc):
2334         (WTF::fastRealloc):
2335         (WTF::tryFastRealloc):
2336         (WTF::fastAlignedMalloc):
2337         (WTF::tryFastAlignedMalloc):
2338         * wtf/FastMalloc.h:
2339         (WTF::ForbidMallocUseForCurrentThreadScope::~ForbidMallocUseForCurrentThreadScope):
2340         (WTF::DisableMallocRestrictionsForCurrentThreadScope::~DisableMallocRestrictionsForCurrentThreadScope):
2341
2342 2021-03-22  Devin Rousso  <drousso@apple.com>
2343
2344         Remove unused JS and CSS files of media controls
2345         https://bugs.webkit.org/show_bug.cgi?id=214955
2346         <rdar://problem/66604040>
2347
2348         Reviewed by Eric Carlson.
2349
2350         Cocoa platforms are already using modern media controls so there's no reason to keep the old
2351         media controls resources/logic around any longer. It just wastes space.
2352
2353         The non-iOS Apple controls must be kept though as they are still used on Windows.
2354
2355         * wtf/PlatformEnable.h:
2356         * wtf/PlatformEnableCocoa.h:
2357         * Scripts/Preferences/WebPreferences.yaml:
2358         Replace `ModernMediaControlsEnabled` setting with `ENABLE_MODERN_MEDIA_CONTROLS` build flag.
2359
2360 2021-03-22  Rob Buis  <rbuis@igalia.com>
2361
2362         [css-contain] Parse CSS contain property
2363         https://bugs.webkit.org/show_bug.cgi?id=223252
2364
2365         Reviewed by Darin Adler.
2366
2367         Add experimental feature flag.
2368
2369         * Scripts/Preferences/WebPreferencesExperimental.yaml:
2370
2371 2021-03-22  Ross Kirsling  <ross.kirsling@sony.com>
2372
2373         Unreviewed, fix Mac and non-unified JSCOnly builds
2374         https://bugs.webkit.org/show_bug.cgi?id=223546
2375
2376         * wtf/PlatformJSCOnly.cmake:
2377         Add missing file for JSCOnly build on Mac.
2378
2379 2021-03-19  Darin Adler  <darin@apple.com>
2380
2381         [Cocoa] Make it possible to release a WKWebView on a non-main thread without a crash due to WKScriptMessage race
2382         https://bugs.webkit.org/show_bug.cgi?id=222336
2383
2384         Reviewed by Chris Dumez.
2385
2386         * wtf/spi/cocoa/objcSPI.h: Removed unnecessary #if so functions are correctly compiled for
2387         non-Objective-C source files. Added include of <objc/objc.h> so that "id" is defined.
2388
2389 2021-03-19  Sam Weinig  <weinig@apple.com>
2390
2391         Add PropertyName parameter to custom setters to allow shared implementations to do late name lookup
2392         https://bugs.webkit.org/show_bug.cgi?id=223413
2393
2394         Reviewed by Alexey Shvayka.
2395
2396         * wtf/PlatformCallingConventions.h:
2397         Update JSC_DECLARE_CUSTOM_SETTER to account for the new PropertyName parameter.
2398
2399 == Rolled over to ChangeLog-2021-03-18 ==