3365a2239b54c59b573704931222235644580cd4
[WebKit.git] / Source / WTF / ChangeLog
1 2019-08-02  Mark Lam  <mark.lam@apple.com>
2
3         [ARM64E] Harden the diversity of the DOMJIT::Signature::unsafeFunction pointer.
4         https://bugs.webkit.org/show_bug.cgi?id=200292
5         <rdar://problem/53706881>
6
7         Reviewed by Geoffrey Garen.
8
9         * wtf/PtrTag.h:
10         - Introducing WTF_VTBL_FUNCPTR_PTRAUTH and WTF_VTBL_FUNCPTR_PTRAUTH_STR macros for
11           defining vtbl function pointer style pointer signing modifier.
12
13 2019-08-02  Eric Carlson  <eric.carlson@apple.com>
14
15         uniqueLogIdentifier() should generate a 64-bit identifier
16         https://bugs.webkit.org/show_bug.cgi?id=200403
17         <rdar://problem/53878447>
18
19         Reviewed by Youenn Fablet.
20
21         * wtf/LoggerHelper.h:
22         (WTF::LoggerHelper::childLogIdentifier const): Use uint64_t masks.
23         (WTF::LoggerHelper::uniqueLogIdentifier): cryptographicallyRandomNumber returns a
24         uint32_t so use two to generate a 64-bit identifier.
25
26 2019-08-02  Alex Christensen  <achristensen@webkit.org>
27
28         Fix an internal build after r248139
29         https://bugs.webkit.org/show_bug.cgi?id=200102
30
31         * wtf/cocoa/FileSystemCocoa.mm:
32         Some internal builds couldn't find BOM framework headers.
33         No problem.  They're not needed.  Just remove references to them.
34
35 2019-08-01  Alex Christensen  <achristensen@webkit.org>
36
37         Move FormData zip file generation to NetworkProcess and enable it for all WebKit clients for uploading directories
38         https://bugs.webkit.org/show_bug.cgi?id=200102
39         <rdar://problem/53275114>
40
41         Reviewed by Darin Adler.
42
43         Move code from BlobDataFileReference::generateReplacementFile to FileSystem::createZipArchive.
44
45         * wtf/FileSystem.cpp:
46         (WTF::FileSystemImpl::createZipArchive):
47         * wtf/FileSystem.h:
48         * wtf/cocoa/FileSystemCocoa.mm:
49         (WTF::FileSystemImpl::createZipArchive):
50
51 2019-08-01  Per Arne Vollan  <pvollan@apple.com>
52
53         Initialize memory pressure flag in MemoryPressureHandler
54         https://bugs.webkit.org/show_bug.cgi?id=200353
55
56         Reviewed by Geoffrey Garen.
57
58         The flag 'm_underMemoryPressure' in MemoryPressureHandler should be initialized to 'false'.
59
60         * wtf/MemoryPressureHandler.h:
61
62 2019-08-01  Chris Dumez  <cdumez@apple.com>
63
64         Add threading assertion to WeakPtr's operator->()
65         https://bugs.webkit.org/show_bug.cgi?id=199922
66
67         Reviewed by Ryosuke Niwa.
68
69         Add threading assertion to WeakPtr's operator->() to make sure that the WeakPtr
70         always gets dereferenced on the same thread it was constructed on.
71
72         * wtf/WeakPtr.h:
73         (WTF::WeakPtrImpl::get):
74         (WTF::WeakPtrImpl::WeakPtrImpl):
75
76 2019-07-31  Youenn Fablet  <youenn@apple.com>
77
78         Use CTFontCreateForCharactersWithLanguageAndOption if available instead of CTFontCreateForCharactersWithLanguage
79         https://bugs.webkit.org/show_bug.cgi?id=200241
80
81         Reviewed by Myles C. Maxfield.
82
83         * wtf/Platform.h: Add macro to enable/disable new SPI.
84
85 2019-07-31  Keith Rollin  <krollin@apple.com>
86
87         Fix 64-bit vs 32-bit mismatch in PersistentCoders.h
88         https://bugs.webkit.org/show_bug.cgi?id=200288
89         <rdar://problem/53734203>
90
91         Reviewed by Chris Dumez.
92
93         hashMapSize is declared as a uint64_t. It is passed to
94         HashMapType::reserveInitialCapacity, which takes an unsigned int. This
95         is a 32-bit value on 32-bit platforms, leading to a compile time
96         error. Fix his by casting hashMapSize to the expected type.
97
98         * wtf/persistence/PersistentCoders.h:
99
100 2019-07-31  Keith Rollin  <krollin@apple.com>
101
102         Fix 64-bit vs 32-bit mismatch in LogArgument
103         https://bugs.webkit.org/show_bug.cgi?id=200286
104         <rdar://problem/53733671>
105
106         Reviewed by Darin Adler.
107
108         LogArgument is a utility for converting scalars into strings. It has a
109         number of versions of a toString() method that is specialized for each
110         type and converts the value to a string in a manner appropriate for
111         that type. However, the versions of toString() for "long long" and
112         "unsigned long long" are actually declared to take an "long" or
113         "unsigned long" as a parameter. This difference leads to a 64-bit vs
114         32-bit build error on 32-bit systems. Fix this by specifying
115         correct/matching types.
116
117         * wtf/Logger.h:
118         (WTF::LogArgument::toString):
119
120 2019-07-30  Myles C. Maxfield  <mmaxfield@apple.com>
121
122         REGRESSION(r241288): Text on Yahoo Japan mobile looks too bold
123         https://bugs.webkit.org/show_bug.cgi?id=200065
124         <rdar://problem/50912757>
125
126         Reviewed by Simon Fraser.
127
128         * wtf/Platform.h:
129
130 2019-07-30  Michael Catanzaro  <mcatanzaro@igalia.com>
131
132         Fix CRASH_WITH_INFO() so that it doesn't complain about unused parameters on non Clang / MSVC compilers.
133         https://bugs.webkit.org/show_bug.cgi?id=200243
134
135         Reviewed by Mark Lam.
136
137         For GCC, we'll implement WTFCrashWithInfo as a function rather than a macro. To use
138         ##__VA_ARGS we would need to enable GNU extensions, and don't want to do that. The proper
139         solution, format __VA_OPT__(,) __VA_ARGS__, requires C++20. So just use an inline function
140         for now as a workaround.
141
142         * wtf/Assertions.h:
143         (CRASH_WITH_INFO):
144         (CRASH_WITH_SECURITY_IMPLICATION_AND_INFO):
145
146 2019-07-25  Dean Jackson  <dino@apple.com>
147
148         Add helper for ignoring deprecated implementation warnings
149         https://bugs.webkit.org/show_bug.cgi?id=200135
150
151         Reviewed by Wenson Hsieh.
152
153         Add ALLOW_DEPRECATED_IMPLEMENTATIONS_BEGIN/END macro which
154         is IGNORE_WARNINGS_BEGIN("deprecated-implementations")
155
156         * wtf/Compiler.h:
157
158 2019-07-24  Yusuke Suzuki  <ysuzuki@apple.com>
159
160         [bmalloc] Add IsoHeap test to ensure that IsoHeap pages are not allocating too large VA
161         https://bugs.webkit.org/show_bug.cgi?id=200103
162
163         Reviewed by Mark Lam.
164
165         We move VMTag page investigation code from PAL to WTF to use it in TestWTF.
166         And we also accumulate allocated VA size in `reserved` field of `TagInfo`.
167
168         * WTF.xcodeproj/project.pbxproj:
169         * wtf/CMakeLists.txt:
170         * wtf/PlatformMac.cmake:
171         * wtf/ResourceUsage.h: Added.
172         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
173         * wtf/cocoa/ResourceUsageCocoa.cpp: Added.
174         (WTF::vmPageSize):
175         (WTF::logFootprintComparison):
176         (WTF::displayNameForVMTag):
177         (WTF::pagesPerVMTag):
178         * wtf/spi/cocoa/MachVMSPI.h: Added.
179
180 2019-07-23  Keith Miller  <keith_miller@apple.com>
181
182         Add cheat sheet comment for HashMap/Set iterator/AddResult
183         https://bugs.webkit.org/show_bug.cgi?id=200061
184
185         Reviewed by Saam Barati.
186
187         * wtf/HashMap.h:
188         * wtf/HashSet.h:
189
190 2019-07-23  Keith Rollin  <krollin@apple.com>
191
192         Remove rest of NavigatorContentUtils support
193         https://bugs.webkit.org/show_bug.cgi?id=200052
194         <rdar://problem/53467357>
195
196         Reviewed by Alex Christensen.
197
198         Bug 196070 removes most of the support for the never-used
199         NavigatorContentUtils facility. However, there were still a couple of
200         left-over references after that change. This patch sweeps those up.
201
202         * wtf/FeatureDefines.h:
203
204 2019-07-23  Keith Rollin  <krollin@apple.com>
205
206         Enable HAVE_APP_LINKS_WITH_ISENABLED for entire iOS family
207         https://bugs.webkit.org/show_bug.cgi?id=200040
208         <rdar://problem/53457670>
209
210         Reviewed by Tim Horton.
211
212         This feature was enabled for just iOS, but should be enabled for tvOS
213         and watchOS, too.
214
215         * wtf/Platform.h:
216
217 2019-07-23  Alicia Boya García  <aboya@igalia.com>
218
219         [WTF] Add DataMutex and MainThreadData wrappers
220         https://bugs.webkit.org/show_bug.cgi?id=199831
221
222         Reviewed by Alex Christensen.
223
224         This patch adds two new wrapper classes:
225
226         DataMutex<T> stores an instance of T in a private member along with a
227         mutex. In order to use its fields, users need to instantiate a
228         DataMutex<T>::LockedWrapper instance in the stack. This class uses
229         RAII to lock and unlock the mutex in construction and destruction
230         respectively, and by using the arrow operator lets the user access T's
231         members.
232
233         This way, DataMutex<T> prevents most instances of accidental access to
234         data fields that should only be read and modified in an atomic matter.
235
236         Still, both the Lock and the LockHolder are exposed once the user has
237         taken the lock so that special cases such as waiting for a condition
238         variable or performing an early unlock are doable.
239
240         MainThreadData<T> is another wrapper class, in this case for data
241         fields that should only be accessed from the main thread. In this
242         case, it works similar to a smart pointer, except that (1) there is no
243         actual memory indirection, T is stored directly inside
244         MainThreadData<T> and (2) attempts to use the -> or * operator have an
245         isMainThread() assertion.
246
247         Together, these two wrapper classes make it easier to write
248         multi-threaded code in a safer, more self-documented way by letting
249         the author group data into structures that have certain access safety
250         requirements.
251
252         These structures were originally part of the new GStreamer
253         WebKitMediaSrc rework patch: https://bugs.webkit.org/show_bug.cgi?id=199719
254
255         * wtf/CMakeLists.txt:
256         * wtf/DataMutex.h: Added.
257         (WTF::DataMutex::DataMutex):
258         (WTF::DataMutex::LockedWrapper::LockedWrapper):
259         (WTF::DataMutex::LockedWrapper::operator->):
260         (WTF::DataMutex::LockedWrapper::operator*):
261         (WTF::DataMutex::LockedWrapper::mutex):
262         (WTF::DataMutex::LockedWrapper::lockHolder):
263         * wtf/MainThreadData.h: Added.
264         (WTF::MainThreadData::MainThreadData):
265         (WTF::MainThreadData::operator->):
266         (WTF::MainThreadData::operator*):
267
268 2019-07-22  Yusuke Suzuki  <ysuzuki@apple.com>
269
270         [bmalloc] Each IsoPage gets 1MB VA because VMHeap::tryAllocateLargeChunk rounds up
271         https://bugs.webkit.org/show_bug.cgi?id=200024
272
273         Reviewed by Saam Barati.
274
275         Start using a VM tag for IsoHeap instead of CLoop Stack.
276
277         * wtf/OSAllocator.h:
278         * wtf/VMTags.h:
279
280 2019-07-20  Chris Dumez  <cdumez@apple.com>
281
282         Speed up HashTable decoding by reserving capacity and avoiding rehashing
283         https://bugs.webkit.org/show_bug.cgi?id=199982
284
285         Reviewed by Saam Barati.
286
287         Introduce reserveInitialCapacity() on HashMap to reserve capacity on a
288         HashMap and cut down on rehashing cost when possible.
289
290         * wtf/HashMap.h:
291         * wtf/HashTable.h:
292         (WTF::HashTable::reserveInitialCapacity):
293
294         * wtf/persistence/PersistentCoders.h:
295         Use HashMap::reserveInitialCapacity() in the HashMap persistent decoder for
296         performance.
297
298 2019-07-20  Alexander Mikhaylenko  <exalm7659@gmail.com>
299
300         REGRESSION(r246033/r246496): [GTK] Kinetic scrolling doesn't work
301         https://bugs.webkit.org/show_bug.cgi?id=199322
302
303         Reviewed by Michael Catanzaro.
304
305         Introduce ENABLE_KINETIC_SCROLLING to explicitly always have kinetic scrolling on GTK.
306
307         * wtf/Platform.h:
308
309 2019-07-18  Youenn Fablet  <youenn@apple.com>
310
311         Make sure to set kCTFontFallbackOptionAttribute to kCTFontFallbackOptionSystem for system fonts
312         https://bugs.webkit.org/show_bug.cgi?id=199769
313         <rdar://problem/49390297>
314
315         Reviewed by Myles C. Maxfield.
316
317         * wtf/Platform.h:
318
319 2019-07-17  Christopher Reid  <chris.reid@sony.com>
320
321         Bytecode cache should use FileSystem
322         https://bugs.webkit.org/show_bug.cgi?id=199759
323
324         Reviewed by Yusuke Suzuki.
325
326         * wtf/FileSystem.cpp:
327         * wtf/FileSystem.h:
328         Add support for creating MappedFileData from a preexisting file handle
329         for use with locked files. Also support creating MappedFileData
330         with either private or shared mappings.
331
332         * wtf/UUID.cpp:
333         Avoid ASSERT with returning a LazyNeverDestroyed object that hasn't been created.
334
335         * wtf/glib/FileSystemGlib.cpp:
336         * wtf/win/FileSystemWin.cpp:
337         Add truncateFile implementations.
338
339 2019-07-17  Sam Weinig  <weinig@apple.com>
340
341         Add StringBuilder member function which allows makeString() style variadic argument construction
342         https://bugs.webkit.org/show_bug.cgi?id=198997
343
344         Reviewed by Darin Adler.
345
346         Adds new StringBuilder::flexibleAppend(...) member function which allows passing one or more 
347         string-adaptable (in the sense that there is StringTypeAdapter specialization for the 
348         type) parameters. This re-ususes the variadic template infrastructure in StringConcatenate.h
349         that is used for makeString(...) allowing for improvements in one to benefit the other.
350
351         The advantage of StringBuilder::flexibleAppend(...) over calling StringBuilder::append(...)
352         multiple times (beyond the code sharing with makeString(...) is that it can avoid unnecessary
353         additional re-allocations when the StringBuilder needs to expand it's capacity. It does this
354         by computing the complete required length for all the passed arguments and then ensuring enough
355         capacity is available. It also reduces the allocation overhead versus the anti-pattern of
356         builder.append(makeString(...)).
357
358         Ideally, this member function should eventually just be called StringBuilder::append(...), but
359         the current overload set for StringBuilder::append(...) makes this complicated due to overloads
360         that take two arguments such as StringBuilder::append(const UChar*, unsigned). Going forward, we
361         should rename or remove those overloads and move to a standard interface. 
362
363         * wtf/posix/FileSystemPOSIX.cpp:
364         (WTF::FileSystemImpl::pathByAppendingComponents):
365         Adopt StringBuilder::flexibleAppend, using to combine the append of '/' and component.
366
367         * wtf/text/StringBuilder.cpp:
368         (WTF::StringBuilder::appendUninitialized):
369         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheck):
370         Extract the part of appendUnitialized that doesn't do the overflow check
371         into it's own member function to allow callers that have already done the
372         overflow check to bypass it.
373
374         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheckForUChar):
375         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheckForLChar):
376         Added to allow template member function flexibleAppendFromAdapters to call
377         appendUninitializedWithoutOverflowCheck without moving it to the header.
378         
379         * wtf/text/StringBuilder.h:
380         (WTF::StringBuilder::flexibleAppendFromAdapters):
381         (WTF::StringBuilder::flexibleAppend):
382         Modeled on tryMakeStringFromAdapters in StringConcatenate.h, these
383         eagerly compute the required length, expand the buffer and then use
384         the existing string type adaptor accumulation functions used by makeString. 
385
386         * wtf/text/StringConcatenate.h:
387         (WTF::stringTypeAdapterAccumulator):
388         (WTF::tryMakeStringFromAdapters):
389         (WTF::makeStringAccumulator): Deleted.
390         Renames makeStringAccumulator to stringTypeAdapterAccumulator now that it is used
391         by more than just makeString.
392
393 2019-07-17  Commit Queue  <commit-queue@webkit.org>
394
395         Unreviewed, rolling out r247505.
396         https://bugs.webkit.org/show_bug.cgi?id=199871
397
398         "Caused failed ASSERT in stress test" (Requested by creid on
399         #webkit).
400
401         Reverted changeset:
402
403         "Bytecode cache should use FileSystem"
404         https://bugs.webkit.org/show_bug.cgi?id=199759
405         https://trac.webkit.org/changeset/247505
406
407 2019-07-16  Christopher Reid  <chris.reid@sony.com>
408
409         Bytecode cache should use FileSystem
410         https://bugs.webkit.org/show_bug.cgi?id=199759
411
412         Reviewed by Yusuke Suzuki.
413
414         * wtf/FileSystem.cpp:
415         * wtf/FileSystem.h:
416         Add support for creating MappedFileData from a preexisting file handle
417         for use with locked files. Also support creating MappedFileData
418         with either private or shared mappings.
419
420         * wtf/UUID.cpp:
421         Avoid ASSERT with returning a LazyNeverDestroyed object that hasn't been created.
422
423         * wtf/glib/FileSystemGlib.cpp:
424         * wtf/win/FileSystemWin.cpp:
425         Add truncateFile implementations.
426
427 2019-07-16  Myles C. Maxfield  <mmaxfield@apple.com>
428
429         New York font erroneously gets synthetic bold
430         https://bugs.webkit.org/show_bug.cgi?id=199653
431
432         Unreviewed MacCatalyst build fix.
433
434         * wtf/Platform.h:
435
436 2019-07-16  Michael Catanzaro  <mcatanzaro@igalia.com>
437
438         [WPE][GTK] Improvements and fixes in FileSystemGlib.cpp
439         https://bugs.webkit.org/show_bug.cgi?id=199800
440
441         Reviewed by Carlos Garcia Campos.
442
443         Use nullptr.
444
445         Fix a GFileInfo leak in getFileSize.
446
447         Use GRefPtr to clarify ownership of the GFileIOStream in openFile.
448
449         * wtf/glib/FileSystemGlib.cpp:
450         (WTF::FileSystemImpl::getFileSize):
451         (WTF::FileSystemImpl::getVolumeFreeSpace):
452         (WTF::FileSystemImpl::openTemporaryFile):
453         (WTF::FileSystemImpl::openFile):
454         (WTF::FileSystemImpl::seekFile):
455         (WTF::FileSystemImpl::writeToFile):
456         (WTF::FileSystemImpl::readFromFile):
457
458 2019-07-15  Myles C. Maxfield  <mmaxfield@apple.com>
459
460         New York font erroneously gets synthetic bold
461         https://bugs.webkit.org/show_bug.cgi?id=199653
462
463         Unreviewed watchOS build fix.
464
465         * wtf/Platform.h:
466
467 2019-07-15  Commit Queue  <commit-queue@webkit.org>
468
469         Unreviewed, rolling out r247462.
470         https://bugs.webkit.org/show_bug.cgi?id=199816
471
472         completely messed up the patch (Requested by litherum on
473         #webkit).
474
475         Reverted changeset:
476
477         "New York font erroneously gets synthetic bold"
478         https://bugs.webkit.org/show_bug.cgi?id=199653
479         https://trac.webkit.org/changeset/247462
480
481 2019-07-11  Myles C. Maxfield  <mmaxfield@apple.com>
482
483         New York font erroneously gets synthetic bold
484         https://bugs.webkit.org/show_bug.cgi?id=199653
485         <rdar://problem/51692592>
486
487         Reviewed by Simon Fraser.
488
489         * wtf/Platform.h:
490
491 2019-07-15  Brady Eidson  <beidson@apple.com>
492
493         Make WKURLSchemeTask thread safe.
494         <rdar://problem/50471863> and https://bugs.webkit.org/show_bug.cgi?id=199764
495
496         Reviewed by Alex Christensen.
497
498         * wtf/MainThread.cpp:
499         (WTF::callOnMainAndWait):
500         (WTF::callOnMainRunLoopAndWait):
501         (WTF::callOnMainThreadAndWait):
502         * wtf/MainThread.h:
503
504 2019-07-15  Dean Jackson  <dino@apple.com>
505
506         MacCatalyst asserts when command key is raised
507         https://bugs.webkit.org/show_bug.cgi?id=199805
508         <rdar://problem/53120393>
509
510         Reviewed by Tim Horton.
511
512         Add USE_UIKIT_KEYBOARD_ADDITIONS for iOS 13+ and macCatalyst.
513
514         * wtf/FeatureDefines.h:
515
516 2019-07-14  Chris Dumez  <cdumez@apple.com>
517
518         Add threading assertion to WeakPtrFactory::createWeakPtr()
519         https://bugs.webkit.org/show_bug.cgi?id=199639
520
521         Reviewed by Ryosuke Niwa.
522
523         Add threading assertion to WeakPtrFactory::createWeakPtr() to make sure it
524         is called on the same thread where the WeakPtrFactory wad constructed.
525
526         * wtf/WeakPtr.h:
527         (WTF::WeakPtrFactory::WeakPtrFactory):
528         (WTF::WeakPtrFactory::createWeakPtr const):
529
530 2019-07-14  Dean Jackson  <dino@apple.com>
531
532         WebGL not supported on WKWebView on UIKit for Mac
533         https://bugs.webkit.org/show_bug.cgi?id=199785
534         <rdar://problem/52911449>
535
536         Reviewed by Antoine Quint.
537
538         MacCatalyst has Apple Graphics Control, although
539         this area is very messy, see <rdar://53062794>.
540
541         * wtf/Platform.h:
542
543 2019-07-11  Myles C. Maxfield  <mmaxfield@apple.com>
544
545         New York font erroneously gets synthetic bold
546         https://bugs.webkit.org/show_bug.cgi?id=199653
547         <rdar://problem/51692592>
548
549         Reviewed by Simon Fraser.
550
551         * wtf/Platform.h:
552
553 2019-07-11  Pablo Saavedra  <psaavedra@igalia.com>
554
555         [WPE][GTK] Build failure with ENABLE_ACCESSIBILITY=OFF
556         https://bugs.webkit.org/show_bug.cgi?id=199625
557
558         Added ENABLE(ACCESSIBILITY) and replaced HAVE(ACCESSIBILITY)
559         with ENABLE(ACCESSIBILITY) in the code.
560
561         Additionally, the TestRunner code generator now honors the
562         Conditional IDL format.
563
564         Reviewed by Konstantin Tokarev.
565
566         * wtf/FeatureDefines.h:
567         * wtf/Platform.h:
568
569 2019-07-10  Ryan Haddad  <ryanhaddad@apple.com>
570
571         Unreviewed, rolling out r247286.
572
573         Caused TestWTF.WTF.StringOperators to fail on debug bots
574
575         Reverted changeset:
576
577         "Add StringBuilder member function which allows makeString()
578         style variadic argument construction"
579         https://bugs.webkit.org/show_bug.cgi?id=198997
580         https://trac.webkit.org/changeset/247286
581
582 2019-07-09  Michael Catanzaro  <mcatanzaro@igalia.com>
583
584         [WPE][GTK] GUniqueOutPtr::release should return a raw pointer
585         https://bugs.webkit.org/show_bug.cgi?id=199579
586
587         Reviewed by Carlos Garcia Campos.
588
589         GUniqueOutPtr::release should release to a raw pointer, rather than a GUniquePtr. If a
590         GUniquePtr is desired, it's trivial to construct one from the raw pointer, but all existing
591         callsites under Source/ would rather have a raw pointer. Currently they have to call
592         release().release() to get the raw pointer, which is annoying.
593
594         * wtf/glib/GUniquePtr.h:
595         (WTF::GUniqueOutPtr::release):
596
597 2019-07-09  Sam Weinig  <weinig@apple.com>
598
599         Add StringBuilder member function which allows makeString() style variadic argument construction
600         https://bugs.webkit.org/show_bug.cgi?id=198997
601
602         Reviewed by Darin Adler.
603
604         Adds new StringBuilder::flexibleAppend(...) member function which allows passing one or more 
605         string-adaptable (in the sense that there is StringTypeAdapter specialization for the 
606         type) parameters. This re-ususes the variadic template infrastructure in StringConcatenate.h
607         that is used for makeString(...) allowing for improvements in one to benefit the other.
608
609         The advantage of StringBuilder::flexibleAppend(...) over calling StringBuilder::append(...)
610         multiple times (beyond the code sharing with makeString(...) is that it can avoid unnecessary
611         additional re-allocations when the StringBuilder needs to expand it's capacity. It does this
612         by computing the complete required length for all the passed arguments and then ensuring enough
613         capacity is available. It also reduces the allocation overhead versus the anti-pattern of
614         builder.append(makeString(...)).
615
616         Ideally, this member function should eventually just be called StringBuilder::append(...), but
617         the current overload set for StringBuilder::append(...) makes this complicated due to overloads
618         that take two arguments such as StringBuilder::append(const UChar*, unsigned). Going forward, we
619         should rename or remove those overloads and move to a standard interface. 
620
621         * wtf/posix/FileSystemPOSIX.cpp:
622         (WTF::FileSystemImpl::pathByAppendingComponents):
623         Adopt StringBuilder::flexibleAppend, using to combine the append of '/' and component.
624
625         * wtf/text/StringBuilder.cpp:
626         (WTF::StringBuilder::appendUninitialized):
627         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheck):
628         Extract the part of appendUnitialized that doesn't do the overflow check
629         into it's own member function to allow callers that have already done the
630         overflow check to bypass it.
631
632         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheckForUChar):
633         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheckForLChar):
634         Added to allow template member function flexibleAppendFromAdapters to call
635         appendUninitializedWithoutOverflowCheck without moving it to the header.
636         
637         * wtf/text/StringBuilder.h:
638         (WTF::StringBuilder::flexibleAppendFromAdapters):
639         (WTF::StringBuilder::flexibleAppend):
640         Modeled on tryMakeStringFromAdapters in StringConcatenate.h, these
641         eagerly compute the required length, expand the buffer and then use
642         the existing string type adaptor accumulation functions used by makeString. 
643
644         * wtf/text/StringConcatenate.h:
645         (WTF::stringTypeAdapterAccumulator):
646         (WTF::tryMakeStringFromAdapters):
647         (WTF::makeStringAccumulator): Deleted.
648         Renames makeStringAccumulator to stringTypeAdapterAccumulator now that it is used
649         by more than just makeString.
650
651 2019-07-09  Alex Christensen  <achristensen@webkit.org>
652
653         When parsing an IPv4 address, wait until after deciding it is indeed an IPv4 address before reporting syntax violations
654         https://bugs.webkit.org/show_bug.cgi?id=199628
655
656         Reviewed by Brady Eidson.
657
658         Otherwise, we sometimes report syntax violations on things that are not IPv4 addresses and don't have syntax violations.
659         I added a unit test with one such URL that used to cause an assertion.
660
661         * wtf/URLParser.cpp:
662         (WTF::URLParser::parseIPv4Host):
663
664 2019-07-09  Alex Christensen  <achristensen@webkit.org>
665
666         Remove invalid assertion in URLParser::domainToASCII
667         https://bugs.webkit.org/show_bug.cgi?id=199624
668
669         Reviewed by Brady Eidson.
670
671         When a non-ASCII domain's punycode encoding is longer than 63 characters,
672         the URL is supposed to fail to parse, according to https://www.unicode.org/reports/tr46/#ToASCII
673         We and all other browsers do this.  When uidna_nameToASCII tries to punycode encode such a domain,
674         it can return a number larger than 63.  In this case, processingDetails.errors is UIDNA_ERROR_LABEL_TOO_LONG
675         and we fail to parse as desired and uidna_nameToASCII did not write out of bounds, so it was just the assertion
676         that was wrong.  I added some unit tests that would have hit the assertion and verify that we fail at the correct length.
677
678         * wtf/URLParser.cpp:
679         (WTF::URLParser::domainToASCII):
680
681 2019-07-09  Alex Christensen  <achristensen@webkit.org>
682
683         URLParser should reserialize IPv6 addresses that end with a colon
684         https://bugs.webkit.org/show_bug.cgi?id=199627
685
686         Reviewed by Brady Eidson.
687
688         When an IPv6 address ends in a colon, the colon should be removed which means the
689         serialized output is different than the input, which the URLParser calls a syntax violation.
690         This matches the URL specification, and I added a unit test that used to assert.
691
692         * wtf/URLParser.cpp:
693         (WTF::URLParser::parseIPv6Host):
694
695 2019-07-08  Chris Dumez  <cdumez@apple.com>
696
697         Use WeakHashSet for WebUserContentControllerProxy::m_processes
698         https://bugs.webkit.org/show_bug.cgi?id=199591
699         <rdar://problem/52798721>
700
701         Reviewed by Youenn Fablet.
702
703         Update WeakHashSet::add() to return an AddResult type, similarly to our other containers.
704
705         * wtf/WeakHashSet.h:
706         (WTF::WeakHashSet::add):
707
708 2019-07-08  Christopher Reid  <chris.reid@sony.com>
709
710         Implement MappedFileData for Windows
711         https://bugs.webkit.org/show_bug.cgi?id=198269
712
713         Reviewed by Darin Adler.
714
715         Original patch by Fujii Hironori.
716
717         Add Windows implementations for MappedFileData constructor and destructor.
718
719         * wtf/FileSystem.cpp:
720         * wtf/FileSystem.h:
721         * wtf/win/FileSystemWin.cpp:
722
723 2019-07-08  Chris Dumez  <cdumez@apple.com>
724
725         Add threading assertion to WTF::CompletionHandler
726         https://bugs.webkit.org/show_bug.cgi?id=199516
727
728         Reviewed by Alex Christensen.
729
730         Add threading assertion to WTF::CompletionHandler to try and catch common cases
731         of unsafe usage (completion handler constructed on one thread but called on
732         another).
733
734         * wtf/CompletionHandler.h:
735         (WTF::CompletionHandler<Out):
736
737 2019-07-08  Antoine Quint  <graouts@apple.com>
738
739         [Pointer Events] Enable only on the most recent version of the supported iOS family
740         https://bugs.webkit.org/show_bug.cgi?id=199562
741         <rdar://problem/52766511>
742
743         Reviewed by Dean Jackson.
744
745         We really don't need HAVE_UI_WEB_TOUCH_EVENTS_GESTURE_RECOGNIZER_WITH_ACTIVE_TOUCHES_BY_ID since the UIKit SPI
746         that was added in iOS 13 that it's checking for is really required for all parts of the implementation of Pointer
747         Events, including dispatch of the "pointercancel" event and support for the "touch-action" CSS property.
748
749         * wtf/Platform.h:
750
751 2019-07-05  Ryan Haddad  <ryanhaddad@apple.com>
752
753         Unreviewed, rolling out r247115.
754
755         Breaks lldbWebKitTester (and by extension, test-webkitpy)
756
757         Reverted changeset:
758
759         "[WHLSL] Standard library is too big to directly include in
760         WebCore"
761         https://bugs.webkit.org/show_bug.cgi?id=198186
762         https://trac.webkit.org/changeset/247115
763
764 2019-07-03  Jonathan Bedard  <jbedard@apple.com>
765
766         [Catalina] Enable WebKit build
767         https://bugs.webkit.org/show_bug.cgi?id=199209
768
769         Reviewed by Darin Adler.
770
771         * wtf/spi/cocoa/SecuritySPI.h: Declare SecTrustedApplicationCreateFromPath(...).
772
773 2019-07-03  Keith Miller  <keith_miller@apple.com>
774
775         PACCage should first cage leaving PAC bits intact then authenticate
776         https://bugs.webkit.org/show_bug.cgi?id=199372
777
778         Reviewed by Saam Barati.
779
780         * wtf/CagedPtr.h:
781         (WTF::CagedPtr::get const):
782         (WTF::CagedPtr::getMayBeNull const):
783         (WTF::CagedPtr::mergePointers):
784
785 2019-07-03  Ryan Haddad  <ryanhaddad@apple.com>
786
787         Unreviewed, rolling out r246616.
788
789         Caused http/tests/inspector/network/har/har-page.html to fail
790         on Catalina.
791
792         Reverted changeset:
793
794         "Web Inspector: Network: replace CFNetwork SPI with new API
795         where able"
796         https://bugs.webkit.org/show_bug.cgi?id=198762
797         https://trac.webkit.org/changeset/246616
798
799 2019-07-02  Commit Queue  <commit-queue@webkit.org>
800
801         Unreviewed, rolling out r247041.
802         https://bugs.webkit.org/show_bug.cgi?id=199425
803
804         broke some iOS arm64e tests (Requested by keith_miller on
805         #webkit).
806
807         Reverted changeset:
808
809         "PACCage should first cage leaving PAC bits intact then
810         authenticate"
811         https://bugs.webkit.org/show_bug.cgi?id=199372
812         https://trac.webkit.org/changeset/247041
813
814 2019-07-02  Chris Dumez  <cdumez@apple.com>
815
816         ThreadSafeRefCounted<DestructionThread::Main> is not safe to use in the UIProcess
817         https://bugs.webkit.org/show_bug.cgi?id=199420
818         <rdar://problem/52289717>
819
820         Reviewed by Ryosuke Niwa.
821
822         * wtf/MainThread.cpp:
823         (WTF::isMainRunLoop):
824         (WTF::callOnMainRunLoop):
825         * wtf/MainThread.h:
826         Add some function to MainThread.h to be used by ThreadSafeRefCounted to interact with the
827         main RunLoop. This is used to avoid a circular dependency between RunLoop (which is
828         ThreadSafeRefCounted) and ThreadSafeReCounted.
829
830         * wtf/ThreadSafeRefCounted.h:
831         (WTF::ThreadSafeRefCounted::deref const):
832         Add a new DestructionThread::MainRunLoop enum value to be used by classes that need to
833         be destroyed on the main RunLoop rather than the main thread (which may be different
834         when WK1 is invoved)
835
836 2019-07-02  Robin Morisset  <rmorisset@apple.com>
837
838         [WHLSL] the initializer in VariableDeclaration should be a std::unique_ptr, not Optional<UniqueRef<..>>
839         https://bugs.webkit.org/show_bug.cgi?id=199389
840
841         Reviewed by Sam Weinig.
842
843         * wtf/UniqueRef.h:
844         (WTF::UniqueRef::moveToUniquePtr): Added.
845
846 2019-07-02  Keith Miller  <keith_miller@apple.com>
847
848         PACCage should first cage leaving PAC bits intact then authenticate
849         https://bugs.webkit.org/show_bug.cgi?id=199372
850
851         Reviewed by Saam Barati.
852
853         * wtf/CagedPtr.h:
854         (WTF::CagedPtr::get const):
855         (WTF::CagedPtr::getMayBeNull const):
856         (WTF::CagedPtr::mergePointers):
857
858 2019-07-01  Philippe Normand  <pnormand@igalia.com>
859
860         [GStreamer] Cannot play Bert's Bytes radio stream from http://radio.dos.nl/
861         https://bugs.webkit.org/show_bug.cgi?id=198376
862
863         Reviewed by Xabier Rodriguez-Calvar.
864
865         * wtf/glib/GLibUtilities.h:
866         (enumToString): Utility function to get a string representation of of a GLib enum.
867
868 2019-06-22  Darin Adler  <darin@apple.com>
869
870         Streamline some string code, focusing on functions that were using substringSharingImpl
871         https://bugs.webkit.org/show_bug.cgi?id=198898
872
873         Reviewed by Daniel Bates.
874
875         * wtf/URLHelpers.cpp:
876         (WTF::URLHelpers::applyHostNameFunctionToURLString): Change code using
877         substringSharingImpl so it could call String::find to call StringView::contains
878         instead. Also rewrote lambdas to be simpler and likely more efficient.
879         Rewrote another case using substringSharingImpl so it could call String::find
880         to call StringView::find instead.
881
882         * wtf/text/StringView.cpp:
883         (WTF::StringView::startsWith const): Added.
884
885         * wtf/text/StringView.h: Tweaked style a bit, and added an overload of
886         StringView::contains that takes a CodeUnitMatchFunction and an overload
887         of startsWith that cakes a UChar.
888
889 2019-06-28  Konstantin Tokarev  <annulen@yandex.ru>
890
891         Remove traces of ENABLE_ICONDATABASE remaining after its removal in 219733
892         https://bugs.webkit.org/show_bug.cgi?id=199317
893
894         Reviewed by Michael Catanzaro.
895
896         While IconDatabase and all code using it was removed,
897         ENABLE_ICONDATABASE still exists as build option and C++ macro.
898
899         * wtf/FeatureDefines.h:
900
901 2019-06-27  Konstantin Tokarev  <annulen@yandex.ru>
902
903         Avoid using WTF::Function for passing local function pointers and closures in URLHelpers.cpp
904         https://bugs.webkit.org/show_bug.cgi?id=199271
905
906         Reviewed by Yusuke Suzuki.
907
908         WTF::Function allocates memory on heap, which is totally redundant in this
909         case.
910
911         * wtf/URLHelpers.cpp:
912         (WTF::URLHelpers::isSecondLevelDomainNameAllowedByTLDRules):
913
914 2019-06-27  Timothy Hatcher  <timothy@apple.com>
915
916         Move WebKitLegacy off of a couple AppKit ivars.
917         https://bugs.webkit.org/show_bug.cgi?id=199279
918         rdar://problem/34983438
919
920         Reviewed by Tim Horton.
921
922         * wtf/Platform.h: Added HAVE_SUBVIEWS_IVAR_SPI.
923
924 2019-06-27  Beth Dakin  <bdakin@apple.com>
925
926         Upstream use of MACCATALYST
927         https://bugs.webkit.org/show_bug.cgi?id=199245
928         rdar://problem/51687723
929
930         Reviewed by Tim Horton.
931
932         * Configurations/SDKVariant.xcconfig:
933         * wtf/FeatureDefines.h:
934         * wtf/Platform.h:
935
936 2019-06-27  Don Olmstead  <don.olmstead@sony.com>
937
938         [FTW] Build JavaScriptCore
939         https://bugs.webkit.org/show_bug.cgi?id=199254
940
941         Reviewed by Brent Fulgham.
942
943         * wtf/PlatformFTW.cmake: Added.
944
945 2019-06-27  Fujii Hironori  <Hironori.Fujii@sony.com>
946
947         [CMake] Bump cmake_minimum_required version to 3.10
948         https://bugs.webkit.org/show_bug.cgi?id=199181
949
950         Reviewed by Don Olmstead.
951
952         * CMakeLists.txt:
953
954 2019-06-26  Konstantin Tokarev  <annulen@yandex.ru>
955
956         Remove unneeded #include <wtf/glib/GRefPtr.h>
957         https://bugs.webkit.org/show_bug.cgi?id=199228
958
959         Reviewed by Michael Catanzaro.
960
961         * wtf/MemoryPressureHandler.h:
962
963 2019-06-26  Myles C. Maxfield  <mmaxfield@apple.com>
964
965         REGRESSION: ( r246394 ) webgpu/whlsl-buffer-fragment.html and webgpu/whlsl-buffer-vertex.html are failing
966         https://bugs.webkit.org/show_bug.cgi?id=199012
967
968         Reviewed by Saam Barati.
969
970         * wtf/Platform.h:
971
972 2019-06-25  Keith Miller  <keith_miller@apple.com>
973
974         CagedPtr doesn't merge PAC bits back into the resulting caged pointer.
975         https://bugs.webkit.org/show_bug.cgi?id=199214
976
977         Reviewed by Yusuke Suzuki.
978
979         The current code means that caging will just strip the any failed
980         authentication bits. Adding this code doesn't appear to be a
981         regression on iPhone Xs.
982
983         * wtf/CagedPtr.h:
984         (WTF::CagedPtr::get const):
985         (WTF::CagedPtr::getMayBeNull const):
986         (WTF::CagedPtr::getUnsafe const):
987         (WTF::CagedPtr::mergePointers):
988
989 2019-06-25  Sam Weinig  <weinig@apple.com>
990
991         Experiment with simple structured bindings use
992         https://bugs.webkit.org/show_bug.cgi?id=198905
993
994         Reviewed by Darin Adler.
995
996         * wtf/URLHelpers.cpp:
997         (WTF::URLHelpers::mapHostNames):
998         Simplify code using c++ structured bindings (https://en.cppreference.com/w/cpp/language/structured_binding)
999         to see if all the platforms will work with it.
1000
1001 2019-06-25  Adam Barth  <abarth@webkit.org>
1002
1003         [fuchsia] Update to newer zx_clock_get syscall
1004         https://bugs.webkit.org/show_bug.cgi?id=199191
1005
1006         Reviewed by Sam Weinig.
1007
1008         Fuchsia has changed the zx_clock_get syscall to return the clock value
1009         via an out parameter rather than via its return value. This change
1010         makes zx_clock_get consistent with all the other syscalls.
1011
1012         This patch updates our use of zx_clock_get to use the new syscall. The
1013         old syscall is no longer supported by Fuchsia.
1014
1015         * wtf/fuchsia/CPUTimeFuchsia.cpp:
1016         (WTF::CPUTime::get): Switch to using the out parameter.
1017         (WTF::CPUTime::forCurrentThread): Switch to using the out parameter.
1018
1019 2019-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>
1020
1021         Fully rename WebKitGTK+ -> WebKitGTK everywhere
1022         https://bugs.webkit.org/show_bug.cgi?id=199159
1023
1024         Reviewed by Carlos Garcia Campos.
1025
1026         * wtf/URLParser.cpp:
1027         (WTF::URLParser::internationalDomainNameTranscoder):
1028
1029 2019-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>
1030
1031         Require GCC 7
1032         https://bugs.webkit.org/show_bug.cgi?id=198914
1033
1034         Reviewed by Darin Adler.
1035
1036         Remove now-stale GCC version check.
1037
1038         * wtf/Compiler.h:
1039
1040 2019-06-23  Simon Fraser  <simon.fraser@apple.com>
1041
1042         Add OverflowScrollProxyNodes to the scrolling tree
1043         https://bugs.webkit.org/show_bug.cgi?id=199132
1044
1045         Reviewed by Antti Koivisto.
1046         
1047         Setting indent is useful if you want to make a new stream with the indent of an
1048         existing stream.
1049
1050         * wtf/text/TextStream.h:
1051         (WTF::TextStream::setIndent):
1052
1053 2019-06-20  Fujii Hironori  <Hironori.Fujii@sony.com>
1054
1055         Try to use C++14 std::enable_if_t in CheckedArithmetic.h again
1056         https://bugs.webkit.org/show_bug.cgi?id=199099
1057
1058         Reviewed by Ross Kirsling.
1059
1060         r242235 changed CheckedArithmetic to not use C++14. Let's try
1061         C++14 again.
1062
1063         * wtf/CheckedArithmetic.h: Use C++14 std::make_unsigned_t and std::enable_if_t.
1064
1065 2019-06-18  Darin Adler  <darin@apple.com>
1066
1067         Tidy up the remaining bits of the AtomicString to AtomString rename
1068         https://bugs.webkit.org/show_bug.cgi?id=198990
1069
1070         Reviewed by Michael Catanzaro.
1071
1072         * wtf/text/AtomString.cpp: Fix a comment.
1073         * wtf/text/AtomString.h: Tweak formatting a bit. Use nullptr instead of 0.
1074         Removed "using AtomicString = AtomString".
1075         * wtf/text/AtomStringImpl.cpp:
1076         (WTF::CStringTranslator::translate): Use setIsAtom instead of setIsAtomic.
1077         (WTF::UCharBufferTranslator::translate): Ditto.
1078         (WTF::HashAndUTF8CharactersTranslator::translate): Ditto.
1079         (WTF::SubstringTranslator::translate): Ditto.
1080         (WTF::LCharBufferTranslator::translate): Ditto.
1081         (WTF::BufferFromStaticDataTranslator::translate): Ditto.
1082         (WTF::AtomStringImpl::addSlowCase): Ditto.
1083         (WTF::AtomStringImpl::lookUpSlowCase): Updated assertion message.
1084
1085         * wtf/text/AtomStringImpl.h: Tweaked the implementation of add.
1086         Updated comments to say AtomString.
1087
1088         * wtf/text/AtomStringTable.cpp:
1089         (WTF::AtomStringTable::~AtomStringTable): Use setIsAtom.
1090
1091         * wtf/text/StringImpl.h: Updated name of StringAtomic and
1092         s_hashFlagStringKindIsAtom. Renamed to flagIsAtom and setIsAtom.
1093
1094         * wtf/text/WTFString.cpp:
1095         (WTF::String::isSafeToSendToAnotherThread const): Updated comment.
1096
1097 2019-06-20  Carlos Garcia Campos  <cgarcia@igalia.com>
1098
1099         [GTK] Remove support for GTK2 plugins
1100         https://bugs.webkit.org/show_bug.cgi?id=199065
1101
1102         Reviewed by Sergio Villar Senin.
1103
1104         * wtf/Platform.h:
1105         * wtf/glib/GTypedefs.h:
1106
1107 2019-06-19  Yusuke Suzuki  <ysuzuki@apple.com>
1108
1109         [bmalloc] IsoHeap's initialization is racy with IsoHeap::isInitialized
1110         https://bugs.webkit.org/show_bug.cgi?id=199053
1111
1112         Reviewed by Saam Barati.
1113
1114         Add constexpr static functions to generate pseudo random numbers from __LINE__.
1115
1116         * wtf/WeakRandom.h:
1117         (WTF::WeakRandom::nextState):
1118         (WTF::WeakRandom::generate):
1119         (WTF::WeakRandom::advance):
1120
1121 2019-06-19  Fujii Hironori  <Hironori.Fujii@sony.com>
1122
1123         Add WTF::crossThreadCopy(T&&) to utilize String::isolatedCopy() &&
1124         https://bugs.webkit.org/show_bug.cgi?id=198957
1125
1126         Reviewed by Alex Christensen.
1127
1128         &&-qualified String::isolatedCopy() has a optimization path which
1129         does just WTFMove if it isSafeToSendToAnotherThread which means
1130         the object hasOneRef.
1131
1132         However, WTF::crossThreadCopy was using only &-qualified
1133         isolatedCopy. To use the optimization, added
1134         WTF::crossThreadCopy(T&&) overloading.
1135
1136         * wtf/CrossThreadCopier.h:
1137         (WTF::crossThreadCopy): Added a overload of (T&&).
1138         * wtf/CrossThreadTask.h:
1139         (WTF::createCrossThreadTask): Removed explicit template arguments of crossThreadCopy.
1140
1141 2019-06-19  Devin Rousso  <drousso@apple.com>
1142
1143         Web Inspector: Network: replace CFNetwork SPI with new API where able
1144         https://bugs.webkit.org/show_bug.cgi?id=198762
1145
1146         Reviewed by Timothy Hatcher.
1147
1148         * wtf/Platform.h:
1149
1150 2019-06-19  Alex Christensen  <achristensen@webkit.org>
1151
1152         Add a unit test for client certificate authentication
1153         https://bugs.webkit.org/show_bug.cgi?id=197800
1154
1155         Reviewed by Youenn Fablet.
1156
1157         * wtf/spi/cocoa/SecuritySPI.h:
1158         Move declarations from ArgumentCodersCF.cpp so they can be shared.
1159
1160 2019-06-19  Adrian Perez de Castro  <aperez@igalia.com>
1161
1162         [WPE][GTK] Fix build with unified sources disabled
1163         https://bugs.webkit.org/show_bug.cgi?id=198752
1164
1165         Reviewed by Michael Catanzaro.
1166
1167         * wtf/text/StringBuilder.h: Add missing include of StringConcatenateNumbers.h
1168
1169 2019-06-19  Zan Dobersek  <zdobersek@igalia.com>
1170
1171         USE_ANGLE macro can be evaluated without being defined
1172         https://bugs.webkit.org/show_bug.cgi?id=198991
1173
1174         Reviewed by Carlos Garcia Campos.
1175
1176         * wtf/Platform.h: On platforms not yet defining USE_ANGLE, the
1177         incompatibility check with some other flags leads to the macro being
1178         evaluated even when it was not defined, producing compiler warnings.
1179         To avoid this, the macro should be defined to 0 before the check in
1180         case it was not defined already.
1181
1182 2019-06-18  Dean Jackson  <dino@apple.com>
1183
1184         UIContextMenuInteraction implementation for WKContentView
1185         https://bugs.webkit.org/show_bug.cgi?id=198986
1186         <rdar://problem/51875189>
1187
1188         Reviewed by Andy Estes.
1189
1190         Add USE_UICONTEXTMENU for iOS 13+.
1191
1192         * wtf/Platform.h:
1193
1194 2019-06-18  Kenneth Russell  <kbr@chromium.org>
1195
1196         Add preliminary ANGLE backend to WebCore
1197         https://bugs.webkit.org/show_bug.cgi?id=197755
1198
1199         Reviewed by Dean Jackson.
1200
1201         Add a USE_ANGLE definition to wtf/Platform.h (currently disabled)
1202         which, when enabled, uses ANGLE instead of the OpenGL or OpenGL ES
1203         backend.
1204
1205         * wtf/Platform.h:
1206
1207 2019-06-17  Jiewen Tan  <jiewen_tan@apple.com>
1208
1209         Move SOAuthorization from WebKitAdditions to WebKit
1210         https://bugs.webkit.org/show_bug.cgi?id=198874
1211         <rdar://problem/47573431>
1212
1213         Reviewed by Brent Fulgham.
1214
1215         * wtf/Platform.h:
1216         Adds a feature flag to detect AppSSO framework.
1217
1218 2019-06-17  Ryan Haddad  <ryanhaddad@apple.com>
1219
1220         Unreviewed, rolling out r246501.
1221
1222         Breaks Apple internal builds.
1223
1224         Reverted changeset:
1225
1226         "Support using ANGLE as the backend for the WebGL
1227         implementation"
1228         https://bugs.webkit.org/show_bug.cgi?id=197755
1229         https://trac.webkit.org/changeset/246501
1230
1231 2019-06-17  Kenneth Russell  <kbr@chromium.org>
1232
1233         Support using ANGLE as the backend for the WebGL implementation
1234         https://bugs.webkit.org/show_bug.cgi?id=197755
1235
1236         Reviewed by Dean Jackson.
1237
1238         Add a USE_ANGLE definition to wtf/Platform.h (currently disabled)
1239         which, when enabled, uses ANGLE instead of the OpenGL or OpenGL ES
1240         backend.
1241
1242         * wtf/Platform.h:
1243
1244 2019-06-16  Darin Adler  <darin@apple.com>
1245
1246         Rename AtomicString to AtomString
1247         https://bugs.webkit.org/show_bug.cgi?id=195276
1248
1249         Reviewed by Michael Catanzaro.
1250
1251         * many files: Let do-webcore-rename do the renaming.
1252
1253         * wtf/text/AtomString.h: After renaming, added AtomicString as a synonym for
1254         now; helps smooth things over with a tiny bit of Apple internal software so
1255         we don't have to do this all at once. Can remove it soon.
1256
1257 2019-06-16  Eric Carlson  <eric.carlson@apple.com>
1258
1259         [MediaStream] Avoid roundoff error when setting AVCapture min/max frame rate
1260         https://bugs.webkit.org/show_bug.cgi?id=198875
1261         <rdar://problem/51768374>
1262
1263         Reviewed by Youenn Fablet.
1264
1265         * wtf/MediaTime.h:
1266         (WTF::LogArgument<MediaTime>::toString):
1267         (WTF::LogArgument<MediaTimeRange>::toString):
1268
1269 2019-06-12  Antoine Quint  <graouts@apple.com>
1270
1271         Show the web page URL when sharing an AR model
1272         https://bugs.webkit.org/show_bug.cgi?id=198812
1273         <rdar://problem/48689498>
1274
1275         Reviewed by Dean Jackson.
1276
1277         * wtf/Platform.h:
1278
1279 2019-06-12  Youenn Fablet  <youenn@apple.com>
1280
1281         Use NSURLSession for WebSocket
1282         https://bugs.webkit.org/show_bug.cgi?id=198568
1283
1284         Reviewed by Geoffrey Garen.
1285
1286         * wtf/Platform.h:
1287         Introduce compile flag for WebSocket NSURLSession
1288
1289 2019-06-12  Commit Queue  <commit-queue@webkit.org>
1290
1291         Unreviewed, rolling out r246322.
1292         https://bugs.webkit.org/show_bug.cgi?id=198796
1293
1294         "It's a huge page load regression on iOS" (Requested by
1295         saamyjoon on #webkit).
1296
1297         Reverted changeset:
1298
1299         "Roll out PAC cage"
1300         https://bugs.webkit.org/show_bug.cgi?id=198726
1301         https://trac.webkit.org/changeset/246322
1302
1303 2019-06-10  Simon Fraser  <simon.fraser@apple.com>
1304
1305         Add logging for UI-side compositing hit-testing
1306         https://bugs.webkit.org/show_bug.cgi?id=198739
1307
1308         Reviewed by Antti Koivisto.
1309
1310         Make it possible to output an Objective-C object to TextStream, which will
1311         log its -description.
1312
1313         Also add a template for OptionSet<> printing.
1314
1315         * WTF.xcodeproj/project.pbxproj:
1316         * wtf/text/TextStream.h:
1317         (WTF::operator<<):
1318         * wtf/text/cocoa/TextStreamCocoa.mm: Added.
1319         (WTF::TextStream::operator<<):
1320
1321 2019-06-11  Saam Barati  <sbarati@apple.com>
1322
1323         Roll out PAC cage
1324         https://bugs.webkit.org/show_bug.cgi?id=198726
1325
1326         Reviewed by Keith Miller.
1327
1328         * WTF.xcodeproj/project.pbxproj:
1329         * wtf/CMakeLists.txt:
1330         * wtf/CagedPtr.h:
1331         (WTF::CagedPtr::CagedPtr):
1332         (WTF::CagedPtr::get const):
1333         (WTF::CagedPtr::getMayBeNull const):
1334         (WTF::CagedPtr::operator=):
1335         (WTF::CagedPtr::operator== const):
1336         (WTF::CagedPtr::operator!= const):
1337         (WTF::CagedPtr::operator bool const):
1338         (WTF::CagedPtr::operator* const):
1339         (WTF::CagedPtr::operator-> const):
1340         (WTF::CagedPtr::operator[] const):
1341         (WTF::CagedPtr::getUnsafe const): Deleted.
1342         (WTF::CagedPtr::at const): Deleted.
1343         (WTF::CagedPtr::recage): Deleted.
1344         * wtf/CagedUniquePtr.h:
1345         (WTF::CagedUniquePtr::CagedUniquePtr):
1346         (WTF::CagedUniquePtr::create):
1347         (WTF::CagedUniquePtr::operator=):
1348         (WTF::CagedUniquePtr::~CagedUniquePtr):
1349         (WTF::CagedUniquePtr::destroy):
1350         * wtf/Gigacage.h:
1351         (Gigacage::caged):
1352         (Gigacage::cagedMayBeNull): Deleted.
1353         * wtf/PtrTag.h:
1354         (WTF::tagArrayPtr): Deleted.
1355         (WTF::untagArrayPtr): Deleted.
1356         (WTF::removeArrayPtrTag): Deleted.
1357         (WTF::retagArrayPtr): Deleted.
1358         * wtf/TaggedArrayStoragePtr.h:
1359         (WTF::TaggedArrayStoragePtr::TaggedArrayStoragePtr): Deleted.
1360         (WTF::TaggedArrayStoragePtr::get const): Deleted.
1361         (WTF::TaggedArrayStoragePtr::getUnsafe const): Deleted.
1362         (WTF::TaggedArrayStoragePtr::resize): Deleted.
1363         (WTF::TaggedArrayStoragePtr::operator bool const): Deleted.
1364
1365 2019-06-10  Andy Estes  <aestes@apple.com>
1366
1367         [iOS] Use PDFKit SPI for taking snapshots when the hosting app is not entitled for global capture
1368         https://bugs.webkit.org/show_bug.cgi?id=198731
1369         <rdar://problem/46215174>
1370
1371         Reviewed by Tim Horton.
1372
1373         * wtf/FeatureDefines.h:
1374
1375 2019-06-10  Sam Weinig  <weinig@apple.com>
1376
1377         Remove Dashboard support
1378         https://bugs.webkit.org/show_bug.cgi?id=198615
1379
1380         Reviewed by Ryosuke Niwa.
1381
1382         * wtf/FeatureDefines.h:
1383
1384 2019-06-10  Timothy Hatcher  <timothy@apple.com>
1385
1386         Integrate dark mode support for iOS.
1387         https://bugs.webkit.org/show_bug.cgi?id=198687
1388         rdar://problem/51545643
1389
1390         Reviewed by Tim Horton.
1391
1392         * wtf/Platform.h:
1393
1394 2019-06-08  Andy Estes  <aestes@apple.com>
1395
1396         [Apple Pay] If we have a bound interface identifier, set it on new PKPaymentRequests
1397         https://bugs.webkit.org/show_bug.cgi?id=198690
1398         <rdar://problem/48041803>
1399
1400         Reviewed by Tim Horton.
1401
1402         * wtf/FeatureDefines.h: Defined HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER, and cleaned up some
1403         other PassKit HAVEs.
1404
1405 2019-06-06  Caio Lima  <ticaiolima@gmail.com>
1406
1407         [JSCOnly] JSCOnly port is not building on macOS
1408         https://bugs.webkit.org/show_bug.cgi?id=198563
1409
1410         Reviewed by Don Olmstead.
1411
1412         We are adding `<mach/vm_types.h>` to fix build issues when compiling
1413         JSCOnly port on macOS.
1414
1415         * wtf/WTFAssertions.cpp:
1416
1417 2019-06-03  Commit Queue  <commit-queue@webkit.org>
1418
1419         Unreviewed, rolling out r246022.
1420         https://bugs.webkit.org/show_bug.cgi?id=198486
1421
1422         Causing Internal build failures and JSC test failures
1423         (Requested by ShawnRoberts on #webkit).
1424
1425         Reverted changeset:
1426
1427         "Reenable Gigacage on ARM64."
1428         https://bugs.webkit.org/show_bug.cgi?id=198453
1429         https://trac.webkit.org/changeset/246022
1430
1431 2019-06-03  Darin Adler  <darin@apple.com>
1432
1433         Finish cleanup of String::number for floating point
1434         https://bugs.webkit.org/show_bug.cgi?id=198471
1435
1436         Reviewed by Yusuke Suzuki.
1437
1438         * wtf/JSONValues.cpp:
1439         (WTF::JSONImpl::Value::writeJSON const): Use appendNumber instead of
1440         appendECMAScriptNumber, since that's now the default.
1441
1442         * wtf/text/StringBuilder.cpp:
1443         (WTF::StringBuilder::appendNumber): Renamed from appendShortestFormNumber.
1444         * wtf/text/StringBuilder.h: Removed appendShortestFormNumber and
1445         appendECMAScriptNumber, replacing both with overload of appendNumber.
1446
1447         * wtf/text/WTFString.cpp:
1448         (WTF::String::number): Renamed from numberToStringShortest.
1449         * wtf/text/WTFString.h: Removed numberToStringShortest and
1450         numberToStringECMAScript, replacing both with overload of number.
1451
1452 2019-06-02  Keith Miller  <keith_miller@apple.com>
1453
1454         Reenable Gigacage on ARM64.
1455         https://bugs.webkit.org/show_bug.cgi?id=198453
1456
1457         Reviewed by Filip Pizlo.
1458
1459         * wtf/CagedPtr.h:
1460         (WTF::CagedPtr::authenticatingLoad):
1461         (WTF::CagedPtr::get const):
1462         (WTF::CagedPtr::getMayBeNull const):
1463
1464 2019-05-31  Alex Christensen  <achristensen@webkit.org>
1465
1466         URLParser::parseIPv6Host should properly parse 0's around compression
1467         https://bugs.webkit.org/show_bug.cgi?id=198424
1468
1469         Reviewed by Tim Horton.
1470
1471         * wtf/URLParser.cpp:
1472         (WTF::URLParser::parseIPv6Host):
1473
1474 2019-05-31  Alex Christensen  <achristensen@webkit.org>
1475
1476         URLParser::parseHostAndPort should not allow non-port characters after an ipv6 host
1477         https://bugs.webkit.org/show_bug.cgi?id=198428
1478         <rdar://problem/51209196>
1479
1480         Reviewed by Tim Horton.
1481
1482         This matches Chrome and Firefox.
1483
1484         * wtf/URLParser.cpp:
1485         (WTF::URLParser::parseHostAndPort):
1486
1487 2019-05-31  Tim Horton  <timothy_horton@apple.com>
1488
1489         Optionally respect device management restrictions when loading from the network
1490         https://bugs.webkit.org/show_bug.cgi?id=198318
1491         <rdar://problem/44263806>
1492
1493         Reviewed by Alex Christensen.
1494
1495         * wtf/Platform.h:
1496         Add a HAVE flag for DeviceManagement.framework.
1497         It does exist in the simulator, but does not function; pretend it doesn't exist.
1498
1499 2019-05-31  Geoffrey Garen  <ggaren@apple.com>
1500
1501         Some WeakPtr cleanup
1502         https://bugs.webkit.org/show_bug.cgi?id=198390
1503
1504         Reviewed by Chris Dumez.
1505
1506         * wtf/WeakHashSet.h:
1507         (WTF::HashTraits<Ref<WeakPtrImpl>>::isReleasedWeakValue):
1508         (WTF::WeakHashSet::WeakHashSetConstIterator::WeakHashSetConstIterator):
1509         Updated for rename to WeakPtrImpl.
1510
1511         (WTF::WeakHashSet::WeakHashSetConstIterator::get const): Updated for new
1512         get() interface. Also, switched to iterator operator* to help clarify
1513         the double dereference here.
1514
1515         (WTF::WeakHashSet::add):
1516         (WTF::WeakHashSet::remove):
1517         (WTF::WeakHashSet::contains const):
1518         (WTF::WeakHashSet::computeSize const):
1519         (WTF::HashTraits<Ref<WeakReference>>::isReleasedWeakValue): Deleted.
1520         Updated for rename to WeakPtrImpl.
1521
1522         * wtf/WeakPtr.h:
1523         (WTF::WeakPtrImpl::create):
1524         (WTF::WeakPtrImpl::~WeakPtrImpl): Renamed WeakReference to WeakPtrImpl.
1525         Now we don't need a comment explaining that this class is the backing
1526         implementation of WeakPtr.
1527
1528         (WTF::WeakPtrImpl::get): Return the pointer type we stored, rather than
1529         the pointer type requested by our client. It's a little too surprising
1530         for a field to store one pointer type and load another.
1531
1532         (WTF::WeakPtrImpl::WeakPtrImpl): Fixed a theoretical type safety bug.
1533         Make sure to store T::WeakValueType* instead of T*, since they might
1534         not be the same pointer value. (In practice, T and T::WeakValueType*
1535         are always the same type in this constructor because WeakPtrFactory
1536         makes them so, but it's best not to depend on implementation details
1537         across classes.)
1538
1539         (WTF::WeakPtr::get const): Updated for new get() interface.
1540
1541         (WTF::WeakPtr::operator bool const):
1542         (WTF::WeakPtr::operator=):
1543         (WTF::WeakPtr::clear):
1544         (WTF::WeakPtr::WeakPtr): Updated for WeakPtrImpl rename.
1545
1546         (WTF::WeakPtrFactory::~WeakPtrFactory): Updated for WeakPtrImpl rename.
1547
1548         (WTF::WeakPtrFactory::createWeakPtr const): ASSERT that the passed-in
1549         pointer is equal to the stored pointer. As a space optimization, we
1550         require our client to remind us what we point to each time a weak
1551         pointer is created -- but nothing guarantees that our client will do
1552         this correctly.
1553
1554         (WTF::WeakPtrFactory::revokeAll): Updated for WeakPtrImpl rename.
1555
1556         (WTF::CanMakeWeakPtr::weakPtrFactory const):
1557         (WTF::CanMakeWeakPtr::weakPtrFactory): Use idiomatic accessor naming.
1558
1559         (WTF::weak_ptr_impl_cast): Fixed a theoretical type safety bug.
1560         Previously, if Base and Derived both inherited CanMakeWeakPtr, and
1561         you casted WeakPtr<Base> to WeakPtr<Derived> (or vice versa), and
1562         casting Base <-> Derived required pointer fixup, the previous
1563         compile-time check would accept the cast, even though the stored pointer
1564         would be wrong.
1565
1566         (WTF::WeakPtr<T>::WeakPtr):
1567         (WTF::=):
1568         (WTF::makeWeakPtr):
1569         (WTF::WeakReference::create): Deleted.
1570         (WTF::WeakReference::~WeakReference): Deleted.
1571         (WTF::WeakReference::get const): Deleted.
1572         (WTF::WeakReference::operator bool const): Deleted.
1573         (WTF::WeakReference::clear): Deleted.
1574         (WTF::WeakReference::WeakReference): Deleted.
1575         (WTF::weak_reference_cast): Deleted. Updated for rename to WeakPtrImpl.
1576
1577         Don't export WeakPtrImpl because it's an implmenetation detail and
1578         it shouldn't be easy to use outside WTF.
1579
1580 2019-05-31  Don Olmstead  <don.olmstead@sony.com>
1581
1582         [CMake] Add WebKit::WTF target
1583         https://bugs.webkit.org/show_bug.cgi?id=198400
1584
1585         Reviewed by Konstantin Tokarev.
1586
1587         Create the WebKit::WTF target and use that to propagate headers. Use
1588         WEBKIT_COPY_FILES instead of WEBKIT_MAKE_FORWARDING_HEADERS.
1589
1590         * wtf/CMakeLists.txt:
1591
1592 2019-05-30  Saam Barati  <sbarati@apple.com>
1593
1594         [WHLSL] Enforce variable lifetimes
1595         https://bugs.webkit.org/show_bug.cgi?id=195794
1596         <rdar://problem/50746293>
1597
1598         Reviewed by Myles C. Maxfield.
1599
1600         * wtf/PrintStream.h:
1601
1602 2019-05-30  Keith Rollin  <krollin@apple.com>
1603
1604         Fix yet more deprecated uses of -[UIApplication interfaceOrientation]
1605         https://bugs.webkit.org/show_bug.cgi?id=198381
1606         <rdar://problem/51265846>
1607
1608         Reviewed by Wenson Hsieh.
1609
1610         r245267, r245272, and r245874 fixed many instances of this issue; this
1611         change fixes the issue for tvOS.
1612
1613         * wtf/FeatureDefines.h:
1614
1615 2019-05-29  David Kilzer  <ddkilzer@apple.com>
1616
1617         Clean up a few #include statements in WTF
1618         <https://webkit.org/b/198351>
1619
1620         Reviewed by Alex Christensen.
1621
1622         * benchmarks/HashSetDFGReplay.cpp:
1623         - Add missing "config.h" include.
1624         * wtf/ParallelJobsGeneric.cpp:
1625         - Replace include of ParallelJobs.h with
1626           ParallelJobsGeneric.h.
1627         * wtf/StackBounds.cpp:
1628         - Fix include ordering of StackBounds.h.
1629
1630 2019-05-29  Keith Rollin  <krollin@apple.com>
1631
1632         Followup to r245267 and r245272: fix even more deprecated uses of -[UIApplication interfaceOrientation]
1633         https://bugs.webkit.org/show_bug.cgi?id=198348
1634         <rdar://problem/51234077>
1635
1636         Reviewed by Wenson Hsieh.
1637
1638         r245267 and r245272 fixed many instances of this issue; this change
1639         fixes the issue for watchOS.
1640
1641         * wtf/FeatureDefines.h:
1642
1643 2019-05-29  David Kilzer  <ddkilzer@apple.com>
1644
1645         IndexedDatabase Server thread in com.apple.WebKit.Networking process leaks objects into an autoreleasePool that's never cleared
1646         <https://webkit.org/b/198346>
1647         <rdar://problem/50895658>
1648
1649         Reviewed by Brent Fulgham.
1650
1651         * wtf/CrossThreadTaskHandler.cpp:
1652         (WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):
1653         - Add optional second argument to enable use of an
1654           AutodrainedPool when running the runloop.
1655         (WTF::CrossThreadTaskHandler::taskRunLoop):
1656         - Create an AutodrainedPool if requested when
1657           CrossThreadTaskHandler was created.
1658         * wtf/CrossThreadTaskHandler.h:
1659         (WTF::CrossThreadTaskHandler::AutodrainedPoolForRunLoop):
1660         - Add enum class for enabling an AutodrainedPool for
1661           CrossThreadTaskHandler::taskRunLoop().
1662         (WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):
1663         - Add optional second argument to enable use of an
1664           AutodrainedPool when running the runloop.
1665
1666 2019-05-29  Geoffrey Garen  <ggaren@apple.com>
1667
1668         WeakPtr breaks vtables when upcasting to base classes
1669         https://bugs.webkit.org/show_bug.cgi?id=188799
1670
1671         Reviewed by Youenn Fablet.
1672
1673         This patch switches from reinterpret_cast to static_cast when loading
1674         from WeakReference storage.
1675
1676         We know which type to cast *to* because it's specified by the type of
1677         the calling WeakPtr.
1678
1679         We know which type to cast *from* because it's specified by a typedef
1680         in CanMakeWeakPtr.
1681
1682         (Our convention is that we store a pointer to the class that derives
1683         from CanMakeWeakPtr. We cast from that pointer to derived pointers when
1684         we get(). This means that #include of the derived type header is now
1685         required in order to get() the pointer.)
1686
1687         * wtf/WeakHashSet.h:
1688         (WTF::HashTraits<Ref<WeakReference>>::isReleasedWeakValue): Definition
1689         is now eagerly required because WeakReference is not a template anymore.
1690
1691         (WTF::WeakHashSet::WeakHashSetConstIterator::get const):
1692         (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets):
1693         (WTF::WeakHashSet::remove):
1694         (WTF::WeakHashSet::contains const):
1695         (WTF::WeakHashSet::computesEmpty const):
1696         (WTF::WeakHashSet::hasNullReferences const):
1697         (WTF::WeakHashSet::computeSize const):
1698         (WTF::HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue): Deleted.
1699         Updated for new WeakReference get() API.
1700
1701         * wtf/WeakPtr.h: Use a macro for TestAPI support. We can't use template
1702         specialization because WeakReference is not a class template anymore.
1703         (Or maybe we could have kept it working with a dummy template argument?
1704         Felt weird, so I switched.)
1705
1706         (WTF::WeakReference::create):
1707         (WTF::WeakReference::~WeakReference):
1708         (WTF::WeakReference::get const):
1709         (WTF::WeakReference::operator bool const):
1710         (WTF::WeakReference::WeakReference): WeakReference is just a void* now.
1711         It's the caller's responsibility, when creating and getting, to use
1712         a consistent storage type. We ensure a canonical storage type using a
1713         typedef inside CanMakeWeakPtr.
1714
1715         (WTF::WeakPtr::WeakPtr):
1716         (WTF::WeakPtr::get const):
1717         (WTF::WeakPtr::operator bool const):
1718         (WTF::WeakPtr::operator-> const):
1719         (WTF::WeakPtr::operator* const): Adopted new WeakReference API.
1720
1721         (WTF::WeakPtrFactory::createWeakPtr const): No need for reinterpret_cast.
1722
1723         (WTF::weak_reference_cast): This isn't required for correctness, but it's
1724         nice to show a complier error at WeakPtr construction sites when you know
1725         that the types won't work. Otherwise, you get compiler errors at
1726         dereference sites, which are slightly more mysterious ways of saying that
1727         you constructed your WeakPtr incorrectly.
1728
1729         (WTF::WeakPtr<T>::WeakPtr):
1730         (WTF::=):
1731         (WTF::makeWeakPtr):
1732         (WTF::weak_reference_upcast): Deleted.
1733         (WTF::weak_reference_downcast): Deleted.
1734
1735 2019-05-29  Ryan Haddad  <ryanhaddad@apple.com>
1736
1737         Unreviewed, rolling out r245857.
1738
1739         Breaks internal builds.
1740
1741         Reverted changeset:
1742
1743         "WeakPtr breaks vtables when upcasting to base classes"
1744         https://bugs.webkit.org/show_bug.cgi?id=188799
1745         https://trac.webkit.org/changeset/245857
1746
1747 2019-05-28  Geoffrey Garen  <ggaren@apple.com>
1748
1749         WeakPtr breaks vtables when upcasting to base classes
1750         https://bugs.webkit.org/show_bug.cgi?id=188799
1751
1752         Reviewed by Youenn Fablet.
1753
1754         This patch switches from reinterpret_cast to static_cast when loading
1755         from WeakReference storage.
1756
1757         We know which type to cast *to* because it's specified by the type of
1758         the calling WeakPtr.
1759
1760         We know which type to cast *from* because it's specified by a typedef
1761         in CanMakeWeakPtr.
1762
1763         (Our convention is that we store a pointer to the class that derives
1764         from CanMakeWeakPtr. We cast from that pointer to derived pointers when
1765         we get(). This means that #include of the derived type header is now
1766         required in order to get() the pointer.)
1767
1768         * wtf/WeakHashSet.h:
1769         (WTF::HashTraits<Ref<WeakReference>>::isReleasedWeakValue): Definition
1770         is now eagerly required because WeakReference is not a template anymore.
1771
1772         (WTF::WeakHashSet::WeakHashSetConstIterator::get const):
1773         (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets):
1774         (WTF::WeakHashSet::remove):
1775         (WTF::WeakHashSet::contains const):
1776         (WTF::WeakHashSet::computesEmpty const):
1777         (WTF::WeakHashSet::hasNullReferences const):
1778         (WTF::WeakHashSet::computeSize const):
1779         (WTF::HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue): Deleted.
1780         Updated for new WeakReference get() API.
1781
1782         * wtf/WeakPtr.h: Use a macro for TestAPI support. We can't use template
1783         specialization because WeakReference is not a class template anymore.
1784         (Or maybe we could have kept it working with a dummy template argument?
1785         Felt weird, so I switched.)
1786
1787         (WTF::WeakReference::create):
1788         (WTF::WeakReference::~WeakReference):
1789         (WTF::WeakReference::get const):
1790         (WTF::WeakReference::operator bool const):
1791         (WTF::WeakReference::WeakReference): WeakReference is just a void* now.
1792         It's the caller's responsibility, when creating and getting, to use
1793         a consistent storage type. We ensure a canonical storage type using a
1794         typedef inside CanMakeWeakPtr.
1795
1796         (WTF::WeakPtr::WeakPtr):
1797         (WTF::WeakPtr::get const):
1798         (WTF::WeakPtr::operator bool const):
1799         (WTF::WeakPtr::operator-> const):
1800         (WTF::WeakPtr::operator* const): Adopted new WeakReference API.
1801
1802         (WTF::WeakPtrFactory::createWeakPtr const): No need for reinterpret_cast.
1803
1804         (WTF::weak_reference_cast): This isn't required for correctness, but it's
1805         nice to show a complier error at WeakPtr construction sites when you know
1806         that the types won't work. Otherwise, you get compiler errors at
1807         dereference sites, which are slightly more mysterious ways of saying that
1808         you constructed your WeakPtr incorrectly.
1809
1810         (WTF::WeakPtr<T>::WeakPtr):
1811         (WTF::=):
1812         (WTF::makeWeakPtr):
1813         (WTF::weak_reference_upcast): Deleted.
1814         (WTF::weak_reference_downcast): Deleted.
1815
1816 2019-05-27  Chris Dumez  <cdumez@apple.com>
1817
1818         Use a strongly-typed identifier for pages
1819         https://bugs.webkit.org/show_bug.cgi?id=198206
1820
1821         Reviewed by Youenn Fablet.
1822
1823         * wtf/ObjectIdentifier.h:
1824         (WTF::operator<<):
1825
1826 2019-05-23  Don Olmstead  <don.olmstead@sony.com>
1827
1828         [CMake] Use target oriented design for bmalloc
1829         https://bugs.webkit.org/show_bug.cgi?id=198046
1830
1831         Reviewed by Konstantin Tokarev.
1832
1833         Use WebKit::bmalloc target.
1834
1835         * wtf/CMakeLists.txt:
1836
1837 2019-05-23  Ross Kirsling  <ross.kirsling@sony.com>
1838
1839         [PlayStation] Implement platformUserPreferredLanguages.
1840         https://bugs.webkit.org/show_bug.cgi?id=198149
1841
1842         Reviewed by Fujii Hironori.
1843
1844         * wtf/PlatformPlayStation.cmake:
1845         * wtf/playstation/LanguagePlayStation.cpp: Added.
1846         (WTF::platformUserPreferredLanguages):
1847
1848 2019-05-22  Myles C. Maxfield  <mmaxfield@apple.com>
1849
1850         font-optical-sizing applies the wrong variation value
1851         https://bugs.webkit.org/show_bug.cgi?id=197528
1852         <rdar://problem/50152854>
1853
1854         Reviewed by Antti Koivisto.
1855
1856         * wtf/Platform.h:
1857
1858 2019-05-22  Ryan Haddad  <ryanhaddad@apple.com>
1859
1860         Unreviewed, rolling out r245598.
1861
1862         Breaks watchOS build.
1863
1864         Reverted changeset:
1865
1866         "font-optical-sizing applies the wrong variation value"
1867         https://bugs.webkit.org/show_bug.cgi?id=197528
1868         https://trac.webkit.org/changeset/245598
1869
1870 2019-05-21  Ross Kirsling  <ross.kirsling@sony.com>
1871
1872         [PlayStation] Don't call fcntl.
1873         https://bugs.webkit.org/show_bug.cgi?id=197961
1874
1875         Reviewed by Fujii Hironori.
1876
1877         * wtf/PlatformGTK.cmake:
1878         * wtf/PlatformJSCOnly.cmake:
1879         * wtf/PlatformPlayStation.cmake:
1880         * wtf/PlatformWPE.cmake:
1881         * wtf/UniStdExtras.h:
1882         * wtf/playstation/UniStdExtrasPlayStation.cpp: Added.
1883         (WTF::setCloseOnExec):
1884         (WTF::dupCloseOnExec):
1885         (WTF::setNonBlock):
1886         * wtf/unix/UniStdExtrasUnix.cpp: Renamed from Source/WTF/wtf/UniStdExtras.cpp.
1887         (WTF::setNonBlock):
1888         Move UniStdExtras to unix/, add a PlayStation version that doesn't use fcntl, add an abstraction for O_NONBLOCK.
1889
1890 2019-05-20  Tadeu Zagallo  <tzagallo@apple.com>
1891
1892         Only cache bytecode for API clients in data vaults
1893         https://bugs.webkit.org/show_bug.cgi?id=197898
1894
1895         Reviewed by Keith Miller.
1896
1897         Add SPI to check if a filesystem path is restricted as a data vault.
1898
1899         * WTF.xcodeproj/project.pbxproj:
1900         * wtf/spi/darwin/DataVaultSPI.h: Added.
1901
1902 2019-05-20  Carlos Garcia Campos  <cgarcia@igalia.com>
1903
1904         [GLIB] Repeating timer is not stopped when stop is called from the callback
1905         https://bugs.webkit.org/show_bug.cgi?id=197986
1906
1907         Reviewed by Michael Catanzaro.
1908
1909         In case of repeating timers we always update the ready time to fire interval after the user callback is called.
1910
1911         * wtf/glib/RunLoopGLib.cpp:
1912         (WTF::RunLoop::TimerBase::stop): Reset m_fireInterval and m_isRepeating.
1913
1914 2019-05-19  Darin Adler  <darin@apple.com>
1915
1916         Change String::number to use "shortest" instead of "fixed precision 6 digits"
1917         https://bugs.webkit.org/show_bug.cgi?id=178319
1918
1919         Reviewed by Sam Weinig.
1920
1921         * wtf/text/StringBuilder.h: Delete appendNumber for floating point and
1922         appendECMAScriptNumber for single-precision.
1923
1924         * wtf/text/WTFString.h: Delete String::number for floating point and
1925         numberToStringECMAScript for single-precision.
1926
1927 2019-05-18  Tadeu Zagallo  <tzagallo@apple.com>
1928
1929         Add extra information to dumpJITMemory
1930         https://bugs.webkit.org/show_bug.cgi?id=197998
1931
1932         Reviewed by Saam Barati.
1933
1934         Add a new trace point code for JSC::dumpJITMemory
1935
1936         * wtf/SystemTracing.h:
1937
1938 2019-05-17  Don Olmstead  <don.olmstead@sony.com>
1939
1940         [CMake] Use builtin FindICU
1941         https://bugs.webkit.org/show_bug.cgi?id=197934
1942
1943         Reviewed by Michael Catanzaro.
1944
1945         Remove uses of ICU_INCLUDE_DIRS and ICU_LIBRARIES. Use ICU:: targets which end
1946         up propagating to all consumers of WTF.
1947
1948         * wtf/CMakeLists.txt:
1949         * wtf/PlatformPlayStation.cmake:
1950
1951 2019-05-17  Commit Queue  <commit-queue@webkit.org>
1952
1953         Unreviewed, rolling out r245418.
1954         https://bugs.webkit.org/show_bug.cgi?id=197989
1955
1956         New API test causing crashes on Mojave testers (Requested by
1957         ShawnRoberts on #webkit).
1958
1959         Reverted changeset:
1960
1961         "Add a unit test for client certificate authentication"
1962         https://bugs.webkit.org/show_bug.cgi?id=197800
1963         https://trac.webkit.org/changeset/245418
1964
1965 2019-05-16  Keith Miller  <keith_miller@apple.com>
1966
1967         Wasm should cage the memory base pointers in structs
1968         https://bugs.webkit.org/show_bug.cgi?id=197620
1969
1970         Reviewed by Saam Barati.
1971
1972         Rename reauthenticate to recage.
1973
1974         * wtf/CagedPtr.h:
1975         (WTF::CagedPtr::recage):
1976         (WTF::CagedPtr::reauthenticate): Deleted.
1977
1978 2019-05-16  Alex Christensen  <achristensen@webkit.org>
1979
1980         Add a unit test for client certificate authentication
1981         https://bugs.webkit.org/show_bug.cgi?id=197800
1982
1983         Reviewed by Youenn Fablet.
1984
1985         * wtf/spi/cocoa/SecuritySPI.h:
1986         Move declarations from ArgumentCodersCF.cpp so they can be shared.
1987
1988 2019-05-16  Eike Rathke  <erack@redhat.com>
1989
1990         Fix memcpy() call for big endian
1991         https://bugs.webkit.org/show_bug.cgi?id=197945
1992
1993         Reviewed by Michael Catanzaro.
1994
1995         * wtf/Packed.h:
1996         (WTF::alignof):
1997
1998 2019-05-15  Ross Kirsling  <ross.kirsling@sony.com>
1999
2000         [PlayStation] WTFCrash should preserve register state.
2001         https://bugs.webkit.org/show_bug.cgi?id=197932
2002
2003         Reviewed by Don Olmstead.
2004
2005         * wtf/Assertions.cpp:
2006         * wtf/Assertions.h:
2007         Let r196397 apply to PlayStation port as well.
2008
2009 2019-05-15  Simon Fraser  <simon.fraser@apple.com>
2010
2011         Make LOG_WITH_STREAM more efficient
2012         https://bugs.webkit.org/show_bug.cgi?id=197905
2013
2014         Reviewed by Alex Christensen.
2015
2016         Add a streamable repeat() class that can be used to output a series of characters.
2017         This is useful for indenting output.
2018
2019         * wtf/text/TextStream.h:
2020         (WTF::TextStream::repeat::repeat):
2021         (WTF::TextStream::operator<<):
2022
2023 2019-05-15  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>
2024
2025         compilation failure with clang 9
2026         https://bugs.webkit.org/show_bug.cgi?id=197911
2027
2028         Reviewed by Alex Christensen.
2029
2030         Use std namespace for nullptr_t in tagArrayPtr templates.
2031
2032         * wtf/PtrTag.h:
2033         (WTF::tagArrayPtr):
2034
2035 2019-05-14  Commit Queue  <commit-queue@webkit.org>
2036
2037         Unreviewed, rolling out r245281.
2038         https://bugs.webkit.org/show_bug.cgi?id=197887
2039
2040         Broke API Test TestWebKitAPI.Challenge.ClientCertificate
2041         (Requested by aakashjain on #webkit).
2042
2043         Reverted changeset:
2044
2045         "Add a unit test for client certificate authentication"
2046         https://bugs.webkit.org/show_bug.cgi?id=197800
2047         https://trac.webkit.org/changeset/245281
2048
2049 2019-05-14  Alex Christensen  <achristensen@webkit.org>
2050
2051         Add a unit test for client certificate authentication
2052         https://bugs.webkit.org/show_bug.cgi?id=197800
2053
2054         Reviewed by Youenn Fablet.
2055
2056         * wtf/spi/cocoa/SecuritySPI.h:
2057         Move declarations from ArgumentCodersCF.cpp so they can be shared.
2058
2059 2019-05-13  Robin Morisset  <rmorisset@apple.com>
2060
2061         IndexSet::isEmpty should use BitVector::isEmpty() instead of size()
2062         https://bugs.webkit.org/show_bug.cgi?id=197857
2063
2064         Reviewed by Darin Adler.
2065
2066         * wtf/IndexSet.h:
2067         (WTF::IndexSet::isEmpty const):
2068
2069 2019-05-13  Youenn Fablet  <youenn@apple.com>
2070
2071         [Mac] Use realpath for dlopen_preflight
2072         https://bugs.webkit.org/show_bug.cgi?id=197803
2073
2074         Reviewed by Eric Carlson.
2075
2076         * wtf/cocoa/SoftLinking.h:
2077
2078 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
2079
2080         Unreviewed, wrokaround for MACH_VM_MAX_ADDRESS in ARM32_64
2081         https://bugs.webkit.org/show_bug.cgi?id=197730
2082
2083         Interestingly, MACH_VM_MAX_ADDRESS is larger than 32bit in ARM32_64, I think this is a bug.
2084         But for now, we workaround for this case by using `CPU(ADDRESS64)`.
2085
2086         * wtf/WTFAssertions.cpp:
2087
2088 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
2089
2090         [WTF] Remove Threading workaround for support libraries in Windows
2091         https://bugs.webkit.org/show_bug.cgi?id=197350
2092
2093         Reviewed by Darin Adler.
2094
2095         We kept old APIs for some support libraries at 2017. This patch removes them.
2096
2097         * wtf/Threading.h:
2098         * wtf/win/ThreadingWin.cpp:
2099         (WTF::createThread): Deleted.
2100         (WTF::waitForThreadCompletion): Deleted.
2101
2102 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
2103
2104         [WTF] Simplify GCThread and CompilationThread flags by adding them to WTF::Thread
2105         https://bugs.webkit.org/show_bug.cgi?id=197146
2106
2107         Reviewed by Saam Barati.
2108
2109         Since GCThread and CompilationThread flags exist in WTF, we put these flags into WTF::Thread directly instead of holding them in ThreadSpecific<>.
2110         And this patch removes dependency from Threading.h to ThreadSpecific.h. ThreadSpecific.h's OS threading primitives are moved to ThreadingPrimitives.h,
2111         and Threading.h relies on it instead.
2112
2113         * wtf/CompilationThread.cpp:
2114         (WTF::isCompilationThread):
2115         (WTF::initializeCompilationThreads): Deleted.
2116         (WTF::exchangeIsCompilationThread): Deleted.
2117         * wtf/CompilationThread.h:
2118         (WTF::CompilationScope::CompilationScope):
2119         (WTF::CompilationScope::~CompilationScope):
2120         (WTF::CompilationScope::leaveEarly):
2121         * wtf/MainThread.cpp:
2122         (WTF::initializeMainThread):
2123         (WTF::initializeMainThreadToProcessMainThread):
2124         (WTF::isMainThreadOrGCThread):
2125         (WTF::initializeGCThreads): Deleted.
2126         (WTF::registerGCThread): Deleted.
2127         (WTF::mayBeGCThread): Deleted.
2128         * wtf/MainThread.h:
2129         * wtf/ThreadSpecific.h:
2130         (WTF::canBeGCThread>::ThreadSpecific):
2131         (WTF::canBeGCThread>::set):
2132         (WTF::threadSpecificKeyCreate): Deleted.
2133         (WTF::threadSpecificKeyDelete): Deleted.
2134         (WTF::threadSpecificSet): Deleted.
2135         (WTF::threadSpecificGet): Deleted.
2136         * wtf/Threading.cpp:
2137         (WTF::Thread::exchangeIsCompilationThread):
2138         (WTF::Thread::registerGCThread):
2139         (WTF::Thread::mayBeGCThread):
2140         * wtf/Threading.h:
2141         (WTF::Thread::isCompilationThread const):
2142         (WTF::Thread::gcThreadType const):
2143         (WTF::Thread::joinableState const):
2144         (WTF::Thread::hasExited const):
2145         (WTF::Thread::Thread):
2146         (WTF::Thread::joinableState): Deleted.
2147         (WTF::Thread::hasExited): Deleted.
2148         * wtf/ThreadingPrimitives.h:
2149         (WTF::threadSpecificKeyCreate):
2150         (WTF::threadSpecificKeyDelete):
2151         (WTF::threadSpecificSet):
2152         (WTF::threadSpecificGet):
2153         * wtf/win/ThreadSpecificWin.cpp:
2154         (WTF::flsKeys):
2155
2156 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
2157
2158         Unreviewed, follow-up after r245214
2159         https://bugs.webkit.org/show_bug.cgi?id=197730
2160
2161         Suggested by Sam. We should have static_assert with MACH_VM_MAX_ADDRESS.
2162
2163         * wtf/WTFAssertions.cpp:
2164
2165 2019-05-13  Youenn Fablet  <youenn@apple.com>
2166
2167         Use kDNSServiceFlagsKnownUnique for DNSServiceRegisterRecord only on platforms supporting it
2168         https://bugs.webkit.org/show_bug.cgi?id=197802
2169
2170         Reviewed by Eric Carlson.
2171
2172         * wtf/Platform.h:
2173
2174 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
2175
2176         [JSC] Compress miscelaneous JIT related data structures with Packed<>
2177         https://bugs.webkit.org/show_bug.cgi?id=197830
2178
2179         Reviewed by Saam Barati.
2180
2181         * wtf/Packed.h:
2182         (WTF::alignof):
2183
2184 2019-05-13  Michael Catanzaro  <mcatanzaro@igalia.com>
2185
2186         Unreviewed, fix unused variable warnings in release builds
2187
2188         * wtf/URLHelpers.cpp:
2189         (WTF::URLHelpers::escapeUnsafeCharacters):
2190
2191 2019-05-12  Yusuke Suzuki  <ysuzuki@apple.com>
2192
2193         [JSC] Compress Watchpoint size by using enum type and Packed<> data structure
2194         https://bugs.webkit.org/show_bug.cgi?id=197730
2195
2196         Reviewed by Filip Pizlo.
2197
2198         This patch introduces a new data structures, WTF::Packed, WTF::PackedPtr, and WTF::PackedAlignedPtr.
2199
2200         - WTF::Packed
2201
2202             WTF::Packed is data storage. We can read and write trivial (in C++ term [1]) data to this storage. The difference to
2203             the usual storage is that the alignment of this storage is always 1. We access the underlying data by using unalignedLoad/unalignedStore.
2204             This class offers alignment = 1 data structure instead of missing the following characteristics.
2205
2206                 1. Load / Store are non atomic even if the data size is within a pointer width. We should not use this for a member which can be accessed
2207                    in a racy way. (e.g. fields accessed optimistically from the concurrent compilers).
2208
2209                 2. We cannot take reference / pointer to the underlying storage since they are unaligned.
2210
2211                 3. Access to this storage is unaligned access. The code is using memcpy, and the compiler will convert to an appropriate unaligned access
2212                    in certain architectures (x86_64 / ARM64). It could be slow. So use it for non performance sensitive & memory sensitive places.
2213
2214         - WTF::PackedPtr
2215
2216             WTF::PackedPtr is a specialization of WTF::Packed<T*>. And it is basically WTF::PackedAlignedPtr with alignment = 1. We further compact
2217             the pointer by leveraging the platform specific knowledge. In 64bit architectures, the effective width of pointers are less than 64 bit.
2218             In x86_64, it is 48 bits. And Darwin ARM64 is further smaller, 36 bits. This information allows us to compact the pointer to 6 bytes in
2219             x86_64 and 5 bytes in Darwin ARM64.
2220
2221         - WTF::PackedAlignedPtr
2222
2223             WTF::PackedAlignedPtr is the WTF::PackedPtr with alignment information of the T. If we use this alignment information, we could reduce the
2224             size of packed pointer further in some cases. For example, since we guarantee that JSCells are 16 byte aligned, low 4 bits are empty. Leveraging
2225             this information in Darwin ARM64 platform allows us to make packed JSCell pointer 4 bytes (36 - 4 bits). We do not use passed alignment
2226             information if it is not profitable.
2227
2228         We also have PackedPtrTraits. This is new PtrTraits and use it for various data structures such as Bag<>.
2229
2230         [1]: https://en.cppreference.com/w/cpp/types/is_trivial
2231
2232         * WTF.xcodeproj/project.pbxproj:
2233         * wtf/Bag.h:
2234         (WTF::Bag::clear):
2235         (WTF::Bag::iterator::operator++):
2236         * wtf/CMakeLists.txt:
2237         * wtf/DumbPtrTraits.h:
2238         * wtf/DumbValueTraits.h:
2239         * wtf/MathExtras.h:
2240         (WTF::clzConstexpr):
2241         (WTF::clz):
2242         (WTF::ctzConstexpr):
2243         (WTF::ctz):
2244         (WTF::getLSBSetConstexpr):
2245         (WTF::getMSBSetConstexpr):
2246         * wtf/Packed.h: Added.
2247         (WTF::Packed::Packed):
2248         (WTF::Packed::get const):
2249         (WTF::Packed::set):
2250         (WTF::Packed::operator=):
2251         (WTF::Packed::exchange):
2252         (WTF::Packed::swap):
2253         (WTF::alignof):
2254         (WTF::PackedPtrTraits::exchange):
2255         (WTF::PackedPtrTraits::swap):
2256         (WTF::PackedPtrTraits::unwrap):
2257         * wtf/Platform.h:
2258         * wtf/SentinelLinkedList.h:
2259         (WTF::BasicRawSentinelNode::BasicRawSentinelNode):
2260         (WTF::BasicRawSentinelNode::prev):
2261         (WTF::BasicRawSentinelNode::next):
2262         (WTF::PtrTraits>::remove):
2263         (WTF::PtrTraits>::prepend):
2264         (WTF::PtrTraits>::append):
2265         (WTF::RawNode>::SentinelLinkedList):
2266         (WTF::RawNode>::remove):
2267         (WTF::BasicRawSentinelNode<T>::remove): Deleted.
2268         (WTF::BasicRawSentinelNode<T>::prepend): Deleted.
2269         (WTF::BasicRawSentinelNode<T>::append): Deleted.
2270         * wtf/StdLibExtras.h:
2271         (WTF::roundUpToMultipleOfImpl):
2272         (WTF::roundUpToMultipleOfImpl0): Deleted.
2273         * wtf/UnalignedAccess.h:
2274         (WTF::unalignedLoad):
2275         (WTF::unalignedStore):
2276
2277 2019-05-10  Saam barati  <sbarati@apple.com>
2278
2279         Bag's move operator= leaks memory
2280         https://bugs.webkit.org/show_bug.cgi?id=197757
2281
2282         Reviewed by Keith Miller.
2283
2284         It was unused. So I'm just removing it. We can implement it properly
2285         if we ever need it.
2286
2287         * wtf/Bag.h:
2288         (WTF::Bag::operator=): Deleted.
2289
2290 2019-05-10  Fujii Hironori  <Hironori.Fujii@sony.com>
2291
2292         [WinCairo] storage/indexeddb tests are timing out
2293         https://bugs.webkit.org/show_bug.cgi?id=196289
2294
2295         Reviewed by Alex Christensen.
2296
2297         * wtf/FileSystem.h: Added hardLink.
2298         * wtf/glib/FileSystemGlib.cpp:
2299         (WTF::FileSystemImpl::hardLink):
2300         (WTF::FileSystemImpl::hardLinkOrCopyFile):
2301         * wtf/posix/FileSystemPOSIX.cpp:
2302         (WTF::FileSystemImpl::hardLink):
2303         (WTF::FileSystemImpl::hardLinkOrCopyFile):
2304         * wtf/win/FileSystemWin.cpp:
2305         (WTF::FileSystemImpl::hardLink):
2306         (WTF::FileSystemImpl::hardLinkOrCopyFile):
2307         Added hardLink. Let hardLinkOrCopyFile use the hardLink.
2308
2309 2019-05-10  Yusuke Suzuki  <ysuzuki@apple.com>
2310
2311         [WTF] Remove "private:" from Noncopyable and Nonmovable macros
2312         https://bugs.webkit.org/show_bug.cgi?id=197767
2313
2314         Reviewed by Saam Barati.
2315
2316         We no longer need "private:".
2317
2318         * wtf/Noncopyable.h:
2319         * wtf/Nonmovable.h:
2320
2321 2019-05-08  Zan Dobersek  <zdobersek@igalia.com>
2322
2323         [GLib] Rework WPE RunLoopSourcePriority values
2324         https://bugs.webkit.org/show_bug.cgi?id=197167
2325
2326         Reviewed by Carlos Garcia Campos.
2327
2328         The GLib priorities for the WPE port were initially aligned on the -70
2329         value, theory being that this would help avoid any default-priority
2330         GSources spawned in different dependency libraries affecting our
2331         scheduling. Today it seems that extra caution might not be really
2332         necessary.
2333
2334         This change aligns the base priority value with GLib's default priority
2335         value of 0. We maintain the relativity of priority values by effectively
2336         increasing each priority by 70.
2337
2338         * wtf/glib/RunLoopSourcePriority.h:
2339
2340 2019-05-08  Alex Christensen  <achristensen@webkit.org>
2341
2342         Add SPI to set HSTS storage directory
2343         https://bugs.webkit.org/show_bug.cgi?id=197259
2344
2345         Reviewed by Brady Eidson.
2346
2347         * wtf/Platform.h:
2348
2349 2019-05-08  Keith Miller  <keith_miller@apple.com>
2350
2351         Remove Gigacage from arm64 and use PAC for arm64e instead
2352         https://bugs.webkit.org/show_bug.cgi?id=197110
2353
2354         Reviewed by Saam Barati.
2355
2356         This patch changes the Gigacage to use PAC on arm64e. As part of
2357         this process all platforms must provide their length when
2358         materializing the caged pointer. Since it would be somewhat
2359         confusing to have two parameters for an operator [] those methods
2360         have been removed. Lastly, this patch removes the specializations
2361         for void* caged pointers, instead opting to use enable_if on the
2362         methods that would normally fail on void* e.g. anything that
2363         returns a T&.
2364
2365         * WTF.xcodeproj/project.pbxproj:
2366         * wtf/CMakeLists.txt:
2367         * wtf/CagedPtr.h:
2368         (WTF::CagedPtr::CagedPtr):
2369         (WTF::CagedPtr::get const):
2370         (WTF::CagedPtr::getMayBeNull const):
2371         (WTF::CagedPtr::getUnsafe const):
2372         (WTF::CagedPtr::at const):
2373         (WTF::CagedPtr::reauthenticate):
2374         (WTF::CagedPtr::operator=):
2375         (WTF::CagedPtr::operator== const):
2376         (WTF::CagedPtr::operator bool const):
2377         (WTF::CagedPtr::operator* const): Deleted.
2378         (WTF::CagedPtr::operator-> const): Deleted.
2379         (WTF::CagedPtr::operator[] const): Deleted.
2380         (): Deleted.
2381         * wtf/CagedUniquePtr.h:
2382         (WTF::CagedUniquePtr::CagedUniquePtr):
2383         (WTF::CagedUniquePtr::create):
2384         (WTF::CagedUniquePtr::~CagedUniquePtr):
2385         (WTF::CagedUniquePtr::destroy):
2386         (): Deleted.
2387         * wtf/Gigacage.h:
2388         (Gigacage::cagedMayBeNull):
2389         * wtf/PtrTag.h:
2390         (WTF::tagArrayPtr):
2391         (WTF::untagArrayPtr):
2392         (WTF::removeArrayPtrTag):
2393         (WTF::retagArrayPtr):
2394         * wtf/TaggedArrayStoragePtr.h: Copied from Source/JavaScriptCore/runtime/ArrayBufferView.cpp.
2395         (WTF::TaggedArrayStoragePtr::TaggedArrayStoragePtr):
2396         (WTF::TaggedArrayStoragePtr::get const):
2397         (WTF::TaggedArrayStoragePtr::getUnsafe const):
2398         (WTF::TaggedArrayStoragePtr::resize):
2399         (WTF::TaggedArrayStoragePtr::operator bool const):
2400
2401 2019-05-08  Robin Morisset  <rmorisset@apple.com>
2402
2403         WTF::TimingScope should show the total duration and not just the mean
2404         https://bugs.webkit.org/show_bug.cgi?id=197672
2405
2406         Reviewed by Alex Christensen.
2407
2408         * wtf/TimingScope.cpp:
2409         (WTF::TimingScope::scopeDidEnd):
2410
2411 2019-05-07  Yusuke Suzuki  <ysuzuki@apple.com>
2412
2413         [JSC] LLIntPrototypeLoadAdaptiveStructureWatchpoint does not require Bag<>
2414         https://bugs.webkit.org/show_bug.cgi?id=197645
2415
2416         Reviewed by Saam Barati.
2417
2418         * WTF.xcodeproj/project.pbxproj:
2419         * wtf/CMakeLists.txt:
2420         * wtf/Nonmovable.h: Copied from Source/JavaScriptCore/bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.h.
2421         * wtf/Vector.h:
2422         (WTF::minCapacity>::uncheckedConstructAndAppend):
2423
2424 2019-05-07  Eric Carlson  <eric.carlson@apple.com>
2425
2426         Define media buffering policy
2427         https://bugs.webkit.org/show_bug.cgi?id=196979
2428         <rdar://problem/28383861>
2429
2430         Reviewed by Jer Noble.
2431
2432         * wtf/Platform.h:
2433
2434 2019-05-07  Robin Morisset  <rmorisset@apple.com>
2435
2436         WTF::BitVector should have an isEmpty() method
2437         https://bugs.webkit.org/show_bug.cgi?id=197637
2438
2439         Reviewed by Keith Miller.
2440
2441         * wtf/BitVector.cpp:
2442         (WTF::BitVector::isEmptySlow const):
2443         * wtf/BitVector.h:
2444         (WTF::BitVector::isEmpty const):
2445
2446 2019-05-07  Brent Fulgham  <bfulgham@apple.com>
2447
2448         Correct JSON parser to address unterminated escape character
2449         https://bugs.webkit.org/show_bug.cgi?id=197582
2450         <rdar://problem/50459177>
2451
2452         Reviewed by Alex Christensen.
2453
2454         Correct JSON parser code to properly deal with unterminated escape
2455         characters.
2456
2457         * wtf/JSONValues.cpp:
2458         (WTF::JSONImpl::decodeString):
2459         (WTF::JSONImpl::parseStringToken):
2460
2461 2019-05-07  Alex Christensen  <achristensen@webkit.org>
2462
2463         Add a release assertion that Functions can only be constructed from non-null CompletionHandlers
2464         https://bugs.webkit.org/show_bug.cgi?id=197641
2465
2466         Reviewed by Chris Dumez.
2467
2468         This will help us find the cause of rdar://problem/48679972 by seeing the crash when the Function is dispatched,
2469         not when it's called with no interesting stack trace.  I manually verified this assertion is hit in such a case.
2470         We should also have no legitimate use of creating a Function out of a null CompletionHandler then never calling it.
2471
2472         * wtf/CompletionHandler.h:
2473         (WTF::Detail::CallableWrapper<CompletionHandler<Out):
2474         * wtf/Function.h:
2475         (WTF::Detail::CallableWrapperBase::~CallableWrapperBase):
2476         (WTF::Detail::CallableWrapper::CallableWrapper):
2477         (WTF::Function<Out):
2478
2479 2019-05-06  Christopher Reid  <chris.reid@sony.com>
2480
2481         [JSC] Respect already defined USE_LLINT_EMBEDDED_OPCODE_ID compiler variable.
2482         https://bugs.webkit.org/show_bug.cgi?id=197633
2483
2484         Reviewed by Don Olmstead.
2485
2486         When the variable `USE_LLINT_EMBEDDED_OPCODE_ID` is defined, stop defining
2487         its value with platform default one.
2488
2489         * wtf/Platform.h:
2490
2491 2019-05-03  Sihui Liu  <sihui_liu@apple.com>
2492
2493         Add assertion to check whether shm files have maximum FileProtection of CompleteUnlessOpen
2494         https://bugs.webkit.org/show_bug.cgi?id=197390
2495         <rdar://problem/42685773>
2496
2497         Reviewed by Geoffrey Garen.
2498
2499         * wtf/FileSystem.cpp:
2500         (WTF::FileSystemImpl::isSafeToUseMemoryMapForPath):
2501         (WTF::FileSystemImpl::makeSafeToUseMemoryMapForPath):
2502         * wtf/FileSystem.h:
2503         * wtf/cocoa/FileSystemCocoa.mm:
2504         (WTF::FileSystemImpl::isSafeToUseMemoryMapForPath):
2505         (WTF::FileSystemImpl::makeSafeToUseMemoryMapForPath):
2506
2507 2019-05-03  Commit Queue  <commit-queue@webkit.org>
2508
2509         Unreviewed, rolling out r244881.
2510         https://bugs.webkit.org/show_bug.cgi?id=197559
2511
2512         Breaks compilation of jsconly on linux, breaking compilation
2513         for jsc-i386-ews, jsc-mips-ews and jsc-armv7-ews (Requested by
2514         guijemont on #webkit).
2515
2516         Reverted changeset:
2517
2518         "[CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into
2519         WEBKIT_COPY_FILES"
2520         https://bugs.webkit.org/show_bug.cgi?id=197174
2521         https://trac.webkit.org/changeset/244881
2522
2523 2019-05-02  Alex Christensen  <achristensen@webkit.org>
2524
2525         Mark U+01C0 as a homograph of U+006C
2526         https://bugs.webkit.org/show_bug.cgi?id=197526
2527         <rdar://problem/50301904>
2528
2529         Reviewed by Tim Horton.
2530
2531         * wtf/URLHelpers.cpp:
2532         (WTF::URLHelpers::isLookalikeCharacter):
2533
2534 2019-05-02  Don Olmstead  <don.olmstead@sony.com>
2535
2536         [CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into WEBKIT_COPY_FILES
2537         https://bugs.webkit.org/show_bug.cgi?id=197174
2538
2539         Reviewed by Alex Christensen.
2540
2541         Replace WEBKIT_MAKE_FORWARDING_HEADERS with WEBKIT_COPY_FILES.
2542
2543         * wtf/CMakeLists.txt:
2544
2545 2019-05-01  Darin Adler  <darin@apple.com>
2546
2547         WebKit has too much of its own UTF-8 code and should rely more on ICU's UTF-8 support
2548         https://bugs.webkit.org/show_bug.cgi?id=195535
2549
2550         Reviewed by Alexey Proskuryakov.
2551
2552         * wtf/text/AtomicString.cpp:
2553         (WTF::AtomicString::fromUTF8Internal): Added code to compute string length when the
2554         end is nullptr; this behavior used to be implemented inside the
2555         calculateStringHashAndLengthFromUTF8MaskingTop8Bits function.
2556
2557         * wtf/text/AtomicStringImpl.cpp:
2558         (WTF::HashAndUTF8CharactersTranslator::translate): Updated for change to
2559         convertUTF8ToUTF16.
2560
2561         * wtf/text/AtomicStringImpl.h: Took the WTF_EXPORT_PRIVATE off of the
2562         AtomicStringImpl::addUTF8 function. This is used only inside a non-inlined function in
2563         the AtomicString class and its behavior changed subtly in this patch; it's helpful
2564         to document that it's not exported.
2565
2566         * wtf/text/StringImpl.cpp:
2567         (WTF::StringImpl::utf8Impl): Don't pass "true" for strictness to convertUTF16ToUTF8
2568         since strict is the default. Also updated for changes to ConversionResult.
2569         (WTF::StringImpl::utf8ForCharacters): Updated for change to convertLatin1ToUTF8.
2570         (WTF::StringImpl::tryGetUtf8ForRange const): Ditto.
2571
2572         * wtf/text/StringView.cpp: Removed uneeded include of UTF8Conversion.h.
2573
2574         * wtf/text/WTFString.cpp:
2575         (WTF::String::fromUTF8): Updated for change to convertUTF8ToUTF16.
2576
2577         * wtf/unicode/UTF8Conversion.cpp:
2578         (WTF::Unicode::inlineUTF8SequenceLengthNonASCII): Deleted.
2579         (WTF::Unicode::inlineUTF8SequenceLength): Deleted.
2580         (WTF::Unicode::UTF8SequenceLength): Deleted.
2581         (WTF::Unicode::decodeUTF8Sequence): Deleted.
2582         (WTF::Unicode::convertLatin1ToUTF8): Use U8_APPEND, enabling us to remove
2583         almost everything in the function. Also changed resturn value to be a boolean
2584         to indicate success since there is only one possible failure (target exhausted).
2585         There is room for further simplification, since most callers have lengths rather
2586         than end pointers for the source buffer, and all but one caller supplies a buffer
2587         size known to be sufficient, so those don't need a return value, nor do they need
2588         to pass an end of buffer pointer.
2589         (WTF::Unicode::convertUTF16ToUTF8): Use U_IS_LEAD, U_IS_TRAIL,
2590         U16_GET_SUPPLEMENTARY, U_IS_SURROGATE, and U8_APPEND. Also changed behavior
2591         for non-strict mode so that unpaired surrogates will be turned into the
2592         replacement character instead of invalid UTF-8 sequences, because U8_APPEND
2593         won't create an invalid UTF-8 sequence, and because we don't need to do that
2594         for any good reason at any call site.
2595         (WTF::Unicode::isLegalUTF8): Deleted.
2596         (WTF::Unicode::readUTF8Sequence): Deleted.
2597         (WTF::Unicode::convertUTF8ToUTF16): Use U8_NEXT instead of
2598         inlineUTF8SequenceLength, isLegalUTF8, and readUTF8Sequence. Use
2599         U16_APPEND instead of lots of code that does the same thing. There is
2600         room for further simplification since most callers don't need the "all ASCII"
2601         feature and could probably pass the arguments in a more natural way.
2602         (WTF::Unicode::calculateStringHashAndLengthFromUTF8MaskingTop8Bits):
2603         Use U8_NEXT instead of isLegalUTF8, readUTF8Sequence, and various
2604         error handling checks for things that are handled by U8_NEXT. Also removed
2605         support for passing nullptr for end to specify a null-terminated string.
2606         (WTF::Unicode::equalUTF16WithUTF8): Ditto.
2607
2608         * wtf/unicode/UTF8Conversion.h: Removed UTF8SequenceLength and
2609         decodeUTF8Sequence. Changed the ConversionResult to match WebKit coding
2610         style, with an eye toward perhaps removing it in the future. Changed
2611         the convertUTF8ToUTF16 return value to a boolean and removed the "strict"
2612         argument since no caller was passing false. Changed the convertLatin1ToUTF8
2613         return value to a boolean. Tweaked comments.
2614
2615 2019-05-01  Shawn Roberts  <sroberts@apple.com>
2616
2617         Unreviewed, rolling out r244821.
2618
2619         Causing
2620
2621         Reverted changeset:
2622
2623         "WebKit has too much of its own UTF-8 code and should rely
2624         more on ICU's UTF-8 support"
2625         https://bugs.webkit.org/show_bug.cgi?id=195535
2626         https://trac.webkit.org/changeset/244821
2627
2628 2019-05-01  Shawn Roberts  <sroberts@apple.com>
2629
2630         Unreviewed, rolling out r244822.
2631
2632         Causing 4 Test262 failures on JSC Release and Debug
2633
2634         Reverted changeset:
2635
2636         https://trac.webkit.org/changeset/244822 https://trac.webkit.org/changeset/244821
2637
2638 2019-04-29  Darin Adler  <darin@apple.com>
2639
2640         WebKit has too much of its own UTF-8 code and should rely more on ICU's UTF-8 support
2641         https://bugs.webkit.org/show_bug.cgi?id=195535
2642
2643         Reviewed by Alexey Proskuryakov.
2644
2645         * wtf/text/AtomicString.cpp:
2646         (WTF::AtomicString::fromUTF8Internal): Added code to compute string length when the
2647         end is nullptr; this behavior used to be implemented inside the
2648         calculateStringHashAndLengthFromUTF8MaskingTop8Bits function.
2649
2650         * wtf/text/AtomicStringImpl.cpp:
2651         (WTF::HashAndUTF8CharactersTranslator::translate): Updated for change to
2652         convertUTF8ToUTF16.
2653
2654         * wtf/text/AtomicStringImpl.h: Took the WTF_EXPORT_PRIVATE off of the
2655         AtomicStringImpl::addUTF8 function. This is used only inside a non-inlined function in
2656         the AtomicString class and its behavior changed subtly in this patch; it's helpful
2657         to document that it's not exported.
2658
2659         * wtf/text/StringImpl.cpp:
2660         (WTF::StringImpl::utf8Impl): Don't pass "true" for strictness to convertUTF16ToUTF8
2661         since strict is the default. Also updated for changes to ConversionResult.
2662         (WTF::StringImpl::utf8ForCharacters): Updated for change to convertLatin1ToUTF8.
2663         (WTF::StringImpl::tryGetUtf8ForRange const): Ditto.
2664
2665         * wtf/text/StringView.cpp: Removed uneeded include of UTF8Conversion.h.
2666
2667         * wtf/text/WTFString.cpp:
2668         (WTF::String::fromUTF8): Updated for change to convertUTF8ToUTF16.
2669
2670         * wtf/unicode/UTF8Conversion.cpp:
2671         (WTF::Unicode::inlineUTF8SequenceLengthNonASCII): Deleted.
2672         (WTF::Unicode::inlineUTF8SequenceLength): Deleted.
2673         (WTF::Unicode::UTF8SequenceLength): Deleted.
2674         (WTF::Unicode::decodeUTF8Sequence): Deleted.
2675         (WTF::Unicode::convertLatin1ToUTF8): Use U8_APPEND, enabling us to remove
2676         almost everything in the function. Also changed resturn value to be a boolean
2677         to indicate success since there is only one possible failure (target exhausted).
2678         There is room for further simplification, since most callers have lengths rather
2679         than end pointers for the source buffer, and all but one caller supplies a buffer
2680         size known to be sufficient, so those don't need a return value, nor do they need
2681         to pass an end of buffer pointer.
2682         (WTF::Unicode::convertUTF16ToUTF8): Use U_IS_LEAD, U_IS_TRAIL,
2683         U16_GET_SUPPLEMENTARY, U_IS_SURROGATE, and U8_APPEND. Also changed behavior
2684         for non-strict mode so that unpaired surrogates will be turned into the
2685         replacement character instead of invalid UTF-8 sequences, because U8_APPEND
2686         won't create an invalid UTF-8 sequence, and because we don't need to do that
2687         for any good reason at any call site.
2688         (WTF::Unicode::isLegalUTF8): Deleted.
2689         (WTF::Unicode::readUTF8Sequence): Deleted.
2690         (WTF::Unicode::convertUTF8ToUTF16): Use U8_NEXT instead of
2691         inlineUTF8SequenceLength, isLegalUTF8, and readUTF8Sequence. Use
2692         U16_APPEND instead of lots of code that does the same thing. There is
2693         room for further simplification since most callers don't need the "all ASCII"
2694         feature and could probably pass the arguments in a more natural way.
2695         (WTF::Unicode::calculateStringHashAndLengthFromUTF8MaskingTop8Bits):
2696         Use U8_NEXT instead of isLegalUTF8, readUTF8Sequence, and various
2697         error handling checks for things that are handled by U8_NEXT. Also removed
2698         support for passing nullptr for end to specify a null-terminated string.
2699         (WTF::Unicode::equalUTF16WithUTF8): Ditto.
2700
2701         * wtf/unicode/UTF8Conversion.h: Removed UTF8SequenceLength and
2702         decodeUTF8Sequence. Changed the ConversionResult to match WebKit coding
2703         style, with an eye toward perhaps removing it in the future. Changed
2704         the convertUTF8ToUTF16 return value to a boolean and removed the "strict"
2705         argument since no caller was passing false. Changed the convertLatin1ToUTF8
2706         return value to a boolean. Tweaked comments.
2707
2708 2019-04-30  John Wilander  <wilander@apple.com>
2709
2710         Add logging of Ad Click Attribution errors and events to a dedicated channel
2711         https://bugs.webkit.org/show_bug.cgi?id=197332
2712         <rdar://problem/49918800>
2713
2714         Reviewed by Youenn Fablet.
2715
2716         Added missing RELEASE_LOG_INFO and RELEASE_LOG_INFO_IF dummies
2717         for RELEASE_LOG_DISABLED.
2718
2719         * wtf/Assertions.h:
2720
2721 2019-04-30  Youenn Fablet  <youenn@apple.com>
2722
2723         Make Document audio producers use WeakPtr
2724         https://bugs.webkit.org/show_bug.cgi?id=197382
2725
2726         Reviewed by Eric Carlson.
2727
2728         * wtf/WeakHashSet.h:
2729         (WTF::WeakHashSet::hasNullReferences const):
2730
2731 2019-04-30  Commit Queue  <commit-queue@webkit.org>
2732
2733         Unreviewed, rolling out r244773.
2734         https://bugs.webkit.org/show_bug.cgi?id=197436
2735
2736         Causing assertion failures on debug queues (Requested by
2737         ShawnRoberts on #webkit).
2738
2739         Reverted changeset:
2740
2741         "Make Document audio producers use WeakPtr"
2742         https://bugs.webkit.org/show_bug.cgi?id=197382
2743         https://trac.webkit.org/changeset/244773
2744
2745 2019-04-30  Youenn Fablet  <youenn@apple.com>
2746
2747         Make Document audio producers use WeakPtr
2748         https://bugs.webkit.org/show_bug.cgi?id=197382
2749
2750         Reviewed by Eric Carlson.
2751
2752         * wtf/WeakHashSet.h:
2753         (WTF::WeakHashSet::hasNullReferences const):
2754
2755 2019-04-29  Alex Christensen  <achristensen@webkit.org>
2756
2757         <rdar://problem/50299396> Fix internal High Sierra build
2758         https://bugs.webkit.org/show_bug.cgi?id=197388
2759
2760         * Configurations/Base.xcconfig:
2761
2762 2019-04-29  Yusuke Suzuki  <ysuzuki@apple.com>
2763
2764         JITStubRoutineSet wastes 180KB of HashTable capacity on can.com
2765         https://bugs.webkit.org/show_bug.cgi?id=186732
2766
2767         Reviewed by Saam Barati.
2768
2769         * wtf/Range.h:
2770         (WTF::Range::contains const):
2771
2772 2019-04-29  Basuke Suzuki  <Basuke.Suzuki@sony.com>
2773
2774         [Win] Add flag to enable version information stamping and disable by default.
2775         https://bugs.webkit.org/show_bug.cgi?id=197249
2776         <rdar://problem/50224412>
2777
2778         Reviewed by Ross Kirsling.
2779
2780         This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
2781         Then enable it by default on AppleWin.
2782
2783         * wtf/CMakeLists.txt:
2784
2785 2019-04-26  Don Olmstead  <don.olmstead@sony.com>
2786
2787         Add WTF::findIgnoringASCIICaseWithoutLength to replace strcasestr
2788         https://bugs.webkit.org/show_bug.cgi?id=197291
2789
2790         Reviewed by Konstantin Tokarev.
2791
2792         Adds an implementation of strcasestr within WTF.
2793
2794         * wtf/text/StringCommon.h:
2795         (WTF::findIgnoringASCIICaseWithoutLength):
2796
2797 2019-04-26  Sihui Liu  <sihui_liu@apple.com>
2798
2799         Stop IDB transactions to release locked database files when network process is ready to suspend
2800         https://bugs.webkit.org/show_bug.cgi?id=196372
2801         <rdar://problem/48930116>
2802
2803         Reviewed by Brady Eidson.
2804
2805         Provide a method to suspend the thread and block main thread until the thread is suspended.
2806
2807         * wtf/CrossThreadTaskHandler.cpp:
2808         (WTF::CrossThreadTaskHandler::taskRunLoop):
2809         (WTF::CrossThreadTaskHandler::suspendAndWait):
2810         (WTF::CrossThreadTaskHandler::resume):
2811         * wtf/CrossThreadTaskHandler.h:
2812
2813 2019-04-25  Fujii Hironori  <Hironori.Fujii@sony.com>
2814
2815         Unreviewed, rolling out r244669.
2816
2817         Windows ports can't clean build.
2818
2819         Reverted changeset:
2820
2821         "[Win] Add flag to enable version information stamping and
2822         disable by default."
2823         https://bugs.webkit.org/show_bug.cgi?id=197249
2824         https://trac.webkit.org/changeset/244669
2825
2826 2019-04-25  Basuke Suzuki  <Basuke.Suzuki@sony.com>
2827
2828         [Win] Add flag to enable version information stamping and disable by default.
2829         https://bugs.webkit.org/show_bug.cgi?id=197249
2830
2831         Reviewed by Ross Kirsling.
2832
2833         This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
2834         Then enable it by default on AppleWin.
2835
2836         * wtf/CMakeLists.txt:
2837
2838 2019-04-25  Timothy Hatcher  <timothy@apple.com>
2839
2840         Disable date and time inputs on iOSMac.
2841         https://bugs.webkit.org/show_bug.cgi?id=197287
2842         rdar://problem/46794376
2843
2844         Reviewed by Wenson Hsieh.
2845
2846         * wtf/FeatureDefines.h:
2847
2848 2019-04-25  Alex Christensen  <achristensen@webkit.org>
2849
2850         Fix High Sierra build after r244653
2851         https://bugs.webkit.org/show_bug.cgi?id=197131
2852
2853         * wtf/StdLibExtras.h:
2854         High Sierra thinks __cplusplus is 201406 even when using C++17.
2855         Removing the __cplusplus check resolves the build failure on High Sierra.
2856         We can clean up StdLibExtras more later.
2857
2858 2019-04-25  Alex Christensen  <achristensen@webkit.org>
2859
2860         Start using C++17
2861         https://bugs.webkit.org/show_bug.cgi?id=197131
2862
2863         Reviewed by Darin Adler.
2864
2865         * Configurations/Base.xcconfig:
2866         * wtf/CMakeLists.txt:
2867         * wtf/Variant.h:
2868         (WTF::switchOn):
2869
2870 2019-04-25  Alex Christensen  <achristensen@webkit.org>
2871
2872         Remove DeprecatedOptional
2873         https://bugs.webkit.org/show_bug.cgi?id=197161
2874
2875         Reviewed by Darin Adler.
2876
2877         * WTF.xcodeproj/project.pbxproj:
2878         * wtf/CMakeLists.txt:
2879         * wtf/DeprecatedOptional.h: Removed.
2880
2881 2019-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>
2882
2883         [GTK] Hardcoded text color in input fields
2884         https://bugs.webkit.org/show_bug.cgi?id=126907
2885
2886         Reviewed by Michael Catanzaro.
2887
2888         Define HAVE_OS_DARK_MODE_SUPPORT for GTK port.
2889
2890         * wtf/Platform.h:
2891
2892 2019-04-24  Tim Horton  <timothy_horton@apple.com>
2893
2894         Clean up WKActionSheetAssistant's use of LaunchServices
2895         https://bugs.webkit.org/show_bug.cgi?id=194645
2896         <rdar://problem/47707952>
2897
2898         Reviewed by Andy Estes.
2899
2900         * wtf/Platform.h:
2901
2902 2019-04-24  chris fleizach  <cfleizach@apple.com>
2903
2904         AX: Remove deprecated Accessibility Object Model events
2905         https://bugs.webkit.org/show_bug.cgi?id=197073
2906         <rdar://problem/50027819>
2907
2908         Reviewed by Ryosuke Niwa.
2909
2910         * wtf/Platform.h:
2911
2912 2019-04-23  Commit Queue  <commit-queue@webkit.org>
2913
2914         Unreviewed, rolling out r244558.
2915         https://bugs.webkit.org/show_bug.cgi?id=197219
2916
2917         Causing crashes on iOS Sim Release and Debug (Requested by
2918         ShawnRoberts on #webkit).
2919
2920         Reverted changeset:
2921
2922         "Remove DeprecatedOptional"
2923         https://bugs.webkit.org/show_bug.cgi?id=197161
2924         https://trac.webkit.org/changeset/244558
2925
2926 2019-04-23  Alex Christensen  <achristensen@webkit.org>
2927
2928         Remove DeprecatedOptional
2929         https://bugs.webkit.org/show_bug.cgi?id=197161
2930
2931         Reviewed by Darin Adler.
2932
2933         This was added in r209326 to be compatible with a shipping version of Safari.
2934         We have released several versions of Safari since then, so do what the comments say and remove it.
2935         The existence of this std::optional makes migrating to C++17 harder, and there's no reason to keep it.
2936
2937         * WTF.xcodeproj/project.pbxproj:
2938         * wtf/CMakeLists.txt:
2939         * wtf/DeprecatedOptional.h: Removed.
2940
2941 2019-04-21  Zan Dobersek  <zdobersek@igalia.com>
2942
2943         [WTF] Generic memoryFootprint() implementation should use bmalloc on Linux
2944         https://bugs.webkit.org/show_bug.cgi?id=196963
2945
2946         Reviewed by Don Olmstead.
2947
2948         Have the generic memoryFootprint() implementation use bmalloc's
2949         memoryFootprint() API on Linux, whenever the system malloc option is
2950         not enabled. Limitation to Linux platforms is due to the bmalloc
2951         implementation being limited to those configurations (excluding iOS
2952         which doesn't use MemoryFootprintGeneric.cpp).
2953
2954         * wtf/PlatformWPE.cmake: Switch to building MemoryFootprintGeneric.cpp.
2955         * wtf/generic/MemoryFootprintGeneric.cpp:
2956         (WTF::memoryFootprint):
2957
2958 2019-04-19  Ryosuke Niwa  <rniwa@webkit.org>
2959
2960         HashTable::removeIf always shrinks the hash table by half even if there is nothing left
2961         https://bugs.webkit.org/show_bug.cgi?id=196681
2962         <rdar://problem/49917764>
2963
2964         Reviewed by Darin Adler.
2965
2966         Address Darin's comments by removing the explicit type from std::max.
2967
2968         * wtf/HashTable.h:
2969         (WTF::KeyTraits>::computeBestTableSize):
2970         (WTF::KeyTraits>::shrinkToBestSize):
2971
2972 2019-04-18  Chris Dumez  <cdumez@apple.com>
2973
2974         [iOS] Improve detection of when web views go to background / foreground
2975         https://bugs.webkit.org/show_bug.cgi?id=197035
2976         <rdar://problem/45281182>
2977
2978         Reviewed by Tim Horton.
2979
2980         Add build time flag.
2981
2982         * wtf/FeatureDefines.h:
2983
2984 2019-04-18  Jer Noble  <jer.noble@apple.com>
2985
2986         Add support for parsing FairPlayStreaming PSSH boxes.
2987         https://bugs.webkit.org/show_bug.cgi?id=197064
2988
2989         Reviewed by Eric Carlson.
2990
2991         * wtf/Platform.h:
2992
2993 2019-04-18  Yusuke Suzuki  <ysuzuki@apple.com>
2994
2995         [WTF] StringBuilder should set correct m_is8Bit flag when merging
2996         https://bugs.webkit.org/show_bug.cgi?id=197053
2997
2998         Reviewed by Saam Barati.
2999
3000         When appending StringBuilder to the other StringBuilder, we have a path that does not set m_is8Bit flag correctly.
3001         This patch correctly sets this flag. And we also change 0 to nullptr when we are using 0 as a pointer.
3002
3003         * wtf/text/StringBuilder.cpp:
3004         (WTF::StringBuilder::reserveCapacity):
3005         (WTF::StringBuilder::appendUninitializedSlow):
3006         (WTF::StringBuilder::append):
3007         * wtf/text/StringBuilder.h:
3008         (WTF::StringBuilder::append):
3009         (WTF::StringBuilder::characters8 const):
3010         (WTF::StringBuilder::characters16 const):
3011         (WTF::StringBuilder::clear):
3012
3013 2019-04-17  Tim Horton  <timothy_horton@apple.com>
3014
3015         Adopt different scroll view flashing SPI
3016         https://bugs.webkit.org/show_bug.cgi?id=197043
3017         <rdar://problem/49996476>
3018
3019         Reviewed by Wenson Hsieh.
3020
3021         * wtf/Platform.h:
3022
3023 2019-04-17  Jer Noble  <jer.noble@apple.com>
3024
3025         Enable HAVE_AVFOUNDATION_VIDEO_OUTPUT on PLATFORM(IOSMAC)
3026         https://bugs.webkit.org/show_bug.cgi?id=196994
3027         <rdar://problem/44158331>
3028
3029         Reviewed by Alex Christensen.
3030
3031         * wtf/Platform.h:
3032
3033 2019-04-16  Stephan Szabo  <stephan.szabo@sony.com>
3034
3035         [PlayStation] Update port for system library changes
3036         https://bugs.webkit.org/show_bug.cgi?id=196978
3037
3038         Reviewed by Ross Kirsling.
3039
3040         * wtf/PlatformPlayStation.cmake:
3041         Remove reference to deleted system library
3042
3043 2019-04-16  Jer Noble  <jer.noble@apple.com>
3044
3045         Enable HAVE_AVKIT on PLATFORM(IOSMAC)
3046         https://bugs.webkit.org/show_bug.cgi?id=196987
3047
3048         Reviewed by Tim Horton.
3049
3050         * wtf/Platform.h:
3051
3052 2019-04-16  Robin Morisset  <rmorisset@apple.com>
3053
3054         [WTF] holdLock should be marked WARN_UNUSED_RETURN
3055         https://bugs.webkit.org/show_bug.cgi?id=196922
3056
3057         Reviewed by Keith Miller.
3058
3059         * wtf/Locker.h:
3060
3061 2019-04-16  Don Olmstead  <don.olmstead@sony.com>
3062
3063         [CMake] Set WTF_SCRIPTS_DIR
3064         https://bugs.webkit.org/show_bug.cgi?id=196917
3065
3066         Reviewed by Konstantin Tokarev.
3067
3068         Use WTF_SCRIPTS_DIR for copying the unified sources script.
3069
3070         * wtf/CMakeLists.txt:
3071
3072 2019-04-15  Myles C. Maxfield  <mmaxfield@apple.com>
3073
3074         [Cocoa] FontPlatformData objects aren't cached at all when using font-family:system-ui
3075         https://bugs.webkit.org/show_bug.cgi?id=196846
3076         <rdar://problem/49499971>
3077
3078         Reviewed by Simon Fraser and Darin Adler.
3079
3080         * wtf/RetainPtr.h:
3081         (WTF::safeCFEqual):
3082         (WTF::safeCFHash):
3083
3084 2019-04-12  Ryosuke Niwa  <rniwa@webkit.org>
3085
3086         HashTable::removeIf always shrinks the hash table by half even if there is nothing left
3087         https://bugs.webkit.org/show_bug.cgi?id=196681
3088
3089         Reviewed by Darin Adler.
3090
3091         Made HashTable::removeIf shrink to the "best size", which is the least power of two bigger
3092         than twice the key count as already used in the copy constructor.
3093
3094         * wtf/HashTable.h:
3095         (WTF::HashTable::computeBestTableSize): Extracted from the copy constructor.
3096         (WTF::HashTable::shrinkToBestSize): Added.
3097         (WTF::HashTable::removeIf): Use shrinkToBestSize instead of shrink.
3098         (WTF::HashTable::HashTable):
3099
3100 2019-04-12  Eric Carlson  <eric.carlson@apple.com>
3101
3102         Update AudioSession route sharing policy
3103         https://bugs.webkit.org/show_bug.cgi?id=196776
3104         <rdar://problem/46501611>
3105
3106         Reviewed by Jer Noble.
3107
3108         * wtf/Platform.h: Define HAVE_ROUTE_SHARING_POLICY_LONG_FORM_VIDEO.
3109
3110 2019-04-10  Said Abou-Hallawa  <sabouhallawa@apple.com>
3111
3112         requestAnimationFrame should execute before the next frame
3113         https://bugs.webkit.org/show_bug.cgi?id=177484
3114
3115         Reviewed by Simon Fraser.
3116
3117         Add trace points for the page RenderingUpdate.
3118
3119         * wtf/SystemTracing.h:
3120
3121 2019-04-10  Claudio Saavedra  <csaavedra@igalia.com>
3122
3123         Do not generate empty unified sources when unified builds are disabled
3124         https://bugs.webkit.org/show_bug.cgi?id=196767
3125
3126         Reviewed by Konstantin Tokarev.
3127
3128         If unified builds are disabled, the ruby script to generate them
3129         is still used to list the sources that need to be
3130         compiled. Currently, the script always generates bundled unified
3131         sources, even if it's being used just to list all the sources. So
3132         when the unified builds are disabled and no files are going to be
3133         bundled, the script generates one empty file per bundle manager
3134         (that is, one C++ and one ObjectiveC), that gets added to the
3135         sources to be compiled.
3136
3137         * Scripts/generate-unified-source-bundles.rb: Only go through the
3138         bundle managers file generation when not running in
3139         PrintAllSources mode, to avoid generating empty bundle files.
3140
3141 2019-04-10  Enrique Ocaña González  <eocanha@igalia.com>
3142
3143         [WPE] Avoid async IO starving timers
3144         https://bugs.webkit.org/show_bug.cgi?id=196733
3145
3146         Reviewed by Carlos Garcia Campos.
3147
3148         If AsyncIONetwork and DiskCacheRead priorities are higher than
3149         MainThreadSharedTimer the timers get starved. This causes the NetworkProcess
3150         to accumulate MB of data instead of handing it down to the WebProcess (done
3151         using a Timer). This eventually causes an Out Of Memory kill on the
3152         NetworkProcess on some embedded platforms with low memory limits.
3153
3154         This patch levels the three priorities to the same value, while still leaving
3155         DiskCacheWrite with less priority than DiskCacheRead.
3156
3157         * wtf/glib/RunLoopSourcePriority.h: Changed RunLoopSourcePriority values for WPE.
3158
3159 2019-04-09  Don Olmstead  <don.olmstead@sony.com>
3160
3161         [CMake] WTF derived sources should only be referenced inside WTF
3162         https://bugs.webkit.org/show_bug.cgi?id=196706
3163
3164         Reviewed by Konstantin Tokarev.
3165
3166         Use ${WTF_DERIVED_SOURCES_DIR} instead of ${DERIVED_SOURCES_DIR} within WTF.
3167
3168         * wtf/CMakeLists.txt:
3169         * wtf/PlatformJSCOnly.cmake:
3170         * wtf/PlatformMac.cmake:
3171
3172 2019-04-09  Don Olmstead  <don.olmstead@sony.com>
3173
3174         [CMake] Apple builds should use ICU_INCLUDE_DIRS
3175         https://bugs.webkit.org/show_bug.cgi?id=196720
3176
3177         Reviewed by Konstantin Tokarev.
3178
3179         Copy ICU headers for Apple builds into ICU_INCLUDE_DIRS.
3180
3181         * CMakeLists.txt:
3182         * wtf/PlatformMac.cmake:
3183
3184 2019-04-08  Don Olmstead  <don.olmstead@sony.com>
3185
3186         [CMake][WinCairo] Separate copied headers into different directories
3187         https://bugs.webkit.org/show_bug.cgi?id=196655
3188
3189         Reviewed by Michael Catanzaro.
3190
3191         * wtf/CMakeLists.txt:
3192
3193 2019-04-08  Guillaume Emont  <guijemont@igalia.com>
3194
3195         Enable DFG on MIPS
3196         https://bugs.webkit.org/show_bug.cgi?id=196689
3197
3198         Reviewed by Žan Doberšek.
3199
3200         Since the bytecode change, we enabled the baseline JIT on mips in
3201         r240432, but DFG is still missing. With this change, all tests are
3202         passing on a ci20 board.
3203
3204         * wtf/Platform.h: Enable DFG on MIPS by default.
3205
3206 2019-04-06  Ryosuke Niwa  <rniwa@webkit.org>
3207
3208         Added tests for WeakHashSet::computesEmpty and WeakHashSet::computeSize
3209         https://bugs.webkit.org/show_bug.cgi?id=196669
3210
3211         Reviewed by Geoffrey Garen.
3212
3213         Removed the superflous type names from forward declarations, and made WeakHashSet::add
3214         take a const object to match other container types in WTF.
3215
3216         * wtf/WeakHashSet.h:
3217         (WTF::WeakHashSet::add):
3218         * wtf/WeakPtr.h:
3219
3220 2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
3221
3222         Make WeakPtr<Element> possible and deploy it in form associated elements code
3223         https://bugs.webkit.org/show_bug.cgi?id=196626
3224
3225         Reviewed by Antti Koivisto.
3226
3227         Make it possible to call WeakHashSet::remove and WeakHashSet::contains with
3228         a subclass type U of a type T used to define WeakReference<T>.
3229
3230         Also added computesEmpty, which is slightly more efficient than computeSize
3231         when m_set is either empty or when there are non-released weak references in the set.
3232
3233         * wtf/WeakHashSet.h:
3234         (WTF::WeakHashSet::remove):
3235         (WTF::WeakHashSet::contains const):
3236         (WTF::WeakHashSet::computesEmpty const): Added.
3237         * wtf/WeakPtr.h: Added an explicit forward declaration of WeakHashSet to avoid
3238         build failures in GTK+ and WPE ports.
3239
3240 2019-04-05  Eric Carlson  <eric.carlson@apple.com>
3241
3242         Remove AUDIO_TOOLBOX_AUDIO_SESSION
3243         https://bugs.webkit.org/show_bug.cgi?id=196653
3244         <rdar://problem/49652098>
3245
3246         Reviewed by Jer Noble.
3247
3248         * wtf/Platform.h:
3249
3250 2019-04-05  Michael Catanzaro  <mcatanzaro@igalia.com>
3251
3252         Unreviewed manual rollout of r243929
3253         https://bugs.webkit.org/show_bug.cgi?id=196626
3254
3255         * wtf/WeakHashSet.h:
3256         (WTF::WeakHashSet::remove):
3257         (WTF::WeakHashSet::contains const):
3258         (WTF::WeakHashSet::computesEmpty const): Deleted.
3259
3260 2019-04-05  Commit Queue  <commit-queue@webkit.org>
3261
3262         Unreviewed, rolling out r243833.
3263         https://bugs.webkit.org/show_bug.cgi?id=196645
3264
3265         This change breaks build of WPE and GTK ports (Requested by
3266         annulen on #webkit).
3267
3268         Reverted changeset:
3269
3270         "[CMake][WTF] Mirror XCode header directories"
3271         https://bugs.webkit.org/show_bug.cgi?id=191662
3272         https://trac.webkit.org/changeset/243833
3273
3274 2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
3275
3276         Make WeakPtr<Element> possible and deploy it in form associated elements code
3277         https://bugs.webkit.org/show_bug.cgi?id=196626
3278
3279         Reviewed by Antti Koivisto.
3280
3281         Make it possible to call WeakHashSet::remove and WeakHashSet::contains with
3282         a subclass type U of a type T used to define WeakReference<T>.
3283
3284         Also added computesEmpty, which is slightly more efficient than computeSize
3285         when m_set is either empty or when there are non-released weak references in the set.
3286
3287         * wtf/WeakHashSet.h:
3288         (WTF::WeakHashSet::remove):
3289         (WTF::WeakHashSet::contains const):
3290         (WTF::WeakHashSet::computesEmpty const): Added.
3291
3292 2019-04-04  Yusuke Suzuki  <ysuzuki@apple.com>
3293
3294         [WebCore] Put most of derived classes of ScriptWrappable into IsoHeap
3295         https://bugs.webkit.org/show_bug.cgi?id=196475
3296
3297         Reviewed by Saam Barati.
3298
3299         * wtf/ForbidHeapAllocation.h:
3300         * wtf/IsoMalloc.h:
3301         * wtf/IsoMallocInlines.h:
3302
3303 2019-04-03  Don Olmstead  <don.olmstead@sony.com>
3304
3305         [CMake][WTF] Mirror XCode header directories
3306         https://bugs.webkit.org/show_bug.cgi?id=191662
3307
3308         Reviewed by Konstantin Tokarev.
3309
3310         Rename WTF forwarding header target to WTFFramework and update the install location
3311         to WTF_FRAMEWORK_HEADERS_DIR.
3312
3313         * wtf/CMakeLists.txt:
3314
3315 2019-04-03  Joseph Pecoraro  <pecoraro@apple.com>
3316
3317         Web Inspector: Remote Inspector indicate callback should always happen on the main thread
3318         https://bugs.webkit.org/show_bug.cgi?id=196513
3319         <rdar://problem/49498284>
3320
3321         Reviewed by Devin Rousso.
3322
3323         * wtf/MainThread.h:
3324         * wtf/cocoa/MainThreadCocoa.mm:
3325         (WTF::dispatchAsyncOnMainThreadWithWebThreadLockIfNeeded):
3326         * wtf/ios/WebCoreThread.cpp:
3327         * wtf/ios/WebCoreThread.h:
3328
3329 2019-04-02  Keith Rollin  <krollin@apple.com>
3330
3331         Inhibit CFNetwork logging in private sessions
3332         https://bugs.webkit.org/show_bug.cgi?id=196268
3333         <rdar://problem/48210793>
3334
3335         Fix a conditional in Platform.h where IOS should have been used
3336         instead of IOS_FAMILY. The latter happened to work, but we really want
3337         to be using the proper symbol here.
3338
3339         Reviewed by Alexey Proskuryakov.
3340
3341         * wtf/Platform.h:
3342
3343 2019-04-01  Michael Catanzaro  <mcatanzaro@igalia.com>
3344
3345         Stop trying to support building JSC with clang 3.8
3346         https://bugs.webkit.org/show_bug.cgi?id=195947
3347         <rdar://problem/49069219>
3348
3349         Reviewed by Darin Adler.
3350
3351         It seems WebKit hasn't built with clang 3.8 in a while, no devs are using this compiler, we
3352         don't know how much effort it would be to make JSC work again, and it's making the code
3353         worse. Remove my hacks to support clang 3.8 from WTF.
3354
3355         * wtf/MetaAllocator.cpp:
3356         (WTF::MetaAllocator::allocate):
3357         * wtf/text/StringConcatenate.h:
3358         (WTF::tryMakeStringFromAdapters):
3359
3360 2019-03-31  Yusuke Suzuki  <ysuzuki@apple.com>
3361
3362         [JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if collector thread is not active
3363         https://bugs.webkit.org/show_bug.cgi?id=196160
3364
3365         Reviewed by Saam Barati.
3366
3367         * wtf/FastMalloc.h:
3368         (WTF::FastMalloc::tryRealloc):
3369         * wtf/Gigacage.cpp:
3370         (Gigacage::tryRealloc):
3371         * wtf/Gigacage.h:
3372
3373 2019-03-31  Andy Estes  <aestes@apple.com>
3374
3375         [iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document
3376         https://bugs.webkit.org/show_bug.cgi?id=196433
3377         <rdar://problem/49293305>
3378
3379         Reviewed by Tim Horton.
3380
3381         * wtf/NeverDestroyed.h:
3382         (WTF::NeverDestroyed::operator->):
3383         (WTF::NeverDestroyed::operator-> const):
3384
3385 2019-03-28  Fujii Hironori  <Hironori.Fujii@sony.com>
3386
3387         Unreviewed build fix.
3388
3389         * wtf/CMakeLists.txt: Added SpanningTree.h to WTF_PUBLIC_HEADERS.
3390
3391 2019-03-28  Saam Barati  <sbarati@apple.com>
3392
3393         BackwardsGraph needs to consider back edges as the backward's root successor
3394         https://bugs.webkit.org/show_bug.cgi?id=195991
3395
3396         Reviewed by Filip Pizlo.
3397
3398         Previously, our backwards graph analysis was slightly wrong. The idea of
3399         backwards graph is that the root of the graph has edges to terminals in
3400         the original graph. And then the original directed edges in the graph are flipped.
3401         
3402         However, we weren't considering loops as a form of terminality. For example,
3403         we wouldn't consider an infinite loop as a terminal. So there were no edges
3404         from the root to a node in the infinite loop. This lead us to make mistakes
3405         when we used backwards dominators to compute control flow equivalence.
3406         
3407         This is better understood in an example:
3408         
3409         ```
3410         preheader:
3411         while (1) {
3412             if (!isCell(v))
3413                 continue;
3414             load structure ID
3415             if (cond)
3416                continue;
3417             return
3418         }
3419         ```
3420         
3421         In the previous version of this algorithm, the only edge from the backwards
3422         root would be to the block containing the return. This would lead us to
3423         believe that the loading of the structureID backwards dominates the preheader,
3424         leading us to believe it's control flow equivalent to preheader. This is
3425         obviously wrong, since we can loop forever if "v" isn't a cell.
3426         
3427         The solution here is to treat any backedge in the graph as a "terminal" node.
3428         Since a backedge implies the existence of a loop.
3429         
3430         In the above example, the backwards root now has an edge to both blocks with
3431         "continue". This prevents us from falsely claiming that the return is control
3432         flow equivalent with the preheader.
3433         
3434         This patch uses DFS spanning trees to compute back edges. An edge
3435         u->v is a back edge when u is a descendent of v in the DFS spanning
3436         tree of the Graph.
3437
3438         * WTF.xcodeproj/project.pbxproj:
3439         * wtf/BackwardsGraph.h:
3440         (WTF::BackwardsGraph::BackwardsGraph):
3441         * wtf/SpanningTree.h: Added.
3442         (SpanningTree::SpanningTree):
3443         (SpanningTree::isDescendent):
3444
3445 2019-03-28  Tim Horton  <timothy_horton@apple.com>
3446
3447         Un-fix the build
3448
3449         * wtf/Platform.h:
3450         It is no longer necessary to exclude this from PLATFORM(IOSMAC).
3451
3452 2019-03-27  Per Arne Vollan  <pvollan@apple.com>
3453
3454         Layout Test js/math-clz32.html is failing
3455         https://bugs.webkit.org/show_bug.cgi?id=196209
3456
3457         Reviewed by Ross Kirsling.
3458
3459         Use the correct number of loop iterations when counting leading zeros. Also, the
3460         count was off by one for the Win64 case.
3461
3462         * wtf/MathExtras.h:
3463         (WTF::clz):
3464
3465 2019-03-26  Keith Rollin  <krollin@apple.com>
3466
3467         Inhibit CFNetwork logging in private sessions
3468         https://bugs.webkit.org/show_bug.cgi?id=196268
3469         <rdar://problem/48210793>
3470
3471         Reviewed by Alex Christensen.
3472
3473         Before performing any logging, the NetworkProcess checks to see if
3474         it's performing an operation associated with a private (ephemeral)
3475         browsing session. If so, it skips the logging. However, networking
3476         layers below the NetworkProcess don't know about private browsing, so
3477         they would still perform their own logging. CFNetwork now has a flag
3478         that lets us control that, so set it to False if private browsing.
3479
3480         * wtf/Platform.h:
3481
3482 2019-03-25  Alex Christensen  <achristensen@webkit.org>
3483
3484         Expected shouldn't assume its contained types are copyable
3485         https://bugs.webkit.org/show_bug.cgi?id=195986
3486
3487         Reviewed by JF Bastien.
3488
3489         * wtf/Expected.h:
3490         (std::experimental::fundamentals_v3::__expected_detail::constexpr_base::constexpr_base):
3491         (std::experimental::fundamentals_v3::operator==):
3492         (std::experimental::fundamentals_v3::operator!=):
3493         * wtf/Unexpected.h:
3494         (std::experimental::fundamentals_v3::unexpected::unexpected):
3495
3496 2019-03-24  Keith Miller  <keith_miller@apple.com>
3497
3498         Unreviewed, forgot to refactor variable name for windows build in
3499         r243418.
3500
3501         * wtf/MathExtras.h:
3502         (WTF::clz):
3503         (WTF::ctz):
3504
3505 2019-03-24  Andy Estes  <aestes@apple.com>
3506
3507         [watchOS] Remove unused Proximity Networking code
3508         https://bugs.webkit.org/show_bug.cgi?id=196188
3509
3510         Reviewed by Tim Horton.
3511
3512         * wtf/FeatureDefines.h:
3513
3514 2019-03-23  Keith Miller  <keith_miller@apple.com>
3515
3516         Refactor clz/ctz and fix getLSBSet.
3517         https://bugs.webkit.org/show_bug.cgi?id=196162
3518
3519         Reviewed by Saam Barati.
3520
3521         This patch makes clz32/64 and ctz32 generic so they work on any
3522         numeric type. Since these methods work on any type we don't need
3523         to have a separate implementation of getLSBSet, which also
3524         happened to be getMSBSet. This patch also adds getMSBSet as there
3525         may be users who want that in the future.
3526
3527         * wtf/MathExtras.h:
3528         (WTF::clz):
3529         (WTF::ctz):
3530         (WTF::getLSBSet):
3531         (WTF::getMSBSet):
3532         (getLSBSet): Deleted.
3533         (WTF::clz32): Deleted.
3534         (WTF::clz64): Deleted.
3535         (WTF::ctz32): Deleted.
3536
3537 2019-03-22  Keith Rollin  <krollin@apple.com>
3538
3539         Enable ThinLTO support in Production builds
3540         https://bugs.webkit.org/show_bug.cgi?id=190758
3541         <rdar://problem/45413233>
3542
3543         Reviewed by Daniel Bates.
3544
3545         Enable building with Thin LTO in Production when using Xcode 10.2 or
3546         later. This change results in a 1.45% progression in PLT5. Full
3547         Production build times increase about 2-3%. Incremental build times
3548         are more severely affected, and so LTO is not enabled for local
3549         engineering builds.
3550
3551         LTO is enabled only on macOS for now, until rdar://problem/49013399,
3552         which affects ARM builds, is fixed.
3553
3554         To change the LTO setting when building locally:
3555
3556         - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
3557           command line.
3558         - If building with `build-webkit`, specify --lto-mode={none,thin,full}
3559           on the command line.
3560         - If building with `build-root`, specify --lto={none,thin,full} on the
3561           command line.
3562         - If building with Xcode, create a LocalOverrides.xcconfig file at the
3563           top level of your repository directory (if needed) and define
3564           WK_LTO_MODE to full, thin, or none.
3565
3566         * Configurations/Base.xcconfig:
3567
3568 2019-03-22  Tim Horton  <timothy_horton@apple.com>
3569
3570         Fix the build after r243354
3571
3572         * wtf/Platform.h:
3573
3574 2019-03-22  Tim Horton  <timothy_horton@apple.com>
3575
3576         Fix the build after r243354
3577         https://bugs.webkit.org/show_bug.cgi?id=196138
3578         <rdar://problem/49145951>
3579
3580         * wtf/Platform.h:
3581
3582 2019-03-21  Eric Carlson  <eric.carlson@apple.com>
3583
3584         Add UI process WebRTC runtime logging.
3585         https://bugs.webkit.org/show_bug.cgi?id=196020
3586         <rdar://problem/49071443>
3587
3588         Reviewed by Youenn Fablet.
3589
3590         * wtf/Logger.h:
3591         (WTF::LogArgument::toString): Add long long and unsigned long long variants.
3592
3593 2019-03-20  Simon Fraser  <simon.fraser@apple.com>
3594
3595         Rename ENABLE_ACCELERATED_OVERFLOW_SCROLLING macro to ENABLE_OVERFLOW_SCROLLING_TOUCH
3596         https://bugs.webkit.org/show_bug.cgi?id=196049
3597
3598         Reviewed by Tim Horton.
3599
3600         This macro is about the -webkit-overflow-scrolling CSS property, not accelerated
3601         overflow scrolling in general, so rename it.
3602
3603         * wtf/FeatureDefines.h:
3604
3605 2019-03-20  Mark Lam  <mark.lam@apple.com>
3606
3607         Open source arm64e code.
3608         https://bugs.webkit.org/show_bug.cgi?id=196012
3609         <rdar://problem/49066237>
3610
3611         Reviewed by Keith Miller.
3612
3613         * WTF.xcodeproj/project.pbxproj:
3614         * wtf/BlockPtr.h:
3615         * wtf/Platform.h:
3616         * wtf/PlatformRegisters.cpp: Added.
3617         (WTF::threadStateLRInternal):
3618         (WTF::threadStatePCInternal):
3619         * wtf/PlatformRegisters.h:
3620         * wtf/PointerPreparations.h:
3621         * wtf/PtrTag.cpp: Added.
3622         (WTF::tagForPtr):
3623         (WTF::ptrTagName):
3624         (WTF::registerPtrTagLookup):
3625         (WTF::reportBadTag):
3626         * wtf/PtrTag.h:
3627         (WTF::removeCodePtrTag):
3628         (WTF::tagCodePtrImpl):
3629         (WTF::tagCodePtr):
3630         (WTF::untagCodePtrImplHelper):
3631         (WTF::untagCodePtrImpl):
3632         (WTF::untagCodePtr):
3633         (WTF::retagCodePtrImplHelper):
3634         (WTF::retagCodePtrImpl):
3635         (WTF::retagCodePtr):
3636         (WTF::tagCFunctionPtrImpl):
3637         (WTF::tagCFunctionPtr):
3638         (WTF::untagCFunctionPtrImpl):
3639         (WTF::untagCFunctionPtr):
3640         (WTF::tagInt):
3641         (WTF::assertIsCFunctionPtr):
3642         (WTF::assertIsNullOrCFunctionPtr):
3643         (WTF::assertIsNotTagged):
3644         (WTF::assertIsTagged):
3645         (WTF::assertIsNullOrTagged):
3646         (WTF::isTaggedWith):
3647         (WTF::assertIsTaggedWith):
3648         (WTF::assertIsNullOrTaggedWith):
3649         (WTF::usesPointerTagging):
3650         (WTF::registerPtrTagLookup):
3651         (WTF::reportBadTag):
3652         (WTF::tagForPtr): Deleted.
3653
3654 2019-03-20  Keith Rollin  <krollin@apple.com>
3655
3656         Update checks that determine if WebKit is system WebKit
3657         https://bugs.webkit.org/show_bug.cgi?id=195756
3658
3659         Reviewed by Alexey Proskuryakov.
3660
3661         The system WebKit can be installed in additional locations, so check
3662         for and allow those, too.
3663
3664         * wtf/Platform.h:
3665
3666 2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>
3667
3668         Unreviewed, further attempt to fix clang 3.8 build
3669         https://bugs.webkit.org/show_bug.cgi?id=195947
3670
3671         * wtf/MetaAllocator.cpp:
3672         (WTF::MetaAllocator::allocate):
3673
3674 2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>
3675
3676         REGRESSION(r243115) breaks build for clang 3.8
3677         https://bugs.webkit.org/show_bug.cgi?id=195947
3678
3679         Reviewed by Chris Dumez.
3680
3681         * wtf/text/StringConcatenate.h:
3682         (WTF::tryMakeStringFromAdapters):
3683
3684 2019-03-20  Tim Horton  <timothy_horton@apple.com>
3685
3686         Add an platform-driven spell-checking mechanism
3687         https://bugs.webkit.org/show_bug.cgi?id=195795
3688
3689         Reviewed by Ryosuke Niwa.
3690
3691         * wtf/Platform.h:
3692         Add an ENABLE flag.
3693
3694 2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>
3695
3696         Build cleanly with GCC 9
3697         https://bugs.webkit.org/show_bug.cgi?id=195920
3698
3699         Reviewed by Chris Dumez.
3700
3701         WebKit triggers three new GCC 9 warnings:
3702
3703         """
3704         -Wdeprecated-copy, implied by -Wextra, warns about the C++11 deprecation of implicitly
3705         declared copy constructor and assignment operator if one of them is user-provided.
3706         """
3707
3708         Solution is to either add a copy constructor or copy assignment operator, if required, or
3709         else remove one if it is redundant.
3710
3711         """
3712         -Wredundant-move, implied by -Wextra, warns about redundant calls to std::move.
3713         -Wpessimizing-move, implied by -Wall, warns when a call to std::move prevents copy elision.
3714         """
3715
3716         These account for most of this patch. Solution is to just remove the bad WTFMove().
3717
3718         Additionally, -Wclass-memaccess has been enhanced to catch a few cases that GCC 8 didn't.
3719         These are solved by casting nontrivial types to void* before using memcpy. (Of course, it
3720         would be safer to not use memcpy on nontrivial types, but that's too complex for this
3721         patch. Searching for memcpy used with static_cast<void*> will reveal other cases to fix.)
3722
3723         * wtf/CheckedArithmetic.h:
3724         (WTF::Checked::Checked):
3725         * wtf/MetaAllocator.cpp:
3726         (WTF::MetaAllocator::allocate):
3727         * wtf/URLParser.cpp:
3728         (WTF::CodePointIterator::operator!= const):
3729         (WTF::CodePointIterator::operator=): Deleted.
3730         * wtf/text/StringView.h:
3731         (WTF::StringView::CodePoints::Iterator::operator=): Deleted.
3732
3733 2019-03-19  Alex Christensen  <achristensen@webkit.org>
3734
3735         Make WTFLogChannelState and WTFLogLevel enum classes
3736         https://bugs.webkit.org/show_bug.cgi?id=195904
3737
3738         Reviewed by Eric Carlson.
3739
3740         * wtf/Assertions.cpp:
3741         * wtf/Assertions.h:
3742         * wtf/Logger.h:
3743         (WTF::Logger::logAlways const):
3744         (WTF::Logger::error const):
3745         (WTF::Logger::warning const):
3746         (WTF::Logger::info const):
3747         (WTF::Logger::debug const):
3748         (WTF::Logger::willLog const):
3749         (WTF::Logger::log):
3750         * wtf/MemoryPressureHandler.cpp:
3751         * wtf/RefCountedLeakCounter.cpp:
3752
3753 2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>
3754
3755         Unreviewed, rolling out r243132.
3756
3757         Broke GTK build
3758
3759         Reverted changeset:
3760
3761         "Make WTFLogChannelState and WTFLogLevel enum classes"
3762         https://bugs.webkit.org/show_bug.cgi?id=195904
3763         https://trac.webkit.org/changeset/243132
3764
3765 2019-03-18  Alex Christensen  <achristensen@webkit.org>
3766
3767         Make WTFLogChannelState and WTFLogLevel enum classes
3768         https://bugs.webkit.org/show_bug.cgi?id=195904
3769
3770         Reviewed by Eric Carlson.
3771
3772         * wtf/Assertions.cpp:
3773         * wtf/Assertions.h:
3774         * wtf/Logger.h:
3775         (WTF::Logger::logAlways const):
3776         (WTF::Logger::error const):
3777         (WTF::Logger::warning const):
3778         (WTF::Logger::info const):
3779         (WTF::Logger::debug const):
3780         (WTF::Logger::willLog const):
3781         (WTF::Logger::log):
3782         * wtf/MemoryPressureHandler.cpp:
3783         * wtf/RefCountedLeakCounter.cpp:
3784
3785 2019-03-18  Darin Adler  <darin@apple.com>
3786
3787         Cut down on use of StringBuffer, possibly leading toward removing it entirely
3788         https://bugs.webkit.org/show_bug.cgi?id=195870
3789
3790         Reviewed by Daniel Bates.
3791
3792         * wtf/URL.cpp: Remove a now-inaccurate comment mentioning StringBuffer.
3793
3794         * wtf/text/StringView.cpp:
3795         (WTF::convertASCIICase): Use createUninitialized instead of StringBuffer.
3796
3797 2019-03-18  Xan Lopez  <xan@igalia.com>
3798
3799         [WTF] Remove redundant std::move in StringConcatenate
3800         https://bugs.webkit.org/show_bug.cgi?id=195798
3801
3802         Reviewed by Darin Adler.
3803
3804         Remove redundant calls to WTFMove in return values for this
3805         method. C++ will already do an implicit move here since we are
3806         returning a local value where copy/move elision is not applicable.
3807
3808         * wtf/text/StringConcatenate.h:
3809         (WTF::tryMakeStringFromAdapters):
3810
3811 2019-03-16  Darin Adler  <darin@apple.com>
3812
3813         Improve normalization code, including moving from unorm.h to unorm2.h
3814         https://bugs.webkit.org/show_bug.cgi?id=195330
3815
3816         Reviewed by Michael Catanzaro.
3817
3818         * wtf/URLHelpers.cpp: Removed unneeded include of unorm.h since the
3819         normalization code is now in StringView.cpp.
3820         (WTF::URLHelpers::escapeUnsafeCharacters): Renamed from
3821         createStringWithEscapedUnsafeCharacters since it now only creates
3822         a new string if one is needed. Use unsigned for string lengths, since
3823         that's what WTF::String uses, not size_t. Added a first loop so that
3824         we can return the string unmodified if no lookalike characters are
3825         found. Removed unnecessary round trip from UTF-16 and then back in
3826         the case where the character is not a lookalike.
3827         (WTF::URLHelpers::toNormalizationFormC): Deleted. Moved this logic
3828         into the WTF::normalizedNFC function in StringView.cpp.
3829         (WTF::URLHelpers::userVisibleURL): Call escapeUnsafeCharacters and
3830         normalizedNFC. The normalizedNFC function is better in multiple ways,
3831         but primarily it handles 8-bit strings and other already-normalized
3832         strings much more efficiently.
3833
3834         * wtf/text/StringView.cpp:
3835         (WTF::normalizedNFC): Added. This has two overloads. One is for when
3836         we already have a String, and want to re-use it if no normalization
3837         is needed, and another is when we only have a StringView, and may need
3838         to allocate a String to hold the result. Includes a fast special case
3839         for 8-bit and already-normalized strings, and uses the same strategy
3840         that JSC::normalize was already using: calls unorm2_normalize twice,
3841         first just to determine the length.
3842
3843         * wtf/text/StringView.h: Added normalizedNFC, which can be called with
3844         either a StringView or a String. Also moved StringViewWithUnderlyingString
3845         here from JSString.h, here for use as the return value of normalizedNFC;
3846         it is used for a similar purpose in the JavaScriptCore rope implementation.
3847         Also removed an inaccurate comment.
3848
3849 2019-03-16  Diego Pino Garcia  <dpino@igalia.com>
3850
3851         [GTK] [WPE] Fix compilation errors due to undefined ALWAYS_LOG_IF
3852         https://bugs.webkit.org/show_bug.cgi?id=195850
3853
3854         Unreviewed build fix after r243033. 
3855
3856         * wtf/LoggerHelper.h:
3857
3858 2019-03-15  Per Arne Vollan  <pvollan@apple.com>
3859
3860         [iOS] Block the accessibility server when accessibility is not enabled.
3861         https://bugs.webkit.org/show_bug.cgi?id=195342
3862
3863         Reviewed by Brent Fulgham.
3864
3865         Add SPI to issue a mach extension to a process by pid. Also, add a macro for
3866         the availability of this SPI.
3867
3868         * wtf/Platform.h:
3869         * wtf/spi/darwin/SandboxSPI.h:
3870
3871 2019-03-15  Eric Carlson  <eric.carlson@apple.com>
3872
3873         Add media stream release logging
3874         https://bugs.webkit.org/show_bug.cgi?id=195823
3875
3876         Reviewed by Youenn Fablet.
3877
3878         * wtf/LoggerHelper.h: Add LOG_IF variants that check a condition before logging.
3879
3880 2019-03-15  Truitt Savell  <tsavell@apple.com>
3881
3882         Unreviewed, rolling out r243008.
3883
3884         This revision broke High Sierra builders
3885
3886         Reverted changeset:
3887
3888         "[iOS] Block the accessibility server when accessibility is
3889         not enabled."
3890         https://bugs.webkit.org/show_bug.cgi?id=195342
3891         https://trac.webkit.org/changeset/243008
3892
3893 2019-03-15  Per Arne Vollan  <pvollan@apple.com>
3894
3895         [iOS] Block the accessibility server when accessibility is not enabled.
3896         https://bugs.webkit.org/show_bug.cgi?id=195342
3897
3898         Reviewed by Brent Fulgham.
3899
3900         Add SPI to issue a mach extension to a process by pid.
3901
3902         * wtf/spi/darwin/SandboxSPI.h:
3903
3904 2019-03-13  Sam Weinig  <sam@webkit.org>
3905
3906         Add utility function to allow easy reverse range-based iteration of a container
3907         https://bugs.webkit.org/show_bug.cgi?id=195542
3908
3909         Reviewed by Antti Koivisto.
3910
3911         Add functions to create an IteratorRange<T> that will iterate a container backwards. It
3912         works with any container that is compatible with std::rbegin() and std::rend(). It is
3913         expected to be used in conjunction with range-based for-loops like so:
3914
3915         for (auto& value : WTF::makeReversedRange(myContainer)) 
3916             ...
3917
3918         * wtf/IteratorRange.h:
3919         (WTF::makeReversedRange):
3920
3921 2019-03-13  Keith Rollin  <krollin@apple.com>
3922
3923         Add support for new StagedFrameworks layout
3924         https://bugs.webkit.org/show_bug.cgi?id=195543
3925
3926         Reviewed by Alexey Proskuryakov.
3927
3928         Opportunistic cleanup: remove unused JAVASCRIPTCORE_FRAMEWORKS_DIR
3929         variable.
3930
3931         * Configurations/Base.xcconfig:
3932
3933 2019-03-13  Dominik Infuehr  <dinfuehr@igalia.com>
3934
3935         String overflow when using StringBuilder in JSC::createError
3936         https://bugs.webkit.org/show_bug.cgi?id=194957
3937
3938         Reviewed by Mark Lam.
3939
3940         When calculating the new capacity of a StringBuilder object,
3941         use a limit of MaxLength instead of MaxLength+1.  Allocating
3942         a string of size MaxLength+1 always fails. This means that expanding
3943         a StringBuilder only worked when the newly doubled capacity is less or
3944         equal to MaxLength.
3945
3946         * wtf/text/StringBuilder.cpp:
3947
3948 2019-03-13  Chris Dumez  <cdumez@apple.com>
3949
3950         Better build fix after r242901.
3951
3952         Reviewed by Jer Noble.
3953
3954         * wtf/Logger.h:
3955         (WTF::LogArgument::toString):
3956
3957 2019-03-13  Jer Noble  <jer.noble@apple.com>
3958
3959         Add AggregateLogger, a Logger specialization for singleton classes.
3960         https://bugs.webkit.org/show_bug.cgi?id=195644
3961
3962         Reviewed by Eric Carlson.
3963
3964         Add a new class, AggregateLogger, which will log messages to each of its aggregated loggers.
3965
3966         Drive-by fixes: allow "const void*" to be directly logged by converting the pointer to a hex string.
3967
3968         * WTF.xcodeproj/project.pbxproj:
3969         * wtf/AggregateLogger.h: Added.
3970         (WTF::AggregateLogger::create):
3971         (WTF::AggregateLogger::addLogger):
3972         (WTF::AggregateLogger::removeLogger):
3973         (WTF::AggregateLogger::logAlways const):
3974         (WTF::AggregateLogger::error const):
3975         (WTF::AggregateLogger::warning const):
3976         (WTF::AggregateLogger::info const):
3977         (WTF::AggregateLogger::debug const):
3978         (WTF::AggregateLogger::willLog const):
3979         (WTF::AggregateLogger::AggregateLogger):
3980         (WTF::AggregateLogger::log const):
3981         * wtf/CMakeLists.h:
3982         * wtf/Logger.cpp:
3983         (WTF::>::toString):
3984         * wtf/Logger.h:
3985
3986 2019-03-12  Commit Queue  <commit-queue@webkit.org>
3987
3988         Unreviewed, rolling out r242747.
3989         https://bugs.webkit.org/show_bug.cgi?id=195641
3990
3991         Performance measurement is difficult in this period, rolling
3992         out it and rolling in later to isolate it from the other
3993         sensitive patches (Requested by yusukesuzuki on #webkit).
3994
3995         Reverted changeset:
3996
3997         "[JSC] Make StaticStringImpl & StaticSymbolImpl actually
3998         static"
3999         https://bugs.webkit.org/show_bug.cgi?id=194212
4000         https://trac.webkit.org/changeset/242747
4001
4002 2019-03-12  Robin Morisset  <rmorisset@apple.com>
4003
4004         A lot more classes have padding that can be reduced by reordering their fields
4005         https://bugs.webkit.org/show_bug.cgi?id=195579
4006
4007         Reviewed by Mark Lam.
4008
4009         * wtf/CrossThreadQueue.h:
4010         * wtf/Logger.h:
4011         * wtf/MemoryPressureHandler.h:
4012         * wtf/MetaAllocator.h:
4013         * wtf/Threading.cpp:
4014
4015 2019-03-11  Alex Christensen  <achristensen@webkit.org>
4016
4017         WTF::Expected should use std::addressof instead of operator&
4018         https://bugs.webkit.org/show_bug.cgi?id=195604
4019
4020         Reviewed by Myles Maxfield.
4021
4022         The latter was causing problems with types that do tricky things with constructors and operator&,
4023         specifically UniqueRef but I made a reduced test case.  When it used operator&, it would get the contained
4024         type and call the constructor that takes a contained type instead of the move constructor.
4025
4026         * wtf/Expected.h:
4027         (std::experimental::fundamentals_v3::__expected_detail::base::base):
4028         (std::experimental::fundamentals_v3::expected::swap):
4029
4030 2019-03-11  Ross Kirsling  <ross.kirsling@sony.com>
4031
4032         Add Optional to Forward.h.
4033         https://bugs.webkit.org/show_bug.cgi?id=195586
4034
4035         Reviewed by Darin Adler.
4036
4037         * wtf/Forward.h:
4038         Add forward declaration for Optional.
4039
4040         * wtf/CPUTime.h:
4041         * wtf/Expected.h:
4042         * wtf/MainThread.h:
4043         * wtf/MemoryFootprint.h:
4044         * wtf/URLHelpers.cpp:
4045         * wtf/URLHelpers.h:
4046         * wtf/cocoa/CPUTimeCocoa.cpp:
4047         * wtf/fuchsia/CPUTimeFuchsia.cpp:
4048         * wtf/unix/CPUTimeUnix.cpp:
4049         * wtf/win/CPUTimeWin.cpp:
4050         Remove unnecessary includes from headers.
4051
4052 2019-03-11  Andy Estes  <aestes@apple.com>
4053
4054         [Apple Pay] Use PKPaymentAuthorizationController to present the Apple Pay UI remotely from the Networking service on iOS
4055         https://bugs.webkit.org/show_bug.cgi?id=195530
4056         <rdar://problem/48747164>
4057
4058         Reviewed by Alex Christensen.
4059
4060         * wtf/FeatureDefines.h: Defined ENABLE_APPLE_PAY_REMOTE_UI.
4061
4062 2019-03-11  Yusuke Suzuki  <ysuzuki@apple.com>
4063
4064         [JSC] Make StaticStringImpl & StaticSymbolImpl actually static
4065         https://bugs.webkit.org/show_bug.cgi?id=194212
4066
4067         Reviewed by Mark Lam.
4068
4069         Avoid mutation onto refcounts if `isStatic()` returns true so that the content of StaticStringImpl never gets modified.
4070
4071         * wtf/text/StringImpl.h:
4072         (WTF::StringImpl::ref):
4073         (WTF::StringImpl::deref):
4074
4075 2019-03-11  Sihui Liu  <sihui_liu@apple.com>
4076
4077         Crash under WebCore::IDBDatabase::connectionToServerLost
4078         https://bugs.webkit.org/show_bug.cgi?id=195563
4079         <rdar://problem/37193655>
4080
4081         CrossThreadTask should protect callee if it is ThreadSafeRefCounted.
4082
4083         Reviewed by Geoffrey Garen.
4084
4085         * wtf/CrossThreadTask.h:
4086         (WTF::createCrossThreadTask):
4087
4088 2019-03-11  Ryan Haddad  <ryanhaddad@apple.com>
4089
4090         Unreviewed, rolling out r242688, r242643, r242624.
4091
4092         Caused multiple layout test failures and crashes on iOS and macOS.
4093
4094         Reverted changeset:
4095
4096         "requestAnimationFrame should execute before the next frame"
4097         https://bugs.webkit.org/show_bug.cgi?id=177484
4098         https://trac.webkit.org/changeset/242624/webkit
4099
4100         * wtf/SystemTracing.h:
4101
4102 2019-03-11  Darin Adler  <darin@apple.com>
4103
4104         Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior
4105         https://bugs.webkit.org/show_bug.cgi?id=195533
4106
4107         Reviewed by Brent Fulgham.
4108
4109         Soon, we will change String::number and StringBuilder::appendNumber for floating
4110         point to use "shortest form" serialization instead of the current default, which is
4111         "6-digit fixed precision stripping trailing zeros". To prepare to do this safely
4112         without accidentally changing any behavior, changing callers to call the explicit
4113         versions. Later, we may want to return and change many of them to use shortest form
4114         instead, but that may require rebaselining tests, and in some extreme cases, getting
4115         rid of flawed logic that converts between different single and double precision
4116         floating point; such problems may be hidden by fixed precision serialization.
4117
4118         Since "shortest form" is already the behavior for AtomicString::number and
4119         for makeString, no changes required for clients of either of those.
4120
4121         * wtf/Logger.h:
4122         (WTF::LogArgument::toString): Use numberToStringFixedPrecision.
4123         * wtf/MediaTime.cpp:
4124         (WTF::MediaTime::toString const): Use appendFixedPrecisionNumber.
4125         * wtf/text/ValueToString.h:
4126         (WTF::ValueToString<float>::string): Use numberToStringFixedPrecision.
4127         (WTF::ValueToString<double>::string): Ditto.
4128
4129 2019-03-11  Truitt Savell  <tsavell@apple.com>
4130
4131         Unreviewed, rolling out r242702.
4132
4133         Broke High Sierra builders.
4134
4135         Reverted changeset:
4136
4137         "Add utility function to allow easy reverse range-based
4138         iteration of a container"
4139         https://bugs.webkit.org/show_bug.cgi?id=195542
4140         https://trac.webkit.org/changeset/242702
4141
4142 2019-03-11  Sam Weinig  <sam@webkit.org>
4143
4144         Add utility function to allow easy reverse range-based iteration of a container
4145         https://bugs.webkit.org/show_bug.cgi?id=195542
4146
4147         Reviewed by Antti Koivisto.
4148
4149         Add functions to create an IteratorRange<T> that will iterate a container backwards. It
4150         works with any container that is compatible with std::rbegin() and std::rend(). It is
4151         expected to be used in conjunction with range-based for-loops like so:
4152
4153         for (auto& value : WTF::makeReversedRange(myContainer)) 
4154             ...
4155
4156         * wtf/IteratorRange.h:
4157         (WTF::makeReversedRange):
4158
4159 2019-03-10  Yusuke Suzuki <utatane.tea@gmail.com> and Fujii Hironori  <Hironori.Fujii@sony.com>
4160
4161         [WTF] Align assumption in RunLoopWin to the other platform's RunLoop
4162         https://bugs.webkit.org/show_bug.cgi?id=181151
4163
4164         Reviewed by Don Olmstead.
4165
4166         This patch fixes RunLoop in Windows to align it to the implementations in the other platforms
4167         to use RunLoop more aggressively.
4168
4169         * wtf/RunLoop.h:
4170         (WTF::RunLoop::Timer::Timer):
4171         * wtf/win/MainThreadWin.cpp:
4172         (initializeMainThreadPlatform): Call RunLoop::registerRunLoopMessageWindowClass.
4173         * wtf/win/RunLoopWin.cpp:
4174         (WTF::RunLoop::wndProc):
4175         (WTF::RunLoop::iterate):
4176         (WTF::RunLoop::stop):
4177         PostQuitMessage is only available in the RunLoop's thread. We should post a message and call
4178         it inside this task.
4179
4180         (WTF::RunLoop::registerRunLoopMessageWindowClass):
4181         Changed the return type from bool to void, and added RELEASE_ASSERT to check the return value of RegisterClass.
4182
4183         (WTF::RunLoop::~RunLoop):
4184         When the RunLoop's thread is freed, its associated window is freed. We do not need to do here.
4185
4186         (WTF::RunLoop::TimerBase::timerFired):
4187         (WTF::RunLoop::TimerBase::TimerBase):
4188         (WTF::RunLoop::TimerBase::start):
4189         (WTF::RunLoop::TimerBase::stop):
4190         (WTF::RunLoop::TimerBase::isActive const):
4191         (WTF::RunLoop::TimerBase::secondsUntilFire const):
4192         (WTF::generateTimerID): Deleted.
4193         We can use TimerBase's pointer as ID since it is uintptr_t.
4194
4195 2019-03-07  Said Abou-Hallawa  <sabouhallawa@apple.com>
4196
4197         requestAnimationFrame should execute before the next frame
4198         https://bugs.webkit.org/show_bug.cgi?id=177484
4199
4200         Reviewed by Simon Fraser.
4201
4202         Add trace points for the page RenderingUpdate.
4203
4204         * wtf/SystemTracing.h:
4205
4206 2019-03-06  Ross Kirsling  <ross.kirsling@sony.com>
4207
4208         [Win] Remove -DUCHAR_TYPE=wchar_t stopgap and learn to live with char16_t.
4209         https://bugs.webkit.org/show_bug.cgi?id=195346
4210
4211         Reviewed by Fujii Hironori.
4212
4213         * wtf/PlatformWin.cmake:
4214         * wtf/text/AtomicString.h:
4215         (WTF::AtomicString::AtomicString):
4216         * wtf/text/WTFString.h:
4217         (WTF::String::String):
4218         * wtf/text/win/StringWin.cpp: Added.
4219         (WTF::String::wideCharacters const): Renamed from WTF::stringToNullTerminatedWChar.
4220         * wtf/text/win/WCharStringExtras.h:
4221         (WTF::ucharFrom):
4222         (WTF::wcharFrom):
4223         (WTF::stringToNullTerminatedWChar): Deleted.
4224         (WTF::wcharToString): Deleted.
4225         (WTF::nullTerminatedWCharToString): Deleted.
4226         Add static_assert-guarded reinterpret_cast wrappers for going between UChar* and wchar_t*.
4227         Move existing to/from-String helpers into the String (and AtomicString) class(es).
4228
4229         * wtf/win/FileSystemWin.cpp:
4230         (WTF::FileSystemImpl::getFindData):
4231         (WTF::FileSystemImpl::getFinalPathName):
4232         (WTF::FileSystemImpl::createSymbolicLink):
4233         (WTF::FileSystemImpl::deleteFile):
4234         (WTF::FileSystemImpl::deleteEmptyDirectory):
4235         (WTF::FileSystemImpl::moveFile):
4236         (WTF::FileSystemImpl::pathByAppendingComponent):
4237         (WTF::FileSystemImpl::fileSystemRepresentation):
4238         (WTF::FileSystemImpl::makeAllDirectories):
4239         (WTF::FileSystemImpl::pathGetFileName):
4240         (WTF::FileSystemImpl::storageDirectory):
4241         (WTF::FileSystemImpl::generateTemporaryPath):
4242         (WTF::FileSystemImpl::openTemporaryFile):
4243         (WTF::FileSystemImpl::openFile):
4244         (WTF::FileSystemImpl::hardLinkOrCopyFile):
4245         (WTF::FileSystemImpl::deleteNonEmptyDirectory):
4246         * wtf/win/LanguageWin.cpp:
4247         (WTF::localeInfo):
4248         * wtf/win/PathWalker.cpp:
4249         (WTF::PathWalker::PathWalker):
4250         Use wchar helpers as needed.
4251
4252 2019-02-28  Ryosuke Niwa  <rniwa@webkit.org>
4253
4254         Add WeakHashSet
4255         https://bugs.webkit.org/show_bug.cgi?id=195152
4256
4257         Reviewed by Antti Koivisto.
4258
4259         Added WeakHashSet which is a HashSet of WeakPtr. When the object pointed by WeakPtr is deleted,
4260         WeakHashSet treats the key to be no longer in the set. That is, WeakHashSet::contains returns false
4261         and const_iterator skips such a WeakPtr in the set.
4262
4263         We decided not to make HashSet<WeahPtr<T>> work because it involves weird semantics such as making
4264         find(X) delete the table entry as remove(find(X)) would be a no-op otherwise as find(X) would return
4265         necessarily need to return HashSet<WeakPtr<T>>::end().
4266
4267         Furthermore, we cannot determine the true size of this set in O(1) because the objected pointed by
4268         some of WeakPtr in the set may have already been deleted. This has implications that we can't have
4269         size(), isEmpty(), random(), etc... as O(1) operation.
4270
4271         WeakHashSet is implemented as HashSet<WeakReference<T>>. HashTable::rehash has been updated to delete
4272         WeakReference<T>'s whose m_ptr has become null, and HashTable::expand first deletes any such entry
4273         before deciding an actual expansion is needed. This is accomplished via newly added hash trait,
4274         hasIsReleasedWeakValueFunction, and HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue which
4275         returns true for when WeakReference<T> pointed by Ref<WeakReference<T>> has null m_ptr, not to be
4276         confused with Ref<WeakReference<T>> itself pointing to a null WeakReference<T>.
4277
4278         * WTF.xcodeproj/project.pbxproj:
4279         * wtf/CMakeLists.txt:
4280         * wtf/Forward.h:
4281         * wtf/HashSet.h:
4282         (WTF::HashSet<T, U, V>::checkConsistency const): Added.
4283         * wtf/HashTable.h:
4284         (WTF::HashTable::isReleasedWeakBucket): Added.
4285         (WTF::HashTable::expand): Delete WeakReference<T> with null m_ptr first. This updates m_keyCount
4286         and may make mustRehashInPlace() return true.
4287         (WTF::HashTable::deleteReleasedWeakBuckets): Added.
4288         (WTF::HashTable::rehash): Delete WeakReference<T> with null m_ptr. Also refactored the code a bit
4289         to avoid keep repeating oldTable[i].
4290         * wtf/HashTraits.h:
4291         (WTF::HashTraits<T>::isHashTraitsReleasedWeakValue): Added.
4292         (WTF::RefHashTraits<T>): Extracted from HashTraits<Ref<P>> to share code with
4293         HashTraits<Ref<WeakReference<T>>>.
4294         (WTF::HashTraitsReleasedWeakValueChecker<Traits, hasIsReleasedWeakValueFunction>): Added.
4295         (WTF::isHashTraitsReleasedWeakValue<Traits, hasIsReleasedWeakValueFunction>): Added.
4296         * wtf/WeakHashSet.h: Added.
4297         (WTF::WeakHashSet): Added.
4298         (WTF::WeakHashSet::WeakHashSetConstIterator::WeakHashSetConstIterator):
4299         (WTF::WeakHashSet::WeakHashSetConstIterator::get const):
4300         (WTF::WeakHashSet::WeakHashSetConstIterator::operator* const):
4301         (WTF::WeakHashSet::WeakHashSetConstIterator::operator-> const):
4302         (WTF::WeakHashSet::WeakHashSetConstIterator::operator++):
4303         (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets):
4304         (WTF::WeakHashSet::WeakHashSetConstIterator::operator== const):
4305         (WTF::WeakHashSet::WeakHashSetConstIterator::operator!= const):
4306         (WTF::WeakHashSet::WeakHashSet):
4307         (WTF::WeakHashSet::begin const):
4308         (WTF::WeakHashSet::end const):
4309         (WTF::WeakHashSet::add):
4310         (WTF::WeakHashSet::remove):
4311         (WTF::WeakHashSet::contains const):
4312         (WTF::WeakHashSet::capacity const):
4313         (WTF::WeakHashSet::computeSize const): Deletes any WeakReference<T> with null m_ptr first.
4314         (WTF::WeakHashSet::checkConsistency const):
4315         (WTF::HashTraits<Ref<WeakReference<T>>>): Added. This hash traits triggers the new code in HashTable's
4316         expand and rehash methods to delete WeakReference<T> with null m_ptr.
4317         (WTF::HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue):
4318         * wtf/WeakPtr.h:
4319         (WTF::WeakReference::~WeakReference): Added so that we can keep track the number of live WeakReference
4320         in API tests by template specializations.
4321
4322 2019-03-03  Darin Adler  <darin@apple.com>
4323
4324         Prepare to improve handling of conversion of float to strings
4325         https://bugs.webkit.org/show_bug.cgi?id=195262
4326
4327         Reviewed by Daniel Bates.
4328
4329         * wtf/dtoa.cpp:
4330         (WTF::truncateTrailingZeros): Renamed from
4331         formatStringTruncatingTrailingZerosIfNeeded and removed the calls
4332         to double_conversion::StringBuilder::Finalizer, since the caller
4333         already does that.
4334         (WTF::numberToFixedPrecisionString): Added an overload for float
4335         and updated to use the new truncateTrailingZeros.
4336         (WTF::numberToFixedWidthString): Added an overload for float.
4337
4338         * wtf/text/AtomicString.cpp:
4339         (WTF::AtomicString::number): Added float overload. This is a
4340         behavior change, but in all cases for the better. The old behavior
4341         was to convert to double first and then do "shortest form"
4342         conversion, and it's always better to just do that as float.
4343         * wtf/text/AtomicString.h: Added float overload of AtomicString::number.
4344
4345         * wtf/text/StringBuilder.cpp:
4346         (WTF::StringBuilder::appendFixedPrecisionNumber): Added float
4347         overload.
4348         (WTF::StringBuilder::appendShortestFormNumber): Renamed from
4349         appendECMAScriptNumber and did the above.
4350         (WTF::StringBuilder::appendFixedWidthNumber): Ditto.
4351         * wtf/text/StringBuilder.h: Added overloads for float and
4352         appendShortestFormNumber. The appendNumber and appendECMAScriptNumber
4353         functions are now inlines in the header, since they are expressed
4354         entirely in terms of the other functions.
4355
4356         * wtf/text/WTFString.cpp:
4357         (WTF::String::numberToStringFixedPrecision): Added float overload.
4358         Removed unnecessary explicit conversion to String.
4359         (WTF::String::numberToStringShortest): Renamed from
4360         numberToStringECMAScript and did the above.
4361         (WTF::String::numberToStringFixedWidth): Ditto.
4362
4363         * wtf/text/WTFString.h: Added overloads for float and
4364         numberToStringShortest. The number and numberToStringECMAScript
4365         functions are now inlines in the header, since they are expressed
4366         entirely in terms of the other functions.
4367
4368 2019-03-04  Andy Estes  <aestes@apple.com>
4369
4370         [Apple Pay] Move WebPaymentCoordinatorProxy from Source/WebKit/UIProcess to Source/WebKit/Shared
4371         https://bugs.webkit.org/show_bug.cgi?id=195080
4372         <rdar://problem/48421558>
4373
4374         Reviewed by Antti Koivisto.
4375
4376         * wtf/FeatureDefines.h:
4377
4378 2019-03-04  Michael Catanzaro  <mcatanzaro@igalia.com>
4379
4380         URLHelpers should use unorm2_quickCheck before converting to NFC
4381         https://bugs.webkit.org/show_bug.cgi?id=194272
4382
4383         Reviewed by Darin Adler.
4384
4385         If the string is already in normalization form C, don't try to normalize it.
4386
4387         * wtf/URLHelpers.cpp:
4388         (WTF::URLHelpers::toNormalizationFormC):
4389
4390 2019-03-02  Darin Adler  <darin@apple.com>
4391
4392         Retire legacy dtoa function and DecimalNumber class
4393    &nb