Gavin did some of this work initially.
Pull request: https://github.com/WebKit/WebKit/pull/4406
Committed 254557@main (65202ecd5d0c): <https://commits.webkit.org/254557@main> Reviewed commits have been landed. Closing PR #4406 and removing active labels.
<rdar://problem/100028018>