⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Oct 11, 2021:

11:32 PM Changeset in webkit [283970] by sbarati@apple.com
  • 20 edits in trunk/Source

Remove ImplicitAddress
https://bugs.webkit.org/show_bug.cgi?id=230820
<rdar://problem/83826318>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

Because we rely on implicit conversion from RegisterID to int values,
some compilers (aka MSVC) might convert a constant RegisterID that's passed in
to nullptr instead of calling the implicit constructor in ImplicitAddress.

For example, I got bit by this when I had code that did:
loadPtr(regT0, xyz)

This called the loadPtr(void*, RegisterID) function with nullptr passed as
the first argument instead of the loadPtr(ImplicitAddress, RegisterID)
function.

Let's avoid any such problems in the future by just not using ImplicitAddress.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::ImplicitAddress::ImplicitAddress): Deleted.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::pushToSave):
(JSC::MacroAssembler::popToRestore):
(JSC::MacroAssembler::loadPtr):
(JSC::MacroAssembler::storePtr):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load64):
(JSC::MacroAssemblerARM64::load32):
(JSC::MacroAssemblerARM64::load16):
(JSC::MacroAssemblerARM64::load16Unaligned):
(JSC::MacroAssemblerARM64::load16SignedExtendTo32):
(JSC::MacroAssemblerARM64::load8):
(JSC::MacroAssemblerARM64::load8SignedExtendTo32):
(JSC::MacroAssemblerARM64::store64):
(JSC::MacroAssemblerARM64::store32):
(JSC::MacroAssemblerARM64::store16):
(JSC::MacroAssemblerARM64::store8):
(JSC::MacroAssemblerARM64::loadDouble):
(JSC::MacroAssemblerARM64::loadFloat):
(JSC::MacroAssemblerARM64::storeDouble):
(JSC::MacroAssemblerARM64::storeFloat):
(JSC::MacroAssemblerARM64::pushToSaveImmediateWithoutTouchingRegisters):
(JSC::MacroAssemblerARM64::popToRestore):
(JSC::MacroAssemblerARM64::pushToSave):
(JSC::MacroAssemblerARM64::storePtrWithPatch):
(JSC::MacroAssemblerARM64::loadAcq8SignedExtendTo32):
(JSC::MacroAssemblerARM64::loadAcq8):
(JSC::MacroAssemblerARM64::storeRel8):
(JSC::MacroAssemblerARM64::loadAcq16SignedExtendTo32):
(JSC::MacroAssemblerARM64::loadAcq16):
(JSC::MacroAssemblerARM64::storeRel16):
(JSC::MacroAssemblerARM64::loadAcq32):
(JSC::MacroAssemblerARM64::loadAcq64):
(JSC::MacroAssemblerARM64::storeRel32):
(JSC::MacroAssemblerARM64::storeRel64):
(JSC::MacroAssemblerARM64::loadLink8):
(JSC::MacroAssemblerARM64::loadLinkAcq8):
(JSC::MacroAssemblerARM64::storeCond8):
(JSC::MacroAssemblerARM64::storeCondRel8):
(JSC::MacroAssemblerARM64::loadLink16):
(JSC::MacroAssemblerARM64::loadLinkAcq16):
(JSC::MacroAssemblerARM64::storeCond16):
(JSC::MacroAssemblerARM64::storeCondRel16):
(JSC::MacroAssemblerARM64::loadLink32):
(JSC::MacroAssemblerARM64::loadLinkAcq32):
(JSC::MacroAssemblerARM64::storeCond32):
(JSC::MacroAssemblerARM64::storeCondRel32):
(JSC::MacroAssemblerARM64::loadLink64):
(JSC::MacroAssemblerARM64::loadLinkAcq64):
(JSC::MacroAssemblerARM64::storeCond64):
(JSC::MacroAssemblerARM64::storeCondRel64):
(JSC::MacroAssemblerARM64::extractSimpleAddress):

  • assembler/MacroAssemblerARM64E.h:

(JSC::MacroAssemblerARM64E::atomicXchgAdd8):
(JSC::MacroAssemblerARM64E::atomicXchgAdd16):
(JSC::MacroAssemblerARM64E::atomicXchgAdd32):
(JSC::MacroAssemblerARM64E::atomicXchgAdd64):
(JSC::MacroAssemblerARM64E::atomicXchgXor8):
(JSC::MacroAssemblerARM64E::atomicXchgXor16):
(JSC::MacroAssemblerARM64E::atomicXchgXor32):
(JSC::MacroAssemblerARM64E::atomicXchgXor64):
(JSC::MacroAssemblerARM64E::atomicXchgOr8):
(JSC::MacroAssemblerARM64E::atomicXchgOr16):
(JSC::MacroAssemblerARM64E::atomicXchgOr32):
(JSC::MacroAssemblerARM64E::atomicXchgOr64):
(JSC::MacroAssemblerARM64E::atomicXchgClear8):
(JSC::MacroAssemblerARM64E::atomicXchgClear16):
(JSC::MacroAssemblerARM64E::atomicXchgClear32):
(JSC::MacroAssemblerARM64E::atomicXchgClear64):
(JSC::MacroAssemblerARM64E::atomicXchg8):
(JSC::MacroAssemblerARM64E::atomicXchg16):
(JSC::MacroAssemblerARM64E::atomicXchg32):
(JSC::MacroAssemblerARM64E::atomicXchg64):
(JSC::MacroAssemblerARM64E::atomicStrongCAS8):
(JSC::MacroAssemblerARM64E::atomicStrongCAS16):
(JSC::MacroAssemblerARM64E::atomicStrongCAS32):
(JSC::MacroAssemblerARM64E::atomicStrongCAS64):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::or8):
(JSC::MacroAssemblerARMv7::or16):
(JSC::MacroAssemblerARMv7::or32):
(JSC::MacroAssemblerARMv7::load32):
(JSC::MacroAssemblerARMv7::load8):
(JSC::MacroAssemblerARMv7::load8SignedExtendTo32):
(JSC::MacroAssemblerARMv7::load16):
(JSC::MacroAssemblerARMv7::load16SignedExtendTo32):
(JSC::MacroAssemblerARMv7::store32):
(JSC::MacroAssemblerARMv7::store16):
(JSC::MacroAssemblerARMv7::loadDouble):
(JSC::MacroAssemblerARMv7::loadFloat):
(JSC::MacroAssemblerARMv7::storeDouble):
(JSC::MacroAssemblerARMv7::storeFloat):
(JSC::MacroAssemblerARMv7::storePtrWithPatch):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::load8):
(JSC::MacroAssemblerMIPS::load8SignedExtendTo32):
(JSC::MacroAssemblerMIPS::load32):
(JSC::MacroAssemblerMIPS::load16):
(JSC::MacroAssemblerMIPS::store8):
(JSC::MacroAssemblerMIPS::store16):
(JSC::MacroAssemblerMIPS::store32):
(JSC::MacroAssemblerMIPS::storePtrWithPatch):
(JSC::MacroAssemblerMIPS::loadFloat):
(JSC::MacroAssemblerMIPS::loadDouble):
(JSC::MacroAssemblerMIPS::storeFloat):
(JSC::MacroAssemblerMIPS::storeDouble):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::load32):
(JSC::MacroAssemblerX86Common::load16Unaligned):
(JSC::MacroAssemblerX86Common::load8):
(JSC::MacroAssemblerX86Common::load8SignedExtendTo32):
(JSC::MacroAssemblerX86Common::load16):
(JSC::MacroAssemblerX86Common::store32):
(JSC::MacroAssemblerX86Common::store16):
(JSC::MacroAssemblerX86Common::loadDouble):
(JSC::MacroAssemblerX86Common::loadFloat):
(JSC::MacroAssemblerX86Common::storeDouble):
(JSC::MacroAssemblerX86Common::storeFloat):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::load8):
(JSC::MacroAssemblerX86_64::load32):
(JSC::MacroAssemblerX86_64::store32):
(JSC::MacroAssemblerX86_64::load64):
(JSC::MacroAssemblerX86_64::store64):
(JSC::MacroAssemblerX86_64::storePtrWithPatch):

  • assembler/testmasm.cpp:

(JSC::testBranchTruncateDoubleToInt32):
(JSC::testLoadPrePostIndex32):
(JSC::testLoadPrePostIndex64):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileStringSlice):
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
(JSC::DFG::SpeculativeJIT::compileClearCatchLocals):

  • ftl/FTLLocation.cpp:

(JSC::FTL::Location::restoreInto const):

  • ftl/FTLThunks.cpp:

(JSC::FTL::genericGenerationThunkGenerator):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::debugCall):
(JSC::AssemblyHelpers::sanitizeStackInline):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitGetVarFromIndirectPointer):

  • jit/ThunkGenerators.cpp:

(JSC::arityFixupGenerator):

  • wasm/WasmBinding.cpp:

(JSC::Wasm::wasmToWasm):

  • yarr/YarrJIT.cpp:

Source/WebCore:

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker):

10:05 PM Changeset in webkit [283969] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

[GLIB] Update test expectations for failing CSS tests.
https://bugs.webkit.org/show_bug.cgi?id=231547

Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-10-11

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
9:20 PM Changeset in webkit [283968] by mmaxfield@apple.com
  • 7 edits in trunk/Source/WebKit

[GPU Process] Unique RenderingResourceIdentifiers Part 5: Migrate RemoteResourceCache to QualifiedRenderingResourceIdentifier
https://bugs.webkit.org/show_bug.cgi?id=231407
<rdar://problem/84010479>

Reviewed by Said Abou-Hallawa.

This pushes QualifiedRenderingResourceIdentifier down into RemoteResourceCache, but doesn't go all the way.
This patch augments RemoteResourceCache's API to accept QualifiedRenderingResourceIdentifiers, and also
migrates RemoteResourceCache::m_resourceUseCounters to use QualifiedRenderingResourceIdentifiers.

RemoteResourceCache::m_imageBuffers, RemoteResourceCache::m_nativeImages, and RemoteResourceCache::m_fonts
are WebCore typedefs, and are passed to WebCore's display list replaying code, but that code should have no
notion of process identifiers. Therefore, in order to make those members hold data that WebCore doesn't
understand, I'm going to have to wrap an opaque class around them and pass that class around instead of
the raw HashMaps. I'll do that in another patch.

No new tests because there is no behavior change.

  • GPUProcess/graphics/RemoteDisplayListRecorder.cpp:

(WebKit::RemoteDisplayListRecorder::setStateWithQualifiedIdentifiers):
(WebKit::RemoteDisplayListRecorder::clipToImageBufferWithQualifiedIdentifier):
(WebKit::RemoteDisplayListRecorder::drawGlyphsWithQualifiedIdentifier):
(WebKit::RemoteDisplayListRecorder::drawImageBufferWithQualifiedIdentifier):
(WebKit::RemoteDisplayListRecorder::drawNativeImageWithQualifiedIdentifier):
(WebKit::RemoteDisplayListRecorder::drawPatternWithQualifiedIdentifier):

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::paintPixelBufferToImageBuffer):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::RemoteRenderingBackend):
(WebKit::RemoteRenderingBackend::createImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::ReplayerDelegate::ReplayerDelegate):
(WebKit::RemoteRenderingBackend::ReplayerDelegate::recordResourceUse):
(WebKit::RemoteRenderingBackend::submit):
(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):
(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayListWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::getDataURLForImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::getDataForImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::getShareableBitmapForImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::cacheNativeImageWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::cacheFontWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::releaseRemoteResourceWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::finalizeRenderingUpdate):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteResourceCache.cpp:

(WebKit::RemoteResourceCache::RemoteResourceCache):
(WebKit::RemoteResourceCache::cacheImageBuffer):
(WebKit::RemoteResourceCache::cachedImageBuffer const):
(WebKit::RemoteResourceCache::cacheNativeImage):
(WebKit::RemoteResourceCache::cachedNativeImage const):
(WebKit::RemoteResourceCache::cacheFont):
(WebKit::RemoteResourceCache::cachedFont const):
(WebKit::RemoteResourceCache::ensureResourceUseCounter):
(WebKit::RemoteResourceCache::maybeRemoveResource):
(WebKit::RemoteResourceCache::recordResourceUse):
(WebKit::RemoteResourceCache::releaseRemoteResource):

  • GPUProcess/graphics/RemoteResourceCache.h:
9:18 PM Changeset in webkit [283967] by mmaxfield@apple.com
  • 5 edits in trunk/Source

[GPU Process] Unique RenderingResourceIdentifiers Part 6: Uniquify more of RemoteDisplayListRecorder at entry points
https://bugs.webkit.org/show_bug.cgi?id=231552
<rdar://problem/84130587>

Source/WebCore:

Reviewed by Wenson Hsieh.

No new tests because there is no behavior change.

  • platform/ProcessQualified.h:

(WebCore::ProcessQualified::operator bool const):

Source/WebKit:

This is an extension of https://bugs.webkit.org/show_bug.cgi?id=231548. It applies QualifiedRenderingResourceIdentifiers
at the rest of the entry points of RemoteDisplayListRecorder.

Reviewed by Wenson Hsieh.

  • GPUProcess/graphics/RemoteDisplayListRecorder.cpp:

(WebKit::RemoteDisplayListRecorder::setState):
(WebKit::RemoteDisplayListRecorder::setStateWithQualifiedIdentifiers):
(WebKit::RemoteDisplayListRecorder::drawGlyphs):
(WebKit::RemoteDisplayListRecorder::drawGlyphsWithQualifiedIdentifier):

  • GPUProcess/graphics/RemoteDisplayListRecorder.h:
8:55 PM Changeset in webkit [283966] by Simon Fraser
  • 17 edits in trunk/Source/WebKit

Make DrawingAreaType an enum class
https://bugs.webkit.org/show_bug.cgi?id=231543

Reviewed by Wenson Hsieh.

Make DrawingAreaType an enum class, and make the DrawingArea type member const.

  • Shared/DrawingAreaInfo.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::isUsingUISideCompositing const):

  • UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp:

(WebKit::DrawingAreaProxyCoordinatedGraphics::DrawingAreaProxyCoordinatedGraphics):

  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setDrawingArea):
(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::WebPageProxy::enterAcceleratedCompositingMode):
(WebKit::WebPageProxy::didFirstLayerFlush):

  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:

(WebKit::TiledCoreAnimationDrawingAreaProxy::TiledCoreAnimationDrawingAreaProxy):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createScrollingCoordinator const):

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

(WebKit::DrawingAreaCoordinatedGraphics::DrawingAreaCoordinatedGraphics):

  • WebProcess/WebPage/DrawingArea.cpp:

(WebKit::DrawingArea::create):
(WebKit::DrawingArea::supportsGPUProcessRendering):

  • WebProcess/WebPage/DrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

8:05 PM Changeset in webkit [283965] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebKit

[GPU Process] Unique RenderingResourceIdentifiers Part 5: Uniquify RemoteDisplayListRecorder at entry points
https://bugs.webkit.org/show_bug.cgi?id=231548
<rdar://problem/84128595>

Reviewed by Wenson Hsieh.

This simply applies the same treatment in https://commits.webkit.org/242676@main to
RemoteDisplayListRecorder. This is being done in a follow-up patch because it
relies on https://bugs.webkit.org/show_bug.cgi?id=231484.

No new tests because there is no behavior change.

  • GPUProcess/graphics/RemoteDisplayListRecorder.cpp:

(WebKit::RemoteDisplayListRecorder::RemoteDisplayListRecorder):
(WebKit::RemoteDisplayListRecorder::clipToImageBuffer):
(WebKit::RemoteDisplayListRecorder::clipToImageBufferWithQualifiedIdentifier):
(WebKit::RemoteDisplayListRecorder::drawImageBuffer):
(WebKit::RemoteDisplayListRecorder::drawImageBufferWithQualifiedIdentifier):
(WebKit::RemoteDisplayListRecorder::drawNativeImage):
(WebKit::RemoteDisplayListRecorder::drawNativeImageWithQualifiedIdentifier):
(WebKit::RemoteDisplayListRecorder::drawPattern):
(WebKit::RemoteDisplayListRecorder::drawPatternWithQualifiedIdentifier):

  • GPUProcess/graphics/RemoteDisplayListRecorder.h:

(WebKit::RemoteDisplayListRecorder::create):

7:57 PM Changeset in webkit [283964] by Darin Adler
  • 3 edits in trunk/Tools

Slightly better idiom for ARC debug autorelease workaround
https://bugs.webkit.org/show_bug.cgi?id=231435

Reviewed by David Kilzer.

  • TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm:

(TestWebKitAPI::TEST): Use one macro instead of two, with
traditional indentation instead of left flush style.

  • TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm:

(TestWebKitAPI::TEST): Ditto.

7:48 PM Changeset in webkit [283963] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix makeprop.pl to not treat "inherited: false" properties as inherited.
https://bugs.webkit.org/show_bug.cgi?id=231533

Patch by Kiet Ho <Kiet Ho> on 2021-10-11
Reviewed by Simon Fraser.

makeprop.pl treats a property as inherited if the "inherited" option in
CSSProperties.json is defined, regardless of whether the option value is
true or false. Fix makeprop.pl to actually consider the option value.

  • css/makeprop.pl:

(addProperty):

7:42 PM Changeset in webkit [283962] by timothy_horton@apple.com
  • 5 edits in trunk/Source/WebCore

Implement alternate style for text fields
https://bugs.webkit.org/show_bug.cgi?id=231536

Reviewed by Wenson Hsieh.

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::paintTextFieldDecorations):
(WebCore::RenderTheme::paintTextAreaDecorations):
(WebCore::RenderTheme::paintSearchFieldDecorations):
Tighten up the types.

  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::adjustTextFieldStyle const):
Drop the border and clear the background, so that we can use our
custom inner shadow painting instead.

(WebCore::RenderThemeIOS::paintTextFieldInnerShadow):
(WebCore::RenderThemeIOS::paintTextFieldDecorations):
(WebCore::RenderThemeIOS::paintTextAreaDecorations):
(WebCore::RenderThemeIOS::paintSearchFieldDecorations):
Paint our custom inner shadow for text fields, when using the alternate appearance.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::resetBorder):
(WebCore::RenderStyle::resetBorderExceptRadius):
Add a mechanism to reset all border properties except radius.

7:11 PM Changeset in webkit [283961] by Kocsen Chung
  • 1 copy in tags/Safari-612.2.9.1.10

Tag Safari-612.2.9.1.10.

6:46 PM Changeset in webkit [283960] by Kocsen Chung
  • 1 copy in tags/Safari-612.2.9.0.10

Tag Safari-612.2.9.0.10.

6:40 PM Changeset in webkit [283959] by mmaxfield@apple.com
  • 6 edits in trunk/Source/WebKit

Revert 242806@main because it broke the build
https://bugs.webkit.org/show_bug.cgi?id=231546

Unreviewed.

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::paintPixelBufferToImageBuffer):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::RemoteRenderingBackend):
(WebKit::RemoteRenderingBackend::createImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::ReplayerDelegate::ReplayerDelegate):
(WebKit::RemoteRenderingBackend::ReplayerDelegate::recordResourceUse):
(WebKit::RemoteRenderingBackend::submit):
(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):
(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayListWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::getDataURLForImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::getDataForImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::getShareableBitmapForImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::cacheNativeImageWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::cacheFontWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::releaseRemoteResourceWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::finalizeRenderingUpdate):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteResourceCache.cpp:

(WebKit::RemoteResourceCache::RemoteResourceCache):
(WebKit::RemoteResourceCache::cacheImageBuffer):
(WebKit::RemoteResourceCache::cachedImageBuffer const):
(WebKit::RemoteResourceCache::cacheNativeImage):
(WebKit::RemoteResourceCache::cachedNativeImage const):
(WebKit::RemoteResourceCache::cacheFont):
(WebKit::RemoteResourceCache::cachedFont const):
(WebKit::RemoteResourceCache::ensureResourceUseCounter):
(WebKit::RemoteResourceCache::maybeRemoveResource):
(WebKit::RemoteResourceCache::recordResourceUse):
(WebKit::RemoteResourceCache::releaseRemoteResource):

  • GPUProcess/graphics/RemoteResourceCache.h:
5:57 PM Changeset in webkit [283958] by Russell Epstein
  • 1 copy in branches/safari-612.2.9.0.7-branch

New branch.

5:55 PM Changeset in webkit [283957] by Wenson Hsieh
  • 8 edits in trunk/Source

Clean up some code in DisplayList::Recorder in preparation for bug #230860
https://bugs.webkit.org/show_bug.cgi?id=231532

Reviewed by Myles C. Maxfield.

Source/WebCore:

See below for more details.

  • platform/graphics/Path.h:

Add WEBCORE_EXPORT here. When building debug WebKit2, logMessageImpl contains logic to dump IPC arguments
using WTF::TextStream; since a few of these new stream messages contain WebCore::Path objects, this will
generate calls to TextStream& operator<<(TextStream&, const Path&) in WebKit2, which requires this function to
be exported.

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/displaylists/DisplayListRecorderImpl.cpp:

(WebCore::DisplayList::RecorderImpl::recordGetPixelBuffer): Deleted.
(WebCore::DisplayList::RecorderImpl::recordPutPixelBuffer): Deleted.

Remove a couple of unnecessary virtual override hooks in the base DisplayList::Recorder class. The existing
virtual getPixelBuffer and putPixelBuffer methods are already suffificient.

  • platform/graphics/displaylists/DisplayListRecorderImpl.h:

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:

(WebKit::RemoteDisplayListRecorderProxy::recordGetPixelBuffer): Deleted.
(WebKit::RemoteDisplayListRecorderProxy::recordPutPixelBuffer): Deleted.

See WebCore ChangeLog for more details.

  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
5:53 PM Changeset in webkit [283956] by Russell Epstein
  • 1 copy in branches/safari-612.2.9.1.7-branch

New branch.

5:48 PM Changeset in webkit [283955] by mmaxfield@apple.com
  • 6 edits in trunk/Source/WebKit

[GPU Process] Unique RenderingResourceIdentifiers Part 5: Migrate RemoteResourceCache to QualifiedRenderingResourceIdentifier
https://bugs.webkit.org/show_bug.cgi?id=231407
<rdar://problem/84010479>

Reviewed by Said Abou-Hallawa.

This pushes QualifiedRenderingResourceIdentifier down into RemoteResourceCache, but doesn't go all the way.
This patch augments RemoteResourceCache's API to accept QualifiedRenderingResourceIdentifiers, and also
migrates RemoteResourceCache::m_resourceUseCounters to use QualifiedRenderingResourceIdentifiers.

RemoteResourceCache::m_imageBuffers, RemoteResourceCache::m_nativeImages, and RemoteResourceCache::m_fonts
are WebCore typedefs, and are passed to WebCore's display list replaying code, but that code should have no
notion of process identifiers. Therefore, in order to make those members hold data that WebCore doesn't
understand, I'm going to have to wrap an opaque class around them and pass that class around instead of
the raw HashMaps. I'll do that in another patch.

No new tests because there is no behavior change.

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::paintPixelBufferToImageBuffer):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::RemoteRenderingBackend):
(WebKit::RemoteRenderingBackend::createImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::ReplayerDelegate::ReplayerDelegate):
(WebKit::RemoteRenderingBackend::ReplayerDelegate::recordResourceUse):
(WebKit::RemoteRenderingBackend::submit):
(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):
(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayListWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::getDataURLForImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::getDataForImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::getShareableBitmapForImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::cacheNativeImageWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::cacheFontWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::releaseRemoteResourceWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::finalizeRenderingUpdate):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteResourceCache.cpp:

(WebKit::RemoteResourceCache::RemoteResourceCache):
(WebKit::RemoteResourceCache::cacheImageBuffer):
(WebKit::RemoteResourceCache::cachedImageBuffer const):
(WebKit::RemoteResourceCache::cacheNativeImage):
(WebKit::RemoteResourceCache::cachedNativeImage const):
(WebKit::RemoteResourceCache::cacheFont):
(WebKit::RemoteResourceCache::cachedFont const):
(WebKit::RemoteResourceCache::ensureResourceUseCounter):
(WebKit::RemoteResourceCache::maybeRemoveResource):
(WebKit::RemoteResourceCache::recordResourceUse):
(WebKit::RemoteResourceCache::releaseRemoteResource):

  • GPUProcess/graphics/RemoteResourceCache.h:
5:33 PM Changeset in webkit [283954] by sbarati@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Share more code that uses ScratchRegisterAllocator in the ICs
https://bugs.webkit.org/show_bug.cgi?id=231125
<rdar://problem/84066374>

Reviewed by Sam Weinig.

We had the same code to allocate a scratch register allocator copy pasted
all over the IC code. This patch refactors that to use a shared helper.

Also, Delete was using a ScratchRegisterAllocator for no reason (it never
allocated a scratch register), so I deleted that code.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateWithGuard):
(JSC::AccessCase::generateImpl):

  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::emitDOMJITGetter):

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessGenerationState::makeDefaultScratchAllocator):
(JSC::PolymorphicAccess::regenerate):

  • bytecode/PolymorphicAccess.h:
  • jit/IntrinsicEmitter.cpp:

(JSC::IntrinsicGetterAccessCase::emitIntrinsicGetter):

5:09 PM Changeset in webkit [283953] by Russell Epstein
  • 8 edits in branches/safari-612.2.9.1-branch/Source

Versioning.

WebKit-7612.2.9.1.10

5:05 PM Changeset in webkit [283952] by Chris Dumez
  • 3 edits
    3 adds in trunk

[COOP] Crash under ReportingEndpointsCache::addEndpointFromDictionary()
https://bugs.webkit.org/show_bug.cgi?id=231537
<rdar://83530643>

Reviewed by Geoffrey Garen.

Source/WebCore:

Make sure we don't crash under addEndpointFromDictionary() when the Report-To HTTP header
contains more than one endpoint URL for a given group.

The loop inside addEndpointFromDictionary() should bail as soon as we find a viable
endpoint URL (since we don't currently support having several URLs for a given group).
The crash was due to a use-after-move of the |group|.

Test: http/wpt/cross-origin-opener-policy/report-to-multiple-endpoints.html

  • loader/ReportingEndpointsCache.cpp:

(WebCore::ReportingEndpointsCache::addEndpointFromDictionary):

LayoutTests:

Add layout test coverage.

  • http/wpt/cross-origin-opener-policy/report-to-multiple-endpoints-expected.txt: Added.
  • http/wpt/cross-origin-opener-policy/report-to-multiple-endpoints.html: Added.
  • http/wpt/cross-origin-opener-policy/report-to-multiple-endpoints.html.headers: Added.
4:53 PM Changeset in webkit [283951] by Russell Epstein
  • 8 edits in branches/safari-612.2.9.0-branch/Source

Versioning.

WebKit-7612.2.9.0.10

4:45 PM Changeset in webkit [283950] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 ] imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=231544

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:33 PM Changeset in webkit [283949] by Russell Epstein
  • 2 edits in branches/safari-612.2.9.1-branch/Source/WebKit

Cherry-pick r283846. rdar://problem/84117092

Fix crash in NetworkProcess preconnect due to dereferencing deallocated session
https://bugs.webkit.org/show_bug.cgi?id=231456
<rdar://problem/83752148>

Reviewed by Chris Dumez.

We capture a raw NetworkSession reference in the preconnect completion handler. This
reference could point to a deallocated object if the NetworkSession dies before the
preconnect finishes.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::preconnectTo):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283846 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:32 PM Changeset in webkit [283948] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ iOS macOS Debug ] webgl/1.0.3/conformance/glsl/bugs/long-expressions-should-not-crash.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=231541

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
4:29 PM Changeset in webkit [283947] by Russell Epstein
  • 2 edits in branches/safari-612.2.9.0-branch/Source/WebKit

Cherry-pick r283846. rdar://problem/84117075

Fix crash in NetworkProcess preconnect due to dereferencing deallocated session
https://bugs.webkit.org/show_bug.cgi?id=231456
<rdar://problem/83752148>

Reviewed by Chris Dumez.

We capture a raw NetworkSession reference in the preconnect completion handler. This
reference could point to a deallocated object if the NetworkSession dies before the
preconnect finishes.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::preconnectTo):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283846 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:27 PM Changeset in webkit [283946] by Alan Coon
  • 9 edits in branches/safari-612-branch

Cherry-pick r283194. rdar://problem/83953433

PCM: different bundleID entries will override each other
https://bugs.webkit.org/show_bug.cgi?id=230839

Reviewed by Alex Christensen.

Source/WebKit:

We recently added a bundleID column to PCM tables. We want to make
sure entries with different bundleIDs do not override each other,
so we should make it a part of the unique constraint on both PCM
tables that contain it. This requires creating new tables and
migrating existing data to them. Luckily this code already exists
in the ITP database, and we can just move it to the shared
DatabaseUtilities class.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::expectedTableAndIndexQueries): (WebKit::stripIndexQueryToMatchStoredValue): Deleted. (WebKit::expectedTableAndIndexQueries): Deleted. (WebKit::ResourceLoadStatisticsDatabaseStore::currentTableAndIndexQueries): Deleted. (WebKit::insertDistinctValuesInTableStatement): Deleted. (WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToNewTablesIfNecessary): Deleted.
  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/DatabaseUtilities.cpp: (WebKit::DatabaseUtilities::stripIndexQueryToMatchStoredValue): (WebKit::DatabaseUtilities::currentTableAndIndexQueries): (WebKit::insertDistinctValuesInTableStatement): (WebKit::DatabaseUtilities::migrateDataToNewTablesIfNecessary):
  • NetworkProcess/DatabaseUtilities.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp: (WebKit::PCM::Database::Database): (WebKit::PCM::Database::expectedTableAndIndexQueries): (WebKit::PCM::Database::createUniqueIndices): (WebKit::PCM::Database::needsUpdatedSchema):
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h:

Tools:

API test coverage for the case of existing PCM data with a bundleID
column but an expired unique index.

  • TestWebKitAPI/Tests/WebKitCocoa/PrivateClickMeasurement.mm: (addUnattributedPCMv4): (addAttributedPCMv4): (dumpedPCM): (pollUntilPCMIsMigrated): (emptyPcmDBPath): (createAndPopulatePCMObservedDomainTable): (setUpFromResourceLoadStatisticsDatabase): (setUpFromPCMDatabase): (TEST): (setUp): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283194 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:27 PM Changeset in webkit [283945] by Alan Coon
  • 33 edits
    15 copies
    2 adds in branches/safari-612-branch

Cherry-pick r282884. rdar://problem/83954926

PCM should include the bundle ID of the app from which it originated
https://bugs.webkit.org/show_bug.cgi?id=230576
<rdar://83065221>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-09-22
Reviewed by Kate Cheney.

Source/WebCore:

This adds infrastructure to store the bundle ID of the application.
In another patch I'm going to use that to prevent PCMs from one app from overwriting PCMs from another app during attribution.

  • html/HTMLAnchorElement.cpp: (WebCore::HTMLAnchorElement::parsePrivateClickMeasurement const):
  • loader/PrivateClickMeasurement.cpp: (WebCore::PrivateClickMeasurement::isolatedCopy const):
  • loader/PrivateClickMeasurement.h: (WebCore::PrivateClickMeasurement::PrivateClickMeasurement): (WebCore::PrivateClickMeasurement::attributionTriggerData const): (WebCore::PrivateClickMeasurement::sourceApplicationBundleID const): (WebCore::PrivateClickMeasurement::encode const): (WebCore::PrivateClickMeasurement::decode): (WebCore::PrivateClickMeasurement::attributionTriggerData): Deleted.

Source/WebKit:

  • NetworkProcess/DatabaseUtilities.cpp: (WebKit::DatabaseUtilities::buildPrivateClickMeasurementFromDatabase const): (WebKit::DatabaseUtilities::buildPrivateClickMeasurementFromDatabase): Deleted.
  • NetworkProcess/DatabaseUtilities.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp: (WebKit::PCM::Database::Database): (WebKit::PCM::Database::insertPrivateClickMeasurement): (WebKit::PCM::Database::privateClickMeasurementToStringForTesting const): (WebKit::PCM::Database::attributionToStringForTesting const): (WebKit::PCM::Database::addBundleIDColumnIfNecessary): (WebKit::PCM::Database::columnsForTable): (WebKit::PCM::Database::addMissingColumnToTable):
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm: (-[WKWebView _addEventAttributionWithSourceID:destinationURL:sourceDescription:purchaser:reportEndpoint:optionalNonce:applicationBundleID:]): (-[WKWebView _addEventAttributionWithSourceID:destinationURL:sourceDescription:purchaser:reportEndpoint:optionalNonce:]): Deleted.
  • UIProcess/API/ios/WKWebViewIOS.mm: (-[WKWebView _setEphemeralUIEventAttribution:]): (-[WKWebView _setEphemeralUIEventAttribution:forApplicationWithBundleID:]):

Tools:

  • TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKitCocoa/PrivateClickMeasurement.mm: (pollUntilPCMIsMigrated):

LayoutTests:

  • http/tests/contentextensions/block-private-click-measurement-expected.txt:
  • http/tests/privateClickMeasurement/attribution-conversion-through-cross-site-image-redirect-expected.txt:
  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt:
  • http/tests/privateClickMeasurement/attribution-conversion-through-image-redirect-ephemeral-expected.txt:
  • http/tests/privateClickMeasurement/attribution-conversion-through-image-redirect-in-new-window-expected.txt:
  • http/tests/privateClickMeasurement/attribution-conversion-through-image-redirect-with-priority-expected.txt:
  • http/tests/privateClickMeasurement/attribution-conversion-through-image-redirect-without-priority-expected.txt:
  • http/tests/privateClickMeasurement/conversion-disabled-in-ephemeral-session-expected.txt:
  • http/tests/privateClickMeasurement/private-click-measurement-with-source-nonce-null-content-expected.txt:
  • http/tests/privateClickMeasurement/private-click-measurement-with-source-nonce-wrong-content-type-expected.txt:
  • http/tests/privateClickMeasurement/second-attribution-converted-with-higher-priority-expected.txt:
  • http/tests/privateClickMeasurement/second-attribution-converted-with-lower-priority-expected.txt:
  • http/tests/privateClickMeasurement/second-conversion-with-higher-priority-expected.txt:
  • http/tests/privateClickMeasurement/second-conversion-with-lower-priority-expected.txt:
  • http/tests/privateClickMeasurement/store-private-click-measurement-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282884 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:12 PM Changeset in webkit [283944] by Kocsen Chung
  • 1 copy in tags/Safari-612.2.9.3.4

Tag Safari-612.2.9.3.4.

3:46 PM Changeset in webkit [283943] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Only mark needed JSONImpl::ObjectBase functions with WTF_EXPORT_PRIVATE
https://bugs.webkit.org/show_bug.cgi?id=231521

Patch by Alex Christensen <achristensen@webkit.org> on 2021-10-11
Reviewed by Chris Dumez.

I'm trying some wild experiments with the linker, and when I do the weak symbol checker fails because
it is trying to export some of the inline functions at the bottom of JSONValues.h.
Moving WTF_EXPORT_PRIVATE from exporting the whole class to only exporting the non-inline functions fixes it.

  • wtf/JSONValues.h:
3:40 PM Changeset in webkit [283942] by Kocsen Chung
  • 2 edits in branches/safari-612.2.9.3-branch/Source/WebKit

Cherry-pick r283846. rdar://problem/84117050

Fix crash in NetworkProcess preconnect due to dereferencing deallocated session
https://bugs.webkit.org/show_bug.cgi?id=231456
<rdar://problem/83752148>

Reviewed by Chris Dumez.

We capture a raw NetworkSession reference in the preconnect completion handler. This
reference could point to a deallocated object if the NetworkSession dies before the
preconnect finishes.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::preconnectTo):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283846 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:37 PM Changeset in webkit [283941] by Wenson Hsieh
  • 18 edits
    5 adds in trunk/Source

Introduce RemoteDisplayListRecorderProxy and RemoteDisplayListRecorder
https://bugs.webkit.org/show_bug.cgi?id=231484

Reviewed by Simon Fraser.

Source/WebCore:

See WebKit ChangeLog for more details.

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/displaylists/DisplayListItems.h:

Add default constructors for a couple of display list items so that they can be encoded as IPC arguments using
SimpleArgumentCoder.

Source/WebKit:

Introduce two new classes that house most of the logic for propagating display list items from the web content
process to the GPU process. RemoteDisplayListRecorderProxy is a subclass of DisplayList::Recorder that records
each item by sending it to the GPU process through a stream connection, which will be added to
RemoteRenderingBackendProxy in a subsequent patch. The RemoteDisplayListRecorderProxy will be managed by
RemoteImageBufferProxy in the web process. RemoteDisplayListRecorder acts as the streaming IPC destination in
the GPU process, and handles the incoming display list items by applying them to the platform graphics context.

For most of these display list items, we can propagate them to the GPU process by sending each display list
item's constructor arguments as separate IPC arguments. In a future patch, we should add support for encoding
the following display list items in the same way:

  • SetInlineFillColor
  • SetInlineStrokeColor
  • SetState
  • SetLineDash
  • DrawGlyphs
  • DrawLinesForText
  • FillRectWithGradient

For now, the above display list items are encoded and decoded as whole items. While there's no practical
disadvantage to implementing it this way, it would be nice to make it consistent.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/graphics/RemoteDisplayListRecorder.cpp: Added.

(WebKit::RemoteDisplayListRecorder::RemoteDisplayListRecorder):
(WebKit::RemoteDisplayListRecorder::resourceCache):
(WebKit::RemoteDisplayListRecorder::drawingContext):
(WebKit::RemoteDisplayListRecorder::startListeningForIPC):
(WebKit::RemoteDisplayListRecorder::stopListeningForIPC):
(WebKit::RemoteDisplayListRecorder::save):
(WebKit::RemoteDisplayListRecorder::restore):
(WebKit::RemoteDisplayListRecorder::translate):
(WebKit::RemoteDisplayListRecorder::rotate):
(WebKit::RemoteDisplayListRecorder::scale):
(WebKit::RemoteDisplayListRecorder::setCTM):
(WebKit::RemoteDisplayListRecorder::concatenateCTM):
(WebKit::RemoteDisplayListRecorder::setInlineFillColor):
(WebKit::RemoteDisplayListRecorder::setInlineStrokeColor):
(WebKit::RemoteDisplayListRecorder::setStrokeThickness):
(WebKit::RemoteDisplayListRecorder::setState):
(WebKit::RemoteDisplayListRecorder::setLineCap):
(WebKit::RemoteDisplayListRecorder::setLineDash):
(WebKit::RemoteDisplayListRecorder::setLineJoin):
(WebKit::RemoteDisplayListRecorder::setMiterLimit):
(WebKit::RemoteDisplayListRecorder::clearShadow):
(WebKit::RemoteDisplayListRecorder::clip):
(WebKit::RemoteDisplayListRecorder::clipOut):
(WebKit::RemoteDisplayListRecorder::clipToImageBuffer):
(WebKit::RemoteDisplayListRecorder::clipOutToPath):
(WebKit::RemoteDisplayListRecorder::clipPath):
(WebKit::RemoteDisplayListRecorder::beginClipToDrawingCommands):
(WebKit::RemoteDisplayListRecorder::endClipToDrawingCommands):
(WebKit::RemoteDisplayListRecorder::drawGlyphs):
(WebKit::RemoteDisplayListRecorder::drawImageBuffer):
(WebKit::RemoteDisplayListRecorder::drawNativeImage):
(WebKit::RemoteDisplayListRecorder::drawPattern):
(WebKit::RemoteDisplayListRecorder::beginTransparencyLayer):
(WebKit::RemoteDisplayListRecorder::endTransparencyLayer):
(WebKit::RemoteDisplayListRecorder::drawRect):
(WebKit::RemoteDisplayListRecorder::drawLine):
(WebKit::RemoteDisplayListRecorder::drawLinesForText):
(WebKit::RemoteDisplayListRecorder::drawDotsForDocumentMarker):
(WebKit::RemoteDisplayListRecorder::drawEllipse):
(WebKit::RemoteDisplayListRecorder::drawPath):
(WebKit::RemoteDisplayListRecorder::drawFocusRingPath):
(WebKit::RemoteDisplayListRecorder::drawFocusRingRects):
(WebKit::RemoteDisplayListRecorder::fillRect):
(WebKit::RemoteDisplayListRecorder::fillRectWithColor):
(WebKit::RemoteDisplayListRecorder::fillRectWithGradient):
(WebKit::RemoteDisplayListRecorder::fillCompositedRect):
(WebKit::RemoteDisplayListRecorder::fillRoundedRect):
(WebKit::RemoteDisplayListRecorder::fillRectWithRoundedHole):
(WebKit::RemoteDisplayListRecorder::fillLine):
(WebKit::RemoteDisplayListRecorder::fillArc):
(WebKit::RemoteDisplayListRecorder::fillQuadCurve):
(WebKit::RemoteDisplayListRecorder::fillBezierCurve):
(WebKit::RemoteDisplayListRecorder::fillPath):
(WebKit::RemoteDisplayListRecorder::fillEllipse):
(WebKit::RemoteDisplayListRecorder::getPixelBuffer):
(WebKit::RemoteDisplayListRecorder::putPixelBuffer):
(WebKit::RemoteDisplayListRecorder::paintFrameForMedia):
(WebKit::RemoteDisplayListRecorder::strokeRect):
(WebKit::RemoteDisplayListRecorder::strokeLine):
(WebKit::RemoteDisplayListRecorder::strokeArc):
(WebKit::RemoteDisplayListRecorder::strokeQuadCurve):
(WebKit::RemoteDisplayListRecorder::strokeBezierCurve):
(WebKit::RemoteDisplayListRecorder::strokePath):
(WebKit::RemoteDisplayListRecorder::strokeEllipse):
(WebKit::RemoteDisplayListRecorder::clearRect):
(WebKit::RemoteDisplayListRecorder::applyStrokePattern):
(WebKit::RemoteDisplayListRecorder::applyFillPattern):
(WebKit::RemoteDisplayListRecorder::applyDeviceScaleFactor):
(WebKit::RemoteDisplayListRecorder::flushContext):

  • GPUProcess/graphics/RemoteDisplayListRecorder.h: Added.

(WebKit::RemoteDisplayListRecorder::create):
(WebKit::RemoteDisplayListRecorder::handleItem):

  • GPUProcess/graphics/RemoteDisplayListRecorder.messages.in: Added.
  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::performWithMediaPlayerOnMainThread):

  • GPUProcess/graphics/RemoteRenderingBackend.h:

Add helper methods to RemoteRenderingBackend that are called from RemoteDisplayListRecorder.

  • Scripts/webkit/messages.py:

(headers_for_type):

  • Shared/WebCoreArgumentCoders.cpp:
  • Shared/WebCoreArgumentCoders.h:

Make it possible to encode and decode SetInlineFillColor and SetInlineStrokeColor using simple argument coder.

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp: Added.

(WebKit::RemoteDisplayListRecorderProxy::RemoteDisplayListRecorderProxy):
(WebKit::m_renderingBackend):
(WebKit::RemoteDisplayListRecorderProxy::getPixelBuffer):
(WebKit::RemoteDisplayListRecorderProxy::putPixelBuffer):
(WebKit::RemoteDisplayListRecorderProxy::canDrawImageBuffer const):
(WebKit::RemoteDisplayListRecorderProxy::renderingMode const):
(WebKit::RemoteDisplayListRecorderProxy::recordSave):
(WebKit::RemoteDisplayListRecorderProxy::recordRestore):
(WebKit::RemoteDisplayListRecorderProxy::recordTranslate):
(WebKit::RemoteDisplayListRecorderProxy::recordRotate):
(WebKit::RemoteDisplayListRecorderProxy::recordScale):
(WebKit::RemoteDisplayListRecorderProxy::recordSetCTM):
(WebKit::RemoteDisplayListRecorderProxy::recordConcatenateCTM):
(WebKit::RemoteDisplayListRecorderProxy::recordSetInlineFillColor):
(WebKit::RemoteDisplayListRecorderProxy::recordSetInlineStrokeColor):
(WebKit::RemoteDisplayListRecorderProxy::recordSetStrokeThickness):
(WebKit::RemoteDisplayListRecorderProxy::recordSetState):
(WebKit::RemoteDisplayListRecorderProxy::recordSetLineCap):
(WebKit::RemoteDisplayListRecorderProxy::recordSetLineDash):
(WebKit::RemoteDisplayListRecorderProxy::recordSetLineJoin):
(WebKit::RemoteDisplayListRecorderProxy::recordSetMiterLimit):
(WebKit::RemoteDisplayListRecorderProxy::recordClearShadow):
(WebKit::RemoteDisplayListRecorderProxy::recordClip):
(WebKit::RemoteDisplayListRecorderProxy::recordClipOut):
(WebKit::RemoteDisplayListRecorderProxy::recordClipToImageBuffer):
(WebKit::RemoteDisplayListRecorderProxy::recordClipOutToPath):
(WebKit::RemoteDisplayListRecorderProxy::recordClipPath):
(WebKit::RemoteDisplayListRecorderProxy::recordBeginClipToDrawingCommands):
(WebKit::RemoteDisplayListRecorderProxy::recordEndClipToDrawingCommands):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawGlyphs):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawImageBuffer):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawNativeImage):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawPattern):
(WebKit::RemoteDisplayListRecorderProxy::recordBeginTransparencyLayer):
(WebKit::RemoteDisplayListRecorderProxy::recordEndTransparencyLayer):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawRect):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawLine):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawLinesForText):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawDotsForDocumentMarker):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawEllipse):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawPath):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawFocusRingPath):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawFocusRingRects):
(WebKit::RemoteDisplayListRecorderProxy::recordFillRect):
(WebKit::RemoteDisplayListRecorderProxy::recordFillRectWithColor):
(WebKit::RemoteDisplayListRecorderProxy::recordFillRectWithGradient):
(WebKit::RemoteDisplayListRecorderProxy::recordFillCompositedRect):
(WebKit::RemoteDisplayListRecorderProxy::recordFillRoundedRect):
(WebKit::RemoteDisplayListRecorderProxy::recordFillRectWithRoundedHole):
(WebKit::RemoteDisplayListRecorderProxy::recordFillLine):
(WebKit::RemoteDisplayListRecorderProxy::recordFillArc):
(WebKit::RemoteDisplayListRecorderProxy::recordFillQuadCurve):
(WebKit::RemoteDisplayListRecorderProxy::recordFillBezierCurve):
(WebKit::RemoteDisplayListRecorderProxy::recordFillPath):
(WebKit::RemoteDisplayListRecorderProxy::recordFillEllipse):
(WebKit::RemoteDisplayListRecorderProxy::recordGetPixelBuffer):
(WebKit::RemoteDisplayListRecorderProxy::recordPutPixelBuffer):
(WebKit::RemoteDisplayListRecorderProxy::recordPaintFrameForMedia):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokeRect):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokeLine):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokeArc):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokeQuadCurve):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokeBezierCurve):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokePath):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokeEllipse):
(WebKit::RemoteDisplayListRecorderProxy::recordClearRect):
(WebKit::RemoteDisplayListRecorderProxy::recordApplyStrokePattern):
(WebKit::RemoteDisplayListRecorderProxy::recordApplyFillPattern):
(WebKit::RemoteDisplayListRecorderProxy::recordApplyDeviceScaleFactor):
(WebKit::RemoteDisplayListRecorderProxy::recordResourceUse):
(WebKit::RemoteDisplayListRecorderProxy::flushContext):
(WebKit::RemoteDisplayListRecorderProxy::createNestedContext):

  • WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h: Added.

(WebKit::RemoteDisplayListRecorderProxy::~RemoteDisplayListRecorderProxy):
(WebKit::RemoteDisplayListRecorderProxy::resetNeedsFlush):
(WebKit::RemoteDisplayListRecorderProxy::needsFlush const):
(WebKit::RemoteDisplayListRecorderProxy::send):
(WebKit::RemoteDisplayListRecorderProxy::recordDrawPattern):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::recordNativeImageUse):
(WebKit::RemoteRenderingBackendProxy::recordFontUse):
(WebKit::RemoteRenderingBackendProxy::recordImageBufferUse):
(WebKit::RemoteRenderingBackendProxy::isCached const):

Add helper methods to RemoteRenderingBackendProxy that are called from RemoteDisplayListRecorderProxy.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:

(WebKit::RemoteRenderingBackendProxy::sendToStream):

3:30 PM Changeset in webkit [283940] by dino@apple.com
  • 6 edits in trunk/Source

Disable SystemPreview in WKContentProviderRegistry
https://bugs.webkit.org/show_bug.cgi?id=231538
rdar://84110761

Reviewed by Tim Horton.

Source/WebKit:

Disable the WebViewContentProvider for System Previews
if UIKIT_WEBKIT_INTERNALS is true.

  • UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:

(-[WKWebViewContentProviderRegistry initWithConfiguration:]):

  • UIProcess/ios/WKSystemPreviewView.h:
  • UIProcess/ios/WKSystemPreviewView.mm:

Source/WTF:

Revert the change in r283811.

  • wtf/PlatformUse.h:
3:19 PM Changeset in webkit [283939] by Jonathan Bedard
  • 2 edits in trunk/Tools

[build-imagediff] Build universal binaries by default
https://bugs.webkit.org/show_bug.cgi?id=231527
<rdar://problem/84113091>

Reviewed by Ryan Haddad.

  • Scripts/build-imagediff:
2:45 PM Changeset in webkit [283938] by sbarati@apple.com
  • 6 edits
    1 add in trunk

Don't branch around register allocation in DFG enumerator get by val and pass in the right LValue type to strictInt52ToJSValue
https://bugs.webkit.org/show_bug.cgi?id=231465
<rdar://83876470>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/dont-branch-around-regalloc-enumerator-get-by-val.js: Added.

(foo):

Source/JavaScriptCore:

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::setIntTypedArrayLoadResult):
(JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

2:21 PM Changeset in webkit [283937] by Patrick Griffis
  • 2 edits in trunk

Add my github username to contributors.json

Unreviewed.

  • metadata/contributors.json:
2:12 PM Changeset in webkit [283936] by Jonathan Bedard
  • 3 edits in trunk/Tools

[run-benchmark] Make Python 3 compatible
https://bugs.webkit.org/show_bug.cgi?id=231512
<rdar://problem/84098736>

Reviewed by Dewei Zhu.

  • Scripts/webkitpy/benchmark_runner/browser_driver/linux_browser_driver.py:

(LinuxBrowserDriver.launch_url): Encode Popen call if Python 3.

  • Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py:

(OSXSafariDriver.launch_url): Ditto.

1:59 PM Changeset in webkit [283935] by ntim@apple.com
  • 39 edits
    1 delete in trunk

Implement new autofocus behavior
https://bugs.webkit.org/show_bug.cgi?id=203139
<rdar://problem/56397019>

Reviewed by Wenson Hsieh.

Make WebKit match the new autofocus spec:

The new autofocus behavior queues up all autofocusable elements (visible or not), then
fires autofocus asynchronously during the "update rendering" steps, unlike the old behavior
which runs focus synchronously whenever it finds a visible autofocusable element.

Original patch by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-empty-expected.txt:
  • web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-nonexistent-expected.txt:
  • web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-top-expected.txt:
  • web-platform-tests/html/interaction/focus/the-autofocus-attribute/first-expected.txt:
  • web-platform-tests/html/interaction/focus/the-autofocus-attribute/first-when-later-expected.txt:
  • web-platform-tests/html/interaction/focus/the-autofocus-attribute/queue-non-focusable-expected.txt:
  • web-platform-tests/html/interaction/focus/the-autofocus-attribute/update-the-rendering-expected.txt:
  • web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt: Expected change since input autofocus now places caret at start

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::appendAutofocusCandidate):
(WebCore::Document::flushAutofocusCandidates):

  • dom/Document.h:

(WebCore::Document::isAutofocusProcessed const):
(WebCore::Document::setAutofocusProcessed):

  • dom/Element.cpp:

(WebCore::Element::runFocusingStepsForAutofocus):

  • dom/Element.h:
  • html/HTMLFormControlElement.cpp:

(WebCore::shouldAutofocus):
(WebCore::HTMLFormControlElement::didAttachRenderers):
(WebCore::HTMLFormControlElement::insertedIntoAncestor):
(WebCore::HTMLFormControlElement::runFocusingStepsForAutofocus):

  • html/HTMLFormControlElement.h:

(WebCore::HTMLFormControlElement::hasAutofocused const): Deleted.
(WebCore::HTMLFormControlElement::setAutofocused): Deleted.

  • page/Page.cpp:

(WebCore::Page::updateRendering):

  • page/Page.h:

LayoutTests:

  • TestExpectations:
  • fast/dom/Window/window-scroll-ignore-null-frame.html:
  • fast/dom/adopt-node-crash-2-expected.txt:
  • fast/dom/adopt-node-crash-2.html:
  • fast/dom/window-inner-width-crash.html:
  • fast/forms/autofocus-in-sandbox-with-allow-scripts-expected.txt:
  • fast/forms/autofocus-in-sandbox-with-allow-scripts.html:
  • fast/forms/autofocus-keygen.html:
  • fast/forms/autofocus-opera-001.html:
  • fast/forms/autofocus-opera-002.html:
  • fast/forms/autofocus-opera-003.html:
  • fast/forms/autofocus-opera-006.html:
  • fast/forms/autofocus-opera-007.html:
  • fast/forms/change-input-type-in-focus-handler.html:
  • fast/frames/crash-when-iframe-is-remove-in-eventhandler.html:
  • fast/history/page-cache-execute-script-during-restore.html:
  • platform/ios-wk2/TestExpectations:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/interaction/focus/the-autofocus-attribute/update-the-rendering-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/interaction/focus/the-autofocus-attribute/update-the-rendering-expected.txt:
  • platform/win/TestExpectations:
1:37 PM Changeset in webkit [283934] by commit-queue@webkit.org
  • 9 edits in trunk/Tools

Reduce use of TCPServer
https://bugs.webkit.org/show_bug.cgi?id=231518

Patch by Alex Christensen <achristensen@webkit.org> on 2021-10-11
Reviewed by Chris Dumez.

HTTPServer runs its logic on the main thread and doesn't hang in its destructor
when the number of connections and requests isn't exactly what was expected.

verifyCertificateAndPublicKey needed its expected bytes to be changed because it is
using the identity from TCPServer::testCertificate instead of TCPServer::startSecureConnection now.

I also moved the proxy basic authentication check from proxyAuthenticationServer to proxyDefinition.

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(TEST):
(verifyCertificateAndPublicKey):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/Proxy.mm:

(TestWebKitAPI::proxyAuthenticationServer):
(TestWebKitAPI::webViewAndDelegate):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/HTTPServer.h:
  • TestWebKitAPI/cocoa/HTTPServer.mm:

(TestWebKitAPI::proxyDefinition):
(TestWebKitAPI::shouldDisableTLS):
(TestWebKitAPI::HTTPServer::listenerParameters):
(TestWebKitAPI::statusText):
(TestWebKitAPI::HTTPServer::request const):

1:27 PM Changeset in webkit [283933] by Chris Dumez
  • 2 edits in branches/safari-612-branch/LayoutTests/imported/w3c

Unreviewed, minor test rebaseline on the branch.

Due to lack of SharedArrayBuffer stubs.

  • web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https-expected.txt:
1:16 PM Changeset in webkit [283932] by weinig@apple.com
  • 2 edits in trunk

Add my github username and keep my expertise where it is because, while not up to date, it is fun

Unreviewed.

  • metadata/contributors.json:
1:14 PM Changeset in webkit [283931] by Chris Dumez
  • 12 edits
    1 copy
    2 moves
    1 add
    2 deletes in branches/safari-612-branch

Cherry-pick r283509. <rdar://83953710>

1:10 PM Changeset in webkit [283930] by commit-queue@webkit.org
  • 7 edits in trunk/Source

Unified build fix
https://bugs.webkit.org/show_bug.cgi?id=231524

Patch by Alex Christensen <achristensen@webkit.org> on 2021-10-11
Reviewed by Chris Dumez.

Source/WebCore:

  • platform/encryptedmedia/CDMProxy.cpp:

Source/WebKit:

This adds some missing includes and things to fix the build once I add some more files, making the unified build combine differently

  • NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementNetworkLoaderCocoa.mm:

(-[WKNetworkSessionDelegateAllowingOnlyNonRedirectedJSON URLSession:dataTask:didReceiveResponse:completionHandler:]):

  • NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementXPCUtilities.h:
  • NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementXPCUtilities.mm:
  • Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonEntryPoint.mm:
12:58 PM Changeset in webkit [283929] by Chris Dumez
  • 58 edits
    1 copy
    1 add in branches/safari-612-branch

Cherry-pick r283179. <rdar://83956559>

12:53 PM Changeset in webkit [283928] by Russell Epstein
  • 1 copy in tags/Safari-613.1.4.2

Tag Safari-613.1.4.2.

12:52 PM Changeset in webkit [283927] by Russell Epstein
  • 5 edits in branches/safari-613.1.4-branch/Source/WebKit

Cherry-pick r283925. rdar://problem/84111635

[macOS] Grant access in sandbox to 'system-privilege' for root
https://bugs.webkit.org/show_bug.cgi?id=231501
<rdar://83959448>

Reviewed by Brent Fulgham.

When running as root, WebKit processes need access to 'system-privilege'.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283925 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12:51 PM Changeset in webkit [283926] by Russell Epstein
  • 8 edits in branches/safari-613.1.4-branch/Source

Versioning.

WebKit-7613.1.4.2

12:41 PM Changeset in webkit [283925] by pvollan@apple.com
  • 5 edits in trunk/Source/WebKit

[macOS] Grant access in sandbox to 'system-privilege' for root
https://bugs.webkit.org/show_bug.cgi?id=231501
<rdar://83959448>

Reviewed by Brent Fulgham.

When running as root, WebKit processes need access to 'system-privilege'.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
12:37 PM Changeset in webkit [283924] by commit-queue@webkit.org
  • 2 edits in trunk

Various updates to my contributors.json entry.

Unreviewed.

Patch by Theresa O'Connor <hober@apple.com> on 2021-10-11

  • metadata/contributors.json:
12:34 PM Changeset in webkit [283923] by Chris Dumez
  • 2 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r282854. <rdar://83957011>

12:30 PM Changeset in webkit [283922] by Chris Dumez
  • 23 edits
    1 add
    1 delete in branches/safari-612-branch

Cherry-pick r282604. <rdar://83954050>

12:17 PM Changeset in webkit [283921] by BJ Burg
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: add TabBar context menu support for WI.WebInspectorExtensionTabContentView
https://bugs.webkit.org/show_bug.cgi?id=231181
<rdar://74698241>

Unreviewed. Land parts of the previous patch which seem to have been mis-merged and not landed.

  • UserInterface/Base/Main.js:

(WI.isNewTabWithTypeAllowed):

  • UserInterface/Controllers/WebInspectorExtensionController.js:

(WI.WebInspectorExtensionController.prototype.showExtensionTab):

  • UserInterface/Views/TabBar.js:

(WI.TabBar.prototype._handleAddClosedTabsTabBarItemMouseDown):
(WI.TabBar.prototype._handleTabContainerContextMenu):
(WI.TabBar):

12:14 PM Changeset in webkit [283920] by Chris Dumez
  • 46 edits
    2 adds in branches/safari-612-branch

Cherry-pick r282305. <rdar://83955184>

12:03 PM Changeset in webkit [283919] by Devin Rousso
  • 2 edits in trunk

Add my github and update my expertise

Unreviewed.

  • metadata/contributors.json:
12:02 PM Changeset in webkit [283918] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ iOS BigSur wk1 ] webgl/1.0.3/conformance/uniforms/uniform-default-values.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=231514

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
11:52 AM Changeset in webkit [283917] by Chris Dumez
  • 11 edits
    3 adds in branches/safari-612-branch

Cherry-pick r281935. <rdar://83953588>

11:38 AM Changeset in webkit [283916] by Ben Nham
  • 14 edits
    14 adds in trunk

Add push registration stubs
https://bugs.webkit.org/show_bug.cgi?id=231064

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Update test results after importing PushManager-related IDL.

  • web-platform-tests/push-api/idlharness.https.any-expected.txt:
  • web-platform-tests/push-api/idlharness.https.any.serviceworker-expected.txt:
  • web-platform-tests/push-api/idlharness.https.any.worker-expected.txt:

Source/WebCore:

Import IDL related to PushManager and implement steps 1-7 of the subscribe method as
described in https://www.w3.org/TR/push-api/#pushmanager-interface. Further steps will be
implemented in future patches.

Tests: http/wpt/push-api/pushManager.any.html

http/wpt/push-api/pushManager.any.serviceworker.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/push-api/PushManager.cpp: Added.

(WebCore::PushManager::PushManager):
(WebCore::PushManager::supportedContentEncodings):
(WebCore::PushManager::ref const):
(WebCore::PushManager::deref const):
(WebCore::PushManager::subscribe):
(WebCore::PushManager::getSubscription):
(WebCore::PushManager::permissionState):

  • Modules/push-api/PushManager.h: Added.
  • Modules/push-api/PushManager.idl: Added.
  • Modules/push-api/PushPermissionState.h: Added.
  • Modules/push-api/PushPermissionState.idl: Added.
  • Modules/push-api/ServiceWorkerRegistration+PushAPI.idl: Added.
  • Modules/push-api/ServiceWorkerRegistrationPushAPI.cpp: Added.

(WebCore::ServiceWorkerRegistrationPushAPI::ServiceWorkerRegistrationPushAPI):
(WebCore::ServiceWorkerRegistrationPushAPI::pushManager):
(WebCore::ServiceWorkerRegistrationPushAPI::from):
(WebCore::ServiceWorkerRegistrationPushAPI::supplementName):

  • Modules/push-api/ServiceWorkerRegistrationPushAPI.h: Added.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • workers/service/ServiceWorkerRegistration.h:

LayoutTests:

Add basic tests for PushManager.subscribe in both the window and service worker contexts.

  • http/wpt/push-api/pushManager-worker.js: Added.
  • http/wpt/push-api/pushManager.any-expected.txt: Added.
  • http/wpt/push-api/pushManager.any.html: Added.
  • http/wpt/push-api/pushManager.any.js: Added.

(isServiceWorker.promise_test.async test):
(else.promise_test.async test):
(promise_test.async test):

  • http/wpt/push-api/pushManager.any.serviceworker-expected.txt: Added.
  • http/wpt/push-api/pushManager.any.serviceworker.html: Added.
11:31 AM Changeset in webkit [283915] by Chris Dumez
  • 47 edits
    1 copy
    2 adds in branches/safari-612-branch

Cherry-pick r281832. <rdar://83953492>

11:28 AM Changeset in webkit [283914] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC][ARMv7] Make LLInt CSR save/restore order match the JITs
https://bugs.webkit.org/show_bug.cgi?id=231517

Patch by Geza Lore <Geza Lore> on 2021-10-11
Reviewed by Saam Barati.

Since the new unlinked baseline JIT was introduced, the baseline JIT
uses the metadata table GPR the same way as the LLInt does, and relies
on it being in a saved CSR in emit_op_catch. This unearthed an issue
in the order in which LLInt on ARMv7 stores and restores CSRs when
trying to handle exceptions. This patch fixes the mismatch.

  • llint/LowLevelInterpreter.asm:
11:16 AM Changeset in webkit [283913] by Chris Dumez
  • 7 edits in branches/safari-612-branch

Merge r281802. <rdar://83957220>

11:05 AM Changeset in webkit [283912] by Chris Dumez
  • 27 edits
    1 move in trunk/Source

DOMTimeStamp is now EpochTimeStamp
https://bugs.webkit.org/show_bug.cgi?id=231496

Reviewed by Sam Weinig.

Source/WebCore:

DOMTimeStamp was renamed EpochTimeStamp. There is no observable behavioral change - it's just a name change.

Relevant WebIDL discussions/issue:

Which lead to:

  • Headers.cmake:
  • Modules/geolocation/Geolocation.cpp:

(WebCore::createGeolocationPosition):
(WebCore::Geolocation::haveSuitableCachedPosition):

  • Modules/geolocation/GeolocationPosition.h:

(WebCore::GeolocationPosition::create):
(WebCore::GeolocationPosition::timestamp const):
(WebCore::GeolocationPosition::GeolocationPosition):

  • Modules/geolocation/GeolocationPosition.idl:
  • Modules/notifications/Notification.idl:
  • Modules/push-api/PushSubscription.cpp:

(WebCore::PushSubscription::PushSubscription):
(WebCore::PushSubscription::expirationTime const):

  • Modules/push-api/PushSubscription.h:
  • Modules/push-api/PushSubscription.idl:
  • Modules/push-api/PushSubscriptionJSON.h:
  • Modules/push-api/PushSubscriptionJSON.idl:
  • Modules/push-api/PushSubscriptionOptions.h:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/scripts/IDLParser.pm:

(addBuiltinTypedefs):

  • bindings/scripts/test/TestTypedefs.idl:
  • dom/EpochTimeStamp.h: Renamed from Source/WebCore/dom/DOMTimeStamp.h.

(WebCore::convertSecondsToEpochTimeStamp):
(WebCore::convertEpochTimeStampToSeconds):

  • testing/Internals.cpp:

(WebCore::Internals::createPushSubscription):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKitLegacy/mac:

  • DOM/DOMEvent.h:
  • DOM/DOMEvent.mm:

(-[DOMEvent timeStamp]):

  • DOM/DOMObject.h:

Source/WebKitLegacy/win:

  • DOMEventsClasses.cpp:

(DOMEvent::timeStamp):

  • DOMEventsClasses.h:

(DOMUIEvent::timeStamp):
(DOMKeyboardEvent::timeStamp):
(DOMMouseEvent::timeStamp):
(DOMMutationEvent::timeStamp):
(DOMOverflowEvent::timeStamp):
(DOMWheelEvent::timeStamp):

  • Interfaces/DOMEvents.idl:
10:52 AM Changeset in webkit [283911] by Simon Fraser
  • 31 edits in trunk/Source

Smooth-scroll animations should run in the UI process on iOS
https://bugs.webkit.org/show_bug.cgi?id=204936

Reviewed by Tim Horton.

Source/WebCore:

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::handleScrollPositionRequest): On iOS scrollingTreeNodeRequestsScroll()
doesn't handle the animated scroll, so we need to call startAnimatedScrollToPosition() from here.

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::scrollToOffset): call stopAsyncAnimatedScroll()
for overflow scrolls as we do in FrameView.

Source/WebKit:

Implement animated scrolls in the UI process for UI-side compositing. The scrolling tree
decoded in the UI process has a RequestedScrollData with the 'animated' flag. This is
processed by handleScrollPositionRequest() as normal.

ScrollingTreeOverflowScrollingNodeIOS::startAnimatedScrollToPosition() responds by calling
through to the delegate, which simply calls -[setContentOffset:animated:YES] on the
UIScrollView.

Main frame scrolls are a little different because the programmatic scroll needs to be
handled after layer tree commits; leverage the existing
RemoteScrollingCoordinatorProxy::scrollingTreeNodeRequestsScroll() code, but clean it up to
share the RequestedScrollData type, and have commitScrollingTreeState() return
std::optional<RequestedScrollData> instead of storing a pointer to a struct on the stack as
it did before. The various requestScroll() functions take a ScrollIsAnimated flag which
turns into -[setContentOffset:animated:YES] in WKWebView.

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(WebKit::dump):

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::requestScroll):

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/API/ios/WKWebViewIOS.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _scrollToContentScrollPosition:scrollOrigin:animated:]):
(-[WKWebView _scrollToContentScrollPosition:scrollOrigin:]): Deleted.

  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::requestScroll):

  • UIProcess/API/wpe/PageClientImpl.h:
  • UIProcess/PageClient.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::commitScrollingTreeState):
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeRequestsScroll):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:

(WebKit::RemoteScrollingTree::scrollingTreeNodeRequestsScroll):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:

(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren): The delegate's
commitStateAfterChildren() has to run first to update UIScrollView state before the programmatic scroll
is handled in the base class.

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:

(WebKit::ScrollingTreeOverflowScrollingNodeIOS::commitStateAfterChildren): The delegate's
commitStateAfterChildren() has to run first to update UIScrollView state before the programmatic scroll
is handled in the base class.
(WebKit::ScrollingTreeOverflowScrollingNodeIOS::startAnimatedScrollToPosition):
(WebKit::ScrollingTreeOverflowScrollingNodeIOS::stopAnimatedScroll):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollLayer const): Deleted.
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::activeTouchActions const): Deleted.
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::clearActiveTouchActions): Deleted.

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::startAnimatedScrollToPosition):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::stopAnimatedScroll):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestScroll):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::requestScroll):

  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::requestScroll):

  • UIProcess/playstation/PageClientImpl.cpp:

(WebKit::PageClientImpl::requestScroll):

  • UIProcess/playstation/PageClientImpl.h:
  • UIProcess/win/PageClientImpl.cpp:

(WebKit::PageClientImpl::requestScroll):

  • UIProcess/win/PageClientImpl.h:
10:49 AM Changeset in webkit [283910] by Chris Dumez
  • 30 edits
    2 copies
    1 move
    20 adds
    3 deletes in branches/safari-612-branch/LayoutTests

Cherry-pick r281775. <rdar://83954681>

10:46 AM Changeset in webkit [283909] by Chris Dumez
  • 2 edits in branches/safari-612-branch/Tools

Cherry-pick r281709. <rdar://83953401>

10:41 AM Changeset in webkit [283908] by Chris Dumez
  • 28 edits
    4 adds in branches/safari-612-branch

Cherry-pick r281706. <rdar://83955085>

10:34 AM Changeset in webkit [283907] by Ryan Haddad
  • 3 edits in trunk/Tools

Bring up an iOS GPU Process tester
https://bugs.webkit.org/show_bug.cgi?id=231515

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/config.json:
  • CISupport/build-webkit-org/factories_unittest.py:
10:22 AM Changeset in webkit [283906] by commit-queue@webkit.org
  • 54 edits in trunk

Prepare to switch from WTF::Variant to std::variant
https://bugs.webkit.org/show_bug.cgi?id=231239

Patch by Alex Christensen <achristensen@webkit.org> on 2021-10-11
Reviewed by Chris Dumez.

Source/JavaScriptCore:

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCallDOM):

  • parser/Lexer.cpp:

(JSC::Lexer<T>::parseHex):
(JSC::Lexer<T>::parseBinary):
(JSC::Lexer<T>::parseOctal):
(JSC::Lexer<T>::parseDecimal):

  • runtime/CachePayload.cpp:

(JSC::CachePayload::data const):
(JSC::CachePayload::size const):

  • runtime/CacheUpdate.cpp:

(JSC::CacheUpdate::CacheUpdate):

Source/WebCore:

  • Modules/cache/DOMCacheEngine.cpp:

(WebCore::DOMCacheEngine::isolatedResponseBody):
(WebCore::DOMCacheEngine::copyResponseBody):

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::loadingException const):

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::sourceObjectStoreIdentifier const):

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::showMediaControlsContextMenu):

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::addIceCandidate):

  • Modules/mediastream/RTCRtpTransform.cpp:

(WebCore::RTCRtpTransform::isAttached const):
(WebCore::operator==):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::videoSource):
(WebCore::LibWebRTCRtpSenderBackend::hasSource const):
(WebCore::operator==): Deleted.

  • Modules/webxr/WebXRFrame.cpp:

(WebCore::WebXRFrame::getViewerPose):

  • Modules/webxr/WebXRWebGLLayer.cpp:

(WebCore::WebXRWebGLLayer::canvas const):

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::intPointAttributeValue const):
(WebCore::AXIsolatedObject::objectAttributeValue const):
(WebCore::AXIsolatedObject::rectAttributeValue const):
(WebCore::AXIsolatedObject::vectorAttributeValue const):
(WebCore::AXIsolatedObject::optionSetAttributeValue const):
(WebCore::AXIsolatedObject::pairAttributeValue const):
(WebCore::AXIsolatedObject::uint64AttributeValue const):
(WebCore::AXIsolatedObject::urlAttributeValue const):
(WebCore::AXIsolatedObject::pathAttributeValue const):
(WebCore::AXIsolatedObject::colorAttributeValue const):
(WebCore::AXIsolatedObject::floatAttributeValue const):
(WebCore::AXIsolatedObject::doubleAttributeValue const):
(WebCore::AXIsolatedObject::unsignedAttributeValue const):

  • bindings/IDLTypes.h:
  • bindings/js/JSDOMConvertWebGL.cpp:

(WebCore::convertToJSValue):

  • bindings/js/JSPaymentMethodChangeEventCustom.cpp:

(WebCore::JSPaymentMethodChangeEvent::methodDetails const):

  • bindings/js/JSValueInWrappedObject.h:

(WebCore::JSValueInWrappedObject::operator JSC::JSValue const):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeFontWeight):

  • dom/MessageEvent.cpp:

(WebCore::MessageEvent::memoryCost const):

  • editing/Editor.cpp:

(WebCore::Editor::advanceToNextMisspelling):

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::ExclusionRule::match const):

  • html/URLSearchParams.cpp:

(WebCore::URLSearchParams::create):

  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::canvasContext const):
(WebCore::InspectorCanvas::canvasElement const):
(WebCore::InspectorCanvas::scriptExecutionContext const):
(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::indexForData):

  • inspector/InspectorShaderProgram.cpp:

(WebCore::InspectorShaderProgram::program const):

  • platform/SharedBuffer.cpp:

(WebCore::SharedBuffer::DataSegment::data const):
(WebCore::SharedBuffer::DataSegment::size const):

  • platform/cf/SharedBufferCF.cpp:

(WebCore::SharedBuffer::createCFData const):
(WebCore::SharedBuffer::hintMemoryNotNeededSoon const):

  • platform/generic/KeyedDecoderGeneric.cpp:

(WebCore::KeyedDecoderGeneric::Dictionary::add):
(WebCore::KeyedDecoderGeneric::getPointerFromDictionaryStack):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfTrack):

  • platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:

(WebCore::TextureMapperPlatformLayerBuffer::clone):

  • platform/mock/MockMediaDevice.h:

(WebCore::MockMediaDevice::encode const):

  • platform/network/FormData.cpp:

(WebCore::FormData::imageOrMediaFilesCount const):
(WebCore::FormDataElement::lengthInBytes const):
(WebCore::FormDataElement::isolatedCopy const):
(WebCore::FormData::appendData):
(WebCore::FormData::flatten const):
(WebCore::FormData::prepareForUpload):
(WebCore::FormData::asBlobURL const):

  • platform/network/cf/FormDataStreamCFNet.cpp:

(WebCore::advanceCurrentStream):
(WebCore::setHTTPBody):

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::enableSSLForHost):

  • platform/network/curl/CurlFormDataStream.cpp:

(WebCore::CurlFormDataStream::read):

  • platform/network/curl/CurlSSLVerifier.cpp:

(WebCore::CurlSSLVerifier::CurlSSLVerifier):

  • platform/network/soup/ResourceRequestSoup.cpp:

(WebCore::ResourceRequest::updateSoupMessageBody const):

  • style/StyleResolveForFontRaw.cpp:

(WebCore::Style::resolveForFontRaw):

Source/WebKit:

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::resolveBlobReferences):

  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::encode const):

  • Platform/IPC/FormDataReference.h:

(IPC::FormDataReference::encode const):

  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp:

(WebKit::MediaSampleCursor::locateIterator const):

  • UIProcess/API/APIWebAuthenticationPanel.h:
  • UIProcess/Automation/SimulatedInputDispatcher.h:
  • UIProcess/Cocoa/WKSafeBrowsingWarning.h:

Source/WTF:

This is the pieces of bug 231086 that can be done without changing behavior.

  1. It makes WTF::get_if look more like std::get_if by taking a pointer to a variant instead of a reference.
  2. std::visit is pickier than WTF::visit. The former allows taking lambdas with different return types as long

as the return types can be converted to the overall desired return type. std::visit has a static_assert that the
return types of all the lambdas are all exactly the same type, so I explicitly declare the return type of many lambdas.

  1. It also resolves some types that will become ambiguous by using WTF::in_place,

which will become wrapped by std::in_place_type then removed.

  1. It adds a few explicit WTF:: and #include <wtf/Variant.h> that will be needed after removing Variant from Forward.h.
  2. It removes the fast malloc check in the one place a Variant is dynamically allocated in KeyedDecoderGeneric.cpp

(which is for non-cocoa platforms) because std::variant isn't fast allocated.

  • wtf/LikelyDenseUnsignedIntegerSet.h:

(WTF::LikelyDenseUnsignedIntegerSet::iterator::operator* const):

  • wtf/Variant.h:

(WTF::get_if):

Tools:

  • TestWebKitAPI/Tests/WTF/Hasher.cpp:

(TestWebKitAPI::add):

  • TestWebKitAPI/Tests/WTF/Variant.cpp:

(TestWebKitAPI::TEST):

10:19 AM Changeset in webkit [283905] by Chris Dumez
  • 38 edits
    2 adds in branches/safari-612-branch

Cherry-pick r281516. <rdar://83956860>

10:00 AM Changeset in webkit [283904] by Jonathan Bedard
  • 2 edits in trunk/Tools

[build.webkit.org] Build iOS 15 as universal binary (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=231389
<rdar://problem/83997697>

Reviewed by Ryan Haddad.

  • CISupport/build-webkit-org/config.json: Use universal iOS 15 Simulator Release build.
9:58 AM Changeset in webkit [283903] by keith_miller@apple.com
  • 28 edits
    1 copy in trunk/Source/JavaScriptCore

SourceID should have a type name and only be 32-bits
https://bugs.webkit.org/show_bug.cgi?id=231436

Reviewed by Filip Pizlo.

This patch gives SourceID a proper type name and shrinks it to
32-bits on 64-bit systems. Shrinking the size makes room on
SourceProvider for metadata in a future patch I'm working on.
It's also pretty unlikely that any system has more than ~4 billion
script tags, evals, wasm modules so shinking the size is unlikely
to cause any debugger/profiling issues.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/TypeLocation.h:
  • debugger/Debugger.cpp:

(JSC::Debugger::toggleBreakpoint):
(JSC::Debugger::pauseIfNeeded):

  • debugger/DebuggerLocation.h:

(JSC::DebuggerLocation::DebuggerLocation):

  • debugger/DebuggerPrimitives.h:
  • inspector/JavaScriptCallFrame.h:

(Inspector::JavaScriptCallFrame::sourceID const):

  • inspector/ScriptCallStackFactory.cpp:

(Inspector::CreateScriptCallStackFunctor::operator() const):
(Inspector::createScriptCallStackFromException):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::sourceID):

  • interpreter/StackVisitor.h:
  • parser/Nodes.h:

(JSC::ScopeNode::sourceID const):

  • parser/SourceCode.h:

(JSC::SourceCode::SourceCode):
(JSC::SourceCode::firstLine const):
(JSC::SourceCode::startColumn const):
(JSC::SourceCode::providerID const):
(JSC::SourceCode::provider const):
(JSC::SourceCode::operator== const):
(JSC::SourceCode::operator!= const):
(JSC::makeSource):
(JSC::SourceCode::subExpression const):

  • parser/SourceProvider.cpp:

(JSC::SourceProvider::getID):

  • parser/SourceProvider.h:

(JSC::SourceProvider::asID):

  • runtime/ControlFlowProfiler.cpp:

(JSC::ControlFlowProfiler::getBasicBlockLocation):
(JSC::ControlFlowProfiler::getBasicBlocksForSourceID const):
(JSC::ControlFlowProfiler::hasBasicBlockAtTextOffsetBeenExecuted):
(JSC::ControlFlowProfiler::basicBlockExecutionCountAtTextOffset):

  • runtime/ControlFlowProfiler.h:
  • runtime/FunctionHasExecutedCache.cpp:

(JSC::FunctionHasExecutedCache::hasExecutedAtOffset):
(JSC::FunctionHasExecutedCache::insertUnexecutedRange):
(JSC::FunctionHasExecutedCache::removeUnexecutedRange):
(JSC::FunctionHasExecutedCache::getFunctionRanges):

  • runtime/FunctionHasExecutedCache.h:
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::StackFrame::sourceID):

  • runtime/SamplingProfiler.h:
  • runtime/ScriptExecutable.h:

(JSC::ScriptExecutable::sourceID const):

  • runtime/StackFrame.cpp:

(JSC::StackFrame::sourceID const):

  • runtime/StackFrame.h:
  • runtime/TypeLocationCache.cpp:

(JSC::TypeLocationCache::getTypeLocation):

  • runtime/TypeLocationCache.h:
  • runtime/TypeProfiler.cpp:

(JSC::TypeProfiler::typeInformationForExpressionAtOffset):
(JSC::TypeProfiler::findLocation):

  • runtime/TypeProfiler.h:

(JSC::QueryKey::QueryKey):
(JSC::QueryKey::isHashTableDeletedValue const):

9:54 AM Changeset in webkit [283902] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Use inline box isFirstBox/isLastBox bits in iterator
https://bugs.webkit.org/show_bug.cgi?id=231513

Reviewed by Alan Bujtas.

  • layout/integration/InlineIteratorBoxModernPath.h:

(WebCore::InlineIterator::BoxModernPath::traverseNextInlineBox):
(WebCore::InlineIterator::BoxModernPath::traversePreviousInlineBox):

Avoid always traversing to the end.

9:36 AM Changeset in webkit [283901] by Kocsen Chung
  • 1 copy in tags/Safari-613.1.4.1

Tag Safari-613.1.4.1.

9:18 AM Changeset in webkit [283900] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Export some display list item methods for use in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=231483

Reviewed by Anders Carlsson.

Add WEBCORE_EXPORT to various apply methods on display list items, which will allow RemoteDisplayListRecorder
(in the GPU process, and implemented in WebKit2) to play back incoming display list items.

  • platform/graphics/displaylists/DisplayListItems.h:
9:13 AM Changeset in webkit [283899] by Razvan Caliman
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Move CSS longhand and shorthand mapping away from WI.CSSCompletions
https://bugs.webkit.org/show_bug.cgi?id=231432
<rdar://problem/84029471>

Reviewed by Devin Rousso.

WI.CSSCompletions has scope creep. Beyond handling filtering for CSS completions,
it holds logic to deal with CSS property name longhand-to-shorthand mapping.

But it already relies heavily on metadata about properties set on WI.CSSKeywordCompletions
populated as a result of the one-time initialization from WI.CSSCompletions.initializeCSSCompletions(target) >
WI.CSSKeywordCompletions.addCustomCompletions(properties).

This change moves the longhand-to-shorthand mapping from WI.CSSCompletions to
WI.CSSKeywordCompletions.ShorthandNamesForLongHandProperty and updates relevant consumers.

The aim is to gradually remove all specialized logic for property names from WI.CSSCompletions.

  • UserInterface/Models/CSSCompletions.js:

(WI.CSSCompletions):
(WI.CSSCompletions.prototype.isShorthandPropertyName): Deleted.
(WI.CSSCompletions.prototype.shorthandsForLonghand): Deleted.

  • UserInterface/Models/CSSKeywordCompletions.js:
  • UserInterface/Models/CSSProperty.js:

(WI.CSSProperty):

  • UserInterface/Models/DOMNodeStyles.js:

(WI.DOMNodeStyles.prototype._associateRelatedProperties):

9:12 AM Changeset in webkit [283898] by Kocsen Chung
  • 8 edits in branches/safari-613.1.4-branch/Source

Versioning.

WebKit-7613.1.4.1

9:04 AM Changeset in webkit [283897] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk/Source/WebKit

Add AdAttributionDaemon sandbox on iOS
https://bugs.webkit.org/show_bug.cgi?id=231308

Patch by Alex Christensen <achristensen@webkit.org> on 2021-10-11
Reviewed by Brent Fulgham.

This makes it so that AdAttributionDaemon has enough permission to access the network and its storage file and not much else.

  • Configurations/AdAttributionDaemon.xcconfig:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.AdAttributionDaemon.sb: Added.
  • Scripts/process-entitlements.sh:
  • Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonEntryPoint.mm:

(WebKit::enterSandbox):

  • WebKit.xcodeproj/project.pbxproj:
8:55 AM Changeset in webkit [283896] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

LineLayoutPath::LineBoxesPath name is outdated
https://bugs.webkit.org/show_bug.cgi?id=231494

Reviewed by Antti Koivisto.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::printModernLineLayoutCoverage):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutInlineChildren):
(WebCore::RenderBlockFlow::invalidateLineLayoutPath):

  • rendering/RenderBlockFlow.h:
8:43 AM Changeset in webkit [283895] by Antti Koivisto
  • 5 edits
    1 add
    7 deletes in trunk

Remove inline box decoration painting quirk
https://bugs.webkit.org/show_bug.cgi?id=231510

Reviewed by Alan Bujtas.

Source/WebCore:

This quirk implemented in InlineBoxPainter::constrainToLineTopAndBottomIfNeeded constraints
painting of inline box decorations under certain narrow conditions in quirks mode.
It has been removed from Chrome so removing it is likely web compatible.

The quirk originated from https://trac.webkit.org/changeset/53200/webkit

  • rendering/InlineBoxPainter.cpp:

(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):
(WebCore::InlineBoxPainter::paintFillLayer):
(WebCore::InlineBoxPainter::constrainToLineTopAndBottomIfNeeded const): Deleted.

  • rendering/InlineBoxPainter.h:

LayoutTests:

  • fast/backgrounds/quirks-mode-line-box-backgrounds-expected-mismatch.html: Added.
  • fast/backgrounds/quirks-mode-line-box-backgrounds.html:
  • platform/glib/fast/backgrounds/quirks-mode-line-box-backgrounds-expected.txt: Removed.
  • platform/gtk/fast/backgrounds/quirks-mode-line-box-backgrounds-expected.png: Removed.
  • platform/ios/fast/backgrounds/quirks-mode-line-box-backgrounds-expected.txt: Removed.
  • platform/mac/fast/backgrounds/quirks-mode-line-box-backgrounds-expected.png: Removed.
  • platform/mac/fast/backgrounds/quirks-mode-line-box-backgrounds-expected.txt: Removed.
  • platform/win/fast/backgrounds/quirks-mode-line-box-backgrounds-expected.txt: Removed.
  • platform/wincairo/fast/backgrounds/quirks-mode-line-box-backgrounds-expected.txt: Removed.
8:30 AM Changeset in webkit [283894] by Noam Rosenthal
  • 2 edits in trunk

Add my github username to contributors.json

Unreviewed.

  • metadata/contributors.json:
8:12 AM Changeset in webkit [283893] by Antti Koivisto
  • 15 edits in trunk/Source/WebCore

[LFC][Integration] paintFillLayerExtended should use inline iterator
https://bugs.webkit.org/show_bug.cgi?id=231502

Reviewed by Alan Bujtas.

Prepare for LFC inline box painting.

  • layout/integration/InlineIteratorInlineBox.cpp:

(WebCore::InlineIterator::InlineBox::hasClosedLeftAndRightEdge const):

Add a shared helper.

The answer is computed here though this information is needed for layout too.
We should be able to consult layout to get it.

  • layout/integration/InlineIteratorInlineBox.h:
  • rendering/InlineBoxPainter.cpp:

(WebCore::clipRectForNinePieceImageStrip):
(WebCore::InlineBoxPainter::paintDecorations):
(WebCore::InlineBoxPainter::paintFillLayer):
(WebCore::InlineBoxPainter::paintBoxShadow):

  • rendering/LegacyInlineBox.h:
  • rendering/LegacyInlineFlowBox.cpp:

(WebCore::LegacyInlineFlowBox::boxShadowCanBeAppliedToBackground const): Deleted.

Move to the only call site as a lambda.

  • rendering/LegacyInlineFlowBox.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::paintBoxDecorations):
(WebCore::RenderBox::paintBackground):
(WebCore::RenderBox::paintFillLayer):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::getBackgroundRoundedRect const):
(WebCore::RenderBoxModelObject::backgroundRoundedRectAdjustedForBleedAvoidance const):
(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
(WebCore::RenderBoxModelObject::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderImage.cpp:

(WebCore::RenderImage::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderImage.h:
  • rendering/RenderTable.cpp:

(WebCore::RenderTable::paintBoxDecorations):

  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderTableCell.h:
6:50 AM Changeset in webkit [283892] by ntim@apple.com
  • 7 edits
    7 copies
    8 adds in trunk/LayoutTests

Import new top layer WPTs
https://bugs.webkit.org/show_bug.cgi?id=229318

Reviewed by Youenn Fablet.

Sync html/semantics/interactive-elements/the-dialog-element/ WPTs from https://github.com/web-platform-tests/wpt/commit/023d5aa5d338569ae12988190705e1d570930d61

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/green-dialog-and-backdrop.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/w3c-import.log:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip-expected.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/green-dialog-and-backdrop.html.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter-expected.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/green-dialog-and-backdrop.html.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask-expected.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/green-dialog-and-backdrop.html.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity-expected.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip-expected.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/green-dialog-and-backdrop.html.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden-expected.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/green-dialog-and-backdrop.html.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll-expected.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/green-dialog-and-backdrop.html.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform-expected.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/green-dialog-and-backdrop.html.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log:

LayoutTests:

6:48 AM Changeset in webkit [283891] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Sort syscall filters in the WebContent process' sandbox
https://bugs.webkit.org/show_bug.cgi?id=231509
<rdar://problem/84095366>

Unreviewed, this patch only sorts existing message filters.

Syscall filters should be sorted in the WebContent process' sandbox. This patch does not add or
remove items from the filters, so there should be no change in behavior.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
4:50 AM Changeset in webkit [283890] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Block access in sandbox to capability which is allowed by default
https://bugs.webkit.org/show_bug.cgi?id=231079
<rdar://66586853>

Reviewed by Brent Fulgham.

Some capabilities are allowed by default, and needs to be explicitly denied in the sandbox.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
4:05 AM Changeset in webkit [283889] by emilio
  • 2 edits in trunk

Add my GitHub username to contributors.json.
https://bugs.webkit.org/show_bug.cgi?id=231507

Unreviewed.

  • metadata/contributors.json:
3:47 AM Changeset in webkit [283888] by Claudio Saavedra
  • 2 edits in trunk

Add my github username to contributors.json

Unreviewed.

  • metadata/contributors.json:
2:10 AM Changeset in webkit [283887] by commit-queue@webkit.org
  • 6 edits in trunk/Source/JavaScriptCore

[JSC][32bit] Fix profiling in baseline
https://bugs.webkit.org/show_bug.cgi?id=231368

Patch by Geza Lore <Geza Lore> on 2021-10-11
Reviewed by Yusuke Suzuki.

Fixes profiling omissions introduced with the recent 32-bit baseline
build fixes, and also brings the rest of profile updates in-line with
the unlinked baseline on 64-bit platforms.

  • jit/JIT.h:
  • jit/JITCall32_64.cpp:

(JSC::JIT::emitPutCallResult):
(JSC::JIT::compileSetupFrame):
(JSC::JIT::compileOpCall):
(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emitSlow_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):
(JSC::JIT::emitSlow_op_iterator_next):

  • jit/JITInlines.h:

(JSC::JIT::emitValueProfilingSiteIfProfiledOpcode):
(JSC::JIT::emitValueProfilingSite):
(JSC::JIT::emitArrayProfilingSiteWithCell):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_jneq_ptr):
(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_get_internal_field):

1:14 AM Changeset in webkit [283886] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Add message filter in the WebContent process' sandbox
https://bugs.webkit.org/show_bug.cgi?id=231046
<rdar://problem/83743661>

Reviewed by Brent Fulgham.

Add IOKit message filter in the WebContent process' sandbox on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
12:34 AM Changeset in webkit [283885] by Diego Pino Garcia
  • 2 edits in trunk

Add GitHub username for Diego Pino Garcia

Unreviewed.

  • metadata/contributors.json:

Oct 10, 2021:

11:59 PM Changeset in webkit [283884] by Pablo Saavedra
  • 2 edits in trunk

Add GitHub username for Pablo Saavedra

Unreviewed.

  • metadata/contributors.json:
11:38 PM Changeset in webkit [283883] by calvaris@igalia.com
  • 2 edits in trunk

Unreviewed. Add GitHub username for Xabier Rodriguez Calvar

  • metadata/contributors.json:
9:31 PM Changeset in webkit [283882] by Cameron McCormack
  • 2 edits in trunk

Add GitHub account to contributors.json
https://bugs.webkit.org/show_bug.cgi?id=231497

Unreviewed.

  • metadata/contributors.json:
5:31 PM Changeset in webkit [283881] by sihui_liu@apple.com
  • 70 edits
    1 copy
    8 adds in trunk

Add support for iterating FileSystemDirectoryHandle
https://bugs.webkit.org/show_bug.cgi?id=231142
<rdar://problem/83848092>

Reviewed by Youenn Fablet and Yusuke Suzuki.

LayoutTests/imported/w3c:

Rebaselined existing tests as new interface is added and tests can proceed to next stage.

  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-Error.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-frames.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-windows.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-workers.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-frames.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-windows.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-workers.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-create-sync-access-handle-dedicated-worker.https.tentative.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-close.https.tentative.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-flush.https.tentative.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-getSize.https.tentative.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-read-write.https.tentative.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-truncate.https.tentative.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any.worker-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any.worker-expected.txt:

Source/JavaScriptCore:

  • CMakeLists.txt:
  • runtime/JSBoundFunction.h:
  • runtime/JSGlobalObject.h:
  • runtime/JSGlobalObjectInlines.h:

(JSC::JSGlobalObject::performPromiseThenFunction const):

  • runtime/JSPromise.cpp:

(JSC::JSPromise::createNewPromiseCapability):
(JSC::JSPromise::convertCapabilityToDeferredData):
(JSC::JSPromise::createDeferredData):
(JSC::JSPromise::performPromiseThen):

  • runtime/JSPromise.h:

Source/WebCore:

Introduce a new template class JSDOMAsyncIteratorBase to provide support for AsyncIterable in IDL.
Spec: https://webidl.spec.whatwg.org/#es-asynchronous-iterator-prototype-object.

Since bindings code generator does not support creating specialized class for interface yet (we will do it in
webkit.org/b/231243), manually create a new specialized class JSFileSystemDirectoryHandleIterator
and implement keys(), values(), and entries() of JSFileSystemDirectoryHandle as custom methods to return a
JSFileSystemDirectoryHandleIterator object.

Add support for async directory iteration.
Spec: https://wicg.github.io/file-system-access/#api-filesystemdirectoryhandle-asynciterable

Add a new class FileSystemDirectoryHandle::Iterator, which retrieves the keys (names of children handles) on
initialization. In next(), it takes out a key and request to get corresponding handle from backend. If the
request fails, for example because file is removed after iterator initialization, it repeats the steps above
until a valid handle is received or keys becomes empty.

Tests: storage/filesystemaccess/directory-handle-iteration-worker.html

storage/filesystemaccess/directory-handle-iteration.html

  • Modules/filesystemaccess/FileSystemDirectoryHandle.cpp:

(WebCore::FileSystemDirectoryHandle::getHandleNames):
(WebCore::FileSystemDirectoryHandle::getHandle):
(WebCore::FileSystemDirectoryHandle::createIterator):
(WebCore::FileSystemDirectoryHandleIterator::create):
(WebCore::FileSystemDirectoryHandleIterator::next):
(WebCore::FileSystemDirectoryHandleIterator::advance):

  • Modules/filesystemaccess/FileSystemDirectoryHandle.h:
  • Modules/filesystemaccess/FileSystemDirectoryHandle.idl:
  • Modules/filesystemaccess/FileSystemFileHandle.cpp:

(WebCore::FileSystemFileHandle::getFile):

  • Modules/filesystemaccess/FileSystemStorageConnection.h:
  • Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp:

(WebCore::WorkerFileSystemStorageConnection::getHandleNames):
(WebCore::WorkerFileSystemStorageConnection::didGetHandleNames):
(WebCore::WorkerFileSystemStorageConnection::getHandle):
(WebCore::WorkerFileSystemStorageConnection::didGetHandleWithType):

  • Modules/filesystemaccess/WorkerFileSystemStorageConnection.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMAsyncIterator.h: Added.

(WebCore::JSDOMAsyncIteratorBase::createPrototype):
(WebCore::JSDOMAsyncIteratorBase::JSDOMAsyncIteratorBase):
(WebCore::jsPair):
(WebCore::iteratorCreate):
(WebCore::convertToJS):
(WebCore::JSIterator>::destroy):
(WebCore::JSIterator>::next):
(WebCore::JSIterator>::runNextSteps):
(WebCore::JSIterator>::getNextIterationResult):
(WebCore::JSIterator>::settle):
(WebCore::JSIterator>::fulfill):
(WebCore::JSIterator>::reject):
(WebCore::JSIterator>::finishCreation):

  • bindings/js/JSFileSystemDirectoryHandleCustom.cpp: Added.

(WebCore::JSFileSystemDirectoryHandle::entries):
(WebCore::JSFileSystemDirectoryHandle::keys):
(WebCore::JSFileSystemDirectoryHandle::values):

  • bindings/js/JSFileSystemDirectoryHandleIterator.cpp: Added.

(WebCore::JSFileSystemDirectoryHandleIterator::subspaceForImpl):
(WebCore::jsFileSystemDirectoryHandleIterator_onPromiseSettledBody):
(WebCore::JSC_DEFINE_HOST_FUNCTION):
(WebCore::JSFileSystemDirectoryHandleIterator::createOnSettledFunction):
(WebCore::jsFileSystemDirectoryHandleIterator_onPromiseFulfilledBody):
(WebCore::JSFileSystemDirectoryHandleIterator::createOnFulfilledFunction):
(WebCore::jsFileSystemDirectoryHandleIterator_onPromiseRejectedBody):
(WebCore::JSFileSystemDirectoryHandleIterator::createOnRejectedFunction):

  • bindings/js/JSFileSystemDirectoryHandleIterator.h: Added.
  • bindings/js/WebCoreBuiltinNames.h:
  • bindings/js/WebCoreJSClientData.h:

(WebCore::JSVMClientData::fileSystemDirectoryHandleIteratorSpace):
(WebCore::JSVMClientData::setFileSystemDirectoryHandleIteratorSpace):

Source/WebKit:

  • NetworkProcess/storage/FileSystemStorageHandle.cpp:

(WebKit::FileSystemStorageHandle::FileSystemStorageHandle):
(WebKit::FileSystemStorageHandle::getHandleNames):
(WebKit::FileSystemStorageHandle::getHandle):

  • NetworkProcess/storage/FileSystemStorageHandle.h:

(WebKit::FileSystemStorageHandle::type const):

  • NetworkProcess/storage/FileSystemStorageManager.cpp:

(WebKit::FileSystemStorageManager::createHandle):
(WebKit::FileSystemStorageManager::getType):

  • NetworkProcess/storage/FileSystemStorageManager.h:
  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::getHandleNames):
(WebKit::NetworkStorageManager::getHandle):

  • NetworkProcess/storage/NetworkStorageManager.h:
  • NetworkProcess/storage/NetworkStorageManager.messages.in:
  • WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp:

(WebKit::WebFileSystemStorageConnection::getFileHandle):
(WebKit::WebFileSystemStorageConnection::getDirectoryHandle):
(WebKit::WebFileSystemStorageConnection::getHandleNames):
(WebKit::WebFileSystemStorageConnection::getHandle):

  • WebProcess/WebCoreSupport/WebFileSystemStorageConnection.h:

LayoutTests:

  • platform/wk2/TestExpectations: mark some tests as flaky failure on release builds. They were flaky at import,

but they didn't get to run due to missing directory iteration support.

  • storage/filesystemaccess/directory-handle-iteration-expected.txt: Added.
  • storage/filesystemaccess/directory-handle-iteration-worker-expected.txt: Added.
  • storage/filesystemaccess/directory-handle-iteration-worker.html: Added.
  • storage/filesystemaccess/directory-handle-iteration.html: Added.
  • storage/filesystemaccess/resources/directory-handle-iteration.js: Added.

(testPrototype):
(async testNext):
(async test):

4:05 PM Changeset in webkit [283880] by dino@apple.com
  • 10 edits in trunk/Source/WebCore

[WebXR] Replace the session reference in WebXRSpace subclasses with weak pointers
https://bugs.webkit.org/show_bug.cgi?id=231482

Reviewed by Sam Weinig.

WebXRSpace had a pure virtual session() accessor that returned a
reference to a WebXRSession. This made subclasses hold strong
references to the WebXRSession, and is problematic for WebXRSpace
subclasses that are (indirectly) owned by the WebXRSession.

Change the accessor to return a pointer, and all the subclasses
to use weak pointers instead.

  • Modules/webxr/WebXRBoundedReferenceSpace.h: Use a WeakPtr and change

the constructor parameter to take a reference instead of a Ref<>.

  • Modules/webxr/WebXRBoundedReferenceSpace.cpp:

(WebCore::WebXRBoundedReferenceSpace::create):
(WebCore::WebXRBoundedReferenceSpace::WebXRBoundedReferenceSpace):
(WebCore::WebXRBoundedReferenceSpace::getOffsetReferenceSpace):
(WebCore::WebXRBoundedReferenceSpace::updateIfNeeded): Add early return.

  • Modules/webxr/WebXRFrame.cpp:

(WebCore::WebXRFrame::populatePose): Compare pointers directly.

  • Modules/webxr/WebXRInputSpace.h: Use WeakPtr.
  • Modules/webxr/WebXRInputSpace.cpp:

(WebCore::WebXRInputSpace::WebXRInputSpace):
(WebCore::WebXRInputSpace::nativeOrigin const): Change this to return an
optional so we can detect errors and raise Exceptions.

  • Modules/webxr/WebXRReferenceSpace.h: Use a WeakPtr and change

the constructor parameter to take a reference instead of a Ref<>.

  • Modules/webxr/WebXRReferenceSpace.cpp:

(WebCore::WebXRReferenceSpace::create):
(WebCore::WebXRReferenceSpace::WebXRReferenceSpace):
(WebCore::WebXRReferenceSpace::nativeOrigin const): Return an optional.
(WebCore::WebXRReferenceSpace::getOffsetReferenceSpace):
(WebCore::WebXRReferenceSpace::floorOriginTransform const): Return an optional.

  • Modules/webxr/WebXRSpace.cpp: Return a * instead of a &.

(WebCore::WebXRSpace::isPositionEmulated const):
(WebCore::WebXRViewerSpace::WebXRViewerSpace):
(WebCore::WebXRViewerSpace::nativeOrigin const):

  • Modules/webxr/WebXRSpace.h:
3:24 PM Changeset in webkit [283879] by Alan Bujtas
  • 5 edits in trunk

[IFC][Integration] Do not bail out on missing primary font
https://bugs.webkit.org/show_bug.cgi?id=231488

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/cssom-view/getBoundingClientRect-shy-expected.txt:

Source/WebCore:

IFC has non-primary font support now.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::printReason):
(WebCore::LayoutIntegration::canUseForFontAndText):

  • layout/integration/LayoutIntegrationCoverage.h:
2:28 PM Changeset in webkit [283878] by commit-queue@webkit.org
  • 2 edits in trunk

[WPE] Reenable -fvisibility=hidden and -fvisibility-inlines-hidden
https://bugs.webkit.org/show_bug.cgi?id=222860

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-10-10
Reviewed by Philippe Normand.

  • Source/cmake/OptionsWPE.cmake:
1:42 PM Changeset in webkit [283877] by Adrian Perez de Castro
  • 2 edits in trunk

Unreviewed. Add GitHub username for Adrian Perez de Castro

While at it, run "validate-committer-lists --canonicalize".

  • metadata/contributors.json:
10:36 AM Changeset in webkit [283876] by commit-queue@webkit.org
  • 12 edits
    2 moves
    1 add in trunk

[WPE] Expose WKTextCheckerSetContinuousSpellCheckingEnabled and use it from WKTR
https://bugs.webkit.org/show_bug.cgi?id=231446

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-10-10
Reviewed by Philippe Normand.

Source/WebKit:

This is to avoid WKTR needing to poke WebKit internals to turn on spellchecking.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/API/C/glib/WKTextCheckerGLib.cpp: Renamed from Source/WebKit/UIProcess/API/C/gtk/WKTextCheckerGtk.cpp.

(WKTextCheckerSetClient):
(WKTextCheckerContinuousSpellCheckingEnabledStateChanged):
(WKTextCheckerGrammarCheckingEnabledStateChanged):
(WKTextCheckerCheckSpelling):
(WKTextCheckerChangeSpellingToWord):
(WKTextCheckerSetSpellCheckingLanguages):
(WKTextCheckerSetContinuousSpellCheckingEnabled):

  • UIProcess/API/C/glib/WKTextCheckerGLib.h: Renamed from Source/WebKit/UIProcess/API/C/gtk/WKTextCheckerGtk.h.
  • UIProcess/gtk/WebTextChecker.h:
  • UIProcess/gtk/WebTextCheckerClient.h:

Tools:

  • WebKitTestRunner/gtk/TestControllerGtk.cpp:
  • WebKitTestRunner/gtk/UIScriptControllerGtk.cpp:
  • WebKitTestRunner/gtk/main.cpp:
  • WebKitTestRunner/wpe/UIScriptControllerWPE.cpp:

(WTR::UIScriptControllerWPE::setContinuousSpellCheckingEnabled):

9:05 AM Changeset in webkit [283875] by Alan Bujtas
  • 7 edits in trunk

[LFC][IFC] Do no bail out on boundary neutral characters
https://bugs.webkit.org/show_bug.cgi?id=231485

Reviewed by Antti Koivisto.

Source/WebCore:

They don't affect directionality (no bidi impact), no need to take the legacy codepath.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForText):

LayoutTests:

1:49 AM Changeset in webkit [283874] by ysuzuki@apple.com
  • 16 edits
    1 add in trunk

[JSC] Refine RegExp#compile based on regexp-legacy-features proposal
https://bugs.webkit.org/show_bug.cgi?id=231486

Reviewed by Alexey Shvayka.

JSTests:

  • stress/regexp-recompile.js: Added.

(shouldBe):
(recompile):
(target):

  • test262/expectations.yaml:

Source/JavaScriptCore:

This patch refines RegExp#compile based regexp-legacy-features proposal[1].
We add legacyFeaturesDisabledFlag flag to RegExpObject so that we can
detect LegacyFeaturesEnabled.

We also add regExpRecompiledWatchpoint to JSGlobalObject. We have strength
reduction in DFG / FTL, but we should recompile DFG / FTL code when RegExp
is recompiled. Since it is rare, instead of having this watchpoint per
RegExpObject, we hold it in JSGlobalObject.

[1]: https://github.com/tc39/proposal-regexp-legacy-features

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewRegexp):
(JSC::DFG::SpeculativeJIT::compileSetRegExpObjectLastIndex):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • ftl/FTLOperations.cpp:

(JSC::FTL::JSC_DEFINE_JIT_OPERATION):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::JSGlobalObject):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::regExpRecompiledWatchpoint):
(JSC::JSGlobalObject::isRegExpRecompiled const):

  • runtime/RegExpConstructor.cpp:

(JSC::areLegacyFeaturesEnabled):
(JSC::regExpCreate):
(JSC::constructRegExp):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::RegExpObject):

  • runtime/RegExpObject.h:
  • runtime/RegExpPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

12:01 AM Changeset in webkit [283873] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[Build-time perf] Speed up the WebCore null build
https://bugs.webkit.org/show_bug.cgi?id=231473

Reviewed by Myles C. Maxfield.

The DerivedSources-output.xcfilelist had a number of entries for files that no longer exist, or had been renamed.

The "Check For Inappropriate Objective-C Class Names" and "Check For Inappropriate Files In Framework" build phases
had no inputs or outputs listed, causing them to run every time. Define an output of an empty text file in the
TARGET_TEMP_DIR directory that will get touched after the check, allowing the build system to do dependency checking.

The "Make Frameworks Symbolic Link" build phase had no output defined, causing it to run every time.

  • DerivedSources-output.xcfilelist:
  • WebCore.xcodeproj/project.pbxproj:
Note: See TracTimeline for information about the timeline view.