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