e63479014f83658b4d5aca92bba5abfa9c7130f1
[WebKit-https.git] / Source / WTF / ChangeLog
1 2020-10-11  Luming Yin  <luming_yin@apple.com>
2
3         Strip patch version from TARGET_MAC_OS_X_VERSION_MAJOR when building for macOS Big Sur 
4         or later
5         https://bugs.webkit.org/show_bug.cgi?id=217594
6         rdar://70188497
7
8         Reviewed by Darin Adler.
9
10         To ensure successful Mac Catalyst WebKit builds, strip the patch version from 
11         TARGET_MAC_OS_X_VERSION_MAJOR by using two `base:`s on MACOSX_DEPLOYMENT_TARGET.
12
13         * Configurations/Base.xcconfig:
14
15 2020-10-11  Luming Yin  <luming_yin@apple.com>
16
17         Ignore deployment suffix and identifier when computing major OS version for macOS 
18         Big Sur and newer
19         https://bugs.webkit.org/show_bug.cgi?id=217584
20         rdar://70168426
21
22         Reviewed by Darin Adler.
23
24         Stop using MACOSX_DEPLOYMENT_TARGET:suffix:identifier to compute major OS versions. 
25         Only use the deployment target base for macOS Big Sur and newer. Keep the manual 
26         definitions for legacy versions of macOS.
27
28         * Configurations/Base.xcconfig:
29
30 2020-10-09  Yusuke Suzuki  <ysuzuki@apple.com>
31
32         [JSC] Assert Operation and HostFunction are in JITOperationsList
33         https://bugs.webkit.org/show_bug.cgi?id=217500
34
35         Reviewed by Saam Barati.
36
37         This patch makes tagCodePtr etc. take PtrTag only from template parameter.
38         As a result, we can easily customize special verification process for specific PtrTag.
39         By leveraging this feature, we introduce HostFunction / JITOperation assertions for HostFunctionPtrTag and OperationPtrTag.
40
41         We also add tagCodePtrWithStackPointerForJITCall and untagCodePtrWithStackPointerForJITCall, they are used only when we need
42         to tag a pointer with stack pointer which is a dynamic PtrTag.
43
44         * wtf/PtrTag.cpp:
45         (WTF::tagForPtr):
46         * wtf/PtrTag.h:
47         (WTF::tagNativeCodePtrImpl):
48         (WTF::untagNativeCodePtrImpl):
49         (WTF::PtrTagTraits::tagCodePtr):
50         (WTF::PtrTagTraits::untagCodePtr):
51         (WTF::registerPtrTagLookup):
52         (WTF::reportBadTag):
53         (WTF::removeCodePtrTag):
54         (WTF::tagCodePtrImpl):
55         (WTF::tagCodePtr):
56         (WTF::untagCodePtrImpl):
57         (WTF::untagCodePtr):
58         (WTF::retagCodePtrImplHelper):
59         (WTF::retagCodePtrImpl):
60         (WTF::retagCodePtr):
61         (WTF::assertIsCFunctionPtr):
62         (WTF::isTaggedWith):
63         (WTF::tagCFunctionPtrImpl):
64         (WTF::tagCFunctionPtr):
65         (WTF::tagCFunction):
66         (WTF::untagCFunctionPtrImpl):
67         (WTF::untagCFunctionPtr):
68         (WTF::tagArrayPtr):
69         (WTF::untagArrayPtr):
70         (WTF::removeArrayPtrTag):
71         (WTF::retagArrayPtr):
72         (WTF::tagCodePtrWithStackPointerForJITCall):
73         (WTF::untagCodePtrWithStackPointerForJITCall):
74         (WTF::untagCodePtrImplHelper): Deleted.
75
76 2020-10-10  Sam Weinig  <weinig@apple.com>
77
78         Use WebPreference definitions from shared configuration files in WebCore (Part 1)
79         https://bugs.webkit.org/show_bug.cgi?id=217551
80
81         Reviewed by Darin Adler.
82
83         This begins using the WebPreferences*.yaml files for the generation of 
84         WebCore's Settings and InternalSettings classes. In this first part, we 
85         only are moving settings that already exist in the WebPreferences*.yaml 
86         files. A subsequent change will migrate the remaining additional settings
87         over.
88
89         To do this we must add default values for 'WebCore', which are unfortunately
90         still needed for things like the empty client based SVGImage and sanitizing 
91         web content functionality. We only need default WebCore values for preferences 
92         that are bound to WebCore::Settings. It would be good to eliminate the need
93         for these eventually, but that is not a goal of this change.
94
95         This also adds some new keys from WebCore's Settings.yaml:
96         - 'webcoreOnChange: *' called by WebCore::Settings when the setting changes.
97         - 'inspectorOverride: true' used to allow the inspector to override the setting.
98         - 'webcoreImplementation: custom' used to indicate that WebCore::SettingsBase 
99           implements the setting.
100         - 'webcoreGetter: *' used to provide an alternate name for the getter in WebCore::Settings.
101         - 'webcoreExcludeFromInternalSettings: true' used to exclude from WebCore's InternalSettings
102           bindings.
103
104         * Scripts/GeneratePreferences.rb:
105         Adds check that if the preference is bound to WebCore, it includes defaults for all
106         three front generators, 'WebKit', WebKitLegacy', and 'WebCore'.
107
108         * Scripts/Preferences/WebPreferences.yaml:
109         * Scripts/Preferences/WebPreferencesDebug.yaml:
110         * Scripts/Preferences/WebPreferencesExperimental.yaml:
111         * Scripts/Preferences/WebPreferencesInternal.yaml:
112         Migrates defaults and additional keys from Settings.yaml.
113
114 2020-10-09  Keith Miller  <keith_miller@apple.com>
115
116         Finalizers shouldn't run if events can't fire
117         https://bugs.webkit.org/show_bug.cgi?id=214508
118
119         Reviewed by Ryosuke Niwa.
120
121         Add a DropLockScope to make it easier to drop a lock for a short
122         piece of code.  Also, instead of deleting int Locker constructor
123         we should just delete the underlying type of the
124         NoLockingNecessary enum.
125
126         * wtf/Locker.h:
127         (WTF::Locker::~Locker):
128         (WTF::Locker::unlockEarly):
129         (WTF::Locker::Locker):
130         (WTF::Locker::operator=):
131         (WTF::Locker::unlock):
132         (WTF::DropLockForScope::DropLockForScope):
133         (WTF::DropLockForScope::~DropLockForScope):
134
135 2020-10-08  Yusuke Suzuki  <ysuzuki@apple.com>
136
137         Unreviewed, reland r268170
138         https://bugs.webkit.org/show_bug.cgi?id=217460
139
140         * wtf/PlatformRegisters.cpp:
141         (WTF::threadStateLRInternal):
142         (WTF::threadStatePCInternal):
143         * wtf/PtrTag.h:
144         (WTF::tagCodePtr):
145         (WTF::untagCodePtr):
146         (WTF::assertIsCFunctionPtr):
147         (WTF::assertIsNullOrCFunctionPtr):
148         (WTF::assertIsNotTagged):
149         (WTF::assertIsTagged):
150         (WTF::assertIsNullOrTagged):
151         (WTF::isTaggedWith):
152         (WTF::assertIsTaggedWith):
153         (WTF::assertIsNullOrTaggedWith):
154         (WTF::tagCFunctionPtr):
155         (WTF::tagCFunction):
156         (WTF::untagCFunctionPtr):
157         (WTF::tagInt):
158
159 2020-10-08  Commit Queue  <commit-queue@webkit.org>
160
161         Unreviewed, reverting r268170 and r268190.
162         https://bugs.webkit.org/show_bug.cgi?id=217502
163
164         Crash on ARM64E exclusively
165
166         Reverted changesets:
167
168         "[JSC] Restrict more ptr-tagging and avoid using
169         OperationPtrTag for JIT code"
170         https://bugs.webkit.org/show_bug.cgi?id=217460
171         https://trac.webkit.org/changeset/268170
172
173         "Unreviewed, build fix for ARM64E"
174         https://bugs.webkit.org/show_bug.cgi?id=217460
175         https://trac.webkit.org/changeset/268190
176
177 2020-10-08  Ryosuke Niwa  <rniwa@webkit.org>
178
179         Make it possible to send an arbitrary IPC message from JavaScript
180         https://bugs.webkit.org/show_bug.cgi?id=217423
181         <rdar://problem/69969351>
182
183         Reviewed by Geoffrey Garen.
184
185         Added a compile time flag (ENABLE_IPC_TESTING_API) and a runtime flag (IPCTestingAPIEnabled)
186         for the JavaScript API to test IPC.
187
188         * Scripts/GeneratePreferences.rb:
189         (Preference::nameLower): Keep IPC uppercase.
190         * Scripts/Preferences/WebPreferencesInternal.yaml: Added IPCTestingAPIEnabled.
191         * wtf/PlatformEnable.h: Added ENABLE_IPC_TESTING_API.
192
193 2020-10-08  Alex Christensen  <achristensen@webkit.org>
194
195         REGRESSION (r267763): [ iOS wk2 ] http/tests/in-app-browser-privacy/non-app-bound-domain-does-not-get-app-bound-session.html is a constant failure
196         https://bugs.webkit.org/show_bug.cgi?id=217386
197
198         Reviewed by Brent Fulgham.
199
200         * Scripts/Preferences/WebPreferencesDebug.yaml:
201
202 2020-10-08  Yusuke Suzuki  <ysuzuki@apple.com>
203
204         Unreviewed, build fix for ARM64E
205         https://bugs.webkit.org/show_bug.cgi?id=217460
206
207         * wtf/PtrTag.h:
208         (WTF::tagCodePtr):
209         (WTF::untagCodePtr):
210         (WTF::assertIsCFunctionPtr):
211         (WTF::assertIsNullOrCFunctionPtr):
212         (WTF::assertIsNotTagged):
213         (WTF::assertIsTagged):
214         (WTF::assertIsNullOrTagged):
215         (WTF::isTaggedWith):
216         (WTF::assertIsTaggedWith):
217         (WTF::assertIsNullOrTaggedWith):
218
219 2020-10-07  Yusuke Suzuki  <ysuzuki@apple.com>
220
221         [JSC] Restrict more ptr-tagging and avoid using OperationPtrTag for JIT code
222         https://bugs.webkit.org/show_bug.cgi?id=217460
223
224         Reviewed by Saam Barati.
225
226         * wtf/PlatformRegisters.cpp:
227         (WTF::threadStateLRInternal):
228         (WTF::threadStatePCInternal):
229         * wtf/PtrTag.h:
230         (WTF::tagCFunctionPtr):
231         (WTF::tagCFunction):
232         (WTF::untagCFunctionPtr):
233         (WTF::tagInt):
234         (WTF::isTaggedWith):
235         (WTF::assertIsTaggedWith):
236         (WTF::assertIsNullOrTaggedWith):
237
238 2020-10-07  Keith Rollin  <krollin@apple.com>
239
240         Update post-processing rules for headers to not unnecessarily change timestamps
241         https://bugs.webkit.org/show_bug.cgi?id=217371
242         <rdar://problem/69992230>
243
244         Reviewed by Darin Adler.
245
246         Under XCBuild, the scripts employed in custom build rules can be
247         invoked in innocuous situations. A common example is when the user is
248         building from the command-line and they change the `make` output from
249         stdout to a file, or vice-versa. Changing the output changes the
250         setting of the COLOR_DIAGNOSTICS environment variable, which is enough
251         to cause XCBuild to think something is different and that the custom
252         build rule needs to be invoked. For the script's part, nothing
253         significant has changed, yet it post-processes the header files,
254         causing their modification dates to change, causing downstream
255         rebuilds to occur.
256
257         Fix this problem by adopting an approach that doesn't modify the
258         post-processed header files unless their contents actually change.
259
260         * Scripts/GeneratePreferences.rb:
261
262 2020-10-07  Devin Rousso  <drousso@apple.com>
263
264         Add missing `#define` for `PENCILKIT_TEXT_INPUT` flag
265         https://bugs.webkit.org/show_bug.cgi?id=217436
266         <rdar://problem/69720219>
267
268         Reviewed by Wenson Hsieh.
269
270         * wtf/PlatformHave.h:
271
272 2020-10-07  Tadeu Zagallo  <tzagallo@apple.com>
273
274         Add maximum depth check to RedBlackTree
275         https://bugs.webkit.org/show_bug.cgi?id=217249
276         <rdar://problem/69432957>
277
278         Reviewed by Saam Barati.
279
280         We limit all tree traversals to 128 levels deep. That's a very conservative upper bound that
281         would work for a tree that used all of the available address space.
282
283         * wtf/RedBlackTree.h:
284
285 2020-10-07  Aditya Keerthi  <akeerthi@apple.com>
286
287         REGRESSION: Date/time pickers are not displayed in UIWebViews
288         https://bugs.webkit.org/show_bug.cgi?id=217341
289         <rdar://problem/66881739>
290
291         Reviewed by Wenson Hsieh.
292
293         Date/time inputs were incorrectly disabled by default on
294         PLATFORM(IOS_FAMILY) in WebPreferencesInternal.
295
296         * Scripts/Preferences/WebPreferencesInternal.yaml:
297
298 2020-10-06  Simon Fraser  <simon.fraser@apple.com>
299
300         Redundant rendering updates can be scheduled from inside Page::updateRendering()
301         https://bugs.webkit.org/show_bug.cgi?id=216726
302
303         Reviewed by Tim Horton.
304
305         Make it possible to dump Vectors with inline capacity.
306
307         * wtf/text/TextStream.h:
308         (WTF::operator<<):
309
310 2020-10-06  Youenn Fablet  <youenn@apple.com>
311
312         Enable video capture in WebProcess by default on MacOS
313         https://bugs.webkit.org/show_bug.cgi?id=217385
314         <rdar://problem/69999542>
315
316         Reviewed by Sam Weinig.
317
318         * Scripts/Preferences/WebPreferencesInternal.yaml:
319
320 2020-10-06  Alex Christensen  <achristensen@webkit.org>
321
322         Align URL setters with reasonably behaving other browsers
323         https://bugs.webkit.org/show_bug.cgi?id=217366
324
325         Reviewed by Youenn Fablet.
326
327         Firefox ignores everything after '/', '?', '#', and '\' in special URL schemes when setting the host to a new value.
328         Chrome doesn't add another '/' to the beginning of the path if it's a special scheme and starts with '\'.
329         I think these behaviors make sense, and aligning with these behaviors makes it so there are no tests in url-setters.html
330         that any other browser passes that we don't also pass.
331         Once https://github.com/whatwg/url/issues/551 is resolved this will also be reflected in spec wording.
332
333         * wtf/URL.cpp:
334         (WTF::URL::hasSpecialScheme const):
335         (WTF::forwardSlashHashOrQuestionMark):
336         (WTF::slashHashOrQuestionMark):
337         (WTF::URL::setHost):
338         (WTF::URL::setPath):
339         * wtf/URL.h:
340
341 2020-10-05  Sam Weinig  <weinig@apple.com>
342
343         Add implementation of <filesystem> to WTF for macOS 10.14
344         https://bugs.webkit.org/show_bug.cgi?id=217302
345
346         Reviewed by Darin Adler.
347
348         Imports a copy of <filesystem> and its needed implementation files
349         from libc++ (r343838) and modifies them to build outside of  libc++. 
350         This is only needed and only built for versions of macOS < 10.15
351         and can be dropped when we require 10.15.
352
353         * WTF.xcodeproj/project.pbxproj:
354         * wtf/CMakeLists.txt:
355         * wtf/StdFilesystem.cpp: Added.
356         * wtf/StdFilesystem.h: Added.
357         * LICENSE-libc++.txt: Added.
358
359 2020-10-05  Rob Buis  <rbuis@igalia.com>
360
361         WebKit doesn't parse "#" as delimiter for fragment identifier in data URIs
362         https://bugs.webkit.org/show_bug.cgi?id=68089
363
364         Reviewed by Alex Christensen, Ryosuke Niwa, and Darin Adler.
365
366         * wtf/URL.h:
367         * wtf/spi/darwin/dyldSPI.h:
368
369 2020-10-05  Aditya Keerthi  <akeerthi@apple.com>
370
371         [Contact Picker API] Introduce bindings for the Contact Picker API
372         https://bugs.webkit.org/show_bug.cgi?id=216793
373         <rdar://problem/69317957>
374
375         Reviewed by Wenson Hsieh.
376
377         * Scripts/Preferences/WebPreferencesExperimental.yaml:
378
379         Add experimental preference for the Contact Picker API.
380
381 2020-10-05  Sam Weinig  <weinig@apple.com>
382
383         Remove support for enabling subpixel CSSOM values, it's off by default everywhere and known to be not-compatible with the web
384         https://bugs.webkit.org/show_bug.cgi?id=217300
385
386         Reviewed by Simon Fraser.
387
388         Remove preference for toggling subpixel CSSOM values.
389
390         * Scripts/Preferences/WebPreferences.yaml:
391
392 2020-10-05  Alex Christensen  <achristensen@webkit.org>
393
394         URLParser should fail to parse URLs with hosts containing invalid punycode encodings
395         https://bugs.webkit.org/show_bug.cgi?id=217285
396
397         Reviewed by Darin Adler.
398
399         URLParser has a fast path for parsing hosts that are all ASCII, but that does not validate hosts that are invalid punycode, such as "xn--".
400         Since all punycode encoded strings start with "xn--", if the input string starts with "xn--" then skip the fast path and let ICU decide if it's valid.
401
402         * wtf/URLParser.cpp:
403         (WTF::URLParser::domainToASCII):
404         (WTF::URLParser::startsWithXNDashDash):
405         (WTF::URLParser::parseHostAndPort):
406         * wtf/URLParser.h:
407
408 2020-10-05  Alex Christensen  <achristensen@webkit.org>
409
410         When appending a Windows drive letter to a file URL, remove any path we may have copied from the base URL
411         https://bugs.webkit.org/show_bug.cgi?id=217284
412
413         Reviewed by Darin Adler.
414
415         This fixes a web platform test and adds another to verify that we remove the entire path, not just the last segment like we do with ..
416         Edge has implemented this, and in order to have a platform-independent URL we should do it too.
417
418         * wtf/URLParser.cpp:
419         (WTF::URLParser::isWindowsDriveLetter):
420         (WTF::URLParser::appendWindowsDriveLetter):
421         (WTF::URLParser::parse):
422
423 2020-10-05  Alex Christensen  <achristensen@webkit.org>
424
425         Fix UTF-8 encoding in URL parsing
426         https://bugs.webkit.org/show_bug.cgi?id=217289
427
428         Reviewed by Darin Adler.
429
430         This matches the behavior of Firefox and the Unicode and whatwg encoding specifications.
431
432         * wtf/URLParser.cpp:
433         (WTF::URLParser::utf8PercentEncode):
434         (WTF::URLParser::utf8QueryEncode):
435         (WTF::URLParser::parseHostAndPort):
436
437 2020-10-03  Yusuke Suzuki  <ysuzuki@apple.com>
438
439         [JSC] Introduce JITOperationList to validate JIT-caged pointers
440         https://bugs.webkit.org/show_bug.cgi?id=217261
441
442         Reviewed by Saam Barati.
443
444         * wtf/PlatformCallingConventions.h:
445         * wtf/PlatformEnable.h:
446
447 2020-10-03  Alex Christensen  <achristensen@webkit.org>
448
449         Add extra slash after empty host copied from base URL if path is also empty
450         https://bugs.webkit.org/show_bug.cgi?id=217278
451
452         Reviewed by Darin Adler.
453
454         * wtf/URLParser.cpp:
455         (WTF::URLParser::parse):
456
457 2020-10-03  Alex Christensen  <achristensen@webkit.org>
458
459         "http:" should not be a valid URL
460         https://bugs.webkit.org/show_bug.cgi?id=217250
461
462         Reviewed by Brady Eidson.
463
464         Same with https, ws, wss, and for some reason ftp.
465         This matches the URL specification and Chrome and Firefox.
466
467         * wtf/URLParser.cpp:
468         (WTF::URLParser::parse):
469
470 2020-10-03  Aditya Keerthi  <akeerthi@apple.com>
471
472         [macOS] Enable date, time, and datetime-local input types
473         https://bugs.webkit.org/show_bug.cgi?id=217229
474         <rdar://problem/69882757>
475
476         Reviewed by Sam Weinig.
477
478         * Scripts/Preferences/WebPreferencesInternal.yaml:
479
480 2020-10-02  Alex Christensen  <achristensen@webkit.org>
481
482         Copy host from base file URL
483         https://bugs.webkit.org/show_bug.cgi?id=217170
484
485         Reviewed by Brady Eidson.
486
487         This matches Chrome and the URL specification.
488         Covered by newly passing web platform tests.
489
490         I also updated the web platform tests from https://github.com/web-platform-tests/wpt/pull/25716
491         which aligns with Safari in cases except copying of the host from base file URLs.
492
493         The implementation pushes copying from the base URL downstream in the parsing process to where it is in the URL specification
494         so that we can properly decide how much of the base URL to copy and so we can copy it into the right place in the result URL.
495
496         I also updated an assertion that makes sure that we re-use the input String if possible because there are cases where we copy
497         part of the parent URL, which is a "syntax violation" (meaning we copy the string parts and assemble a new one), then re-assemble
498         a new String that is equal to the input string.  This is not a problem, it just needed to be reflected in the assertion.
499
500         * wtf/URLParser.cpp:
501         (WTF::URLParser::URLParser):
502         (WTF::URLParser::parse):
503
504 2020-10-02  Youenn Fablet  <youenn@apple.com>
505
506         Add AVAssetWriter SPI header
507         https://bugs.webkit.org/show_bug.cgi?id=217169
508         <rdar://problem/69793050>
509
510         Reviewed by Eric Carlson.
511
512         * wtf/PlatformHave.h:
513         Remove dependency on AVAssetWriter_private.h.
514         Introduce HAVE_AVASSETWRITERDELEGATE_API for older OSes that only have delegate as SPI.
515
516 2020-10-01  Truitt Savell  <tsavell@apple.com>
517
518         Unreviewed, reverting r267841.
519
520         Broke Catalina Builds
521
522         Reverted changeset:
523
524         "Add AVAssetWriter SPI header"
525         https://bugs.webkit.org/show_bug.cgi?id=217169
526         https://trac.webkit.org/changeset/267841
527
528 2020-10-01  Youenn Fablet  <youenn@apple.com>
529
530         Add AVAssetWriter SPI header
531         https://bugs.webkit.org/show_bug.cgi?id=217169
532         <rdar://problem/69793050>
533
534         Reviewed by Eric Carlson.
535
536         * wtf/PlatformHave.h:
537         Remove dependency on AVAssetWriter_private.h
538
539 2020-10-01  Alex Christensen  <achristensen@webkit.org>
540
541         Non-special URLs are not idempotent
542         https://bugs.webkit.org/show_bug.cgi?id=215762
543
544         Reviewed by Tim Horton.
545
546         https://github.com/whatwg/url/pull/505 added an interesting edge case to the URL serialization:
547         "If url’s host is null, url’s path’s size is greater than 1, and url’s path[0] is the empty string, then append U+002F (/) followed by U+002E (.) to output."
548         The problem was that URLs like "a:/a/..//a" would be parsed into "a://a" with a pathname of "//a" and an empty host.  If "a://a" was then reparsed, it would again have an href of "a://a"
549         but its host would be "a" and it would have an empty path.  There is consensus that URL parsing should be idempotent, so we need to do something different here.
550         According to https://github.com/whatwg/url/issues/415#issuecomment-419197290 this follows what Edge did (and then subsequently abandoned when they switched to Chromium)
551         to make URL parsing idempotent by adding "/." before the path in the edge case of a URL with a non-special scheme (not http, https, wss, etc.) and a null host and a non-empty path that
552         has an empty first segment.  All the members of the URL remain unchanged except the full serialization (href).  This is not important in practice, but important in theory.
553
554         Our URL parser tries very hard to use the exact same WTF::String object given as input if it can.  However, this step is better implemented as a post-processing step that will almost never happen
555         because otherwise we would have to parse the entire path twice to find out if we need to add "./" or if the "./" that may have already been there needs to stay.  This is illustrated with the test URL
556         "t:/.//p/../../../..//x" which does need the "./".
557
558         In the common case, this adds one well-predicted branch to URL parsing, so I expect performance to be unaffected.  Since this is such a rare edge case of URLs, I expect no compatibility problems.
559
560         * wtf/URL.cpp:
561         (WTF::URL::pathStart const):
562         * wtf/URL.h:
563         (WTF::URL::pathStart const): Deleted.
564         * wtf/URLParser.cpp:
565         (WTF::URLParser::copyURLPartsUntil):
566         (WTF::URLParser::URLParser):
567         (WTF::URLParser::needsNonSpecialDotSlash const):
568         (WTF::URLParser::addNonSpecialDotSlash):
569         * wtf/URLParser.h:
570
571 2020-09-30  Commit Queue  <commit-queue@webkit.org>
572
573         Unreviewed, reverting r267795.
574         https://bugs.webkit.org/show_bug.cgi?id=217135
575
576         Incorrect fix.
577
578         Reverted changeset:
579
580         "REGRESSION(r259582): Build fails on aarch64 Linux with WebKit
581         2.30.1 on LLIntOffsetsExtractor.cpp.o"
582         https://bugs.webkit.org/show_bug.cgi?id=217079
583         https://trac.webkit.org/changeset/267795
584
585 2020-09-30  Mike Gorse  <mgorse@suse.com>
586
587         REGRESSION(r259582): Build fails on aarch64 Linux with WebKit 2.30.1 on LLIntOffsetsExtractor.cpp.o
588         https://bugs.webkit.org/show_bug.cgi?id=217079
589
590         Reviewed by Michael Catanzaro.
591
592         * wtf/PlatformEnable.h: Only define USE_JUMP_ISLANDS if JIT is enabled.
593
594 2020-09-30  Alexander Mikhaylenko  <alexm@gnome.org>
595
596         [GTK] Chassis type check fails if the value is quoted
597         https://bugs.webkit.org/show_bug.cgi?id=217123
598
599         Reviewed by Carlos Garcia Campos.
600
601         Sometimes the chassis type can be quoted, in this case we'll fail to
602         parse it and fall back to desktop type. Unquote the string before
603         attempting to parse it.
604
605         * wtf/glib/ChassisType.cpp:
606         (WTF::readMachineInfoChassisType):
607
608 2020-09-29  Sam Weinig  <weinig@apple.com>
609
610         [Preferences] Adopt shared preferences configuration and script in WebKit
611         https://bugs.webkit.org/show_bug.cgi?id=217075
612
613         Reviewed by Darin Adler.
614
615         * Scripts/GeneratePreferences.rb:
616         Simplify input by passing the templates as complete paths, rather than by name + template directory.
617
618         * Scripts/Preferences/WebPreferences.yaml:
619         * Scripts/Preferences/WebPreferencesDebug.yaml:
620         * Scripts/Preferences/WebPreferencesExperimental.yaml:
621         * Scripts/Preferences/WebPreferencesInternal.yaml:
622         Fix some mistakes / things left out to make WebKit defaults and names match current WebKit names and defaults.
623
624         * wtf/CMakeLists.txt:
625         Copy all the preferences and scripts into WTF_SCRIPTS_DIR so it can be accessed by WebKit.
626
627 2020-09-29  Alex Christensen  <achristensen@webkit.org>
628
629         Remove plist-based ResourceLoadStatistics storage, which has been replaced by database-based storage
630         https://bugs.webkit.org/show_bug.cgi?id=217063
631
632         Reviewed by John Wilander.
633
634         * Scripts/Preferences/WebPreferencesInternal.yaml:
635
636 2020-09-28  Yusuke Suzuki  <ysuzuki@apple.com>
637
638         Use JSC_DECLARE_JIT_OPERATION / JSC_DECLARE_CUSTOM_GETTER / JSC_DECLARE_CUSTOM_SETTER
639         https://bugs.webkit.org/show_bug.cgi?id=217071
640
641         Reviewed by Keith Miller.
642
643         Add the following macros.
644
645             1. JSC_DECLARE_JIT_OPERATION
646             2. JSC_DEFINE_JIT_OPERATION
647             3. JSC_DECLARE_CUSTOM_GETTER
648             4. JSC_DEFINE_CUSTOM_GETTER
649             5. JSC_DECLARE_CUSTOM_SETTER
650             6. JSC_DEFINE_CUSTOM_SETTER
651
652         * wtf/PlatformCallingConventions.h:
653
654 2020-09-28  Sam Weinig  <weinig@apple.com>
655
656         [Preferences] Move GeneratePreferences.rb and yaml configuration files to WTF to be shared
657         https://bugs.webkit.org/show_bug.cgi?id=217056
658
659         Reviewed by Darin Adler.
660
661         Move GeneratePreferences.rb and WebPreferences*.yaml files from WebKitLegacy to WTF, and install them into the existing
662         $SDKROOT/usr/local/install/wtf/Scripts for use by down stack projects.
663
664         * Scripts/GeneratePreferences.rb: Copied from Source/WebKitLegacy/mac/Scripts/GeneratePreferences.rb.
665         * Scripts/Preferences: Added.
666         * Scripts/Preferences/WebPreferences.yaml: Copied from Source/WebKitLegacy/mac/WebView/WebPreferences.yaml.
667         * Scripts/Preferences/WebPreferencesDebug.yaml: Copied from Source/WebKitLegacy/mac/WebView/WebPreferencesDebug.yaml.
668         * Scripts/Preferences/WebPreferencesExperimental.yaml: Copied from Source/WebKitLegacy/mac/WebView/WebPreferencesExperimental.yaml.
669         * Scripts/Preferences/WebPreferencesInternal.yaml: Copied from Source/WebKitLegacy/mac/WebView/WebPreferencesInternal.yaml.
670         * WTF.xcodeproj/project.pbxproj:
671
672 2020-09-25  Yusuke Suzuki  <ysuzuki@apple.com>
673
674         [JSC] Introduce JSC_DECLARE_HOST_FUNCTION / JSC_DEFINE_HOST_FUNCTION to make host function definition easy-to-scanned for JIT-caging
675         https://bugs.webkit.org/show_bug.cgi?id=216966
676
677         Reviewed by Saam Barati.
678
679         Rename JSC_HOST_CALL to JSC_HOST_CALL_ATTRIBUTE, and introduce JSC_DECLARE_HOST_FUNCTION / JSC_DEFINE_HOST_FUNCTION.
680         We also introduce JSC_ANNOTATE_HOST_FUNCTION if the function is not defined as free-function[1].
681
682         [1]: https://stackoverflow.com/questions/4861914/what-is-the-meaning-of-the-term-free-function-in-c
683
684         * wtf/PlatformCallingConventions.h:
685
686 2020-09-25  Chris Dumez  <cdumez@apple.com>
687
688         Get rid of AudioNode::RefType
689         https://bugs.webkit.org/show_bug.cgi?id=216945
690
691         Reviewed by Darin Adler.
692
693         Add third template parameter to RefPtr allowing to define the traits
694         from incrementing / decrementing the refcount. The default traits
695         call ref() / deref() but this can now be customized to call other
696         functions.
697
698         * wtf/CompactRefPtrTuple.h:
699         * wtf/Forward.h:
700         * wtf/RefPtr.h:
701         (WTF::DefaultRefDerefTraits::refIfNotNull):
702         (WTF::DefaultRefDerefTraits::derefIfNotNull):
703         (WTF::RefPtr::RefPtr):
704         (WTF::RefPtr::~RefPtr):
705         (WTF::V>::RefPtr):
706         (WTF::V>::leakRef):
707         (WTF::=):
708         (WTF::V>::swap):
709         (WTF::swap):
710         (WTF::operator==):
711         (WTF::operator!=):
712         (WTF::static_pointer_cast):
713         (WTF::adoptRef):
714         (WTF::is):
715
716 2020-09-25  Antti Koivisto  <antti@apple.com>
717
718         [LFC][Integration] Enable on Apple Windows port
719         https://bugs.webkit.org/show_bug.cgi?id=216928
720         <rdar://problem/69505961>
721
722         Reviewed by Zalan Bujtas.
723
724         * wtf/PlatformEnableWinApple.h:
725
726 2020-09-24  Keith Miller  <keith_miller@apple.com>
727
728         CSS angle unit conversions should consistently use the same associativity
729         https://bugs.webkit.org/show_bug.cgi?id=216906
730
731         Reviewed by Simon Fraser.
732
733         Right now we inconsistently associate our floating point math for
734         angle unit conversions. In particular,
735         conversionToCanonicalUnitsScaleFactor expects there to be a single
736         fixed constant we can multiply by to change units. However, the
737         various conversion functions in WTF are not associated in this
738         way. e.g. rad2deg does ((radian * 180) / pi) rather than
739         (radian  *(180 / pi)). Since FP math is NOT associative these
740         produce different results. For example, 1.57 radians is
741         89.954373835539258 degrees in the first case but
742         89.954373835539243 in the second.
743
744         This patch changes those WTF functions to operate on a single
745         scale factor when converting to/from the canonical
746         unit. Conversions between non-canonical units first convert to the
747         canonical unit (degree).
748
749         * wtf/MathExtras.h:
750         (deg2rad):
751         (rad2deg):
752         (deg2grad):
753         (grad2deg):
754         (deg2turn):
755         (turn2deg):
756         (rad2grad):
757         (grad2rad):
758
759 2020-09-24  Antti Koivisto  <antti@apple.com>
760
761         [LFC][Integration] Enable on Apple Windows port
762         https://bugs.webkit.org/show_bug.cgi?id=216928
763
764         Reviewed by Sam Weinig.
765
766         * wtf/PlatformEnableWinApple.h:
767
768         For consistency.
769
770 2020-09-23  Fujii Hironori  <Hironori.Fujii@sony.com>
771
772         Remove ENABLE_SVG_FONTS macro
773         https://bugs.webkit.org/show_bug.cgi?id=216850
774
775         Reviewed by Don Olmstead.
776
777         * wtf/PlatformEnable.h:
778
779 2020-09-23  Youenn Fablet  <youenn@apple.com>
780
781         Add support for HTMLMediaElement.setSinkId
782         https://bugs.webkit.org/show_bug.cgi?id=216696
783
784         Reviewed by Eric Carlson.
785
786         Add HAVE_AUDIO_OUTPUT_DEVICE_UNIQUE_ID.
787         * wtf/PlatformHave.h:
788
789 2020-09-21  Yusuke Suzuki  <ysuzuki@apple.com>
790
791         [JSC] BigInt should work with Map / Set
792         https://bugs.webkit.org/show_bug.cgi?id=216667
793
794         Reviewed by Robin Morisset.
795
796         * wtf/Hasher.h:
797         (WTF::Hasher::hash const):
798         (WTF::add):
799
800 2020-09-21  Mark Lam  <mark.lam@apple.com>
801
802         Move some LLInt globals into JSC::Config.
803         https://bugs.webkit.org/show_bug.cgi?id=216685
804         rdar://68964544
805
806         Reviewed by Keith Miller.
807
808         1. Introduce ConfigAlignment as a distinct value from ConfigSizeToProtect.
809            This is because ConfigSizeToProtect is now larger than 1 CeilingOnPageSize on
810            some platforms, but ConfigAlignment only needs to match CeilingOnPageSize.
811
812         2. Introduced ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD) to disable using the
813            unified g_config record for Windows ports.
814
815            This is needed because WTF is built as a DLL on Windows.  offlineasm does not
816            know how to resolve a DLL exported variable.  Additionally, the Windows ports
817            have never supported freezing of the Config record to begin with.  So, we're
818            working around this by disabling ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD)
819            for Windows.  This allows JSC to have its own g_jscConfig record, which solves
820            this issue for now.
821
822         * wtf/PlatformEnable.h:
823         * wtf/WTFConfig.cpp:
824         (WTF::Config::permanentlyFreeze):
825         * wtf/WTFConfig.h:
826
827 2020-09-18  Don Olmstead  <don.olmstead@sony.com>
828
829         [WebGPU] Add ENABLE(WHLSL_COMPILER) guard
830         https://bugs.webkit.org/show_bug.cgi?id=216713
831
832         Reviewed by Myles C. Maxfield.
833
834         Adds a default for ENABLE_WHLSL_COMPILER on Cocoa platforms.
835
836         * wtf/PlatformEnable.h:
837         * wtf/PlatformEnableCocoa.h:
838
839 2020-09-17  Devin Rousso  <drousso@apple.com>
840
841         Web Inspector: REGRESSION(r266885): fix open source build
842         https://bugs.webkit.org/show_bug.cgi?id=216675
843
844         Reviewed by Timothy Hatcher.
845
846         Add back methods used by `WebInspector.framework`.
847
848         * wtf/JSONValues.h:
849         * wtf/JSONValues.cpp:
850         (WTF::JSONImpl::Value::asDouble const): Added.
851         (WTF::JSONImpl::Value::asInteger const): Added.
852         (WTF::JSONImpl::Value::asString const): Added.
853         (WTF::JSONImpl::ObjectBase::getBoolean const): Added.
854         (WTF::JSONImpl::ObjectBase::getString const): Added.
855         (WTF::JSONImpl::ObjectBase::getObject const): Added.
856         (WTF::JSONImpl::ObjectBase::getArray const): Added.
857         (WTF::JSONImpl::ObjectBase::getValue const): Added.
858
859 2020-09-16  Stephan Szabo  <stephan.szabo@sony.com>
860
861         Remove ENABLE_METER_ELEMENT
862         https://bugs.webkit.org/show_bug.cgi?id=216582
863
864         Reviewed by Fujii Hironori.
865
866         With PlayStation finally planning to turn this on,
867         no ports had this disabled, so remove the enable flag.
868
869         * wtf/PlatformEnable.h:
870
871 2020-09-16  Alex Christensen  <achristensen@webkit.org>
872
873         Remove unneeded HAVE_FOUNDATION_WITH_SAVE_COOKIES_WITH_COMPLETION_HANDLER
874         https://bugs.webkit.org/show_bug.cgi?id=216572
875
876         Reviewed by Youenn Fablet.
877
878         * wtf/PlatformHave.h:
879
880 2020-09-15  David Kilzer  <ddkilzer@apple.com>
881
882         WebKit should support building with clang ThreadSanitizer enabled
883         <https://webkit.org/b/216318>
884         <rdar://problem/31615729>
885
886         Reviewed by Darin Adler.
887
888         This patch doesn't attempt to resolve every potential false
889         positive, but makes it easy to build WebKit with TSan enabled.
890
891         * WTF.xcodeproj/project.pbxproj:
892         * wtf/CMakeLists.txt:
893         - Add ThreadSanitizerSupport.h to the project.
894
895         * wtf/Compiler.h:
896         - Define TSAN_ENABLED and SUPPRESS_TSAN macros.
897
898         * wtf/Locker.h:
899         (WTF::Locker::~Locker):
900         (WTF::Locker::unlockEarly):
901         (WTF::Locker::operator=):
902         (WTF::Locker::lock):
903         - Instrument lock/unlock methods for ThreadSanitizer.
904
905         * wtf/ThreadSanitizerSupport.h: Add.
906         (AnnotateHappensBefore):
907         (AnnotateHappensAfter):
908         - Declare TSan runtime functions needed to annotate WTF::Locker.
909         (TSAN_ANNOTATE_HAPPENS_BEFORE):
910         (TSAN_ANNOTATE_HAPPENS_AFTER):
911         - Define macros used to call TSan runtime functions if TSan is
912           enabled.
913
914 2020-09-15  Myles C. Maxfield  <mmaxfield@apple.com>
915
916         [macOS Big Sur] CGFontRenderingGetFontSmoothingDisabled() is no longer useful
917         https://bugs.webkit.org/show_bug.cgi?id=216588
918         <rdar://problem/68657748>
919
920         Reviewed by Simon Fraser.
921
922         We can eliminate WebKit's use of it to eventually phase it out entirely.
923
924         * wtf/PlatformHave.h:
925
926 2020-09-12  Simon Fraser  <simon.fraser@apple.com>
927
928         Convert TextStream::FormattingFlags to an OptionSet<>
929         https://bugs.webkit.org/show_bug.cgi?id=216443
930
931         Reviewed by Darin Adler.
932
933         Use an OptionSet<> for FormattingFlags.
934
935         * wtf/text/TextStream.h:
936         (WTF::TextStream::TextStream):
937         (WTF::TextStream::formattingFlags const):
938         (WTF::TextStream::setFormattingFlags):
939         (WTF::TextStream::hasFormattingFlag const):
940
941 2020-09-11  Yusuke Suzuki  <ysuzuki@apple.com>
942
943         [JSC] Canonicalize "true" unicode extension type value to ""
944         https://bugs.webkit.org/show_bug.cgi?id=216224
945
946         Reviewed by Ross Kirsling.
947
948         * wtf/text/StringView.h:
949         (WTF::StringView::characterAt const):
950         (WTF::StringView::operator[] const):
951
952 2020-09-11  Myles C. Maxfield  <mmaxfield@apple.com>
953
954         [Cocoa] Migrate CoreText-specific code from ***Cocoa.mm to ***CoreText.cpp
955         https://bugs.webkit.org/show_bug.cgi?id=216400
956
957         Reviewed by Tim Horton.
958
959         * wtf/PlatformUse.h:
960
961 2020-09-11  Kate Cheney  <katherine_cheney@apple.com>
962
963         Followup to Bug 215027: address comments to improve APP_BOUND_DOMAINS macro use
964         https://bugs.webkit.org/show_bug.cgi?id=216373
965         <rdar://problem/68645704>
966
967         Reviewed by Darin Adler.
968
969         Remove unnecessary default. All enable flags are off by default.
970
971         * wtf/PlatformEnable.h:
972
973 2020-09-10  Ben Nham  <nham@apple.com>
974
975         Disable hardware JPEG decoding on x86 Mac
976         https://bugs.webkit.org/show_bug.cgi?id=216377
977
978         Reviewed by Geoff Garen.
979
980         Add macros to disable HW JPEG decoding on x86 Macs and indicate the presence of a new MediaToolbox SPI.
981         (The latter is to prevent unnecessary dlopen/dlsym calls since we soft-link MediaToolbox.)
982
983         * wtf/PlatformEnableCocoa.h:
984         * wtf/PlatformHave.h:
985
986 2020-09-10  Devin Rousso  <drousso@apple.com>
987
988         Web Inspector: modernize generated backend protocol code
989         https://bugs.webkit.org/show_bug.cgi?id=216302
990         <rdar://problem/68547649>
991
992         Reviewed by Brian Burg.
993
994         * wtf/JSONValues.h:
995         (WTF::JSONImpl::ObjectBase::setValue):
996         (WTF::JSONImpl::ObjectBase::setObject):
997         (WTF::JSONImpl::ObjectBase::setArray):
998         (WTF::JSONImpl::ArrayBase::pushValue):
999         (WTF::JSONImpl::ArrayBase::pushObject):
1000         (WTF::JSONImpl::ArrayBase::pushArray):
1001         (WTF::JSONImpl::ArrayOf::ArrayOf): Deleted.
1002         (WTF::JSONImpl::ArrayOf::castedArray): Deleted.
1003         (WTF::JSONImpl::ArrayOf::addItem): Deleted.
1004         (WTF::JSONImpl::ArrayOf::create): Deleted.
1005         * wtf/JSONValues.cpp:
1006         (WTF::JSONImpl::Value::asValue):
1007         (WTF::JSONImpl::Value::asObject):
1008         (WTF::JSONImpl::Value::asArray):
1009         (WTF::JSONImpl::Value::parseJSON):
1010         (WTF::JSONImpl::Value::asBoolean const):
1011         (WTF::JSONImpl::Value::asDouble const):
1012         (WTF::JSONImpl::Value::asInteger const):
1013         (WTF::JSONImpl::Value::asString const):
1014         (WTF::JSONImpl::ObjectBase::asObject):
1015         (WTF::JSONImpl::ObjectBase::memoryCost const):
1016         (WTF::JSONImpl::ObjectBase::getBoolean const):
1017         (WTF::JSONImpl::ObjectBase::getDouble const):
1018         (WTF::JSONImpl::ObjectBase::getInteger const):
1019         (WTF::JSONImpl::ObjectBase::getString const):
1020         (WTF::JSONImpl::ObjectBase::getObject const):
1021         (WTF::JSONImpl::ObjectBase::getArray const):
1022         (WTF::JSONImpl::ObjectBase::getValue const):
1023         (WTF::JSONImpl::ObjectBase::ObjectBase):
1024         (WTF::JSONImpl::ArrayBase::asArray):
1025         (WTF::JSONImpl::ArrayBase::writeJSON const):
1026         (WTF::JSONImpl::ArrayBase::ArrayBase):
1027         (WTF::JSONImpl::ArrayBase::get const):
1028         (WTF::JSONImpl::ArrayBase::memoryCost const):
1029         (WTF::JSONImpl::ObjectBase::openAccessors): Deleted.
1030         Use `Ref&&` wherever possible and `Optional` instead of an out parameter for `get*`/`as*`
1031         so that values can be more easily manipulated and can be confidently assumed to exist.
1032         Remove unused overloads and allow subclasses to call `as*` instead of `openAccessors` as
1033         they're effectively the same thing.
1034
1035 2020-09-10  Jer Noble  <jer.noble@apple.com>
1036
1037         [Cocoa] PERF: Don't instantiate AVPlayer-based audio decoders or renderers if an element is initially muted.
1038         https://bugs.webkit.org/show_bug.cgi?id=216299
1039
1040         Reviewed by Eric Carlson.
1041
1042         * wtf/PlatformHave.h:
1043
1044 2020-09-10  Tim Horton  <timothy_horton@apple.com>
1045
1046         Upstream additional linked-on-or-after version checks
1047         https://bugs.webkit.org/show_bug.cgi?id=216365
1048
1049         Reviewed by Sam Weinig.
1050
1051         * wtf/spi/darwin/dyldSPI.h:
1052
1053 2020-09-10  Kate Cheney  <katherine_cheney@apple.com>
1054
1055         Clean up App-Bound Domains code to only compile for iOS with its own macro
1056         https://bugs.webkit.org/show_bug.cgi?id=215027
1057         <rdar://problem/63688232>
1058
1059         Reviewed by Darin Adler.
1060
1061         Define a new APP_BOUND_DOMAINS preprocessor macro to more aptly gate
1062         App Bound Domains behavior.
1063
1064         * wtf/PlatformEnable.h:
1065         * wtf/PlatformEnableCocoa.h:
1066
1067 2020-09-10  Said Abou-Hallawa  <sabouhallawa@apple.com>
1068
1069         [CG] REGRESSION (Big Sur): A GIF image with a finite loopCount loops an extra cycle
1070         https://bugs.webkit.org/show_bug.cgi?id=216018
1071         <rdar://problem/68304035>
1072
1073         Reviewed by Tim Horton.
1074
1075         Add a new macro for the new accurate behavior of CGImageSource.
1076
1077         Unrelated change: Fix the conditions for enabling the WebP images.
1078
1079         * wtf/PlatformHave.h:
1080
1081 2020-09-09  Ryosuke Niwa  <rniwa@webkit.org>
1082
1083         Simplify OptionSet::set
1084         https://bugs.webkit.org/show_bug.cgi?id=216335
1085
1086         Reviewed by Said Abou-Hallawa.
1087
1088         Simplified the implementation of OptionSet::set since we've verified that both clang and gcc
1089         generate comparable code in x86_64 and clang does the same for arm64.
1090
1091         * wtf/OptionSet.h:
1092         (WTF::OptionSet::set):
1093
1094 2020-09-09  Wenson Hsieh  <wenson_hsieh@apple.com>
1095
1096         Text copied and pasted from Mac Catalyst apps appears larger than expected
1097         https://bugs.webkit.org/show_bug.cgi?id=215971
1098         <rdar://problem/65768907>
1099
1100         Reviewed by Tim Horton.
1101
1102         Add a new flag to guard the presence of `_UIApplicationCatalystUserInterfaceIdiom`,
1103         `_UIApplicationCatalystScaleFactor`, and `_UIApplicationCatalystRequestViewServiceIdiomAndScaleFactor`.
1104
1105         * wtf/PlatformHave.h:
1106
1107 2020-09-08  Ryosuke Niwa  <rniwa@webkit.org>
1108
1109         Node flags should be an OptionSet
1110         https://bugs.webkit.org/show_bug.cgi?id=216305
1111
1112         Reviewed by Antti Koivisto.
1113
1114         * wtf/OptionSet.h:
1115         (WTF::OptionSet::set): Added.
1116
1117 2020-09-06  Ryosuke Niwa  <rniwa@webkit.org>
1118
1119         Make CompactUniquePtrTuple actually work with subclassing and custom deleter
1120         https://bugs.webkit.org/show_bug.cgi?id=216225
1121
1122         Reviewed by Darin Adler.
1123
1124         Fixed bugs in CompactUniquePtrTuple which prevented subclassing and custom deleter to work.
1125
1126         * wtf/CompactPointerTuple.h:
1127         (WTF::CompactPointerTuple::CompactPointerTuple): Added move constructor with implicit cast
1128         of a convertible pointer type.
1129         * wtf/CompactUniquePtrTuple.h:
1130         (WTF::makeCompactUniquePtr): Added the missing deleter from the return type.
1131         (WTF::CompactUniquePtrTuple::CompactUniquePtrTuple): Allow Deleter to be different if it's
1132         the default deleter in the move constructor so that CompactUniquePtrTuple<U, Type> could be
1133         moved to CompactUniquePtrTuple<T, Type> if U is convertible to T without having to specify
1134         the same deleter (std::default_delete<U> is not same as std::default_delete<T> but allow it).
1135         (WTF::CompactUniquePtrTuple::operator=): Ditto.
1136         (WTF::CompactUniquePtrTuple::setPointer): Ditto from std::unique_ptr.
1137         (WTF::CompactUniquePtrTuple): Friend declare all other specializations of CompactUniquePtrTuple
1138         so that the above fixes work.
1139
1140 2020-09-06  Myles C. Maxfield  <mmaxfield@apple.com>
1141
1142         [iOS] attachmentActionFont() Needs to use kCTFontSymbolicTrait: @(kCTFontTraitTightLeading | kCTFontTraitEmphasized) to get the short emphasized footnote font
1143         https://bugs.webkit.org/show_bug.cgi?id=215707
1144         <rdar://problem/63930892>
1145
1146         Reviewed by Darin Adler.
1147
1148         * wtf/PlatformHave.h:
1149
1150 2020-09-06  Myles C. Maxfield  <mmaxfield@apple.com>
1151
1152         CTFontGetPhysicalSymbolicTraits() is faster than CTFontCopyPhysicalFont()/CTFontGetSymbolicTraits()
1153         https://bugs.webkit.org/show_bug.cgi?id=215685
1154
1155         Reviewed by Darin Adler.
1156
1157         * wtf/PlatformHave.h:
1158
1159 2020-09-06  Darin Adler  <darin@apple.com>
1160
1161         TextCodec refinements
1162         https://bugs.webkit.org/show_bug.cgi?id=216219
1163
1164         Reviewed by Sam Weinig.
1165
1166         * wtf/unicode/CharacterNames.h: Use constexpr instead of just const.
1167         Added byteOrderMark, synonym for zeroWidthNoBreakSpace.
1168
1169 2020-09-05  Myles C. Maxfield  <mmaxfield@apple.com>
1170
1171         [Cocoa] USE(PLATFORM_SYSTEM_FALLBACK_LIST) is true on all Cocoa platforms, so there's no need to consult it in Cocoa-specific files
1172         https://bugs.webkit.org/show_bug.cgi?id=215684
1173
1174         Reviewed by Darin Adler.
1175
1176         * wtf/PlatformUse.h:
1177
1178 2020-09-05  Myles C. Maxfield  <mmaxfield@apple.com>
1179
1180         [Cocoa] CTFontIsSystemUIFont() is faster than CTFontDescriptorIsSystemUIFont()/CTFontCopyFontDescriptor()
1181         https://bugs.webkit.org/show_bug.cgi?id=215687
1182
1183         Reviewed by Darin Adler.
1184
1185         * wtf/PlatformHave.h:
1186
1187 2020-09-05  Myles C. Maxfield  <mmaxfield@apple.com>
1188
1189         [Cocoa] Migrate off SPI in Font::platformWidthForGlyph()
1190         https://bugs.webkit.org/show_bug.cgi?id=215670
1191
1192         Reviewed by Zalan Bujtas.
1193
1194         * wtf/PlatformUse.h:
1195
1196 2020-09-04  Alex Christensen  <achristensen@webkit.org>
1197
1198         Move PDF heads-up display to UI process on macOS
1199         https://bugs.webkit.org/show_bug.cgi?id=215780
1200         <rdar://problem/58715847>
1201
1202         Reviewed by Tim Horton.
1203
1204         * wtf/PlatformHave.h:
1205
1206 2020-09-03  Ryosuke Niwa  <rniwa@webkit.org>
1207
1208         GTK+ build fix attempt after r266573.
1209
1210         * wtf/CompactUniquePtrTuple.h:
1211
1212 2020-09-02  Ryosuke Niwa  <rniwa@webkit.org>
1213
1214         Add CompactUniquePtrTuple
1215         https://bugs.webkit.org/show_bug.cgi?id=215936
1216
1217         Reviewed by Darin Adler.
1218
1219         Added a new template class, CompactUniquePtrTuple, which stores a pointer and up to 16-bits of
1220         a POD type using CompactPointerTuple.
1221
1222         * WTF.xcodeproj/project.pbxproj:
1223         * wtf/CMakeLists.txt:
1224         * wtf/CompactUniquePtrTuple.h: Added.
1225         (WTF::makeCompactUniquePtr): Added. Like makeUnique, creates an object of the specified type
1226         and returns CompactUniquePtrTuple.
1227         (WTF::CompactUniquePtrTuple): Added.
1228         (WTF::CompactUniquePtrTuple::CompactUniquePtrTuple): Move constructor.
1229         (WTF::CompactUniquePtrTuple::~CompactUniquePtrTuple):
1230         (WTF::CompactUniquePtrTuple::operator=):
1231         (WTF::CompactUniquePtrTuple::pointer):
1232         (WTF::CompactUniquePtrTuple::moveToUniquePtr): Clears this pointer and returns unique_ptr.
1233         (WTF::CompactUniquePtrTuple::setPointer): Like CompactPointerTuple sets the pointer component
1234         of this tuple, freeing the old object if there is already one stored.
1235         (WTF::CompactUniquePtrTuple::type):
1236         (WTF::CompactUniquePtrTuple::setType):
1237         (WTF::CompactUniquePtrTuple::CompactUniquePtrTuple): Constructor which takes unique_ptr&&.
1238         (WTF::CompactUniquePtrTuple::deletePointer):
1239
1240 2020-09-02  Ryosuke Niwa  <rniwa@webkit.org>
1241
1242         Add a variant of map which filters items to Vector.h
1243         https://bugs.webkit.org/show_bug.cgi?id=215879
1244
1245         Reviewed by Darin Adler and Yusuke Suzuki.
1246
1247         This patch adds WTF::compactMap, which calls a function on each item in an iterable object like WTF::map
1248         but also filters the returned value. The mapped function may return Optional<T> or RefPtr<T>. The value
1249         is kept in the result if the returned value is not WTF::nullopt in the case of Optional<T> and not null
1250         in the case of RefPtr<T>. The result will be either Vector<T> for Optional<T> or else Vector<Ref<T>>.
1251
1252         * wtf/Vector.h:
1253         (WTF::CompactMapTraits:): Added. Traits to have a different behavior
1254         (WTF::CompactMapTraits<Optional<T>>::hasValue): Added.
1255         (WTF::CompactMapTraits<Optional<T>>::extractValue): Added.
1256         (WTF::CompactMapTraits<RefPtr<T>>::hasValue): Added.
1257         (WTF::CompactMapTraits<RefPtr<T>>::extractValue): Added.
1258         (WTF::CompactMap): Added. The helper to use WTFMove on the argument to the mapped function if possible.
1259         (WTF::compactMap): Added.
1260
1261 2020-09-02  Said Abou-Hallawa  <sabouhallawa@apple.com>
1262
1263         Unreviewed, reverting r266449.
1264
1265         Underlying frameworks do not work correctly for loopCount >=
1266         1.
1267
1268         Reverted changeset:
1269
1270         "[CG] REGRESSION (Big Sur): A GIF image with a finite
1271         loopCount loops an extra cycle"
1272         https://bugs.webkit.org/show_bug.cgi?id=216018
1273         https://trac.webkit.org/changeset/266449
1274
1275 2020-09-01  Said Abou-Hallawa  <sabouhallawa@apple.com>
1276
1277         [CG] REGRESSION (Big Sur): A GIF image with a finite loopCount loops an extra cycle
1278         https://bugs.webkit.org/show_bug.cgi?id=216018
1279         <rdar://problem/66660579>
1280
1281         Reviewed by Tim Horton.
1282
1283         Add a new macro for the new accurate behavior of CGImageSource.
1284
1285         Unrelated change: Fix the conditions for enabling the WebP images.
1286
1287         * wtf/PlatformHave.h:
1288
1289 2020-08-31  Mark Lam  <mark.lam@apple.com>
1290
1291         Remove some PtrTag debugging code from release builds.
1292         https://bugs.webkit.org/show_bug.cgi?id=216025
1293         <rdar://problem/68098263>
1294
1295         Reviewed by Saam Barati.
1296
1297         Converted uses of PtrTagAction::ReleaseAssert to PtrTagAction::DebugAssert.
1298         These assertions serve a purpose during development (hence, PtrTagAction::DebugAssert),
1299         but is no longer needed for release builds.  Previously, we use these assertions
1300         to verify that pointers are tagged correctly in release build.  Clang takes care
1301         of that automatically now.
1302
1303         Also removed PtrTag name lookup debugging utility from release builds.
1304
1305         * wtf/PtrTag.cpp:
1306         * wtf/PtrTag.h:
1307         (WTF::untagCodePtr):
1308         (WTF::retagCodePtrImpl):
1309         (WTF::assertIsCFunctionPtr):
1310         (WTF::assertIsNotTagged):
1311         (WTF::assertIsTagged):
1312         (WTF::assertIsTaggedWith):
1313
1314 2020-09-01  Alex Christensen  <achristensen@webkit.org>
1315
1316         Update URL fragment percent encode set
1317         https://bugs.webkit.org/show_bug.cgi?id=216022
1318
1319         Reviewed by Youenn Fablet.
1320
1321         It now matches the behavior of Chrome and Firefox, as well as the spec at
1322         https://url.spec.whatwg.org/#fragment-percent-encode-set
1323
1324         * wtf/URLParser.cpp:
1325         (WTF::isInFragmentEncodeSet):
1326         (WTF::URLParser::parse):
1327
1328 2020-09-01  Alex Christensen  <achristensen@webkit.org>
1329
1330         Align Big5 decoding with spec, Chrome, and Firefox
1331         https://bugs.webkit.org/show_bug.cgi?id=216016
1332
1333         Reviewed by Darin Adler.
1334
1335         * wtf/text/CodePointIterator.h:
1336
1337 2020-09-01  Carlos Garcia Campos  <cgarcia@igalia.com>
1338
1339         [Linux] Web Inspector: show per thread cpu usage
1340         https://bugs.webkit.org/show_bug.cgi?id=215883
1341
1342         Reviewed by Adrian Perez de Castro.
1343
1344         Add API to get the thread ID in Linux platform.
1345
1346         * wtf/Threading.cpp:
1347         (WTF::Thread::initializeInThread):
1348         * wtf/Threading.h:
1349         (WTF::Thread::id const):
1350         * wtf/ThreadingPrimitives.h:
1351         * wtf/posix/ThreadingPOSIX.cpp:
1352         (WTF::Thread::currentID):
1353
1354 2020-08-31  Alex Christensen  <achristensen@webkit.org>
1355
1356         Make Big5 encoder conform to the specification and behavior of Chrome and Firefox
1357         https://bugs.webkit.org/show_bug.cgi?id=215983
1358
1359         Reviewed by Darin Adler.
1360
1361         * WTF.xcodeproj/project.pbxproj:
1362         * wtf/CMakeLists.txt:
1363         * wtf/URLParser.cpp:
1364         (WTF::CodePointIterator::CodePointIterator): Deleted.
1365         (WTF::CodePointIterator::operator== const): Deleted.
1366         (WTF::CodePointIterator::operator!= const): Deleted.
1367         (WTF::CodePointIterator::atEnd const): Deleted.
1368         (WTF::CodePointIterator::codeUnitsSince const): Deleted.
1369         (WTF::CodePointIterator<LChar>::operator const): Deleted.
1370         (WTF::CodePointIterator<LChar>::operator): Deleted.
1371         (WTF::CodePointIterator<UChar>::operator const): Deleted.
1372         (WTF::CodePointIterator<UChar>::operator): Deleted.
1373         * wtf/text/CodePointIterator.h: Added.
1374         (WTF::CodePointIterator::CodePointIterator):
1375         (WTF::CodePointIterator::operator== const):
1376         (WTF::CodePointIterator::operator!= const):
1377         (WTF::CodePointIterator::atEnd const):
1378         (WTF::CodePointIterator::codeUnitsSince const):
1379         (WTF::CodePointIterator<LChar>::operator const):
1380         (WTF::CodePointIterator<LChar>::operator):
1381         (WTF::CodePointIterator<UChar>::operator const):
1382         (WTF::CodePointIterator<UChar>::operator):
1383
1384 2020-08-30  Jim Mason  <jmason@ibinx.com>
1385
1386         [GTK] REGRESSION(r150392) insufficient space allocation results in heap corruption
1387         https://bugs.webkit.org/show_bug.cgi?id=215976
1388
1389         Reviewed by Carlos Garcia Campos.
1390
1391         * wtf/glib/RunLoopGLib.cpp:
1392         (WTF::RunLoop::TimerBase::TimerBase):
1393
1394 2020-08-27  Stephan Szabo  <stephan.szabo@sony.com>
1395
1396         [PlayStation] Build fix due to memmem not always being available.
1397         https://bugs.webkit.org/show_bug.cgi?id=215893
1398
1399         Unreviewed build fix
1400
1401         * wtf/PlatformHave.h: Don't always HAVE_MEMMEM on playstation
1402
1403 2020-08-27  Carlos Garcia Campos  <cgarcia@igalia.com>
1404
1405         [GTK] Include the run loop source name in frame rendering timeline
1406         https://bugs.webkit.org/show_bug.cgi?id=215847
1407
1408         Reviewed by Adrian Perez de Castro.
1409
1410         Pass the run loop source name to the observer.
1411
1412         * wtf/RunLoop.h:
1413         * wtf/glib/RunLoopGLib.cpp:
1414         (WTF::RunLoop::RunLoop):
1415         (WTF::RunLoop::notify):
1416
1417 2020-08-26  Alexey Shvayka  <shvaikalesh@gmail.com>
1418
1419         Use jsTypeofIsObject() in DFG AI and operationTypeOfIsObject()
1420         https://bugs.webkit.org/show_bug.cgi?id=144457
1421
1422         Reviewed by Saam Barati.
1423
1424         * wtf/TriState.h:
1425         (WTF::invert):
1426
1427 2020-08-25  Ryosuke Niwa  <rniwa@webkit.org>
1428
1429         HashMap<Ref<T>>::take should return RefPtr<T>
1430         https://bugs.webkit.org/show_bug.cgi?id=215830
1431
1432         Reviewed by Darin Adler.
1433
1434         Updated the hash traits for Ref<T> to make HashMap<Ref<T>> and HashSet<Ref<T>>
1435         return RefPtr<T> instad of Optional<Ref<T>>.
1436
1437         * wtf/HashTraits.h:
1438         (WTF::RefHashTraits::take):
1439
1440 2020-08-25  Per Arne Vollan  <pvollan@apple.com>
1441
1442         [Win] Assert failure under RunLoop::RunLoop
1443         https://bugs.webkit.org/show_bug.cgi?id=215812
1444
1445         Reviewed by Brent Fulgham.
1446
1447         The assert 'ASSERT(::IsWindow(m_runLoopMessageWindow))' under RunLoop::RunLoop will fail if the JSC API JSGlobalContextCreate*()
1448         is being called by a client before WTF::initializeMainThread() has been called. The assertion fails because the method
1449         RunLoop::registerRunLoopMessageWindowClass() has not been called yet, since it is only called when initializing the main thread.
1450         This patch addresses this issue by making sure the window class has been registered before being referenced in RunLoop::RunLoopl
1451         The method call is also removed from the main thread initialization, since the window class is only used in RunLoop::RunLoop,
1452         making it sufficient to only be registered there. Also change the debug assert to a release assert, so we can catch similar
1453         issues in release builds.
1454
1455         * wtf/win/MainThreadWin.cpp:
1456         (WTF::initializeMainThreadPlatform):
1457         * wtf/win/RunLoopWin.cpp:
1458         (WTF::RunLoop::registerRunLoopMessageWindowClass):
1459         (WTF::RunLoop::RunLoop):
1460
1461 2020-08-24  Carlos Garcia Campos  <cgarcia@igalia.com>
1462
1463         [GTK] Implement rendering frames timeline panel for GTK+ port
1464         https://bugs.webkit.org/show_bug.cgi?id=150392
1465         <rdar://problem/23200510>
1466
1467         Reviewed by Brian Burg.
1468
1469         Add API to observe RunLoop events for GLib event loop implementation.
1470
1471         * wtf/RunLoop.h:
1472         * wtf/glib/RunLoopGLib.cpp:
1473         (WTF::RunLoop::RunLoop): Use RunLoopSource struct and initialize the RunLoop.
1474         (WTF::RunLoop::observe): Add the given observer to the set.
1475         (WTF::RunLoop::notify): Notife observers of the given event.
1476         (WTF::RunLoop::TimerBase::TimerBase): Use RunLoopSource struct and initialize the RunLoop.
1477
1478 2020-08-24  Alex Christensen  <achristensen@webkit.org>
1479
1480         Implement Request/Response consuming as FormData
1481         https://bugs.webkit.org/show_bug.cgi?id=215671
1482
1483         Reviewed by Darin Adler.
1484
1485         In order to be compatible with other browsers, we need a verson of String::fromUTF8 that
1486         uses U8_NEXT_OR_FFFD instead of U8_NEXT, but changing that across the board will break other things.
1487         Leave everything else as it is, use templates and constexpr to not add any branches, but add
1488         String::fromUTF8ReplacingInvalidSequences to allow me to make our FormData consuming compatible with other browsers.
1489
1490         * wtf/text/WTFString.cpp:
1491         (WTF::fromUTF8Helper):
1492         (WTF::String::fromUTF8):
1493         (WTF::String::fromUTF8ReplacingInvalidSequences):
1494         * wtf/text/WTFString.h:
1495         * wtf/unicode/UTF8Conversion.cpp:
1496         (WTF::Unicode::convertUTF8ToUTF16Impl):
1497         (WTF::Unicode::convertUTF8ToUTF16):
1498         (WTF::Unicode::convertUTF8ToUTF16ReplacingInvalidSequences):
1499         * wtf/unicode/UTF8Conversion.h:
1500
1501 2020-08-24  Alex Christensen  <achristensen@webkit.org>
1502
1503         Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to replace _WKProcessPoolConfiguration.hstsStorageDirectory
1504         https://bugs.webkit.org/show_bug.cgi?id=213048
1505
1506         Reviewed by Youenn Fablet.
1507
1508         * wtf/PlatformHave.h:
1509
1510 2020-08-22  Yusuke Suzuki  <ysuzuki@apple.com>
1511
1512         [JSC] Add Intl.Segmenter
1513         https://bugs.webkit.org/show_bug.cgi?id=213638
1514
1515         Reviewed by Ross Kirsling.
1516
1517         * wtf/text/WTFString.cpp:
1518         (WTF::String::charactersWithoutNullTermination const):
1519         (WTF::String::charactersWithNullTermination const):
1520         * wtf/text/WTFString.h:
1521
1522 2020-08-18  Simon Fraser  <simon.fraser@apple.com>
1523
1524         Turn off wheel event regions until we need them
1525         https://bugs.webkit.org/show_bug.cgi?id=215586
1526
1527         Reviewed by Darin Adler.
1528         
1529         Leave ENABLE_WHEEL_EVENT_REGIONS off because it's currently unused, and adds extra
1530         region building overhead on macOS.
1531
1532         * wtf/PlatformEnableCocoa.h:
1533
1534 2020-08-17  Fujii Hironori  <Hironori.Fujii@sony.com>
1535
1536         [WTF] HashTable<Ref<K>, V>::HashTable(const HashTable& other) can't compile
1537         https://bugs.webkit.org/show_bug.cgi?id=215550
1538
1539         Reviewed by Darin Adler.
1540
1541         Even though the copy constructor takes a const HashTable
1542         reference, RefHashTraits::assignToEmpty takes non-const Ref<P>. It
1543         seems that RefHashTraits::assignToEmpty and
1544         Ref::assignToHashTableEmptyValue are unnecessary. Just remove them.
1545
1546         * wtf/HashTraits.h:
1547         (WTF::RefHashTraits::assignToEmpty): Deleted.
1548         * wtf/Ref.h:
1549         (WTF::Ref::assignToHashTableEmptyValue): Deleted.
1550
1551 2020-08-17  Youenn Fablet  <youenn@apple.com>
1552
1553         Bump HAVE_NSURLSESSION_WEBSOCKET requirement to BigSur for MacOS
1554         https://bugs.webkit.org/show_bug.cgi?id=215517
1555
1556         Reviewed by Alex Christensen.
1557
1558         Catalina NSURLSession WebSocket is missing some features we need.
1559         Bump it to Big Sur.
1560
1561         * wtf/PlatformHave.h:
1562
1563 2020-08-15  Yusuke Suzuki  <ysuzuki@apple.com>
1564
1565         Use std::call_once + LazyNeverDestroyed to initialize complex data structures
1566         https://bugs.webkit.org/show_bug.cgi?id=215535
1567         <rdar://problem/66774266>
1568
1569         Reviewed by Mark Lam.
1570
1571         NeverDestroyed<> is not thread-safe in Darwin build since it is not using C++11 thread-safe static variable semantics.
1572         This patch uses LazyNeverDestroyed and call_once to initialize complex data structures so that we can ensure they are
1573         initialized atomically.
1574
1575         We also move some of `singleton` definitions from headers to cpp files. This is important since this ensures that singleton
1576         is only one instance which is generated in one translation unit.
1577
1578         * WTF.xcodeproj/project.pbxproj:
1579         * wtf/CMakeLists.txt:
1580         * wtf/FastMalloc.cpp:
1581         (WTF::MallocCallTracker::singleton):
1582         * wtf/Language.cpp:
1583         (WTF::observerMap):
1584         (WTF::preferredLanguagesOverride):
1585         * wtf/Logger.cpp:
1586         (WTF::Logger::observers):
1587         * wtf/Logger.h:
1588         (WTF::Logger::observerLock):
1589         (WTF::Logger::observers): Deleted.
1590         * wtf/MemoryPressureHandler.cpp:
1591         (WTF::MemoryPressureHandler::singleton):
1592         * wtf/MemoryPressureHandler.h:
1593         * wtf/RunLoop.cpp:
1594         (WTF::RunLoop::current):
1595         * wtf/Threading.cpp:
1596         (WTF::Thread::initializeInThread):
1597         * wtf/URL.cpp:
1598         (WTF::aboutBlankURL):
1599         (WTF::aboutSrcDocURL):
1600         * wtf/cf/LanguageCF.cpp:
1601         (WTF::preferredLanguages):
1602         * wtf/cocoa/NSURLExtras.mm:
1603         (WTF::rangeOfURLScheme):
1604         * wtf/text/LineBreakIteratorPoolICU.cpp: Copied from Source/WTF/wtf/Logger.cpp.
1605         (WTF::LineBreakIteratorPool::sharedPool):
1606         * wtf/text/LineBreakIteratorPoolICU.h:
1607         (WTF::LineBreakIteratorPool::sharedPool): Deleted.
1608         * wtf/text/StringView.cpp:
1609         * wtf/text/TextBreakIterator.cpp:
1610         (WTF::TextBreakIteratorCache::singleton):
1611         * wtf/text/TextBreakIterator.h:
1612         (WTF::TextBreakIteratorCache::singleton): Deleted.
1613         * wtf/threads/Signals.cpp:
1614         (WTF::activeThreads):
1615
1616 2020-08-11  Wenson Hsieh  <wenson_hsieh@apple.com>
1617
1618         Text input autocorrect="off" attribute ignored on Mac
1619         https://bugs.webkit.org/show_bug.cgi?id=151019
1620         <rdar://problem/65061700>
1621
1622         Reviewed by Simon Fraser.
1623
1624         * wtf/PlatformEnableCocoa.h: Turn the feature on for macOS.
1625
1626 2020-08-10  Myles C. Maxfield  <mmaxfield@apple.com>
1627
1628         [Cocoa] Migrate from CTFontTransformGlyphsWithLanguage() to CTFontShapeGlyphs()
1629         https://bugs.webkit.org/show_bug.cgi?id=215059
1630
1631         Reviewed by Darin Adler.
1632
1633         * wtf/PlatformUse.h: Rename CTFONTTRANSFORMGLYPHSWITHLANGUAGE to CTFONTSHAPEGLYPHS,
1634         because that's the new function.
1635
1636 2020-08-09  Ben Nham  <nham@apple.com>
1637
1638         Preload graphics drivers in Mac WebProcess
1639         https://bugs.webkit.org/show_bug.cgi?id=215183
1640
1641         Reviewed by Darin Adler.
1642
1643         Enable GPU driver preheating in versions of the OS that might not have the drivers in the dyld
1644         shared cache due to size restrictions.
1645
1646         * wtf/PlatformEnableCocoa.h:
1647
1648 2020-08-09  Commit Queue  <commit-queue@webkit.org>
1649
1650         Unreviewed, reverting r263195, r263252, and r265394.
1651         https://bugs.webkit.org/show_bug.cgi?id=215312
1652
1653         Revert all related GC Bitmap changes because some of perf is
1654         not fully recovered
1655
1656         Reverted changesets:
1657
1658         "Replace JSC::FreeList linked list with a Bitmap."
1659         https://bugs.webkit.org/show_bug.cgi?id=213071
1660         https://trac.webkit.org/changeset/263195
1661
1662         "Unify Bitmap math loops in
1663         MarkedBlock::Handle::specializedSweep()."
1664         https://bugs.webkit.org/show_bug.cgi?id=213345
1665         https://trac.webkit.org/changeset/263252
1666
1667         "[JSC] Disable ENABLE_BITMAP_FREELIST"
1668         https://bugs.webkit.org/show_bug.cgi?id=215285
1669         https://trac.webkit.org/changeset/265394
1670
1671 2020-08-08  Joonghun Park  <jh718.park@samsung.com>
1672
1673         [WTF] Remove the build warning since r265344.
1674         https://bugs.webkit.org/show_bug.cgi?id=215269
1675
1676         warning: parameter ‘integer’ set but not used [-Wunused-but-set-parameter]
1677
1678         * wtf/text/IntegerToStringConversion.h:
1679         (WTF::lengthOfIntegerAsString):
1680
1681 2020-08-07  John Wilander  <wilander@apple.com>
1682
1683         Experimental: Cap the expiry of persistent cookies set in 3rd-party CNAME cloaked HTTP responses
1684         https://bugs.webkit.org/show_bug.cgi?id=215201
1685         <rdar://problem/57454633>
1686
1687         Reviewed by Brent Fulgham. Also reviewed and commented on by Chris Dumez, Jiten Mehta, Sam Weinig, and Alex Christensen.
1688
1689         This change defines HAVE_CFNETWORK_CNAME_AND_COOKIE_TRANSFORM_SPI.
1690
1691         * wtf/PlatformHave.h:
1692
1693 2020-08-07  Saam Barati  <sbarati@apple.com>
1694
1695         Use thread_switch instead of switch_pri to drop priority to zero for 1ms instead of 10
1696         https://bugs.webkit.org/show_bug.cgi?id=215248
1697
1698         Reviewed by Yusuke Suzuki.
1699
1700         This seems to be a slight JetStream2 and Speedometer2 speedup. In the
1701         range of 0%-0.75%, depending on device.
1702
1703         * wtf/posix/ThreadingPOSIX.cpp:
1704         (WTF::Thread::yield):
1705
1706 2020-08-07  Robin Morisset  <rmorisset@apple.com>
1707
1708         Fix inequality in newly added assertion
1709         https://bugs.webkit.org/show_bug.cgi?id=215272
1710
1711         Reviewed by Alexey Proskuryakov.
1712
1713         No new tests, as it was caught by our testing infrastructure (not sure why it only got caught after landing).
1714
1715         * wtf/IndexSparseSet.h:
1716         (WTF::OverflowHandler>::validate):
1717
1718 2020-08-07  Robin Morisset  <rmorisset@apple.com>
1719
1720         IndexSparseSet::sort() should update m_map
1721         https://bugs.webkit.org/show_bug.cgi?id=215100
1722
1723         Reviewed by Yusuke Suzuki and Mark Lam.
1724
1725         IndexSparseSet is made of two fields: m_values and m_map, and the two must be kept in sync.
1726         But its sort routine currently only sorts m_values.
1727         This might be related to a random crash that seems to occasionally occur in the vicinity of this code in the wild (rdar://problem/64594569)
1728
1729         I added a validation routine, that I run in the tests that I added to TestWTF.
1730         I verified, and without the fix, the validation routine fails after the sorting.
1731
1732         I also fixed remove() which was wrong on non-trivial types (thanks to Mark for catching this other bug).
1733
1734         * wtf/IndexSparseSet.h:
1735         (WTF::OverflowHandler>::remove):
1736         (WTF::OverflowHandler>::sort):
1737         (WTF::OverflowHandler>::validate):
1738
1739 2020-08-07  Youenn Fablet  <youenn@apple.com>
1740
1741         Introduce a Vector::isolatedCopy() &&
1742         https://bugs.webkit.org/show_bug.cgi?id=215160
1743
1744         Reviewed by Alex Christensen.
1745
1746         By introducing an isolatedCopy() &&, we remove the need to allocate a vector buffer.
1747         This can make a Vector<String>::isolatedCopy() allocate no memory at all in cases like RegistrationDatabase::schedulePushChanges.
1748
1749         * wtf/Vector.h:
1750         (WTF::Malloc>::isolatedCopy const):
1751         (WTF::Malloc>::isolatedCopy):
1752
1753 2020-08-06  David Kilzer  <ddkilzer@apple.com>
1754
1755         WTF::makeString() should handle enum values
1756         <https://webkit.org/b/214906>
1757
1758         Reviewed by Sam Weinig.
1759
1760         * wtf/text/IntegerToStringConversion.h:
1761         (WTF::numberToStringSigned):
1762         - Drive-by fix to change std::make_unsigned<>::type to
1763           std::make_unsigned_t<>.
1764         (WTF::writeNumberToBufferImpl): Delete.
1765         (WTF::writeIntegerToBufferImpl):
1766         - Rename from WTF::writeNumberToBufferImpl().
1767         (WTF::writeNumberToBufferSigned): Delete.
1768         (WTF::writeNumberToBufferUnsigned): Delete.
1769         (WTF::writeIntegerToBuffer):
1770         - Replace WTF::writeNumberToBufferSigned() and
1771           WTF::writeNumberToBufferUnsigned() with a single function that
1772           uses constexpr checks to let the compiler eliminate code.  Had
1773           to use if/else if/else construct to help the compiler
1774           eliminate unused cases.
1775         (WTF::lengthOfNumberAsStringImpl): Delete.
1776         (WTF::lengthOfIntegerAsStringImpl):
1777         - Rename from WTF::lengthOfNumberAsStringImpl().
1778         (WTF::lengthOfNumberAsStringSigned): Delete.
1779         (WTF::lengthOfNumberAsStringUnsigned): Delete.
1780         (WTF::lengthOfIntegerAsString):
1781         - Replace WTF::lengthOfNumberAsStringSigned() and
1782           WTF::lengthOfNumberAsStringUnsigned() with a single function
1783           that uses constexpr checks to let the compiler eliminate code.
1784           Had to use if/else if/else construct to help the compiler
1785           eliminate unused cases.
1786
1787         * wtf/text/StringConcatenateNumbers.h:
1788         (WTF::StringTypeAdapter<SignedInt, ...>): Deleted.
1789         (WTF::StringTypeAdapter<UnignedInt, ...>): Deleted.
1790         (WTF::StringTypeAdapter<Integer, ...>):
1791         - Combine signed/unsigned templated classes into a single class
1792           now that WTF::lengthOfIntegerAsString() and
1793           WTF::writeIntegerToBuffer() are templated.
1794         (WTF::StringTypeAdapter<Enum, ...>):
1795         - Add support for enum types to WTF::makeString().  This also
1796           takes advantage of templated WTF::lengthOfIntegerAsString()
1797           and WTF::writeIntegerToBuffer() functions since enum types may
1798           be either signed or unsigned.
1799
1800 2020-08-05  Tim Horton  <timothy_horton@apple.com>
1801
1802         Remove all references to non-existent 10.16
1803         https://bugs.webkit.org/show_bug.cgi?id=215202
1804
1805         Reviewed by Wenson Hsieh.
1806
1807         * Configurations/Base.xcconfig:
1808         * Configurations/DebugRelease.xcconfig:
1809         * wtf/PlatformEnableCocoa.h:
1810         * wtf/PlatformHave.h:
1811         * wtf/PlatformUse.h:
1812
1813 2020-08-04  Yusuke Suzuki  <ysuzuki@apple.com>
1814
1815         [JSC] Use LazyNeverDestroyed & std::call_once for complex singletons
1816         https://bugs.webkit.org/show_bug.cgi?id=215153
1817         <rdar://problem/65718983>
1818
1819         Reviewed by Mark Lam.
1820
1821         Add lock's bits in crash information to investigate if this speculative fix does not work.
1822
1823         * wtf/LockAlgorithmInlines.h:
1824         (WTF::Hooks>::lockSlow):
1825         (WTF::Hooks>::unlockSlow):
1826
1827 2020-08-04  Keith Miller  <keith_miller@apple.com>
1828
1829         CheckpointSideState shoud play nicely with StackOverflowException unwinding.
1830         https://bugs.webkit.org/show_bug.cgi?id=215114
1831
1832         Reviewed by Saam Barati.
1833
1834         Add a helper so we can have soft stack bounds.
1835
1836         * wtf/StackBounds.h:
1837         (WTF::StackBounds::withSoftOrigin const):
1838
1839 2020-08-04  Fujii Hironori  <Hironori.Fujii@sony.com>
1840
1841         [MSVC] wtf/Optional.h: error C2280: 'WTF::constexpr_storage_t<T> &WTF::constexpr_storage_t<T>::operator =(const WTF::constexpr_storage_t<T> &)': attempting to reference a deleted function
1842         https://bugs.webkit.org/show_bug.cgi?id=215003
1843
1844         Reviewed by Yusuke Suzuki.
1845
1846         Microsoft reported the upcoming MSVC can't compile
1847         Optional<std::pair<JSC::SamplingProfiler::StackFrame::CodeLocation,JSC::CodeBlock *>>.
1848
1849         > wtf/Optional.h(419,39): error C2280: 'WTF::constexpr_storage_t<T> &WTF::constexpr_storage_t<T>::operator =(const WTF::constexpr_storage_t<T> &)': attempting to reference a deleted function
1850
1851         They suggests using std::is_trivially_copy_assignable_v in
1852         Optional ctor instead of std::is_trivially_copyable_v.
1853
1854         * wtf/Optional.h:
1855         (WTF::Optional::Optional): Replaced std::is_trivially_copyable_v with std::is_trivially_copy_assignable_v.
1856
1857 2020-08-04  Alex Christensen  <achristensen@webkit.org>
1858
1859         about: scheme URL constants should be backed by StaticStringImpl
1860         https://bugs.webkit.org/show_bug.cgi?id=215113
1861
1862         Reviewed by Darin Adler.
1863
1864         * wtf/URL.cpp:
1865         (WTF::aboutBlankURL):
1866         (WTF::aboutSrcDocURL):
1867
1868 2020-08-03  Wenson Hsieh  <wenson_hsieh@apple.com>
1869
1870         Remove the ENABLE_DATA_INTERACTION feature flag
1871         https://bugs.webkit.org/show_bug.cgi?id=215091
1872
1873         Reviewed by Megan Gardner.
1874
1875         * wtf/PlatformEnable.h:
1876         * wtf/PlatformEnableCocoa.h:
1877
1878 2020-08-01  Commit Queue  <commit-queue@webkit.org>
1879
1880         Unreviewed, reverting r265097, r265113, and r265122.
1881         https://bugs.webkit.org/show_bug.cgi?id=215065
1882
1883         Broke AppleSilicon Big Sur
1884
1885         Reverted changesets:
1886
1887         "Strip pointers instead of authing for byteOffset to not allow
1888         for a possible way to guess data pac"
1889         https://bugs.webkit.org/show_bug.cgi?id=214952
1890         https://trac.webkit.org/changeset/265097
1891
1892         "Compute number of PAC bits from what the OS says its address
1893         space is"
1894         https://bugs.webkit.org/show_bug.cgi?id=214986
1895         https://trac.webkit.org/changeset/265113
1896
1897         "Remove UB from nonPACBitsMask computation"
1898         https://bugs.webkit.org/show_bug.cgi?id=214996
1899         https://trac.webkit.org/changeset/265122
1900
1901 2020-07-30  Simon Fraser  <simon.fraser@apple.com>
1902
1903         Have TimingScope track the max event duration
1904         https://bugs.webkit.org/show_bug.cgi?id=215006
1905
1906         Reviewed by Tim Horton.
1907
1908         Have TimingScope track and print the longest event, as well as the count and
1909         mean duration.
1910
1911         * wtf/TimingScope.cpp:
1912         (WTF::TimingScope::scopeDidEnd):
1913
1914 2020-07-30  Keith Miller  <keith_miller@apple.com>
1915
1916         Remove UB from nonPACBitsMask computation
1917         https://bugs.webkit.org/show_bug.cgi?id=214996
1918
1919         Reviewed by Tadeu Zagallo.
1920
1921         For non-ARM64E we now set numberOfPACBits to zero, which was causing UB in our computation of the nonPACBitsMask.
1922
1923         * wtf/CagedPtr.h:
1924
1925 2020-07-30  Jer Noble  <jer.noble@apple.com>
1926
1927         [Cocoa] Adopt -[AVContentKeyRequest willOutputBeObscuredDueToInsufficientExternalProtectionForDisplays:]
1928         https://bugs.webkit.org/show_bug.cgi?id=214659
1929         <rdar://problem/63555006>
1930
1931         Reviewed by Darin Adler.
1932         
1933         Add a new Observer template class. This allows classes to provide support for listeners without requiring
1934         those listeners to subclass from a pure-virtual (and CanMakeWeakPtr capable) client class. Instead, clients
1935         can just create one of these Observer objects, and pass a WeakPtr to that observer to the notifying object.
1936         When the client object destroys the observer, it is automatically unregistered when the observing object
1937         uses a WeakHashSet.
1938
1939         * WTF.xcodeproj/project.pbxproj:
1940         * wtf/CMakeLists.txt:
1941         * wtf/Observer.h: Added.
1942         (WTF::Observer<Out):
1943
1944 2020-07-30  Keith Miller  <keith_miller@apple.com>
1945
1946         Compute number of PAC bits from what the OS says its address space is
1947         https://bugs.webkit.org/show_bug.cgi?id=214986
1948
1949         Reviewed by Saam Barati.
1950
1951         * wtf/CagedPtr.h:
1952         * wtf/PtrTag.h:
1953
1954 2020-07-29  Fujii Hironori  <Hironori.Fujii@sony.com>
1955
1956         [Win Debug] Unreviewed build fix
1957
1958         > JavaScriptCore/runtime/JSArrayBufferView.cpp(51): error C2660: 'Gigacage::isEnabled': function does not take 0 arguments
1959
1960         * wtf/Gigacage.h:
1961         (Gigacage::isEnabled): Added isEnabled taking no argument which was adeed to bmalloc in r249556 (Bug 201521).
1962
1963 2020-07-29  Don Olmstead  <don.olmstead@sony.com>
1964
1965         Remove USE(ZLIB)
1966         https://bugs.webkit.org/show_bug.cgi?id=214929
1967
1968         Reviewed by Darin Adler.
1969
1970         Remove setting a default value of USE_ZLIB.
1971
1972         * wtf/PlatformUse.h:
1973
1974 2020-07-28  Karl Rackler  <rackler@apple.com>
1975
1976         Unreviewed, reverting r264955.
1977
1978         Reverting because this commit may have caused issues with
1979         tests.
1980
1981         Reverted changeset:
1982
1983         "WebCoreResourceHandleAsOperationQueueDelegate can use
1984         RunLoop::dispatch"
1985         https://bugs.webkit.org/show_bug.cgi?id=214771
1986         https://trac.webkit.org/changeset/264955
1987
1988 2020-07-27  Geoffrey Garen  <ggaren@apple.com>
1989
1990         WebCoreResourceHandleAsOperationQueueDelegate can use RunLoop::dispatch
1991         https://bugs.webkit.org/show_bug.cgi?id=214771
1992
1993         Reviewed by Darin Adler.
1994
1995         * wtf/cf/RunLoopCF.cpp:
1996         (WTF::RunLoop::dispatch): Migrated the optimization from
1997         WebCoreResourceHandleAsOperationQueueDelegate. All Cocoa WebViews begin
1998         life with a single SchedulePair scheduled in kCFRunLoopCommonModes, so
1999         this optimization is the common case.
2000
2001         (Note that I did not copy the kCFRunLoopDefaultMode clause from
2002         the WebCoreResourceHandleAsOperationQueueDelegate optimization. That's
2003         because it's not the common case, and also because it's not correct to
2004         do a vanilla disptach() in the case of kCFRunLoopDefaultMode because a
2005         vanilla dispatch() would use kCFRunLoopCommonModes.)
2006
2007 2020-07-27  Yusuke Suzuki  <ysuzuki@apple.com>
2008
2009         [JSC] Disable BIGINT32 optimization temporarily because of SP2 / JS2 regression
2010         https://bugs.webkit.org/show_bug.cgi?id=214776
2011
2012         Reviewed by Darin Adler.
2013
2014         We disable BIGINT32 optimization because it causes 1% regression in JetStream2 and Speedometer2.
2015         We should enable it after we fix the cause of regression.
2016
2017         * wtf/PlatformUse.h:
2018
2019 2020-07-27  Carlos Garcia Campos  <cgarcia@igalia.com>
2020
2021         [WPE][GTK] Add API to support "Privacy Report"
2022         https://bugs.webkit.org/show_bug.cgi?id=213493
2023
2024         Reviewed by Adrian Perez de Castro.
2025
2026         Add support for using GRefPtr with GDateTime.
2027
2028         * wtf/glib/GRefPtr.cpp:
2029         (WTF::refGPtr):
2030         (WTF::derefGPtr):
2031         * wtf/glib/GRefPtr.h:
2032
2033 2020-07-23  Keith Miller  <keith_miller@apple.com>
2034
2035         iOS simulator does not support WebAssembly
2036         https://bugs.webkit.org/show_bug.cgi?id=191064
2037
2038         Reviewed by Yusuke Suzuki.
2039
2040         Now that it seems we can JIT in the Simulator we should enable
2041         WebAssembly there. This just means enabling FTL/B3 so WASM gets
2042         enabled.
2043
2044         * wtf/PlatformEnable.h:
2045         * wtf/PlatformEnableCocoa.h:
2046
2047 2020-07-23  Aditya Keerthi  <akeerthi@apple.com>
2048
2049         [macOS] Datalist dropdown scrollbar position does not match visible region
2050         https://bugs.webkit.org/show_bug.cgi?id=214656
2051
2052         Reviewed by Wenson Hsieh.
2053
2054         * wtf/PlatformHave.h: Define HAVE_NSTABLEVIEWSTYLE.
2055
2056 2020-07-23  Brady Eidson  <beidson@apple.com>
2057
2058         Add Gamepad tests that exercise the native frameworks
2059         <rdar://problem/65343674> and https://bugs.webkit.org/show_bug.cgi?id=214188
2060
2061         Reviewed by Tim Horton.
2062
2063         * wtf/PlatformHave.h:
2064
2065 2020-07-23  Commit Queue  <commit-queue@webkit.org>
2066
2067         Unreviewed, reverting r264745.
2068         https://bugs.webkit.org/show_bug.cgi?id=214681
2069
2070         Broke 3 web-platform-tests on iOS
2071
2072         Reverted changeset:
2073
2074         "iOS simulator does not support WebAssembly"
2075         https://bugs.webkit.org/show_bug.cgi?id=191064
2076         https://trac.webkit.org/changeset/264745
2077
2078 2020-07-22  Jer Noble  <jer.noble@apple.com>
2079
2080         [Cocoa] Add feature flag for WebM & VP9
2081         https://bugs.webkit.org/show_bug.cgi?id=214672
2082         <rdar://problem/65959506>
2083
2084         Reviewed by Beth Dakin.
2085
2086         * wtf/PlatformEnableCocoa.h:
2087
2088 2020-07-22  Conrad Shultz  <conrad_shultz@apple.com>
2089
2090         Update macOS Version macros
2091         https://bugs.webkit.org/show_bug.cgi?id=214653
2092
2093         Reviewed by Tim Horton.
2094
2095         * Configurations/Base.xcconfig:
2096         * Configurations/DebugRelease.xcconfig:
2097         * wtf/PlatformHave.h:
2098
2099 2020-07-22  Keith Miller  <keith_miller@apple.com>
2100
2101         iOS simulator does not support WebAssembly
2102         https://bugs.webkit.org/show_bug.cgi?id=191064
2103
2104         Reviewed by Yusuke Suzuki.
2105
2106         Now that it seems we can JIT in the Simulator we should enable
2107         WebAssembly there. This just means enabling FTL/B3 so WASM gets
2108         enabled.
2109
2110         * wtf/PlatformEnable.h:
2111         * wtf/PlatformEnableCocoa.h:
2112
2113 2020-07-22  Geoffrey Garen  <ggaren@apple.com>
2114
2115         WTF::Function adoption should be explicit instead of implicit
2116         https://bugs.webkit.org/show_bug.cgi?id=214654
2117
2118         Reviewed by Darin Adler.
2119
2120         * wtf/Function.h:
2121         (WTF::Function<Out):
2122         (WTF::adoptImpl): Added an adopt function for Functions and made the
2123         adopting constructor private.
2124
2125         * wtf/cf/RunLoopCF.cpp:
2126         (WTF::RunLoop::dispatch): Use new adopt function.
2127
2128 2020-07-22  Jer Noble  <jer.noble@apple.com>
2129
2130         Unreviewed build fix after r264710; add a HAVE_AVPLAYER_VIDEORANGEOVERRIDE guard.
2131
2132         * wtf/PlatformHave.h:
2133
2134 2020-07-22  Geoffrey Garen  <ggaren@apple.com>
2135
2136         JSRunLoopTimer should use WTF::RunLoop rather than custom CF code
2137         https://bugs.webkit.org/show_bug.cgi?id=214102
2138
2139         Unreviewed, re-landing r264242 with crash fixed.
2140
2141         To support JSC using external locking around a RunLoop timer, we needed
2142         to avoid modifying unsynchronized timer state while firing.
2143
2144         * wtf/cf/RunLoopCF.cpp:
2145         (WTF::RunLoop::TimerBase::start):
2146
2147 2020-07-21  Eric Carlson  <eric.carlson@apple.com>
2148
2149         Use AVRoutePickerView when available for choosing AirPlay devices
2150         https://bugs.webkit.org/show_bug.cgi?id=213497
2151         <rdar://problem/58610662>
2152
2153         Reviewed by Jer Noble.
2154
2155         * wtf/PlatformHave.h: Define HAVE_AVROUTEPICKERVIEW.
2156
2157 2020-07-20  Yusuke Suzuki  <ysuzuki@apple.com>
2158
2159         [ECMA-402] Implement Intl.DisplayNames
2160         https://bugs.webkit.org/show_bug.cgi?id=209779
2161
2162         Reviewed by Ross Kirsling.
2163
2164         * wtf/text/StringView.h:
2165
2166 2020-07-20  Adrian Perez de Castro  <aperez@igalia.com>
2167
2168         Non unified build fixes, midsummer 2020 edition
2169         https://bugs.webkit.org/show_bug.cgi?id=213616
2170
2171         Unreviewed build fix.
2172
2173         * wtf/text/StringParsingBuffer.h: Add missing inclusion of wtf/text/StringView.h,
2174         and removed other now-unneeded header inclusions.
2175
2176 2020-07-19  Geoffrey Garen  <ggaren@apple.com>
2177
2178         There should be only one RunLoop Timer class
2179         https://bugs.webkit.org/show_bug.cgi?id=214340
2180
2181         Reviewed by Darin Adler.
2182
2183         RunLoop::Timer wins. RunLoopTimer loses.
2184
2185         * WTF.xcodeproj/project.pbxproj:
2186         * wtf/CMakeLists.txt:
2187         * wtf/PlatformHave.h:
2188         * wtf/PlatformMac.cmake: Remove RunLoopTimer.
2189
2190         * wtf/RunLoop.cpp:
2191         (WTF::RunLoop::dispatchAfter): While we're here. let's make dispatchAfter
2192         available on all platforms. We had cross-platform code, but it was
2193         factored to be needlessly platform-specific.
2194
2195         * wtf/RunLoop.h: Added a version of dispatch() that accepts a
2196         SchedulePairHashSet for Cocoa. Removed some indirection from timer
2197         stuff, since it was confusing me. Consistently named all time intervals
2198         "interval".
2199
2200         * wtf/RunLoopTimer.h: Removed.
2201
2202         * wtf/cf/RunLoopCF.cpp:
2203         (WTF::createTimer): Factored out a helper function for dispatch() to use.
2204         (WTF::RunLoop::dispatch): This function is the meat of the patch. It's
2205         the only unique functionality that RunLoopTimer used to provide.
2206         (WTF::RunLoop::TimerBase::start): Adopted helper function.
2207         (WTF::RunLoop::runForDuration): Deleted.
2208         (WTF::RunLoop::TimerBase::timerFired): Deleted.
2209
2210         * wtf/cf/RunLoopTimerCF.cpp: Removed.
2211
2212         * wtf/generic/RunLoopGeneric.cpp:
2213         (WTF::RunLoop::dispatchAfter): Deleted. Now cross-platform.
2214
2215         * wtf/glib/RunLoopGLib.cpp:
2216         (WTF::RunLoop::TimerBase::updateReadyTime):
2217         (WTF::RunLoop::TimerBase::start):
2218         (WTF::RunLoop::TimerBase::stop):
2219         (WTF::DispatchAfterContext::DispatchAfterContext): Deleted.
2220         (WTF::DispatchAfterContext::dispatch): Deleted.
2221         (WTF::RunLoop::dispatchAfter): Deleted. Now cross-platform.
2222
2223         * wtf/win/RunLoopWin.cpp:
2224         (WTF::RunLoop::TimerBase::start):
2225         (WTF::RunLoop::dispatchAfter): Deleted. Now cross-platform.
2226
2227 2020-07-17  Sam Weinig  <weinig@apple.com>
2228
2229         Remove final vestigates of SimpleColor
2230         https://bugs.webkit.org/show_bug.cgi?id=214439
2231
2232         Reviewed by Simon Fraser.
2233
2234         * wtf/KeyValuePair.h:
2235         (WTF::KeyValuePair::KeyValuePair):
2236         Add overload of constructor that is not a template function to aid deduction
2237         when using std::initializer_lists to contruct a HashMap.
2238
2239 2020-07-17  Fujii Hironori  <Hironori.Fujii@sony.com>
2240
2241         Don't include <wtf/text/WTFString.h> in SVGParserUtilities.h
2242         https://bugs.webkit.org/show_bug.cgi?id=214320
2243
2244         Reviewed by Darin Adler.
2245
2246         * wtf/Forward.h: Added foward declarations for template specializations of DefaultHash.
2247
2248 2020-07-17  Keith Miller  <keith_miller@apple.com>
2249
2250         Fix 32-bit debug watchos build
2251         https://bugs.webkit.org/show_bug.cgi?id=214480
2252
2253         Reviewed by Michael Saboff.
2254
2255         subtracting pointers produces a ptrdiff_t but on 32-bit that's the same
2256         as an int. Since we were comparing that to an unsigned that triggered
2257         the signed comparison warning, which broke the build.
2258
2259         * wtf/text/StringParsingBuffer.h:
2260
2261 2020-07-17  Truitt Savell  <tsavell@apple.com>
2262
2263         Unreviewed, reverting r264482.
2264
2265         Part of an attempted fix for the build
2266
2267         Reverted changeset:
2268
2269         "Use AVRoutePickerView when available for choosing AirPlay
2270         devices"
2271         https://bugs.webkit.org/show_bug.cgi?id=213497
2272         https://trac.webkit.org/changeset/264482
2273
2274 2020-07-16  Xabier Rodriguez Calvar  <calvaris@igalia.com>
2275
2276         Rename createBoxPtr into adoptBoxPtr
2277         https://bugs.webkit.org/show_bug.cgi?id=214171
2278
2279         Reviewed by Darin Adler.
2280
2281         * wtf/BoxPtr.h:
2282         (WTF::adoptInBoxPtr):
2283
2284 2020-07-16  Per Arne Vollan  <pvollan@apple.com>
2285
2286         XPC connection should be suspended before setting target queue
2287         https://bugs.webkit.org/show_bug.cgi?id=214427
2288
2289         Reviewed by Darin Adler.
2290
2291         Declare function to suspend XPC connection.
2292
2293         * wtf/spi/darwin/XPCSPI.h:
2294
2295 2020-07-16  Fujii Hironori  <Hironori.Fujii@sony.com>
2296
2297         [WTF] Remove the unnecessary inner class DefaultHash<T>::Hash
2298         https://bugs.webkit.org/show_bug.cgi?id=214389
2299
2300         Reviewed by Darin Adler.
2301
2302         DefaultHash<T> doesn't need to have a inner struct Hash. This can
2303         be a problem for forward declarations (Bug 214320 Comment 5).
2304
2305         * wtf/BitVector.h:
2306         * wtf/Forward.h:
2307         * wtf/HashFunctions.h:
2308         (WTF::PairHash::hash):
2309         (WTF::PairHash::equal):
2310         (WTF::TupleHash::hash):
2311         (WTF::TupleHash::equal):
2312         * wtf/ListHashSet.h:
2313         * wtf/LoggingHashMap.h:
2314         * wtf/LoggingHashSet.h:
2315         * wtf/MetaAllocatorPtr.h:
2316         * wtf/ObjectIdentifier.h:
2317         * wtf/OptionSetHash.h:
2318         (WTF::DefaultHash<OptionSet<T>>::hash):
2319         (WTF::DefaultHash<OptionSet<T>>::equal):
2320         (WTF::DefaultHash<OptionSet<T>>::Hash::hash): Deleted.
2321         (WTF::DefaultHash<OptionSet<T>>::Hash::equal): Deleted.
2322         * wtf/Packed.h:
2323         * wtf/RetainPtr.h:
2324         * wtf/StackShot.h:
2325         * wtf/URLHash.h:
2326         * wtf/VectorHash.h:
2327         (WTF::VectorHash::hash):
2328         * wtf/text/AtomString.h:
2329         * wtf/text/AtomStringHash.h:
2330         * wtf/text/CString.h:
2331         * wtf/text/StringHash.h:
2332         * wtf/text/StringImpl.h:
2333         * wtf/text/SymbolRegistry.h:
2334         (WTF::DefaultHash<SymbolRegistryKey>::hash):
2335         (WTF::DefaultHash<SymbolRegistryKey>::equal):
2336         (WTF::DefaultHash<SymbolRegistryKey>::Hash::hash): Deleted.
2337         (WTF::DefaultHash<SymbolRegistryKey>::Hash::equal): Deleted.
2338         * wtf/text/WTFString.h:
2339
2340 2020-07-16  Eric Carlson  <eric.carlson@apple.com>
2341
2342         Use AVRoutePickerView when available for choosing AirPlay devices
2343         https://bugs.webkit.org/show_bug.cgi?id=213497
2344         <rdar://problem/58610662>
2345
2346         Unreviewed build fix.
2347
2348         * wtf/PlatformHave.h: Define HAVE_AVROUTEPICKERVIEW.
2349
2350 2020-07-16  Jonathan Bedard  <jbedard@apple.com>
2351
2352         [Big Sur] De-duplicate SPI
2353         https://bugs.webkit.org/show_bug.cgi?id=214415
2354         <rdar://problem/65678060>
2355
2356         Reviewed by Darin Adler.
2357
2358         * wtf/PlatformHave.h:
2359
2360 2020-07-16  Jonathan Bedard  <jbedard@apple.com>
2361
2362         [Big Sur] Build on Seed 1
2363         https://bugs.webkit.org/show_bug.cgi?id=214396
2364         <rdar://problem/65644762>
2365
2366         Reviewed by Tim Horton.
2367
2368         * wtf/PlatformHave.h: Add HAVE(LARGE_CONTROL_SIZE).
2369
2370 2020-07-15  Saagar Jha  <saagar@saagarjha.com>
2371
2372         Add some missing boilerplate to help fix build on macOS Big Sur
2373         https://bugs.webkit.org/show_bug.cgi?id=214338
2374
2375         Reviewed by Darin Adler.
2376
2377         * wtf/PlatformHave.h: Add HAVE_LARGE_CONTROL_SIZE and enable it on Big Sur.
2378
2379 2020-07-15  Darin Adler  <darin@apple.com>
2380
2381         Remove a few more uses of the terms black/white list
2382         https://bugs.webkit.org/show_bug.cgi?id=214371
2383
2384         Reviewed by Alex Christensen.
2385
2386         * wtf/URLHelpers.cpp:
2387         (WTF::URLHelpers::loadIDNAllowedScriptList): Renamed.
2388         (WTF::URLHelpers::isLookalikeCharacter): Renamed.
2389         (WTF::URLHelpers::addScriptToIDNAllowedScriptList): Renamed.
2390         (WTF::URLHelpers::initializeDefaultIDNAllowedScriptList): Renamed.
2391         (WTF::URLHelpers::allCharactersInAllowedIDNScriptList): Renamed.
2392         (WTF::URLHelpers::mapHostName): Updated for name changes.
2393         * wtf/URLHelpers.h: Renamed things.
2394
2395         * wtf/cocoa/NSURLExtras.mm:
2396         (WTF::readIDNAllowedScriptListFile): Renamed.
2397         (WTF::URLHelpers::loadIDNAllowedScriptList): Renamed. Also use a modern for
2398         loop to simplify the code.
2399
2400 2020-07-15  Jim Mason  <jmason@ibinx.com>
2401
2402         [WTF] Fix PackedAlignedPtr for X86_64 canonical addresses
2403         https://bugs.webkit.org/show_bug.cgi?id=214142
2404
2405         Reviewed by Mark Lam
2406
2407         * wtf/Packed.h:
2408         (WTF::PackedAlignedPtr::get const):
2409         (WTF::PackedAlignedPtr::set):
2410
2411 2020-07-15  Brady Eidson  <beidson@apple.com>
2412
2413         Resolve race between IOHIDManager and GameController framework.
2414         <rdar://problem/65554490> and https://bugs.webkit.org/show_bug.cgi?id=214245
2415
2416         Reviewed by Tim Horton.
2417
2418         * wtf/PlatformHave.h:
2419
2420 2020-07-14  Alex Christensen  <achristensen@webkit.org>
2421
2422         REGRESSION(r262341) URL::createCFURL should produce a CFURL that uses UTF-8 to decode its percent-encoded sequences
2423         https://bugs.webkit.org/show_bug.cgi?id=214314
2424         <rdar://problem/65079249>
2425
2426         Reviewed by Darin Adler.
2427
2428         r262341 made it so we usually pass kCFStringEncodingISOLatin1 into CFURLCreateAbsoluteURLWithBytes when creating a CFURLRef from a WTF::URL.
2429         This is correct for the interpretation of the bytes to create a CFStringRef, and that is a change we want to make.
2430         The encoding, however, is also stored with the CFURL and used later when interpreting percent-encoded sequences.
2431         We want to use kCFStringEncodingUTF8 to make the interpretation of percent-encoded sequences the same as it used to be.
2432         To avoid making a separate CString most of the time, use characters8() only for ASCII-only URLs, where UTF-8 and Latin1 are the same.
2433         For all other URLs, we have to make a CString containing the UTF-8 representation of the string to get the percent-encoded sequences interpreted the same.
2434
2435         * wtf/cf/URLCF.cpp:
2436         (WTF::URL::createCFURL const):
2437         * wtf/cocoa/URLCocoa.mm:
2438         (WTF::URL::createCFURL const):
2439
2440 2020-07-14  Jer Noble  <jer.noble@apple.com>
2441
2442         Add support for parsing VP-style codec strings.
2443         https://bugs.webkit.org/show_bug.cgi?id=214270
2444         <rdar://problem/65500048>
2445
2446         Reviewed by Eric Carlson.
2447
2448         Add a variant of toIntegralType<> which returns an Optional. Since no existing callers of the
2449         original toIntegralType fail to pass in the optional bool* parameter, make that parameter
2450         non-optional, as it causes a conflict with the new Optional-returning version.
2451
2452         * wtf/text/StringToIntegerConversion.h:
2453         (WTF::toIntegralType):
2454
2455 2020-07-13  Keith Miller  <keith_miller@apple.com>
2456
2457         Clean up SourceProvider and add caller relative load script to jsc.cpp
2458         https://bugs.webkit.org/show_bug.cgi?id=214205
2459
2460         Reviewed by Yusuke Suzuki.
2461
2462         Using a URL as a boolean in a conditional should be a compile
2463         error.  Currently, it "works" because it actually calls `operator
2464         NSURL*()`... which is likely NOT what you wanted. Until we decide
2465         what it means to have a URL in a conditional it will be a compile
2466         error.
2467
2468         * wtf/URL.cpp:
2469         (WTF::URL::fileSystemPath const):
2470         * wtf/URL.h:
2471
2472 2020-07-12  Yusuke Suzuki  <ysuzuki@apple.com>
2473
2474         [JSC] String.protoytpe.toLocaleLowerCase's availableLocales HashSet is inefficient
2475         https://bugs.webkit.org/show_bug.cgi?id=213158
2476
2477         Reviewed by Darin Adler.
2478
2479         Add characterAt method to ASCIILiteral.
2480
2481         * wtf/text/ASCIILiteral.h:
2482
2483 2020-07-12  Darin Adler  <darin@apple.com>
2484
2485         Some further streamlining of Gradient handling code
2486         https://bugs.webkit.org/show_bug.cgi?id=214239
2487
2488         Reviewed by Sam Weinig.
2489
2490         * wtf/Vector.h: Added an overload for insert analogous to the ones we already have
2491         for append and uncheckedAppend, helpful for type deduction.
2492
2493 2020-07-12  Said Abou-Hallawa  <sabouhallawa@apple.com>
2494
2495         [macOS]: A HEIF image, selected from the OpenPanel, should be converted to an accepted MIME type
2496         https://bugs.webkit.org/show_bug.cgi?id=213347
2497         <rdar://problem/57258464>
2498
2499         Reviewed by Darin Adler.
2500
2501         Allow a suffix to be included in the temporary file name. The goal is to
2502         make it possible to create temporary image files with valid extensions.
2503
2504         * wtf/FileSystem.h:
2505         (WTF::FileSystemImpl::openTemporaryFile):
2506         * wtf/cocoa/FileSystemCocoa.mm:
2507         (WTF::FileSystemImpl::openTemporaryFile):
2508         * wtf/glib/FileSystemGlib.cpp:
2509         (WTF::FileSystemImpl::openTemporaryFile):
2510         * wtf/posix/FileSystemPOSIX.cpp:
2511         (WTF::FileSystemImpl::openTemporaryFile):
2512         * wtf/win/FileSystemWin.cpp:
2513         (WTF::FileSystemImpl::openTemporaryFile):
2514
2515 2020-07-12  Rob Buis  <rbuis@igalia.com>
2516
2517         Improve IPv6 detection when setting host/hostname
2518         https://bugs.webkit.org/show_bug.cgi?id=214218
2519
2520         Reviewed by Darin Adler.
2521
2522         * wtf/URL.cpp:
2523         (WTF::URL::setHost): do not bail out if ':' was found but we start
2524         with a '[', since the host may be IPv6.
2525         (WTF::URL::setHostAndPort): multiple colons are acceptable only in case of IPv6.
2526
2527 2020-07-11  Sam Weinig  <weinig@apple.com> and Yusuke Suzuki  <ysuzuki@apple.com>
2528
2529         Relanding "Make hasher work with tuple-like classes"
2530         https://bugs.webkit.org/show_bug.cgi?id=214224
2531
2532         Reviewed by Darin Adler.
2533
2534         The original patch broke the internal build. And reverting patch (r264274) broke the build too.
2535         This patch relands r264270 with `constexpr` => `inline constexpr` template variable fix.
2536
2537         * wtf/Hasher.h:
2538         (WTF::add):
2539         (WTF::addTupleLikeHelper):
2540         (WTF::TypeCheckHelper<decltype): Deleted.
2541         (WTF::addTupleHelper): Deleted.
2542         Add support for tuple-like classes. These are classes that:
2543         - Have defined specializations of std::tuple_size<> and std::tuple_element<>.
2544         - And have either a member function named get<> or there exists a function get<>()
2545           that takes the class as argument that can be looked up via ADL.
2546
2547         To avoid abiguity when hashing std::array, the add() overload enabled for containers
2548         with a begin member functions also now checks that the container is not tuple-like.
2549         The std::pair overload is no longer needed as it will use the tuple-like one now.
2550
2551         * wtf/OptionSet.h:
2552         * wtf/StdLibExtras.h:
2553         Move is_type_complete_v<> from OptionSet.h to StdLibExtras.h and rename to
2554         adhere to WebKit style as IsTypeComplete<>.
2555
2556 2020-07-11  Commit Queue  <commit-queue@webkit.org>
2557
2558         Unreviewed, reverting r264270.
2559         https://bugs.webkit.org/show_bug.cgi?id=214228
2560
2561         Broke the build
2562
2563         Reverted changeset:
2564
2565         "Make hasher work with tuple-like classes"
2566         https://bugs.webkit.org/show_bug.cgi?id=214224
2567         https://trac.webkit.org/changeset/264270
2568
2569 2020-07-11  Darin Adler  <darin@apple.com>
2570
2571         Remove live ranges from AccessibilityObject.h, AccessibilityObjectInterface.h, AccessibilityRenderObject.h, AXIsolatedObject.h
2572         https://bugs.webkit.org/show_bug.cgi?id=214215
2573
2574         Reviewed by Sam Weinig.
2575
2576         * wtf/cocoa/VectorCocoa.h: Added a new makeVector that takes a function.
2577         Also updated createNSArray to use std::invoke.
2578
2579 2020-07-11  Sam Weinig  <weinig@apple.com>
2580
2581         Make hasher work with tuple-like classes
2582         https://bugs.webkit.org/show_bug.cgi?id=214224
2583
2584         Reviewed by Darin Adler.
2585
2586         * wtf/Hasher.h:
2587         (WTF::add):
2588         (WTF::addTupleLikeHelper):
2589         (WTF::TypeCheckHelper<decltype): Deleted.
2590         (WTF::addTupleHelper): Deleted.
2591         Add support for tuple-like classes. These are classes that:
2592         - Have defined specializations of std::tuple_size<> and std::tuple_element<>.
2593         - And have either a member function named get<> or there exists a function get<>()
2594           that takes the class as argument that can be looked up via ADL.
2595
2596         To avoid abiguity when hashing std::array, the add() overload enabled for containers
2597         with a begin member functions also now checks that the container is not tuple-like.
2598         The std::pair overload is no longer needed as it will use the tuple-like one now.
2599
2600         * wtf/OptionSet.h:
2601         * wtf/StdLibExtras.h:
2602         Move is_type_complete_v<> from OptionSet.h to StdLibExtras.h and rename to
2603         adhere to WebKit style as IsTypeComplete<>.
2604
2605 2020-07-10  Brady Eidson  <beidson@apple.com>
2606
2607         GameController.framework gamepads should support Home buttons.
2608         <rdar://problem/63500696> and https://bugs.webkit.org/show_bug.cgi?id=212933
2609
2610         Reviewed by Tim Horton.
2611
2612         * wtf/PlatformHave.h:
2613
2614 2020-07-10  Xabier Rodriguez Calvar  <calvaris@igalia.com>
2615
2616         [GStreamer][EME][OpenCDM] Implement OpenCDM support
2617         https://bugs.webkit.org/show_bug.cgi?id=213550
2618
2619         Reviewed by Philippe Normand.
2620
2621         * wtf/PlatformEnable.h: Disable OPENCDM by default.
2622
2623 2020-07-09  Xabier Rodriguez Calvar  <calvaris@igalia.com>
2624
2625         Simplify BoxPtr::create
2626         https://bugs.webkit.org/show_bug.cgi?id=214144
2627
2628         Reviewed by Darin Adler.
2629
2630         * wtf/BoxPtr.h:
2631         (WTF::createBoxPtr): Use the alias instead of the unrolled type.
2632
2633 2020-07-09  Per Arne Vollan  <pvollan@apple.com>
2634
2635         [Cocoa] Update Launch Services database in the WebContent process from the Network process
2636         https://bugs.webkit.org/show_bug.cgi?id=213794
2637
2638         Reviewed by Brent Fulgham.
2639
2640         Added HAVE define for determining if the class LSDatabaseContext is present.
2641
2642         * wtf/PlatformHave.h:
2643
2644 2020-07-09  Commit Queue  <commit-queue@webkit.org>
2645
2646         Unreviewed, reverting r264148.
2647         https://bugs.webkit.org/show_bug.cgi?id=214136
2648
2649         Introduced layout test failures
2650
2651         Reverted changeset:
2652
2653         "[Cocoa] Update Launch Services database in the WebContent
2654         process from the Network process"
2655         https://bugs.webkit.org/show_bug.cgi?id=213794
2656         https://trac.webkit.org/changeset/264148
2657
2658 2020-07-09  Xabier Rodriguez Calvar  <calvaris@igalia.com>
2659
2660         [WTF] Implement new BoxPtr alias
2661         https://bugs.webkit.org/show_bug.cgi?id=212379
2662
2663         Reviewed by Darin Adler.
2664
2665         Added BoxPtr.h that includes BoxPtr<T> as alias of
2666         Box<std::unique_ptr<T>>. We discussed about this class on bugzilla
2667         and we agreed on this alias being the best idea. Apart from the
2668         alias I'm adding a couple of helpers like a create function and
2669         the operator== and operator!=.
2670
2671         Tests: BoxPtr API tests added.
2672
2673         * WTF.xcodeproj/project.pbxproj:
2674         * wtf/BoxPtr.h: Added.
2675         (WTF::createBoxPtr):
2676         (WTF::operator==):
2677         (WTF::operator!=):
2678         * wtf/CMakeLists.txt:
2679
2680 2020-07-08  Per Arne Vollan  <pvollan@apple.com>
2681
2682         [Cocoa] Update Launch Services database in the WebContent process from the Network process
2683         https://bugs.webkit.org/show_bug.cgi?id=213794
2684
2685         Reviewed by Brent Fulgham.
2686
2687         Added HAVE define for determining if the class LSDatabaseContext is present.
2688
2689         * wtf/PlatformHave.h:
2690
2691 2020-07-08  Per Arne Vollan  <pvollan@apple.com>
2692
2693         [Cocoa] Make it possible to establish direct XPC connections between WebKit processes
2694         https://bugs.webkit.org/show_bug.cgi?id=214079
2695
2696         Reviewed by Brent Fulgham.
2697
2698         Declare function to create a xpc endpoint, as well as a function to create a connection from an endpoint.
2699
2700         * wtf/spi/darwin/XPCSPI.h:
2701
2702 2020-07-08  Geoffrey Garen  <ggaren@apple.com>
2703
2704         dyld: Symbol not found: __ZN3WTF19initializeThreadingEv - webkit MacOSX
2705         https://bugs.webkit.org/show_bug.cgi?id=214034
2706
2707         Reviewed by Mark Lam.
2708
2709         * wtf/Threading.cpp:
2710         (WTF::initializeThreading): Export the old symbol name for compatibility.
2711
2712 2020-07-07  Carlos Garcia Campos  <cgarcia@igalia.com>
2713
2714         [GTK] WebProcess hangs when browsing GitHub
2715         https://bugs.webkit.org/show_bug.cgi?id=213970
2716
2717         Reviewed by Sergio Villar Senin.
2718
2719         Use a lower priority for LayerFlushTimer and DisplayRefreshMonitorTimer. We were using a very high priority for
2720         drawing with the idea of keeping a good rendering performance without being affected by other timers. The
2721         problem is that animations can be controlled by timers, so we need to ensure that MainThreadSharedTimer has
2722         higher priority than drawing.
2723
2724         * wtf/glib/RunLoopSourcePriority.h: Use 110 for LayerFlushTimer and DisplayRefreshMonitorTimer.
2725
2726 2020-07-06  Geoffrey Garen  <ggaren@apple.com>
2727
2728         callOnMainThread should use the same queue as RunLoop::dispatch
2729         https://bugs.webkit.org/show_bug.cgi?id=213830
2730
2731         Reviewed by Brady Eidson.
2732
2733         This should reduce flakiness in scheduled tasks.
2734
2735         There's no need to keep a separate queue anymore since both APIs have
2736         the same semantics now.
2737
2738         * wtf/MainThread.cpp:
2739         (WTF::callOnMainThread):
2740         (WTF::functionQueue): Deleted.
2741         (WTF::dispatchFunctionsFromMainThread): Deleted.
2742         * wtf/MainThread.h:
2743         * wtf/cocoa/MainThreadCocoa.mm:
2744         (WTF::scheduleDispatchFunctionsOnMainThread): Deleted.
2745         * wtf/generic/MainThreadGeneric.cpp:
2746         (WTF::scheduleDispatchFunctionsOnMainThread): Deleted.
2747         * wtf/win/MainThreadWin.cpp:
2748         (WTF::scheduleDispatchFunctionsOnMainThread): Deleted.
2749
2750 2020-07-06  Michael Catanzaro  <mcatanzaro@gnome.org>
2751
2752         Spams system logs with "Current memory footprint: 10 MB"
2753         https://bugs.webkit.org/show_bug.cgi?id=213991
2754
2755         Reviewed by Darin Adler.
2756
2757         This particular log statement is too much spam in the system journal, since it prints
2758         continuously under normal operating conditions. Let's limit it only to Apple platforms,
2759         which have had RELEASE_LOG() for a long time and where this is presumably expected.
2760
2761         * wtf/MemoryPressureHandler.cpp:
2762         (WTF::MemoryPressureHandler::measurementTimerFired):
2763
2764 2020-07-06  Sam Weinig  <weinig@apple.com>
2765
2766         Compile-time enable (but leave disabled at runtime by default) date/time input types on macOS to allow testing of cross platform (e.g. DOM) aspects of the controls
2767         https://bugs.webkit.org/show_bug.cgi?id=213949
2768
2769         Reviewed by Darin Adler.
2770
2771         * wtf/PlatformEnableCocoa.h:
2772         Enable building date/time input types on all Cocoa ports. 
2773
2774 2020-07-06  Geoffrey Garen  <ggaren@apple.com>
2775
2776         RunLoop::dispatch should only call wakeUp when needed
2777         https://bugs.webkit.org/show_bug.cgi?id=213705
2778
2779         Reviewed by Brady Eidson.
2780
2781         RunLoop::wakeUp is super expensive (at least on Darwin platforms). Back
2782         when IndexedDB used RunLoop::dispatch, RunLoop::wakeUp accounted for 15%
2783         of all database lookup time.
2784
2785         We can reduce the cost a bit by only scheduling a wakeUp when the queue
2786         is empty.
2787
2788         * wtf/RunLoop.cpp:
2789         (WTF::RunLoop::performWork): Take all the functions out of the pending
2790         queue before we start executing them; that way, we can tell if a new
2791         function has been added to the pending queue since we enetered
2792         performWork.
2793
2794         (WTF::RunLoop::dispatch): Only call wakeUp if we need to.
2795
2796         * wtf/RunLoop.h:
2797
2798 2020-07-04  Darin Adler  <darin@apple.com>
2799
2800         [Cocoa] Add almost everything from FeatureDefines.xcconfig to PlatformEnableCocoa.h
2801         https://bugs.webkit.org/show_bug.cgi?id=213964
2802
2803         Reviewed by Sam Weinig.
2804
2805         Added logic that matches what FeatureDefines.xcconfig does for everything
2806         except for ENABLE_EXPERIMENTAL_FEATURES.
2807
2808         Changed format so we mostly list platforms where we do not want to enable
2809         a certain feature; also order it pretty consistently macOS, iOS, Mac Catalyst,
2810         watchOS, then tvOS. This format highlights possible mistakes when not enabling
2811         a feature on some platforms in an easier to understand way.
2812
2813         * wtf/PlatformEnableCocoa.h:
2814         (ENABLE_AIRPLAY_PICKER): List platforms that do *not* enable this.
2815         (ENABLE_APPLE_PAY): All except Mac Catalyst, watchOS, tvOS.
2816         Not sure why disabled in Mac Catalyst, but replicates FeatureDefines.xcconfig.
2817         (ENABLE_APPLE_PAY_REMOTE_UI): List platforms that do *not* enable this.
2818         (ENABLE_AUTOCAPITALIZE): List platforms that do *not* enable this.
2819         (ENABLE_AUTOCORRECT): List platforms that do *not* enable this.
2820         (ENABLE_CONTENT_FILTERING): All except older watchOS simulator and tvOS.
2821         (ENABLE_CORE_IMAGE_ACCELERATED_FILTER_RENDER): Re-sorted this.
2822         (ENABLE_CSS_CONIC_GRADIENTS): All except older macOS and tvOS. The tvOS
2823         exception seems questionable, so added a FIXME.
2824         (ENABLE_DARK_MODE_CSS): All except watchOS and tvOS.
2825         (ENABLE_DATA_INTERACTION): All except macOS, watchOS, and tvOS.
2826         (ENABLE_DATA_DETECTION): All except Mac Catalyst, watchOS, and tvOS.
2827         (ENABLE_EDITABLE_REGION): Only iOS.
2828         (ENABLE_ENCRYPTED_MEDIA): All except older macOS and Mac Catalyst.
2829         (ENABLE_FULLSCREEN_API): All except Mac Catalyst, watchOS, and tvOS.
2830         (ENABLE_FULL_KEYBOARD_ACCESS): All except Mac Catalyst, watchOS, and tvOS.
2831         (ENABLE_GAMEPAD): All except watchOS.
2832         (ENABLE_INPUT_TYPE_DATE): All except macOS, Mac Catalyst, and tvOS.
2833         (ENABLE_INPUT_TYPE_DATETIMELOCAL): Ditto.
2834         (ENABLE_INPUT_TYPE_MONTH): Ditto.
2835         (ENABLE_INPUT_TYPE_TIME): Ditto.
2836         (ENABLE_INPUT_TYPE_WEEK): Ditto.
2837         (ENABLE_MEDIA_CAPTURE): All except macOS.
2838         (ENABLE_MEDIA_SOURCE): All except Mac Catalyst, watchOS, tvOS, and
2839         all simulators.
2840         (ENABLE_MEDIA_STREAM): All except Mac Catalyst, watchOS, and tvOS.
2841         (ENABLE_NAVIGATOR_STANDALONE): All iOS family. (Considered writing as
2842         all except macOS, but left like this to match some .cpp code for now.)
2843         (ENABLE_OVERFLOW_SCROLLING_TOUCH): All iOS family.
2844         (ENABLE_PICTURE_IN_PICTURE_API): All except Mac Catalyst, watchOS, and tvOS.
2845         (ENABLE_SPEECH_SYNTHESIS): All except Mac Catalyst.
2846         (ENABLE_REVEAL): All except older macOS, watchOS, and tvOS.
2847         (ENABLE_SIGILL_CRASH_ANALYZER): All except macOS and watchOS.
2848         (ENABLE_TAKE_UNBOUNDED_NETWORKING_ASSERTION): All except macOS, watchOS, and tvOS.
2849         (ENABLE_VIDEO_PRESENTATION_MODE): All except simulators and tvOS.
2850         (ENABLE_WEBGPU): All except older macOS, Mac Catalyst, and simulators.
2851         (ENABLE_WEB_API_STATISTICS): Re-sorted this.
2852         (ENABLE_WEB_AUTHN): All except Mac Catalyst, watchOS, and tvOS.
2853         (ENABLE_WEB_RTC): All except Mac Catalyst, watchOS, and tvOS.
2854
2855 2020-07-04  Darin Adler  <darin@apple.com>
2856
2857         [Cocoa] Remove all features from FeatureDefines.xcconfig that are already mentioned in PlatformEnableCocoa.h
2858         https://bugs.webkit.org/show_bug.cgi?id=213962
2859
2860         Reviewed by Sam Weinig.
2861
2862         * wtf/PlatformEnableCocoa.h:
2863         (ENABLE_DRAG_SUPPORT): Before, this was enabled for iOS, iOS simulator, and Mac Catalyst in the
2864         FeatureDefines.xcconfig file, but then disabled for any other iOS family platform here, then enabled
2865         by default in PlatformEnable.h, which covered Mac. Instead, disable here only for watchOS and tvOS,
2866         which gives the same result in a more straightforward way.
2867         (ENABLE_GEOLOCATION): Before, this was enabled for iOS, iOS simulator, Mac Catalyst, and Mac in the
2868         FeatureDefines.xcconfig file, then enabled for any other iOS family platform here. Instead, just
2869         enable here for all Cocoa platforms, which gives the same result in a more straightforward way.
2870
2871 2020-07-03  Darin Adler  <darin@apple.com>
2872
2873         Make generate-unified-sources.sh not depend on features being listed in FEATURE_DEFINES environment variable
2874         https://bugs.webkit.org/show_bug.cgi?id=212420
2875
2876         Reviewed by Don Olmstead.
2877
2878         * Scripts/generate-unified-source-bundles.rb: Removed the --feature-flags
2879         command line option along with the code that implements it.
2880
2881 2020-07-03  Sam Weinig  <weinig@apple.com>
2882
2883         Remove support for ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE
2884         https://bugs.webkit.org/show_bug.cgi?id=213932
2885
2886         Reviewed by Darin Adler.
2887
2888         Removes support for non-standard <input type="datetime">, currently being 
2889         guarded by the macro ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE. This macro, was
2890         added back in 2013 as a temporary measure to support some engines who shipped
2891         support for <input type="datetime">. It is currently not enabled for any
2892         ports so now seems like as good a time as any to remove it.
2893
2894         * wtf/PlatformEnable.h:
2895
2896 2020-07-03  Sam Weinig  <weinig@apple.com>
2897
2898         Add "-Wliteral-conversion" warning to Xcode based builds and fix the issues it finds
2899         https://bugs.webkit.org/show_bug.cgi?id=213931
2900
2901         Reviewed by Darin Adler.
2902
2903         * Configurations/Base.xcconfig:
2904         Add -Wliteral-conversion.
2905
2906 2020-07-03  Commit Queue  <commit-queue@webkit.org>
2907
2908         Unreviewed, reverting r263882.
2909         https://bugs.webkit.org/show_bug.cgi?id=213933
2910
2911         Broke the build
2912
2913         Reverted changeset:
2914
2915         "Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to
2916         replace _WKProcessPoolConfiguration.hstsStorageDirectory"
2917         https://bugs.webkit.org/show_bug.cgi?id=213048
2918         https://trac.webkit.org/changeset/263882
2919
2920 2020-07-02  Alex Christensen  <achristensen@webkit.org>
2921
2922         Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to replace _WKProcessPoolConfiguration.hstsStorageDirectory
2923         https://bugs.webkit.org/show_bug.cgi?id=213048
2924
2925         Reviewed by Youenn Fablet.
2926
2927         * wtf/PlatformHave.h:
2928
2929 2020-07-02  Alex Christensen  <achristensen@webkit.org>
2930
2931         Add testing infrastructure and SPI declaration for HTTP/2 ping
2932         https://bugs.webkit.org/show_bug.cgi?id=213913
2933
2934         Reviewed by Jer Noble.
2935
2936         This is work towards rdar://problem/64495827
2937
2938         * wtf/PlatformHave.h:
2939
2940 2020-07-01  Tim Horton  <timothy_horton@apple.com>
2941
2942         Upstream application accent color support
2943         https://bugs.webkit.org/show_bug.cgi?id=213859
2944
2945         Reviewed by Wenson Hsieh.
2946
2947         * wtf/PlatformHave.h:
2948
2949 2020-07-01  Alexey Shvayka  <shvaikalesh@gmail.com>
2950
2951         Use more efficient makeString() instead of StringBuilder
2952         https://bugs.webkit.org/show_bug.cgi?id=213708
2953
2954         Reviewed by Sam Weinig.
2955
2956         Introduces StringTypeAdapter<std::tuple> overload, which enables using
2957         makeString() instead of StringBuilder in more cases.
2958
2959         * wtf/text/StringConcatenate.h:
2960         (WTF::StringTypeAdapter<std::tuple<StringTypes...>, void>): Added.
2961
2962 2020-06-30  Geoffrey Garen  <ggaren@apple.com>
2963
2964         [Cocoa] [GTK] RunLoop::Timer::isActive() is incorrect for timers while they are firing
2965         https://bugs.webkit.org/show_bug.cgi?id=213771
2966
2967         Reviewed by Darin Adler.
2968
2969         I noticed this because it triggered an assertion failure in
2970         BackgroundProcessResponsivenessTimer::scheduleNextResponsivenessCheck().
2971
2972         In WebKit timer parlance "isActive()" means "will fire again", so a
2973         one-shot timer should report inactive right when it fires. Otherwise,
2974         there's no way to check if it needs to be rescheduled.
2975
2976         * wtf/cf/RunLoopCF.cpp:
2977         (WTF::RunLoop::TimerBase::timerFired): For one-shot timers, stop our
2978         timer before it fires, so that we know it is not active.
2979
2980         * wtf/glib/RunLoopGLib.cpp:
2981         (WTF::RunLoop::TimerBase::TimerBase): For repeating timers, reschedule
2982         our timer before it fires, so that we know it is active.
2983
2984 2020-06-30  Mark Lam  <mark.lam@apple.com>
2985
2986         Add handling for a case of OOME in CSSTokenizer and CSSParser.
2987         https://bugs.webkit.org/show_bug.cgi?id=213702
2988         <rdar://problem/64808889>
2989
2990         Reviewed by Darin Adler.
2991
2992         1. Added FailureAction so that we can parameterize how we want to handle failures.
2993            In this patch, we're only using this for allocation failures, but we could
2994            technically apply this to other types of failures as well.
2995
2996         2. Apply FailureAction to many methods in Vector (and its super classes) so that
2997            we can start de-duplicating code.  Previously, we were always duplicating code
2998            just to have a "try" version of the same method that reports the failure to
2999            allocate instead of crashing.  We can now parameterize all these methods on a
3000            FailureAction template parameter instead, and avoid the code duplication.
3001            This patch also reverses some of the existing code duplication.
3002
3003         * WTF.xcodeproj/project.pbxproj:
3004         * wtf/CMakeLists.txt:
3005         * wtf/FailureAction.h: Added.
3006         * wtf/Vector.h:
3007         (WTF::VectorBufferBase::allocateBuffer):
3008         (WTF::VectorBufferBase::tryAllocateBuffer):
3009         (WTF::VectorBuffer::allocateBuffer):
3010         (WTF::VectorBuffer::tryAllocateBuffer):
3011         (WTF::Vector::reserveCapacity):
3012         (WTF::Vector::tryReserveCapacity):
3013         (WTF::Vector::reserveInitialCapacity):
3014         (WTF::Vector::tryReserveInitialCapacity):
3015         (WTF::Vector::append):
3016         (WTF::Vector::tryAppend):
3017         (WTF::Vector::constructAndAppend):
3018         (WTF::Vector::tryConstructAndAppend):
3019         (WTF::Vector::expandCapacity):
3020         (WTF::Vector::resize):
3021         (WTF::Vector::grow):
3022         (WTF::Vector::reserveCapacity):
3023         (WTF::Vector::reserveInitialCapacity):
3024         (WTF::Vector::append):
3025         (WTF::Vector::constructAndAppend):
3026         (WTF::Vector::appendSlowCase):
3027         (WTF::Vector::constructAndAppendSlowCase):
3028         (WTF::Vector::appendVector):
3029         (WTF::Vector::insert):
3030         (WTF::Vector::tryExpandCapacity): Deleted.
3031         (WTF::Vector::tryReserveCapacity): Deleted.
3032         (WTF::Vector::tryAppend): Deleted.
3033         (WTF::Vector::tryConstructAndAppend): Deleted.
3034         (WTF::Vector::tryConstructAndAppendSlowCase): Deleted.
3035
3036 2020-06-30  Peng Liu  <peng.liu6@apple.com>
3037
3038         Enable the support of FULLSCREEN_API in WebKitTestRunner
3039         https://bugs.webkit.org/show_bug.cgi?id=213774
3040
3041         Reviewed by Youenn Fablet.
3042
3043         Replace the definition of ENABLE_FULLSCREEN_API in FeatureDefines.xcconfig with
3044         the one in PlatformEnableCocoa.h. We have to do that because WebKitTestRunner
3045         does not have a FeatureDefines.xcconfig but it uses "ENABLE(FULLSCREEN_API)"
3046         to conditionally compile code to test the element fullscreen API.
3047         WebKitTestRunner can use the macro defined in PlatformEnableCocoa.h.
3048
3049         * wtf/PlatformEnableCocoa.h:
3050
3051 2020-06-30  Alex Christensen  <achristensen@webkit.org>
3052
3053         Remove WTF::MD5
3054         https://bugs.webkit.org/show_bug.cgi?id=213766
3055
3056         Reviewed by Youenn Fablet.
3057
3058         It was only used for CURL's cache file name generation.
3059         If you want to use a broken hash function, use SHA1.
3060
3061         * WTF.xcodeproj/project.pbxproj:
3062         * wtf/CMakeLists.txt:
3063         * wtf/MD5.cpp: Removed.
3064         * wtf/MD5.h: Removed.
3065
3066 2020-06-30  Andy Estes  <aestes@apple.com>
3067
3068         [Xcode] Enable the "My Mac (Mac Catalyst)" destination in WebKit Xcode projects
3069         https://bugs.webkit.org/show_bug.cgi?id=213740
3070
3071         Reviewed by Darin Adler.
3072
3073         * Configurations/Base.xcconfig: Set SUPPORTS_MACCATALYST to YES to tell Xcode that this
3074         project supports building for Mac Catalyst.
3075
3076 2020-06-30  Commit Queue  <commit-queue@webkit.org>
3077
3078         Unreviewed, reverting r263724.
3079         https://bugs.webkit.org/show_bug.cgi?id=213781
3080
3081
3082         Reverted changeset:
3083
3084         "Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to
3085         replace _WKProcessPoolConfiguration.hstsStorageDirectory"
3086         https://bugs.webkit.org/show_bug.cgi?id=213048
3087         https://trac.webkit.org/changeset/263724
3088
3089 2020-06-29  Geoffrey Garen  <ggaren@apple.com>
3090
3091         Unreviewed, rolling out an accidental change from r263723.
3092
3093         * wtf/cf/RunLoopCF.cpp:
3094         (WTF::RunLoop::TimerBase::timerFired):
3095
3096 2020-06-29  Alex Christensen  <achristensen@webkit.org>
3097
3098         Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to replace _WKProcessPoolConfiguration.hstsStorageDirectory
3099         https://bugs.webkit.org/show_bug.cgi?id=213048
3100
3101         Reviewed by Youenn Fablet.
3102
3103         * wtf/PlatformHave.h:
3104
3105 2020-06-29  Geoffrey Garen  <ggaren@apple.com>
3106
3107         [GTK] [Win] Build callOnMainThread on WTF::RunLoop rather than on a timer
3108         https://bugs.webkit.org/show_bug.cgi?id=213694
3109
3110         Reviewed by Carlos Garcia Campos.
3111
3112         As of https://bugs.webkit.org/show_bug.cgi?id=213063, Darwin platforms
3113         use the RunLoop. Let's match them for consistency, and to delete some
3114         code.
3115
3116         * wtf/generic/MainThreadGeneric.cpp:
3117         (WTF::scheduleDispatchFunctionsOnMainThread):
3118         (WTF::MainThreadDispatcher::MainThreadDispatcher): Deleted.
3119         (WTF::MainThreadDispatcher::schedule): Deleted.
3120         (WTF::MainThreadDispatcher::fired): Deleted.
3121         * wtf/glib/RunLoopSourcePriority.h:
3122         * wtf/win/MainThreadWin.cpp:
3123         (WTF::initializeMainThreadPlatform):
3124         (WTF::scheduleDispatchFunctionsOnMainThread):
3125         (WTF::ThreadingWindowWndProc): Deleted.
3126
3127 2020-06-29  Guowei Yang  <guowei_yang@apple.com>
3128
3129         Adding Experimental Feature Flags for CoreImage backed SVG/CSS Filters
3130         https://bugs.webkit.org/show_bug.cgi?id=213578
3131
3132         Reviewed by Darin Adler, Simon Fraser, Myles C. Maxfield.
3133
3134         Preparing to implement CoreImage backed filter rendering
3135         Needs Compiler guards and experimental feature guard.
3136
3137         * wtf/PlatformEnableCocoa.h: Added definition of a feature flag, 
3138           ENABLE_CORE_IMAGE_ACCELERATED_FILTER_RENDER
3139         * wtf/PlatformUse.h:  Added compiler guard #define USE_CORE_IMAGE 1
3140           to indicate whether CoreImage code is visible to the compiler
3141
3142 2020-06-29  Tetsuharu Ohzeki  <tetsuharu.ohzeki@gmail.com>
3143
3144         Remove ENABLE_STREAMS_API compilation flag
3145         https://bugs.webkit.org/show_bug.cgi?id=213728
3146
3147         Reviewed by Sam Weinig.
3148
3149         * wtf/PlatformEnable.h:
3150
3151 2020-06-29  Yusuke Suzuki  <ysuzuki@apple.com>
3152
3153         [WTF] Add more StringView / ASCIILiteral helper functions and add ICUDeleter
3154         https://bugs.webkit.org/show_bug.cgi?id=209774
3155
3156         Reviewed by Ross Kirsling and Darin Adler.
3157
3158         Add ICUDeleter for cleaner ICU object deletion.
3159         Add ICU::majorVersion and ICU::minorVersion to switch the skeleton string in Intl.NumberFormat.
3160         Add more features for ASCIILiteral.
3161
3162         This patch is part of https://bugs.webkit.org/show_bug.cgi?id=209774. I land it separately from
3163         Intl.NumberFormat change to unlock the further Intl implementations using ICUDeleter.
3164
3165         * WTF.xcodeproj/project.pbxproj:
3166         * wtf/CMakeLists.txt:
3167         * wtf/text/ASCIILiteral.h:
3168         * wtf/text/StringView.cpp:
3169         (WTF::codePointCompare):
3170         * wtf/text/StringView.h:
3171         (WTF::StringView::StringView):
3172         * wtf/unicode/icu/ICUHelpers.cpp: Copied from Source/WTF/wtf/text/ASCIILiteral.h.
3173         (WTF::ICU::version):
3174         (WTF::ICU::majorVersion):
3175         (WTF::ICU::minorVersion):
3176         * wtf/unicode/icu/ICUHelpers.h:
3177         (WTF::ICUDeleter::operator()):
3178
3179 2020-06-28  Geoffrey Garen  <ggaren@apple.com>
3180
3181         Rename initializeThreading to initialize
3182         https://bugs.webkit.org/show_bug.cgi?id=213674
3183
3184         Reviewed by Mark Lam.
3185
3186         Reasons:
3187
3188         (1) You need to call it even if you don't use threads.
3189
3190         (2) It initializes things unrelated to threads (like the PRNG).
3191
3192         (3) People seem to get confused about the relationship between
3193         initializeThreading() and initializeMainThread(), and sometimes think
3194         initializeThreading() is a superset. The opposite is true! I think the
3195         confusion may come from "threading" being read as "all threading".
3196
3197         Some filenames still use the legacy name. We can fix that in post.
3198
3199         * benchmarks/ConditionSpeedTest.cpp:
3200         (main):
3201         * benchmarks/HashSetDFGReplay.cpp:
3202         (main):
3203         * benchmarks/LockFairnessTest.cpp:
3204         (main):
3205         * benchmarks/LockSpeedTest.cpp:
3206         (main):
3207         * wtf/MainThread.cpp:
3208         (WTF::initializeMainThread):
3209         * wtf/Threading.cpp:
3210         (WTF::Thread::create):
3211         (WTF::initialize):
3212         (WTF::initializeThreading): Deleted.
3213         * wtf/Threading.h:
3214         (WTF::Thread::current):
3215
3216 2020-06-27  Sam Weinig  <weinig@apple.com>
3217
3218         Improve assertions in StringParsingBuffer 
3219         https://bugs.webkit.org/show_bug.cgi?id=213633
3220
3221         Reviewed by Darin Adler.
3222
3223         * wtf/text/StringParsingBuffer.h:
3224         Address additional feedback and improve the assertions by making them more
3225         clear and avoid potential overflows.
3226
3227 2020-06-26  Geoffrey Garen  <ggaren@apple.com>
3228
3229         Re-land r262863
3230         https://bugs.webkit.org/show_bug.cgi?id=213654
3231
3232         Reviewed by Tadeu Zagallo.
3233
3234         r263575 should fix the crash we saw.
3235
3236         * wtf/cocoa/MainThreadCocoa.mm:
3237         (WTF::initializeMainThreadPlatform):
3238         (WTF::scheduleDispatchFunctionsOnMainThread):
3239         (-[JSWTFMainThreadCaller call]): Deleted.
3240
3241 2020-06-26  Geoffrey Garen  <ggaren@apple.com>
3242
3243         Initializing the main thread should initialize the main run loop
3244         https://bugs.webkit.org/show_bug.cgi?id=213637
3245
3246         Reviewed by Anders Carlsson.
3247
3248         Previously, some code initialized one, some the other, and some both;
3249         and some code tried to initialize more than once; and some code tried
3250         to initialize in ways that would crash but luckily got pre-empted by
3251         other code that had already initialized.
3252
3253         In addition to general confusion, this setup made it subtly high stakes
3254         to call certain functions, like callOnMainThread or
3255         RunLoop::main().dispatch(), because they might crash if the right
3256         initialization had not been performed.
3257
3258         Let's fix that.
3259
3260         * wtf/MainThread.cpp:
3261         (WTF::initializeMainThread): Removed defunct comment about
3262         initializeMainThreadToProcessMainThread. Shrank scope of initializeKey.
3263         * wtf/RunLoop.cpp:
3264         (WTF::RunLoop::initializeMain): Don't call initializeMainThread anymore
3265         because it calls us now. No need for a store fence since we run on the
3266         main thread and we don't store anything.
3267         (WTF::RunLoop::initializeWeb): Upgrade to RELEASE_ASSERT.
3268         * wtf/RunLoop.h: Removed incorrect comment. (Fascinating to wonder when
3269         it became incorrect.)
3270
3271 2020-06-25  Sam Weinig  <weinig@apple.com>
3272
3273         Add a new templated string type to help write more idiomatic parsing code
3274         https://bugs.webkit.org/show_bug.cgi?id=213588
3275
3276         Reviewed by Darin Adler.
3277         
3278         Introduce StringParsingBuffer<CharType>, a new class in the String class family
3279         designed to be used by parsing code. It's designed to be used with the helper
3280         function, readCharactersForParsing, and for the user to write the parsing code
3281         in a way that will work for both latin1 and UTF-16 inputs. Most usage will likely
3282         follow something like the following form
3283         
3284         {
3285             ...
3286             auto parsedResult = readCharactersForParsing(stringishObjectToParse, [](auto parsingBuffer) {
3287                 while (parsingBuffer.hasCharactersRemaining()) {
3288                     if (*parsingBuffer == foo) {
3289                         ...
3290                     }
3291                 }
3292
3293                 ...
3294
3295                 return parsedResult
3296             });
3297             ...
3298         }
3299
3300         API tests added.
3301
3302         * WTF.xcodeproj/project.pbxproj:
3303         * wtf/CMakeLists.txt:
3304         Add StringParsingBuffer.h
3305
3306         * wtf/Forward.h:
3307         Forward declare StringParsingBuffer.
3308
3309         * wtf/text/StringParsingBuffer.h: 
3310         Added.
3311
3312 2020-06-25  Tadeu Zagallo  <tzagallo@apple.com>
3313
3314         WTF::callOnMainThread should not require the main runloop to be initialized
3315         https://bugs.webkit.org/show_bug.cgi?id=213612
3316         <rdar://problem/64446028>
3317
3318         Reviewed by Yusuke Suzuki.
3319
3320         When using JavaScriptCore as a framework, the WTF main runloop is never initialized. However,
3321         the inspector uses CFString wrappers, which use `callOnMainThread` when deallocating the
3322         underlying string. For now, we bring back the old `JSWTFMainThreadCaller` to ensure we have
3323         a way of dispatching to the main thread, even when the main runloop hasn't been initialized.
3324
3325         * wtf/RunLoop.cpp:
3326         (WTF::RunLoop::mainIfExists):
3327         * wtf/RunLoop.h:
3328         * wtf/cocoa/MainThreadCocoa.mm:
3329         (-[JSWTFMainThreadCaller call]):
3330         (WTF::initializeMainThreadPlatform):
3331         (WTF::scheduleDispatchFunctionsOnMainThread):
3332
3333 2020-06-24  Umar Iqbal  <uiqbal@apple.com>
3334
3335         We should resurrect the older patch that collects some statistics of web API calls
3336         https://bugs.webkit.org/show_bug.cgi?id=213319
3337
3338         Reviewed by Brent Fulgham.
3339
3340         + Enabled ENABLE_WEB_API_STATISTICS flag
3341         
3342         * wtf/PlatformEnableCocoa.h:
3343
3344 2020-06-24  Geoffrey Garen  <ggaren@apple.com>
3345
3346         Removed the 50ms rescheduling timeout from callOnMainThread
3347         https://bugs.webkit.org/show_bug.cgi?id=213560
3348
3349         Reviewed by Anders Carlsson.
3350
3351         This is a step toward making the engine less flaky by unifying
3352         callOnMainThread with RunLoop::dispatch.
3353
3354         The timeout was added in r40888 to avoid a hang under heavy postMessage
3355         load. A few reasons this isn’t the right approach anymore:
3356
3357         (1) postMessage has migrated to EventLoop, which does its own
3358         scheduling.
3359
3360         (2) postMessage does not use the application process RunLoop in Modern
3361         WebKit.
3362
3363         (3) Delay is not a sufficient solution to a messaging hang — because
3364         you’ll just OOM crash instead. The original author noted this problem
3365         in bug 23705 but never resolved it; and we rediscovered it in r233111.
3366
3367         I verified manually that the r40888 version of
3368         fast/workers/worker-timeout.html does not hang.
3369
3370         * wtf/MainThread.cpp:
3371         (WTF::dispatchFunctionsFromMainThread):
3372
3373 2020-06-23  Geoffrey Garen  <ggaren@apple.com>
3374
3375         Remove WTF::setMainThreadCallbacksPaused
3376         https://bugs.webkit.org/show_bug.cgi?id=213112
3377
3378         Reviewed by Tim Horton.
3379
3380         setMainThreadCallbacksPaused pauses all uses of callOnMainThread. That
3381         has too many side-effects. For example, you can scroll, but you can't
3382         paint any large images (since they do async image decoding).
3383
3384         Meanwhile, setMainThreadCallbacksPaused doesn't pause RunLoop::dispatch.
3385         So, other things don't get paused.
3386
3387         Let's just rely on suspending the ScriptExecutionContext and document
3388         event queue. That should suspend JavaScript-visible stuff without
3389         suspending engine-critical stuff.
3390
3391         * wtf/MainThread.cpp:
3392         (WTF::dispatchFunctionsFromMainThread):
3393         (WTF::setMainThreadCallbacksPaused): Deleted.
3394         * wtf/MainThread.h:
3395
3396 2020-06-23  Chris Dumez  <cdumez@apple.com>
3397
3398         Remove a lot of unnecessary calls to Ref::copyRef()
3399         https://bugs.webkit.org/show_bug.cgi?id=213533
3400
3401         Reviewed by Darin Adler.
3402
3403         Remove a lot of unnecessary calls to Ref::copyRef() now that Ref is copyable.
3404
3405         * wtf/glib/SocketConnection.cpp:
3406         (WTF::SocketConnection::waitForSocketWritability):
3407
3408 2020-06-23  Saam Barati  <sbarati@apple.com>
3409
3410         Remove WKkIsTranslated once our bots are updated to the needed SDK
3411         https://bugs.webkit.org/show_bug.cgi?id=213489
3412
3413         Reviewed by Tim Horton.
3414
3415         We can use the "sysctl.proc_translated" sysctl instead.
3416
3417         * WTF.xcodeproj/project.pbxproj:
3418         * wtf/TranslatedProcess.cpp: Added.
3419         (WTF::isX86BinaryRunningOnARM):
3420         * wtf/TranslatedProcess.h:
3421         (WTF::isX86BinaryRunningOnARM):
3422
3423 2020-06-23  Mark Lam  <mark.lam@apple.com>
3424
3425         Handle string overflow in DFG graph dump while validating AI.
3426         https://bugs.webkit.org/show_bug.cgi?id=213524
3427         <rdar://problem/64635620>
3428
3429         Reviewed by Saam Barati.
3430
3431         * wtf/StringPrintStream.cpp:
3432         (WTF::StringPrintStream::tryToString):
3433         * wtf/StringPrintStream.h:
3434
3435 2020-06-22  Saam Barati  <sbarati@apple.com>
3436
3437         Allow building JavaScriptCore Mac+arm64 in public SDK build
3438         https://bugs.webkit.org/show_bug.cgi?id=213472
3439
3440         Reviewed by Sam Weinig.
3441
3442         * wtf/PlatformEnable.h:
3443         * wtf/PlatformEnableCocoa.h:
3444         * wtf/PlatformHave.h:
3445
3446 2020-06-22  Timothy Horton  <timothy_horton@apple.com>
3447
3448         Fix the build
3449
3450         * wtf/TranslatedProcess.h:
3451         (WTF::isX86BinaryRunningOnARM):
3452
3453 2020-06-22  Tim Horton  <timothy_horton@apple.com>
3454
3455         Disable the JS JIT when running in a translated process
3456         https://bugs.webkit.org/show_bug.cgi?id=213478
3457
3458         Reviewed by Saam Barati.
3459
3460         * wtf/PlatformHave.h:
3461         * wtf/TranslatedProcess.h: Added.
3462         * WTF.xcodeproj/project.pbxproj:
3463         * wtf/CMakeLists.txt:
3464         Add a helper function that can be used to determine that the current process
3465         is being translated; currently the only case is an x86_64 process running on arm64e.
3466
3467 2020-06-22  Tim Horton  <timothy_horton@apple.com>
3468
3469         Update macOS version macros
3470         https://bugs.webkit.org/show_bug.cgi?id=213484
3471
3472         Reviewed by Alexey Proskuryakov.
3473
3474         * Configurations/Base.xcconfig:
3475         * Configurations/DebugRelease.xcconfig:
3476
3477 2020-06-22  Geoffrey Garen  <ggaren@apple.com>
3478
3479         Unreviewed, re-landing r262904.
3480
3481         r263223 should fix the test flakiness we saw.
3482
3483         Re-landed changeset:
3484
3485         "[Cocoa] Build callOnMainThread on WTF::RunLoop rather than on
3486         a timer"
3487         https://bugs.webkit.org/show_bug.cgi?id=213063
3488         https://trac.webkit.org/changeset/262904
3489
3490 2020-06-21  Yusuke Suzuki  <ysuzuki@apple.com>
3491
3492         [WTF] Ensure ASCIILiteral is ASCII characters at compile time
3493         https://bugs.webkit.org/show_bug.cgi?id=213449
3494
3495         Reviewed by Ross Kirsling.
3496
3497         The purpose of ASCIILiteral is ensure that this is compile-time (do not need to consider about ownership) ASCII characters.
3498         By using `isASCII` and `ASSERT_UNDER_CONSTEXPR_CONTEXT`, we can make sure that this C string does not include non ASCII characters.
3499         For example,
3500
3501             auto globalVariable = "ラーメン (Ramen in Japanese)"_s;
3502
3503         becomes compile error.
3504
3505         * wtf/ASCIICType.h:
3506         (WTF::isASCII):
3507         * wtf/text/ASCIILiteral.h:
3508         (WTF::StringLiterals::operator _s):
3509
3510 2020-06-21  Yusuke Suzuki  <ysuzuki@apple.com>
3511
3512         [WTF] URL should support dataLog
3513         https://bugs.webkit.org/show_bug.cgi?id=213450
3514
3515         Reviewed by Mark Lam.
3516
3517         Add URL::dump(PrintStream&) to support `dataLog(url)` which is extremely useful for WTF / JSC developers.
3518
3519         * wtf/URL.cpp:
3520         (WTF::URL::dump const):
3521         * wtf/URL.h:
3522
3523 2020-06-19  Yusuke Suzuki  <ysuzuki@apple.com>
3524
3525         [JSC] Check Gigacage usage before launching VM
3526         https://bugs.webkit.org/show_bug.cgi?id=213410
3527
3528         Reviewed by Mark Lam.
3529
3530         * wtf/Gigacage.h:
3531         (Gigacage::footprint):
3532         (Gigacage::maxSize):
3533         (Gigacage::size):
3534
3535 2020-06-19  Truitt Savell  <tsavell@apple.com>
3536
3537         Unreviewed, reverting r263223.
3538
3539         Broke compositing/video/video-border-radius-clipping.html on
3540         Mac release wk1
3541
3542         Reverted changeset:
3543
3544         "Unreviewed, re-landing r262904."
3545         https://bugs.webkit.org/show_bug.cgi?id=213063
3546         https://trac.webkit.org/changeset/263223
3547
3548 2020-06-19  Michael Catanzaro  <mcatanzaro@gnome.org>
3549
3550         -Wsign-compare in isValidOptionSet
3551         https://bugs.webkit.org/show_bug.cgi?id=213383
3552
3553         Reviewed by Darin Adler.
3554
3555         The OptionSet's StorageType is always unsigned, even if the enum's underlying value is not.
3556         Match this in isValidOptionSet to avoid -Wsign-compare during validity checking.
3557
3558         * wtf/OptionSet.h:
3559         (WTF::isValidOptionSet):
3560
3561 2020-06-19  Myles C. Maxfield  <mmaxfield@apple.com>
3562
3563         [Cocoa] Unify "font:" CSS shorthand values between macOS and iOS family
3564         https://bugs.webkit.org/show_bug.cgi?id=213332
3565         <rdar://problem/64479189>
3566
3567         Reviewed by Tim Horton and Darin Adler.
3568
3569         All Cocoa platforms support kCTUIFontTextStyleTitle0 and kCTUIFontTextStyleTitle4.
3570
3571         * wtf/PlatformHave.h:
3572
3573 2020-06-18  Mark Lam  <mark.lam@apple.com>
3574
3575         Unify Bitmap math loops in MarkedBlock::Handle::specializedSweep().
3576         https://bugs.webkit.org/show_bug.cgi?id=213345
3577
3578         Reviewed by Robin Morisset and Saam Barati.
3579
3580         1. Removed Bitmap::words.  Use Bitmap::numberOfWords instead.
3581         2. Removed Bitmap::wordSize.  Use Bitmap::bitsInWord instead.
3582         3. Added a new Bitmap::words() method which returns the address of the underlying
3583            bitmap storage as a Bitmap::Word*.  This enables clients to do direct bit
3584            manipulation on the Bitmap words if needed.
3585
3586         * wtf/Bitmap.h:
3587         (WTF::WordType>::get const):
3588         (WTF::WordType>::set):
3589         (WTF::WordType>::testAndSet):
3590         (WTF::WordType>::testAndClear):
3591         (WTF::WordType>::concurrentTestAndSet):
3592         (WTF::WordType>::concurrentTestAndClear):
3593         (WTF::WordType>::clear):
3594         (WTF::WordType>::invert):
3595         (WTF::WordType>::nextPossiblyUnset const):
3596         (WTF::WordType>::count const):
3597         (WTF::WordType>::isEmpty const):
3598         (WTF::WordType>::isFull const):
3599         (WTF::WordType>::merge):
3600         (WTF::WordType>::filter):
3601         (WTF::WordType>::exclude):
3602         (WTF::WordType>::concurrentFilter):
3603         (WTF::WordType>::subsumes const):
3604         (WTF::WordType>::forEachSetBit const):
3605         (WTF::WordType>::findBit const):
3606         (WTF::WordType>::mergeAndClear):
3607         (WTF::WordType>::setAndClear):
3608         (WTF::WordType>::setEachNthBit):
3609         (WTF::= const):
3610         (WTF::=):
3611         (WTF::WordType>::hash const):
3612
3613 2020-06-18  Geoffrey Garen  <ggaren@apple.com>
3614
3615         Unreviewed, re-landing r262904.
3616
3617         r263219 and r263175 should fix the test flakiness we saw.
3618
3619         Re-landed changeset:
3620
3621         "[Cocoa] Build callOnMainThread on WTF::RunLoop rather than on
3622         a timer"
3623         https://bugs.webkit.org/show_bug.cgi?id=213063
3624         https://trac.webkit.org/changeset/262904
3625
3626 2020-06-18  David Kilzer  <ddkilzer@apple.com>
3627
3628         [IPC hardening] OptionSet<> values should be validated
3629         <https://webkit.org/b/213199>
3630         <rdar://problem/64369963>
3631
3632         Reviewed by Anders Carlsson.
3633
3634         * wtf/OptionSet.h:
3635         (WTF::isValidOptionSet): Add.
3636
3637 2020-06-17  Mark Lam  <mark.lam@apple.com>
3638
3639         Replace JSC::FreeList linked list with a Bitmap.
3640         https://bugs.webkit.org/show_bug.cgi?id=213071
3641
3642         Reviewed by Filip Pizlo.
3643
3644         1. Use countOfBits<> template to compute the number of bits.
3645         2. Introduce log2() and log2Constexpr() utility functions.
3646         3. Make Bitmap<>::forEachSetBit() a little bit more efficient: we don't need to
3647            keep iterating if the bitmap word is already empty of bits.
3648
3649         * wtf/Bitmap.h:
3650         (WTF::WordType>::forEachSetBit const):
3651         * wtf/MathExtras.h:
3652         (WTF::clzConstexpr):
3653         (WTF::clz):
3654         (WTF::ctzConstexpr):
3655         (WTF::ctz):
3656         (WTF::getMSBSet):
3657         (WTF::getMSBSetConstexpr):
3658         (WTF::log2):
3659         (WTF::log2Constexpr):
3660
3661 2020-06-17  David Kilzer  <ddkilzer@apple.com>
3662
3663         Replace OptionSetTraits/OptionSetValues with EnumTraits/EnumValues
3664         <https://webkit.org/b/213264>
3665
3666         Reviewed by Brent Fulgham.
3667
3668         * wtf/OptionSet.h:
3669         (WTF::isValidOptionSetEnum):
3670         (WTF::maskRawValue):
3671         - Replace OptionSetTraits<>/OptionSetValues<> with
3672           EnumTraits<>/EnumValues<>.
3673
3674 2020-06-08  Andy Estes  <aestes@apple.com>
3675
3676         [Apple Pay] Enable layout tests on more platforms
3677         https://bugs.webkit.org/show_bug.cgi?id=212955
3678         <rdar://problem/64174156>
3679
3680         Reviewed by Alex Christensen.
3681
3682         * wtf/PlatformEnableCocoa.h: Removed ENABLE_APPLE_PAY_INSTALLMENT_IDENTIFIERS,
3683         ENABLE_APPLE_PAY_INSTALLMENT_ITEMS, ENABLE_APPLE_PAY_SESSION_V8,
3684         ENABLE_APPLE_PAY_SESSION_V9, and ENABLE_APPLE_PAY_SESSION_V10.
3685         * wtf/PlatformHave.h: Removed HAVE_PASSKIT_INSTALLMENT_IDENTIFIERS and corrected iOS version
3686         checks for HAVE_PASSKIT_INSTALLMENTS.
3687
3688 2020-06-16  Michael Catanzaro  <mcatanzaro@gnome.org>
3689
3690         Fix build with !HAVE(MACHINE_CONTEXT)
3691         https://bugs.webkit.org/show_bug.cgi?id=213223
3692         <rdar://problem/64390209>
3693
3694         Reviewed by Yusuke Suzuki.
3695
3696         In r263074, I messed up and broke the build with !HAVE(MACHINE_CONTEXT). Even though the
3697         sole purpose of that commit was to fix !HAVE(MACHINE_CONTEXT), I must have somehow messed up
3698         when testing my change.
3699
3700         Anyway, we can just create an empty PlatformRegisters object when HAVE(MACHINE_CONTEXT) is
3701         false. At first, I was worried that passing an empty PlatformRegisters could be open to
3702         misuse, but it's actually hard to misuse it because the only sensible thing you can do with
3703         it is pass it to MachineContext, and you can't use MachineContext outside
3704         HAVE(MACHINE_CONTEXT), so we should be good.
3705
3706         * wtf/threads/Signals.cpp:
3707         (WTF::jscSignalHandler):
3708
3709 2020-06-16  Chris Dumez  <cdumez@apple.com>
3710
3711         Stop calling userPreferredLanguages() in the UIProcess
3712         https://bugs.webkit.org/show_bug.cgi?id=213214
3713         <rdar://problem/64317593>
3714
3715         Reviewed by Per Arne Vollan.
3716
3717         Export WTF::languageDidChange() so we can call it from WebKit2.
3718
3719         * wtf/Language.h:
3720
3721 2020-06-16  Mark Lam  <mark.lam@apple.com>
3722
3723         Add SIGABRT handler for non OS(DARWIN) builds to the jsc shell with the -s option.
3724         https://bugs.webkit.org/show_bug.cgi?id=213200
3725
3726         Reviewed by Michael Catanzaro.
3727
3728         * wtf/threads/Signals.h:
3729         (WTF::toSystemSignal):
3730         (WTF::fromSystemSignal):
3731
3732 2020-06-15  Michael Catanzaro  <mcatanzaro@gnome.org>
3733
3734         WTF signal machinery is guarded by #if USE(PTHREADS) && HAVE(MACHINE_CONTEXT) but does not use pthreads or machine context
3735         https://bugs.webkit.org/show_bug.cgi?id=213223
3736
3737         Reviewed by Mark Lam.
3738
3739         Use #if OS(UNIX) instead.
3740
3741         * wtf/WTFConfig.h:
3742         * wtf/threads/Signals.cpp:
3743         * wtf/threads/Signals.h:
3744
3745 2020-06-15  Keith Miller  <keith_miller@apple.com>
3746
3747         REGRESSION (r263045): TestWTF.Signals.SignalsWorkOnExit crashing
3748         https://bugs.webkit.org/show_bug.cgi?id=213211
3749
3750         Reviewed by Mark Lam.
3751
3752         Don't call toMachMask on Signal::Usr as mach doesn't support user exceptions.
3753
3754         * wtf/threads/Signals.cpp:
3755         (WTF::SignalHandlers::add):
3756
3757 2020-06-15  Michael Catanzaro  <mcatanzaro@gnome.org>
3758
3759         Consistently use WTF_ATTRIBUTE_PRINTF in Assertions.[cpp,h]
3760         https://bugs.webkit.org/show_bug.cgi?id=213204
3761
3762         Reviewed by Darin Adler.
3763
3764         Use WTF_ATTRIBUTE_PRINTF for all functions taking a printf format specifier. The first
3765         argument should be the position of the format string itself (starting from 1), and the
3766         second argument should be the position of the ... parameter pack, or 0 for functions that
3767         take a va_list.
3768
3769         * wtf/Assertions.cpp:
3770         * wtf/Assertions.h:
3771
3772 2020-06-15  Keith Miller  <keith_miller@apple.com>
3773
3774         Unreviewed, build fix for build without mach exceptions.
3775
3776         * wtf/threads/Signals.cpp:
3777         (WTF::SignalHandlers::add):
3778         (WTF::addSignalHandler):
3779
3780 2020-06-15  Keith Miller  <keith_miller@apple.com>
3781
3782         Signal handlers should have a two phase installation.
3783         https://bugs.webkit.org/show_bug.cgi?id=213160
3784
3785         Reviewed by Mark Lam.
3786
3787         LLDB does not like it when we single step while there are mach exception
3788         handlers installed because LLDB suspends all the non-active threads.
3789         With Mach exception handlers installed, the OS will send a mach message
3790         to our exception handler port, which is different than the active thread.
3791         When this happens, the combination of LLDB and the process JSC is in effectively
3792         deadlock.
3793
3794         Under our new approach, we go back to only telling the OS we care about
3795         these exceptions late but lock down the function pointers early. This way
3796         processes that benefit from our exception handler code are easier to debug.
3797
3798         * wtf/threads/Signals.cpp:
3799         (WTF::addSignalHandler):
3800         (WTF::activateSignalHandlersFor):
3801         (WTF::installSignalHandler): Deleted.
3802         * wtf/threads/Signals.h:
3803
3804 2020-06-15  Per Arne Vollan  <pvollan@apple.com>
3805
3806         Pack bytes a little tighter in MemoryPressureHandler
3807         https://bugs.webkit.org/show_bug.cgi?id=200392
3808
3809         Reviewed by Yusuke Suzuki.
3810
3811         Save a tiny bit of memory by packing member variables tighter in MemoryPressureHandler.
3812
3813         * wtf/MemoryPressureHandler.h:
3814
3815 2020-06-12  Keith Miller  <keith_miller@apple.com>
3816
3817         Tests expecting a crash should use a signal handler in the JSC CLI process
3818         https://bugs.webkit.org/show_bug.cgi?id=212479
3819
3820         Reviewed by Yusuke Suzuki.
3821
3822         Add signals for floating point exceptions and breakpoints. There's a
3823         note for breakpoints that explains how using them in the same process
3824         as lldb will cause badness. Fortunately, the only place I plan on using
3825         the breakpoint handler is to check for tests where crashing is expected.
3826
3827         * wtf/threads/Signals.cpp:
3828         (WTF::fromMachException):
3829         (WTF::toMachMask):
3830         * wtf/threads/Signals.h:
3831         (WTF::toSystemSignal):
3832         (WTF::fromSystemSignal):
3833
3834 2020-06-12  Jason Lawrence  <lawrence.j@apple.com>
3835
3836         Unreviewed, reverting r262904.
3837
3838         This commit broke a test on Mac wk1 Debug.
3839
3840         Reverted changeset:
3841
3842         "[Cocoa] Build callOnMainThread on WTF::RunLoop rather than on
3843         a timer"
3844         https://bugs.webkit.org/show_bug.cgi?id=213063
3845         https://trac.webkit.org/changeset/262904
3846
3847 2020-06-12  Adrian Perez de Castro  <aperez@igalia.com>
3848
3849         Build is broken with EVENT_LOOP_TYPE=GLib
3850         https://bugs.webkit.org/show_bug.cgi?id=212987
3851
3852         Reviewed by Konstantin Tokarev.
3853
3854         * wtf/CurrentTime.cpp: Make sure that <time.h> is included to get clock_gettime() and
3855         friends defined when USE_GLIB is disabled.
3856         * wtf/PlatformJSCOnly.cmake: Use FileSystemGLib instead of FileSystemPOSIX when
3857         EVENT_LOOP_TYPE=GLib is set, add missing sources needed when ENABLE_REMOTE_INSPECTOR
3858         is set.
3859         * wtf/glib/RunLoopSourcePriority.h: Use the same list of priorities for WPE and JSCOnly.
3860
3861 2020-06-11  Alex Christensen  <achristensen@webkit.org>
3862
3863         Re-enable download resume tests
3864         https://bugs.webkit.org/show_bug.cgi?id=213098
3865         <rdar://problem/63512518>
3866
3867         Reviewed by Geoffrey Garen.
3868
3869         Workaround is no longer needed because underlying bug has been fixed.
3870
3871         * wtf/PlatformHave.h:
3872
3873 2020-06-11  Jonathan Bedard  <jbedard@apple.com>
3874
3875         WebKit: Make UIGestureRecognizer build for watchOS and tvOS
3876         https://bugs.webkit.org/show_bug.cgi?id=213038
3877         <rdar://problem/64217654>
3878
3879         Reviewed by Tim Horton.
3880
3881         * wtf/PlatformHave.h: Enable HAVE(UI_GESTURE_RECOGNIZER_MODIFIER_FLAGS) for watchOS and tvOS.
3882
3883 2020-06-11  David Kilzer  <ddkilzer@apple.com>
3884
3885         [IPC] Adopt enum class for DragSourceAction
3886         <https://webkit.org/b/212885>
3887         <rdar://problem/64094134>
3888
3889         Reviewed by Darin Adler.
3890
3891         * wtf/OptionSet.h:
3892         (WTF::OptionSet::hasExactlyOneBitSet const): Add.
3893         - Move here from WebCore::ExactlyOneBitSet() in
3894           Source/WebCore/page/EventHandler.cpp.
3895         (WTF::OptionSet::toSingleValue const): Add.
3896         - Use hasExactlyOneBitSet() to determine whether exactly one
3897           enum bitmask value can be returned.
3898
3899 2020-06-11  Geoffrey Garen  <ggaren@apple.com>
3900
3901         [Cocoa] Build callOnMainThread on WTF::RunLoop rather than on a timer
3902         https://bugs.webkit.org/show_bug.cgi?id=213063
3903
3904         Reviewed by Anders Carlsson.
3905
3906         Always use the RunLoop API for main thread tasks.
3907
3908         Previously, callOnMainThread sometimes scheduled a timer and sometimes
3909         used the RunLoop. (Ironically, the timer behavior was added in r55816
3910         with the intention to establish a single point of execution. Now, it has
3911         the opposite effect.)
3912
3913         I picked the RunLoop API rather than the timer API because it moves us
3914         closer to universally applying the RunLoop speedup in
3915         https://bugs.webkit.org/show_bug.cgi?id=202874. Also, it avoids
3916         allocating a timer, which can be expensive.
3917
3918         * wtf/cocoa/MainThreadCocoa.mm:
3919         (WTF::scheduleDispatchFunctionsOnMainThread): The webIfExists() check
3920         is a superset of the isWebThread() check, so we can just remove the
3921         isWebThread() check when scheduling tasks to the web thread.
3922         (WTF::timerFired): Deleted.
3923         (WTF::postTimer): Deleted.
3924
3925 2020-06-10  Geoffrey Garen  <ggaren@apple.com>
3926
3927         Some style improvements to main thread code
3928         https://bugs.webkit.org/show_bug.cgi?id=213051
3929
3930         Reviewed by Darin Adler.
3931
3932         * wtf/RunLoop.cpp:
3933         (WTF::RunLoop::initializeMain): Renamed initializeMainRunLoop => initializeMain
3934         to match the getter's name.
3935         (WTF::RunLoop::initializeWeb): Samesies.
3936         (WTF::RunLoop::webIfExists): Added an IfExists accessor for use in
3937         scheduleDispatchFunctionsOnMainThread().
3938         (WTF::RunLoop::initializeMainRunLoop): Deleted.
3939         (WTF::RunLoop::initializeWebRunLoop): Deleted.
3940
3941         * wtf/RunLoop.h:
3942
3943         * wtf/cocoa/MainThreadCocoa.mm:
3944         (WTF::scheduleDispatchFunctionsOnMainThread): Use RunLoop::webIfExists()
3945         to check for the web thread run loop, since that's more explicit than
3946         checking a pthread variable.
3947
3948         (WTF::isWebThread): Renamed mainThreadPthread => webThreadPthread because
3949         it's the web thread. Changed style on globals to "s_" for consistency.
3950         Removed mainThreadNSThread because it was unused.
3951         (WTF::initializeApplicationUIThread):
3952         (WTF::initializeWebThread):
3953         (WTF::canCurrentThreadAccessThreadLocalData):
3954
3955 2020-06-10  Geoffrey Garen  <ggaren@apple.com>
3956
3957         [Cocoa] Build callOnMainThread on WTF::RunLoop rather than on NSObject methods
3958         https://bugs.webkit.org/show_bug.cgi?id=213043
3959
3960         Reviewed by Simon Fraser.
3961
3962         Original patch by Sihui Liu.
3963
3964         From https://bugs.webkit.org/show_bug.cgi?id=202874, this is the subset
3965         of Sihui's patch that unifies some of RunLoop and callOnMainThread.
3966
3967         My goal is to simplify the code, and shrink the diff when testing
3968         CFRunLoopSource1 in the future.
3969
3970         * wtf/RunLoop.cpp:
3971         (WTF::RunLoop::initializeWebRunLoop):
3972         (WTF::RunLoop::web):
3973         * wtf/RunLoop.h:
3974         * wtf/cocoa/MainThreadCocoa.mm:
3975         (WTF::initializeMainThreadPlatform):
3976         (WTF::scheduleDispatchFunctionsOnMainThread):
3977         (WTF::initializeWebThread):
3978         (-[JSWTFMainThreadCaller call]): Deleted.
3979
3980 2020-06-10  Jer Noble  <jer.noble@apple.com>
3981
3982         Catalyst WebKit apps continue to play audio after quitting
3983         https://bugs.webkit.org/show_bug.cgi?id=212981
3984         <rdar://problem/57089471>
3985
3986         Reviewed by Chris Dumez.
3987
3988         Add the ability to call copyToVector() on a WeakHashSet. This requires two changes:
3989         - A template specialization that returns a Vector<WeakPtr<T>> from copyToVector()
3990         - A template specialization that calls calculateSize() rather than size() on the object
3991           being iterated upon.
3992
3993         * wtf/WeakHashSet.h:
3994         (WTF::copyToVector):
3995
3996 2020-06-09  Tim Horton  <timothy_horton@apple.com>
3997
3998         Use os_log instead of asl_log
3999         https://bugs.webkit.org/show_bug.cgi?id=213001
4000
4001         Reviewed by Saam Barati.
4002
4003         * WTF.xcodeproj/project.pbxproj:
4004         * wtf/Assertions.cpp:
4005
4006 2020-06-09  Chris Dumez  <cdumez@apple.com>
4007
4008         Use bridge cast in String(NSString *) constructor
4009         https://bugs.webkit.org/show_bug.cgi?id=212989
4010
4011         Reviewed by Darin Adler.
4012
4013         Use bridge cast in String(NSString *) constructor instead of a reinterpret_cast as this
4014         is the preferred way of converting a NS Type to a CF one.
4015
4016         * wtf/text/cocoa/StringCocoa.mm:
4017         (WTF::String::String):
4018
4019 2020-06-09  Per Arne Vollan  <pvollan@apple.com>
4020
4021         All platforms should enable CFPrefs read only mode in the WebContent process
4022         https://bugs.webkit.org/show_bug.cgi?id=212910
4023
4024         Reviewed by Tim Horton.
4025
4026         In https://bugs.webkit.org/show_bug.cgi?id=212411, CFPrefs read only mode was adopted, but not all platforms were included.
4027
4028         * wtf/PlatformHave.h:
4029
4030 2020-06-09  Wenson Hsieh  <wenson_hsieh@apple.com>
4031
4032         REGRESSION (r260820): [macCatalyst] Web process crashes when uploading a file
4033         https://bugs.webkit.org/show_bug.cgi?id=212976
4034         <rdar://problem/64033186>
4035
4036         Reviewed by Tim Horton.
4037
4038         Add `HAVE(FRONTBOARD_SYSTEM_APP_SERVICES)`.
4039
4040         * wtf/PlatformHave.h:
4041
4042 2020-06-08  Chris Fleizach  <cfleizach@apple.com>
4043
4044         HAVE(ACCESSIBILITY_BUNDLES_PATH) is defined in terms of PLATFORM(IOS_FAMILY) but only checks the version of __IPHONE_OS_VERSION_MIN_REQUIRED
4045         https://bugs.webkit.org/show_bug.cgi?id=212704
4046         <rdar://problem/63931340>
4047
4048         Reviewed by Darin Adler.
4049
4050         Ensure that this works for all iOS familes.
4051
4052         * wtf/PlatformHave.h:
4053
4054 2020-06-08  Per Arne Vollan  <pvollan@apple.com>
4055
4056         [Cocoa] Adopt read-only mode for preferences in the WebContent process
4057         https://bugs.webkit.org/show_bug.cgi?id=212411
4058
4059         Reviewed by Darin Adler.
4060
4061         Change name of HAVE define to match SPI name.
4062
4063         * wtf/PlatformHave.h:
4064
4065 2020-06-08  Andy Estes  <aestes@apple.com>
4066
4067         [Apple Pay] Remove -respondsToSelector: check before calling -[PKPaymentRequest setBoundInterfaceIdentifier:]
4068         https://bugs.webkit.org/show_bug.cgi?id=212884
4069         <rdar://problem/64090963>
4070
4071         Reviewed by Youenn Fablet.
4072
4073         * wtf/PlatformHave.h: On macOS, HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER should be defined
4074         starting in Catalina.
4075
4076 2020-06-08  Andy Estes  <aestes@apple.com>
4077
4078         [Apple Pay] Remove ENABLE_APPLE_PAY_SETUP, ENABLE_APPLE_PAY_SESSION_V7, and HAVE_PASSKIT_PAYMENT_SETUP
4079         https://bugs.webkit.org/show_bug.cgi?id=212883
4080         <rdar://problem/64090763>
4081
4082         Reviewed by Youenn Fablet.
4083
4084         These macros evaluate to true whenever ENABLE(APPLE_PAY) is true on platforms supported by
4085         trunk WebKit, so we can either remove them or replace them with ENABLE(APPLE_PAY).
4086
4087         * wtf/PlatformEnableCocoa.h:
4088         * wtf/PlatformHave.h:
4089
4090 2020-06-08  youenn fablet  <youenn@apple.com>
4091
4092         [Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
4093         https://bugs.webkit.org/show_bug.cgi?id=206582
4094
4095         Reviewed by Eric Carlson.
4096
4097         * wtf/PlatformHave.h:
4098
4099 2020-06-07  Andy Estes  <aestes@apple.com>
4100
4101         [Apple Pay] HAVE(PAYMENT_METHOD_BILLING_ADDRESS) should be true on iOS
4102         https://bugs.webkit.org/show_bug.cgi?id=212877
4103         <rdar://problem/64080998>
4104
4105         Reviewed by Sam Weinig.
4106
4107         * wtf/PlatformHave.h:
4108
4109 2020-06-07  Philippe Normand  <pnormand@igalia.com>
4110
4111         Remove ENABLE_VIDEO_TRACK ifdef guards
4112         https://bugs.webkit.org/show_bug.cgi?id=212568
4113
4114         Reviewed by Youenn Fablet.
4115
4116         * wtf/PlatformEnable.h: Remove ENABLE_VIDEO_TRACK, which is now enabled by
4117         default under the ENABLE_VIDEO guard.
4118         * wtf/PlatformEnableCocoa.h: Ditto.
4119
4120 2020-06-06  David Kilzer  <ddkilzer@apple.com>
4121
4122         Use OptionSet<DragOperation> for mask values
4123         <https://webkit.org/b/212605>
4124
4125         Reviewed by Darin Adler.
4126
4127         * wtf/OptionSet.h:
4128         (WTF::OptionSet::OptionSet):
4129         - Add constructor for OptionSet(Optional).
4130
4131 2020-06-05  Ryan Haddad  <ryanhaddad@apple.com>
4132
4133         Unreviewed, reverting r262619, r262625, and r262641.
4134
4135         Caused mediarecorder layout test crashes.
4136
4137         Reverted changesets:
4138
4139         "[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder"
4140         https://bugs.webkit.org/show_bug.cgi?id=206582
4141         https://trac.webkit.org/changeset/262619
4142
4143         "[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder"
4144         https://bugs.webkit.org/show_bug.cgi?id=206582
4145         https://trac.webkit.org/changeset/262625
4146
4147         "Unreviewed, silence deprecation warning to fix build with
4148         latest SDK."
4149         https://trac.webkit.org/changeset/262641
4150
4151 2020-06-05  Per Arne Vollan  <pvollan@apple.com>
4152
4153         [Cocoa] Adopt read-only mode for preferences in the WebContent process
4154         https://bugs.webkit.org/show_bug.cgi?id=212411
4155
4156         Reviewed by Darin Adler.
4157
4158         Create HAVE define indicating support for read-only preference SPI.
4159
4160         * wtf/PlatformHave.h:
4161
4162 2020-06-05  youenn fablet  <youenn@apple.com>
4163
4164         [Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
4165         https://bugs.webkit.org/show_bug.cgi?id=206582
4166
4167         Reviewed by Eric Carlson.
4168
4169         * wtf/PlatformHave.h:
4170
4171 2020-06-04  Jonathan Bedard  <jbedard@apple.com>
4172
4173         WTF: Exclude MachExceptions.defs from all embedded builds
4174         https://bugs.webkit.org/show_bug.cgi?id=212796
4175
4176         Reviewed by Alexey Proskuryakov.
4177
4178         * Configurations/WTF.xcconfig:
4179
4180 2020-06-04  Wenson Hsieh  <wenson_hsieh@apple.com>
4181
4182         [macOS] Add a way to override the contact AutoFill button image
4183         https://bugs.webkit.org/show_bug.cgi?id=212775
4184         <rdar://problem/60381452>
4185
4186         Reviewed by Tim Horton.
4187
4188         Rename `SYSTEM_ATTACHMENT_PLACEHOLDER_ICON` to `ALTERNATE_ICONS`.
4189
4190         * wtf/PlatformHave.h:
4191
4192 2020-06-04  Jacob Uphoff  <jacob_uphoff@apple.com>
4193
4194         Unreviewed, reverting r262546.
4195
4196         This commit caused internal build failures
4197
4198         Reverted changeset:
4199
4200         "[Cocoa] Adopt read-only mode for preferences in the
4201         WebContent process"
4202         https://bugs.webkit.org/show_bug.cgi?id=212411
4203         https://trac.webkit.org/changeset/262546
4204
4205 2020-06-04  Per Arne Vollan  <pvollan@apple.com>
4206
4207         [Cocoa] Adopt read-only mode for preferences in the WebContent process
4208         https://bugs.webkit.org/show_bug.cgi?id=212411
4209
4210         Reviewed by Darin Adler.
4211
4212         Create HAVE define indicating support for read-only preference SPI.
4213
4214         * wtf/PlatformHave.h:
4215
4216 2020-06-04  Tim Horton  <timothy_horton@apple.com>
4217
4218         Work around broken system version macro
4219         https://bugs.webkit.org/show_bug.cgi?id=212726
4220
4221         Reviewed by Dan Bernstein.
4222
4223         * Configurations/DebugRelease.xcconfig:
4224
4225 2020-06-04  Andy Estes  <aestes@apple.com>
4226
4227         [watchOS] Re-enable content filtering in the simulator build
4228         https://bugs.webkit.org/show_bug.cgi?id=212711
4229         <rdar://problem/63938350>
4230
4231         Reviewed by Wenson Hsieh.
4232
4233         * wtf/PlatformHave.h:
4234
4235 2020-06-03  Andy Estes  <aestes@apple.com>
4236
4237         [Apple Pay] Add new values for -apple-pay-button-type
4238         https://bugs.webkit.org/show_bug.cgi?id=212684
4239         <rdar://problem/63908535>
4240
4241         Reviewed by Anders Carlsson.
4242
4243         * wtf/PlatformEnableCocoa.h:
4244
4245 2020-06-01  Simon Fraser  <simon.fraser@apple.com>
4246
4247         Add ENABLE(WHEEL_EVENT_REGIONS), enabled on macOS which is the only platform that needs wheel event regions for scrolling thread hit-testing
4248         https://bugs.webkit.org/show_bug.cgi?id=212620
4249
4250         Reviewed by Tim Horton.
4251
4252         Surround code related to wheel event regions with ENABLE(WHEEL_EVENT_REGIONS).
4253
4254         Eventually we'll use this same code for touch event regions, and when we do, we
4255         can rejigger the #ifdefs.
4256
4257         * wtf/PlatformEnable.h:
4258         * wtf/PlatformEnableCocoa.h:
4259
4260 2020-06-02  Mark Lam  <mark.lam@apple.com>
4261
4262         Change Gigacage::Config to use storage in WebConfig::g_config instead of its own.
4263         https://bugs.webkit.org/show_bug.cgi?id=212585
4264         <rdar://problem/63812487>
4265
4266         Reviewed by Yusuke Suzuki.
4267
4268         We now think of the various Config records as being allocated from parts of a
4269         WebConfig::g_config buffer.  WTF::Config will manage the mechanics of freezing
4270         that buffer.  And the JSC VM is still the determiner of if/when to freeze the
4271         buffer, and it will do this at the end of the construction of the very first
4272         VM instance (as before).
4273
4274         Gigacage::Config reserves space in WebConfig::g_config.
4275         WTF::Config will honor that reservation and place itself after that.
4276         JSC::Config will continue to place itself at WTF::Config::spaceForExtensions.
4277
4278         The upside of this approach this is that we can now share the same memory page
4279         for all the Configs, and can freeze them in one go.
4280
4281         The downside is that g_gigacageConfig, g_wtfConfig, and g_jscConfig now have to
4282         be macros.  This results in some weirdness e.g. they are no longer qualified by
4283         namespaces: referring to WTF::g_wtfConfig is now incorrect.
4284
4285         * wtf/Gigacage.h:
4286         (Gigacage::disablingPrimitiveGigacageIsForbidden):
4287         (Gigacage::isDisablingPrimitiveGigacageForbidden): Deleted.