Timeline



Jun 14, 2021:

11:46 PM Changeset in webkit [278861] by youenn@apple.com
  • 4 edits
    17 adds in trunk/LayoutTests

Import WPT webrtc-extensions
https://bugs.webkit.org/show_bug.cgi?id=226961

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/webrtc-extensions/: Added.

LayoutTests:

  • tests-options.json:
10:26 PM Changeset in webkit [278860] by Diego Pino Garcia
  • 6 edits in trunk/LayoutTests

[GStreamer] media/track/audio/audio-track-mkv-vorbis-language.html and media/track/video/video-track-mkv-theora-language.html are failing
https://bugs.webkit.org/show_bug.cgi?id=226864

Reviewed by Eric Carlson.

These tests were failing due to an apparently incorrect order of
languages in audio and video tracks.

Examining the video container with tools like mediasource or VLC shows
that the order expected by GStreamer ports is correct. To make these
tests pass I changed the tests to make them language order independent
by fetching audio or video tracks by id.

  • media/in-band-tracks.js:

(canplaythrough):
(testAttribute): values' can be also an Object. In that case, fetch tracks by 'id'.

  • media/track/audio/audio-track-mkv-vorbis-language-expected.txt: Updated.
  • media/track/audio/audio-track-mkv-vorbis-language.html: Pass language expected results as a map indexed by track id.
  • media/track/video/video-track-mkv-theora-language-expected.txt: Updated.
  • media/track/video/video-track-mkv-theora-language.html: Pass language expected results as a map indexed by track id.
9:45 PM Changeset in webkit [278859] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] Workaround ICU uloc_addLikelySubtags / uloc_minimizeSubtags bugs
https://bugs.webkit.org/show_bug.cgi?id=226996
rdar://79250513

Reviewed by Ross Kirsling.

JSTests:

  • stress/intl-long-locale-id-maximize-minimize.js: Added.

(shouldBe):
(throw.new.Error):

Source/JavaScriptCore:

ICU has bugs that uloc_addLikelySubtags / uloc_minimizeSubtags cannot handle very long locale ID that exceeds ULOC_FULLNAME_CAPACITY,
while these functions can take arbitrary sized buffer for output. This can be achieved simply by (1) attaching many unicode extensions,
or (2) having many variants.

In this patch, we add a workaround: if uloc_addLikelySubtags / uloc_minimizeSubtags failed, we perform them without having locale ID
keywords part. After performing the operations, we append these keywords back.

This is workaround, and still this workaround is not complete since we could have many variants. In that case, uloc_addLikelySubtags / uloc_minimizeSubtags
still fails, and in that case, for now, we give up performing uloc_addLikelySubtags / uloc_minimizeSubtags. Fixing this needs to be
done in ICU side: https://unicode-org.atlassian.net/browse/ICU-21639

  • runtime/IntlLocale.cpp:

(JSC::IntlLocale::keywordValue const):
(JSC::IntlLocale::maximal):
(JSC::IntlLocale::minimal):
(JSC::IntlLocale::baseName):

8:34 PM Changeset in webkit [278858] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Font::applyTransforms() can redirect GlyphBuffer's internal pointers
https://bugs.webkit.org/show_bug.cgi?id=226997
<rdar://problem/78704666>

Reviewed by Ryosuke Niwa.

After calling Font::applyTransforms(), we need to update any pointers which point into the GlyphBuffer.

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::applyFontTransforms):

6:07 PM Changeset in webkit [278857] by Russell Epstein
  • 1 copy in tags/Safari-612.1.18.1.1

Tag Safari-612.1.18.1.1.

6:04 PM Changeset in webkit [278856] by mark.lam@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

Add ldp and stp support for FP registers, plus some bug fixes.
https://bugs.webkit.org/show_bug.cgi?id=226998
rdar://79313717

Reviewed by Robin Morisset.

This patch does the following:

  1. Add ldp and stp support for FP registers. This simply entails providing wrappers that take FPRegisterID and passing true for the V bit to the underlying loadStoreRegisterPairXXX encoding function. V is for vector (aka floating point). This will cause bit 26 in the instruction to be set indicating that it's loading / storing floating point registers.
  1. Add ARM64 disassembler support ldp and stp for FP registers. This includes fixing A64DOpcodeLoadStoreRegisterPair::mask to not exclude the FP versions of the instructions.
  1. Add ARM64Assembler query methods for determining if an immediate is encodable as the signed 12 bit immediate of ldp and stp instructions.
  1. Fix ldp and stp offset form to take an int instead of an unsigned. The immediate it takes is a 12-bit signed int, not unsigned.
  1. In loadStoreRegisterPairXXX encoding functions used by the forms of ldp and stp, RELEASE_ASSERT that the passed in immediate is encodable. Unlike ldur / stur, there is no form of ldp / stp that takes the offset in a register that can be used as a fail over. Hence, if the immediate is not encodable, this is a non-recoverable event. The client is responsible for ensuring that the offset is encodable.
  1. Added some testmasm tests for testing the offset form (as opposed to PreIndex and PostIndex forms) of ldp and stp. We currently only use the offset form in our JITs.
  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::isValidLDPImm):
(JSC::ARM64Assembler::isValidLDPFPImm):
(JSC::ARM64Assembler::ldp):
(JSC::ARM64Assembler::ldnp):
(JSC::ARM64Assembler::isValidSTPImm):
(JSC::ARM64Assembler::isValidSTPFPImm):
(JSC::ARM64Assembler::stp):
(JSC::ARM64Assembler::stnp):
(JSC::ARM64Assembler::loadStoreRegisterPairPostIndex):
(JSC::ARM64Assembler::loadStoreRegisterPairPreIndex):
(JSC::ARM64Assembler::loadStoreRegisterPairOffset):
(JSC::ARM64Assembler::loadStoreRegisterPairNonTemporal):

  • assembler/AssemblerCommon.h:

(JSC::isValidSignedImm7):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::loadPair64):
(JSC::MacroAssemblerARM64::storePair64):

  • assembler/testmasm.cpp:

(JSC::testLoadStorePair64Int64):
(JSC::testLoadStorePair64Double):

  • disassembler/ARM64/A64DOpcode.cpp:

(JSC::ARM64Disassembler::A64DOpcodeLoadStoreRegisterPair::format):

  • disassembler/ARM64/A64DOpcode.h:
6:02 PM Changeset in webkit [278855] by Russell Epstein
  • 1 copy in tags/Safari-612.1.18.0.1

Tag Safari-612.1.18.0.1.

5:54 PM Changeset in webkit [278854] by keith_miller@apple.com
  • 2 edits in trunk/Tools

run-javascriptcore-tests should print output when a test binary fails by default
https://bugs.webkit.org/show_bug.cgi?id=226985

Reviewed by Mark Lam.

  • Scripts/run-javascriptcore-tests:

(runTest):

5:46 PM Changeset in webkit [278853] by Patrick Angle
  • 2 edits in trunk/Source/WebInspectorUI

[REGRESSION: r276616] Uncaught Exception: TypeError: undefined is not an object (evaluating 'this._setupCodeMirror.getValue')
https://bugs.webkit.org/show_bug.cgi?id=226995

Reviewed by Devin Rousso.

Audit test groups share a single setup editor for all their test cases, leaving individual test cases without
their own setup editor. In this case, we should not attempt to save the setup script for every test, and instead
allow the instance of AuditTestGroupContentView that does have a setup editor to save the script.

  • UserInterface/Views/AuditTestContentView.js:

(WI.AuditTestContentView.prototype.saveEditedData):

4:40 PM Changeset in webkit [278852] by Kate Cheney
  • 4 edits in trunk/Source/WebCore

Remove Storage Access API quirk on live.com
https://bugs.webkit.org/show_bug.cgi?id=226990
<rdar://problem/79218986>

Reviewed by Brent Fulgham.

The quirk on live.com is unnecessary, and we should remove it.

  • dom/DocumentStorageAccess.cpp:

(WebCore::DocumentStorageAccess::requestStorageAccessQuirk):

  • page/Quirks.cpp:

(WebCore::isStorageAccessQuirkDomainAndElement):
(WebCore::Quirks::requestStorageAccessAndHandleClick const):
(WebCore::Quirks::mapToTopDomain): Deleted.

  • page/Quirks.h:
4:39 PM Changeset in webkit [278851] by Truitt Savell
  • 5 edits
    3 deletes in trunk

Unreviewed, reverting r278842.

introduced a failing test

Reverted changeset:

"Fix RTCDataChannelInit::decode"
https://bugs.webkit.org/show_bug.cgi?id=226968
https://commits.webkit.org/r278842

3:04 PM Changeset in webkit [278850] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

[macOS] TouchBar playback speed controls don't work
https://bugs.webkit.org/show_bug.cgi?id=226987
<rdar://problem/79216098>

Reviewed by Eric Carlson.

Override setRate: and setDefaultPlaybackRate: instead of just having an ivar so that
TouchBar playback speed controls actually affect the corresponding <video>.

  • platform/mac/WebPlaybackControlsManager.mm:

(-[WebPlaybackControlsManager defaultPlaybackRate]): Added.
(-[WebPlaybackControlsManager setDefaultPlaybackRate:]): Added.
(-[WebPlaybackControlsManager rate]): Added.
(-[WebPlaybackControlsManager setRate:]): Added.

2:36 PM Changeset in webkit [278849] by commit-queue@webkit.org
  • 55 edits in trunk/Source

Pass PAL::SessionID by value instead of reference
https://bugs.webkit.org/show_bug.cgi?id=226983

Patch by Alex Christensen <achristensen@webkit.org> on 2021-06-14
Reviewed by Geoffrey Garen.

Source/WebCore:

It's a wrapper around an integer which will pass in a register.
There's no reason to pass a pointer to it.

  • loader/CrossOriginAccessControl.cpp:

(WebCore::validatePreflightResponse):

  • loader/CrossOriginAccessControl.h:
  • loader/CrossOriginPreflightResultCache.cpp:

(WebCore::CrossOriginPreflightResultCache::appendEntry):
(WebCore::CrossOriginPreflightResultCache::canSkipPreflight):

  • loader/CrossOriginPreflightResultCache.h:
  • loader/EmptyClients.cpp:
  • loader/cache/CachedApplicationManifest.cpp:

(WebCore::CachedApplicationManifest::CachedApplicationManifest):

  • loader/cache/CachedApplicationManifest.h:
  • loader/cache/CachedCSSStyleSheet.cpp:

(WebCore::CachedCSSStyleSheet::CachedCSSStyleSheet):

  • loader/cache/CachedCSSStyleSheet.h:
  • loader/cache/CachedFont.cpp:

(WebCore::CachedFont::CachedFont):

  • loader/cache/CachedFont.h:
  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::CachedImage):

  • loader/cache/CachedImage.h:
  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::CachedRawResource):

  • loader/cache/CachedRawResource.h:
  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::CachedResource):

  • loader/cache/CachedResource.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::createResource):
(WebCore::CachedResourceLoader::updateCachedResourceWithCurrentRequest):

  • loader/cache/CachedResourceLoader.h:
  • loader/cache/CachedSVGDocument.cpp:

(WebCore::CachedSVGDocument::CachedSVGDocument):

  • loader/cache/CachedSVGDocument.h:
  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::CachedSVGFont):

  • loader/cache/CachedSVGFont.h:
  • loader/cache/CachedScript.cpp:

(WebCore::CachedScript::CachedScript):

  • loader/cache/CachedScript.h:
  • loader/cache/CachedTextTrack.cpp:

(WebCore::CachedTextTrack::CachedTextTrack):

  • loader/cache/CachedTextTrack.h:
  • loader/cache/CachedXSLStyleSheet.cpp:

(WebCore::CachedXSLStyleSheet::CachedXSLStyleSheet):

  • loader/cache/CachedXSLStyleSheet.h:
  • page/DatabaseProvider.h:
  • platform/WebCoreCrossThreadCopier.cpp:

(WTF::PAL::SessionID>::copy):

  • platform/WebCoreCrossThreadCopier.h:
  • storage/StorageNamespaceProvider.cpp:

(WebCore::StorageNamespaceProvider::setSessionIDForTesting):

  • storage/StorageNamespaceProvider.h:

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::newTestingSession):
(WebKit::NetworkProcess::ensureSession):
(WebKit::NetworkProcess::storageSession const):
(WebKit::NetworkProcess::findCacheEngine):
(WebKit::NetworkProcess::ensureCacheEngine):
(WebKit::NetworkProcess::removeCacheEngine):
(WebKit::NetworkProcess::flushCookies):
(WebKit::NetworkProcess::platformFlushCookies):
(WebKit::NetworkProcess::addWebPageNetworkParameters):
(WebKit::NetworkProcess::removeWebPageNetworkParameters):
(WebKit::NetworkProcess::countNonDefaultSessionSets):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::shouldLogCookieInformation):

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/NetworkStorageSessionProvider.h:
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::makeUseDecision):

  • NetworkProcess/cache/NetworkCache.h:

(WebKit::NetworkCache::Cache::sessionID const):

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::flushCookies):
(WebKit::NetworkProcess::platformFlushCookies):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::configurationForSessionID):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::flushCookies):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessPool.h:
  • WebProcess/Databases/WebDatabaseProvider.cpp:

(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

  • WebProcess/Databases/WebDatabaseProvider.h:

Source/WebKitLegacy:

  • Storage/WebDatabaseProvider.cpp:

(WebDatabaseProvider::idbConnectionToServerForSession):

  • Storage/WebDatabaseProvider.h:
  • WebCoreSupport/NetworkStorageSessionMap.cpp:

(NetworkStorageSessionMap::storageSession):
(NetworkStorageSessionMap::ensureSession):
(NetworkStorageSessionMap::destroySession):

  • WebCoreSupport/NetworkStorageSessionMap.h:
1:01 PM Changeset in webkit [278848] by Patrick Angle
  • 5 edits in trunk

Web Inspector: CSS variables not handled as case sensitive
https://bugs.webkit.org/show_bug.cgi?id=226875

Reviewed by Devin Rousso.

Source/WebCore:

Test: inspector/css/overridden-property.html

CSS variables support distinct declarations with only differences in cases. Previously, we naively converted all
property names to lowercase, instead of properly providing variable names in their original case.

  • inspector/InspectorStyleSheet.cpp:

(WebCore::InspectorStyle::styleWithProperties const):

LayoutTests:

Add a test to make sure that CSS variable declarations that vary only in case do not override each other.

  • inspector/css/overridden-property-expected.txt:
  • inspector/css/overridden-property.html:
12:54 PM Changeset in webkit [278847] by Ryan Haddad
  • 3 edits in trunk/Tools

Bring up an Apple-BigSur-AppleSilicon-Release-Test262-Tests queue
https://bugs.webkit.org/show_bug.cgi?id=226602

Reviewed by Aakash Jain.

  • CISupport/build-webkit-org/config.json:
  • CISupport/build-webkit-org/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot):

12:44 PM Changeset in webkit [278846] by commit-queue@webkit.org
  • 8 edits in trunk/Source/JavaScriptCore

Add Air opcode sub32/64(Reg, Imm, Reg) form for ARM64 and select this instruction in Air
https://bugs.webkit.org/show_bug.cgi?id=226937

Patch by Yijia Huang <Yijia Huang> on 2021-06-14
Reviewed by Saam Barati.

Previously, Air arm64 sub32/64 utilize sub(Imm, Tmp) at optlevel = 0 and
add(Tmp, -Imm) at optlevel > 0 to perform and optimize sub(Tmp, Imm, Tmp).
The issue with this is that we were not eliding redundant operations.

For example:
B3 IR
@0 = Trunc(ArgumentReg(0))
@1 = Const
@2 = Sub(@0, @1)
@3 = Return(@2)

Old optimized Air IR
OptLevel = 0
Move %x0, %tmp1, @0
Move $Const, %tmp2, @1
Move %tmp1, %tmp0, @2 Redundant
Sub $Const, %tmp0, @2
Move %tmp0, %x0, @3
Ret32 %x0, @3

To remove those redundant instructions, Air arm64 sub32/64 opcode should
indicate a new form sub(Tmp, Imm, Tmp).

New optimized Air IR
OptLevel = 0
Move %x0, %tmp1, @0
Move $Const, %tmp2, @1
Sub %tmp1, $Const, %tmp0, @2
Move %tmp0, %x0, @3
Ret32 %x0, @3

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::sub32):
(JSC::MacroAssemblerARM64::sub64):

  • assembler/testmasm.cpp:

(JSC::testSub32Args):
(JSC::testSub32Imm):
(JSC::testSub32ArgImm):
(JSC::testSub64Imm32):
(JSC::testSub64ArgImm32):
(JSC::testSub64Imm64):
(JSC::testSub64ArgImm64):

  • b3/B3ReduceStrength.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/testb3.h:
  • b3/testb3_2.cpp:

(testSubArgs32ZeroExtend):

  • b3/testb3_3.cpp:

(addArgTests):

12:20 PM Changeset in webkit [278845] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebKit

Apply patch. rdar://problem/77619702

11:44 AM Changeset in webkit [278844] by Ruben Turcios
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.20

11:41 AM Changeset in webkit [278843] by Ruben Turcios
  • 8 edits in branches/safari-612.1.19-branch/Source

Versioning.

WebKit-7612.1.19

11:40 AM Changeset in webkit [278842] by youenn@apple.com
  • 5 edits
    3 adds in trunk

Fix RTCDataChannelInit::decode
https://bugs.webkit.org/show_bug.cgi?id=226968

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc-extensions/transfer-datachannel-service-worker.https-expected.txt: Added.
  • web-platform-tests/webrtc-extensions/transfer-datachannel-service-worker.https.html: Added.
  • web-platform-tests/webrtc-extensions/transfer-datachannel-service-worker.js: Added.

(onmessage):

Source/WebCore:

Test: imported/w3c/web-platform-tests/webrtc-extensions/transfer-datachannel-service-worker.https.html

  • platform/mediastream/RTCDataChannelHandler.h:

(WebCore::RTCDataChannelInit::decode):
Make sure to use optionals of optionals.

LayoutTests:

  • platform/mac-wk1/TestExpectations:
11:39 AM Changeset in webkit [278841] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Accessing navigator.mediaDevices.enumerateDevices after granting permission
https://bugs.webkit.org/show_bug.cgi?id=226969
<rdar://problem/79286449>

Reviewed by Eric Carlson.

  • UIProcess/Cocoa/MediaPermissionUtilities.mm:

(WebKit::checkUsageDescriptionStringForType):
Check for NSCameraUsageDescription instead of NSMicrophoneUsageDescription for camera.

11:37 AM Changeset in webkit [278840] by youenn@apple.com
  • 1 edit
    3 moves
    1 add in trunk/LayoutTests/imported/w3c

Move Transferable RTCDataChannel tests to WPT
https://bugs.webkit.org/show_bug.cgi?id=226967

Reviewed by Eric Carlson.

  • web-platform-tests/webrtc-extensions/transfer-datachannel-expected.txt: Renamed from LayoutTests/http/wpt/webrtc/datachannel-worker-expected.txt.
  • web-platform-tests/webrtc-extensions/transfer-datachannel-worker.js: Renamed from LayoutTests/http/wpt/webrtc/datachannel-worker.js.
  • web-platform-tests/webrtc-extensions/transfer-datachannel.html: Renamed from LayoutTests/http/wpt/webrtc/datachannel-worker.html.
11:27 AM Changeset in webkit [278839] by Ruben Turcios
  • 1 copy in branches/safari-612.1.19-branch

New branch.

11:20 AM Changeset in webkit [278838] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

[AppleWin] Fix build failure
https://bugs.webkit.org/show_bug.cgi?id=226966
<rdar://79228536>

Reviewed by Eric Carlson.

Disable warning causing the build failure.

  • platform/cf/MediaAccessibilitySoftLink.h:
10:47 AM Changeset in webkit [278837] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Avoid converting SecurityOrigins to Strings in SecurityPolicy
https://bugs.webkit.org/show_bug.cgi?id=226976

Reviewed by Geoffrey Garen.

Avoid converting SecurityOrigins to Strings in SecurityPolicy, by using a SecurityOriginData
as key in the originAccessMap instead of a String. Getting a SecurityOriginData from a
SecurityOrigin is very cheap.

  • page/SecurityPolicy.cpp:

(WebCore::SecurityPolicy::isAccessAllowed):
(WebCore::SecurityPolicy::addOriginAccessAllowlistEntry):
(WebCore::SecurityPolicy::removeOriginAccessAllowlistEntry):

10:41 AM Changeset in webkit [278836] by Russell Epstein
  • 8 edits in branches/safari-612.1.18.1-branch/Source

Versioning.

WebKit-7612.1.18.1.1

10:40 AM Changeset in webkit [278835] by Russell Epstein
  • 8 edits in branches/safari-612.1.18.0-branch/Source

Versioning.

WebKit-7612.1.18.0.1

10:34 AM Changeset in webkit [278834] by Jonathan Bedard
  • 5 edits in trunk/Source/WebCore

[Monterey] Support building WebKit (Part 2)
https://bugs.webkit.org/show_bug.cgi?id=226846
<rdar://problem/79095148>

Reviewed by Chris Dumez.

Source/WebCore:

Covered by exisiting tests.

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::updateWithTextRecognitionResult): Explicitly define second arugment
to avoid 'missing field' compilation error.

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h: Add nw_connection_privacy_stance_t.
  • pal/spi/cocoa/PassKitSPI.h: Add PKPaymentCoupon.
10:31 AM Changeset in webkit [278833] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Micro-optimize ResourceResponseBase::sanitizeHTTPHeaderFields()
https://bugs.webkit.org/show_bug.cgi?id=226977

Reviewed by Geoffrey Garen.

Micro-optimize ResourceResponseBase::sanitizeHTTPHeaderFields() as it is not as efficient as it could be and it
shows on profiles. In particular, rely on Vector::removeAllMatching() more instead of reconstructing HTTPHeaderMaps
& Vectors.

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::sanitizeHTTPHeaderFieldsAccordingToTainting):
(WebCore::ResourceResponseBase::sanitizeHTTPHeaderFields):

10:27 AM Changeset in webkit [278832] by commit-queue@webkit.org
  • 7 edits
    1 add in trunk

AcceleratedImageBuffer not instantiated but objects are punned to the type
https://bugs.webkit.org/show_bug.cgi?id=226917

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-14
Reviewed by Said Abou-Hallawa.

Source/WebCore:

AcceleratedImageBuffer::create would create instance
of ConcreteImageBuffer, not AcceleratedImageBuffer.

Fix by adding a correct create static function.

Tested by new test:
TestWebKitAPI.ImageBufferTests.ImageBufferSubTypeCreateCreatesSubtypes

  • platform/graphics/PlatformImageBuffer.h:

(WebCore::IOSurfaceImageBuffer::create):
(WebCore::IOSurfaceImageBuffer::IOSurfaceImageBuffer):
Add the correct factory functions and public constructors.

  • platform/graphics/cg/ImageBufferCGBitmapBackend.h:

Add export statements that are needed for the added test.

  • platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:

(WebCore::FilterEffectRendererCoreImage::imageForSourceGraphic):
(WebCore::FilterEffectRendererCoreImage::renderToImageBuffer):
Change the image creation site to create the explicit IOSurfaceImageBuffer
since that's what it's trying to create.
Change the type-punning call sites to use explicit
IOSurfaceImageBuffer name, as that's what the call site
is intending to use.

Tools:

Add new test
TestWebKitAPI.ImageBufferTests.ImageBufferSubTypeCreateCreatesSubtypes
to test that the code compiles.
Before, it would fail with:

`error: cannot initialize a member subobject of type 'typename PtrTraits::StorageType' (aka 'WebCore::AcceleratedImageBuffer *') with an

rvalue of type 'WebCore::ConcreteImageBuffer<WebCore::ImageBufferIOSurfaceBackend> *'`

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/ImageBufferTests.cpp: Added.

(TestWebKitAPI::TEST):

10:19 AM Changeset in webkit [278831] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[iOS] Tighten the WebAuthn Sandbox
https://bugs.webkit.org/show_bug.cgi?id=226944
<rdar://problem/74721792>

Reviewed by Per Arne Vollan.

Revise the WebAuthn process sandbox to remove the many things originally copied from
the WebContent sandbox that are not needed.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
9:14 AM Changeset in webkit [278830] by commit-queue@webkit.org
  • 6 edits in trunk/Source/JavaScriptCore

Unreviewed, reverting r278734.
https://bugs.webkit.org/show_bug.cgi?id=226973

broke jsc testapi

Reverted changeset:

"Shouldn't drain the micro task queue when calling out to
ObjC"
https://bugs.webkit.org/show_bug.cgi?id=161942
https://trac.webkit.org/changeset/278734

8:39 AM Changeset in webkit [278829] by Robert Jenner
  • 1 edit
    3 deletes in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/plugins resources
https://bugs.webkit.org/show_bug.cgi?id=226837

Reviewed by Jonathan Bedard.

  • plugins/resources/frame-with-plugin-subframe.html: Removed.
  • plugins/resources/lines.swf: Removed.
  • plugins/resources/plugin-page.html: Removed.
8:37 AM Changeset in webkit [278828] by Ruben Turcios
  • 1 copy in branches/safari-612.1.18.1-branch

New branch.

8:33 AM Changeset in webkit [278827] by Ruben Turcios
  • 1 copy in branches/safari-612.1.18.0-branch

New branch.

8:28 AM Changeset in webkit [278826] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[AppleWin] Update test expectations
https://bugs.webkit.org/show_bug.cgi?id=226970

Unreviewed test gardening.

  • platform/win/TestExpectations:
6:39 AM Changeset in webkit [278825] by Alan Bujtas
  • 4 edits
    4 adds in trunk

[LFC][TFC] Add support for flexing columns when the content is also flexing
https://bugs.webkit.org/show_bug.cgi?id=226959

Source/WebCore:

Reviewed by Antti Koivisto.

This patch adds support for (the very common) cases when the minimum content width < maximum content width
(e.g. text content wraps across multiple lines) and the parent column does not have fixed width either.
Note that in some cases now table layout agrees with Chrome/Firefox and not with trunk WebKit
(see table-space-distribution-simple-mismatching.htnl).

Tests: fast/layoutformattingcontext/table-space-distribution-simple-mismatching.html

fast/layoutformattingcontext/table-space-distribution-simple2.html

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::TableFormattingContext::TableLayout::distributedHorizontalSpace):

LayoutTests:

Reviewed by Antti Koivisto.

  • TestExpectations: LFC matches Chrome and Firefox.
  • fast/layoutformattingcontext/table-space-distribution-simple-mismatching-expected.txt: Added.
  • fast/layoutformattingcontext/table-space-distribution-simple-mismatching.html: Added.
  • fast/layoutformattingcontext/table-space-distribution-simple2-expected.html: Added.
  • fast/layoutformattingcontext/table-space-distribution-simple2.html: Added.
2:28 AM Changeset in webkit [278824] by pvollan@apple.com
  • 4 edits in trunk/Source

[iOS] Sync Accessibility preferences
https://bugs.webkit.org/show_bug.cgi?id=226738
<rdar://77922839>

Reviewed by Brent Fulgham.

Source/WebKit:

Only attempt to modify Accessibility preferences if they have changed.

  • Shared/AccessibilityPreferences.cpp: Replaced.
  • Shared/AccessibilityPreferences.h: Replaced.
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::accessibilityPreferencesDidChange):

Source/WTF:

Enable Per-App Accessibility preferences on iOS.

  • wtf/PlatformHave.h:
12:38 AM WebKitGTK/2.32.x edited by zandobersek@gmail.com
(diff)

Jun 13, 2021:

6:23 PM Changeset in webkit [278823] by Wenson Hsieh
  • 5 edits in trunk/Source/WebKit

[watchOS] Quickboard UI for focused select elements should not allow the user to change the input language
https://bugs.webkit.org/show_bug.cgi?id=226958

Reviewed by Tim Horton.

Fix a couple of bugs around focused select element UI that were introduced in watchOS 7, due to changes in
PepperUICore. See below for details.

  • UIProcess/ios/forms/WKQuickboardListViewController.mm:

(-[WKQuickboardListViewController initWithDelegate:]):

Drive-by fix: remove a USE(APPLE_INTERNAL_SDK) guard that was (seemingly) unintentionally added in r262854.

(-[WKQuickboardListViewController viewDidLoad]): Deleted.

Avoid hiding the list view controller's -headerView when focusing select elements. In watchOS 7, the accept
and cancel buttons are positioned inside the -headerView, so having this logic in the base class
(WKQuickboardListViewController) means that the Done button in select menus does not show up. In turn, this
means that currently, users who focus select elements must know to use the crown button to dismiss the select
menu.

For now, we move logic to the only other subclass of WKQuickboardListViewController,
WKTextInputListViewController. However, note that this too is going away in an upcoming patch that refactors
WKTextInputListViewController so that it directly subclasses PUICQuickboardMessageViewController
instead of PUICQuickboardListViewController.

  • Platform/spi/watchos/PepperUICoreSPI.h:

Move a declaration of -initWithDelegate:dictationMode: from PUICDictationViewController to
PUICQuickboardListViewController (see the change in -[WKQuickboardListViewController initWithDelegate:] above).

  • UIProcess/ios/forms/WKSelectMenuListViewController.mm:

(-[WKSelectMenuListViewController shouldShowLanguageButton]):

Since watchOS 7, the language button is now always shown by default in PUICQuickboardListViewController, with a
new subclassing hook to avoid showing it. It doesn't make sense to allow the user to change input languages when
choosing options in a select menu, so we implement this and always return NO here.

  • UIProcess/ios/forms/WKTextInputListViewController.mm:

(-[WKTextInputListViewController viewDidLoad]):

1:34 PM Changeset in webkit [278822] by Fujii Hironori
  • 2 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo/TestExpectations:
12:16 PM Changeset in webkit [278821] by Chris Dumez
  • 4 edits
    3 adds
    3 deletes in trunk

Relax "parent must be an HTMLElement" restriction in outerHTML setter
https://bugs.webkit.org/show_bug.cgi?id=226808

Reviewed by Ryosuke Niwa.

Source/WebCore:

Made the following change to our outerHTML setter for better compatibility and to better
match the specification [1]:

  • Stop throwing an exception when the parent is not an HTML element. This new behavior matches the specification, Blink and Gecko behavior.

I did not fully align us with the specification because we are mostly aligned with Blink at
the moment. In particular:

  • The specification says the outerHTML setter should be a no-op when the parent is null. Firefox matches the specification but WebKit & Blink throw a NoModificationAllowedError.
  • The specification says we should allow setting outerHTML if the parent is a DocumentFragment. Firefox allows this but WebKit & Blink throw a NoModificationAllowedError.
  • WebKit & Blink have some Text node merging logic that is not present in the specification and which Gecko doesn't implement.

[1] https://w3c.github.io/DOM-Parsing/#dom-element-outerhtml

Test: fast/dom/set-outer-html-special-cases.html

  • dom/Element.cpp:

(WebCore::Element::setOuterHTML):

LayoutTests:

  • fast/dom/set-outer-html-special-cases-expected.txt: Added.
  • fast/dom/set-outer-html-special-cases.html: Added.

Add layout test coverage

  • fast/dynamic/outerHTML-no-element-expected.txt:

Rebaseline test due to different exception message.

  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-003-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-003-expected.txt:

Rebaseline WPT test. This is actually a progression because we're no longer throwing. However, the test is still failing
later on.

11:42 AM Changeset in webkit [278820] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

SimulatedXRDevice::shutDownTrackingAndRendering() should clear it's GraphicsContextGL to ensure the resource is cleaned up quickly
https://bugs.webkit.org/show_bug.cgi?id=226947

Reviewed by Dean Jackson.

SimulatedXRDevice::shutDownTrackingAndRendering() needs to clear its GraphicsContextGL
to ensure the resource is cleaned up quickly, and doesn't wait for GC to be reclaimed.
Without this, we can run out of GraphicsContextGLs and fail tests if GC happens to be
running a bit behind.

  • testing/WebFakeXRDevice.cpp:

(WebCore::SimulatedXRDevice::shutDownTrackingAndRendering):

11:29 AM Changeset in webkit [278819] by sbarati@apple.com
  • 3 edits
    1 add in trunk

https://bugs.webkit.org/show_bug.cgi?id=226576
<rdar://problem/78810362>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/short-circuit-read-modify-write-cant-write-dst-before-tdz-check.js: Added.

(let.result.eval.try.captureV):
(catch):

Source/JavaScriptCore:

ShortCircuitReadModifyResolveNode can't emit a value into
its result until after it emits a TDZ check. We were temporarily
storing the result of the get_from_scope into the dst. Then
we'd emit the TDZ check. The TDZ check can throw, and it could
lead to us returning TDZ from the eval itself. Instead, we need
to use a temporary to emit a TDZ check on. Only after the TDZ check
passes can we move the temporary into the result.

  • bytecompiler/NodesCodegen.cpp:

(JSC::ShortCircuitReadModifyResolveNode::emitBytecode):

6:33 AM Changeset in webkit [278818] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][TFC] Add support for over-constrained cases for available space distribution
https://bugs.webkit.org/show_bug.cgi?id=226957

Reviewed by Antti Koivisto.

Source/WebCore:

This patch cleans up the code for the available space distribution. It also enables
cases when the final column width is less than the preferred width (available space is negative).
See further explanation inline in the source.

Test: fast/layoutformattingcontext/table-space-distribution-simple.html

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::GridSpace::isEmpty const):
(WebCore::Layout::max):
(WebCore::Layout::operator-):
(WebCore::Layout::operator+=):
(WebCore::Layout::operator/):
(WebCore::Layout::distributeAvailableSpace):
(WebCore::Layout::TableFormattingContext::TableLayout::distributedHorizontalSpace):

LayoutTests:

  • fast/layoutformattingcontext/table-space-distribution-simple-expected.html: Added.
  • fast/layoutformattingcontext/table-space-distribution-simple.html: Added.

Jun 12, 2021:

5:31 PM Changeset in webkit [278817] by weinig@apple.com
  • 2 edits in trunk/LayoutTests

Disable WebXR tests on Windows
https://bugs.webkit.org/show_bug.cgi?id=226956

Reviewed by Alan Bujtas.

  • platform/win/TestExpectations:

Disable all tests in webxr/ on windows as the feature is not enabled there.

4:09 PM Changeset in webkit [278816] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

-Wnonnull warning in JITCall.cpp
https://bugs.webkit.org/show_bug.cgi?id=226643
<rdar://problem/79197261>

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-06-12
Reviewed by Darin Adler.

This is a false-positive, so suppress it using
IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN.

  • jit/JITCall.cpp:

(JSC::JIT::compileOpCall):

2:45 PM Changeset in webkit [278815] by Wenson Hsieh
  • 5 edits in trunk/Source

Number pad button is missing its image when tapping on <input type=tel> in watchOS 8
https://bugs.webkit.org/show_bug.cgi?id=226955

Reviewed by Darin Adler.

Source/WebKit:

After some recent PepperUICore changes, the Quickboard button for presenting the number pad when focusing a
telephone input on watchOS 8 is missing its icon image. To fix this, stop using deprecated SPI for creating
the list tray button, and instead use +[PUICQuickboardListTrayButton buttonWithType:] and -setAction: to
create and set up the button.

  • Platform/spi/watchos/PepperUICoreSPI.h:
  • UIProcess/ios/forms/WKTextInputListViewController.mm:

(-[WKTextInputListViewController additionalTrayButtons]):

Source/WTF:

Add compile-time flags to guard the presence of PUICQuickboardController and PUICButtonTypePill.

  • wtf/PlatformHave.h:
1:16 PM Changeset in webkit [278814] by Devin Rousso
  • 3 edits in trunk/LayoutTests

(r278618) media/modern-media-controls/overflow-support/chapters.html is timing out since introduction
https://bugs.webkit.org/show_bug.cgi?id=226828
<rdar://problem/79084756>

Unreviewed followup for flaky test.

  • media/modern-media-controls/overflow-support/chapters.html:
  • media/modern-media-controls/overflow-support/chapters-expected.txt:

It may take a moment for the currentTime to updating after selecting a chapter.

11:26 AM Changeset in webkit [278813] by Russell Epstein
  • 1 copy in tags/Safari-612.1.17.10.5

Tag Safari-612.1.17.10.5.

11:23 AM Changeset in webkit [278812] by Russell Epstein
  • 8 edits in branches/safari-612.1.17.10-branch/Source

Versioning.

WebKit-7612.1.17.10.5

10:37 AM Changeset in webkit [278811] by Peng Liu
  • 2 edits in trunk/Source/WebKit

REGRESSION (r278374): [Big Sur] ASSERTION FAILED: !isInRoutingArbitrationForToken(token) in WebCore::SharedRoutingArbitrator::beginRoutingArbitrationForToken()
https://bugs.webkit.org/show_bug.cgi?id=226787

Reviewed by Eric Carlson.

A WebContent process will resume a video element playback after the GPU process crashes
and restarts. During that process, the WebContent process will set category of the audio
session, and the UI process will be asked to begin routing arbitration with the new
category. However, the SharedRoutingArbitrator at the UI process will have stale
routing arbitrator tokens, which lead to the assertion failure.

To fix this issue, this patch cleans up the SharedRoutingArbitrator when the GPU
process crashes.

No new tests. Fix an API test:

  • TestWebKitAPI.GPUProcess.CrashWhilePlayingVideo
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::gpuProcessExited):

10:17 AM Changeset in webkit [278810] by rmorisset@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

We should drop B3 values while running Air
https://bugs.webkit.org/show_bug.cgi?id=226187

Reviewed by Saam Barati.

NB: this patch first landed as r278371, then was reverted in r278587 as it broke --dumpDisassembly().
I fixed the bug (a missing line setDisassembler()) and am now re-landing it. Below is a copy of the original Changelog.

We must keep the following values:

  • WasmBoundsCheck, to know whether it is Pinned or Maximum, and if it is pinned find its argument.
  • CCall/Patch/Check/CheckAdd/CheckSub/CheckMul and all of their children, because all of these are lowered to Air::Patchpoint, which needs to know the type of its arguments, and does so by looking at the children of its origin.

I intend to fix these in later patches if possible.

Finally we must preserve all B3 values in the following cases:

  • if we dump the disassembly or the Air graph: because otherwise we cannot print the origins
  • if we are using the sampling profiler, because it relies on PCToCodeOriginMap which we cannot accurately fill without these origins.

We must also keep m_tuples alive, as it is used by Patchpoints in Air to understand the types of their arguments.
We also don't touch StackSlots (in this patch), because one of them is captured by FTL::State.

Also now PCToOriginMap has a Vector with no inline capacity, since it is either quite large (if needed) or empty (otherwise).

The performance impact of this is a progression on various RAMification subtests on Mac, but is more mitigated on iPhone7, with various regressions.
I suspect these to be noise, and will monitor the performance bots post-landing to make sure of it.

  • b3/B3LowerToAir.cpp:

(JSC::B3::lowerToAir):

  • b3/B3Procedure.cpp:

(JSC::B3::Procedure::freeUnneededB3ValuesAfterLowering):

  • b3/B3Procedure.h:

(JSC::B3::Procedure::releasePCToOriginMap):
(JSC::B3::Procedure::setNeedsPCToOriginMap):
(JSC::B3::Procedure::needsPCToOriginMap):

  • b3/B3SparseCollection.h:

(JSC::B3::SparseCollection::clearAll):
(JSC::B3::SparseCollection::filterAndTransfer):

  • b3/air/AirCode.cpp:

(JSC::B3::Air::Code::Code):

  • b3/air/AirCode.h:

(JSC::B3::Air::Code::shouldPreserveB3Origins const):

  • b3/air/AirGenerate.cpp:

(JSC::B3::Air::generateWithAlreadyAllocatedRegisters):

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLState.cpp:

(JSC::FTL::State::State):

12:26 AM Changeset in webkit [278809] by Russell Epstein
  • 1 copy in tags/Safari-612.1.17.10.4

Tag Safari-612.1.17.10.4.

12:22 AM Changeset in webkit [278808] by Russell Epstein
  • 8 edits in branches/safari-612.1.17.10-branch/Source

Versioning.

WebKit-7612.1.17.10.4

Jun 11, 2021:

9:16 PM Changeset in webkit [278807] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r278754.

Caused 5 TestWebKitAPI.WKWebView.SnapshotImage* tests to time
out on iOS

Reverted changeset:

"takeSnapshotWithConfiguration() should wait for the next
flush before it does callSnapshotRect()"
https://bugs.webkit.org/show_bug.cgi?id=226257
https://commits.webkit.org/r278754

7:36 PM Changeset in webkit [278806] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Lazily compute SecurityOrigin::m_isPotentiallyTrustworthy for performance
https://bugs.webkit.org/show_bug.cgi?id=226946

Reviewed by Alex Christensen.

We currently initialize m_isPotentiallyTrustworthy in the SecurityOrigin constructor.
However, it is a bit expensive to compute and shows on profiles, and we often don't
actually use this data member. As a result, this patch makes it so that
SecurityOrigin::m_isPotentiallyTrustworthy gets computed lazily.

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::SecurityOrigin):
(WebCore::SecurityOrigin::isPotentiallyTrustworthy const):

  • page/SecurityOrigin.h:

(WebCore::SecurityOrigin::isPotentiallyTrustworthy const): Deleted.

7:30 PM Changeset in webkit [278805] by Fujii Hironori
  • 4 edits in trunk/Tools

[Win][DumpRenderTree] --no-timeout switch doesn't work
https://bugs.webkit.org/show_bug.cgi?id=226913

Reviewed by Don Olmstead.

r177542 added a variable 'useTimeoutWatchdog', but used nowhere.

  • DumpRenderTree/win/DumpRenderTree.cpp:
  • DumpRenderTree/win/DumpRenderTreeWin.h:
  • DumpRenderTree/win/TestRunnerWin.cpp:

(TestRunner::setWaitToDump): Check useTimeoutWatchdog to start the timer.

6:42 PM Changeset in webkit [278804] by Wenson Hsieh
  • 8 edits
    2 copies
    1 move in trunk/Source

[Cocoa] Clean up some VisionKitCore soft linking code in WebKit
https://bugs.webkit.org/show_bug.cgi?id=226941

Reviewed by Tim Horton.

Source/WebCore/PAL:

Move softlinking code out of implementation files in WebKit (see WebKit/ChangeLog for details), and into
dedicated VisionKitCore SPI and soft-linking headers in PAL.

  • PAL.xcodeproj/project.pbxproj:
  • pal/PlatformMac.cmake:
  • pal/cocoa/VisionKitCoreSoftLink.h: Copied from Source/WebKit/Platform/cocoa/TextRecognitionUtilities.h.
  • pal/cocoa/VisionKitCoreSoftLink.mm: Copied from Source/WebKit/Platform/cocoa/TextRecognitionUtilities.h.
  • pal/spi/cocoa/VisionKitCoreSPI.h: Renamed from Source/WebKit/Platform/spi/Cocoa/VisionKitSPI.h.

Source/WebKit:

Remove softlinking macros from several files in WebKit; instead, import and use the new PAL soft-linking helper
functions. Additionally, move a couple of staging forward declarations into the non-internal SDK section of the
VisionKitCore SPI header.

  • Platform/cocoa/TextRecognitionUtilities.h:
  • Platform/cocoa/TextRecognitionUtilities.mm:

(WebKit::isLiveTextEnabled):
(WebKit::isLiveTextAvailableAndEnabled):

Additionally replace isLiveTextEnabled with isLiveTextAvailableAndEnabled, and have it check for the
presence of the VisionKitCore framework in addition to whether the system feature flag is enabled (at least,
when building with the internal SDK).

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::ensureImageAnalyzer):
(WebKit::createImageAnalysisRequest):
(WebKit::WebViewImpl::requestTextRecognition):
(WebKit::WebViewImpl::computeHasVisualSearchResults):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setUpInteraction]):
(-[WKContentView actionSheetAssistant:shouldIncludeShowTextActionForElement:]):
(-[WKContentView actionSheetAssistant:shouldIncludeLookUpImageActionForElement:]):
(-[WKContentView imageAnalyzer]):
(-[WKContentView _setUpImageAnalysis]):
(-[WKContentView _tearDownImageAnalysis]):
(-[WKContentView createImageAnalysisRequest:image:imageURL:]):
(-[WKContentView imageAnalysisGestureDidBegin:]):

6:42 PM Changeset in webkit [278803] by rniwa@webkit.org
  • 6 edits
    1 add in trunk

Add WeakHashMap
https://bugs.webkit.org/show_bug.cgi?id=226872

Reviewed by Geoffrey Garen.

Source/WTF:

Added WeakHashMap which deletes entries during rehashing and amortized over time (based on
the number of read & write accesses done on a given WeakHashMap instance).

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/WeakHashMap.h: Added.

(WTF::WeakHashMap): Added.
(WTF::WeakHashMap::PeekKeyValuePairTraits): Added.
(WTF::WeakHashMap::PeekType): Added.
(WTF::WeakHashMap::PeekPtrType): Added. Unlike a regular HashMap, we need to fake the iterator
pointer value with this struct since key-value pair doesn't exist in HashTable itself as it stores
Ref<WeakRefImpl> instead.
(WTF::WeakHashMap::WeakHashMapIteratorBase): Added. Has a bunch of helper functions so that
WeakHashMapIterator and WeakHashMapConstIterator can share the code.
(WTF::WeakHashMap::WeakHashMapIterator): Added.
(WTF::WeakHashMap::WeakHashMapConstIterator): Added.
(WTF::WeakHashMap::AddResult): Added.
(WTF::WeakHashMap::begin): Added.
(WTF::WeakHashMap::end): Added.
(WTF::WeakHashMap::add): Added.
(WTF::WeakHashMap::set): Added.
(WTF::WeakHashMap::find): Added.
(WTF::WeakHashMap::contains): Added.
(WTF::WeakHashMap::get): Added.
(WTF::WeakHashMap::remove): Added.
(WTF::WeakHashMap::removeIf): Added.
(WTF::WeakHashMap::clear): Added.
(WTF::WeakHashMap::capacity): Added.
(WTF::WeakHashMap::isEmptyIgnoringNullReferences): Added. This is akin to WeakHashSet::computesEmpty.
Per prior discussion, we intend to rename WeakHashSet's version to this name as well for clarity.
Note that this function will clear the hash table completely if the map is semantically empty
but HashTable contains null references as keys.
(WTF::WeakHashMap::hasNullReferences): Added. Triggers amortized cleanup based on the number
of iterations performed. If there are no null references, it resets m_operationCountSinceLastCleanup.
(WTF::WeakHashMap::computeSize): Added.
(WTF::WeakHashMap::removeNullReferences): Added. Since WeakHashMap doesn't eagerly delete the value
when the key goes away, this function should be called when values held onto by WeakRefImpl with
the nullptr back pointer should be deleted en masse.
(WTF::WeakHashMap::checkConsistency): Added.
(WTF::WeakHashMap::makeKeyImpl): Added.
(WTF::WeakHashMap::keyImplIfExists): Added.

  • wtf/WeakPtr.h:

Tools:

Added unit tests for WeakHashMap.

  • TestWebKitAPI/Tests/WTF/WeakPtr.cpp:

(TestWebKitAPI::computeSizeOfWeakHashSet): Deleted the unused variant.
(WTF_WeakPtr.WeakHashSetExpansion): Deleted the superflous for loop.
(TestWebKitAPI::computeSizeOfWeakHashMap): Added.
(TestWebKitAPI::ValueObject): Added.
(TestWebKitAPI::ValueObject::create):
(TestWebKitAPI::ValueObject::~ValueObject):
(TestWebKitAPI::ValueObject::ValueObject):
(WTF_WeakPtr.WeakHashMapBasic): Added.
(WTF_WeakPtr.WeakHashMapConstObjects): Added.
(WTF_WeakPtr.WeakHashMapExpansion): Added.
(WTF_WeakPtr.WeakHashMapRemoveNullReferences): Added.
(TestWebKitAPI::collectKeyValuePairsUsingIterators): Added.
(WTF_WeakPtr.WeakHashMapIterators): Added.
(WTF_WeakPtr.WeakHashMapAmortizedCleanup): Added.

6:20 PM Changeset in webkit [278802] by ysuzuki@apple.com
  • 89 edits
    1 add in trunk/Source/WebCore

Use DOMConstructor array instead of HashMap since window constructor property access is critical
https://bugs.webkit.org/show_bug.cgi?id=226909

Reviewed by Filip Pizlo.

window.XXX constructor access is relatively frequently done. But its implementation is using HashMap lookup even though
we are successfully caching the custom property accesses. This patch stop using HashMap and instead using array by
collecting all constructors at build time. # of constructors are 774 in macOS build.

preprocess-idls.pl collects all constructors and assign DOMConstructor::XXX enum to each constructor. And it also counts
the number of constructors & create DOMConstructors class which holds array of constructors.

We also remove locking for JSDOMGlobalObject::m_constructors since it is no longer HashTable, so GC can safely access to
these fields.

  • CMakeLists.txt:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::JSDOMGlobalObject):
(WebCore::JSDOMGlobalObject::visitChildrenImpl):

  • bindings/js/JSDOMGlobalObject.h:

(WebCore::getDOMConstructor): Deleted.

  • bindings/js/JSDOMGlobalObjectInlines.h: Added.

(WebCore::getDOMConstructor):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):
(GenerateCallbackImplementationContent):

  • bindings/scripts/preprocess-idls.pl:
  • bindings/scripts/test/JS/JSDOMWindow.cpp:

(WebCore::JSDOMWindow::getConstructor):

  • bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp:

(WebCore::JSDedicatedWorkerGlobalScope::getConstructor):

  • bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp:

(WebCore::JSExposedToWorkerAndWindow::getConstructor):

  • bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp:

(WebCore::JSPaintWorkletGlobalScope::getConstructor):

  • bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp:

(WebCore::JSServiceWorkerGlobalScope::getConstructor):

  • bindings/scripts/test/JS/JSTestCEReactions.cpp:

(WebCore::JSTestCEReactions::getConstructor):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:

(WebCore::JSTestCEReactionsStringifier::getConstructor):

  • bindings/scripts/test/JS/JSTestCallTracer.cpp:

(WebCore::JSTestCallTracer::getConstructor):

  • bindings/scripts/test/JS/JSTestCallbackInterface.cpp:

(WebCore::JSTestCallbackInterface::getConstructor):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:

(WebCore::JSTestClassWithJSBuiltinConstructor::getConstructor):

  • bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:

(WebCore::JSTestConditionalIncludes::getConstructor):

  • bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp:

(WebCore::JSTestConditionallyReadWrite::getConstructor):

  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:

(WebCore::JSTestDOMJIT::getConstructor):

  • bindings/scripts/test/JS/JSTestDefaultToJSON.cpp:

(WebCore::JSTestDefaultToJSON::getConstructor):

  • bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp:

(WebCore::JSTestDefaultToJSONFilteredByExposed::getConstructor):

  • bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.cpp:

(WebCore::JSTestDefaultToJSONIndirectInheritance::getConstructor):

  • bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp:

(WebCore::JSTestDefaultToJSONInherit::getConstructor):

  • bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp:

(WebCore::JSTestDefaultToJSONInheritFinal::getConstructor):

  • bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.cpp:

(WebCore::JSTestDelegateToSharedSyntheticAttribute::getConstructor):

  • bindings/scripts/test/JS/JSTestDomainSecurity.cpp:

(WebCore::JSTestDomainSecurity::getConstructor):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:

(WebCore::JSTestEnabledBySetting::getConstructor):

  • bindings/scripts/test/JS/JSTestEnabledForContext.cpp:

(WebCore::JSTestEnabledForContext::getConstructor):

  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:

(WebCore::JSTestEventConstructor::getConstructor):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::getConstructor):

  • bindings/scripts/test/JS/JSTestException.cpp:

(WebCore::JSTestException::getConstructor):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:

(WebCore::JSTestGenerateIsReachable::getConstructor):

  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:

(WebCore::JSTestGlobalObject::getConstructor):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:

(WebCore::JSTestIndexedSetterNoIdentifier::getConstructor):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:

(WebCore::JSTestIndexedSetterThrowingException::getConstructor):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:

(WebCore::JSTestIndexedSetterWithIdentifier::getConstructor):

  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::JSTestInterface::getConstructor):

  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:

(WebCore::JSTestInterfaceLeadingUnderscore::getConstructor):

  • bindings/scripts/test/JS/JSTestIterable.cpp:

(WebCore::JSTestIterable::getConstructor):

  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:

(WebCore::JSTestJSBuiltinConstructor::getConstructor):

  • bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp:

(WebCore::JSTestLegacyFactoryFunction::getConstructor):
(WebCore::JSTestLegacyFactoryFunction::getLegacyFactoryFunction):

  • bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp:

(WebCore::JSTestLegacyOverrideBuiltIns::getConstructor):

  • bindings/scripts/test/JS/JSTestMapLike.cpp:

(WebCore::JSTestMapLike::getConstructor):

  • bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp:

(WebCore::JSTestMapLikeWithOverriddenOperations::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:

(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:

(WebCore::JSTestNamedAndIndexedSetterThrowingException::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:

(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:

(WebCore::JSTestNamedDeleterNoIdentifier::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:

(WebCore::JSTestNamedDeleterThrowingException::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:

(WebCore::JSTestNamedDeleterWithIdentifier::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:

(WebCore::JSTestNamedDeleterWithIndexedGetter::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:

(WebCore::JSTestNamedGetterCallWith::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:

(WebCore::JSTestNamedGetterNoIdentifier::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:

(WebCore::JSTestNamedGetterWithIdentifier::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:

(WebCore::JSTestNamedSetterNoIdentifier::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:

(WebCore::JSTestNamedSetterThrowingException::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:

(WebCore::JSTestNamedSetterWithIdentifier::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:

(WebCore::JSTestNamedSetterWithIndexedGetter::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp:

(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp:

(WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::getConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp:

(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::getConstructor):

  • bindings/scripts/test/JS/JSTestNamespaceObject.cpp:

(WebCore::JSTestNamespaceObject::getConstructor):

  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::JSTestNode::getConstructor):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObj::getConstructor):

  • bindings/scripts/test/JS/JSTestOperationConditional.cpp:

(WebCore::JSTestOperationConditional::getConstructor):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:

(WebCore::JSTestOverloadedConstructors::getConstructor):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:

(WebCore::JSTestOverloadedConstructorsWithSequence::getConstructor):

  • bindings/scripts/test/JS/JSTestPluginInterface.cpp:

(WebCore::JSTestPluginInterface::getConstructor):

  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:

(WebCore::JSTestPromiseRejectionEvent::getConstructor):

  • bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp:

(WebCore::JSTestReadOnlyMapLike::getConstructor):

  • bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp:

(WebCore::JSTestReadOnlySetLike::getConstructor):

  • bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp:

(WebCore::JSTestReportExtraMemoryCost::getConstructor):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:

(WebCore::JSTestSerializedScriptValueInterface::getConstructor):

  • bindings/scripts/test/JS/JSTestSetLike.cpp:

(WebCore::JSTestSetLike::getConstructor):

  • bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp:

(WebCore::JSTestSetLikeWithOverriddenOperations::getConstructor):

  • bindings/scripts/test/JS/JSTestStringifier.cpp:

(WebCore::JSTestStringifier::getConstructor):

  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:

(WebCore::JSTestStringifierAnonymousOperation::getConstructor):

  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:

(WebCore::JSTestStringifierNamedOperation::getConstructor):

  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:

(WebCore::JSTestStringifierOperationImplementedAs::getConstructor):

  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:

(WebCore::JSTestStringifierOperationNamedToString::getConstructor):

  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:

(WebCore::JSTestStringifierReadOnlyAttribute::getConstructor):

  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:

(WebCore::JSTestStringifierReadWriteAttribute::getConstructor):

  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::JSTestTypedefs::getConstructor):

  • bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:

(WebCore::JSWorkerGlobalScope::getConstructor):

  • bindings/scripts/test/JS/JSWorkletGlobalScope.cpp:

(WebCore::JSWorkletGlobalScope::getConstructor):

5:12 PM Changeset in webkit [278801] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed small API test failure fix after r278786.

  • TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm:

(TEST):

5:06 PM Changeset in webkit [278800] by commit-queue@webkit.org
  • 12 edits in trunk

Partition CrossOriginPreflightResultCache by SessionID
https://bugs.webkit.org/show_bug.cgi?id=226910

Patch by Alex Christensen <achristensen@webkit.org> on 2021-06-11
Reviewed by Youenn Fablet.

Source/WebCore:

  • loader/CrossOriginAccessControl.cpp:

(WebCore::validatePreflightResponse):

  • loader/CrossOriginAccessControl.h:
  • loader/CrossOriginPreflightChecker.cpp:

(WebCore::CrossOriginPreflightChecker::validatePreflightResponse):

  • loader/CrossOriginPreflightResultCache.cpp:

(WebCore::CrossOriginPreflightResultCache::appendEntry):
(WebCore::CrossOriginPreflightResultCache::canSkipPreflight):

  • loader/CrossOriginPreflightResultCache.h:
  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):

Source/WebKit:

  • NetworkProcess/NetworkCORSPreflightChecker.cpp:

(WebKit::NetworkCORSPreflightChecker::didCompleteWithError):

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(TEST):

4:45 PM Changeset in webkit [278799] by Chris Dumez
  • 11 edits in trunk/Source/WebKit

Enable more release logging in UIProcess/WebProcess for ephemeral sessions
https://bugs.webkit.org/show_bug.cgi?id=226945

Reviewed by Geoffrey Garen.

Enable more release logging in UIProcess/WebProcess for ephemeral sessions, to facilitate
debugging.

  • UIProcess/API/Cocoa/WKWebView.mm:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:

(WebKit::RemoteLayerTreeHost::updateLayerTree):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::fetchWebsiteData):
(WebKit::WebProcessProxy::deleteWebsiteData):
(WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
(WebKit::WebProcessProxy::requestTermination):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::loadResource):
(WebKit::WebLoaderStrategy::scheduleLoad):
(WebKit::WebLoaderStrategy::tryLoadingUsingURLSchemeHandler):
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
(WebKit::WebLoaderStrategy::networkProcessCrashed):
(WebKit::WebLoaderStrategy::loadDataURLSynchronously):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):

  • WebProcess/Network/webrtc/WebRTCMonitor.cpp:

(WebKit::WebRTCMonitor::StartUpdating):
(WebKit::WebRTCMonitor::StopUpdating):
(WebKit::WebRTCMonitor::networksChanged):

  • WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
4:43 PM Changeset in webkit [278798] by Robert Jenner
  • 1 edit
    2 deletes in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/html5lib resources
https://bugs.webkit.org/show_bug.cgi?id=226833

Reviewed by Jonathan Bedard.

  • html5lib/resources/isindex.dat: Removed.
  • html5lib/resources/scripted/ark.dat: Removed.
4:42 PM Changeset in webkit [278797] by Robert Jenner
  • 1 edit
    1 delete in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/loader resources
https://bugs.webkit.org/show_bug.cgi?id=226835

Reviewed by Jonathan Bedard.

  • loader/navigation-policy/should-open-external-urls/resources/main-frame-with-subframe-click-targets-subframe.html: Removed.
4:39 PM Changeset in webkit [278796] by Robert Jenner
  • 1 edit
    4 deletes in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/webaudio resources
https://bugs.webkit.org/show_bug.cgi?id=226843

Reviewed by Jonathan Bedard.

  • webaudio/resources/convolution-testing.js: Removed.
  • webaudio/resources/javascriptaudionode-testing.js: Removed.
  • webaudio/resources/note-grain-on-testing.js: Removed.
  • webaudio/resources/scriptprocessornode-testing.js: Removed.
4:39 PM Changeset in webkit [278795] by Robert Jenner
  • 1 edit
    1 delete in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/tiled-drawing resources
https://bugs.webkit.org/show_bug.cgi?id=226842

Reviewed by Jonathan Bedard.

  • tiled-drawing/resources/green.png: Removed.
4:38 PM Changeset in webkit [278794] by Robert Jenner
  • 1 edit
    1 delete in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/security resources
https://bugs.webkit.org/show_bug.cgi?id=226839

Reviewed by Jonathan Bedard.

  • security/resources/worker-isSecureContext-disabled.js: Removed.
4:36 PM Changeset in webkit [278793] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Use SharedBuffer!=() in CachedResource::tryReplaceEncodedData()
https://bugs.webkit.org/show_bug.cgi?id=226943

Reviewed by Geoff Garen.

Use SharedBuffer!=() in CachedResource::tryReplaceEncodedData() instead of duplicating its logic.
SharedBuffer!=() is also potentially more efficient since it doesn't requires combining the
SharedBuffers' data segments.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::tryReplaceEncodedData):

4:35 PM Changeset in webkit [278792] by Robert Jenner
  • 1 edit
    1 delete in trunk/LayoutTests

N[LayoutTests] Delete unused LayoutTests/media resources
https://bugs.webkit.org/show_bug.cgi?id=226836

Reviewed by Jonathan Bedard.

  • media/track/opera/resources/media/sunflower.mp4: Removed.
  • media/track/opera/resources/media/sunflower.webm: Removed.
4:26 PM Changeset in webkit [278791] by Robert Jenner
  • 1 edit
    5 deletes in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/js resources
https://bugs.webkit.org/show_bug.cgi?id=226796

Reviewed by Jonathan Bedard.

  • js/dom/modules/resources/module-will-fire-beforeload.js: Removed.
  • js/kde/resources/KNOWN_FAILURES: Removed.
  • js/mozilla/resources/js-test-post-async.js: Removed.
  • js/mozilla/resources/js-test-post-function.js: Removed.
  • js/mozilla/resources/js-test-post-n.js: Removed.
4:22 PM Changeset in webkit [278790] by Robert Jenner
  • 1 edit
    2 deletes in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/css3 resources
https://bugs.webkit.org/show_bug.cgi?id=226827

Reviewed by Jonathan Bedard.

  • css3/masking/resources/clip.svg: Removed.
  • css3/resources/FeatureTest.ttf: Removed.
4:21 PM Changeset in webkit [278789] by imanol
  • 2 edits in trunk/Source/WebCore

Implement Encode/Decode templates for WebXR InputSources
https://bugs.webkit.org/show_bug.cgi?id=226923

Reviewed by Sam Weinig.

Process WebXR InputSources in PlatformXR FrameData Encode/Decode templates.

Tested by WebXR WPT.

  • platform/xr/PlatformXR.h:

(PlatformXR::Device::FrameData::InputSourceButton::encode const):
(PlatformXR::Device::FrameData::InputSourceButton::decode):
(PlatformXR::Device::FrameData::InputSourcePose::encode const):
(PlatformXR::Device::FrameData::InputSourcePose::decode):
(PlatformXR::Device::FrameData::InputSource::encode const):
(PlatformXR::Device::FrameData::InputSource::decode):
(PlatformXR::Device::FrameData::encode const):
(PlatformXR::Device::FrameData::decode):

4:13 PM Changeset in webkit [278788] by Chris Dumez
  • 10 edits in trunk/Source/WebCore

Enable more release logging in WebCore for ephemeral sessions
https://bugs.webkit.org/show_bug.cgi?id=226940

Reviewed by Geoffrey Garen.

Enable more release logging in WebCore for ephemeral sessions, to faciliate
debugging.

  • Modules/webaudio/AudioContext.cpp:
  • loader/PolicyChecker.cpp:

(WebCore::FrameLoader::PolicyChecker::checkNavigationPolicy):

  • page/FrameView.cpp:

(WebCore::FrameView::scheduleResizeEventIfNeeded):
(WebCore::FrameView::paintContents):
(WebCore::FrameView::fireLayoutRelatedMilestonesIfNeeded):

  • page/PerformanceMonitor.cpp:

(WebCore::PerformanceMonitor::measurePostLoadCPUUsage):
(WebCore::PerformanceMonitor::measurePostLoadMemoryUsage):
(WebCore::PerformanceMonitor::measurePostBackgroundingMemoryUsage):
(WebCore::PerformanceMonitor::measurePostBackgroundingCPUUsage):
(WebCore::PerformanceMonitor::measureCPUUsageInActivityState):

  • workers/service/ServiceWorker.cpp:

(WebCore::ServiceWorker::ServiceWorker):
(WebCore::ServiceWorker::updateState):
(WebCore::ServiceWorker::isAlwaysOnLoggingAllowed const): Deleted.

  • workers/service/ServiceWorker.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::addRegistration):
(WebCore::ServiceWorkerContainer::unregisterRegistration):
(WebCore::ServiceWorkerContainer::updateRegistration):
(WebCore::ServiceWorkerContainer::jobFailedWithException):
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
(WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
(WebCore::ServiceWorkerContainer::startScriptFetchForJob):
(WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
(WebCore::ServiceWorkerContainer::jobFailedLoadingScript):
(WebCore::ServiceWorkerContainer::isAlwaysOnLoggingAllowed const): Deleted.

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::ServiceWorkerRegistration):
(WebCore::ServiceWorkerRegistration::updateStateFromServer):
(WebCore::ServiceWorkerRegistration::queueTaskToFireUpdateFoundEvent):

3:57 PM Changeset in webkit [278787] by Truitt Savell
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=226942

Unreviewed test gardening.

3:56 PM Changeset in webkit [278786] by Chris Dumez
  • 6 edits in trunk/Source/WebKit

[WK2] Batch local storage database writes using transactions
https://bugs.webkit.org/show_bug.cgi?id=226938

Reviewed by Geoff Garen.

Batch local storage writes using transactions, to improve performance
and reduce disk writes. In this patch, we use a simple time-based
approach where we batch transactions happening in the same 500ms
period.

  • NetworkProcess/WebStorage/LocalStorageDatabase.cpp:

(WebKit::LocalStorageDatabase::create):
(WebKit::LocalStorageDatabase::LocalStorageDatabase):
(WebKit::LocalStorageDatabase::startTransactionIfNecessary):
(WebKit::LocalStorageDatabase::removeItem):
(WebKit::LocalStorageDatabase::setItem):
(WebKit::LocalStorageDatabase::clear):
(WebKit::LocalStorageDatabase::close):

  • NetworkProcess/WebStorage/LocalStorageDatabase.h:
  • NetworkProcess/WebStorage/StorageArea.cpp:

(WebKit::StorageArea::ensureDatabase const):

3:37 PM Changeset in webkit [278785] by Patrick Angle
  • 18 edits
    2 adds in trunk

Web Inspector: Add instrumentation to node destruction for InspectorDOMAgent
https://bugs.webkit.org/show_bug.cgi?id=226624

Reviewed by Devin Rousso.

Source/JavaScriptCore:

Add new DOM.willDestroyDOMNode event to inform the frontend of DOM nodes that no longer exist, even if they
weren't in the DOM tree. This work serves as a prelude to <https://webkit.org/b/189687> (Web Inspector: preserve
DOM.NodeId if a node is removed and re-added) to eventually only forget about nodes upon destruction, instead of
removal from the DOM tree.

  • inspector/protocol/DOM.json:

Source/WebCore:

Test: inspector/dom/willDestroyDOMNode.html

Add instrumentation for destruction of nodes in order to cease instrumenting nodes and inform the frontend that
the node no longer exists. This work serves as a prelude to <https://webkit.org/b/189687> (Web Inspector:
preserve DOM.NodeId if a node is removed and re-added) to eventually only forget about nodes upon destruction,
instead of removal from the DOM tree. Additionally, the storage of nodes is simplified down to two inverse maps,
one that maps Node to NodeId, and another that maps NodeId to Node. These are kept in sync throughout,
and both attached and detached nodes are now handled as part of these two maps of Nodes.

  • dom/Node.cpp:

(WebCore::Node::~Node):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::willDestroyDOMNodeImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didRemoveDOMNode):
(WebCore::InspectorInstrumentation::willDestroyDOMNode):

  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::didRemoveDOMNode):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::InspectorDOMAgent):
(WebCore::InspectorDOMAgent::reset):
(WebCore::InspectorDOMAgent::bind):
(WebCore::InspectorDOMAgent::unbind):
(WebCore::InspectorDOMAgent::getDocument):
(WebCore::InspectorDOMAgent::pushChildNodesToFrontend):
(WebCore::InspectorDOMAgent::discardBindings):
(WebCore::InspectorDOMAgent::pushNodePathToFrontend):
(WebCore::InspectorDOMAgent::boundNodeId):

  • Add a check that the Node* is a valid key (not nullptr) before getting its id.

(WebCore::InspectorDOMAgent::buildObjectForNode):
(WebCore::InspectorDOMAgent::buildArrayForContainerChildren):
(WebCore::InspectorDOMAgent::buildArrayForPseudoElements):
(WebCore::InspectorDOMAgent::didCommitLoad):
(WebCore::InspectorDOMAgent::didInsertDOMNode):
(WebCore::InspectorDOMAgent::didRemoveDOMNode):
(WebCore::InspectorDOMAgent::willDestroyDOMNode):
(WebCore::InspectorDOMAgent::destroyedNodesTimerFired):

  • Added instrumentation point for DOM nodes being destroyed so they can be removed from the agent, and the

frontend can also be informed of their ceasing to exist.
(WebCore::InspectorDOMAgent::characterDataModified):
(WebCore::InspectorDOMAgent::didInvalidateStyleAttr):
(WebCore::InspectorDOMAgent::didPushShadowRoot):
(WebCore::InspectorDOMAgent::willPopShadowRoot):
(WebCore::InspectorDOMAgent::didChangeCustomElementState):
(WebCore::InspectorDOMAgent::pseudoElementCreated):
(WebCore::InspectorDOMAgent::pseudoElementDestroyed):
(WebCore::InspectorDOMAgent::releaseDanglingNodes): Deleted.

  • Removed usage of NodeToIdMap and nested maps of nodes throughout in favor of two inverse maps for relating

Nodes and NodeIds. Because there is now a single set of canonical node maps, we no longer to to pass a
NodeToIdMap throughout the agent.

  • inspector/agents/InspectorDOMAgent.h:
  • inspector/agents/page/PageConsoleAgent.cpp:

(WebCore::PageConsoleAgent::PageConsoleAgent):
(WebCore::PageConsoleAgent::clearMessages):

  • inspector/agents/page/PageConsoleAgent.h:
  • inspector/agents/page/PageDOMDebuggerAgent.cpp:

(WebCore::PageDOMDebuggerAgent::willDestroyDOMNode):

  • inspector/agents/page/PageDOMDebuggerAgent.h:

Source/WebInspectorUI:

Listen for the new DOM.willDestroyDOMNode event in order to cleanup and remaining references to that Node.
This work serves as a prelude to <https://webkit.org/b/189687> (Web Inspector: preserve DOM.NodeId if a node is
removed and re-added) to eventually only forget about nodes upon destruction, instead of removal from the DOM
tree.

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.prototype.willDestroyDOMNode):

  • UserInterface/Protocol/DOMObserver.js:

(WI.DOMObserver.prototype.willDestroyDOMNode):

  • UserInterface/Views/DOMTreeUpdater.js:

(WI.DOMTreeUpdater.prototype._nodeRemoved):

LayoutTests:

  • inspector/dom/willDestroyDOMNode-expected.txt: Added.
  • inspector/dom/willDestroyDOMNode.html: Added.
3:18 PM Changeset in webkit [278784] by Peng Liu
  • 2 edits in trunk/Tools

Fix the references to audio-buffer-size.html in project.pbxproj
https://bugs.webkit.org/show_bug.cgi?id=226932

Reviewed by Eric Carlson.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
2:24 PM Changeset in webkit [278783] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Don't include certificate info in WebURLSchemeTask::didReceiveResponse
https://bugs.webkit.org/show_bug.cgi?id=226939
<rdar://79178335>

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

This call was introduced in r215384 but is unused since WKURLSchemeTask isn't used for HTTPS.
It is causing hangs sometimes, so let's drop it.

  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::didReceiveResponse):

2:21 PM Changeset in webkit [278782] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk/Source/WebCore

Add fast-path for binding security check of DOMWindow
https://bugs.webkit.org/show_bug.cgi?id=226930

Reviewed by Geoffrey Garen.

The security check[1] must pass if the current JSDOMGlobalObject is the same to the accessed JSDOMWindow.
This clarification paves the way to emit JIT code which removes this security check when the lexical and
accessed JSGlobalObjects are the same.

[1]: https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl

  • bindings/js/JSDOMBindingSecurity.cpp:

(WebCore::BindingSecurity::shouldAllowAccessToDOMWindow):

  • bindings/js/JSDOMBindingSecurity.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateAttributeGetterBodyDefinition):
(GenerateAttributeSetterBodyDefinition):
(GenerateOperationBodyDefinition):

1:59 PM Changeset in webkit [278781] by Jonathan Bedard
  • 2 edits in trunk/Source/WebCore/PAL

[Monterey] Support building WebKit (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=226846
<rdar://problem/79095148>

Unreviewed build fix.

  • pal/spi/mac/QuickLookMacSPI.h:
1:44 PM Changeset in webkit [278780] by Jonathan Bedard
  • 21 edits
    2 adds in trunk

[Monterey] Support building WebKit
https://bugs.webkit.org/show_bug.cgi?id=226846
<rdar://problem/79095148>

Reviewed by Tim Horton.

Source/WebCore:

Covered by exisiting tests.

  • testing/Internals.cpp:

(WebCore::Internals::installImageOverlay): Explicitly define second arugment
to avoid 'missing field' compilation error.

Source/WebCore/PAL:

  • pal/spi/cocoa/CryptoKitCBridgingSPI.h: Add RSA BSSA declarations.
  • pal/spi/mac/QuickLookMacSPI.h: Add Image Analysis declarations.

Source/WebKit:

  • Platform/cocoa/TextRecognitionUtilities.mm: Import VisionKitSPI.h.
  • Platform/spi/Cocoa/VisionKitSPI.h: Added.
  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(setUpPageLoaderClient): Allow deprecated declarations.
(setUpPagePolicyClient): Ditto.

  • UIProcess/API/Cocoa/WKConnection.mm:

(setUpClient): Allow deprecated declarations.

  • UIProcess/API/Cocoa/WKProcessGroup.mm:

(setUpConnectionClient): Allow deprecated declarations.
(setUpInjectedBundleClient): Ditto.
(setUpHistoryClient): Ditto.

  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _createMediaSessionCoordinatorForTesting:completionHandler:]): Explicitly define second arugment
to avoid 'missing field' compilation error.

  • UIProcess/Cocoa/WebViewImpl.mm: Import VisionKitSPI.h.
  • UIProcess/ios/WKContentViewInteraction.mm: Ditto.
  • WebKit.xcodeproj/project.pbxproj: Ditto.

Source/WTF:

  • wtf/PlatformHave.h: Add HAVE(VK_IMAGE_ANALYSIS).
  • wtf/spi/cocoa/SecuritySPI.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add CoreCryptoSPI.h.
  • TestWebKitAPI/Tests/WebCore/cocoa/CoreCryptoSPI.h: Added.
  • TestWebKitAPI/Tests/WebCore/cocoa/PrivateClickMeasurementCocoa.mm: Import CoreCryptoSPI.h.
  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm: Ditto.
1:36 PM Changeset in webkit [278779] by Chris Dumez
  • 26 edits in trunk/Source

Enable release logging in ephemeral sessions for parts of WebCore
https://bugs.webkit.org/show_bug.cgi?id=226929

Reviewed by Eric Carlson.

Enable release logging in ephemeral sessions for parts of WebCore, to facilitate debugging.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::canNavigate):

  • dom/Document.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::setRequest):
(WebCore::DocumentLoader::setMainDocumentError):
(WebCore::DocumentLoader::mainReceivedError):
(WebCore::DocumentLoader::frameDestroyed):
(WebCore::DocumentLoader::stopLoading):
(WebCore::DocumentLoader::notifyFinished):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::tryLoadingSubstituteData):
(WebCore::DocumentLoader::disallowDataRequest const):
(WebCore::DocumentLoader::continueAfterContentPolicy):
(WebCore::DocumentLoader::attachToFrame):
(WebCore::DocumentLoader::detachFromFrame):
(WebCore::DocumentLoader::startLoadingMainResource):
(WebCore::DocumentLoader::loadMainResource):
(WebCore::DocumentLoader::cancelMainResourceLoad):

  • loader/DocumentLoader.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::changeLocation):
(WebCore::FrameLoader::loadURLIntoChildFrame):
(WebCore::FrameLoader::loadArchive):
(WebCore::FrameLoader::loadInSameDocument):
(WebCore::FrameLoader::prepareForLoadStart):
(WebCore::FrameLoader::setupForReplace):
(WebCore::FrameLoader::loadFrameRequest):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::load):
(WebCore::FrameLoader::loadWithNavigationAction):
(WebCore::FrameLoader::loadWithDocumentLoader):
(WebCore::FrameLoader::clearProvisionalLoadForPolicyCheck):
(WebCore::FrameLoader::reloadWithOverrideEncoding):
(WebCore::FrameLoader::reload):
(WebCore::FrameLoader::stopAllLoaders):
(WebCore::FrameLoader::stopForBackForwardCache):
(WebCore::FrameLoader::setDocumentLoader):
(WebCore::FrameLoader::setPolicyDocumentLoader):
(WebCore::FrameLoader::setProvisionalDocumentLoader):
(WebCore::FrameLoader::setState):
(WebCore::FrameLoader::clearProvisionalLoad):
(WebCore::FrameLoader::transitionToCommitted):
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
(WebCore::FrameLoader::loadPostRequest):
(WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy):
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
(WebCore::FrameLoader::loadDifferentDocumentItem):
(WebCore::FrameLoader::retryAfterFailedCacheOnlyMainResourceLoad):

  • loader/FrameLoader.h:
  • loader/ProgressTracker.cpp:

(WebCore::ProgressTracker::progressStarted):
(WebCore::ProgressTracker::progressCompleted):
(WebCore::ProgressTracker::finalProgressComplete):

  • loader/ProgressTracker.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::init):
(WebCore::ResourceLoader::loadDataURL):
(WebCore::ResourceLoader::willSendRequestInternal):
(WebCore::ResourceLoader::didReceiveResponse):
(WebCore::ResourceLoader::didFinishLoading):
(WebCore::ResourceLoader::didFinishLoadingOnePart):
(WebCore::ResourceLoader::didFail):
(WebCore::ResourceLoader::willSendRequestAsync):
(WebCore::ResourceLoader::wasBlocked):
(WebCore::ResourceLoader::cannotShowURL):

  • loader/ResourceLoader.h:

(WebCore::ResourceLoader::frame const):

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::init):
(WebCore::SubresourceLoader::willSendRequestInternal):
(WebCore::SubresourceLoader::didReceiveResponse):
(WebCore::SubresourceLoader::didFinishLoading):
(WebCore::SubresourceLoader::didFail):
(WebCore::SubresourceLoader::willCancel):
(WebCore::SubresourceLoader::notifyDone):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load):
(WebCore::CachedResource::redirectReceived):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::canRequestAfterRedirection const):
(WebCore::CachedResourceLoader::requestResource):

  • loader/cache/CachedResourceLoader.h:
  • page/Frame.cpp:

(WebCore::Frame::injectUserScriptImmediately):

  • page/Frame.h:
  • page/FrameView.cpp:
  • page/Page.cpp:
  • page/Page.h:
  • page/PerformanceMonitor.cpp:

Source/WebKit:

  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::willSendRequest):
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didFinishResourceLoad):
(WebKit::WebResourceLoader::serviceWorkerDidNotHandle):
(WebKit::WebResourceLoader::didFailResourceLoad):
(WebKit::WebResourceLoader::didBlockAuthenticationChallenge):
(WebKit::WebResourceLoader::stopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied):
(WebKit::WebResourceLoader::didReceiveResource):

  • WebProcess/Network/WebResourceLoader.h:
1:34 PM Changeset in webkit [278778] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Regression(r276653) We're going to disk more often for local storage operations
https://bugs.webkit.org/show_bug.cgi?id=226832

Reviewed by Darin Adler.

We're going to disk more often for local storage operations since r276653 because we no
longer keep items in memory. This results in a slightly increased power usage on one of
our benchmarks. As a first step to improve this, I am reintroducing a cache of the items
in memory, as long as the values are not too large (1Kb limit). We still go to disk to
look up values that are larger than 1Kb to avoid regressing memory usage.

  • NetworkProcess/WebStorage/LocalStorageDatabase.cpp:

(WebKit::LocalStorageDatabase::openDatabase):
(WebKit::LocalStorageDatabase::items const):
(WebKit::LocalStorageDatabase::removeItem):
(WebKit::LocalStorageDatabase::item const):
(WebKit::LocalStorageDatabase::itemBypassingCache const):
(WebKit::LocalStorageDatabase::setItem):
(WebKit::LocalStorageDatabase::clear):
(WebKit::LocalStorageDatabase::close):
(WebKit::LocalStorageDatabase::databaseIsEmpty const):

  • NetworkProcess/WebStorage/LocalStorageDatabase.h:
1:25 PM Changeset in webkit [278777] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Layout test svg/animations/smil-leak-elements.svg is flaky
https://bugs.webkit.org/show_bug.cgi?id=174180

Unreviewed test gardening.

This test is flaky on WK1 and WK2, so move the expectation.

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
1:02 PM Changeset in webkit [278776] by Devin Rousso
  • 3 edits in trunk/Tools

Add an option to Copy WebKit Permalink that automatically opens the URL in the default browser for Sublime Text
https://bugs.webkit.org/show_bug.cgi?id=226933

Reviewed by Tim Horton.

Usually the step right after copying the permalink is to open a browser and enter it. Having
a setting that causes the plugin to do that automatically would save some time and effort.

  • CopyPermalink/Sublime Text/CopyWebKitPermalink/CopyWebKitPermalink.py:

(Settings.automatically_open_in_browser): Added.
(CopyWebKitPermalinkCommand.run):

  • CopyPermalink/Sublime Text/CopyWebKitPermalink/CopyWebKitPermalink.sublime-settings:
12:55 PM Changeset in webkit [278775] by Wenson Hsieh
  • 5 edits
    2 adds in trunk

[Live Text] Text selection inside image elements should not be cleared upon resize
https://bugs.webkit.org/show_bug.cgi?id=226911

Reviewed by Tim Horton.

Source/WebCore:

Refactor HTMLElement::updateWithTextRecognitionResult, such that it doesn't tear down and recreate the host
element's shadow DOM structure in the case where the extant DOM elements are compatible with the given text
recognition result. This prevents us from removing or inserting DOM elements in the case where an image element
is resized (and thus adjusts its shadow DOM content using the updated size), which in turn prevents us from
clearing out the text selection.

Test: fast/images/text-recognition/mac/image-overlay-maintain-selection-during-size-change.html

  • editing/cocoa/DataDetection.h:
  • editing/cocoa/DataDetection.mm:

Make this helper method return an HTMLDivElement instead of just an HTMLElement.

(WebCore::DataDetection::createElementForImageOverlay):

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::updateWithTextRecognitionResult):

Split this method into two logical parts: the first builds up a TextRecognitionElements struct that contains
references to all connected elements in the image element's shadow DOM that require style updates due to the
new size; the second uses this TextRecognitionElements information to compute the new CSS transforms to apply to
each of the data detector, line containers, and text containers underneath each line container element.

Importantly, in step (1), we avoid regenerating shadow DOM content in the case where the DOM elements already
exist in their expected places within the shadow DOM.

LayoutTests:

  • fast/images/text-recognition/mac/image-overlay-maintain-selection-during-size-change-expected.txt: Added.
  • fast/images/text-recognition/mac/image-overlay-maintain-selection-during-size-change.html: Added.
12:14 PM Changeset in webkit [278774] by Russell Epstein
  • 1 copy in tags/Safari-612.1.17.10.3

Tag Safari-612.1.17.10.3.

12:08 PM Changeset in webkit [278773] by Russell Epstein
  • 8 edits in branches/safari-612.1.17.10-branch/Source

Versioning.

WebKit-7612.1.17.10.3

11:41 AM Changeset in webkit [278772] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Enable WebProcess' release logging in ephemeral sessions
https://bugs.webkit.org/show_bug.cgi?id=226927

Reviewed by Geoffrey Garen.

Enable WebProcess' release logging in ephemeral sessions, to faciliate debugging.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::networkProcessConnectionClosed):
(WebKit::WebProcess::prepareToSuspend):
(WebKit::WebProcess::markAllLayersVolatile):
(WebKit::WebProcess::cancelMarkAllLayersVolatile):
(WebKit::WebProcess::freezeAllLayerTrees):
(WebKit::WebProcess::unfreezeAllLayerTrees):
(WebKit::WebProcess::processDidResume):
(WebKit::WebProcess::grantUserMediaDeviceSandboxExtensions):
(WebKit::WebProcess::revokeUserMediaDeviceSandboxExtensions):

  • WebProcess/WebProcess.h:

(WebKit::WebProcess::isAlwaysOnLoggingAllowed): Deleted.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::updateProcessName):
(WebKit::WebProcess::updateActivePages):
(WebKit::WebProcess::updateCPUMonitorState):
(WebKit::WebProcess::destroyRenderingResources):
(WebKit::WebProcess::updateFreezerStatus):
(WebKit::WebProcess::consumeAudioComponentRegistrations):

11:37 AM Changeset in webkit [278771] by Jonathan Bedard
  • 3 edits in trunk/Tools

[check-webkit-style] failing in JS checker due to python byte string
https://bugs.webkit.org/show_bug.cgi?id=226925
<rdar://problem/79166108>

Reviewed by Aakash Jain.

  • Scripts/webkitpy/style/checkers/jstest.py:

(map_functions_to_dict): Use byte regexes.
(strip_trailing_blank_lines_and_comments): Ditto.

  • Scripts/webkitpy/style/checkers/jstest_unittest.py:

(JSTestCheckerTestCase.test_map_functions_to_dict): Test content should be bytes.

11:36 AM Changeset in webkit [278770] by Truitt Savell
  • 2 edits in trunk/Tools

Remove ews129 instead of ews179
https://bugs.webkit.org/show_bug.cgi?id=226855

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/config.json:
11:26 AM Changeset in webkit [278769] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Air ARM64 sub32 opcode should indicate that it zero-extends its result
https://bugs.webkit.org/show_bug.cgi?id=226849

Patch by Yijia Huang <Yijia Huang> on 2021-06-11
Reviewed by Saam Barati.

Sub32 was previously not saying that its result is zero defined. However,
sub32 on arm64 architectures zero defines its result, so the top 32 bits
are zeroed. The issue with this is what we were not eliding provably
redundant zero extend operations.

For example:
B3 IR
@0 = Trunc(ArgumentReg(0))
@1 = Trunc(ArgumentReg(1))
@2 = Sub(@0, @1)
@3 = ZExt32(@2)
i64
@4 = Return(@3) or Store(@3, @x)

Old optimized Air IR
Sub32 %x0, %x1, %x0, b@2
Move32 %x0, %x0, b@3
Ret64 %x0, b@4 or Move %x0, (%x), b@4

To remove that redundant zero extend instruction (Move32), Air arm64
sub32 opcode should indicate that it zero-extends its result.

New optimized Air IR
Sub32 %x0, %x1, %x0, b@2
Ret64 %x0, b@6 or Move %x0, (%x), b@4

  • b3/air/AirOpcode.opcodes:
11:08 AM Changeset in webkit [278768] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

ANGLE EGL and GLES libraries should link with lib dl.
https://bugs.webkit.org/show_bug.cgi?id=226920

Patch by Eleni Maria Stea <hikiko> on 2021-06-11
Reviewed by Kenneth Russell.

GLES and EGL that are generated from ANGLE should link
with libdl because they use dlsym and dlopen. Also,
with the updated CMakeLists.txt we can safely link with libEGL
when USE_ANGLE_WEBGL is set because the symbols of EGL are now
found.

  • CMakeLists.txt:
10:46 AM Changeset in webkit [278767] by Megan Gardner
  • 23 edits in trunk

Rename AppHighlight group to QuickNote to correctly reflect feature.
https://bugs.webkit.org/show_bug.cgi?id=226888

Reviewed by Tim Horton.

Source/WebCore:

Rename only, no behavior change.

  • Modules/highlight/AppHighlight.h:

(WebCore::AppHighlight::encode const):
(WebCore::AppHighlight::decode):

  • Modules/highlight/AppHighlightStorage.cpp:

(WebCore::AppHighlightStorage::storeAppHighlight):

  • Modules/highlight/AppHighlightStorage.h:
  • en.lproj/Localizable.strings:
  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::contextMenuItemSelected):
(WebCore::ContextMenuController::populate):
(WebCore::ContextMenuController::checkOrEnableIfNeeded const):

  • platform/ContextMenuItem.cpp:

(WebCore::isValidContextMenuAction):

  • platform/ContextMenuItem.h:
  • platform/LocalizedStrings.h:
  • platform/cocoa/LocalizedStringsCocoa.mm:

(WebCore::contextMenuItemTagAddHighlightToQuickNote):
(WebCore::contextMenuItemTagAddHighlightToNewQuickNote):
(WebCore::contextMenuItemTagAddHighlightToCurrentGroup): Deleted.
(WebCore::contextMenuItemTagAddHighlightToNewGroup): Deleted.

  • testing/Internals.cpp:

(WebCore::Internals::appHighlightContextMenuItemTitles const):

Source/WebKit:

  • Scripts/webkit/messages.py:

(headers_for_type):

  • Shared/API/c/WKContextMenuItemTypes.h:
  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):
(WebKit::toImpl):

  • UIProcess/API/Cocoa/WKMenuItemIdentifiers.mm:
  • UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _storeAppHighlight:]):
(-[WKWebView _addAppHighlightInNewGroup:originatedInApp:]):
(-[WKWebView _addAppHighlightInNewQuickNote:originatedInApp:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKAppHighlightDelegate.h:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::createAppHighlightInSelectedRange):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::contextMenuItemSelected):

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

(-[WKContentView targetForAction:withSender:]):
(-[WKContentView setUpAppHighlightMenusIfNeeded]):
(-[WKContentView createHighlightForCurrentQuickNoteWithRange:]):
(-[WKContentView createHighlightForNewQuickNoteWithRange:]):
(-[WKContentView createHighlightInCurrentGroupWithRange:]): Deleted.
(-[WKContentView createHighlightInNewGroupWithRange:]): Deleted.

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::menuItemIdentifier):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::storeAppHighlight const):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::createAppHighlightInSelectedRange):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::highlightIsNewQuickNote const):
(WebKit::WebPage::highlightIsNewGroup const): Deleted.

  • WebProcess/WebPage/WebPage.messages.in:

Source/WebKitLegacy/mac:

  • WebView/WebHTMLView.mm:

(toTag):

  • WebView/WebUIDelegatePrivate.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKContentViewEditingActions.mm:

(TEST):

10:45 AM Changeset in webkit [278766] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.18

Tag Safari-612.1.18.

10:41 AM Changeset in webkit [278765] by cathiechen
  • 14 edits in trunk

Use HTMLDimension to parse different HTML attribute length values
https://bugs.webkit.org/show_bug.cgi?id=226810

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/html/rendering/dimension-attributes-expected.txt:
  • web-platform-tests/html/rendering/pixel-length-attributes-expected.txt:

Source/WebCore:

This patch uses HTMLDimension to parse different kind of html length values which are defined in [1].
Then according the length types to determine if the value is valid.

[1] https://www.w3.org/TR/html4/sgml/dtd.html#Length

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::addHTMLLengthToStyle):
(WebCore::HTMLElement::addHTMLLengthToStyle): Add HTMLLength (including percentage values and pixel values) to style.
(WebCore::HTMLElement::addHTMLMultiLengthToStyle): Add MultiLength (including percentage, pixel and relative values) to style.
(WebCore::HTMLElement::addHTMLPixelsToStyle): Add pixel values to style.
(WebCore::HTMLElement::addHTMLNumberToStyle): Add number (including percentage values and numbers) to style.

  • html/HTMLElement.h:
  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::collectPresentationalHintsForAttribute): <img>'s width and height attributes are multiLength.

  • html/HTMLMarqueeElement.cpp:

(WebCore::HTMLMarqueeElement::collectPresentationalHintsForAttribute): scrolldelayAttr and loopAttr are numbers.

  • html/HTMLTableColElement.cpp:

(WebCore::HTMLTableColElement::collectPresentationalHintsForAttribute): <col>'s width and height attributes are multiLength.

  • html/HTMLTableElement.cpp:

(WebCore::HTMLTableElement::collectPresentationalHintsForAttribute): <table>'s cellspacingAttr only supports pixel values.

  • html/parser/HTMLParserIdioms.cpp:

(WebCore::parseHTMLDimensionInternal):
(WebCore::parseHTMLDimension):
(WebCore::parseHTMLMultiLength): MultiLength doesn't support relative_length (number + *), but make sure relative_length not be treated as a pixel value.

  • html/parser/HTMLParserIdioms.h:

LayoutTests:

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt:
10:25 AM Changeset in webkit [278764] by youenn@apple.com
  • 3 edits
    2 adds in trunk

getDisplayMedia API doesn't work
https://bugs.webkit.org/show_bug.cgi?id=226874
<rdar://problem/79134041>

Reviewed by Eric Carlson.

Source/WebCore:

Test: fast/mediastream/getDisplayMedia-frame-rate.html

  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::videoSampleAvailable):
Only apply decimation in case frame rate is set.

LayoutTests:

  • fast/mediastream/getDisplayMedia-frame-rate-expected.txt: Added.
  • fast/mediastream/getDisplayMedia-frame-rate.html: Added.
9:15 AM Changeset in webkit [278763] by achristensen@apple.com
  • 5 edits in trunk

EventSource.constructor throws an exception when the url param is an empty string
https://bugs.webkit.org/show_bug.cgi?id=226635

Reviewed by Yusuke Suzuki.

Source/WebCore:

  • page/EventSource.cpp:

(WebCore::EventSource::create):

LayoutTests:

  • fast/eventsource/eventsource-constructor-expected.txt:
  • fast/eventsource/eventsource-constructor.html:
8:34 AM Changeset in webkit [278762] by Jonathan Bedard
  • 2 edits in trunk/Tools

REGRESSION (r278454): [run-webkit-tests] worker is printed twice for each test in debug logging
https://bugs.webkit.org/show_bug.cgi?id=226895
<rdar://problem/79164077>

Reviewed by Dewei Zhu.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:

(Worker.run_tests): Strip process names from debug logs.
(Worker.stop): Ditto.
(Worker._kill_driver): Ditto.
(Worker._clean_up_after_test): Ditto.

8:15 AM WebKitGTK/2.32.x edited by Michael Catanzaro
(diff)
8:00 AM Changeset in webkit [278761] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] Crash when dragging an account node above WebView
https://bugs.webkit.org/show_bug.cgi?id=226811

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-06-11
Reviewed by Adrian Perez de Castro.

When we receive empty drag data, this is indicated by length -1, not by 0.

  • UIProcess/API/gtk/DropTargetGtk3.cpp:

(WebKit::DropTarget::dataReceived):

7:25 AM Changeset in webkit [278760] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.33.2

WPE WebKit 2.33.2

7:25 AM Changeset in webkit [278759] by Adrian Perez de Castro
  • 4 edits in trunk

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.33.2 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.33.2.
7:23 AM Changeset in webkit [278758] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebCore

Unreviewed non-unified build fixes.

  • loader/ResourceCryptographicDigest.cpp: Add missing SharedBuffer.h header.
  • platform/network/soup/ResourceHandleSoup.cpp: Add missing SecurityOrigin.h header.
5:00 AM Changeset in webkit [278757] by Diego Pino Garcia
  • 4 edits
    1 move in trunk/LayoutTests

[GTK] Test css3/filters/composited-during-animation-layertree.html is flaky since r214292
https://bugs.webkit.org/show_bug.cgi?id=171600

Reviewed by Adrian Perez de Castro.

The general baseline for this test was empty. Updated it with the
results of iOS. I also removed the test failure from iOS TestExpectations.

The test is marked as flaky in Mac because sometimes it produces empty
results (webkit.org/b/95622). I don't touch the Mac baseline and leave
the test as flaky in Mac TestExpectations.

Finally, I moved the current baseline that exists for WPE to GLIB, as
WebKitGTK produces the same results.

  • css3/filters/composited-during-animation-layertree-expected.txt:
  • platform/glib/css3/filters/composited-during-animation-layertree-expected.txt: Renamed from LayoutTests/platform/wpe/css3/filters/composited-during-animation-layertree-expected.txt.
  • platform/gtk/TestExpectations:
  • platform/ios/TestExpectations:
1:24 AM Changeset in webkit [278756] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

WebGL context image buffer accumulates the NativeImage contents when drawn to RemoteImageBufferProxy
https://bugs.webkit.org/show_bug.cgi?id=226813
<rdar://77421966>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-11
Reviewed by Simon Fraser.

Source/WebCore:

Add a workaround to flush WebGL element image buffer before
every new frame in order to clear the WebContent process side
NativeImage caches.

Test: webgl/draw-webgl-to-context2d-memory-test.html

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::paintRenderingResultsToCanvas):

LayoutTests:

Add a test that should crash on some devices with low
memory limits.

  • webgl/draw-webgl-to-context2d-memory-test-expected.txt: Added.
  • webgl/draw-webgl-to-context2d-memory-test.html: Added.

Jun 10, 2021:

10:29 PM Changeset in webkit [278755] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

CARingBuffer::frameOffset() makes incorrect assumptions about the frame count
https://bugs.webkit.org/show_bug.cgi?id=226253
<rdar://problem/78463453>

Reviewed by Eric Carlson.

CARingBuffer::frameOffset() was trying to avoid doing a frameNumber % m_frameCount
modulo operation by doing a frameNumber & (m_frameCount - 1). However, this bitwise
operation is only equivalent if m_frameCount is a power of 2. It isn't enforced
anywhere that the frameCount is a power of 2. As a matter of fact, we frequently use
2*sampleRate which is often 2*44100=88200, which is NOT a power of 2.

When adding logging, I saw frameOffset(512) returning 0 for a frameCount of 88200, which
made no sense. It was causing offset0 and offset1 in CARingBuffer::fetchInternal() to
be both 0 (even though startRead was 0 and endRead was 512) and it was leading the
function to make bad computations.

To address the issue, I updated CARingBuffer::frameOffset() to use a simple modulo
operation. It is safer as it makes no assumption on the frame count and it is more
readable. If we're worried about the performance, we could alternatively round up the
frameCount to the next power of 2 and keep using the bitwise operation, but I am
personally do not think it is worth it.

  • platform/audio/cocoa/CARingBuffer.cpp:

(WebCore::CARingBuffer::initializeAfterAllocation):

  • platform/audio/cocoa/CARingBuffer.h:

(WebCore::CARingBuffer::frameOffset):

10:03 PM Changeset in webkit [278754] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebKit

takeSnapshotWithConfiguration() should wait for the next flush before it does callSnapshotRect()
https://bugs.webkit.org/show_bug.cgi?id=226257
<rdar://76411685>

Reviewed by Simon Fraser.

This will ensure the latest IOSurfaces are pushed to backboardd before
taking the snapshot.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):

9:52 PM Changeset in webkit [278753] by clopez@igalia.com
  • 4 edits in trunk

[CMake][GTK][WPE] Improve error message when libsoup3 is not found
https://bugs.webkit.org/show_bug.cgi?id=226905

Reviewed by Adrian Perez de Castro.

When libsoup 3 is not found be more clear about the problem and
offer possible workaround to continue the build.

  • Source/cmake/FindLibSoup.cmake:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:
8:37 PM Changeset in webkit [278752] by yurys@chromium.org
  • 2 edits in trunk/Source/WebCore

[REGRESSION][Curl] Network::ResourceTiming are broken after r278391
https://bugs.webkit.org/show_bug.cgi?id=226901

Reviewed by Fujii Hironori.

Initialize fetchStart with startTime in Curl.

No new tests.

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::getNetworkLoadMetrics):

8:22 PM Changeset in webkit [278751] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

Unreviewed macOS build fix.

Add some missing header includes.

  • Shared/mac/MediaFormatReader/CoreMediaWrapped.h:
  • Shared/mac/MediaFormatReader/MediaSampleByteRange.h:
  • Shared/mac/MediaFormatReader/MediaSampleCursor.h:
  • Shared/mac/MediaFormatReader/MediaTrackReader.cpp:
8:00 PM Changeset in webkit [278750] by weinig@apple.com
  • 6 edits
    3 adds in trunk

Nothing is keeping navigator.xr alive during GC
https://bugs.webkit.org/show_bug.cgi?id=226898

Reviewed by Chris Dumez.

Source/WebCore:

Ensure the navigator.xr wrapper is kept alive when it has custom properties
by annotating it with GenerateIsReachable=ReachableFromNavigator.

Test: webxr/gc.html

  • Modules/webxr/NavigatorWebXR.cpp:

(WebCore::NavigatorWebXR::xr):

  • Modules/webxr/WebXRSystem.cpp:

(WebCore::WebXRSystem::create):
(WebCore::WebXRSystem::WebXRSystem):
(WebCore::WebXRSystem::navigator):

  • Modules/webxr/WebXRSystem.h:
  • Modules/webxr/WebXRSystem.idl:

LayoutTests:

Add test that ensure the navigator.xr wrapper is kept alive when it has
custom properties.

  • webxr: Added.
  • webxr/gc-expected.txt: Added.
  • webxr/gc.html: Added.
7:56 PM Changeset in webkit [278749] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Drop unnecessary call to StringView::toStringWithoutCopying() in shouldTreatAsPotentiallyTrustworthy()
https://bugs.webkit.org/show_bug.cgi?id=226907

Reviewed by Darin Adler.

Drop unnecessary call to StringView::toStringWithoutCopying() in shouldTreatAsPotentiallyTrustworthy() since
the function we're calling takes a StringView.

  • page/SecurityOrigin.cpp:

(WebCore::shouldTreatAsPotentiallyTrustworthy):

7:36 PM Changeset in webkit [278748] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[WinCairo] Can't open WebInspector UI since r277787
https://bugs.webkit.org/show_bug.cgi?id=226908

Reviewed by Don Olmstead.

r277787 (Bug 226001) changed the return type of
WebURLSchemeTask::request() from const WebCore::ResourceRequest&
to WebCore::ResourceRequest.

InspectorResourceURLSchemeHandler::platformStartTask shouldn't
hold the reference of the temporary object.

  • UIProcess/Inspector/win/InspectorResourceURLSchemeHandler.cpp:

(WebKit::InspectorResourceURLSchemeHandler::platformStartTask):
Changed the type of requestURL from auto& to auto to copy the URL.

6:22 PM Changeset in webkit [278747] by Wenson Hsieh
  • 9 edits
    2 adds in trunk

[Live Text] Add a mechanism to regenerate text in an image element when it changes dimensions
https://bugs.webkit.org/show_bug.cgi?id=226858
rdar://77522786

Reviewed by Devin Rousso.

Source/WebCore:

Push m_elementsWithTextRecognitionResults from WebPage down to Page, and additionally keep track of a
TextRecognitionResult per element, as well as the size of the element at the time when we last injected text
recognition results. Use this information to tell elements to update their OCR text containers if their
dimenions have changed since the last update, after finishing a rendering update.

Test: fast/images/text-recognition/image-overlay-size-change.html

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::updateWithTextRecognitionResult):

Refactor this to take a const TextRecognitionResult& instead of a TextRecognitionResult&&, since this method
doesn't actually take ownership of the TextRecognitionResult. This allows us to avoid explicitly copying a
TextRecognitionResult when calling this method from Page::updateElementsWithTextRecognitionResults. Also, add
a CacheTextRecognitionResults enum flag as an argument, to avoid entering Page::cacheTextRecognitionResult
every time we update a resized element in Page::updateElementsWithTextRecognitionResults; since we know that
the dimensions are the only thing that changed, we simply update the cached dimensions.

Call into Page::cacheTextRecognitionResult to store per-element TextRecognitionResults when we
finish injecting the OCR text and data detectors into the image element.

  • html/HTMLElement.h:
  • page/Page.cpp:

(WebCore::Page::didCommitLoad):

Clear out both m_textRecognitionResultsByElement and m_elementsWithTextRecognitionResults.

(WebCore::Page::doAfterUpdateRendering):

At the end of each rendering update, go through m_elementsWithTextRecognitionResults and check if any of the
elements' dimensions have changed; if so, tell those elements to re-update their OCR text quads and data
detectors in the UA shadow tree.

(WebCore::Page::resetTextRecognitionResults):
(WebCore::Page::updateElementsWithTextRecognitionResults):
(WebCore::Page::hasCachedTextRecognitionResult const):
(WebCore::Page::cacheTextRecognitionResult):

Add the element to m_elementsWithTextRecognitionResults and m_textRecognitionResultsByElement, appending a
new entry to m_textRecognitionResultsByElement only if necessary.

  • page/Page.h:

Source/WebKit:

Push m_elementsWithTextRecognitionResults from WebKit::WebPage down to WebCore::Page. See WebCore
ChangeLog for more details.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didCommitLoad):
(WebKit::WebPage::requestTextRecognition):
(WebKit::WebPage::updateWithTextRecognitionResult):

  • WebProcess/WebPage/WebPage.h:

LayoutTests:

  • fast/images/text-recognition/image-overlay-size-change-expected.txt: Added.
  • fast/images/text-recognition/image-overlay-size-change.html: Added.
6:02 PM Changeset in webkit [278746] by Chris Dumez
  • 8 edits in trunk/Source/WebCore

REGRESSION: (r278544) [ Mac-wk1 ] media/media-continues-playing-after-replace-source.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=226899
<rdar://problem/79160701>

Reviewed by Ryosuke Niwa.

Have MediaPlayerPrivateAVFoundationObjC schedule tasks on the HTML event loop instead of simply using
callOnMainThread() to address flakiness issues, since the rest of the media code uses the HTML event
loop.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerQueueTaskOnEventLoop):

  • html/HTMLMediaElement.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::queueTaskOnEventLoop):

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerQueueTaskOnEventLoop):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::queueTaskOnEventLoop):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(-[WebCoreAVFMovieObserver metadataLoaded]):
(-[WebCoreAVFMovieObserver didEnd:]):
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
(-[WebCoreAVFMovieObserver legibleOutput:didOutputAttributedStrings:nativeSampleBuffers:forItemTime:]):
(-[WebCoreAVFMovieObserver outputSequenceWasFlushed:]):
(-[WebCoreAVFMovieObserver metadataOutput:didOutputTimedMetadataGroups:fromPlayerItemTrack:]):
(-[WebCoreAVFMovieObserver metadataCollector:didCollectDateRangeMetadataGroups:indexesOfNewGroups:indexesOfModifiedGroups:]):
(-[WebCoreAVFLoaderDelegate resourceLoader:shouldWaitForLoadingOfRequestedResource:]):
(-[WebCoreAVFLoaderDelegate resourceLoader:didCancelLoadingRequest:]):

5:49 PM Changeset in webkit [278745] by pvollan@apple.com
  • 11 edits
    2 adds in trunk/Source/WebKit

[iOS] Sync Accessibility preferences
https://bugs.webkit.org/show_bug.cgi?id=226738
<rdar://77922839>

Reviewed by Brent Fulgham.

Implement Per-App Accessibility preferences on iOS. The Per-App Accessibility preferences in the WebContent process
should reflect the values in the UI process. This is addressed by syncing the values between the two processes on
startup of the WebContent process, and when the values change.

  • Platform/spi/Cocoa/AccessibilitySupportSPI.h:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::accessibilityPreferencesChangedCallback):
(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):

  • UIProcess/WebProcessPool.h:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::accessibilityPreferencesDidChange):

5:31 PM Changeset in webkit [278744] by Ruben Turcios
  • 2 edits in branches/safari-612.1.18-branch/Source/WebKit

Cherry-pick r278741. rdar://problem/79169276

Regression(r278449): add null check for completionHandler in WebIDBServer::close
https://bugs.webkit.org/show_bug.cgi?id=226900
rdar://79160392

Reviewed by Chris Dumez.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp: (WebKit::WebIDBServer::close):

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

5:28 PM Changeset in webkit [278743] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening, mark some WebGL tests as passing
https://bugs.webkit.org/show_bug.cgi?id=226847

These tests appear to pass consistently on both GTK and WPE now.

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

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
4:58 PM Changeset in webkit [278742] by Chris Dumez
  • 5 edits in trunk/LayoutTests

REGRESSION: service-workers/service-worker/credentials.https.html and content-security-policy/reporting/report-only-in-meta.sub.html failing together constantly.
https://bugs.webkit.org/show_bug.cgi?id=226884
<rdar://problem/79148983>

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Resync set-cookie.py from upsteam WPT 7f913d9d12a54858 as it had a hard-coded
expiration for the cookie (which has just passed).

  • web-platform-tests/content-security-policy/reporting/support/set-cookie.py:

(main):

  • web-platform-tests/cookies/resources/set-cookie.py:

(main):

LayoutTests:

Unskip tests that should no longer be failing.

4:55 PM Changeset in webkit [278741] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Regression(r278449): add null check for completionHandler in WebIDBServer::close
https://bugs.webkit.org/show_bug.cgi?id=226900
rdar://79160392

Reviewed by Chris Dumez.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::close):

4:51 PM Changeset in webkit [278740] by eric.carlson@apple.com
  • 7 edits in trunk/Source/WebKit

[Cocoa] Remote video layer should respect video gravity when resizing
https://bugs.webkit.org/show_bug.cgi?id=226784

Reviewed by Jer Noble.

Tested manually.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::prepareForPlayback): Pass specify video gravity
when creating remote layer.
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenGravity): Remember gravity.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/VideoLayerRemote.h:
  • WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.h:
  • WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.mm:

(-[WKVideoLayerRemote videoGravity]):
(-[WKVideoLayerRemote setVideoGravity:]):
(-[WKVideoLayerRemote resizePreservingGravity]): Return true when in PiP, fullscreen,
or when video gravity is not "resize".
(-[WKVideoLayerRemote layoutSublayers]): Preserve aspect ration when appropriate.
(WebKit::createVideoLayerRemote):

4:32 PM Changeset in webkit [278739] by Devin Rousso
  • 2 edits in trunk/LayoutTests

(r278618) media/modern-media-controls/overflow-support/chapters.html is timing out since introduction
https://bugs.webkit.org/show_bug.cgi?id=226828
<rdar://problem/79084756>

Unreviewed followup for flaky test.

  • media/modern-media-controls/overflow-support/chapters.html:

Add manual timeouts for each await to see where exactly the test fails.

4:29 PM Changeset in webkit [278738] by achristensen@apple.com
  • 77 edits
    70 adds in trunk

Move Timing-Allow-Origin checks to the network process
https://bugs.webkit.org/show_bug.cgi?id=226678
<rdar://problem/45227788>

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/resource-timing/CodingConventions.md: Added.
  • web-platform-tests/resource-timing/SO-XO-SO-redirect-chain-tao.https-expected.txt: Added.
  • web-platform-tests/resource-timing/SO-XO-SO-redirect-chain-tao.https.html: Added.
  • web-platform-tests/resource-timing/SyntheticResponse.py:

(main):

  • web-platform-tests/resource-timing/TAO-match-expected.txt: Added.
  • web-platform-tests/resource-timing/TAO-match.html: Added.
  • web-platform-tests/resource-timing/TAO-null-opaque-origin-expected.txt: Added.
  • web-platform-tests/resource-timing/TAO-null-opaque-origin.html: Added.
  • web-platform-tests/resource-timing/TAO-port-mismatch-means-crossorigin-expected.txt: Added.
  • web-platform-tests/resource-timing/TAO-port-mismatch-means-crossorigin.html: Added.
  • web-platform-tests/resource-timing/init.py: Added.
  • web-platform-tests/resource-timing/buffer-full-add-after-full-event-expected.txt:
  • web-platform-tests/resource-timing/buffer-full-add-after-full-event.html:
  • web-platform-tests/resource-timing/buffer-full-add-entries-during-callback-expected.txt:
  • web-platform-tests/resource-timing/buffer-full-add-entries-during-callback-that-drop.html:
  • web-platform-tests/resource-timing/buffer-full-add-entries-during-callback.html:
  • web-platform-tests/resource-timing/buffer-full-add-then-clear-expected.txt:
  • web-platform-tests/resource-timing/buffer-full-add-then-clear.html:
  • web-platform-tests/resource-timing/buffer-full-decrease-buffer-during-callback.html:
  • web-platform-tests/resource-timing/buffer-full-increase-buffer-during-callback-expected.txt:
  • web-platform-tests/resource-timing/buffer-full-increase-buffer-during-callback.html:
  • web-platform-tests/resource-timing/buffer-full-inspect-buffer-during-callback-expected.txt:
  • web-platform-tests/resource-timing/buffer-full-inspect-buffer-during-callback.html:
  • web-platform-tests/resource-timing/buffer-full-set-to-current-buffer-expected.txt:
  • web-platform-tests/resource-timing/buffer-full-set-to-current-buffer.html:
  • web-platform-tests/resource-timing/buffer-full-store-and-clear-during-callback-expected.txt:
  • web-platform-tests/resource-timing/buffer-full-store-and-clear-during-callback.html:
  • web-platform-tests/resource-timing/buffer-full-then-increased-expected.txt:
  • web-platform-tests/resource-timing/buffer-full-then-increased.html:
  • web-platform-tests/resource-timing/buffer-full-when-populate-entries-expected.txt:
  • web-platform-tests/resource-timing/buffer-full-when-populate-entries.html:

All these buffer-full tests start failing when I update them.
That is an unrelated bug. Firefox has the same bug, and we had the same bug before and after this change.

  • web-platform-tests/resource-timing/connection-reuse-expected.txt: Added.
  • web-platform-tests/resource-timing/connection-reuse.html: Added.
  • web-platform-tests/resource-timing/connection-reuse.https-expected.txt: Added.
  • web-platform-tests/resource-timing/connection-reuse.https.html: Added.
  • web-platform-tests/resource-timing/cross-origin-start-end-time-with-redirects-expected.txt: Added.
  • web-platform-tests/resource-timing/cross-origin-start-end-time-with-redirects.html: Added.
  • web-platform-tests/resource-timing/cross-origin-status-codes.html:
  • web-platform-tests/resource-timing/document-domain-no-impact-opener-expected.txt: Added.
  • web-platform-tests/resource-timing/document-domain-no-impact-opener.html: Added.
  • web-platform-tests/resource-timing/entry-attributes-expected.txt: Added.
  • web-platform-tests/resource-timing/entry-attributes.html: Added.
  • web-platform-tests/resource-timing/fetch-cross-origin-redirect.https-expected.txt: Added.
  • web-platform-tests/resource-timing/fetch-cross-origin-redirect.https.html: Added.
  • web-platform-tests/resource-timing/font-timestamps-expected.txt: Added.
  • web-platform-tests/resource-timing/font-timestamps.html: Added.
  • web-platform-tests/resource-timing/iframe-failed-commit-expected.txt: Added.
  • web-platform-tests/resource-timing/iframe-failed-commit.html: Added.
  • web-platform-tests/resource-timing/initiator-type-for-script-expected.txt: Added.
  • web-platform-tests/resource-timing/initiator-type-for-script.html: Added.
  • web-platform-tests/resource-timing/nextHopProtocol-is-tao-protected.https-expected.txt: Added.
  • web-platform-tests/resource-timing/nextHopProtocol-is-tao-protected.https.html: Added.
  • web-platform-tests/resource-timing/object-not-found-after-TAO-cross-origin-redirect-expected.txt: Added.
  • web-platform-tests/resource-timing/object-not-found-after-TAO-cross-origin-redirect.html: Added.
  • web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect-expected.txt: Added.
  • web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect.html: Added.
  • web-platform-tests/resource-timing/redirects-expected.txt: Added.
  • web-platform-tests/resource-timing/redirects.html: Added.
  • web-platform-tests/resource-timing/resource-ignore-data-url-expected.txt: Added.
  • web-platform-tests/resource-timing/resource-ignore-data-url.html: Added.
  • web-platform-tests/resource-timing/resource_TAO_cross_origin_redirect_chain-expected.txt:

This apparent regression is actually a progression.
When this test is run from our test infrastructure, Chrome and Firefox fail the same tests that you see now failing here,
indicating that something is wrong with our test infrastructure. When run on wpt.live, all browsers pass this test
after this change.

  • web-platform-tests/resource-timing/resource_cached.html: Added.
  • web-platform-tests/resource-timing/resource_initiator_types.html:
  • web-platform-tests/resource-timing/resource_nested_dedicated_worker.worker.js:

(async_test):
(async_test.async const): Deleted.

  • web-platform-tests/resource-timing/resource_timing_content_length-expected.txt: Added.
  • web-platform-tests/resource-timing/resource_timing_content_length.html: Added.
  • web-platform-tests/resource-timing/resources/200_empty.asis: Added.
  • web-platform-tests/resource-timing/resources/TAOResponse.py:

(main):

  • web-platform-tests/resource-timing/resources/all_resource_types.html: Added.
  • web-platform-tests/resource-timing/resources/buffer-full-utilities.js:

(const.waitForNextTask):
(const.forceBufferFullEvent.async clearBufferAndSetSize):
(const.forceBufferFullEvent):
(const.fillUpTheBufferWithTwoResources.async clearBufferAndSetSize):
(async const.fillUpTheBufferWithSingleResource.async clearBufferAndSetSize):
(async const):
(let.appendScript): Deleted.
(let.waitForNextTask): Deleted.
(let.waitUntilConditionIsMet.cond.return.new.Promise.resolve.let.checkCondition): Deleted.
(let.waitForEventToFire.return.new.Promise): Deleted.
(let.waitForEventToFire): Deleted.
(let.fillUpTheBufferWithTwoResources.async src): Deleted.

  • web-platform-tests/resource-timing/resources/cacheable-and-validated.py: Added.

(main):

  • web-platform-tests/resource-timing/resources/connection-reuse-test.js: Added.

(attribute_test.async client):
(attribute_test):

  • web-platform-tests/resource-timing/resources/csp-default-none.html: Added.
  • web-platform-tests/resource-timing/resources/csp-default-none.html.headers: Added.
  • web-platform-tests/resource-timing/resources/document-domain-no-impact.html: Added.
  • web-platform-tests/resource-timing/resources/document-refreshed.html: Added.
  • web-platform-tests/resource-timing/resources/document-that-refreshes.html: Added.
  • web-platform-tests/resource-timing/resources/embed-refresh.html: Added.
  • web-platform-tests/resource-timing/resources/green-frame.html: Added.
  • web-platform-tests/resource-timing/resources/green.html: Added.
  • web-platform-tests/resource-timing/resources/green.html.headers: Added.
  • web-platform-tests/resource-timing/resources/gzip_xml.py:
  • web-platform-tests/resource-timing/resources/iframe-refresh.html: Added.
  • web-platform-tests/resource-timing/resources/iframe-reload-TAO.sub.html:
  • web-platform-tests/resource-timing/resources/multi_redirect.py:

(main):

  • web-platform-tests/resource-timing/resources/object-refresh.html: Added.
  • web-platform-tests/resource-timing/resources/redirect-cors.py: Added.

(main):

  • web-platform-tests/resource-timing/resources/resource-timing-content-length.py: Added.

(main):

  • web-platform-tests/resource-timing/resources/resource_timing_test0.xml:
  • web-platform-tests/resource-timing/resources/sizes-helper.js: Added.

(const.checkSizeFields):

  • web-platform-tests/resource-timing/resources/status-code.py:

(main):

  • web-platform-tests/resource-timing/resources/webperftestharness.js:

(test_namespace):
(test_attribute_exists):
(test_enum):

  • web-platform-tests/resource-timing/resources/webperftestharnessextension.js:

(test_method_exists):

  • web-platform-tests/resource-timing/same-origin-from-cross-origin-redirect-expected.txt: Added.
  • web-platform-tests/resource-timing/same-origin-from-cross-origin-redirect.html: Added.
  • web-platform-tests/resource-timing/sizes-cache.any.js: Added.

(const.accumulateEntries):
(const.checkResourceSizes.list.let.entry.of.entries.else):
(promise_test):

  • web-platform-tests/resource-timing/sizes-redirect-img-expected.txt: Added.
  • web-platform-tests/resource-timing/sizes-redirect-img.html: Added.
  • web-platform-tests/resource-timing/sizes-redirect.any.js: Added.

(const.accumulateEntry):
(const.checkResourceSizes):
(const.redirectUrl):
(promise_test):

  • web-platform-tests/resource-timing/status-codes-create-entry.html:
  • web-platform-tests/resource-timing/test_resource_timing-expected.txt:
  • web-platform-tests/resource-timing/test_resource_timing.https-expected.txt:
  • web-platform-tests/resource-timing/workerStart-tao-protected.https.html:

Source/WebCore:

We tried hard to do it in the web process by keeping track of whether the last redirect was cross-origin
and checking the final response and original security origin. We got many tests to pass, but to get the rest
and be correct, we need to check the Timing-Allow-Origin header field of each redirect against the original security origin.

Tests: imported/w3c/web-platform-tests/resource-timing/SO-XO-SO-redirect-chain-tao.https.html

imported/w3c/web-platform-tests/resource-timing/TAO-match.html
imported/w3c/web-platform-tests/resource-timing/TAO-null-opaque-origin.html
imported/w3c/web-platform-tests/resource-timing/TAO-port-mismatch-means-crossorigin.html
imported/w3c/web-platform-tests/resource-timing/connection-reuse.html
imported/w3c/web-platform-tests/resource-timing/connection-reuse.https.html
imported/w3c/web-platform-tests/resource-timing/cross-origin-start-end-time-with-redirects.html
imported/w3c/web-platform-tests/resource-timing/document-domain-no-impact-opener.html
imported/w3c/web-platform-tests/resource-timing/entry-attributes.html
imported/w3c/web-platform-tests/resource-timing/fetch-cross-origin-redirect.https.html
imported/w3c/web-platform-tests/resource-timing/font-timestamps.html
imported/w3c/web-platform-tests/resource-timing/iframe-failed-commit.html
imported/w3c/web-platform-tests/resource-timing/initiator-type-for-script.html
imported/w3c/web-platform-tests/resource-timing/nextHopProtocol-is-tao-protected.https.html
imported/w3c/web-platform-tests/resource-timing/object-not-found-after-TAO-cross-origin-redirect.html
imported/w3c/web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect.html
imported/w3c/web-platform-tests/resource-timing/redirects.html
imported/w3c/web-platform-tests/resource-timing/resource-ignore-data-url.html
imported/w3c/web-platform-tests/resource-timing/resource_cached.html
imported/w3c/web-platform-tests/resource-timing/resource_timing_content_length.html
imported/w3c/web-platform-tests/resource-timing/same-origin-from-cross-origin-redirect.html
imported/w3c/web-platform-tests/resource-timing/sizes-redirect-img.html

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::start):
Get a SecurityOrigin for our WebKitLegacy ResourceHandle use like we do in WebLoaderStrategy::scheduleLoadFromNetworkProcess

  • loader/ResourceTiming.cpp:

(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::initServerTiming):
(WebCore::ResourceTiming::isolatedCopy const):
(WebCore::passesTimingAllowCheck): Deleted.

  • loader/ResourceTiming.h:

(WebCore::ResourceTiming::networkLoadMetrics const):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::allowTimingDetails const): Deleted.
(): Deleted.

  • page/PerformanceNavigation.cpp:

(WebCore::PerformanceNavigation::redirectCount const):

  • page/PerformanceNavigationTiming.cpp:

(WebCore::PerformanceNavigationTiming::sameOriginCheckFails const):
(WebCore::PerformanceNavigationTiming::redirectCount const):

  • page/PerformanceResourceTiming.cpp:

(WebCore::entryStartTime):
(WebCore::entryEndTime):
(WebCore::PerformanceResourceTiming::redirectStart const):
(WebCore::PerformanceResourceTiming::redirectEnd const):
(WebCore::PerformanceResourceTiming::domainLookupStart const):
(WebCore::PerformanceResourceTiming::domainLookupEnd const):
(WebCore::PerformanceResourceTiming::connectStart const):
(WebCore::PerformanceResourceTiming::connectEnd const):
(WebCore::PerformanceResourceTiming::secureConnectionStart const):
(WebCore::PerformanceResourceTiming::requestStart const):
(WebCore::PerformanceResourceTiming::responseStart const):
(WebCore::PerformanceResourceTiming::transferSize const):
(WebCore::PerformanceResourceTiming::encodedBodySize const):
(WebCore::PerformanceResourceTiming::decodedBodySize const):

  • page/PerformanceTiming.cpp:

(WebCore::PerformanceTiming::unloadEventStart const):
(WebCore::PerformanceTiming::unloadEventEnd const):
(WebCore::PerformanceTiming::redirectStart const):
(WebCore::PerformanceTiming::redirectEnd const):

  • platform/network/BlobResourceHandle.cpp:

(WebCore::BlobResourceHandle::BlobResourceHandle):

  • platform/network/NetworkLoadMetrics.h:

(WebCore::NetworkLoadMetrics::isolatedCopy const):
(WebCore::NetworkLoadMetrics::operator== const):
(WebCore::NetworkLoadMetrics::encode const):
(WebCore::NetworkLoadMetrics::decode):

  • platform/network/ResourceHandle.cpp:

(WebCore::ResourceHandle::ResourceHandle):
(WebCore::ResourceHandle::create):
(WebCore::ResourceHandle::loadResourceSynchronously):
(WebCore::ResourceHandle::isCrossOriginWithoutTAO const):
(WebCore::ResourceHandle::markAsCrossOriginWithoutTAO):
(WebCore::ResourceHandle::sourceOrigin const):
(WebCore::ResourceHandle::hasCrossOriginRedirect const): Deleted.
(WebCore::ResourceHandle::setHasCrossOriginRedirect): Deleted.

  • platform/network/ResourceHandle.h:
  • platform/network/ResourceHandleInternal.h:

(WebCore::ResourceHandleInternal::ResourceHandleInternal):

  • platform/network/TimingAllowOrigin.cpp: Added.

(WebCore::passesTimingAllowOriginCheck):

  • platform/network/TimingAllowOrigin.h: Added.
  • platform/network/cocoa/NetworkLoadMetrics.mm:

(WebCore::packageTimingData):
(WebCore::copyTimingData):

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::ResourceHandle::platformLoadResourceSynchronously):

  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:

(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):

Source/WebKit:

  • NetworkProcess/NetworkLoadParameters.h:
  • NetworkProcess/NetworkResourceLoadParameters.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::sendReplyToSynchronousRequest):
Pass complete metrics with sync xhr responses. Many of the tests use sync xhr.
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::didFailLoading):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):

Source/WebKitLegacy:

  • WebCoreSupport/PingHandle.h:
  • WebCoreSupport/WebResourceLoadScheduler.cpp:

(WebResourceLoadScheduler::loadResourceSynchronously):

LayoutTests:

4:26 PM Changeset in webkit [278737] by achristensen@apple.com
  • 6 edits in trunk

Origin is null in http requests when baseURL has custom scheme on iOS 15.0
https://bugs.webkit.org/show_bug.cgi?id=226760
Source/WebCore:

<rdar://79027280>

Reviewed by Chris Dumez.

This fixes a regression from r272469 where I made two mistakes.

  1. I made schemes handled by a WKURLSchemeHandler able to create non-null origins to increase compatibility.

I forgot that one can also call loadHTMLString and pass a baseURL that can be a custom scheme.
In this case, the custom scheme is also treated as the "origin" so it should be non-null.

  1. When updateRequestForAccessControl is called in the Network Process, it uses SecurityOrigins that have been

serialized and deserialized then passed through the SecurityOrigin constructor, which doesn't know about the
registry of custom schemes that are handled for that WKWebView and may deserialize to a different (null) origin.
We want to deserialize the origin having been made with the rules of SecurityOrigins in the Web Process, so
set its data to be the same as the serialized data.

I added a unit test to prevent future regression.

  • page/SecurityOrigin.h:

(WebCore::SecurityOrigin::decode):

Source/WebKit:

Reviewed by Chris Dumez.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadData):

Tools:

Reviewed by Chris Dumez.

  • TestWebKitAPI/Tests/WebKitCocoa/LoadAlternateHTMLString.mm:

(TEST):

4:10 PM Changeset in webkit [278736] by Ryan Haddad
  • 6 edits
    1 add in trunk

AX: TestWebKitAPI.WebKit.AccessibilityReduceMotion failing on iOS
https://bugs.webkit.org/show_bug.cgi?id=226758
<rdar://problem/78984253>

Patch by Chris Fleizach <Chris Fleizach> on 2021-06-10
Reviewed by Alex Christensen.

Source/WebKit:

For releases that don't have the accessibility update method, the direct setters need to be called
in order to update the cache.

  • Platform/spi/Cocoa/AccessibilitySupportSPI.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::increaseContrastPreferenceKey):
(WebKit::setPreferenceValue):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/AccessibilityIncreaseContrast.mm: Added.

(-[WKPreferenceObserverForTestingIncreaseContrast preferenceDidChange:key:encodedValue:]):
(TEST):

3:19 PM Changeset in webkit [278735] by Ruben Turcios
  • 3 edits in branches/safari-612.1.18-branch/Source/WebKit

Cherry-pick r278727. rdar://problem/79161529

REGRESSION (r277820): Trackpad interaction in Web Content is not working on iOS or macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=226892
<rdar://79080057>

Patch by Tim Horton <timothy_horton@apple.com> on 2021-06-10
Reviewed by Wenson Hsieh.

  • UIProcess/ios/WKMouseGestureRecognizer.h:
  • UIProcess/ios/WKMouseGestureRecognizer.mm: Stop inheriting from UIHoverGestureRecognizer; since r277820 removed our override of _shouldReceiveTouch, and the default implementation always says NO, r277820 broke trackpad-origiating mouse events (but left hover working, since that is not a touch).

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

2:54 PM Changeset in webkit [278734] by keith_miller@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Shouldn't drain the micro task queue when calling out to ObjC
https://bugs.webkit.org/show_bug.cgi?id=161942

Reviewed by Saam Barati.

It looks like the issue is that we aren't checking for the
presence of dropped locks when deciding to drain microtasks during
JSLock::unlock. This meant that when we drop all locks when
calling out to API clients we would drain our microtasks at that
point. An alternative would be to pass an extra parameter to the
unlock function that says not to drain microtasks. I chose not to
do that since it seemed a bit less robust.

This patch is very likely to break existing API users. So I'm adding
a linked on or after check to protect existing Apps.

Lastly, change our Poker Bros check to use applicationSDKVersion too
so others trying to add a linked on or after check don't use
the dyld function directly too.

  • API/tests/testapi.cpp:

(TestAPI::promiseDrainDoesNotEatExceptions):
(testCAPIViaCpp):

  • API/tests/testapi.mm:

(testMicrotaskWithFunction):
(testObjectiveCAPI):

  • runtime/JSLock.cpp:

(JSC::JSLock::willReleaseLock):

  • runtime/ObjectPrototype.cpp:

(JSC::isPokerBros):

  • runtime/VM.cpp:

(JSC::VM::didExhaustMicrotaskQueue):

2:19 PM Changeset in webkit [278733] by Cameron McCormack
  • 3 edits
    4 copies
    4 adds
    1 delete in trunk/LayoutTests

Move some Mac MathML test expectation files around
https://bugs.webkit.org/show_bug.cgi?id=226868
<rdar://78786837>

Reviewed by Frédéric Wang.

This should give better forward compatibility for Mac platforms, by
making the mac/ directory the default correct one, and the
mac-catalina/ and mac-mojave/ ones be exceptions.

  • platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Removed.
  • platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Removed.
  • platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Copied from LayoutTests/platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt.
  • platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Copied from LayoutTests/platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt.
  • platform/mac-mojave/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Copied from LayoutTests/platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt.
  • platform/mac-mojave/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Copied from LayoutTests/platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt:
2:11 PM Changeset in webkit [278732] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitcorepy] 6x performance improvement in Memoized
https://bugs.webkit.org/show_bug.cgi?id=226891
<rdar://problem/79151940>

Reviewed by Stephanie Lewis.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/decorators.py:

(Memoize.call.decorator): inspect.getargspec retrieves many bits of
information about the function we don't care about. Retrieve arguments manually
(and only do it once) to increase performance of Memoized function calls.

2:03 PM Changeset in webkit [278731] by Aditya Keerthi
  • 5 edits in trunk/Source/WebKit

[iOS] VinylWall app crashes when tapping on 'format' dropdown menu in 'Add Record' menu
https://bugs.webkit.org/show_bug.cgi?id=226886
<rdar://problem/77207322>

Reviewed by Tim Horton.

The VinylWall app contains a WKWebView, and uses <select> to let users
choose options. With the new form controls on iOS, tapping on a <select>
presents a UIContextMenuInteraction, rather than a picker wheel or
popover. However, UIContextMenuInteraction is not supported on apps
linked against an SDK older than iOS 14, resulting in this crash.

To fix, perform a linked-on-or-after check before showing the new UI
for <select> and <input type=text> with a <datalist>. If the check
fails, fallback to the old UI. We already have this check in place for
other context menus in -[WKContentView _shouldUseContextMenus], so we
reuse that method.

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

(-[WKContentView _shouldShowAutomaticKeyboardUIIgnoringInputMode]):
(-[WKContentView _elementTypeRequiresAccessoryView:]):
(-[WKContentView _shouldUseContextMenusForFormControls]):

  • UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:

(WebKit::WebDataListSuggestionsDropdownIOS::show):

  • UIProcess/ios/forms/WKFormSelectControl.mm:

(-[WKFormSelectControl initWithView:]):

1:56 PM Changeset in webkit [278730] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[Cairo] Fix Path::boundingRectSlowCase when the path is a single MoveTo
https://bugs.webkit.org/show_bug.cgi?id=226613

Cairo says there is no bounding rectangle in this case, whereas the SVG
standard says there it should be a zero-size rectangle at the moved-to
point. This fixes the recently added test
fast/svg/bounding-rect-for-path-with-only-move-command.html

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-06-10
Reviewed by Fujii Hironori.

  • platform/graphics/cairo/PathCairo.cpp:

(WebCore::Path::boundingRectSlowCase const):

1:53 PM Changeset in webkit [278729] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Fix incorrect check in AudioNode.disconnect()
https://bugs.webkit.org/show_bug.cgi?id=226818
<rdar://problem/79076999>

Reviewed by Eric Carlson.

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::disconnect):

1:50 PM Changeset in webkit [278728] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[MSE] When currentTime is a large value, it takes time to process SourceBufferPrivate::evictCodedFrames().
https://bugs.webkit.org/show_bug.cgi?id=226867

Patch by Toshio Ogasawara <toshio.ogasawara@access-company.com> on 2021-06-10
Reviewed by Eric Carlson.

Source/WebCore:

SourceBufferPrivate::evictCodedFrames() now starts with the earliest PTS value
in trackBuffer instead of MediaTime::zeroTime() to avoid unnecessary loops.

Test: media/media-source/media-source-evict-codedframe-large-currenttime.html

  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::evictCodedFrames):

LayoutTests:

  • media/media-source/media-source-evict-codedframe-large-currenttime-expected.txt: Added.
  • media/media-source/media-source-evict-codedframe-large-currenttime.html: Added.
1:47 PM Changeset in webkit [278727] by Ryan Haddad
  • 3 edits in trunk/Source/WebKit

REGRESSION (r277820): Trackpad interaction in Web Content is not working on iOS or macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=226892
<rdar://79080057>

Patch by Tim Horton <timothy_horton@apple.com> on 2021-06-10
Reviewed by Wenson Hsieh.

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

Stop inheriting from UIHoverGestureRecognizer; since r277820
removed our override of _shouldReceiveTouch, and the default implementation
always says NO, r277820 broke trackpad-origiating mouse events (but
left hover working, since that is not a touch).

1:17 PM Changeset in webkit [278726] by don.olmstead@sony.com
  • 4 edits in trunk/Source/ThirdParty/ANGLE

[CMake] Make ANGLE library types configurable
https://bugs.webkit.org/show_bug.cgi?id=226840

Reviewed by Kenneth Russell.

The type for ANGLE's libraries was being hard coded. Now the libraries can be set by
specifying the _LIBRARY_TYPE which defaults to STATIC. Windows platforms override this
and use SHARED libraries.

Additionally make compiling ANGLE's EGL library contingent on USE_ANGLE_EGL being enabled
since its not used otherwise.

  • CMakeLists.txt:
  • PlatformFTW.cmake:
  • PlatformWin.cmake:
1:13 PM Changeset in webkit [278725] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Skip tiled-drawing/scrolling/non-fast-region/wheel-event-plugin.html for arm64
https://bugs.webkit.org/show_bug.cgi?id=226896

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
12:43 PM Changeset in webkit [278724] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.4.4

Tag Safari-612.1.15.4.4.

12:42 PM Changeset in webkit [278723] by Russell Epstein
  • 2 edits in branches/safari-612.1.15.4-branch/Source/JavaScriptCore

Cherry-pick r278711. rdar://problem/79147214

Another speculative build fix for Win32.
https://bugs.webkit.org/show_bug.cgi?id=226880
rdar://79124858

Reviewed by Keith Miller.

We're getting reports of "warning C4206: nonstandard extension used: translation
unit is empty" turning into a build error on Win32 ports. By design, we rely on
#define flags to make some translation units empty. Hence, we don't want this
warning to turn into an error.

  • config.h:

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

12:41 PM Changeset in webkit [278722] by Russell Epstein
  • 8 edits in branches/safari-612.1.15.4-branch/Source

Versioning.

WebKit-7612.1.15.4.4

12:40 PM Changeset in webkit [278721] by Russell Epstein
  • 1 delete in tags/Safari-612.1.15.4.4

Delete tag.

12:39 PM Changeset in webkit [278720] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.4.4

Tag Safari-612.1.15.4.4.

12:24 PM Changeset in webkit [278719] by commit-queue@webkit.org
  • 5 edits in trunk

[WPE] Enable Cog for developer builds
https://bugs.webkit.org/show_bug.cgi?id=224360

Patch by Philippe Normand <pnormand@igalia.com> on 2021-06-10
Reviewed by Adrian Perez de Castro.

.:

Cog would be preferred over MiniBrowser for WPE developer builds because it provides a nicer
user experience, while keeping the same spirit as MiniBrowser. Pass -DENABLE_COG=NO to
CMake to disable it and fall back to MiniBrowser.

  • Source/cmake/OptionsWPE.cmake:

Tools:

  • PlatformWPE.cmake: Enable X11 support in Cog. Re-enable headless support in Cog. Map

libsoup configuration in Cog with the one used by the WebKit build.

12:08 PM Changeset in webkit [278718] by Andres Gonzalez
  • 11 edits in trunk/Source/WebCore

iOS - VoiceOver reads the programmatically associated label instead of the accessible name provided via the aria-label or aria-labelledby attribute
https://bugs.webkit.org/show_bug.cgi?id=226534
rdar://65935211

Reviewed by Chris Fleizach.

The problem is due to VoiceOver retrieving the titleUIElement for the
given object, and using the label of that title element as the label of
the object in question. The solution in this patch is to only return a
title element if the object can have title elements (if exposesTitleUIElement
is true). This check was missing in AccessibilityRenderObject::titleUIElement.

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::exposesTitleUIElement const):
This method is no longer necessary in the AXCoreObject interface,
instead is a virtual in the AXObject class hierarchy.

  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::titleUIElement const):
Checks whether this object can have a title element.

(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored const):
(WebCore::AccessibilityRenderObject::accessibilityHitTest const):

  • accessibility/AccessibilityRenderObject.h:
  • accessibility/atk/WebKitAccessibleUtil.cpp:

(accessibilityTitle):

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
No need to cache this value any more.

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/AXIsolatedTree.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

  • accessibility/win/AccessibilityObjectWrapperWin.cpp:

(WebCore::AccessibilityObjectWrapper::accessibilityAttributeValue):

12:02 PM Changeset in webkit [278717] by Ben Nham
  • 18 edits
    3 adds in trunk

Only cache GET requests in the memory cache
https://bugs.webkit.org/show_bug.cgi?id=226359

Reviewed by Geoff Garen.

Source/WebCore:

Test: http/tests/cache/memory-cache-only-caches-get.html

We only cache GET requests at the disk cache level, but we don't have that same restriction
at the memory cache level. We should make the policies match. In particular, in long-running
webpages, we're accumulating POSTs from XMLHttpRequests in our memory cache and should stop
doing that, since POST response caching is generally not used or expected.

I also changed InspectorInstrumentation::willSendRequest to take an optional CachedResource
parameter because it currently uses InspectorPageAgent::cachedResource to find the resource,
which in turn expects to find the resource in the memory cache. That doesn't work anymore
for these non-GET requests, so we now pass down the CachedResource explicitly in the cases
where that's necessary.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::willSendRequestImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::willSendRequest):

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::resourceTypeForCachedResource):
(WebCore::InspectorNetworkAgent::willSendRequest):

  • inspector/agents/InspectorNetworkAgent.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::tryLoadingSubstituteData):
(WebCore::DocumentLoader::addSubresourceLoader):
(WebCore::DocumentLoader::loadMainResource):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::requestFromDelegate):

  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::willSendRequest):
(WebCore::ResourceLoadNotifier::dispatchWillSendRequest):

  • loader/ResourceLoadNotifier.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::willSendRequestInternal):

  • loader/ResourceLoader.h:

(WebCore::ResourceLoader::cachedResource const):

  • loader/SubresourceLoader.cpp:
  • loader/SubresourceLoader.h:
  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::update):
(WebCore::ApplicationCacheGroup::startLoadingEntry):

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::add):

LayoutTests:

Added tests to make sure only GETs end up in the memory cache.

Also fixed a flaky test that was depending on a POST response in an iframe to be in the
memory cache when doing a history navigation.

  • http/tests/cache/memory-cache-only-caches-get-expected.txt: Added.
  • http/tests/cache/memory-cache-only-caches-get.html: Added.
  • http/tests/cache/resources/echo-cacheable.cgi: Added.
  • http/tests/navigation/post-frames-goback1.html:
  • platform/mac/TestExpectations:
11:54 AM Changeset in webkit [278716] by Chris Dumez
  • 5 edits in trunk/Source

Do some hardening in XPCServiceEventHandler()
https://bugs.webkit.org/show_bug.cgi?id=226860
<rdar://66837596>

Reviewed by Geoffrey Garen.

Do some hardening in XPCServiceEventHandler() to deal with unexpected values and add
some more logging as well.

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:

(WebKit::XPCServiceEventHandler):

  • WebProcess/cocoa/HandleXPCEndpointMessages.h:
  • WebProcess/cocoa/HandleXPCEndpointMessages.mm:

(WebKit::handleXPCEndpointMessages):

11:53 AM Changeset in webkit [278715] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKitLegacy/mac

Re-enable legacy WebView plug-ins (but not NPAPI)
https://bugs.webkit.org/show_bug.cgi?id=226890
<rdar://79075349>

Reviewed by Tim Horton.

In r276720 I put the check in the wrong place.
This should also fix rdar://77179042 again, which I broke, fixed, broke, and am now fixing again.

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::createPlugin):

11:53 AM Changeset in webkit [278714] by Chris Dumez
  • 11 edits
    1 delete in trunk/Source/WebCore

Replace ReadableStreamChunk struct with a WTF::Span
https://bugs.webkit.org/show_bug.cgi?id=226879

Reviewed by Alex Christensen.

Replace ReadableStreamChunk struct with a WTF::Span now that we support
Span and they are essentially the same thing.

  • Headers.cmake:
  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::addAll):
(WebCore::DOMCache::put):

  • Modules/fetch/FetchBodyConsumer.cpp:

(WebCore::FetchBodyConsumer::resolve):

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::BodyLoader::didReceiveData):
(WebCore::FetchResponse::BodyLoader::consumeDataByChunk):

  • Modules/fetch/FetchResponse.h:
  • Modules/streams/ReadableStreamChunk.h: Removed.
  • Modules/streams/ReadableStreamSink.cpp:

(WebCore::ReadableStreamToSharedBufferSink::enqueue):

  • Modules/streams/ReadableStreamSink.h:
  • WebCore.xcodeproj/project.pbxproj:
  • workers/service/context/ServiceWorkerFetch.cpp:
11:26 AM Changeset in webkit [278713] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: (r278650 - r278655) service-workers/service-worker/credentials.https.html and content-security-policy/reporting/report-only-in-meta.sub.html failing together constantly.
https://bugs.webkit.org/show_bug.cgi?id=226884

Unreviewed test gardening.

11:11 AM Changeset in webkit [278712] by Chris Dumez
  • 10 edits in trunk/Source

Enable WebPage's release logging in ephemeral sessions
https://bugs.webkit.org/show_bug.cgi?id=226510

Reviewed by Eric Carlson.

Enable WebPage's release logging in ephemeral sessions. Our release logging doesn't contain
anything sensitive and not having this logging makes it hard to debug issues in apps using
ephemeral sessions.

Source/WebCore:

  • Modules/applepay/PaymentCoordinator.cpp:

(WebCore::PaymentCoordinator::supportsVersion const):
(WebCore::PaymentCoordinator::canMakePayments):
(WebCore::PaymentCoordinator::canMakePaymentsWithActiveCard):
(WebCore::PaymentCoordinator::openPaymentSetup):
(WebCore::PaymentCoordinator::beginPaymentSession):
(WebCore::PaymentCoordinator::completeMerchantValidation):
(WebCore::PaymentCoordinator::completeShippingMethodSelection):
(WebCore::PaymentCoordinator::completeShippingContactSelection):
(WebCore::PaymentCoordinator::completePaymentMethodSelection):
(WebCore::PaymentCoordinator::completePaymentMethodModeChange):
(WebCore::PaymentCoordinator::completePaymentSession):
(WebCore::PaymentCoordinator::abortPaymentSession):
(WebCore::PaymentCoordinator::cancelPaymentSession):
(WebCore::PaymentCoordinator::validateMerchant):
(WebCore::PaymentCoordinator::didAuthorizePayment):
(WebCore::PaymentCoordinator::didSelectPaymentMethod):
(WebCore::PaymentCoordinator::didSelectShippingMethod):
(WebCore::PaymentCoordinator::didSelectShippingContact):
(WebCore::PaymentCoordinator::didChangePaymentMethodMode):
(WebCore::PaymentCoordinator::didCancelPaymentSession):
(WebCore::PaymentCoordinator::shouldEnableApplePayAPIs const):
(WebCore::PaymentCoordinator::setApplePayIsActiveIfAllowed const):
(WebCore::PaymentCoordinator::shouldAllowUserAgentScripts const):
(WebCore::PaymentCoordinator::getSetupFeatures):
(WebCore::PaymentCoordinator::beginApplePaySetup):
(WebCore::PaymentCoordinator::endApplePaySetup):

  • Modules/applepay/PaymentCoordinatorClient.h:
  • testing/MockPaymentCoordinator.h:

Source/WebKit:

  • WebProcess/ApplePay/WebPaymentCoordinator.cpp:
  • WebProcess/ApplePay/WebPaymentCoordinator.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_lastNavigationWasAppBound):
(WebKit::WebPage::close):
(WebKit::WebPage::freezeLayerTree):
(WebKit::WebPage::unfreezeLayerTree):
(WebKit::WebPage::layerVolatilityTimerFired):
(WebKit::WebPage::markLayersVolatile):
(WebKit::WebPage::cancelMarkLayersVolatile):
(WebKit::WebPage::touchEventSync):
(WebKit::WebPage::didReceivePolicyDecision):
(WebKit::WebPage::setIsTakingSnapshotsForApplicationSuspension):
(WebKit::WebPage::suspend):
(WebKit::WebPage::resume):
(WebKit::WebPage::runJavaScript):
(WebKit::WebPage::runJavaScriptInFrameInScriptWorld):
(WebKit::WebPage::updatePreferences):
(WebKit::WebPage::registerURLSchemeHandler):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPositionInformation):

10:18 AM Changeset in webkit [278711] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Another speculative build fix for Win32.
https://bugs.webkit.org/show_bug.cgi?id=226880
rdar://79124858

Reviewed by Keith Miller.

We're getting reports of "warning C4206: nonstandard extension used: translation
unit is empty" turning into a build error on Win32 ports. By design, we rely on
#define flags to make some translation units empty. Hence, we don't want this
warning to turn into an error.

  • config.h:
10:06 AM Changeset in webkit [278710] by youenn@apple.com
  • 7 edits in trunk

CountQueuingStrategy.constructor misses checking the type of init param
https://bugs.webkit.org/show_bug.cgi?id=226759

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/streams/queuing-strategies.any-expected.txt:
  • web-platform-tests/streams/queuing-strategies.any.worker-expected.txt:

Source/WebCore:

Now that streams are WebIDLed, add related parameter type checks.
Covered by rebased tests.

  • Modules/streams/CountQueuingStrategy.js:

(initializeCountQueuingStrategy):

LayoutTests:

  • streams/shadowing-defineProperty.html:
10:02 AM Changeset in webkit [278709] by Truitt Savell
  • 3 edits in trunk/Tools

Remove Ews179 and bot279 from configs
https://bugs.webkit.org/show_bug.cgi?id=226855

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/config.json:
  • CISupport/ews-build/config.json:
9:56 AM Changeset in webkit [278708] by Russell Epstein
  • 7 edits in branches/safari-611-branch

Cherry-pick r278177. rdar://problem/79144899

Increase NumberToStringBuffer to account for negative number
https://bugs.webkit.org/show_bug.cgi?id=226014

Patch by Mikhail R. Gadelha <mikhail.ramalho@gmail.com> on 2021-05-27
Reviewed by Robin Morisset.

In r250389, NumberToStringBuffer length was increased from 96 to 123 because:

<21 digits> + decimal point + <100 digits> + null char = 123.

however,

a = -100000000000000000000
a.toFixed(100)

is a valid conversion and it is 124 chars long, because of the "-" sign.

So this patch increases the length of NumberToStringBuffer to 124 and adds new
test cases.

Source/WTF:

Reviewed by Ryosuke Niwa.

  • wtf/dtoa.h:

LayoutTests:

  • js/dom/number-tofixed-expected.txt:
  • js/dom/script-tests/number-tofixed.js:
  • js/kde/Number-expected.txt:
  • js/kde/script-tests/Number.js:

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

9:55 AM Changeset in webkit [278707] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r278166. rdar://problem/79144884

Pass frame ref during navigationPolicyCompletionHandler
https://bugs.webkit.org/show_bug.cgi?id=226268
<rdar://problem/78512383>

Reviewed by Ryosuke Niwa.

Pass the active frame to the navigationPolicyCompletionHandler lambda as a Ref to
ensure it is kept alive during the policy check and subsequent steps.

  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::willSendRequest):

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

9:52 AM Changeset in webkit [278706] by Russell Epstein
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.3.8

9:41 AM Changeset in webkit [278705] by commit-queue@webkit.org
  • 4 edits
    4 copies
    2 moves in trunk

Treat intrinsic like *-content
https://bugs.webkit.org/show_bug.cgi?id=226790

Patch by Rob Buis <rbuis@igalia.com> on 2021-06-10
Reviewed by Sergio Villar Senin.

Source/WebCore:

Treat intrinsic like *-content for intrinsic logical
content calculations.

Tests: fast/flexbox/intrinsic-width-column-flow-crash.html

fast/flexbox/intrinsic-width-crash.html
fast/flexbox/min-intrinsic-width-crash.html

  • platform/Length.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeIntrinsicLogicalContentHeightUsing const):
(WebCore::RenderBox::computeContentAndScrollbarLogicalHeightUsing const):

LayoutTests:

Add tests for intrinsic and min-intrinsic and move relevant tests to fast/flexbox.

  • fast/flexbox/intrinsic-width-column-flow-crash-expected.txt: Copied from LayoutTests/fast/css/flex-box-intrinsic-width-crash-expected.txt.
  • fast/flexbox/intrinsic-width-column-flow-crash.html: Copied from LayoutTests/fast/css/flex-box-intrinsic-width-crash.html.
  • fast/flexbox/intrinsic-width-crash-expected.txt: Copied from LayoutTests/fast/css/flex-box-intrinsic-width-crash-expected.txt.
  • fast/flexbox/intrinsic-width-crash.html: Copied from LayoutTests/fast/css/flex-box-intrinsic-width-crash.html.
  • fast/flexbox/min-intrinsic-width-crash-expected.txt: Renamed from LayoutTests/fast/css/flex-box-intrinsic-width-crash-expected.txt.
  • fast/flexbox/min-intrinsic-width-crash.html: Renamed from LayoutTests/fast/css/flex-box-intrinsic-width-crash.html.
9:20 AM Changeset in webkit [278704] by achristensen@apple.com
  • 2 edits in trunk/LayoutTests

Mark a navigation timing test as flaky
https://bugs.webkit.org/show_bug.cgi?id=226629

8:15 AM Changeset in webkit [278703] by Ruben Turcios
  • 1 copy in branches/safari-612.1.18-branch

New branch.

8:08 AM Changeset in webkit [278702] by Chris Dumez
  • 36 edits in trunk/Source

Fix some inefficient uses of SharedBuffer
https://bugs.webkit.org/show_bug.cgi?id=226857

Reviewed by Darin Adler.

Fix some inefficient uses of SharedBuffer:

  • Avoid calling SharedBuffer::data() whenever possible since this function may have to combine internal segments of SharedBuffer. Added a convenience function on SharedBuffer (forEachSegment()) to get the data pointer / size of each segment.
  • Avoid some unnecessary construction of SharedBuffer simply to get a Vector. We should construct the Vector directly in such cases. I dropped the Blob factory that took in a SharedBuffer as it was inefficient and frequently called instead of the more efficient factory that takes in a Vector<uint8_t>.
  • Add convenience functions to SharedBuffer that return a Vector, including one named takeData() that avoids copying the data.
  • Add convenience functions to SharedBuffer for doing a prefix check or copying to a destination pointer.
  • Modules/async-clipboard/ClipboardItem.cpp:

(WebCore::ClipboardItem::blobFromString):

  • Modules/async-clipboard/ios/ClipboardImageReaderIOS.mm:

(WebCore::ClipboardImageReader::readBuffer):

  • Modules/async-clipboard/mac/ClipboardImageReaderMac.mm:

(WebCore::ClipboardImageReader::readBuffer):

  • Modules/fetch/FetchBodyConsumer.cpp:

(WebCore::blobFromData):
(WebCore::packageFormData):
(WebCore::resolveWithTypeAndData):
(WebCore::FetchBodyConsumer::takeAsBlob):

  • Modules/indexeddb/IDBGetResult.cpp:
  • Modules/indexeddb/IDBGetResult.h:
  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::createDataAvailableEvent):

  • Modules/mediastream/RTCDataChannel.cpp:

(WebCore::RTCDataChannel::didReceiveRawData):

  • editing/WebCorePasteboardFileReader.cpp:

(WebCore::WebCorePasteboardFileReader::readBuffer):

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::createFragmentForImageAttachment):
(WebCore::replaceRichContentWithAttachments):
(WebCore::createFragmentAndAddResources):
(WebCore::sanitizeMarkupWithArchive):
(WebCore::WebContentReader::readImage):
(WebCore::attachmentForData):

  • editing/gtk/WebContentReaderGtk.cpp:

(WebCore::WebContentReader::readImage):

  • fileapi/Blob.cpp:
  • fileapi/Blob.h:
  • fileapi/NetworkSendQueue.cpp:

(WebCore::NetworkSendQueue::processMessages):

  • html/HTMLAttachmentElement.cpp:

(WebCore::HTMLAttachmentElement::updateEnclosingImageWithData):

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::didReceiveResponse):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::continueAfterContentPolicy):

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::didFinishLoading):
(WebCore::DocumentThreadableLoader::loadRequest):

  • loader/NetscapePlugInStreamLoader.cpp:

(WebCore::NetscapePlugInStreamLoader::didReceiveDataOrBuffer):

  • loader/ResourceCryptographicDigest.cpp:

(WebCore::cryptographicDigestForSharedBuffer):

  • loader/ResourceCryptographicDigest.h:
  • loader/SubresourceIntegrity.cpp:

(WebCore::matchIntegrityMetadata):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::didFinishLoadingManifest):

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::writeDataToUniqueFileInDirectory):

  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::didAddClient):

  • loader/icon/IconLoader.cpp:

(WebCore::IconLoader::notifyFinished):

  • platform/SharedBuffer.cpp:

(WebCore::combineSegmentsData):
(WebCore::SharedBuffer::combineIntoOneSegment const):
(WebCore::SharedBuffer::data const):
(WebCore::SharedBuffer::takeData):
(WebCore::SharedBuffer::toHexString const):
(WebCore::SharedBuffer::forEachSegment const):
(WebCore::SharedBuffer::startsWith const):
(WebCore::SharedBuffer::copyTo const):

  • platform/SharedBuffer.h:
  • platform/cf/SharedBufferCF.cpp:

(WebCore::SharedBuffer::createCFData const):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemBuffer::append):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::dataChanged):

  • workers/ScriptBuffer.cpp:

(WebCore::ScriptBuffer::toString const):

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createResponseBlob):

7:38 AM Changeset in webkit [278701] by youenn@apple.com
  • 1880 edits
    2 moves
    465 adds
    118 deletes in trunk

Update libwebrtc to M92
https://bugs.webkit.org/show_bug.cgi?id=226494

LayoutTests/imported/w3c:

Reviewed by Eric Carlson.

  • web-platform-tests/webrtc/datachannel-emptystring-expected.txt:
  • web-platform-tests/webrtc/protocol/rtp-payloadtypes-expected.txt:
  • web-platform-tests/webrtc/protocol/unknown-mediatypes-expected.txt:
  • web-platform-tests/webrtc/receiver-track-live.https-expected.txt:

Source/ThirdParty/libwebrtc:

Reviewed by Eric Carlson.

  • CMakeLists.txt:
  • Source/webrtc: Resynced.
  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Reviewed by Eric Carlson.

Covered by existing tests.

  • Configurations/WebCore.xcconfig:
  • Configurations/WebCoreTestSupport.xcconfig:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:

(WebCore::LibWebRTCRtpReceiverBackend::createSource):

  • Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:

(WebCore::fillInboundRtpStreamStats):
(WebCore::fillOutboundRtpStreamStats):
(WebCore::fillRTCIceCandidateStats):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::LibWebRTCProvider::signalingThread):
(WebCore::LibWebRTCProvider::createPeerConnectionFactory):
(WebCore::LibWebRTCProvider::setPeerConnectionFactory):
(WebCore::LibWebRTCProvider::createPeerConnection):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • testing/MockLibWebRTCPeerConnection.cpp:

(WebCore::createConnection):
(WebCore::MockLibWebRTCPeerConnectionFactory::CreatePeerConnectionOrError):

  • testing/MockLibWebRTCPeerConnection.h:

LayoutTests:

Reviewed by Eric Carlson.

  • webrtc/receiver-track-should-stay-live-even-if-receiver-is-inactive.html:

Update test since the backend is now fixed.

6:39 AM Changeset in webkit [278700] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

ASSERT NOT REACHED in webcore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree()
https://bugs.webkit.org/show_bug.cgi?id=226866
<rdar://problem/79120482>

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:34 AM Changeset in webkit [278699] by ysuzuki@apple.com
  • 6 edits in trunk

[JSC] Remove useDataICInOptimizingJIT option
https://bugs.webkit.org/show_bug.cgi?id=226862

Reviewed by Mark Lam.

Source/JavaScriptCore:

Originally this option is added to fix performance problem when using DataIC in DFG / FTL.
But it turned out that that performance regression was caused due to disablement of InlineAccess when
using DataIC. With the configuration using DataIC and InlineAccess, we do not observe performance regression.
So, let's just drop this option.

  • jit/JITCode.h:

(JSC::JITCode::useDataIC):

  • runtime/Options.cpp:

(JSC::Options::recomputeDependentOptions):

  • runtime/OptionsList.h:

Tools:

  • Scripts/run-jsc-stress-tests:
1:36 AM Changeset in webkit [278698] by Adrian Perez de Castro
  • 22 edits in trunk/Source

Non-unified build fixes, early May 2021 edition
https://bugs.webkit.org/show_bug.cgi?id=226763

Unreviewed non-unified build fixes.

Source/JavaScriptCore:

  • bytecode/InlineAccess.h: Add missing forward declaration for the CodeBlock type.
  • jit/JITInlineCacheGenerator.cpp: Add missing CCallHelpers.h header.
  • runtime/Intrinsic.h: Add missing <optional> header.
  • yarr/YarrUnicodeProperties.h: Ditto.

Source/WebCore:

  • css/calc/CSSCalcValue.cpp: Add missing CSSCalcSymbolTable.h header.
  • layout/formattingContexts/inline/text/TextUtil.h: Add missing forward declaration for

InlineTextBox class.

  • loader/MixedContentChecker.h: Add missing <optional> header.
  • page/FrameSnapshotting.cpp: Remove unneeded inclusion of DestinationColorSpace.h and

wtf/OptionSet.h headers.

  • page/FrameSnapshotting.h: Add mission DestinationColorSpace.h and wtf/OptionSet.h headers,

remove now unneeded wtf/Forward.h heeder and forward declaration for the
DestinationColorSpace class.

  • platform/DateComponents.h: Add missing <optional> header, remove unneeded <limits> header.
  • platform/Theme.h: Add missin <optional> header.
  • platform/graphics/HEVCUtilities.h: Ditto.
  • rendering/HighlightData.h: Add missing forward declaration for the RenderText class.
  • rendering/MarkedText.cpp: Add missing HighlightData.h header.
  • rendering/RenderLineBoxList.cpp: Add missing inclusion of the LegacyInlineElementBox.h

header.

  • style/StyleAdjuster.cpp: Add missing ShadowRoot.h header.
  • svg/SVGToOTFFontConversion.h: Add missing <optional> header.
  • workers/service/ServiceWorkerClientQueryOptions.h: Ditto.

Source/WebKit:

  • Shared/WebPageNetworkParameters.cpp: Add missing inclusion of the ArgumentCoders.h header.
1:06 AM Changeset in webkit [278697] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Ignore Intl.NumberFormat feature options when linked-ICU is old
https://bugs.webkit.org/show_bug.cgi?id=226861
rdar://77393100

Reviewed by Ross Kirsling.

Let's just ignore the option when Intl.NumberFormat features cannot be implemented since the linked ICU is old.
There is no way not to expose these features since Intl.NumberFormat's these changes are additional ones and Intl.NumberFormat existed before.

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::initializeNumberFormat):

Note: See TracTimeline for information about the timeline view.