4fd058e83b86f65f102568f73f21e09a597bc718
[WebKit-https.git] / Source / WTF / ChangeLog
1 2020-06-26  Geoffrey Garen  <ggaren@apple.com>
2
3         Re-land r262863
4         https://bugs.webkit.org/show_bug.cgi?id=213654
5
6         Reviewed by Tadeu Zagallo.
7
8         r263575 should fix the crash we saw.
9
10         * wtf/cocoa/MainThreadCocoa.mm:
11         (WTF::initializeMainThreadPlatform):
12         (WTF::scheduleDispatchFunctionsOnMainThread):
13         (-[JSWTFMainThreadCaller call]): Deleted.
14
15 2020-06-26  Geoffrey Garen  <ggaren@apple.com>
16
17         Initializing the main thread should initialize the main run loop
18         https://bugs.webkit.org/show_bug.cgi?id=213637
19
20         Reviewed by Anders Carlsson.
21
22         Previously, some code initialized one, some the other, and some both;
23         and some code tried to initialize more than once; and some code tried
24         to initialize in ways that would crash but luckily got pre-empted by
25         other code that had already initialized.
26
27         In addition to general confusion, this setup made it subtly high stakes
28         to call certain functions, like callOnMainThread or
29         RunLoop::main().dispatch(), because they might crash if the right
30         initialization had not been performed.
31
32         Let's fix that.
33
34         * wtf/MainThread.cpp:
35         (WTF::initializeMainThread): Removed defunct comment about
36         initializeMainThreadToProcessMainThread. Shrank scope of initializeKey.
37         * wtf/RunLoop.cpp:
38         (WTF::RunLoop::initializeMain): Don't call initializeMainThread anymore
39         because it calls us now. No need for a store fence since we run on the
40         main thread and we don't store anything.
41         (WTF::RunLoop::initializeWeb): Upgrade to RELEASE_ASSERT.
42         * wtf/RunLoop.h: Removed incorrect comment. (Fascinating to wonder when
43         it became incorrect.)
44
45 2020-06-25  Sam Weinig  <weinig@apple.com>
46
47         Add a new templated string type to help write more idiomatic parsing code
48         https://bugs.webkit.org/show_bug.cgi?id=213588
49
50         Reviewed by Darin Adler.
51         
52         Introduce StringParsingBuffer<CharType>, a new class in the String class family
53         designed to be used by parsing code. It's designed to be used with the helper
54         function, readCharactersForParsing, and for the user to write the parsing code
55         in a way that will work for both latin1 and UTF-16 inputs. Most usage will likely
56         follow something like the following form
57         
58         {
59             ...
60             auto parsedResult = readCharactersForParsing(stringishObjectToParse, [](auto parsingBuffer) {
61                 while (parsingBuffer.hasCharactersRemaining()) {
62                     if (*parsingBuffer == foo) {
63                         ...
64                     }
65                 }
66
67                 ...
68
69                 return parsedResult
70             });
71             ...
72         }
73
74         API tests added.
75
76         * WTF.xcodeproj/project.pbxproj:
77         * wtf/CMakeLists.txt:
78         Add StringParsingBuffer.h
79
80         * wtf/Forward.h:
81         Forward declare StringParsingBuffer.
82
83         * wtf/text/StringParsingBuffer.h: 
84         Added.
85
86 2020-06-25  Tadeu Zagallo  <tzagallo@apple.com>
87
88         WTF::callOnMainThread should not require the main runloop to be initialized
89         https://bugs.webkit.org/show_bug.cgi?id=213612
90         <rdar://problem/64446028>
91
92         Reviewed by Yusuke Suzuki.
93
94         When using JavaScriptCore as a framework, the WTF main runloop is never initialized. However,
95         the inspector uses CFString wrappers, which use `callOnMainThread` when deallocating the
96         underlying string. For now, we bring back the old `JSWTFMainThreadCaller` to ensure we have
97         a way of dispatching to the main thread, even when the main runloop hasn't been initialized.
98
99         * wtf/RunLoop.cpp:
100         (WTF::RunLoop::mainIfExists):
101         * wtf/RunLoop.h:
102         * wtf/cocoa/MainThreadCocoa.mm:
103         (-[JSWTFMainThreadCaller call]):
104         (WTF::initializeMainThreadPlatform):
105         (WTF::scheduleDispatchFunctionsOnMainThread):
106
107 2020-06-24  Umar Iqbal  <uiqbal@apple.com>
108
109         We should resurrect the older patch that collects some statistics of web API calls
110         https://bugs.webkit.org/show_bug.cgi?id=213319
111
112         Reviewed by Brent Fulgham.
113
114         + Enabled ENABLE_WEB_API_STATISTICS flag
115         
116         * wtf/PlatformEnableCocoa.h:
117
118 2020-06-24  Geoffrey Garen  <ggaren@apple.com>
119
120         Removed the 50ms rescheduling timeout from callOnMainThread
121         https://bugs.webkit.org/show_bug.cgi?id=213560
122
123         Reviewed by Anders Carlsson.
124
125         This is a step toward making the engine less flaky by unifying
126         callOnMainThread with RunLoop::dispatch.
127
128         The timeout was added in r40888 to avoid a hang under heavy postMessage
129         load. A few reasons this isn’t the right approach anymore:
130
131         (1) postMessage has migrated to EventLoop, which does its own
132         scheduling.
133
134         (2) postMessage does not use the application process RunLoop in Modern
135         WebKit.
136
137         (3) Delay is not a sufficient solution to a messaging hang — because
138         you’ll just OOM crash instead. The original author noted this problem
139         in bug 23705 but never resolved it; and we rediscovered it in r233111.
140
141         I verified manually that the r40888 version of
142         fast/workers/worker-timeout.html does not hang.
143
144         * wtf/MainThread.cpp:
145         (WTF::dispatchFunctionsFromMainThread):
146
147 2020-06-23  Geoffrey Garen  <ggaren@apple.com>
148
149         Remove WTF::setMainThreadCallbacksPaused
150         https://bugs.webkit.org/show_bug.cgi?id=213112
151
152         Reviewed by Tim Horton.
153
154         setMainThreadCallbacksPaused pauses all uses of callOnMainThread. That
155         has too many side-effects. For example, you can scroll, but you can't
156         paint any large images (since they do async image decoding).
157
158         Meanwhile, setMainThreadCallbacksPaused doesn't pause RunLoop::dispatch.
159         So, other things don't get paused.
160
161         Let's just rely on suspending the ScriptExecutionContext and document
162         event queue. That should suspend JavaScript-visible stuff without
163         suspending engine-critical stuff.
164
165         * wtf/MainThread.cpp:
166         (WTF::dispatchFunctionsFromMainThread):
167         (WTF::setMainThreadCallbacksPaused): Deleted.
168         * wtf/MainThread.h:
169
170 2020-06-23  Chris Dumez  <cdumez@apple.com>
171
172         Remove a lot of unnecessary calls to Ref::copyRef()
173         https://bugs.webkit.org/show_bug.cgi?id=213533
174
175         Reviewed by Darin Adler.
176
177         Remove a lot of unnecessary calls to Ref::copyRef() now that Ref is copyable.
178
179         * wtf/glib/SocketConnection.cpp:
180         (WTF::SocketConnection::waitForSocketWritability):
181
182 2020-06-23  Saam Barati  <sbarati@apple.com>
183
184         Remove WKkIsTranslated once our bots are updated to the needed SDK
185         https://bugs.webkit.org/show_bug.cgi?id=213489
186
187         Reviewed by Tim Horton.
188
189         We can use the "sysctl.proc_translated" sysctl instead.
190
191         * WTF.xcodeproj/project.pbxproj:
192         * wtf/TranslatedProcess.cpp: Added.
193         (WTF::isX86BinaryRunningOnARM):
194         * wtf/TranslatedProcess.h:
195         (WTF::isX86BinaryRunningOnARM):
196
197 2020-06-23  Mark Lam  <mark.lam@apple.com>
198
199         Handle string overflow in DFG graph dump while validating AI.
200         https://bugs.webkit.org/show_bug.cgi?id=213524
201         <rdar://problem/64635620>
202
203         Reviewed by Saam Barati.
204
205         * wtf/StringPrintStream.cpp:
206         (WTF::StringPrintStream::tryToString):
207         * wtf/StringPrintStream.h:
208
209 2020-06-22  Saam Barati  <sbarati@apple.com>
210
211         Allow building JavaScriptCore Mac+arm64 in public SDK build
212         https://bugs.webkit.org/show_bug.cgi?id=213472
213
214         Reviewed by Sam Weinig.
215
216         * wtf/PlatformEnable.h:
217         * wtf/PlatformEnableCocoa.h:
218         * wtf/PlatformHave.h:
219
220 2020-06-22  Timothy Horton  <timothy_horton@apple.com>
221
222         Fix the build
223
224         * wtf/TranslatedProcess.h:
225         (WTF::isX86BinaryRunningOnARM):
226
227 2020-06-22  Tim Horton  <timothy_horton@apple.com>
228
229         Disable the JS JIT when running in a translated process
230         https://bugs.webkit.org/show_bug.cgi?id=213478
231
232         Reviewed by Saam Barati.
233
234         * wtf/PlatformHave.h:
235         * wtf/TranslatedProcess.h: Added.
236         * WTF.xcodeproj/project.pbxproj:
237         * wtf/CMakeLists.txt:
238         Add a helper function that can be used to determine that the current process
239         is being translated; currently the only case is an x86_64 process running on arm64e.
240
241 2020-06-22  Tim Horton  <timothy_horton@apple.com>
242
243         Update macOS version macros
244         https://bugs.webkit.org/show_bug.cgi?id=213484
245
246         Reviewed by Alexey Proskuryakov.
247
248         * Configurations/Base.xcconfig:
249         * Configurations/DebugRelease.xcconfig:
250
251 2020-06-22  Geoffrey Garen  <ggaren@apple.com>
252
253         Unreviewed, re-landing r262904.
254
255         r263223 should fix the test flakiness we saw.
256
257         Re-landed changeset:
258
259         "[Cocoa] Build callOnMainThread on WTF::RunLoop rather than on
260         a timer"
261         https://bugs.webkit.org/show_bug.cgi?id=213063
262         https://trac.webkit.org/changeset/262904
263
264 2020-06-21  Yusuke Suzuki  <ysuzuki@apple.com>
265
266         [WTF] Ensure ASCIILiteral is ASCII characters at compile time
267         https://bugs.webkit.org/show_bug.cgi?id=213449
268
269         Reviewed by Ross Kirsling.
270
271         The purpose of ASCIILiteral is ensure that this is compile-time (do not need to consider about ownership) ASCII characters.
272         By using `isASCII` and `ASSERT_UNDER_CONSTEXPR_CONTEXT`, we can make sure that this C string does not include non ASCII characters.
273         For example,
274
275             auto globalVariable = "ラーメン (Ramen in Japanese)"_s;
276
277         becomes compile error.
278
279         * wtf/ASCIICType.h:
280         (WTF::isASCII):
281         * wtf/text/ASCIILiteral.h:
282         (WTF::StringLiterals::operator _s):
283
284 2020-06-21  Yusuke Suzuki  <ysuzuki@apple.com>
285
286         [WTF] URL should support dataLog
287         https://bugs.webkit.org/show_bug.cgi?id=213450
288
289         Reviewed by Mark Lam.
290
291         Add URL::dump(PrintStream&) to support `dataLog(url)` which is extremely useful for WTF / JSC developers.
292
293         * wtf/URL.cpp:
294         (WTF::URL::dump const):
295         * wtf/URL.h:
296
297 2020-06-19  Yusuke Suzuki  <ysuzuki@apple.com>
298
299         [JSC] Check Gigacage usage before launching VM
300         https://bugs.webkit.org/show_bug.cgi?id=213410
301
302         Reviewed by Mark Lam.
303
304         * wtf/Gigacage.h:
305         (Gigacage::footprint):
306         (Gigacage::maxSize):
307         (Gigacage::size):
308
309 2020-06-19  Truitt Savell  <tsavell@apple.com>
310
311         Unreviewed, reverting r263223.
312
313         Broke compositing/video/video-border-radius-clipping.html on
314         Mac release wk1
315
316         Reverted changeset:
317
318         "Unreviewed, re-landing r262904."
319         https://bugs.webkit.org/show_bug.cgi?id=213063
320         https://trac.webkit.org/changeset/263223
321
322 2020-06-19  Michael Catanzaro  <mcatanzaro@gnome.org>
323
324         -Wsign-compare in isValidOptionSet
325         https://bugs.webkit.org/show_bug.cgi?id=213383
326
327         Reviewed by Darin Adler.
328
329         The OptionSet's StorageType is always unsigned, even if the enum's underlying value is not.
330         Match this in isValidOptionSet to avoid -Wsign-compare during validity checking.
331
332         * wtf/OptionSet.h:
333         (WTF::isValidOptionSet):
334
335 2020-06-19  Myles C. Maxfield  <mmaxfield@apple.com>
336
337         [Cocoa] Unify "font:" CSS shorthand values between macOS and iOS family
338         https://bugs.webkit.org/show_bug.cgi?id=213332
339         <rdar://problem/64479189>
340
341         Reviewed by Tim Horton and Darin Adler.
342
343         All Cocoa platforms support kCTUIFontTextStyleTitle0 and kCTUIFontTextStyleTitle4.
344
345         * wtf/PlatformHave.h:
346
347 2020-06-18  Mark Lam  <mark.lam@apple.com>
348
349         Unify Bitmap math loops in MarkedBlock::Handle::specializedSweep().
350         https://bugs.webkit.org/show_bug.cgi?id=213345
351
352         Reviewed by Robin Morisset and Saam Barati.
353
354         1. Removed Bitmap::words.  Use Bitmap::numberOfWords instead.
355         2. Removed Bitmap::wordSize.  Use Bitmap::bitsInWord instead.
356         3. Added a new Bitmap::words() method which returns the address of the underlying
357            bitmap storage as a Bitmap::Word*.  This enables clients to do direct bit
358            manipulation on the Bitmap words if needed.
359
360         * wtf/Bitmap.h:
361         (WTF::WordType>::get const):
362         (WTF::WordType>::set):
363         (WTF::WordType>::testAndSet):
364         (WTF::WordType>::testAndClear):
365         (WTF::WordType>::concurrentTestAndSet):
366         (WTF::WordType>::concurrentTestAndClear):
367         (WTF::WordType>::clear):
368         (WTF::WordType>::invert):
369         (WTF::WordType>::nextPossiblyUnset const):
370         (WTF::WordType>::count const):
371         (WTF::WordType>::isEmpty const):
372         (WTF::WordType>::isFull const):
373         (WTF::WordType>::merge):
374         (WTF::WordType>::filter):
375         (WTF::WordType>::exclude):
376         (WTF::WordType>::concurrentFilter):
377         (WTF::WordType>::subsumes const):
378         (WTF::WordType>::forEachSetBit const):
379         (WTF::WordType>::findBit const):
380         (WTF::WordType>::mergeAndClear):
381         (WTF::WordType>::setAndClear):
382         (WTF::WordType>::setEachNthBit):
383         (WTF::= const):
384         (WTF::=):
385         (WTF::WordType>::hash const):
386
387 2020-06-18  Geoffrey Garen  <ggaren@apple.com>
388
389         Unreviewed, re-landing r262904.
390
391         r263219 and r263175 should fix the test flakiness we saw.
392
393         Re-landed changeset:
394
395         "[Cocoa] Build callOnMainThread on WTF::RunLoop rather than on
396         a timer"
397         https://bugs.webkit.org/show_bug.cgi?id=213063
398         https://trac.webkit.org/changeset/262904
399
400 2020-06-18  David Kilzer  <ddkilzer@apple.com>
401
402         [IPC hardening] OptionSet<> values should be validated
403         <https://webkit.org/b/213199>
404         <rdar://problem/64369963>
405
406         Reviewed by Anders Carlsson.
407
408         * wtf/OptionSet.h:
409         (WTF::isValidOptionSet): Add.
410
411 2020-06-17  Mark Lam  <mark.lam@apple.com>
412
413         Replace JSC::FreeList linked list with a Bitmap.
414         https://bugs.webkit.org/show_bug.cgi?id=213071
415
416         Reviewed by Filip Pizlo.
417
418         1. Use countOfBits<> template to compute the number of bits.
419         2. Introduce log2() and log2Constexpr() utility functions.
420         3. Make Bitmap<>::forEachSetBit() a little bit more efficient: we don't need to
421            keep iterating if the bitmap word is already empty of bits.
422
423         * wtf/Bitmap.h:
424         (WTF::WordType>::forEachSetBit const):
425         * wtf/MathExtras.h:
426         (WTF::clzConstexpr):
427         (WTF::clz):
428         (WTF::ctzConstexpr):
429         (WTF::ctz):
430         (WTF::getMSBSet):
431         (WTF::getMSBSetConstexpr):
432         (WTF::log2):
433         (WTF::log2Constexpr):
434
435 2020-06-17  David Kilzer  <ddkilzer@apple.com>
436
437         Replace OptionSetTraits/OptionSetValues with EnumTraits/EnumValues
438         <https://webkit.org/b/213264>
439
440         Reviewed by Brent Fulgham.
441
442         * wtf/OptionSet.h:
443         (WTF::isValidOptionSetEnum):
444         (WTF::maskRawValue):
445         - Replace OptionSetTraits<>/OptionSetValues<> with
446           EnumTraits<>/EnumValues<>.
447
448 2020-06-08  Andy Estes  <aestes@apple.com>
449
450         [Apple Pay] Enable layout tests on more platforms
451         https://bugs.webkit.org/show_bug.cgi?id=212955
452         <rdar://problem/64174156>
453
454         Reviewed by Alex Christensen.
455
456         * wtf/PlatformEnableCocoa.h: Removed ENABLE_APPLE_PAY_INSTALLMENT_IDENTIFIERS,
457         ENABLE_APPLE_PAY_INSTALLMENT_ITEMS, ENABLE_APPLE_PAY_SESSION_V8,
458         ENABLE_APPLE_PAY_SESSION_V9, and ENABLE_APPLE_PAY_SESSION_V10.
459         * wtf/PlatformHave.h: Removed HAVE_PASSKIT_INSTALLMENT_IDENTIFIERS and corrected iOS version
460         checks for HAVE_PASSKIT_INSTALLMENTS.
461
462 2020-06-16  Michael Catanzaro  <mcatanzaro@gnome.org>
463
464         Fix build with !HAVE(MACHINE_CONTEXT)
465         https://bugs.webkit.org/show_bug.cgi?id=213223
466         <rdar://problem/64390209>
467
468         Reviewed by Yusuke Suzuki.
469
470         In r263074, I messed up and broke the build with !HAVE(MACHINE_CONTEXT). Even though the
471         sole purpose of that commit was to fix !HAVE(MACHINE_CONTEXT), I must have somehow messed up
472         when testing my change.
473
474         Anyway, we can just create an empty PlatformRegisters object when HAVE(MACHINE_CONTEXT) is
475         false. At first, I was worried that passing an empty PlatformRegisters could be open to
476         misuse, but it's actually hard to misuse it because the only sensible thing you can do with
477         it is pass it to MachineContext, and you can't use MachineContext outside
478         HAVE(MACHINE_CONTEXT), so we should be good.
479
480         * wtf/threads/Signals.cpp:
481         (WTF::jscSignalHandler):
482
483 2020-06-16  Chris Dumez  <cdumez@apple.com>
484
485         Stop calling userPreferredLanguages() in the UIProcess
486         https://bugs.webkit.org/show_bug.cgi?id=213214
487         <rdar://problem/64317593>
488
489         Reviewed by Per Arne Vollan.
490
491         Export WTF::languageDidChange() so we can call it from WebKit2.
492
493         * wtf/Language.h:
494
495 2020-06-16  Mark Lam  <mark.lam@apple.com>
496
497         Add SIGABRT handler for non OS(DARWIN) builds to the jsc shell with the -s option.
498         https://bugs.webkit.org/show_bug.cgi?id=213200
499
500         Reviewed by Michael Catanzaro.
501
502         * wtf/threads/Signals.h:
503         (WTF::toSystemSignal):
504         (WTF::fromSystemSignal):
505
506 2020-06-15  Michael Catanzaro  <mcatanzaro@gnome.org>
507
508         WTF signal machinery is guarded by #if USE(PTHREADS) && HAVE(MACHINE_CONTEXT) but does not use pthreads or machine context
509         https://bugs.webkit.org/show_bug.cgi?id=213223
510
511         Reviewed by Mark Lam.
512
513         Use #if OS(UNIX) instead.
514
515         * wtf/WTFConfig.h:
516         * wtf/threads/Signals.cpp:
517         * wtf/threads/Signals.h:
518
519 2020-06-15  Keith Miller  <keith_miller@apple.com>
520
521         REGRESSION (r263045): TestWTF.Signals.SignalsWorkOnExit crashing
522         https://bugs.webkit.org/show_bug.cgi?id=213211
523
524         Reviewed by Mark Lam.
525
526         Don't call toMachMask on Signal::Usr as mach doesn't support user exceptions.
527
528         * wtf/threads/Signals.cpp:
529         (WTF::SignalHandlers::add):
530
531 2020-06-15  Michael Catanzaro  <mcatanzaro@gnome.org>
532
533         Consistently use WTF_ATTRIBUTE_PRINTF in Assertions.[cpp,h]
534         https://bugs.webkit.org/show_bug.cgi?id=213204
535
536         Reviewed by Darin Adler.
537
538         Use WTF_ATTRIBUTE_PRINTF for all functions taking a printf format specifier. The first
539         argument should be the position of the format string itself (starting from 1), and the
540         second argument should be the position of the ... parameter pack, or 0 for functions that
541         take a va_list.
542
543         * wtf/Assertions.cpp:
544         * wtf/Assertions.h:
545
546 2020-06-15  Keith Miller  <keith_miller@apple.com>
547
548         Unreviewed, build fix for build without mach exceptions.
549
550         * wtf/threads/Signals.cpp:
551         (WTF::SignalHandlers::add):
552         (WTF::addSignalHandler):
553
554 2020-06-15  Keith Miller  <keith_miller@apple.com>
555
556         Signal handlers should have a two phase installation.
557         https://bugs.webkit.org/show_bug.cgi?id=213160
558
559         Reviewed by Mark Lam.
560
561         LLDB does not like it when we single step while there are mach exception
562         handlers installed because LLDB suspends all the non-active threads.
563         With Mach exception handlers installed, the OS will send a mach message
564         to our exception handler port, which is different than the active thread.
565         When this happens, the combination of LLDB and the process JSC is in effectively
566         deadlock.
567
568         Under our new approach, we go back to only telling the OS we care about
569         these exceptions late but lock down the function pointers early. This way
570         processes that benefit from our exception handler code are easier to debug.
571
572         * wtf/threads/Signals.cpp:
573         (WTF::addSignalHandler):
574         (WTF::activateSignalHandlersFor):
575         (WTF::installSignalHandler): Deleted.
576         * wtf/threads/Signals.h:
577
578 2020-06-15  Per Arne Vollan  <pvollan@apple.com>
579
580         Pack bytes a little tighter in MemoryPressureHandler
581         https://bugs.webkit.org/show_bug.cgi?id=200392
582
583         Reviewed by Yusuke Suzuki.
584
585         Save a tiny bit of memory by packing member variables tighter in MemoryPressureHandler.
586
587         * wtf/MemoryPressureHandler.h:
588
589 2020-06-12  Keith Miller  <keith_miller@apple.com>
590
591         Tests expecting a crash should use a signal handler in the JSC CLI process
592         https://bugs.webkit.org/show_bug.cgi?id=212479
593
594         Reviewed by Yusuke Suzuki.
595
596         Add signals for floating point exceptions and breakpoints. There's a
597         note for breakpoints that explains how using them in the same process
598         as lldb will cause badness. Fortunately, the only place I plan on using
599         the breakpoint handler is to check for tests where crashing is expected.
600
601         * wtf/threads/Signals.cpp:
602         (WTF::fromMachException):
603         (WTF::toMachMask):
604         * wtf/threads/Signals.h:
605         (WTF::toSystemSignal):
606         (WTF::fromSystemSignal):
607
608 2020-06-12  Jason Lawrence  <lawrence.j@apple.com>
609
610         Unreviewed, reverting r262904.
611
612         This commit broke a test on Mac wk1 Debug.
613
614         Reverted changeset:
615
616         "[Cocoa] Build callOnMainThread on WTF::RunLoop rather than on
617         a timer"
618         https://bugs.webkit.org/show_bug.cgi?id=213063
619         https://trac.webkit.org/changeset/262904
620
621 2020-06-12  Adrian Perez de Castro  <aperez@igalia.com>
622
623         Build is broken with EVENT_LOOP_TYPE=GLib
624         https://bugs.webkit.org/show_bug.cgi?id=212987
625
626         Reviewed by Konstantin Tokarev.
627
628         * wtf/CurrentTime.cpp: Make sure that <time.h> is included to get clock_gettime() and
629         friends defined when USE_GLIB is disabled.
630         * wtf/PlatformJSCOnly.cmake: Use FileSystemGLib instead of FileSystemPOSIX when
631         EVENT_LOOP_TYPE=GLib is set, add missing sources needed when ENABLE_REMOTE_INSPECTOR
632         is set.
633         * wtf/glib/RunLoopSourcePriority.h: Use the same list of priorities for WPE and JSCOnly.
634
635 2020-06-11  Alex Christensen  <achristensen@webkit.org>
636
637         Re-enable download resume tests
638         https://bugs.webkit.org/show_bug.cgi?id=213098
639         <rdar://problem/63512518>
640
641         Reviewed by Geoffrey Garen.
642
643         Workaround is no longer needed because underlying bug has been fixed.
644
645         * wtf/PlatformHave.h:
646
647 2020-06-11  Jonathan Bedard  <jbedard@apple.com>
648
649         WebKit: Make UIGestureRecognizer build for watchOS and tvOS
650         https://bugs.webkit.org/show_bug.cgi?id=213038
651         <rdar://problem/64217654>
652
653         Reviewed by Tim Horton.
654
655         * wtf/PlatformHave.h: Enable HAVE(UI_GESTURE_RECOGNIZER_MODIFIER_FLAGS) for watchOS and tvOS.
656
657 2020-06-11  David Kilzer  <ddkilzer@apple.com>
658
659         [IPC] Adopt enum class for DragSourceAction
660         <https://webkit.org/b/212885>
661         <rdar://problem/64094134>
662
663         Reviewed by Darin Adler.
664
665         * wtf/OptionSet.h:
666         (WTF::OptionSet::hasExactlyOneBitSet const): Add.
667         - Move here from WebCore::ExactlyOneBitSet() in
668           Source/WebCore/page/EventHandler.cpp.
669         (WTF::OptionSet::toSingleValue const): Add.
670         - Use hasExactlyOneBitSet() to determine whether exactly one
671           enum bitmask value can be returned.
672
673 2020-06-11  Geoffrey Garen  <ggaren@apple.com>
674
675         [Cocoa] Build callOnMainThread on WTF::RunLoop rather than on a timer
676         https://bugs.webkit.org/show_bug.cgi?id=213063
677
678         Reviewed by Anders Carlsson.
679
680         Always use the RunLoop API for main thread tasks.
681
682         Previously, callOnMainThread sometimes scheduled a timer and sometimes
683         used the RunLoop. (Ironically, the timer behavior was added in r55816
684         with the intention to establish a single point of execution. Now, it has
685         the opposite effect.)
686
687         I picked the RunLoop API rather than the timer API because it moves us
688         closer to universally applying the RunLoop speedup in
689         https://bugs.webkit.org/show_bug.cgi?id=202874. Also, it avoids
690         allocating a timer, which can be expensive.
691
692         * wtf/cocoa/MainThreadCocoa.mm:
693         (WTF::scheduleDispatchFunctionsOnMainThread): The webIfExists() check
694         is a superset of the isWebThread() check, so we can just remove the
695         isWebThread() check when scheduling tasks to the web thread.
696         (WTF::timerFired): Deleted.
697         (WTF::postTimer): Deleted.
698
699 2020-06-10  Geoffrey Garen  <ggaren@apple.com>
700
701         Some style improvements to main thread code
702         https://bugs.webkit.org/show_bug.cgi?id=213051
703
704         Reviewed by Darin Adler.
705
706         * wtf/RunLoop.cpp:
707         (WTF::RunLoop::initializeMain): Renamed initializeMainRunLoop => initializeMain
708         to match the getter's name.
709         (WTF::RunLoop::initializeWeb): Samesies.
710         (WTF::RunLoop::webIfExists): Added an IfExists accessor for use in
711         scheduleDispatchFunctionsOnMainThread().
712         (WTF::RunLoop::initializeMainRunLoop): Deleted.
713         (WTF::RunLoop::initializeWebRunLoop): Deleted.
714
715         * wtf/RunLoop.h:
716
717         * wtf/cocoa/MainThreadCocoa.mm:
718         (WTF::scheduleDispatchFunctionsOnMainThread): Use RunLoop::webIfExists()
719         to check for the web thread run loop, since that's more explicit than
720         checking a pthread variable.
721
722         (WTF::isWebThread): Renamed mainThreadPthread => webThreadPthread because
723         it's the web thread. Changed style on globals to "s_" for consistency.
724         Removed mainThreadNSThread because it was unused.
725         (WTF::initializeApplicationUIThread):
726         (WTF::initializeWebThread):
727         (WTF::canCurrentThreadAccessThreadLocalData):
728
729 2020-06-10  Geoffrey Garen  <ggaren@apple.com>
730
731         [Cocoa] Build callOnMainThread on WTF::RunLoop rather than on NSObject methods
732         https://bugs.webkit.org/show_bug.cgi?id=213043
733
734         Reviewed by Simon Fraser.
735
736         Original patch by Sihui Liu.
737
738         From https://bugs.webkit.org/show_bug.cgi?id=202874, this is the subset
739         of Sihui's patch that unifies some of RunLoop and callOnMainThread.
740
741         My goal is to simplify the code, and shrink the diff when testing
742         CFRunLoopSource1 in the future.
743
744         * wtf/RunLoop.cpp:
745         (WTF::RunLoop::initializeWebRunLoop):
746         (WTF::RunLoop::web):
747         * wtf/RunLoop.h:
748         * wtf/cocoa/MainThreadCocoa.mm:
749         (WTF::initializeMainThreadPlatform):
750         (WTF::scheduleDispatchFunctionsOnMainThread):
751         (WTF::initializeWebThread):
752         (-[JSWTFMainThreadCaller call]): Deleted.
753
754 2020-06-10  Jer Noble  <jer.noble@apple.com>
755
756         Catalyst WebKit apps continue to play audio after quitting
757         https://bugs.webkit.org/show_bug.cgi?id=212981
758         <rdar://problem/57089471>
759
760         Reviewed by Chris Dumez.
761
762         Add the ability to call copyToVector() on a WeakHashSet. This requires two changes:
763         - A template specialization that returns a Vector<WeakPtr<T>> from copyToVector()
764         - A template specialization that calls calculateSize() rather than size() on the object
765           being iterated upon.
766
767         * wtf/WeakHashSet.h:
768         (WTF::copyToVector):
769
770 2020-06-09  Tim Horton  <timothy_horton@apple.com>
771
772         Use os_log instead of asl_log
773         https://bugs.webkit.org/show_bug.cgi?id=213001
774
775         Reviewed by Saam Barati.
776
777         * WTF.xcodeproj/project.pbxproj:
778         * wtf/Assertions.cpp:
779
780 2020-06-09  Chris Dumez  <cdumez@apple.com>
781
782         Use bridge cast in String(NSString *) constructor
783         https://bugs.webkit.org/show_bug.cgi?id=212989
784
785         Reviewed by Darin Adler.
786
787         Use bridge cast in String(NSString *) constructor instead of a reinterpret_cast as this
788         is the preferred way of converting a NS Type to a CF one.
789
790         * wtf/text/cocoa/StringCocoa.mm:
791         (WTF::String::String):
792
793 2020-06-09  Per Arne Vollan  <pvollan@apple.com>
794
795         All platforms should enable CFPrefs read only mode in the WebContent process
796         https://bugs.webkit.org/show_bug.cgi?id=212910
797
798         Reviewed by Tim Horton.
799
800         In https://bugs.webkit.org/show_bug.cgi?id=212411, CFPrefs read only mode was adopted, but not all platforms were included.
801
802         * wtf/PlatformHave.h:
803
804 2020-06-09  Wenson Hsieh  <wenson_hsieh@apple.com>
805
806         REGRESSION (r260820): [macCatalyst] Web process crashes when uploading a file
807         https://bugs.webkit.org/show_bug.cgi?id=212976
808         <rdar://problem/64033186>
809
810         Reviewed by Tim Horton.
811
812         Add `HAVE(FRONTBOARD_SYSTEM_APP_SERVICES)`.
813
814         * wtf/PlatformHave.h:
815
816 2020-06-08  Chris Fleizach  <cfleizach@apple.com>
817
818         HAVE(ACCESSIBILITY_BUNDLES_PATH) is defined in terms of PLATFORM(IOS_FAMILY) but only checks the version of __IPHONE_OS_VERSION_MIN_REQUIRED
819         https://bugs.webkit.org/show_bug.cgi?id=212704
820         <rdar://problem/63931340>
821
822         Reviewed by Darin Adler.
823
824         Ensure that this works for all iOS familes.
825
826         * wtf/PlatformHave.h:
827
828 2020-06-08  Per Arne Vollan  <pvollan@apple.com>
829
830         [Cocoa] Adopt read-only mode for preferences in the WebContent process
831         https://bugs.webkit.org/show_bug.cgi?id=212411
832
833         Reviewed by Darin Adler.
834
835         Change name of HAVE define to match SPI name.
836
837         * wtf/PlatformHave.h:
838
839 2020-06-08  Andy Estes  <aestes@apple.com>
840
841         [Apple Pay] Remove -respondsToSelector: check before calling -[PKPaymentRequest setBoundInterfaceIdentifier:]
842         https://bugs.webkit.org/show_bug.cgi?id=212884
843         <rdar://problem/64090963>
844
845         Reviewed by Youenn Fablet.
846
847         * wtf/PlatformHave.h: On macOS, HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER should be defined
848         starting in Catalina.
849
850 2020-06-08  Andy Estes  <aestes@apple.com>
851
852         [Apple Pay] Remove ENABLE_APPLE_PAY_SETUP, ENABLE_APPLE_PAY_SESSION_V7, and HAVE_PASSKIT_PAYMENT_SETUP
853         https://bugs.webkit.org/show_bug.cgi?id=212883
854         <rdar://problem/64090763>
855
856         Reviewed by Youenn Fablet.
857
858         These macros evaluate to true whenever ENABLE(APPLE_PAY) is true on platforms supported by
859         trunk WebKit, so we can either remove them or replace them with ENABLE(APPLE_PAY).
860
861         * wtf/PlatformEnableCocoa.h:
862         * wtf/PlatformHave.h:
863
864 2020-06-08  youenn fablet  <youenn@apple.com>
865
866         [Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
867         https://bugs.webkit.org/show_bug.cgi?id=206582
868
869         Reviewed by Eric Carlson.
870
871         * wtf/PlatformHave.h:
872
873 2020-06-07  Andy Estes  <aestes@apple.com>
874
875         [Apple Pay] HAVE(PAYMENT_METHOD_BILLING_ADDRESS) should be true on iOS
876         https://bugs.webkit.org/show_bug.cgi?id=212877
877         <rdar://problem/64080998>
878
879         Reviewed by Sam Weinig.
880
881         * wtf/PlatformHave.h:
882
883 2020-06-07  Philippe Normand  <pnormand@igalia.com>
884
885         Remove ENABLE_VIDEO_TRACK ifdef guards
886         https://bugs.webkit.org/show_bug.cgi?id=212568
887
888         Reviewed by Youenn Fablet.
889
890         * wtf/PlatformEnable.h: Remove ENABLE_VIDEO_TRACK, which is now enabled by
891         default under the ENABLE_VIDEO guard.
892         * wtf/PlatformEnableCocoa.h: Ditto.
893
894 2020-06-06  David Kilzer  <ddkilzer@apple.com>
895
896         Use OptionSet<DragOperation> for mask values
897         <https://webkit.org/b/212605>
898
899         Reviewed by Darin Adler.
900
901         * wtf/OptionSet.h:
902         (WTF::OptionSet::OptionSet):
903         - Add constructor for OptionSet(Optional).
904
905 2020-06-05  Ryan Haddad  <ryanhaddad@apple.com>
906
907         Unreviewed, reverting r262619, r262625, and r262641.
908
909         Caused mediarecorder layout test crashes.
910
911         Reverted changesets:
912
913         "[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder"
914         https://bugs.webkit.org/show_bug.cgi?id=206582
915         https://trac.webkit.org/changeset/262619
916
917         "[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder"
918         https://bugs.webkit.org/show_bug.cgi?id=206582
919         https://trac.webkit.org/changeset/262625
920
921         "Unreviewed, silence deprecation warning to fix build with
922         latest SDK."
923         https://trac.webkit.org/changeset/262641
924
925 2020-06-05  Per Arne Vollan  <pvollan@apple.com>
926
927         [Cocoa] Adopt read-only mode for preferences in the WebContent process
928         https://bugs.webkit.org/show_bug.cgi?id=212411
929
930         Reviewed by Darin Adler.
931
932         Create HAVE define indicating support for read-only preference SPI.
933
934         * wtf/PlatformHave.h:
935
936 2020-06-05  youenn fablet  <youenn@apple.com>
937
938         [Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
939         https://bugs.webkit.org/show_bug.cgi?id=206582
940
941         Reviewed by Eric Carlson.
942
943         * wtf/PlatformHave.h:
944
945 2020-06-04  Jonathan Bedard  <jbedard@apple.com>
946
947         WTF: Exclude MachExceptions.defs from all embedded builds
948         https://bugs.webkit.org/show_bug.cgi?id=212796
949
950         Reviewed by Alexey Proskuryakov.
951
952         * Configurations/WTF.xcconfig:
953
954 2020-06-04  Wenson Hsieh  <wenson_hsieh@apple.com>
955
956         [macOS] Add a way to override the contact AutoFill button image
957         https://bugs.webkit.org/show_bug.cgi?id=212775
958         <rdar://problem/60381452>
959
960         Reviewed by Tim Horton.
961
962         Rename `SYSTEM_ATTACHMENT_PLACEHOLDER_ICON` to `ALTERNATE_ICONS`.
963
964         * wtf/PlatformHave.h:
965
966 2020-06-04  Jacob Uphoff  <jacob_uphoff@apple.com>
967
968         Unreviewed, reverting r262546.
969
970         This commit caused internal build failures
971
972         Reverted changeset:
973
974         "[Cocoa] Adopt read-only mode for preferences in the
975         WebContent process"
976         https://bugs.webkit.org/show_bug.cgi?id=212411
977         https://trac.webkit.org/changeset/262546
978
979 2020-06-04  Per Arne Vollan  <pvollan@apple.com>
980
981         [Cocoa] Adopt read-only mode for preferences in the WebContent process
982         https://bugs.webkit.org/show_bug.cgi?id=212411
983
984         Reviewed by Darin Adler.
985
986         Create HAVE define indicating support for read-only preference SPI.
987
988         * wtf/PlatformHave.h:
989
990 2020-06-04  Tim Horton  <timothy_horton@apple.com>
991
992         Work around broken system version macro
993         https://bugs.webkit.org/show_bug.cgi?id=212726
994
995         Reviewed by Dan Bernstein.
996
997         * Configurations/DebugRelease.xcconfig:
998
999 2020-06-04  Andy Estes  <aestes@apple.com>
1000
1001         [watchOS] Re-enable content filtering in the simulator build
1002         https://bugs.webkit.org/show_bug.cgi?id=212711
1003         <rdar://problem/63938350>
1004
1005         Reviewed by Wenson Hsieh.
1006
1007         * wtf/PlatformHave.h:
1008
1009 2020-06-03  Andy Estes  <aestes@apple.com>
1010
1011         [Apple Pay] Add new values for -apple-pay-button-type
1012         https://bugs.webkit.org/show_bug.cgi?id=212684
1013         <rdar://problem/63908535>
1014
1015         Reviewed by Anders Carlsson.
1016
1017         * wtf/PlatformEnableCocoa.h:
1018
1019 2020-06-01  Simon Fraser  <simon.fraser@apple.com>
1020
1021         Add ENABLE(WHEEL_EVENT_REGIONS), enabled on macOS which is the only platform that needs wheel event regions for scrolling thread hit-testing
1022         https://bugs.webkit.org/show_bug.cgi?id=212620
1023
1024         Reviewed by Tim Horton.
1025
1026         Surround code related to wheel event regions with ENABLE(WHEEL_EVENT_REGIONS).
1027
1028         Eventually we'll use this same code for touch event regions, and when we do, we
1029         can rejigger the #ifdefs.
1030
1031         * wtf/PlatformEnable.h:
1032         * wtf/PlatformEnableCocoa.h:
1033
1034 2020-06-02  Mark Lam  <mark.lam@apple.com>
1035
1036         Change Gigacage::Config to use storage in WebConfig::g_config instead of its own.
1037         https://bugs.webkit.org/show_bug.cgi?id=212585
1038         <rdar://problem/63812487>
1039
1040         Reviewed by Yusuke Suzuki.
1041
1042         We now think of the various Config records as being allocated from parts of a
1043         WebConfig::g_config buffer.  WTF::Config will manage the mechanics of freezing
1044         that buffer.  And the JSC VM is still the determiner of if/when to freeze the
1045         buffer, and it will do this at the end of the construction of the very first
1046         VM instance (as before).
1047
1048         Gigacage::Config reserves space in WebConfig::g_config.
1049         WTF::Config will honor that reservation and place itself after that.
1050         JSC::Config will continue to place itself at WTF::Config::spaceForExtensions.
1051
1052         The upside of this approach this is that we can now share the same memory page
1053         for all the Configs, and can freeze them in one go.
1054
1055         The downside is that g_gigacageConfig, g_wtfConfig, and g_jscConfig now have to
1056         be macros.  This results in some weirdness e.g. they are no longer qualified by
1057         namespaces: referring to WTF::g_wtfConfig is now incorrect.
1058
1059         * wtf/Gigacage.h:
1060         (Gigacage::disablingPrimitiveGigacageIsForbidden):
1061         (Gigacage::isDisablingPrimitiveGigacageForbidden): Deleted.
1062         (Gigacage::isPrimitiveGigacagePermanentlyEnabled): Deleted.
1063         (Gigacage::canPrimitiveGigacageBeDisabled): Deleted.
1064         * wtf/WTFConfig.cpp:
1065         (WTF::Config::permanentlyFreeze):
1066         * wtf/WTFConfig.h:
1067         (): Deleted.
1068
1069 2020-06-01  Simon Fraser  <simon.fraser@apple.com>
1070
1071         Add ENABLE(TOUCH_ACTION_REGIONS) to wrap code that's only relevant for platforms that consult touch-action for event handling
1072         https://bugs.webkit.org/show_bug.cgi?id=212572
1073
1074         Reviewed by Andy Estes.
1075
1076         * wtf/PlatformEnable.h:
1077         * wtf/PlatformEnableCocoa.h:
1078
1079 2020-05-31  Mark Lam  <mark.lam@apple.com>
1080
1081         Change JSC::Config to use storage in WTF::Config instead of its own.
1082         https://bugs.webkit.org/show_bug.cgi?id=212575
1083         <rdar://problem/63796584>
1084
1085         Reviewed by Yusuke Suzuki.
1086
1087         * wtf/WTFConfig.h:
1088
1089 2020-05-30  Mark Lam  <mark.lam@apple.com>
1090
1091         Rename Signal::BadAccess to Signal::AccessFault.
1092         https://bugs.webkit.org/show_bug.cgi?id=212577
1093
1094         Reviewed by Yusuke Suzuki.
1095
1096         This is needed because GTK port's X11 has a #define for BadAccess (in include/X11/X.h):
1097
1098             #define BadAccess     10    /* depending on context:
1099                                          - key/button already grabbed
1100                                          - attempt to free an illegal 
1101                                            cmap entry 
1102                                          - attempt to store into a read-only 
1103                                            color map entry.
1104                                          - attempt to modify the access control
1105                                            list from other than the local host.
1106                                          */
1107
1108         As a result, this would break the GTK build when wtf/Signals.h is #include'd.
1109
1110         * wtf/threads/Signals.cpp:
1111         (WTF::fromMachException):
1112         (WTF::toMachMask):
1113         (WTF::jscSignalHandler):
1114         * wtf/threads/Signals.h:
1115         (WTF::toSystemSignal):
1116         (WTF::fromSystemSignal):
1117
1118 2020-05-29  Alex Christensen  <achristensen@webkit.org>
1119
1120         Use correct encoding when converting a WTF::URL to CFURLRef
1121         https://bugs.webkit.org/show_bug.cgi?id=212486
1122
1123         Reviewed by Darin Adler.
1124
1125         * wtf/cf/CFURLExtras.cpp:
1126         (WTF::createCFURLFromBuffer):
1127         * wtf/cf/CFURLExtras.h:
1128         * wtf/cf/URLCF.cpp:
1129         (WTF::URL::createCFURL const):
1130         * wtf/cocoa/URLCocoa.mm:
1131         (WTF::URL::createCFURL const):
1132
1133 2020-05-29  Brent Fulgham  <bfulgham@apple.com>
1134
1135         [Cocoa] Improve logging quality for non-ephemeral sessions
1136         https://bugs.webkit.org/show_bug.cgi?id=212551
1137         <rdar://problem/62461099>
1138
1139         Reviewed by David Kilzer.
1140
1141         * wtf/PlatformHave.h: Add new feature check for CFNetwork convenience setter.
1142
1143 2020-05-29  Wenson Hsieh  <wenson_hsieh@apple.com>
1144
1145         REGRESSION (r261812): editing/async-clipboard/clipboard-item-get-type-basic.html is flaky
1146         https://bugs.webkit.org/show_bug.cgi?id=212281
1147         <rdar://problem/63554912>
1148
1149         Reviewed by Tim Horton.
1150
1151         Add a new `HAVE()` define.
1152
1153         * wtf/PlatformHave.h:
1154
1155 2020-05-27  Keith Miller  <keith_miller@apple.com>
1156
1157         for-of should check the iterable is a JSArray for FastArray in DFG iterator_open
1158         https://bugs.webkit.org/show_bug.cgi?id=212383
1159
1160         Reviewed by Saam Barati.
1161
1162         Optional should be able to copy/move constructor itself as long as <T> is
1163         trivially copyable. This lets us copy Optionals into const globals without
1164         global constructors.
1165
1166         * wtf/Optional.h:
1167         (WTF::Optional::Optional):
1168         (WTF::Optional::__NOEXCEPT_):
1169
1170 2020-05-27  Noam Rosenthal  <noam@webkit.org>
1171
1172         Implement AccessKeyLabel attribute.
1173         https://bugs.webkit.org/show_bug.cgi?id=72715
1174
1175         Reviewed by Darin Adler.
1176
1177         Added character names for upArrow/option, as they're needed for accessKeyLabel.
1178
1179         * wtf/unicode/CharacterNames.h:
1180
1181 2020-05-27  Saam Barati  <sbarati@apple.com>
1182
1183         Improve comments about OS/PLATFORM(IOS) and friends
1184         https://bugs.webkit.org/show_bug.cgi?id=212438
1185
1186         Reviewed by Tim Horton.
1187
1188         * wtf/PlatformLegacy.h:
1189         * wtf/PlatformOS.h:
1190
1191 2020-05-27  David Kilzer  <ddkilzer@apple.com>
1192
1193         Add OptionSetTraits<> and use with WebCore::DragDestinationAction
1194         <https://webkit.org/b/212397>
1195
1196         Reviewed by Alex Christensen.
1197
1198         Add OptionSetTraits<> (similar to EnumTraits<>) to define all
1199         valid values for a given enum type.  This allows us to use that
1200         bitmask with OptionSet<>::fromRaw() to clear undefined bits, and
1201         to validate enum values used with the OptionSet<> constructors.
1202
1203         Note that the extra validation possible with OptionSetTraits<>
1204         is enabled based on the existence of that type using the new
1205         WTF::is_type_complete_v<> type trait.  Other OptionSet<> enums
1206         fall back to the original validation checks.
1207
1208         Finally, typename <T> is changed to <E> for OptionSet<> to
1209         emphasize that it's an enum typename.
1210
1211         * wtf/OptionSet.h:
1212         (WTF::is_type_complete_v): Add.
1213         (WTF::OptionSetTraits): Add.
1214         (WTF::OptionSetValues): Add.
1215         (WTF::OptionSetValueChecker): Add.
1216         (WTF::isValidOptionSetEnum): Add.
1217         (WTF::maskRawValue): Add.
1218         (WTF::OptionSet::Iterator::operator* const):
1219         (WTF::OptionSet::fromRaw):
1220         (WTF::OptionSet::OptionSet):
1221         (WTF::OptionSet::contains const):
1222
1223 2020-05-27  Michael Catanzaro  <mcatanzaro@gnome.org>
1224
1225         -Wdeprecated-copy caused by Bitmap copy assignment operator
1226         https://bugs.webkit.org/show_bug.cgi?id=212421
1227
1228         Reviewed by Mark Lam.
1229
1230         This copy assignment operator is not needed, and causes warnings because we do not have a
1231         corresponding copy constructor. We could add a copy constructor, but it's easiest to just
1232         remove the copy assignment operator.
1233
1234         * wtf/Bitmap.h:
1235
1236 2020-05-26  Darin Adler  <darin@apple.com>
1237
1238         Sort PlatformEnableCocoa.h and add definitions for the simple cases from FeatureDefines.xcconfig
1239         https://bugs.webkit.org/show_bug.cgi?id=212389
1240
1241         Reviewed by Anders Carlsson.
1242
1243         Added more PlatformEnableCocoa.h; allowing us to later remove things from
1244         FeatureDefines.xcconfig (patch forthcoming).
1245
1246         * wtf/PlatformEnableCocoa.h: Added definitions from FeatureDefines.xcconfig that
1247         were simple, and that differ from the defaults in PlatformEnable.h. That includes
1248         3D_TRANSFORMS, ACCESSIBILITY_ISOLATED_TREE (macOS >= 10.6), APPLICATION_MANIFEST,
1249         ASYNC_SCROLLING, ATTACHMENT_ELEMENT, AVF_CAPTIONS, CACHE_PARTITIONING,
1250         CSS_COMPOSITING, CSS_PAINTING_API, CSS_SCROLL_SNAP, CSS_SELECTORS_LEVEL4,
1251         CSS_TRAILING_WORD, CSS_TYPED_OM, DATACUE_VALUE, DATALIST_ELEMENT, FILTERS_LEVEL_2,
1252         GPU_PROCESS, INDEXED_DATABASE, INDEXED_DATABASE_IN_WORKERS, INSPECTOR_TELEMETRY,
1253         INTERSECTION_OBSERVER, LAYOUT_FORMATTING_CONTEXT, LEGACY_CSS_VENDOR_PREFIXES,
1254         LEGACY_CUSTOM_PROTOCOL_MANAGER, MEDIA_CONTROLS_SCRIPT, MEMORY_SAMPLER,
1255         MOUSE_CURSOR_SCALE (macOS), NETWORK_CACHE_SPECULATIVE_REVALIDATION,
1256         NETWORK_CACHE_STALE_WHILE_REVALIDATE, NOTIFICATIONS (macOS), PDFKIT_PLUGIN (macOS),
1257         PERIODIC_MEMORY_MONITOR (macOS), PUBLIC_SUFFIX_LIST, RESIZE_OBSERVER,
1258         RESOURCE_LOAD_STATISTICS, RUBBER_BANDING (macOS), SANDBOX_EXTENSIONS,
1259         SERVER_PRECONNECT, SERVICE_CONTROLS (macOS), SHAREABLE_RESOURCE,
1260         TELEPHONE_NUMBER_DETECTION, TEXT_AUTOSIZING, USERSELECT_ALL, USER_MESSAGE_HANDLERS,
1261         VARIATION_FONTS, VIDEO, VIDEO_USES_ELEMENT_FULLSCREEN (macOS),
1262         WEBDRIVER_KEYBOARD_INTERACTIONS, WEBDRIVER_MOUSE_INTERACTIONS (macOS),
1263         WEBGL, WEBGL2, WEB_AUDIO, WEB_CRYPTO, and WIRELESS_PLAYBACK_TARGET. Sorted and
1264         merged all the existing settings.
1265
1266 2020-05-26  Alex Christensen  <achristensen@webkit.org>
1267
1268         UTF-8 encode strings of invalid URLs when converting WTF::URL to NSURL instead of truncating the UTF-16 encoding
1269         https://bugs.webkit.org/show_bug.cgi?id=212393
1270         <rdar://problem/63095503>
1271
1272         Reviewed by Tim Horton.
1273
1274         This only changes behavior in code that is marked as UNLIKELY because it can only be reached by invalid unicode URLs,
1275         but it can be reached and should behave in a reasonable manner in those cases.  This makes Safari behave more similarly
1276         to Firefox in this case instead of doing something similar to no other browser.
1277
1278         * wtf/URL.cpp:
1279         (WTF::copyASCII): Deleted.
1280         (WTF::URL::copyToBuffer const): Deleted.
1281         * wtf/URL.h:
1282         * wtf/cf/URLCF.cpp:
1283         (WTF::URL::createCFURL const):
1284         * wtf/cocoa/URLCocoa.mm:
1285         (WTF::URL::createCFURL const):
1286
1287 2020-05-26  Yoshiaki JITSUKAWA  <yoshiaki.jitsukawa@sony.com>
1288
1289         [PlayStation] Disable LLINT_EMBEDDED_OPCODE_ID
1290         https://bugs.webkit.org/show_bug.cgi?id=212387
1291
1292         Reviewed by Don Olmstead.
1293
1294         * wtf/CMakeLists.txt:
1295         * wtf/PlatformEnable.h:
1296         * wtf/PlatformEnablePlayStation.h: Added.
1297
1298 2020-05-26  Mark Lam  <mark.lam@apple.com>
1299
1300         Enhance Bitmap::setEachNthBit() to also take an end index.
1301         https://bugs.webkit.org/show_bug.cgi?id=212386
1302         <rdar://problem/63643324>
1303
1304         Reviewed by Robin Morisset.
1305
1306         Previously, it was only taking the n interval, and the start index.
1307         Also fixed isEmpty() and isFull() to return a bool instead of size_t.
1308
1309         * wtf/Bitmap.h:
1310         (WTF::WordType>::isEmpty const):
1311         (WTF::WordType>::isFull const):
1312         (WTF::WordType>::setEachNthBit):
1313
1314 2020-05-26  Don Olmstead  <don.olmstead@sony.com>
1315
1316         [CMake] Add static analyzers
1317         https://bugs.webkit.org/show_bug.cgi?id=212280
1318
1319         Reviewed by David Kilzer.
1320
1321         Export headers from Plaform.h so include-what-you-use does not suggest they be
1322         included directly. The headers being exported will #error when included outside of
1323         Platform.h
1324
1325         * wtf/Platform.h:
1326
1327 2020-05-25  Alex Christensen  <achristensen@webkit.org>
1328
1329         Expose more network metrics to WebCoreNSURLSession
1330         https://bugs.webkit.org/show_bug.cgi?id=212359
1331         <rdar://problem/62909440>
1332
1333         Reviewed by Darin Adler.
1334
1335         * wtf/PlatformHave.h:
1336
1337 2020-05-22  David Kilzer  <ddkilzer@apple.com>
1338
1339         WTF::isValidEnum() has a typo in static_assert making it a tautological comparison
1340         <https://webkit.org/b/212290>
1341
1342         Reviewed by Yusuke Suzuki.
1343
1344         * wtf/EnumTraits.h:
1345         (WTF::isValidEnum): Use sizeof(std::underlying_type_t<E>)
1346         instead of std::underlying_type_t<E>() to fix the bug.
1347
1348 2020-05-22  Chris Dumez  <cdumez@apple.com>
1349
1350         RELEASE_ASSERT() that InitializeWebKit2() is getting called on the main thread
1351         https://bugs.webkit.org/show_bug.cgi?id=212283
1352
1353         Reviewed by Alex Christensen.
1354
1355         * wtf/spi/darwin/dyldSPI.h:
1356
1357 2020-05-22  Andy Estes  <aestes@apple.com>
1358
1359         [Apple Pay] Add new ApplePayInstallmentConfiguration members
1360         https://bugs.webkit.org/show_bug.cgi?id=212160
1361         <rdar://problem/60703650>
1362
1363         Reviewed by Alex Christensen.
1364
1365         * wtf/PlatformEnableCocoa.h: Defined ENABLE_APPLE_PAY_INSTALLMENT_IDENTIFIERS.
1366
1367 2020-05-21  Robin Morisset  <rmorisset@apple.com>
1368
1369         Various compile-time boolean flags could/should be marked constexpr
1370         https://bugs.webkit.org/show_bug.cgi?id=212244
1371
1372         Reviewed by Mark Lam.
1373
1374         * wtf/ParkingLot.cpp:
1375
1376 2020-05-20  Mark Lam  <mark.lam@apple.com>
1377
1378         Add more Bitmap methods.
1379         https://bugs.webkit.org/show_bug.cgi?id=212190
1380         <rdar://problem/63481333>
1381
1382         Reviewed by Robin Morisset.
1383
1384         Specifically,
1385             setEachNthBit - sets every Nth bit starting at a specified start bit
1386             operator=     - assignment
1387             operator|=    - bit or and assignment
1388             operator&=    - bit and and assignment
1389             operator^=    - bit xor and assignment
1390
1391         * wtf/Bitmap.h:
1392
1393 2020-05-21  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>
1394
1395         [PlayStation] Add minimal WKView API to enable TestWebKitAPI
1396         https://bugs.webkit.org/show_bug.cgi?id=211868
1397
1398         Reviewed by Alex Christensen.
1399
1400         Enable TestWebKitAPI
1401
1402         * wtf/PlatformPlayStation.cmake:
1403         Link libc as a system library.
1404
1405 2020-05-21  Wenson Hsieh  <wenson_hsieh@apple.com>
1406
1407         Unreviewed, fix the iOS 13.4 build after r261978
1408
1409         Add a `HAVE()` macro to guard usages of _UIHoverEventRespondable.
1410
1411         * wtf/PlatformHave.h:
1412
1413 2020-05-20  Simon Fraser  <simon.fraser@apple.com>
1414
1415         [macOS] Scrolling synchronization part 1: Have the scrolling thread wait half a frame for the main thread to complete the rendering update
1416         https://bugs.webkit.org/show_bug.cgi?id=212168
1417
1418         Reviewed by Tim Horton.
1419
1420         Some new trace points for scrolling thread activity.
1421
1422         * wtf/SystemTracing.h:
1423
1424 2020-05-20  Tim Horton  <timothy_horton@apple.com>
1425
1426         WKMouseGestureRecognizer should be implemented without using UIKit internals
1427         https://bugs.webkit.org/show_bug.cgi?id=212173
1428         <rdar://problem/61163726>
1429
1430         Reviewed by Wenson Hsieh.
1431
1432         * wtf/PlatformHave.h:
1433
1434 2020-05-20  Alex Christensen  <achristensen@webkit.org>
1435
1436         Remove implicit URL->String conversion operators
1437         https://bugs.webkit.org/show_bug.cgi?id=211033
1438
1439         Reviewed by Darin Adler.
1440
1441         These operators have been the cause of many subtle bugs related to type inference that are hard to see in the code,
1442         as well as performance bugs where we unnecessarily re-parse parsed URLs.
1443         After my recent cleanup this was easier than I thought it would be.
1444
1445         * wtf/URL.h:
1446         (WTF::URL::operator const String& const): Deleted.
1447         (WTF::URL::operator StringView const): Deleted.
1448         (WTF::URL::operator NSString * const): Deleted.
1449
1450 2020-05-20  Antoine Quint  <graouts@apple.com>
1451
1452         [Web Animations] Animation engine should not wake up every tick for steps timing functions
1453         https://bugs.webkit.org/show_bug.cgi?id=212103
1454         <rdar://problem/62737868>
1455
1456         Reviewed by Simon Fraser.
1457
1458         Allow Seconds to be divided or multiplied by a double with operands in any order.
1459
1460         * wtf/Seconds.h:
1461         (WTF::operator*):
1462         (WTF::operator/):
1463
1464 2020-05-20  Youenn Fablet  <youenn@apple.com>
1465
1466         [Mac] Use preferedPixelBufferFormat for AVVideoCaptureSource
1467         https://bugs.webkit.org/show_bug.cgi?id=212071
1468
1469         Reviewed by Eric Carlson.
1470
1471         * wtf/PlatformHave.h:
1472         Add HAVE_DISPLAY_LAYER_BIPLANAR_SUPPORT macro.
1473
1474 2020-05-19  Adrian Perez de Castro  <aperez@igalia.com>
1475
1476         WTF::LockedPrintStream should be final
1477         https://bugs.webkit.org/show_bug.cgi?id=212107
1478
1479         Reviewed by Darin Adler.
1480
1481         * wtf/LockedPrintStream.h: Make class WTF::LockedPrintStream final.
1482
1483 2020-05-19  Mark Lam  <mark.lam@apple.com>
1484
1485         Put PtrTagLookup data structures in Configs for freezing.
1486         https://bugs.webkit.org/show_bug.cgi?id=212089
1487         <rdar://problem/63401487>
1488
1489         Reviewed by Robin Morisset.
1490
1491         * wtf/PtrTag.cpp:
1492         (WTF::tagForPtr):
1493         (WTF::ptrTagName):
1494         (WTF::registerPtrTagLookup):
1495         * wtf/PtrTag.h:
1496         (WTF::PtrTagLookup::initialize):
1497         * wtf/WTFConfig.h:
1498
1499 2020-05-19  Mark Lam  <mark.lam@apple.com>
1500
1501         Remove unnecessary debug logging from release builds.
1502         https://bugs.webkit.org/show_bug.cgi?id=212084
1503         <rdar://problem/63398704>
1504
1505         Reviewed by Saam Barati.
1506
1507         * wtf/PtrTag.h:
1508
1509 2020-05-18  Andy Estes  <aestes@apple.com>
1510
1511         http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html fails in public SDK builds
1512         https://bugs.webkit.org/show_bug.cgi?id=212000
1513         <rdar://problem/63323082>
1514
1515         Reviewed by Youenn Fablet.
1516
1517         * wtf/PlatformEnableCocoa.h:
1518         * wtf/PlatformHave.h:
1519
1520 2020-05-18  Mark Lam  <mark.lam@apple.com>
1521
1522         Implement a faster findBitInWord() using the hardware ctz instruction.
1523         https://bugs.webkit.org/show_bug.cgi?id=212032
1524         <rdar://problem/63348086>
1525
1526         Reviewed by Saam Barati.
1527
1528         Based on local microbenchmarking, both ARM64 and X86_64 shows a speed up of
1529         28% - 95% faster than the loop.
1530
1531         The largest perf regressions for ctz vs the loop, are when finding 1 in a mostly
1532         set word or finding 0 in a mostly cleared word. For example, on X86_64:
1533             Find 1 in 0xffffffffffffffff: using loop 8.67 ms, using ctz 6.07 ms, delta 30.0%
1534             Find 0 in 0x8000000000000000: using loop 9.01 ms, using ctz 6.54 ms, delta 28.1%
1535
1536         The largest perf progressions for ctz vs the loop, are the opposite: finding 1 in
1537         a mostly cleared word, or finding a 0 in a mostly set word. For example, on X86_64:
1538             Find 1 in 0x8000000000000000: using loop 91.4 ms, using ctz 6.48 ms, delta 92.9%
1539             Find 0 in 0xffffffffffffffff: using loop 91.7 ms, using ctz 6.95 ms, delta 92.4%
1540
1541         TL;DR: the microbenchmark methodology used:
1542
1543         findBitInWord() takes:
1544             a. word to scan
1545             b. startIndex
1546             c. endIndex
1547             d. bool value to scan for, either 1 or 0.
1548
1549         1. Randomly select 1000 startIndex and endIndex pairs.
1550            The endIndex is guaranteed to be >= startIndex.
1551
1552         2. Using a base word of 0xffffffffffffffff (or uint64_t) and 0xffffffff (for uint32_t),
1553            shift left by 0 - N (where N is the number of bits in the word) to generate
1554            N + 1 words for the test.  This produces words with contiguous lengths of 1s
1555            and 0s.  We're choosing these words to deliberately measure the effects o
1556            run lengths of 0s or 1s on the algorithm in use.
1557
1558         3. For each test word, call findBitInWord() with the start and end indexes chosen
1559            in 1 for a 100 iterations.
1560
1561         4. Run (3) once to search for a true value, and once to search for a false value.
1562
1563         5. Print the results for each test word and value pair.
1564
1565         * wtf/BitVector.cpp:
1566         * wtf/Bitmap.h:
1567         * wtf/StdLibExtras.h:
1568         (WTF::findBitInWord):
1569
1570 2020-05-18  Darin Adler  <darin@apple.com>
1571
1572         Add iterator checking to ListHashSet
1573         https://bugs.webkit.org/show_bug.cgi?id=211669
1574
1575         Reviewed by Anders Carlsson.
1576
1577         HashSet and HashMap have iterator checking in debug builds.
1578         Add similar checking to ListHashSet, controlled by the same
1579         macro, CHECK_HASHTABLE_ITERATORS. Use WeakPtr to make the
1580         implementation simple.
1581
1582         * wtf/Forward.h: Update to add a second parameter to WeakPtr.
1583         Also rearranged and tweaked the file a bug.
1584
1585         * wtf/ListHashSet.h: Make ListHashSet and ListHashSetNode derive
1586         from CanMakeWeakPtr. Add m_weakSet and m_weakPosition members to
1587         ListHashSetConstIterator, and assert their values at the appropriate
1588         times so we will get a breakpoint or crash.
1589
1590         * wtf/WeakHashSet.h: Updated to add a Counter argument for testing.
1591
1592         * wtf/WeakPtr.h: Removed the DID_CREATE_WEAK_PTR_IMPL and
1593         WILL_DESTROY_WEAK_PTR_IMPL macros, which didn't really work because
1594         using them violated the C++ one-definition rule. Replaced with
1595         a Counter argument, which defaults to EmptyCounter, which is inlines
1596         that do nothing. This required some updates to the classes and
1597         functions to make them work with a second argument.
1598
1599 2020-05-15  Alex Christensen  <achristensen@webkit.org>
1600
1601         Make host parser fail on ^
1602         https://bugs.webkit.org/show_bug.cgi?id=211901
1603
1604         Reviewed by Geoffrey Garen.
1605
1606         This matches the behavior of Chrome and Firefox, and now the specification!
1607         I updated the URL wpt data, and this introduces new PASSes.
1608
1609         * wtf/URLParser.cpp:
1610         (WTF::isC0Control):
1611         (WTF::isForbiddenHostCodePoint):
1612
1613 2020-05-14  Wenson Hsieh  <wenson_hsieh@apple.com>
1614
1615         [macOS] Update the placeholder icon image for attachment elements with progress="0"
1616         https://bugs.webkit.org/show_bug.cgi?id=211898
1617         <rdar://problem/63203900>
1618
1619         Reviewed by Timothy Hatcher.
1620
1621         Add a new flag for HAVE(SYSTEM_ATTACHMENT_PLACEHOLDER_ICON).
1622
1623         * wtf/PlatformHave.h:
1624
1625 2020-05-14  Chris Dumez  <cdumez@apple.com>
1626
1627         Regression(r254856) Family Health iOS app is broken due to lack for WebSQL support
1628         https://bugs.webkit.org/show_bug.cgi?id=211896
1629         <rdar://problem/63025045>
1630
1631         Reviewed by Maciej Stachowiak.
1632
1633         * wtf/spi/darwin/dyldSPI.h:
1634
1635 2020-05-13  Ross Kirsling  <ross.kirsling@sony.com>
1636
1637         [IWYU] Try removing redundant includes in WTF implementation files
1638         https://bugs.webkit.org/show_bug.cgi?id=211821
1639
1640         Reviewed by Simon Fraser.
1641
1642         * wtf/Assertions.cpp:
1643         * wtf/Bag.cpp:
1644         * wtf/BitVector.cpp:
1645         * wtf/ConcurrentBuffer.cpp:
1646         * wtf/ConcurrentPtrHashSet.cpp:
1647         * wtf/CrossThreadCopier.cpp:
1648         * wtf/CurrentTime.cpp:
1649         * wtf/DataLog.cpp:
1650         * wtf/DateMath.cpp:
1651         * wtf/FastBitVector.cpp:
1652         * wtf/FastMalloc.cpp:
1653         * wtf/FileSystem.cpp:
1654         * wtf/Gigacage.cpp:
1655         * wtf/HashTable.cpp:
1656         * wtf/JSValueMalloc.cpp:
1657         * wtf/Language.cpp:
1658         * wtf/MainThread.cpp:
1659         * wtf/MetaAllocator.cpp:
1660         * wtf/MonotonicTime.cpp:
1661         * wtf/NumberOfCores.cpp:
1662         * wtf/OSLogPrintStream.cpp:
1663         * wtf/ParallelHelperPool.cpp:
1664         * wtf/ParkingLot.cpp:
1665         * wtf/PrintStream.cpp:
1666         * wtf/RAMSize.cpp:
1667         * wtf/RandomDevice.cpp:
1668         * wtf/RandomNumber.cpp:
1669         * wtf/RefCountedArray.cpp:
1670         * wtf/RefCountedLeakCounter.cpp:
1671         * wtf/SegmentedVector.cpp:
1672         * wtf/SmallPtrSet.cpp:
1673         * wtf/StackBounds.cpp:
1674         * wtf/ThreadGroup.cpp:
1675         * wtf/Threading.cpp:
1676         * wtf/TimeWithDynamicClockType.cpp:
1677         * wtf/URL.cpp:
1678         * wtf/URLParser.cpp:
1679         * wtf/UUID.cpp:
1680         * wtf/UniqueArray.cpp:
1681         * wtf/Vector.cpp:
1682         * wtf/WTFConfig.cpp:
1683         * wtf/WallTime.cpp:
1684         * wtf/WordLock.cpp:
1685         * wtf/WorkQueue.cpp:
1686         * wtf/WorkerPool.cpp:
1687         * wtf/generic/WorkQueueGeneric.cpp:
1688         * wtf/posix/OSAllocatorPOSIX.cpp:
1689         * wtf/posix/ThreadingPOSIX.cpp:
1690         * wtf/text/AtomString.cpp:
1691         * wtf/text/AtomStringImpl.cpp:
1692         * wtf/text/AtomStringTable.cpp:
1693         * wtf/text/CString.cpp:
1694         * wtf/text/StringBuffer.cpp:
1695         * wtf/text/StringBuilder.cpp:
1696         * wtf/text/StringImpl.cpp:
1697         * wtf/text/StringView.cpp:
1698         * wtf/text/TextBreakIterator.cpp:
1699         * wtf/text/TextStream.cpp:
1700         * wtf/text/WTFString.cpp:
1701         * wtf/threads/Signals.cpp:
1702
1703 2020-05-13  Jer Noble  <jer.noble@apple.com>
1704
1705         Replace isNullFunctionPointer with real weak-linking support
1706         https://bugs.webkit.org/show_bug.cgi?id=211751
1707
1708         Reviewed by Sam Weinig.
1709
1710         Replace isNullFunctionPointer with a macro which explicitly marks symbols as weakly imported.
1711
1712         * wtf/darwin/WeakLinking.h:
1713         (WTF::isNullFunctionPointer): Deleted.
1714
1715 2020-05-12  Mark Lam  <mark.lam@apple.com>
1716
1717         catch_mach_exception_raise_state() should fail early if the faulting address is not of interest.
1718         https://bugs.webkit.org/show_bug.cgi?id=211799
1719         <rdar://problem/62939204>
1720
1721         Reviewed by Saam Barati.
1722
1723         * wtf/threads/Signals.cpp:
1724
1725 2020-05-12  Jer Noble  <jer.noble@apple.com>
1726
1727         REGRESSION(r258314): 5% regression on Membuster5
1728         https://bugs.webkit.org/show_bug.cgi?id=211803
1729         <rdar://problem/60609824>
1730
1731         Reviewed by Darin Adler.
1732
1733         Disable HAVE(AVSAMPLEBUFFERVIDEOOUTPUT), as it caused a large regression in our Membuster5 benchmark.
1734
1735         * wtf/PlatformHave.h:
1736
1737 2020-05-12  Ross Kirsling  <ross.kirsling@sony.com>
1738
1739         Fix existing usage of final/override/virtual in JSC and WTF
1740         https://bugs.webkit.org/show_bug.cgi?id=211772
1741
1742         Reviewed by Darin Adler.
1743
1744         * wtf/Assertions.cpp:
1745         * wtf/Expected.h:
1746         * wtf/FilePrintStream.h:
1747         * wtf/JSONValues.h:
1748         * wtf/LockedPrintStream.h:
1749         * wtf/OSLogPrintStream.h:
1750         * wtf/ParallelHelperPool.cpp:
1751         * wtf/RunLoop.h:
1752         * wtf/SharedTask.h:
1753         * wtf/StringPrintStream.h:
1754         * wtf/WorkQueue.h:
1755         * wtf/WorkerPool.cpp:
1756
1757 2020-05-11  Darin Adler  <darin@apple.com>
1758
1759         Fix problems caught by replacing WTF::Optional with std::optional
1760         https://bugs.webkit.org/show_bug.cgi?id=211703
1761
1762         Reviewed by Chris Dumez.
1763
1764         * wtf/URLHelpers.cpp:
1765         (WTF::URLHelpers::mapHostName): Make URLDecodeFunction a function
1766         pointer and use nullptr instead of trying to use Optional<> with
1767         a function reference.
1768         (WTF::URLHelpers::collectRangesThatNeedMapping): Ditto.
1769         (WTF::URLHelpers::applyHostNameFunctionToMailToURLString): Ditto.
1770         (WTF::URLHelpers::applyHostNameFunctionToURLString): Ditto.
1771         (WTF::URLHelpers::mapHostNames): Ditto.
1772         (WTF::URLHelpers::userVisibleURL): Ditto.
1773         * wtf/URLHelpers.h: Ditto.
1774
1775         * wtf/cocoa/NSURLExtras.mm:
1776         (WTF::decodeHostName): Pass nullptr for URLDecodeFunction.
1777
1778 2020-05-11  Yusuke Suzuki  <ysuzuki@apple.com>
1779
1780         AtomString::init should temporarily disable checks via `isMainThread` due to WebThread's inconsistent state
1781         https://bugs.webkit.org/show_bug.cgi?id=211754
1782
1783         Reviewed by Dean Jackson.
1784
1785         When starting WebThread via StartWebThread function, we have special period between the prologue of StartWebThread and spawning WebThread actually.
1786         In this period, `isMainThread()` returns false even if this is called on the main thread since WebThread is now enabled and we are not taking a WebThread lock.
1787         This causes assertion hits in MainThreadLazyNeverDestroyed initialization only in WebThread platforms.
1788
1789         This patch takes conservative approach to fix this assertion hits: just bypass these assertions since this should not be fired. We bypass assertions by using
1790         constructWithoutAccessCheck, which intentionally skips `isMainThread()` check for construction. In non WebThread environment, we do not lose the assertion
1791         coverage since we already have ASSERT(isUIThread()). And ASSERT(isUIThread()) ensures that this is called in system main thread in WebThread platforms.
1792
1793         Unfortunately, we have no mechanism to test this effectively. WK1 LayoutTests runner cannot show assertions since WK1 runners already initialize necessary
1794         things somewhere before calling AtomString::init() in StartWebThread. This is the same in TestWebKitAPI. For now, I manually tested that assertion does not fire.
1795
1796         * wtf/NeverDestroyed.h:
1797         (WTF::LazyNeverDestroyed::construct):
1798         (WTF::LazyNeverDestroyed::constructWithoutAccessCheck):
1799         (WTF::LazyNeverDestroyed::storagePointerWithoutAccessCheck const):
1800         (WTF::LazyNeverDestroyed::storagePointer const):
1801         * wtf/text/AtomString.cpp:
1802         (WTF::AtomString::init):
1803
1804 2020-05-11  Basuke Suzuki  <basuke.suzuki@sony.com>
1805
1806         [bmalloc][WTF] Add computing memory size implementation for FreeBSD
1807         https://bugs.webkit.org/show_bug.cgi?id=211749
1808
1809         Reviewed by David Kilzer.
1810
1811         Share sysinfo(3) implementation with Linux and FreeBSD.
1812
1813         * wtf/RAMSize.cpp:
1814         (WTF::computeRAMSize):
1815
1816 2020-05-11  Mark Lam  <mark.lam@apple.com>
1817
1818         Introduce WTF::Config and put Signal.cpp's init-once globals in it.
1819         https://bugs.webkit.org/show_bug.cgi?id=211729
1820         <rdar://problem/62938878>
1821
1822         Reviewed by Keith Miller and Saam Barati.
1823
1824         1. Added WTF::Config for storing globals that effectively serve as constants i.e
1825            we'll be initializing them before or during the first VM instantiation, but
1826            should not have any reason to modify them later.  The WTF::Config will be frozen
1827            (along with JSC::Config) at the end of instantiating the first VM instance.
1828
1829         2. Added a Config::AssertNotFrozenScope RAII object to ensure that initialization
1830            operations that should only be called at initialization time, will not be
1831            called once the Config has been frozen.
1832
1833         3. Moved most of Signal.cpp's globals into WTF::Config.  The only globals (or
1834            statics) not moved are ones that cannot be moved because they require a
1835            non-trivial default constructor (once_flag), or need to be modifiable
1836            at runtime (e.g. Lock).
1837
1838            Instead of freezing the once_flag, we sanity check the call_once block with
1839            the Config::AssertNotFrozenScope.
1840
1841         4. SignalHandler records are now allocated from arrays of SignalHandlerMemory in
1842            the WTF::Config.  The number of signal handlers we will ever install is always
1843            finite.  Hence, there's no reason to use a dynamic data structure like the
1844            LocklessBag to hold it.
1845
1846            We introduce a SignalHandlers struct to manage these arrays (and all the other
1847            Signal.cpp globals that we want to move to the WTF::Config).  Amongst other
1848            things, SignalHandlers provides the abstractions for:
1849
1850            a. allocating memory for the SignalHandler instances.  See SignalHandlers::alloc().
1851            b. iterating SignalHandler instances. See SignalHandlers::forEachHandler().
1852
1853            To maintain the synchronization properties of the LocklessBag,
1854            SignalHandlers::alloc() uses a mutex.  In practice, this mutex will never be
1855            contended on because all signal handlers are now installed at initialization
1856            time before any concurrency comes into play.
1857
1858         5. We now initialize activeThreads() eagerly via initializeThreading.  In
1859            production configurations, this does not matter because signal handler
1860            installations will always trigger its initialization.  However, in debugging
1861            configurations, we may end up disabling the use of all signal handlers.  As a
1862            result, we need to do this eager initialization to ensure that it is done
1863            before we freeze the WTF::Config.
1864
1865         * WTF.xcodeproj/project.pbxproj:
1866         * wtf/CMakeLists.txt:
1867         * wtf/Threading.cpp:
1868         (WTF::initializeThreading):
1869         * wtf/WTFConfig.cpp: Added.
1870         (WTF::Config::disableFreezingForTesting):
1871         (WTF::Config::permanentlyFreeze):
1872         * wtf/WTFConfig.h: Added.
1873         (WTF::Config::configureForTesting):
1874         (WTF::Config::AssertNotFrozenScope::~AssertNotFrozenScope):
1875         * wtf/threads/Signals.cpp:
1876         (WTF::SignalHandlers::alloc):
1877         (WTF::SignalHandlers::forEachHandler const):
1878         (WTF::startMachExceptionHandlerThread):
1879         (WTF::handleSignalsWithMach):
1880         (WTF::setExceptionPorts):
1881         (WTF::activeThreads):
1882         (WTF::installSignalHandler):
1883         (WTF::jscSignalHandler):
1884         (WTF::SignalHandlers::initialize):
1885         * wtf/threads/Signals.h:
1886
1887 2020-05-11  David Kilzer  <ddkilzer@apple.com>
1888
1889         [WTF] CStringBuffer::createUninitialized() should use Checked<size_t>
1890         <https://webkit.org/b/211746>
1891         <rdar://problem/62729848>
1892
1893         Reviewed by Darin Adler.
1894
1895         * wtf/text/CString.cpp:
1896         (WTF::CStringBuffer::createUninitialized):
1897         - Switch from RELEASE_ASSERT() to Checked<size_t>() for overflow
1898           check.  RELEASE_ASSERT() was using the wrong type, too.
1899
1900 2020-05-11  Ryan Haddad  <ryanhaddad@apple.com>
1901
1902         Unreviewed, reverting r261440.
1903
1904         Caused 6 TestWTF.WTF failures
1905
1906         Reverted changeset:
1907
1908         "Add iterator checking to ListHashSet"
1909         https://bugs.webkit.org/show_bug.cgi?id=211669
1910         https://trac.webkit.org/changeset/261440
1911
1912 2020-05-11  Tetsuharu Ohzeki  <tetsuharu.ohzeki@gmail.com>
1913
1914         Use alias template for <type_traits> in WTF/wtf/TypeCast.h
1915         https://bugs.webkit.org/show_bug.cgi?id=211714
1916
1917         Reviewed by Darin Adler.
1918
1919         * wtf/TypeCasts.h:
1920         (WTF::TypeCastTraits::isOfType):
1921         (WTF::is):
1922         (WTF::downcast):
1923
1924 2020-05-10  Darin Adler  <darin@apple.com>
1925
1926         Add copy constructor and assignment operator to Ref<>
1927         https://bugs.webkit.org/show_bug.cgi?id=211705
1928
1929         Reviewed by Sam Weinig.
1930
1931         As recently discussed in some WebKit bug patch review, we think that Ref and RefPtr
1932         should have the same design, except for whether the value can be null. Ref had a
1933         more ambitious approach to avoiding reference count churn, requiring a
1934         call to copyRef to make any copying explicit, partly by analogy with raw C
1935         references, which also can't be copied (but they can't be moved either). We choose
1936         to change Ref to match RefPtr and to take the risk of additional churn. This makes
1937         it easier to use Ref in contexts like collection classes and structures. An
1938         alternative would be to go the other direction, and make RefPtr require a call to
1939         copyRef: seems like an obviously worse option.
1940
1941         * wtf/Ref.h: Add the copy constructor and assignment operator.
1942         These follow a similar pattern to the move constructor and assignment operator.
1943         Also add a deprecation comment before copyRef, which we will eventually remove.
1944
1945 2020-05-10  Tetsuharu Ohzeki  <tetsuharu.ohzeki@gmail.com>
1946
1947         Use alias template to define `match_constness_t` in Wtf/wtp/TypeCasts.h
1948         https://bugs.webkit.org/show_bug.cgi?id=211698
1949
1950         Reviewed by Yusuke Suzuki.
1951
1952         * wtf/TypeCasts.h:
1953         (WTF::downcast):
1954
1955 2020-05-10  Basuke Suzuki  <basuke.suzuki@sony.com>
1956
1957         Add ENABLE_PERIODIC_MEMORY_MONITOR flag.
1958         https://bugs.webkit.org/show_bug.cgi?id=211704
1959
1960         Reviewed by Yusuke Suzuki.
1961
1962         Define ENABLE_PERIODIC_MEMORY_MONITOR flags in specific platform file.
1963
1964         * wtf/PlatformEnable.h:
1965         * wtf/PlatformEnableCocoa.h:
1966
1967 2020-05-10  Darin Adler  <darin@apple.com>
1968
1969         Remove now-unneeded HAVE(CORE_VIDEO)
1970         https://bugs.webkit.org/show_bug.cgi?id=211677
1971
1972         Reviewed by Dan Bernstein.
1973
1974         * wtf/PlatformHave.h: Remove HAVE_CORE_VIDEO.
1975
1976 2020-05-09  Darin Adler  <darin@apple.com>
1977
1978         Delete some dead code in WorkQueueCocoa.cpp
1979         https://bugs.webkit.org/show_bug.cgi?id=211676
1980
1981         Reviewed by Chris Dumez.
1982
1983         * wtf/cocoa/WorkQueueCocoa.cpp:
1984         (WTF::targetQueueForQOSClass): Deleted.
1985
1986 2020-05-09  Darin Adler  <darin@apple.com>
1987
1988         Add iterator checking to ListHashSet
1989         https://bugs.webkit.org/show_bug.cgi?id=211669
1990
1991         Reviewed by Anders Carlsson.
1992
1993         HashSet and HashMap have iterator checking in debug builds.
1994         Add similar checking to ListHashSet, controlled by the same
1995         macro, CHECK_HASHTABLE_ITERATORS. Use WeakPtr to make the
1996         implementation simple.
1997
1998         * wtf/ListHashSet.h: Make ListHashSet and ListHashSetNode derive
1999         from CanMakeWeakPtr. Add m_weakSet and m_weakPosition members to
2000         ListHashSetConstIterator, and assert their values at the appropriate
2001         times so we will get a breakpoint or crash.
2002
2003 2020-05-08  Darin Adler  <darin@apple.com>
2004
2005         Streamline MarkupAccumulator to improve efficiency a bit
2006         https://bugs.webkit.org/show_bug.cgi?id=211656
2007
2008         Reviewed by Anders Carlsson.
2009
2010         * wtf/text/StringBuilder.cpp:
2011         (WTF::StringBuilder::isAllASCII const): Added.
2012         * wtf/text/StringBuilder.h: Added isAllASCII.
2013
2014 2020-05-09  David Quesada  <david_quesada@apple.com>
2015
2016         Remove HAVE_UI_SCROLL_VIEW_INDICATOR_FLASHING_SPI
2017         https://bugs.webkit.org/show_bug.cgi?id=211662
2018         rdar://problem/63048713
2019
2020         Reviewed by Darin Adler.
2021
2022         * wtf/PlatformHave.h:
2023
2024 2020-05-08  Basuke Suzuki  <basuke.suzuki@sony.com>
2025
2026         [WTF] Share Linux's MemoryPressureHandler among other Unix ports
2027         https://bugs.webkit.org/show_bug.cgi?id=208955
2028
2029         Reviewed by Yusuke Suzuki.
2030
2031         Renamed MemoryPressureHandlerLinux to MemoryPressureHandlerUnix and added FreeBSD implementation
2032         of memory status functions. Change PlayStation port to use it from generic implementation.
2033
2034         * wtf/MemoryPressureHandler.cpp:
2035         (WTF::MemoryPressureHandler::MemoryPressureHandler):
2036         * wtf/MemoryPressureHandler.h:
2037         * wtf/PlatformGTK.cmake:
2038         * wtf/PlatformJSCOnly.cmake:
2039         * wtf/PlatformPlayStation.cmake:
2040         * wtf/PlatformWPE.cmake:
2041         * wtf/generic/MemoryFootprintGeneric.cpp:
2042         (WTF::memoryFootprint):
2043         * wtf/unix/MemoryPressureHandlerUnix.cpp: Renamed from Source\WTF\wtf\linux\MemoryPressureHandlerLinux.cpp.
2044         (WTF::processMemoryUsage):
2045
2046 2020-05-08  Darin Adler  <darin@apple.com>
2047
2048         Remove now-unneeded HAVE(AVFOUNDATION_LOADER_DELEGATE)
2049         https://bugs.webkit.org/show_bug.cgi?id=211646
2050
2051         Reviewed by Eric Carlson.
2052
2053         * wtf/PlatformHave.h: Don't set HAVE_AVFOUNDATION_LOADER_DELEGATE.
2054
2055 2020-05-08  Don Olmstead  <don.olmstead@sony.com>
2056
2057         [clang-tidy] Run modernize-use-nullptr over WTF
2058         https://bugs.webkit.org/show_bug.cgi?id=211628
2059
2060         Reviewed by Yusuke Suzuki.
2061
2062         Use the fix option in clang-tidy to ensure nullptr is being used across WTF.
2063
2064         * wtf/Assertions.cpp:
2065         * wtf/BumpPointerAllocator.h:
2066         (WTF::BumpPointerPool::BumpPointerPool):
2067         (WTF::BumpPointerPool::create):
2068         (WTF::BumpPointerAllocator::BumpPointerAllocator):
2069         * wtf/DataLog.cpp:
2070         (WTF::setDataFile):
2071         * wtf/DateMath.cpp:
2072         (WTF::parseES5DatePortion):
2073         (WTF::parseES5TimePortion):
2074         * wtf/FastMalloc.cpp:
2075         (WTF::fastZeroedMalloc):
2076         (WTF::fastStrDup):
2077         (WTF::tryFastZeroedMalloc):
2078         (WTF::isFastMallocEnabled):
2079         (WTF::fastMallocGoodSize):
2080         (WTF::fastAlignedMalloc):
2081         (WTF::tryFastAlignedMalloc):
2082         (WTF::fastAlignedFree):
2083         (WTF::tryFastMalloc):
2084         (WTF::fastMalloc):
2085         (WTF::tryFastCalloc):
2086         (WTF::fastCalloc):
2087         (WTF::fastFree):
2088         (WTF::fastRealloc):
2089         (WTF::tryFastRealloc):
2090         (WTF::releaseFastMallocFreeMemory):
2091         (WTF::releaseFastMallocFreeMemoryForThisThread):
2092         (WTF::fastMallocStatistics):
2093         (WTF::fastMallocSize):
2094         (WTF::fastCommitAlignedMemory):
2095         (WTF::fastDecommitAlignedMemory):
2096         (WTF::fastEnableMiniMode):
2097         (WTF::fastDisableScavenger):
2098         (WTF::fastMallocDumpMallocStats):
2099         (WTF::AvoidRecordingScope::avoidRecordingCount):
2100         (WTF::AvoidRecordingScope::AvoidRecordingScope):
2101         (WTF::AvoidRecordingScope::~AvoidRecordingScope):
2102         (WTF::MallocCallTracker::MallocSiteData::MallocSiteData):
2103         (WTF::MallocCallTracker::singleton):
2104         (WTF::MallocCallTracker::MallocCallTracker):
2105         (WTF::MallocCallTracker::recordMalloc):
2106         (WTF::MallocCallTracker::recordRealloc):
2107         (WTF::MallocCallTracker::recordFree):
2108         (WTF::MallocCallTracker::dumpStats):
2109         * wtf/HashTable.h:
2110         (WTF::KeyTraits>::inlineLookup):
2111         (WTF::KeyTraits>::lookupForWriting):
2112         (WTF::KeyTraits>::fullLookupForWriting):
2113         (WTF::KeyTraits>::add):
2114         * wtf/MetaAllocator.cpp:
2115         (WTF::MetaAllocator::findAndRemoveFreeSpace):
2116         * wtf/ParallelJobsGeneric.cpp:
2117         * wtf/RandomDevice.cpp:
2118         (WTF::RandomDevice::cryptographicallyRandomValues):
2119         * wtf/RawPointer.h:
2120         (WTF::RawPointer::RawPointer):
2121         * wtf/RedBlackTree.h:
2122         * wtf/SHA1.cpp:
2123         (WTF::SHA1::hexDigest):
2124         * wtf/SchedulePair.h:
2125         (WTF::SchedulePair::SchedulePair):
2126         * wtf/StackTrace.cpp:
2127         (WTFGetBacktrace):
2128         (WTF::StackTrace::dump const):
2129         * wtf/StringExtras.h:
2130         (strnstr):
2131         * wtf/Variant.h:
2132         * wtf/Vector.h:
2133         (WTF::VectorBufferBase::deallocateBuffer):
2134         (WTF::VectorBufferBase::releaseBuffer):
2135         (WTF::VectorBufferBase::VectorBufferBase):
2136         * wtf/cf/CFURLExtras.cpp:
2137         (WTF::createCFURLFromBuffer):
2138         (WTF::getURLBytes):
2139         * wtf/cf/CFURLExtras.h:
2140         * wtf/cf/FileSystemCF.cpp:
2141         (WTF::FileSystem::pathAsURL):
2142         * wtf/dtoa/double-conversion.cc:
2143         * wtf/dtoa/utils.h:
2144         (WTF::double_conversion::BufferReference::BufferReference):
2145         * wtf/text/CString.cpp:
2146         (WTF::CString::mutableData):
2147         * wtf/text/CString.h:
2148         * wtf/text/StringBuffer.h:
2149         (WTF::StringBuffer::release):
2150         * wtf/text/StringImpl.cpp:
2151         (WTF::StringImpl::createUninitializedInternal):
2152         (WTF::StringImpl::reallocateInternal):
2153         * wtf/text/StringImpl.h:
2154         (WTF::StringImpl::constructInternal<LChar>):
2155         (WTF::StringImpl::constructInternal<UChar>):
2156         (WTF::StringImpl::characters<LChar> const):
2157         (WTF::StringImpl::characters<UChar> const):
2158         (WTF::find):
2159         (WTF::reverseFindLineTerminator):
2160         (WTF::reverseFind):
2161         (WTF::equalIgnoringNullity):
2162         (WTF::codePointCompare):
2163         (WTF::isSpaceOrNewline):
2164         (WTF::lengthOfNullTerminatedString):
2165         (WTF::StringImplShape::StringImplShape):
2166         (WTF::StringImpl::isolatedCopy const):
2167         (WTF::StringImpl::isAllASCII const):
2168         (WTF::StringImpl::isAllLatin1 const):
2169         (WTF::isAllSpecialCharacters):
2170         (WTF::isSpecialCharacter const):
2171         (WTF::StringImpl::StringImpl):
2172         (WTF::StringImpl::create8BitIfPossible):
2173         (WTF::StringImpl::createSubstringSharingImpl):
2174         (WTF::StringImpl::createFromLiteral):
2175         (WTF::StringImpl::tryCreateUninitialized):
2176         (WTF::StringImpl::adopt):
2177         (WTF::StringImpl::cost const):
2178         (WTF::StringImpl::costDuringGC):
2179         (WTF::StringImpl::setIsAtom):
2180         (WTF::StringImpl::setHash const):
2181         (WTF::StringImpl::ref):
2182         (WTF::StringImpl::deref):
2183         (WTF::StringImpl::copyCharacters):
2184         (WTF::StringImpl::at const):
2185         (WTF::StringImpl::allocationSize):
2186         (WTF::StringImpl::maxInternalLength):
2187         (WTF::StringImpl::tailOffset):
2188         (WTF::StringImpl::requiresCopy const):
2189         (WTF::StringImpl::tailPointer const):
2190         (WTF::StringImpl::tailPointer):
2191         (WTF::StringImpl::substringBuffer const):
2192         (WTF::StringImpl::substringBuffer):
2193         (WTF::StringImpl::assertHashIsCorrect const):
2194         (WTF::StringImpl::StaticStringImpl::StaticStringImpl):
2195         (WTF::StringImpl::StaticStringImpl::operator StringImpl&):
2196         (WTF::equalIgnoringASCIICase):
2197         (WTF::startsWithLettersIgnoringASCIICase):
2198         (WTF::equalLettersIgnoringASCIICase):
2199         * wtf/text/TextBreakIterator.cpp:
2200         (WTF::initializeIterator):
2201         (WTF::setContextAwareTextForIterator):
2202         (WTF::openLineBreakIterator):
2203         * wtf/text/TextBreakIterator.h:
2204         (WTF::LazyLineBreakIterator::get):
2205         * wtf/text/WTFString.cpp:
2206         (WTF::charactersToFloat):
2207         * wtf/text/cf/StringImplCF.cpp:
2208         (WTF::StringWrapperCFAllocator::allocate):
2209         (WTF::StringWrapperCFAllocator::create):
2210         (WTF::StringImpl::createCFString):
2211         * wtf/text/icu/UTextProviderLatin1.cpp:
2212         (WTF::uTextLatin1Clone):
2213         (WTF::openLatin1ContextAwareUTextProvider):
2214         * wtf/text/icu/UTextProviderUTF16.cpp:
2215         (WTF::openUTF16ContextAwareUTextProvider):
2216         * wtf/win/FileSystemWin.cpp:
2217         (WTF::FileSystemImpl::makeAllDirectories):
2218         (WTF::FileSystemImpl::storageDirectory):
2219         (WTF::FileSystemImpl::openTemporaryFile):
2220         (WTF::FileSystemImpl::openFile):
2221         (WTF::FileSystemImpl::writeToFile):
2222         (WTF::FileSystemImpl::readFromFile):
2223         (WTF::FileSystemImpl::deleteNonEmptyDirectory):
2224         * wtf/win/LanguageWin.cpp:
2225         (WTF::localeInfo):
2226         * wtf/win/MainThreadWin.cpp:
2227         (WTF::initializeMainThreadPlatform):
2228         * wtf/win/OSAllocatorWin.cpp:
2229         (WTF::OSAllocator::reserveUncommitted):
2230         (WTF::OSAllocator::reserveAndCommit):
2231         * wtf/win/RunLoopWin.cpp:
2232         (WTF::RunLoop::run):
2233         (WTF::RunLoop::iterate):
2234         (WTF::RunLoop::RunLoop):
2235         (WTF::RunLoop::cycle):
2236         (WTF::RunLoop::TimerBase::start):
2237         * wtf/win/ThreadingWin.cpp:
2238         (WTF::Thread::establishHandle):
2239
2240 2020-05-08  Darin Adler  <darin@apple.com>
2241
2242         Make callBufferProducingFunction safer to use by adding a compile-time assertion
2243         https://bugs.webkit.org/show_bug.cgi?id=211599
2244
2245         Reviewed by Ross Kirsling.
2246
2247         * wtf/unicode/icu/ICUHelpers.h:
2248         (WTF::CallBufferProducingFunction::argumentTuple): Add a static_assert that
2249         checks these are just simple types, aside from the Vector for the buffer.
2250         This would have caught the UpconvertedCharacters problem fixed earlier today.
2251
2252 2020-05-08  Don Olmstead  <don.olmstead@sony.com>
2253
2254         WTF headers should compile independently
2255         https://bugs.webkit.org/show_bug.cgi?id=211608
2256
2257         Reviewed by Yusuke Suzuki.
2258
2259         When a WTF header is included on its own within a source file it should compile.
2260         These issues were found when working on a tooling build for running static
2261         analysis over WTF. Forward declarations were used whenever possible otherwise
2262         an include was used.
2263
2264         Additionally fix some errors found by Clang 10.
2265
2266         * wtf/AggregateLogger.h:
2267         * wtf/CallbackAggregator.h:
2268         * wtf/Dominators.h:
2269         * wtf/HashIterators.h:
2270         * wtf/IndexSparseSet.h:
2271         * wtf/LoggingHashMap.h:
2272         * wtf/LoggingHashTraits.h:
2273         * wtf/RunLoopTimer.h:
2274         * wtf/Stopwatch.h:
2275         * wtf/Threading.h:
2276         * wtf/cf/RunLoopTimerCF.cpp:
2277         * wtf/persistence/PersistentCoder.h:
2278         * wtf/text/LineBreakIteratorPoolICU.h:
2279         * wtf/text/NullTextBreakIterator.h:
2280         * wtf/text/StringOperators.h:
2281         * wtf/text/StringToIntegerConversion.h:
2282         * wtf/text/cf/TextBreakIteratorCF.h:
2283         * wtf/text/icu/TextBreakIteratorICU.h:
2284         * wtf/text/win/WCharStringExtras.h:
2285
2286 2020-05-07  Don Olmstead  <don.olmstead@sony.com>
2287
2288         Remove unused USE(REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR)
2289         https://bugs.webkit.org/show_bug.cgi?id=211582
2290
2291         Reviewed by Fujii Hironori.
2292
2293         After r261264 all ports implemented USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR.
2294
2295         * wtf/PlatformUse.h:
2296
2297 2020-05-07  Mark Lam  <mark.lam@apple.com>
2298
2299         Give the DFG and FTL WorkList threads more stack space on ASAN builds.
2300         https://bugs.webkit.org/show_bug.cgi?id=211535
2301         <rdar://problem/62947884>
2302
2303         Reviewed by Geoffrey Garen.
2304
2305         1. Add the ability to set the ThreadType for AutomaticThreads.
2306         2. Give ThreadType::Compiler (which currently only used for the DFG anf FTL
2307            WorkList threads) a larger stack for OS(DARWIN) on ASAN builds.
2308
2309            This is needed because ASAN is a memory hungry beast, and we want the ASAN
2310            builds to get to exercise the same amount of code a regular build will (instead
2311            of failing out early with a stack overflow error).
2312
2313         * wtf/AutomaticThread.cpp:
2314         (WTF::AutomaticThread::AutomaticThread):
2315         (WTF::AutomaticThread::start):
2316         * wtf/AutomaticThread.h:
2317         * wtf/Threading.cpp:
2318         (WTF::stackSize):
2319         * wtf/Threading.h:
2320
2321 2020-05-07  Mark Lam  <mark.lam@apple.com>
2322
2323         Add stack checks to the DFG and FTL bytecode parser.
2324         https://bugs.webkit.org/show_bug.cgi?id=211547
2325         <rdar://problem/62958880>
2326
2327         Reviewed by Yusuke Suzuki.
2328
2329         Added a StackCheck::Scope RAII object to help verify that the default reserved
2330         zone size is at least adequate for known work loads.  If this the StackCheck::Scope
2331         assertions fail, then we either need more stack checks, or the reserved zone size
2332         needs to be increased.
2333
2334         Note that the assertions are usually only on in Debug builds.  Ideally, we would
2335         want to measure the reserved zone size with a Release build.  To do that, we
2336         can just set VERIFY_STACK_CHECK_RESERVED_ZONE_SIZE to 1 unconditionally in
2337         StackCheck.h and rebuild.
2338
2339         * wtf/StackCheck.h:
2340         (WTF::StackCheck::Scope::Scope):
2341         (WTF::StackCheck::Scope::~Scope):
2342         (WTF::StackCheck::Scope::isSafeToRecurse):
2343         (WTF::StackCheck::StackCheck):
2344
2345 2020-05-06  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com> and Fujii Hironori  <Hironori.Fujii@sony.com>
2346
2347         [Win] Implement DisplayRefreshMonitor by using RunLoop::Timer
2348         https://bugs.webkit.org/show_bug.cgi?id=211431
2349
2350         Reviewed by Don Olmstead.
2351
2352         USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR is turned off only for Windows ports.
2353         Turn it on, and add DisplayRefreshMonitorWin.
2354
2355         I'll remove USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR macro in a follow-up patch.
2356
2357         * wtf/PlatformUse.h:
2358
2359 2020-05-06  Darin Adler  <darin@apple.com>
2360
2361         Make a helper for the pattern of ICU functions that may need to be called twice to populate a buffer
2362         https://bugs.webkit.org/show_bug.cgi?id=211499
2363
2364         Reviewed by Ross Kirsling.
2365
2366         This first cut version is ready to be used in most, but not all, of the places we use the
2367         needsToGrowToProduceBuffer function. The places it is not right for yet are ones that have
2368         special considerations because of null character termination or destinations that are
2369         not a Vector. Later we can refine that further, if we like, and possibly use something
2370         similar in call sites that use needsToGrowToProduceCString as well.
2371
2372         * wtf/unicode/icu/ICUHelpers.h:
2373         (WTF::needsToGrowToProduceBuffer): Changed to constexpr, since we can.
2374         (WTF::needsToGrowToProduceCString): Ditto.
2375         (WTF::CallBufferProducingFunction::findVector): Added. Implementation detail
2376         of callBufferProducingFunction.
2377         (WTF::CallBufferProducingFunction::argumentTuple): Ditto.
2378         (WTF::callBufferProducingFunction): Added.
2379
2380 2020-05-06  Alex Christensen  <achristensen@webkit.org>
2381
2382         Reduce IPC overhead for message receiver name and message name to 2 bytes
2383         https://bugs.webkit.org/show_bug.cgi?id=211112
2384
2385         Reviewed by Chris Dumez.
2386
2387         * wtf/EnumTraits.h:
2388
2389 2020-05-06  Darin Adler  <darin@apple.com>
2390
2391         Remove now-unneeded USE(GRAMMAR_CHECKING)
2392         https://bugs.webkit.org/show_bug.cgi?id=211452
2393
2394         Reviewed by Anders Carlsson.
2395
2396         * wtf/PlatformUse.h: Don't set USE_GRAMMAR_CHECKING.
2397
2398 2020-05-06  Devin Rousso  <drousso@apple.com>
2399
2400         ASSERT_WITH_MESSAGE(m_isOwnedByMainThread == isMainThread()) when web inspecting
2401         https://bugs.webkit.org/show_bug.cgi?id=203638
2402         <rdar://problem/56761893>
2403
2404         Reviewed by Brian Burg.
2405
2406         * wtf/Stopwatch.h:
2407         (WTF::Stopwatch::elapsedTime const): Added.
2408         (WTF::Stopwatch::elapsedTimeSince const): Added.
2409         (WTF::Stopwatch::elapsedTime): Deleted.
2410         (WTF::Stopwatch::elapsedTimeSince): Deleted.
2411
2412 2020-05-06  Darin Adler  <darin@apple.com>
2413
2414         Reduce HAVE(HOSTED_CORE_ANIMATION)
2415         https://bugs.webkit.org/show_bug.cgi?id=211423
2416
2417         Reviewed by Anders Carlsson.
2418
2419         * wtf/PlatformHave.h: Simplified conditional to just PLATFORM(MAC)
2420         for HOSTED_CORE_ANIMATION.
2421
2422 2020-05-05  Darin Adler  <darin@apple.com>
2423
2424         Remove HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
2425         https://bugs.webkit.org/show_bug.cgi?id=211461
2426
2427         Reviewed by Eric Carlson.
2428
2429         * wtf/PlatformHave.h: Don't define HAVE_AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT.
2430
2431 2020-05-05  Mark Lam  <mark.lam@apple.com>
2432
2433         Allow Bitmap to use up to a UCPURegister word size for internal bit storage.
2434         https://bugs.webkit.org/show_bug.cgi?id=211328
2435         <rdar://problem/62755865>
2436
2437         Reviewed by Yusuke Suzuki.
2438
2439         1. Moved the definition of CPURegister and UCPURegister down into WTF.
2440            Added CPU(REGISTER64) and CPU(REGISTER32) for determining what size a CPU
2441            general purpose register is.
2442
2443         2. Updated Bitmap so that it will automatically choose the minimal required
2444            word size for the number of bits it needs to store.  This means the Bitmap
2445            can automatically choose a WordType from uint8_t up to UCPURegister.
2446            Previously, the WordType is always uint32_t by default.
2447
2448            This should improve perf with use of Bitmap on 64-bit platforms.  The size
2449            optimization is necessary to prevent bloat on 64-bit platforms which would have
2450            resulted if we simply set the default to always be UCPURegister.
2451
2452         3. Added a check in findRunOfZeros() for handling the edge case where the
2453            requested runLength exceeds the bitmapSize.
2454
2455         4. Fixed a bug in count() that was unnecessarily casting the bits to unsigned
2456            instead of just using the Bitmap WordType.  As a result, when using a WordType
2457            of uint64_t, it was discarding bits from the count.
2458
2459         5. Fixed invert() to leave the bits beyond bitmapSize untouched.
2460            Fixed isFull() to ignore the bits beyond bitmapSize.
2461
2462            By fixing invert() to leave those bits as 0, isEmpty() and hash() will
2463            continue to work.  Otherwise, inverting those bits will cause isEmpty() to
2464            always fail, and hash()'s result may be different for the same set of bit
2465            values within bitmapSize.
2466
2467            isFull(), on the other hand, checks for set bits in the words.  Since there
2468            may be 0 valued bits beyond bitmapSize, isFull() needs to be fixed to ignore
2469            those.
2470
2471         * WTF.xcodeproj/project.pbxproj:
2472         * wtf/Bitmap.h:
2473         (WTF::WordType>::invert):
2474         (WTF::WordType>::findRunOfZeros const):
2475         (WTF::WordType>::count const):
2476         (WTF::WordType>::isFull const):
2477         * wtf/CMakeLists.txt:
2478         * wtf/PlatformCPU.h:
2479         * wtf/PlatformUse.h:
2480         * wtf/StdIntExtras.h: Copied from Source/WTF/wtf/StdIntExtras.h.
2481
2482 2020-05-05  Darin Adler  <darin@apple.com>
2483
2484         Remove now-unneeded USE(COREMEDIA) and USE(VIDEOTOOLBOX)
2485         https://bugs.webkit.org/show_bug.cgi?id=211437
2486
2487         Reviewed by Eric Carlson.
2488
2489         * wtf/PlatformUse.h: Don't set USE_COREMEDIA or USE_VIDEOTOOLBOX.
2490
2491 2020-05-05  Darin Adler  <darin@apple.com>
2492
2493         Remove now-uneeded HAVE macros related to PDF
2494         https://bugs.webkit.org/show_bug.cgi?id=211435
2495
2496         Reviewed by Anders Carlsson.
2497
2498         * wtf/PlatformHave.h: Remove HAVE_PDFHOSTVIEWCONTROLLER_SNAPSHOTTING,
2499         always set for iOS, HAVE_LEGACY_PDF_SUPPORT, always set for all Cocoa
2500         platforms, and HAVE_PDF_HOST_VIEW_CONTROLLER_WITH_BACKGROUND_COLOR,
2501         always set for iOS family platforms.
2502
2503 2020-05-05  Darin Adler  <darin@apple.com>
2504
2505         Remove now-unneeded HAVE(DISALLOWABLE_USER_INSTALLED_FONTS)
2506         https://bugs.webkit.org/show_bug.cgi?id=211428
2507
2508         Reviewed by Anders Carlsson.
2509
2510         * wtf/PlatformHave.h: Don't define HAVE_DISALLOWABLE_USER_INSTALLED_FONTS.
2511
2512 2020-05-04  Darin Adler  <darin@apple.com>
2513
2514         [Mac] Remove __MAC_OS_X_VERSION_MIN_REQUIRED checks for versions older than 10.14
2515         https://bugs.webkit.org/show_bug.cgi?id=211420
2516
2517         Reviewed by Alex Christensen.
2518
2519         * WTF.xcodeproj/project.pbxproj: Removed DeprecatedSymbolsUsedBySafari.mm.
2520
2521         * wtf/PlatformEnableCocoa.h: Removed __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400.
2522         * wtf/PlatformHave.h: Ditto. This leaves behind some cases of
2523         "PLATFORM(MAC) || PLATFORM(IOS)" that should probably be turned on for watchOS
2524         and tvOS too, eventually. Also "PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(MACCATALYST)".
2525
2526         * wtf/PlatformMac.cmake: Removed DeprecatedSymbolsUsedBySafari.mm.
2527
2528         * wtf/PlatformUse.h: Removed __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400.
2529
2530         * wtf/mac/DeprecatedSymbolsUsedBySafari.mm: Removed.
2531
2532         * wtf/spi/darwin/ProcessMemoryFootprint.h: Removed
2533         __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400.
2534
2535 2020-05-04  Darin Adler  <darin@apple.com>
2536
2537         Remove now-unneeded HAVE(SANDBOX_ISSUE_MACH/READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
2538         https://bugs.webkit.org/show_bug.cgi?id=211427
2539
2540         Reviewed by Alex Christensen.
2541
2542         * wtf/PlatformHave.h: Remove both macros mentioned in the title above.
2543         * wtf/spi/darwin/SandboxSPI.h: Remove #if HAVE.
2544
2545 2020-05-04  Darin Adler  <darin@apple.com>
2546
2547         Remove now-unneeded HAVE(AUTHORIZATION_STATUS_FOR_MEDIA_TYPE)
2548         https://bugs.webkit.org/show_bug.cgi?id=211426
2549
2550         Reviewed by Alex Christensen.
2551
2552         * wtf/PlatformHave.h: Removed code to set HAVE_AUTHORIZATION_STATUS_FOR_MEDIA_TYPE,
2553         which was doing so on all Cocoa platforms.
2554
2555 2020-05-04  Darin Adler  <darin@apple.com>
2556
2557         Remove now-unneeded HAVE(ACCESSIBILITY_SUPPORT)
2558         https://bugs.webkit.org/show_bug.cgi?id=211425
2559
2560         Reviewed by Alex Christensen.
2561
2562         * wtf/PlatformHave.h: Don't set HAVE_ACCESSIBILITY_SUPPORT. It was on for all
2563         Cocoa platform builds.
2564
2565 2020-05-04  Darin Adler  <darin@apple.com>
2566
2567         Remove now-unneeded HAVE(NETWORK_EXTENSION)
2568         https://bugs.webkit.org/show_bug.cgi?id=211424
2569
2570         Reviewed by Alex Christensen.
2571
2572         * wtf/PlatformHave.h: Don't define HAVE_NETWORK_EXTENSION.
2573
2574 2020-05-04  Darin Adler  <darin@apple.com>
2575
2576         Remove now-unneeded HAVE(SEC_TRUST_EVALUATE_WITH_ERROR)
2577         https://bugs.webkit.org/show_bug.cgi?id=211429
2578
2579         Reviewed by Alex Christensen.
2580
2581         * wtf/PlatformHave.h: Don't set HAVE_SEC_TRUST_EVALUATE_WITH_ERROR.
2582
2583 2020-05-04  Darin Adler  <darin@apple.com>
2584
2585         Remove unneeded USE(MEDIAREMOTE)
2586         https://bugs.webkit.org/show_bug.cgi?id=211385
2587
2588         Reviewed by Eric Carlson.
2589
2590         * wtf/PlatformUse.h: Don't set USE_MEDIAREMOTE.
2591
2592 2020-05-04  Darin Adler  <darin@apple.com>
2593
2594         Remove now-unneded HAVE(WINDOW_SERVER_OCCLUSION_NOTIFICATIONS)
2595         https://bugs.webkit.org/show_bug.cgi?id=211380
2596
2597         Reviewed by Sam Weinig.
2598
2599         * wtf/PlatformHave.h: Don't define HAVE_WINDOW_SERVER_OCCLUSION_NOTIFICATIONS.
2600
2601 2020-05-04  Darin Adler  <darin@apple.com>
2602
2603         Remove unused USE(COREAUDIO)
2604         https://bugs.webkit.org/show_bug.cgi?id=211384
2605
2606         Reviewed by Alex Christensen.
2607
2608         * wtf/PlatformUse.h: Don't define USE_COREAUDIO.
2609
2610 2020-05-04  Darin Adler  <darin@apple.com>
2611
2612         Remove now-unneeded HAVE(UI_REMOTE_VIEW)
2613         https://bugs.webkit.org/show_bug.cgi?id=211382
2614
2615         Reviewed by Alex Christensen.
2616
2617         * wtf/PlatformHave.h: Remove code to define HAVE_UI_REMOTE_VIEW.
2618
2619 2020-05-04  Darin Adler  <darin@apple.com>
2620
2621         Remove now-unneeded HAVE(MENU_CONTROLLER_SHOW_HIDE_API)
2622         https://bugs.webkit.org/show_bug.cgi?id=211381
2623
2624         Reviewed by Alex Christensen.
2625
2626         * wtf/PlatformHave.h: Remove code to set HAVE_MENU_CONTROLLER_SHOW_HIDE_API.
2627
2628 2020-05-04  Darin Adler  <darin@apple.com>
2629
2630         Remove now-unneeded HAVE(VOUCHERS)
2631         https://bugs.webkit.org/show_bug.cgi?id=211379
2632
2633         Reviewed by Alex Christensen.
2634
2635         * wtf/PlatformHave.h: Remove definition of HAVE_VOUCHERS.
2636
2637 2020-05-04  Darin Adler  <darin@apple.com>
2638
2639         Remove now-unneeded HAVE(MEDIA_PLAYER)
2640         https://bugs.webkit.org/show_bug.cgi?id=211378
2641
2642         Reviewed by Alex Christensen.
2643
2644         * wtf/PlatformHave.h: Remove code that sets HAVE_MEDIA_PLAYER.
2645
2646 2020-05-04  Darin Adler  <darin@apple.com>
2647
2648         Remove unused HAVE(STRINGS_H)
2649         https://bugs.webkit.org/show_bug.cgi?id=211377
2650
2651         Reviewed by Alex Christensen.
2652
2653         * wtf/PlatformHave.h: Remove code to set HAVE_STRINGS_H.
2654
2655 2020-05-04  Darin Adler  <darin@apple.com>
2656
2657         Remove no-longer-needed HAVE(UISCENE)
2658         https://bugs.webkit.org/show_bug.cgi?id=211376
2659
2660         Reviewed by Chris Dumez.
2661
2662         * wtf/PlatformHave.h: Don't define HAVE_UISCENE any more.
2663         It's always true for PLATFORM(IOS_FAMILY).
2664
2665 2020-05-03  Mark Lam  <mark.lam@apple.com>
2666
2667         Remove some unused and broken functions in Bitmap.
2668         https://bugs.webkit.org/show_bug.cgi?id=211368
2669
2670         Reviewed by Yusuke Suzuki.
2671
2672         Bitmap::operator[] never worked.  There's currently no way to use it to read a
2673         bit value.  We also can't use it to set a bit value because it relies on
2674         Bitmap::iterator::operator= to set the value.  However, Bitmap::iterator stores
2675         the Bitmap* as a const pointer, and Bitmap::iterator::operator= calls set() on
2676         the const pointer.  If we try to use operator[] to set a bit, we'll get a
2677         compilation error.
2678
2679         This patch removes the 2 variants of Bitmap::operator[] and Bitmap::iterator::operator=.
2680
2681         * wtf/Bitmap.h:
2682         (WTF::WordType>::operator): Deleted.
2683         (WTF::WordType>::operator const const): Deleted.
2684
2685 2020-05-03  Rob Buis  <rbuis@igalia.com>
2686
2687         atob() should not accept a vertical tab
2688         https://bugs.webkit.org/show_bug.cgi?id=184529
2689
2690         Reviewed by Darin Adler.
2691
2692         Add an option to allow discarding of base64 decoding
2693         when a vertical tab is encountered.
2694
2695         * wtf/text/Base64.cpp:
2696         (WTF::base64DecodeInternal):
2697         * wtf/text/Base64.h:
2698
2699 2020-05-02  Mark Lam  <mark.lam@apple.com>
2700
2701         Gardening: rolling out r261050 and r261051.
2702         https://bugs.webkit.org/show_bug.cgi?id=211328
2703         <rdar://problem/62755865>
2704
2705         Not reviewed.
2706
2707         Appears to make editing/undo-manager/undo-manager-delete-stale-undo-items.html timeout always.
2708
2709         * WTF.xcodeproj/project.pbxproj:
2710         * wtf/Bitmap.h:
2711         * wtf/CMakeLists.txt:
2712         * wtf/StdIntExtras.h: Removed.
2713
2714 2020-05-02  Mark Lam  <mark.lam@apple.com>
2715
2716         [Follow up] Allow Bitmap to use up to a UCPURegister word size for internal bit storage.
2717         https://bugs.webkit.org/show_bug.cgi?id=211328
2718         <rdar://problem/62755865>
2719
2720         Not reviewed.
2721
2722         Landing file missed in last commit.
2723
2724         * wtf/StdIntExtras.h: Added.
2725
2726 2020-05-01  Mark Lam  <mark.lam@apple.com>
2727
2728         Allow Bitmap to use up to a UCPURegister word size for internal bit storage.
2729         https://bugs.webkit.org/show_bug.cgi?id=211328
2730         <rdar://problem/62755865>
2731
2732         Reviewed by Yusuke Suzuki.
2733
2734         1. Moved the definition of CPURegister and UCPURegister down into WTF.
2735         2. Updated Bitmap so that it will automatically choose the minimal required
2736            word size for the number of bits it needs to store.  This means the Bitmap
2737            can automatically choose a WordType from uint8_t up to UCPURegister.
2738            Previously, the WordType is always uint32_t by default.
2739
2740         This should improve perf with use of Bitmap on 64-bit platforms.  The size
2741         optimization is necessary to prevent bloat on 64-bit platforms which would have
2742         resulted if we simply set the default to always be UCPURegister.
2743
2744         * WTF.xcodeproj/project.pbxproj:
2745         * wtf/Bitmap.h:
2746         * wtf/CMakeLists.txt:
2747         * wtf/StdIntExtras.h: Added.
2748
2749 2020-05-01  Saam Barati  <sbarati@apple.com>
2750
2751         Have a thread local cache for the Wasm LLInt bytecode buffer
2752         https://bugs.webkit.org/show_bug.cgi?id=211317
2753
2754         Reviewed by Filip Pizlo and Mark Lam.
2755
2756         * wtf/Vector.h:
2757         (WTF::Vector::sizeInBytes const):
2758
2759 2020-05-01  Don Olmstead  <don.olmstead@sony.com>
2760
2761         [GTK] Add additional exports to support hidden visibility
2762         https://bugs.webkit.org/show_bug.cgi?id=211246
2763
2764         Reviewed by Michael Catanzaro.
2765
2766         * wtf/ASCIICType.cpp:
2767         * wtf/DateMath.h:
2768         * wtf/FileSystem.h:
2769         * wtf/PrintStream.h:
2770         * wtf/RunLoop.h:
2771         * wtf/glib/GLibUtilities.h:
2772         * wtf/glib/GSocketMonitor.h:
2773         * wtf/glib/SocketConnection.h:
2774         (WTF::SocketConnection::isClosed const):
2775         * wtf/linux/CurrentProcessMemoryStatus.h:
2776
2777 2020-05-01  Yusuke Suzuki  <ysuzuki@apple.com>
2778
2779         Introduce MainThreadNeverDestroyed / MainThreadLazyNeverDestroyed
2780         https://bugs.webkit.org/show_bug.cgi?id=211264
2781
2782         Reviewed by Mark Lam.
2783
2784         Since AtomString has thread-affinity, `static NeverDestroyed<const AtomString>` is basically only safe for the main-thread use.
2785         We should ensure that this is only used in the main-thread. To do that, this patch introduces MainThreadNeverDestroyed and
2786         MainThreadLazyNeverDestroyed. They are NeverDestroyed and LazyNeverDestroyed + main-thread assertions.
2787
2788         * wtf/Forward.h:
2789         * wtf/NeverDestroyed.h:
2790         (WTF::AnyThreadsAccessTraits::assertAccess):
2791         (WTF::MainThreadAccessTraits::assertAccess):
2792         (WTF::NeverDestroyed::NeverDestroyed):
2793         (WTF::NeverDestroyed::storagePointer const):
2794         (WTF::LazyNeverDestroyed::construct):
2795         (WTF::LazyNeverDestroyed::storagePointer const):
2796         (WTF::makeNeverDestroyed):
2797         * wtf/text/AtomString.cpp:
2798         * wtf/text/AtomString.h:
2799
2800 2020-05-01  Don Olmstead  <don.olmstead@sony.com>
2801
2802         Use export macros on all platforms
2803         https://bugs.webkit.org/show_bug.cgi?id=211293
2804
2805         Reviewed by Michael Catanzaro.
2806
2807         Always use export macros on all platforms. Remove USE_EXPORT_MACROS and always
2808         define macros based on the platform. Allow overriding of WTF_EXPORT_PRIVATE otherwise
2809         use the defaults.
2810
2811         Remove definition of WTF_HIDDEN_DECLARATION since its not used anywhere.
2812
2813         * wtf/ExportMacros.h:
2814         * wtf/PlatformUse.h:
2815
2816 2020-04-30  Ross Kirsling  <ross.kirsling@sony.com>
2817
2818         TriState should be an enum class and use "Indeterminate" instead of "Mixed"
2819         https://bugs.webkit.org/show_bug.cgi?id=211268
2820
2821         Reviewed by Mark Lam.
2822
2823         The word "indeterminate" comes from boost::tribool.
2824         A third state is generally not "mixed" but rather unknown.
2825
2826         * wtf/TriState.h:
2827
2828 2020-04-29  Fujii Hironori  <Hironori.Fujii@sony.com>
2829
2830         [Win] Deadlock in WTF::Thread::didExit() while WebKitNetworkProcess.exe is exiting
2831         https://bugs.webkit.org/show_bug.cgi?id=210955
2832
2833         Reviewed by Don Olmstead.
2834
2835         The thread_local object of the main thread is destructed after
2836         Windows terminates other threads. If the terminated thread was
2837         holding a mutex, trying to lock the mutex causes deadlock.
2838
2839         * wtf/win/ThreadingWin.cpp:
2840         (WTF::Thread::ThreadHolder::~ThreadHolder): Do nothing if the
2841         thread is the main thread.
2842
2843 2020-04-29  Jer Noble  <jer.noble@apple.com>
2844
2845         [Mac] Adopt kMTSupportNotification_ShouldPlayHDRVideoChanged notification
2846         https://bugs.webkit.org/show_bug.cgi?id=211028
2847         <rdar://problem/61173289>
2848
2849         Reviewed by Aakash Jain.
2850
2851         Follow-up test failure fix; correct the debug/non-debug variants of SOFT_LINK_FRAMEWORK_FOR_SOURCE_WITH_EXPORT.
2852
2853         * wtf/win/SoftLinking.h:
2854
2855 2020-04-29  Commit Queue  <commit-queue@webkit.org>
2856
2857         Unreviewed, reverting r260650.
2858         https://bugs.webkit.org/show_bug.cgi?id=211172
2859
2860         It is breaking internal bots (Requested by youenn on #webkit).
2861
2862         Reverted changeset:
2863
2864         "Call STDynamicActivityAttributionPublisher in the WebProcess"
2865         https://bugs.webkit.org/show_bug.cgi?id=210772
2866         https://trac.webkit.org/changeset/260650
2867
2868 2020-04-29  Devin Rousso  <drousso@apple.com>
2869
2870         Web Inspector: Uncaught Exception: SyntaxError: Unexpected identifier 'E'. Expected either a closing ']' or a ',' following an array element.
2871         https://bugs.webkit.org/show_bug.cgi?id=211163
2872
2873         Reviewed by Joseph Pecoraro.
2874
2875         * wtf/JSONValues.h:
2876         * wtf/JSONValues.cpp:
2877         (WTF::JSONImpl::appendDoubleQuotedString):
2878         (WTF::JSONImpl::Value::escapeString): Added.
2879         Pull out and expose the logic for escaping strings so it can be used elsewhere.
2880
2881 2020-04-29  Saam Barati  <sbarati@apple.com>
2882
2883         U_STRING_NOT_TERMINATED_WARNING ICU must be handled when using the output buffer as a C string
2884         https://bugs.webkit.org/show_bug.cgi?id=211142
2885         <rdar://problem/62530860>
2886
2887         Reviewed by Darin Adler.
2888
2889         Most of our uses of ICU require us to produce a buffer of the correct
2890         length. We often test if the first call to ICU API succeeds, and if it
2891         doesn't, we grow to the required buffer size, and try again. However,
2892         there are a few APIs that we use like this, except that they write their
2893         output to a C string instead of a buffer.
2894         
2895         In a couple scenarios when we were producing C strings, we were only testing
2896         for the U_BUFFER_OVERFLOW_ERROR, instead of both U_BUFFER_OVERFLOW_ERROR and
2897         U_STRING_NOT_TERMINATED_WARNING. This patch fixes those bugs. It also
2898         introduces two new helper methods for testing error codes returned by ICU.
2899         
2900         - The first is needsToGrowToProduceBuffer, which returns true if we need to
2901         grow the buffer and re-call into ICU to get the result.
2902         - The second is needsToGrowToProduceCString, which returns true if we need to
2903         grow the buffer and re-call into ICU to produce a valid C string.
2904         
2905         I've audited all uses of U_BUFFER_OVERFLOW_ERROR and converted them to use one
2906         of the above helper methods instead.
2907         
2908         The issues in our handling of U_STRING_NOT_TERMINATED_WARNING were caught on iOS JSC
2909         tests in JSTests/stress/intl-datetimeformat.js
2910
2911         * WTF.xcodeproj/project.pbxproj:
2912         * wtf/CMakeLists.txt:
2913         * wtf/text/LineBreakIteratorPoolICU.h:
2914         (WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
2915         * wtf/text/StringView.cpp:
2916         (WTF::normalizedNFC):
2917         * wtf/unicode/icu/ICUHelpers.h: Added.
2918         (WTF::needsToGrowToProduceCString):
2919         (WTF::needsToGrowToProduceBuffer):
2920
2921 2020-04-29  Noam Rosenthal  <noam@webkit.org>
2922
2923         Add StringView::isAllSpecialCharacters()
2924         https://bugs.webkit.org/show_bug.cgi?id=211150
2925
2926         This enables checking for whitespace-only strings without allocating a StringImpl wrapper.
2927
2928         Reviewed by Darin Adler.
2929
2930         * wtf/text/StringView.h:
2931         (WTF::isSpecialCharacter const):
2932
2933 2020-04-27  Ryan Haddad  <ryanhaddad@apple.com>
2934
2935         [Cocoa] stop using out arguments for document attributes when converting to attributed strings
2936         https://bugs.webkit.org/show_bug.cgi?id=211048
2937
2938         Unreviewed partial revert of r260739 to remove unexpected logging that broke Catalina-Release-WK2-Perf tests.
2939
2940         * wtf/cocoa/URLCocoa.mm:
2941         (WTF::URL::createCFURL const):
2942
2943 2020-04-26  Darin Adler  <darin@apple.com>
2944
2945         [Cocoa] stop using out arguments for document attributes when converting to attributed strings
2946         https://bugs.webkit.org/show_bug.cgi?id=211048
2947
2948         Reviewed by Sam Weinig.
2949
2950         * wtf/cocoa/URLCocoa.mm:
2951         (WTF::URL::createCFURL const): Use init instead of initWithString:@"". The two are
2952         equivalent in more recent versions of Foundation.
2953
2954 2020-04-26  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>
2955
2956         [PlayStation] Enable TestWTF and TestWebCore
2957         https://bugs.webkit.org/show_bug.cgi?id=208849
2958
2959         Reviewed by Don Olmstead.
2960
2961         * wtf/PlatformPlayStation.cmake:
2962         Add WTF_CopySharedLibs() to install dependencies.
2963
2964 2020-04-26  Yusuke Suzuki  <ysuzuki@apple.com>
2965
2966         Use `static Lock` instead of `static NeverDestroyed<Lock>`
2967         https://bugs.webkit.org/show_bug.cgi?id=211036
2968
2969         Reviewed by Darin Adler.
2970
2971         Lock can be static-initialized since it has constexpr constructor. No need to use NeverDestroyed<Lock>.
2972
2973         * wtf/Logger.h:
2974         (WTF::Logger::observerLock):
2975
2976 2020-04-26  Joonghun Park  <jh718.park@samsung.com>
2977
2978         [WTF] Workaround gcc bug for unsigned bitfield related usual arithmetic conversions
2979         https://bugs.webkit.org/show_bug.cgi?id=211044
2980
2981         Reviewed by Darin Adler.
2982
2983         * wtf/URL.cpp:
2984         (WTF::URL::setHost):
2985         (WTF::URL::setHostAndPort):
2986         (WTF::URL::setUser):
2987         (WTF::URL::setPassword):
2988
2989 2020-04-25  Joonghun Park  <jh718.park@samsung.com>
2990
2991         Unreviewed. Remove the bulid warnings below since r260707.
2992         warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare]
2993
2994         * wtf/URL.cpp:
2995         (WTF::URL::setHost):
2996         (WTF::URL::setHostAndPort):
2997         (WTF::URL::setUser):
2998         (WTF::URL::setPassword):
2999
3000 2020-04-25  Darin Adler  <darin@apple.com>
3001
3002         [Cocoa] Deal with another round of Xcode upgrade checks
3003         https://bugs.webkit.org/show_bug.cgi?id=211027
3004
3005         Reviewed by Alexey Proskuryakov.
3006
3007         * WTF.xcodeproj/project.pbxproj: Bump the upgrade check version.
3008         Add a harmless base localization; this project contains nothing localized.
3009
3010 2020-04-25  Alex Christensen  <achristensen@webkit.org>
3011
3012         Prepare to remove automatic URL->String conversion operators
3013         https://bugs.webkit.org/show_bug.cgi?id=211007
3014
3015         Reviewed by Darin Adler.
3016
3017         Too many bugs have been caused by the compiler finding a way to make a String from a URL without being visible in the code.
3018         This does all the easy things to prepare to remove operator String& and operator NSString*.
3019         The hard things will be done in the smaller patch that actually removes them.
3020
3021         * wtf/URL.cpp:
3022         (WTF::URL::protocolIsJavaScript const):
3023         * wtf/URL.h:
3024
3025 2020-04-25  Darin Adler  <darin@apple.com>
3026
3027         Move URL to use StringView when returning substrings of the URL
3028         https://bugs.webkit.org/show_bug.cgi?id=210431
3029
3030         Reviewed by Anders Carlsson.
3031
3032         * wtf/URL.cpp: Remove unused CharBuffer type. Remove UCharBuffer
3033         type and write the type explicitly in the 3 places it's used.
3034         Removed the invalidPortNumber constant, since we use Optional
3035         instead of a special port number now.
3036         (WTF::copyASCII): Remove unnecessary special case for empty string.
3037         Tweaked coding style and comment a bit.
3038         (WTF::URL::URL): Streamlined by getting rid of a local variable.
3039         (WTF::shouldTrimFromURL): Tweaked coding style.
3040         (WTF::URL::lastPathComponent const): Return a StringView.
3041         Also, use the pathStart function for clarity.
3042         (WTF::URL::port const): Use a StringView to call parseUInt16.
3043         (WTF::URL::protocolHostAndPort const): Optimized to always allocate
3044         the string in the right size rather than removing characters from it
3045         after creating it.
3046         (WTF::decodeEscapeSequence): Added. Factored out from the function
3047         below to make it a little more readable.
3048         (WTF::decodeEscapeSequencesFromParsedURL): Convert a null StringView
3049         to a null String rather than an empty String, use a stack buffer and
3050         the helper function above, and added some FIXME comments about
3051         encoding handling.
3052         (WTF::URL::user const): Simplified by calling encodedUser.
3053         (WTF::URL::password const): Simplified by calling encodedPassword.
3054         (WTF::URL::encodedUser const): Return a StringView.
3055         (WTF::URL::encodedPassword const): Ditto. Also renamed from encodedPass.
3056         (WTF::URL::fragmentIdentifier const): Ditto.
3057         (WTF::URL::hasFragmentIdentifier const): Moved to header so it can
3058         be inlined.
3059         (WTF::URL::truncatedForUseAsBase const): Renamed from baseAsString.
3060         This function is currently only used with local file URLs and it's
3061         not perfectly clear to me precisely what it is for, hence the name
3062         is not so great.
3063         (WTF::URL::fileSystemPath const): Removed unneeded check for validity
3064         since isLocalFile does that check. Removed unneeded typecast now that
3065         path returns a StringView.
3066         (WTF::defaultPortForProtocolMapForTesting): Deleted.
3067         (WTF::ensureDefaultPortForProtocolMapForTesting): Deleted.
3068         (WTF::registerDefaultPortForProtocolForTesting): Deleted.
3069         (WTF::clearDefaultPortForProtocolMapForTesting): Deleted.
3070         (WTF::defaultPortForProtocol): Deleted.
3071         (WTF::isDefaultPortForProtocol): Deleted.
3072         (WTF::protocolIsInternal): Rewrote to take a StringView. Before it
3073         was written as a template that looked like it supported classes other
3074         than String, but actually would crash if called on a StringView.
3075         (WTF::URL::protocolIs const): Removed unneeded explicit cast to StringView.
3076         (WTF::URL::query const): Return a StringView.
3077         (WTF::URL::path const): Return a StringView, use the pathStart
3078         function for clarity.
3079         (WTF::URL::setProtocol): Use a toStringWithoutCopying to save some
3080         work when making the protocol canonical. Call parse instead of
3081         creating a URLParser here.
3082         (WTF::URL::credentialsEnd const): Added. Helper for various functions
3083         that manipulate the credentials section.
3084         (WTF::URL::setHost): Take StringView. Streamlined the code by using
3085         StringView::contains, by using makeString rather than StringBuilder,
3086         and by calling parse instead of creating a URLParser here.
3087         (WTF::URL::removePort): Deleted, since setPort takes an Optional now.
3088         (WTF::URL::setPort): Take Optional<uint16_t>. Call parse instead of
3089         creating a URLParser here.
3090         (WTF::URL::removeHostAndPort): Deleted. Callers can pass a null
3091         StringView to setHostAndPort instead.
3092         (WTF::URL::setHostAndPort): Take StringView. Don't remove the old
3093         host and port in the nomral case where we end up overwriting the entire
3094         URL at the end of the function anyway. Use parseUInt16 instead of
3095         toIntStrict to check port number for validity, which makes sure we will
3096         reject port numbers larger than 65535. Use makeString instead of
3097         StringBuilder and call parse rather than creating a URLParser here.
3098         (WTF::parse): Added. Helper function for when we create a new string
3099         and want to parse it as the new contents of the URL. Used in almost
3100         every setter function.
3101         (WTF::URL::remove): Added. Helper function for efficiently removing
3102         a piece of the URL string and re-parsing. Used in many setter functions.
3103         (WTF::URL::setUser): Take StringView. Use makeString instead of
3104         StringBuilder, and parse and remove instead of creating a URLParser here.
3105         (WTF::URL::setPassword): Renamed from setPass. Take StringView.
3106         Use makeString instead of StringBuilder, and parse and remove instead of
3107         creating a URLParser here.
3108         (WTF::URL::removeCredientials): Added. Efficiently removes both the
3109         user name and password if either is present.
3110         (WTF::URL::setFragmentIdentifier): Use parse instead of creating
3111         a URL parser here.
3112         (WTF::URL::removeFragmentIdentifier): Removed unnecessary checks for
3113         things already optimized by String::left. Could later consider merging
3114         this in with setFragmentIdentifier, using a null vs. empty distinction,
3115         but not doing that for now.
3116         (WTF::URL::setQuery): Take StringView.
3117         (WTF::URL::setPath): Take StringView.
3118         (WTF::stringWithoutQueryOrFragmentIdentifier): Added.
3119         (WTF::stringWithoutFragmentIdentifier): Added.
3120         (WTF::equalIgnoringFragmentIdentifier): Simplified implementation by
3121         using stringWithoutFragmentIdentifier.
3122         (WTF::equalIgnoringQueryAndFragment): Deleted.
3123         (WTF::hostsAreEqual): Deleted.
3124         (WTF::URL::isMatchingDomain const): Take StringView.
3125         (WTF::protocolIs): Take StringView.
3126         (WTF::URL::protocolIs): Moved to inline in the header.
3127         (WTF::URL::strippedForUseAsReferrer const): Rewrite for efficiency.
3128         (WTF::protocolIsJavaScript): Moved to inline in the header.
3129         (WTF::protocolIsInHTTPFamily): Take StringView.
3130         (WTF::aboutBlankURL): Use ASCIILiteral.
3131         (WTF::aboutSrcDocURL): Use ASCIILiteral.
3132         (WTF::portAllowed): Removed 65535 as a blocked port; wasn't needed.
3133         (WTF::mimeTypeFromDataURL): Take StringView.
3134         (WTF::URL::stringCenterEllipsizedToLength const): Tweaked style.
3135         (WTF::URL::fakeURLWithRelativePart): Take StringView.
3136         (WTF::URL::fileURLWithFileSystemPath): Take StringView..
3137         (WTF::URL::queryWithLeadingQuestionMark const): Added.
3138         (WTF::URL::fragmentIdentifierWithLeadingNumberSign const): Added.
3139         (WTF::URL::hostIsIPAddress): Tweak coding style.
3140
3141         * wtf/URL.h: Made URLTextEncoding destructor protected. Removed
3142         unused forward declaration of URLHash structure. Use WTF_EXPORT_PRIVATE
3143         on functions from URL rather than on the whole class, since the style
3144         checker told me to do that. Moved some inline function bodies out of
3145         the class definition for clarity and to keep the style checker happy.
3146         Updated many arguemnts from String to StringView and return values for
3147         substrings of the URL to StringView. Removed some unused functions and
3148         some obsolete comments.
3149
3150         * wtf/cf/CFURLExtras.cpp:
3151         (WTF::isCFURLSameOrigin): Use hasCredentials.
3152         * wtf/text/StringView.cpp:
3153         (WTF::StringView::endsWith const): Added.
3154         (WTF::parseUInt16): Added.
3155         (WTF::equalRespectingNullity): Added.
3156         (WTF::StringView::contains const): Added overload that takes a
3157         const char* so the call site doesn't have to convert it to a StringView.
3158
3159         * wtf/text/StringView.h: Updated for the additions above.
3160         Also added a default start of 0 to the find function.
3161
3162         * wtf/text/WTFString.cpp:
3163         (WTF::charactersToIntStrict): Removed unneeded explicit template argument.
3164         (WTF::charactersToUIntStrict): Ditto.
3165         (WTF::charactersToInt64Strict): Ditto.
3166         (WTF::charactersToUInt64Strict): Ditto.
3167         (WTF::charactersToIntPtrStrict): Ditto.
3168         (WTF::charactersToInt): Ditto.
3169         (WTF::charactersToUInt): Ditto.
3170         (WTF::charactersToInt64): Ditto.
3171         (WTF::charactersToUInt64): Ditto.
3172         (WTF::charactersToIntPtr): Ditto.
3173
3174 2020-04-24  Yusuke Suzuki  <ysuzuki@apple.com>
3175
3176         [WTF] allThreads registration is racy with allThreads unregistration
3177         https://bugs.webkit.org/show_bug.cgi?id=210995
3178         <rdar://problem/61609690>
3179
3180         Reviewed by Keith Miller.
3181
3182         There is a race between registering a thread to allThreads and unregistering a thread from allThreads.
3183
3184             1. Caller: A new thread is created, but not registering it to allThreads yet.
3185             2. Thread: The thread is running.
3186             3. Thread: The thread finishes its execution before the thread is registered into allThreads.
3187             4. Thread: The thread unregisters itself from allThreads.
3188             5. Caller: Registers the new thread to allThreads after it already finished its execution.
3189             6. The thread is never removed from allThreads.
3190
3191         This patch adds m_didUnregisterFromAllThreads flag to Thread, and add the thread to allThreads only when this flag is false.
3192
3193         Covered by LayoutTests/inspector/cpu-profiler/threads.html.
3194
3195         * wtf/Threading.cpp:
3196         (WTF::Thread::create):
3197         (WTF::Thread::didExit):
3198         * wtf/Threading.h:
3199         (WTF::Thread::Thread):
3200
3201 2020-04-24  Alex Christensen  <achristensen@webkit.org>
3202
3203         REGRESSION(260485) Payment requests don't do anything
3204         https://bugs.webkit.org/show_bug.cgi?id=210997
3205         <rdar://problem/62275343>
3206
3207         Reviewed by Darin Adler.
3208
3209         We were giving the PKPaymentRequest an NSArray<NSString *> instead of NSArray<NSURL *>.
3210         This was a problem with all uses of createNSArray with Vector<URL>.
3211         Now it's fixed with a test.
3212
3213         * wtf/URL.h:
3214         * wtf/cocoa/URLCocoa.mm:
3215         (WTF::makeNSArrayElement):
3216         (WTF::makeVectorElement):
3217
3218 2020-04-24  Megan Gardner  <megan_gardner@apple.com>
3219
3220         Make LEGACY_PDF_SUPPORT feature flag.
3221         https://bugs.webkit.org/show_bug.cgi?id=210868
3222         <rdar://problem/62199847>
3223
3224         Reviewed by Tim Horton.
3225
3226         * wtf/PlatformHave.h:
3227
3228 2020-04-24  Youenn Fablet  <youenn@apple.com> and Luming Yin <luming_yin@apple.com>
3229
3230         Call STDynamicActivityAttributionPublisher in the WebProcess
3231         https://bugs.webkit.org/show_bug.cgi?id=210772
3232         <rdar://problem/62075201>
3233
3234         Reviewed by Geoffrey Garen.
3235
3236         * wtf/PlatformHave.h:
3237
3238 2020-04-23  Don Olmstead  <don.olmstead@sony.com>
3239
3240         [CMake] CMAKE_BINARY_DIR should always be a PRIVATE include directory
3241         https://bugs.webkit.org/show_bug.cgi?id=196717
3242
3243         Reviewed by Michael Catanzaro.
3244
3245         Remove public includes in WTF.
3246
3247         * wtf/CMakeLists.txt:
3248
3249 2020-04-22  Darin Adler  <darin@apple.com>
3250
3251         [Cocoa] Build with UChar as char16_t even in builds that use Apple's internal SDK
3252         https://bugs.webkit.org/show_bug.cgi?id=210845
3253
3254         Reviewed by Anders Carlsson.
3255
3256         * Configurations/Base.xcconfig: Move ICU-configuring macros to Platform.h.
3257
3258         * wtf/Platform.h: Set macros here. The file says not to put things like this in it,
3259         but in practice this is the right place to put something that we need set consistently
3260         for all the WebKit projects.
3261         - U_HIDE_DEPRECATED_API, to make sure we don't use it by accident.
3262         - U_SHOW_CPLUSPLUS_API=0, to make sure we don't use it by accident.
3263         - UCHAR_TYPE=char16_t when compiling C++, which is the default on most platforms,
3264           but not the default in Apple's internal SDK.
3265         - U_DISABLE_RENAMING when building on Apple platforms, important so we can link
3266           to an older version of ICU and still load with a newer version.
3267
3268         * wtf/URL.cpp:
3269         (WTF::URL::hostAndPort const): Get rid of an obsolete cast to unsigned to work
3270         around uint16_t not being treated as a number by makeString.
3271
3272         * wtf/URLHelpers.cpp: Rework to not use deprecated USCRIPT_CODE_LIMIT.
3273         (WTF::URLHelpers::whiteListIDNScript): Added overloads.
3274         (WTF::URLHelpers::initializeDefaultIDNScriptWhiteList): Use an array of
3275         UScriptCode instead of an array of strings.
3276         (WTF::URLHelpers::allCharactersInIDNScriptWhiteList): Updated for the above.
3277
3278         * wtf/cocoa/NSURLExtras.mm:
3279         (WTF::decodePercentEscapes): Use createCFString instead of converting to NString
3280         and then typecasting.
3281         (WTF::URLByTruncatingOneCharacterBeforeComponent): Updated to use a constexpr
3282         instead of a macro.
3283         (WTF::dataForURLComponentType): Ditto.
3284         (WTF::URLByRemovingComponentAndSubsequentCharacter): Ditto.
3285         (WTF::originalURLData): Ditto.
3286
3287 2020-04-22  Claudio Saavedra  <csaavedra@igalia.com>
3288
3289         [GTK4] Several fixes to GdkEvent APIs for GTK4
3290         https://bugs.webkit.org/show_bug.cgi?id=210856
3291
3292         Reviewed by Carlos Garcia Campos.
3293
3294         * wtf/glib/GTypedefs.h: In GTK4 GdkEvent is a struct.
3295
3296 2020-04-21  Peng Liu  <peng.liu6@apple.com>
3297
3298         Fix MACCATALYST build failures
3299         https://bugs.webkit.org/show_bug.cgi?id=210815
3300
3301         Reviewed by Tim Horton.
3302
3303         * wtf/PlatformEnable.h:
3304
3305 2020-04-19  Darin Adler  <darin@apple.com>
3306
3307         [Cocoa] Use createNSArray in many more places that build NSArray objects from C++ collections
3308         https://bugs.webkit.org/show_bug.cgi?id=210702
3309
3310         Reviewed by Alex Christensen.
3311
3312         * wtf/cocoa/VectorCocoa.h: Improved the createNSArray function template:
3313         1) Skip nil values. This matches what we do with Optional<> in makeVector and
3314            was always my intention; apparently forgot to do it.
3315         2) Instead of taking a const reference argument, take a forwarding reference
3316            and use forwarding when passing collection elements to makeNSArrayElement
3317            or the passed-in function. Can transfer ownership of collection elements
3318            as they are transformed into array elements, which makes sense if the
3319            Objective-C objects are wrappers that take ownership of what's wrapped.
3320         3) Take any collection that works with std::size and a range-based for loop,
3321            no longer requiring a size member function. Includes arrays.
3322         4) Since this now intended for use on collections other than WTF::Vector,
3323            added "using WTF::createNSArray" since argument-dependent lookup won't
3324            find the function template in those cases.
3325
3326 2020-04-21  Fujii Hironori  <Hironori.Fujii@sony.com>
3327
3328         [Win] Use generic WorkQueue instead of WorkQueueWin.cpp
3329         https://bugs.webkit.org/show_bug.cgi?id=210785
3330
3331         Reviewed by Darin Adler.
3332
3333         WorkQueueWin was using random threads to execute dispatched
3334         functions. This is not desired for IPC::Connection because it
3335         needs to call CancelIo API in the same thread started aync
3336         ReadFile operations.
3337
3338         Implemented RunLoop::dispatchAfter in RunLoopWin.cpp in order to
3339         use generic WorkQueue.
3340
3341         * wtf/PlatformWin.cmake:
3342         * wtf/RunLoop.h: Added DispatchTimer class for USE(WINDOWS_EVENT_LOOP).
3343         (WTF::RunLoop::DispatchTimer::DispatchTimer):
3344         (WTF::RunLoop::DispatchTimer::setFunction):
3345         * wtf/WorkQueue.h: Removed code for USE(WINDOWS_EVENT_LOOP).
3346         * wtf/win/RunLoopWin.cpp:
3347         (WTF::RunLoop::dispatchAfter): Added.
3348         * wtf/win/WorkQueueWin.cpp: Removed.
3349
3350 2020-04-21  Charlie Turner  <cturner@igalia.com>
3351
3352         [Clang 10] Fix warning: definition of implicit copy assignment operator for 'PageBlock' is deprecated because it has a user-declared copy constructor
3353         https://bugs.webkit.org/show_bug.cgi?id=210748
3354
3355         Reviewed by Adrian Perez de Castro.
3356
3357         Recent Clang's will issue a warning if you declare an explicit
3358         copy construction, but leave the compiler to fill in an implicit
3359         assignment operator. I think this is to catch cases where you do
3360         something exciting in an assignment operator/copy constructor and
3361         forget to do the same exciting thing in the other.
3362
3363         * wtf/PageAllocation.h: Import the base's constructor to avoid
3364         defining our own identical one.
3365         * wtf/PageBlock.h: Remove trivial constructor and replace with
3366         member initializers. Remove copy constructor. This looks identical
3367         to what the compiler would generate anyway.
3368
3369 2020-04-21  Claudio Saavedra  <csaavedra@igalia.com>
3370
3371         [GTK4] Adapt to GtkIconTheme API changes
3372         https://bugs.webkit.org/show_bug.cgi?id=210745
3373
3374         Reviewed by Adrian Perez de Castro.
3375
3376         * wtf/glib/GTypedefs.h: Remove unneeded GtkIconInfo definition.
3377
3378 2020-04-20  Timothy Horton  <timothy_horton@apple.com>
3379
3380         Try to fix the build after r260407
3381
3382         * wtf/PlatformHave.h:
3383
3384 2020-04-20  Peng Liu  <peng.liu6@apple.com>
3385
3386         Fix build failures when video fullscreen and picture-in-picture is disabled
3387         https://bugs.webkit.org/show_bug.cgi?id=210777
3388
3389         Reviewed by Eric Carlson.
3390
3391         * wtf/PlatformEnable.h:
3392
3393 2020-04-20  Yusuke Suzuki  <ysuzuki@apple.com>
3394
3395         Add document about WTF malloc-related macros
3396         https://bugs.webkit.org/show_bug.cgi?id=208367
3397
3398         Reviewed by Anders Carlsson, Simon Fraser, and Darin Adler.
3399
3400         This adds document about WTF malloc-related macros since we have bunch of macros now.
3401
3402         * wtf/FastMalloc.h:
3403
3404 2020-04-20  Darin Adler  <darin@apple.com>
3405
3406         REGRESSION (r253987): StringImpl::adopt(Vector&&) copies only half of the characters in the Vector when copying across malloc zones
3407         https://bugs.webkit.org/show_bug.cgi?id=210736
3408
3409         Reviewed by Yusuke Suzuki.
3410
3411         * wtf/text/StringImpl.cpp:
3412         (WTF::StringImpl::replace): Use copyCharacters instead of memcpy.
3413
3414         * wtf/text/StringImpl.h: Use std::is_same_v instead of std::is_same.
3415         (WTF::StringImpl::StringImpl): Use copyCharacters instead of memcpy.
3416         Also drop C-style cast to cast away const.
3417         (WTF::StringImpl::adopt): Don't even try to adopt across malloc zones.
3418
3419 2020-04-20  Darin Adler  <darin@apple.com>
3420
3421         Use #import instead of #include in Objective-C and don't use #pragma once
3422         https://bugs.webkit.org/show_bug.cgi?id=210724
3423
3424         Reviewed by David Kilzer.
3425
3426         * wtf/cocoa/Entitlements.mm:
3427         * wtf/cocoa/FileSystemCocoa.mm:
3428         * wtf/cocoa/MainThreadCocoa.mm:
3429         * wtf/cocoa/SystemTracingCocoa.cpp:
3430         * wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
3431         * wtf/mac/SchedulePairMac.mm:
3432         * wtf/text/cocoa/StringCocoa.mm:
3433         * wtf/text/cocoa/TextStreamCocoa.mm:
3434         More #import.
3435
3436 2020-04-19  Brady Eidson  <beidson@apple.com>
3437
3438         Add WKScriptMessageHandler API that asynchronously responds with a promise.
3439         rdar://problem/57243492 and https://bugs.webkit.org/show_bug.cgi?id=206398
3440
3441         Reviewed by Andy Estes.
3442
3443         * wtf/CompletionHandler.h:
3444         (WTF::CompletionHandlerWithFinalizer<Out): Add a variant of CompletionHandler that allows for a Finalizer function
3445           to handle cases where the Completion function hasn't been called at destruction time.
3446
3447 2020-04-19  Yusuke Suzuki  <ysuzuki@apple.com>
3448
3449         [JSC] Enable BigInt
3450         https://bugs.webkit.org/show_bug.cgi?id=210726
3451
3452         Reviewed by Mark Lam.
3453
3454         * wtf/PlatformUse.h:
3455
3456 2020-04-18  Robin Morisset  <rmorisset@apple.com>
3457
3458         Support an inlined representation in JSValue of small BigInts ("BigInt32")
3459         https://bugs.webkit.org/show_bug.cgi?id=206182
3460
3461         Reviewed by Yusuke Suzuki.
3462
3463         Add a USE(BIGINT32) flag.
3464
3465         * wtf/PlatformUse.h:
3466
3467 2020-04-18  Keith Miller  <keith_miller@apple.com>
3468
3469         Redesign how we do for-of iteration for JSArrays
3470         https://bugs.webkit.org/show_bug.cgi?id=175454
3471
3472         Reviewed by Filip Pizlo.
3473
3474         * wtf/EnumClassOperatorOverloads.h:
3475
3476 2020-04-18  Yusuke Suzuki  <ysuzuki@apple.com>
3477
3478         [WTF] Move DataRef.h from WebCore to WTF to utilize it in JSC
3479         https://bugs.webkit.org/show_bug.cgi?id=210689
3480
3481         Reviewed by Anders Carlsson.
3482
3483         * WTF.xcodeproj/project.pbxproj:
3484         * wtf/CMakeLists.txt:
3485         * wtf/DataRef.h: Renamed from Source/WebCore/rendering/style/DataRef.h.
3486
3487 2020-04-17  Saam Barati  <sbarati@apple.com>
3488
3489         GetTypedArrayByteOffset is broken on arm64e
3490         https://bugs.webkit.org/show_bug.cgi?id=210631
3491
3492         Reviewed by Mark Lam.
3493
3494         * wtf/CagedPtr.h:
3495         (WTF::CagedPtr::rawBits const):
3496
3497 2020-04-17  Peng Liu  <peng.liu6@apple.com>
3498
3499         Cleanup the macros for video fullscreen and picture-in-picture
3500         https://bugs.webkit.org/show_bug.cgi?id=210638
3501
3502         Reviewed by Eric Carlson.
3503
3504         Add macro ENABLE_VIDEO_PRESENTATION_MODE.
3505
3506         * wtf/PlatformEnable.h:
3507
3508 2020-04-17  Claudio Saavedra  <csaavedra@igalia.com>
3509
3510         [GTK][WPE] Bump dependencies minimum required version in Platform.h
3511         https://bugs.webkit.org/show_bug.cgi?id=210651
3512
3513         Reviewed by Adrian Perez de Castro.
3514
3515         Bring the minimum required version in Platform.h in sync with the actual
3516         minimal required version. This ensures that deprecated APIs used bring up
3517         compilation warnings.
3518
3519         * wtf/Platform.h:
3520
3521 2020-04-17  Per Arne Vollan  <pvollan@apple.com>
3522
3523         [iOS] Deny iokit open access to graphics related classes
3524         https://bugs.webkit.org/show_bug.cgi?id=210616
3525
3526         Reviewed by Darin Adler.
3527
3528         * wtf/spi/darwin/SandboxSPI.h:
3529
3530 2020-04-17  Youenn Fablet  <youenn@apple.com>
3531
3532         Make use of WeakHashSet for MediaStreamTrackPrivate and RealtimeMediaSource observers
3533         https://bugs.webkit.org/show_bug.cgi?id=210492
3534
3535         Reviewed by Geoffrey Garen.
3536
3537         * wtf/WeakHashSet.h:
3538
3539 2020-04-16  Daniel Bates  <dabates@apple.com>
3540
3541         Clean up VectorCocoa createNSArray overloads and add documentation for createNSArray taking a map function
3542         https://bugs.webkit.org/show_bug.cgi?id=210610
3543
3544         Reviewed by Darin Adler.
3545
3546         Remove unnecessary local variable. Rename "map" type in createNSArray function for clarity
3547         and add documentation for createNSArray function that takes a map function.
3548
3549         I was tempted, but decided not to write the createNSArray function that does not take a
3550         map function in terms of the one that did. With the "right" optimization settings the
3551         compiler should emit the same code, but I didn't verify this. So, I didn't do it.
3552
3553         While I am here, update  makeVector() to call shrinkToFit() to reduce the memory footprint
3554         of the returned vector should it end of having less entries, due to filtering, than its
3555         initial capacity.
3556
3557         * wtf/cocoa/VectorCocoa.h:
3558         (WTF::createNSArray): See above description.
3559         (WTF::makeVector): Shrink to fit before returning the vector. See above for more details.
3560
3561 2020-04-16  Daniel Bates  <dabates@apple.com>
3562
3563         Move -_requestTextInputContextsInRect to WKContentView to simplify implementation
3564         https://bugs.webkit.org/show_bug.cgi?id=210398
3565         <rdar://problem/61656931>
3566
3567         Reviewed by Darin Adler.
3568
3569         Add a convenience function to create an NSArray from a WTF::Vector with a transform function.
3570         The tranform function can either return a RetainPtr or an id.
3571
3572         * wtf/cocoa/VectorCocoa.h:
3573         (WTF::createNSArray): Added.
3574
3575 2020-04-16  Eric Carlson  <eric.carlson@apple.com>
3576
3577         [macOS] Update ScreenTime as playback state changes
3578         https://bugs.webkit.org/show_bug.cgi?id=210518
3579         <rdar://problem/61181092>
3580
3581         Reviewed by Jer Noble.
3582         
3583         Define HAVE_MEDIA_USAGE_FRAMEWORK and ENABLE_MEDIA_USAGE
3584
3585         * wtf/PlatformEnableCocoa.h:
3586         * wtf/PlatformHave.h:
3587
3588 2020-04-16  Alberto Garcia  <berto@igalia.com>
3589
3590         Unreviewed, set CeilingOnPageSize for MIPS64
3591
3592         This fixes a build failure ("Must set CeilingOnPageSize in
3593         PageBlock.h").
3594
3595         * wtf/PageBlock.h:
3596
3597 2020-04-15  Chris Dumez  <cdumez@apple.com>
3598
3599         [IPC Hardening] MachMessage::messageSize() should use checked arithmetic
3600         https://bugs.webkit.org/show_bug.cgi?id=210567
3601         <rdar://problem/61734355>
3602
3603         Reviewed by Geoffrey Garen.
3604
3605         Add operator / to CheckedArithmetic for convenience.
3606
3607         * wtf/CheckedArithmetic.h:
3608         (WTF::safeDivide):
3609         (WTF::Checked::operator/=):
3610         (WTF::operator/):
3611
3612 2020-04-15  Robin Morisset  <rmorisset@apple.com>
3613
3614         Flaky Test: fetch/fetch-worker-crash.html
3615         https://bugs.webkit.org/show_bug.cgi?id=187257
3616         <rdar://problem/48527526>
3617
3618         Reviewed by Yusuke Suzuki.
3619
3620         Make startMachExceptionHandlerThread visible so that we can make sure it is called whenever initializing JSC.
3621
3622         * wtf/threads/Signals.cpp:
3623         (WTF::startMachExceptionHandlerThread):
3624         * wtf/threads/Signals.h:
3625
3626 2020-04-14  Peng Liu  <peng.liu6@apple.com>
3627
3628         Adopt interface AVAudioRoutingArbiter for Mac
3629         https://bugs.webkit.org/show_bug.cgi?id=210167
3630
3631         Reviewed by Eric Carlson.
3632
3633         Add macro HAVE_AVAUDIO_ROUTING_ARBITER.
3634
3635         * wtf/PlatformHave.h:
3636
3637 2020-04-13  Commit Queue  <commit-queue@webkit.org>
3638
3639         Unreviewed, reverting r260052.
3640         https://bugs.webkit.org/show_bug.cgi?id=210479
3641
3642         Breaks iOS tests, needs more work (Requested by smfr on
3643         #webkit).
3644
3645         Reverted changeset:
3646
3647         "Add ENABLE_CUSTOM_SCROLLBARS and define it for macOS and for
3648         non-Cocoa platforms"
3649         https://bugs.webkit.org/show_bug.cgi?id=210460
3650         https://trac.webkit.org/changeset/260052
3651
3652 2020-04-13  David Kilzer  <ddkilzer@apple.com>
3653
3654         Replace use of Checked<size_t, RecordOverflow> with CheckedSize
3655         <https://webkit.org/b/210461>
3656
3657         Reviewed by Mark Lam.
3658
3659         * wtf/FastMalloc.cpp:
3660         (WTF::tryFastCalloc):
3661         * wtf/Gigacage.cpp:
3662         (Gigacage::tryMallocArray):
3663         * wtf/glib/SocketConnection.cpp:
3664         (WTF::SocketConnection::sendMessage):
3665
3666 2020-04-13  Simon Fraser  <simon.fraser@apple.com>
3667
3668         Add ENABLE_CUSTOM_SCROLLBARS and define it for macOS and for non-Cocoa platforms
3669         https://bugs.webkit.org/show_bug.cgi?id=210460
3670
3671         Reviewed by Tim Horton.
3672
3673         Define ENABLE_CUSTOM_SCROLLBARS for PLATFORM(MAC) and other non-Cocoa platforms.
3674
3675         * wtf/PlatformEnable.h:
3676         * wtf/PlatformEnableCocoa.h:
3677
3678 2020-04-13  David Kilzer  <ddkilzer@apple.com>
3679
3680         Fix clang static analyzer warnings about unused instance variables in WebIconDatabase, WKView
3681         <https://webkit.org/b/210427>
3682
3683         Reviewed by Alex Christensen.
3684
3685         * wtf/Compiler.h:
3686         (WK_UNUSED_INSTANCE_VARIABLE): Add.
3687
3688 2020-04-13  Joonghun Park  <jh718.park@samsung.com>
3689
3690         Unreviewed. Remove redundant move in return statement.
3691
3692         Return statement already returns rvalue,
3693         so we don't need move here.
3694
3695         This patch removes the build warning below since r259922.
3696         warning: redundant move in return statement [-Wredundant-move]
3697
3698         * wtf/persistence/PersistentCoders.cpp:
3699         (WTF::Persistence::Coder<CString>::decode):
3700         (WTF::Persistence::decodeStringText):
3701         (WTF::Persistence::Coder<SHA1::Digest>::decode):
3702         * wtf/persistence/PersistentCoders.h:
3703
3704 2020-04-12  Mark Lam  <mark.lam@apple.com>
3705
3706         Enable the ability to build the ASM LLInt for ARMv7k.
3707         https://bugs.webkit.org/show_bug.cgi?id=210412
3708
3709         Reviewed by Sam Weinig.
3710
3711         Remove some old code that forces the ENABLE(C_LOOP) to be true if ENABLE(JIT) is
3712         false.  These 2 options used to be mutually exclusive, but is no more.  Now, we
3713         allow platforms to choose to build the ASM LLInt instead even if ENABLE(JIT) is
3714         false.
3715
3716         * wtf/PlatformEnable.h:
3717
3718 2020-04-12  Darin Adler  <darin@apple.com>
3719
3720         [Cocoa] Minor tweaks to code to get locale strings to remove one-time-initialization booleans
3721         https://bugs.webkit.org/show_bug.cgi?id=210410
3722
3723         Reviewed by Sam Weinig.
3724
3725         * wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp:
3726         (WTF::textBreakLocalePreference): Use auto, and no need to explicitly mark this inline.
3727         (WTF::topLanguagePreference): Use auto.
3728         (WTF::localeIDInBuffer): Renamed from getLocale. Changed to return a std::array and to
3729         handle failure cases afterward rather than by initializing beforehand.
3730         (WTF::getSearchLocale): Deleted.
3731         (WTF::currentSearchLocaleID): Using "static const auto", wrote this in a straightforward
3732         and compact way, using localeIDInBuffer and topLanguagePreference.
3733         (WTF::textBreakLocale): Renamed from getTextBreakLocale and changed to return a
3734         RetainPtr<CFStringRef>.
3735         (WTF::currentTextBreakLocaleID): Using "static const auto", wrote this in a straightforward
3736         and compact way, using localeIDInBuffer and textBreakLocale.
3737
3738 2020-04-12  David Kilzer  <ddkilzer@apple.com>
3739
3740         Follow-up: WTF::Persistence::Coder and WTF::Persistence::Decoder should use WARN_UNUSED_RETURN
3741         <https://webkit.org/b/210238>
3742         <rdar://problem/61491575>
3743
3744         Changes based on feedback from Alex Christensen and Darin Adler:
3745         - Remove WARN_UNUSED_RETURN from methods returning Optional<>.
3746         - Place WARN_UNUSED_RETURN consistently before the return type.
3747
3748         * wtf/persistence/PersistentDecoder.h:
3749
3750 2020-04-10  Alex Christensen  <achristensen@webkit.org>
3751
3752         PersistentCoders should use modern decoding syntax
3753         https://bugs.webkit.org/show_bug.cgi?id=207497
3754
3755         Reviewed by Darin Adler.
3756
3757         This paves the way for more serialized types that do not have a default constructor.
3758
3759         * wtf/persistence/PersistentCoder.h:
3760         (WTF::Persistence::Coder::encode):
3761         (WTF::Persistence::Coder::decode):
3762         * wtf/persistence/PersistentCoders.cpp:
3763         (WTF::Persistence::Coder<AtomString>::decode):
3764         (WTF::Persistence::Coder<CString>::decode):
3765         (WTF::Persistence::decodeStringText):
3766         (WTF::Persistence::Coder<String>::decode):
3767         (WTF::Persistence::Coder<SHA1::Digest>::decode):
3768         * wtf/persistence/PersistentCoders.h:
3769         (WTF::Persistence::Coder<Optional<T>>::decode):
3770         (WTF::Persistence::Coder<Seconds>::decode):
3771         (WTF::Persistence::Coder<WallTime>::decode):
3772         * wtf/persistence/PersistentDecoder.cpp:
3773         (WTF::Persistence::Decoder::decodeNumber):
3774         (WTF::Persistence::Decoder::operator>>):
3775         (WTF::Persistence::Decoder::decode): Deleted.
3776         * wtf/persistence/PersistentDecoder.h:
3777         (WTF::Persistence::Decoder::operator>>):
3778         (WTF::Persistence::Decoder::decode): Deleted.
3779         (WTF::Persistence::Decoder::decodeEnum): Deleted.
3780         * wtf/persistence/PersistentEncoder.h:
3781         (WTF::Persistence::Encoder::operator<<):
3782         (WTF::Persistence::Encoder::encode): Deleted.
3783         (WTF::Persistence::Encoder::encodeEnum): Deleted.
3784
3785 2020-04-10  David Kilzer  <ddkilzer@apple.com>
3786
3787         Follow-up: Add WARN_UNUSED_RETURN to decode methods in Source/WTF
3788         <https://webkit.org/b/210323>
3789         <rdar://problem/61565764>
3790
3791         Changes based on feedback from Alex Christensen and Darin Adler:
3792         - Remove WARN_UNUSED_RETURN from methods returning Optional<>.
3793         - Place WARN_UNUSED_RETURN consistently before the return type.
3794
3795         * wtf/MediaTime.h:
3796         * wtf/MonotonicTime.h:
3797         * wtf/ObjectIdentifier.h:
3798         (WTF::ObjectIdentifier::decode):
3799         * wtf/Seconds.h:
3800         * wtf/URL.h:
3801
3802 2020-04-10  Alicia Boya García  <aboya@igalia.com>
3803
3804         [WTF] DataMutex: Add runUnlocked()
3805         https://bugs.webkit.org/show_bug.cgi?id=209811
3806
3807         Reviewed by Xabier Rodriguez-Calvar.
3808
3809         This patch introduces a runUnlocked() method in WTF::DataMutex::LockedWrapper
3810         to run a lambda function without the lock. This is intended to be used for
3811         small sections of the code that need to be unlocked, in cases where using
3812         scoping would prove non-ergonomic or where running the unlocked section is only
3813         necessary or desired when a certain condition is met -- something that cannot
3814         be done with C++ scoping.
3815
3816         Safety mechanisms are provided. First, because this is used with a lambda, all
3817         variables to be used in the unlocked section have to be specified in the
3818         capture (global capture is possible but not recommended to simplify analysis).
3819         Second, additional checks have been added to DataMutex to detect unlocked
3820         accesses among other conditions. This will detect among other things naive
3821         access to protected members by means of capturing the LockedWrapper by
3822         reference.
3823
3824         * wtf/DataMutex.h:
3825         (WTF::OwnerAwareLockAdapter::lock):
3826         (WTF::OwnerAwareLockAdapter::unlock):
3827         (WTF::OwnerAwareLockAdapter::tryLock):
3828         (WTF::OwnerAwareLockAdapter::isLocked const):
3829         (WTF::DataMutex::LockedWrapper::operator->):
3830         (WTF::DataMutex::LockedWrapper::operator*):
3831         (WTF::DataMutex::LockedWrapper::mutex):
3832         (WTF::DataMutex::LockedWrapper::lockHolder):
3833         (WTF::DataMutex::LockedWrapper::runUnlocked):
3834
3835 2020-04-10  David Kilzer  <ddkilzer@apple.com>
3836
3837         Add WARN_UNUSED_RETURN to decode methods in Source/WTF
3838         <https://webkit.org/b/210323>
3839         <rdar://problem/61565764>
3840
3841         Reviewed by Darin Adler.
3842
3843         * wtf/MediaTime.h:
3844         * wtf/MonotonicTime.h:
3845         * wtf/ObjectIdentifier.h:
3846         (WTF::ObjectIdentifier::decode):
3847         * wtf/Seconds.h:
3848         * wtf/URL.h:
3849         * wtf/persistence/PersistentCoder.h:
3850         (WTF::Persistence::Coder::decode):
3851
3852 2020-04-08  Darin Adler  <darin@apple.com>
3853
3854         [Cocoa] Simplify NSArray, NSDictionary, and NSNumber idioms throughout WebKit
3855         https://bugs.webkit.org/show_bug.cgi?id=210138
3856
3857         Reviewed by Alex Christensen.
3858
3859         * WTF.xcodeproj/project.pbxproj: Added VectorCocoa.h.
3860         * wtf/PlatformMac.cmake: Ditto.
3861
3862         * wtf/cocoa/NSURLExtras.mm: Removed unneeded include.
3863         * wtf/cocoa/URLCocoa.mm: Ditto.
3864
3865         * wtf/cocoa/VectorCocoa.h: Added. Contains createNSArray and makeVector
3866         function templates for converting NSArray to and from Vector.
3867
3868         * wtf/text/WTFString.h: Added makeNSArrayElement and makeVectorElement
3869         functions, making createNSArray and makeVector compatible with String.
3870         * wtf/text/cocoa/StringCocoa.mm:
3871         (WTF::makeNSArrayElement): Added.
3872         (WTF::makeVectorElement): Added.
3873
3874 2020-04-09  David Kilzer  <ddkilzer@apple.com>
3875
3876         Add using WTF::isInBounds to CheckedArithmetic.h
3877         <https://webkit.org/b/210299>
3878
3879         Reviewed by Darin Adler.
3880
3881         * wtf/CheckedArithmetic.h:
3882         - Add `using WTF::isInBounds` statement so this function may be
3883           used unprefixed outside the WTF project.
3884
3885 2020-04-09  David Kilzer  <ddkilzer@apple.com>
3886
3887         WTF::Persistence::Coder and WTF::Persistence::Decoder should use WARN_UNUSED_RETURN
3888         <https://webkit.org/b/210238>
3889         <rdar://problem/61491575>
3890
3891         Reviewed by Darin Adler.
3892
3893         * wtf/persistence/PersistentCoders.cpp:
3894         (WTF::Persistence::decodeStringText):
3895         - Add WARN_UNUSED_RETURN.
3896
3897         * wtf/persistence/PersistentCoders.h:
3898         (WTF::Persistence::Coder<Optional<T>>::decode):
3899         (WTF::Persistence::Coder<Seconds>::decode):
3900         (WTF::Persistence::Coder<WallTime>::decode):
3901         - Add WARN_UNUSED_RETURN.
3902         - Add missing return value check for
3903           decode.decodeFixedLengthData().
3904
3905         * wtf/persistence/PersistentDecoder.h:
3906         (WTF::Persistence::Decoder::decode):
3907         (WTF::Persistence::Decoder::decodeEnum):
3908         (WTF::Persistence::Decoder::bufferIsLargeEnoughToContain const):
3909         - Add WARN_UNUSED_RETURN.
3910
3911 2020-04-09  David Kilzer  <ddkilzer@apple.com>
3912
3913         Follow-up: WTF::Persistence::VectorCoder and IPC::VectorArgumentCoder should do bounds checking without crashing
3914         <https://webkit.org/b/210227>
3915         <rdar://problem/60832243>
3916
3917         Reviewed by Alex Christensen.
3918
3919         * wtf/persistence/PersistentCoders.h:
3920         (WTF::Persistence::VectorCoder::decode):
3921         - Replace safeCast<size_t> with isInBounds<size_t> so that we
3922           don't crash if `decodedSize` is too big.  Instead we fail
3923           decoding by returning early.
3924         - Revert checked arithemtic for multiplication since
3925           bufferIsLargeEnoughToContain<T(size) already did this check
3926           for us.
3927
3928 2020-04-09  Mark Lam  <mark.lam@apple.com>
3929
3930         Implement a more efficient tagCFunction() tool.
3931         https://bugs.webkit.org/show_bug.cgi?id=210254
3932
3933         Reviewed by Keith Miller.
3934
3935         The current tagCFunctionPtr() tool does some extra work that is not needed if
3936         we are tagging a known function and not a potentially arbitrary pointer.  For
3937         example,
3938         1. it doesn't need to do a null check.
3939         2. it doesn't need to authenticate the function address.  
3940         3. The RELEASE_ASSERT used to enforce that authentication can also go away.
3941
3942         We should only use tagCFunction() (instead of tagCFunctionPtr()) if we know for
3943         certain that we're operating on a C/C++ function, and not some arbitrary pointer.
3944
3945         * wtf/PtrTag.h:
3946         (WTF::tagCFunction):
3947
3948 2020-04-08  David Kilzer  <ddkilzer@apple.com>
3949
3950         WTF::Persistence::VectorCoder and IPC::VectorArgumentCoder should use checked arithmetic
3951         <https://webkit.org/b/210227>
3952         <rdar://problem/60832243>
3953
3954         Reviewed by Alex Christensen.
3955
3956         * wtf/persistence/PersistentCoders.h:
3957         (WTF::Persistence::VectorCoder::decode):
3958         - Use checked arithemtic for multiplication.
3959
3960 2020-04-08  Chris Dumez  <cdumez@apple.com>
3961
3962         querySelector("#\u0000") should match an element with ID U+FFFD
3963         https://bugs.webkit.org/show_bug.cgi?id=210119
3964
3965         Reviewed by Darin Adler.
3966
3967         * wtf/text/StringImpl.cpp:
3968         (WTF::StringImpl::replace):
3969         Slightly optimize the 16-bit code path of StringImpl::replace(). Since we know
3970         there is no character match from indexes 0 to i, we can simply use memcpy for
3971         this range.
3972
3973 2020-04-08  Ross Kirsling  <ross.kirsling@sony.com>
3974
3975         Remove ENABLE_INTL define
3976         https://bugs.webkit.org/show_bug.cgi?id=210164
3977
3978         Reviewed by Darin Adler.
3979
3980         AppleWin (and, following suit, FTW) was the only upstream platform turning ENABLE_INTL off;
3981         now that their headers have been upgraded to ICU 62, this define can be removed entirely.
3982
3983         Going forward, we thus assume JSC has an Intl object and can simply runtime-guard any new features added to it.
3984
3985         * wtf/PlatformEnable.h:
3986         * wtf/PlatformEnableCocoa.h:
3987
3988 2020-04-08  Adrian Perez de Castro  <aperez@igalia.com>
3989
3990         [GTK4] Make PAL::systemBeep() work
3991         https://bugs.webkit.org/show_bug.cgi?id=210158
3992
3993         Reviewed by Carlos Garcia Campos.
3994
3995         * wtf/Platform.h: Define a value for GDK_VERSION_MIN_REQUIRED suitable for GTK4.
3996
3997 2020-04-08  Tim Horton  <timothy_horton@apple.com>
3998
3999         Rearrange and simplify some JSC feature flags
4000         https://bugs.webkit.org/show_bug.cgi?id=210152
4001
4002         Reviewed by Saam Barati.
4003
4004         * wtf/PlatformEnableCocoa.h:
4005         * wtf/PlatformHave.h:
4006         * wtf/PlatformUse.h:
4007
4008 2020-04-08  Philippe Normand  <pnormand@igalia.com>
4009
4010         [GTK][WPE] Release logs are unconditionally filling the journal
4011         https://bugs.webkit.org/show_bug.cgi?id=209421
4012
4013         Reviewed by Carlos Alberto Lopez Perez.
4014
4015         * wtf/Assertions.h: Don't send logs to systemd for disabled log channels.
4016         * wtf/Logger.h:
4017         (WTF::Logger::willLog const): Ditto.
4018
4019 2020-04-07  Chris Dumez  <cdumez@apple.com>
4020
4021         Merge DependencyAssertion into ProcessAssertion
4022         https://bugs.webkit.org/show_bug.cgi?id=210076
4023
4024         Reviewed by Alex Christensen.
4025
4026         * wtf/PlatformHave.h:
4027
4028 2020-04-07  Saam Barati  <sbarati@apple.com>
4029
4030         RAMification should have a way of gathering vmmaps for each test at the end of each run
4031         https://bugs.webkit.org/show_bug.cgi?id=210060
4032
4033         Reviewed by Yusuke Suzuki.
4034
4035         * wtf/FastMalloc.cpp:
4036         (WTF::fastDisableScavenger):
4037         * wtf/FastMalloc.h:
4038
4039 2020-04-06  Ross Kirsling  <ross.kirsling@sony.com>
4040
4041         Update minimum ICU version to 60.2
4042         https://bugs.webkit.org/show_bug.cgi?id=209694
4043
4044         Reviewed by Darin Adler.
4045
4046         This patch has two immediate motivations:
4047           1. To properly introduce a minimum ICU version for WebKit as a whole
4048              (responding to a pain point identified in bug 209579)
4049           2. To support the development of ECMA-402 Intl API features, which JSC is quite behind on
4050              (and which often boil down to exposing ICU functionality to JavaScript)
4051
4052         * icu/LICENSE:
4053         * icu/README:
4054         * icu/unicode/:
4055         Update ICU headers to major version 62, the version included in macOS Mojave.
4056
4057         * wtf/text/AtomString.h:
4058         * wtf/text/WTFString.h:
4059         Remove obsoleted compile-time version checks.
4060
4061         * wtf/text/cocoa/StringCocoa.mm:
4062         (WTF::String::String):
4063         * wtf/text/cocoa/StringViewCocoa.mm:
4064         (WTF::StringView::createNSString const):
4065         (WTF::StringView::createNSStringWithoutCopying const):
4066         Manually convert between UChar and UniChar/unichar where needed.
4067
4068 2020-04-06  Saam Barati  <sbarati@apple.com>
4069
4070         Implement 1GB of executable memory on arm64
4071         https://bugs.webkit.org/show_bug.cgi?id=208490
4072         <rdar://problem/60797127>
4073
4074         Reviewed by Keith Miller.
4075
4076         * wtf/MetaAllocator.cpp:
4077         (WTF::MetaAllocatorTracker::notify):
4078         (WTF::MetaAllocatorTracker::release):
4079         (WTF::MetaAllocator::release):
4080         (WTF::MetaAllocatorHandle::MetaAllocatorHandle):
4081         (WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
4082         (WTF::MetaAllocatorHandle::shrink):
4083         (WTF::MetaAllocator::MetaAllocator):
4084         (WTF::MetaAllocator::allocate):
4085         (WTF::MetaAllocator::currentStatistics):
4086         * wtf/MetaAllocator.h:
4087         (WTF::MetaAllocatorTracker::find):
4088         (WTF::MetaAllocator::allocate):
4089         (WTF::MetaAllocator::currentStatistics):
4090         (WTF::MetaAllocator::getLock): Deleted.
4091         * wtf/MetaAllocatorHandle.h:
4092         (WTF::MetaAllocatorHandle::allocator):
4093         (WTF::MetaAllocatorHandle::isManaged): Deleted.
4094         (WTF::MetaAllocatorHandle::ownerUID): Deleted.
4095         * wtf/PlatformEnable.h:
4096         * wtf/RedBlackTree.h:
4097         * wtf/StdLibExtras.h:
4098         (WTF::constructFixedSizeArrayWithArgumentsImpl):
4099         (WTF::constructFixedSizeArrayWithArguments):
4100
4101 2020-04-04  Darin Adler  <darin@apple.com>
4102
4103         Stop using live ranges in DocumentMarkerController
4104         https://bugs.webkit.org/show_bug.cgi?id=209985
4105
4106         Reviewed by Antti Koivisto.
4107
4108         * wtf/RetainPtr.h: Define "id" here when compiling non-ObjC so it's easier to use
4109         RetainPtr<id> in any header file. Lets us stop doing this many other places.
4110         Harmless when not needed.
4111
4112 2020-04-04  Fujii Hironori  <Hironori.Fujii@sony.com>
4113
4114         [Clang 10] Fix -Wimplicit-int-float-conversion compilation warnings in WTF
4115         https://bugs.webkit.org/show_bug.cgi?id=209955
4116
4117         Reviewed by Darin Adler.
4118
4119         Clang 10 reports a compilation warning for int to float
4120         conversions losing the precision. The warning is often reported
4121         for code converting a floating point value to an integer value.
4122         For example:
4123
4124         > Optional<int> positive_float_to_int(float f) {
4125         >     if (f > INT_MAX)
4126         >         return nullopt;
4127         >     return static_cast<int>(f);
4128         > }
4129
4130         INT_MAX is implicitly converted float, but float can't keep the
4131         precision of such large value. And, C++ spec doesn't specify
4132         whether it would be rounded up or down. Above code should be
4133         rewritten to:
4134
4135         > Optional<int> positive_float_to_int(float f) {
4136         >     if (f >= pow(2, 31))
4137         >         return nullopt;
4138         >     return static_cast<int>(f);
4139         > }
4140
4141         Instead of using pow, this change added a template variable
4142         maxPlusOne<T>.
4143
4144         * wtf/MathExtras.h:
4145         (powerOfTwo): Added.
4146         (doubleToInteger): Added.
4147         (maxPlusOne): Added.
4148         * wtf/MediaTime.cpp:
4149         (WTF::MediaTime::createWithFloat):
4150         (WTF::MediaTime::createWithDouble):
4151
4152 2020-04-03  David Kilzer  <ddkilzer@apple.com>
4153
4154         [Xcode] Replace ASAN_OTHER_CFLAGS and ASAN_OTHER_CPLUSPLUSFLAGS with $(inherited)
4155         <https://webkit.org/b/209963>
4156         <rdar://problem/61257504>
4157
4158         Reviewed by Alexey Proskuryakov.
4159
4160         * Configurations/Base.xcconfig:
4161         - Remove ASAN_OTHER_CFLAGS, ASAN_OTHER_CPLUSPLUSFLAGS and
4162           ASAN_OTHER_LDFLAGS.
4163
4164 2020-04-02  Commit Queue  <commit-queue@webkit.org>
4165
4166         Unreviewed, reverting r259390.
4167         https://bugs.webkit.org/show_bug.cgi?id=209944
4168
4169         It broke WinCairo builds (Requested by fujihiro on #webkit).
4170
4171         Reverted changeset:
4172
4173         "Enable offlineasm debug annotations for GCC"
4174         https://bugs.webkit.org/show_bug.cgi?id=207119
4175         https://trac.webkit.org/changeset/259390
4176
4177 2020-04-02  Chris Dumez  <cdumez@apple.com>
4178
4179         [iOS] Replace UIKit background task with a RunningBoard FinishTaskInterruptable assertion
4180         https://bugs.webkit.org/show_bug.cgi?id=209825
4181         <rdar://problem/61118503>
4182
4183         Reviewed by Geoffrey Garen.
4184
4185         Add build-time flag for WebKit-specific assertion in RunningBoard.
4186
4187         * wtf/PlatformHave.h:
4188
4189 2020-04-02  Keith Rollin  <krollin@apple.com>
4190
4191         Address static analysis warning in DataLog.cpp: Value stored to 'pathCharactersAvailable' is never read
4192         https://bugs.webkit.org/show_bug.cgi?id=202153
4193         <rdar://problem/55671845>
4194
4195         Reviewed by David Kilzer.
4196
4197         Bug 168914 introduced some code that will initialize a variable to
4198         zero, but then never use that variable afterwards. Address this by
4199         removing the assignment.
4200
4201         * wtf/DataLog.cpp:
4202         (WTF::setDataFile):
4203
4204 2020-03-31  Michael Catanzaro  <mcatanzaro@gnome.org>
4205
4206         Update check for aarch64
4207         https://bugs.webkit.org/show_bug.cgi?id=209322
4208
4209         Reviewed by Mark Lam.
4210
4211         CPU(ARM64) is used on Linux, so checking to avoid Apple platforms doesn't make much sense.
4212         The comment implying that this is an Apple architecture also no longer makes sense.
4213
4214         * wtf/PlatformCPU.h:
4215
4216 2020-03-31  Sihui Liu  <sihui_liu@apple.com>
4217
4218         IndexedDB: destroy WebIDBServer when session is removed in network process
4219         https://bugs.webkit.org/show_bug.cgi?id=209606
4220         <rdar://problem/59310081>
4221
4222         Reviewed by Geoffrey Garen.
4223
4224         Add function to kill CrossThreadTaskHandler and make thread finish. Also add a callback to be called before 
4225         thread finishes.
4226
4227         * wtf/CrossThreadTaskHandler.cpp:
4228         (WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):
4229         (WTF::CrossThreadTaskHandler::setCompletionCallback):
4230         (WTF::CrossThreadTaskHandler::kill):
4231         * wtf/CrossThreadTaskHandler.h:
4232
4233 2020-03-30  David Kilzer  <ddkilzer@apple.com>
4234
4235         Fix "Dead nested assignment" static analyzer warning in monthFromDayInYear()
4236         <https://webkit.org/b/209718>
4237
4238         Reviewed by Alex Christensen.
4239
4240         * wtf/DateMath.h:
4241         (WTF::monthFromDayInYear): Change the last check so it doesn't
4242         assign a value to `step`, thus avoiding the warning.
4243
4244 2020-03-28  Simon Fraser  <simon.fraser@apple.com>
4245
4246         Add a ScrollLatching log channel and improve some logging functionality
4247         https://bugs.webkit.org/show_bug.cgi?id=209706
4248
4249         Reviewed by Darin Adler, David Kilzer.
4250
4251         * wtf/text/TextStream.h:
4252         (WTF::ValueOrNull::ValueOrNull):
4253         (WTF::operator<<):