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

Timeline



Apr 1, 2021:

11:12 PM Changeset in webkit [275406] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r275387.
https://bugs.webkit.org/show_bug.cgi?id=224094

IOKit method list not complete

Reverted changeset:

"Add IOKit method filter telemetry"
https://bugs.webkit.org/show_bug.cgi?id=223652
https://trac.webkit.org/changeset/275387

10:10 PM Changeset in webkit [275405] by Cameron McCormack
  • 2 edits in trunk/Source/WebCore

Remove redundant #if in RuntimeApplicationChecks.h.
https://bugs.webkit.org/show_bug.cgi?id=224037

Reviewed by Alexey Proskuryakov.

  • platform/RuntimeApplicationChecks.h:
10:00 PM Changeset in webkit [275404] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebKit

Add a macro to help staging logDiagnosticMessageWithDomain in Safari
https://bugs.webkit.org/show_bug.cgi?id=224081

Reviewed by Wenson Hsieh.

Checking this macro will allow the webkit clients to implement this API
and build with or without r275103.

  • UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
9:42 PM Changeset in webkit [275403] by commit-queue@webkit.org
  • 14 edits
    4 copies
    2 adds in trunk/Source

RemoteRenderingBackend should clean up CG resources after last Canvas is destroyed in Gpu process
https://bugs.webkit.org/show_bug.cgi?id=223885
<rdar://problem/75637356>

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

Source/WebCore/PAL:

Add SPI interface _MTLDevice for its _purgeDevice method.

  • pal/spi/cocoa/MetalSPI.h:

Source/WebKit:

Release CoreGraphics resources (Metal device command buffers,
and other per-device resources) 1s after last

  • RemoteRenderingBackend drawable resource
  • RemoteGraphicsContextGL instance
  • RemoteMediaPlayerProxy instance

has been destroyed.

Adds ScopedRenderingResourcesRequest and
ScopedWebGLRenderingResourcesRequest to hold the intent to
use the global rendering resources. The names are called 'Request'
because the implementation is not guaranteed to do anything specific.
E.g. ResourcesRequest == "I'd like the resources to be available"

ResourcesLock, ResourcesHolder, ... = "The resources are guaranteed
to be held."

The naming tries to be consistent with the similar class
ScopedHighPerformanceGPURequest.

For sequence like:
1) Visit a page with simple Context2D usage
2) Close the page (but leave the browser running)
This saves 2mb of IOAccelMemory at step 2 on a tested device.

  • Configurations/WebKit.xcconfig:

Link WebKit to Metal in order to use the RemoteRenderingRequest
(_MTLCopyAllDevices symbol).

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didClose):
Clear the map containing RemoteGraphicsContextGL objects
when connection to WebContent process is closed.
This stops the RemoteGraphicsContextGL listening for IPC
and destroys them in scenarios where the connection is
closed but the GPUConnectionToWebProcess is staying alive
for some reason. In this patch, this would happen for example
during reload of the page.

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::remoteGraphicsContextGLStreamWorkQueue):
(WebKit::RemoteGraphicsContextGL::RemoteGraphicsContextGL):
(WebKit::RemoteGraphicsContextGL::initialize):
(WebKit::RemoteGraphicsContextGL::stopListeningForIPC):

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:

Hold the ScopedWebGLRenderingResourcesRequest for
the duration of the RemoteGraphicsContextGL context lifetime.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::~RemoteRenderingBackend):
(WebKit::RemoteRenderingBackend::createImageBuffer):
(WebKit::RemoteRenderingBackend::releaseRemoteResource):
(WebKit::RemoteRenderingBackend::updateRenderingResourceRequest):

  • GPUProcess/graphics/RemoteRenderingBackend.h:

Hold the ScopedRenderingResourcesRequest for the duration that
there are ImageBuffers or NativeImages in the RemoteResourceCache.

A RemoteRenderingBackend might exist without any drawable due to
a) Context2D being created and then destroyed
b) WebGL taking a reference to the RemoteRenderingBackend in order
to submit work in case the caller would request Image -> texture
upload.

In case of WebGL context being created and then destroyed, there is
a RRB instance alive but not doing any rendering. In these cases,
we want the rendering resources to be released and not held by
the empty RRB.

  • GPUProcess/graphics/ScopedRenderingResourcesRequest.cpp: Copied from Source/WebCore/PAL/pal/spi/cocoa/MetalSPI.h.

(WebKit::ScopedRenderingResourcesRequest::scheduleFreeRenderingResources):
(WebKit::ScopedRenderingResourcesRequest::freeRenderingResources):

  • GPUProcess/graphics/ScopedRenderingResourcesRequest.h: Added.

(WebKit::ScopedRenderingResourcesRequest::ScopedRenderingResourcesRequest):
(WebKit::ScopedRenderingResourcesRequest::~ScopedRenderingResourcesRequest):
(WebKit::ScopedRenderingResourcesRequest::operator=):
(WebKit::ScopedRenderingResourcesRequest::isRequested const):
(WebKit::ScopedRenderingResourcesRequest::acquire):
(WebKit::ScopedRenderingResourcesRequest::reset):

  • GPUProcess/graphics/ScopedRenderingResourcesRequestCocoa.mm: Copied from Source/WebCore/PAL/pal/spi/cocoa/MetalSPI.h.

(WebKit::ScopedRenderingResourcesRequest::scheduleFreeRenderingResources):
(WebKit::ScopedRenderingResourcesRequest::freeRenderingResources):
Add a scoped holder for the rendering resources. Currently it purges
all Metal device memory.

  • GPUProcess/graphics/ScopedWebGLRenderingResourcesRequest.cpp: Copied from Source/WebCore/PAL/pal/spi/cocoa/MetalSPI.h.

(WebKit::ScopedWebGLRenderingResourcesRequest::scheduleFreeWebGLRenderingResources):
(WebKit::ScopedWebGLRenderingResourcesRequest::freeWebGLRenderingResources):

  • GPUProcess/graphics/ScopedWebGLRenderingResourcesRequest.h: Added.

(WebKit::ScopedWebGLRenderingResourcesRequest::ScopedWebGLRenderingResourcesRequest):
(WebKit::ScopedWebGLRenderingResourcesRequest::~ScopedWebGLRenderingResourcesRequest):
(WebKit::ScopedWebGLRenderingResourcesRequest::operator=):
(WebKit::ScopedWebGLRenderingResourcesRequest::isRequested const):
(WebKit::ScopedWebGLRenderingResourcesRequest::acquire):
(WebKit::ScopedWebGLRenderingResourcesRequest::reset):

  • GPUProcess/graphics/ScopedWebGLRenderingResourcesRequestCocoa.cpp: Copied from Source/WebCore/PAL/pal/spi/cocoa/MetalSPI.h.

(WebKit::ScopedWebGLRenderingResourcesRequest::scheduleFreeWebGLRenderingResources):
(WebKit::ScopedWebGLRenderingResourcesRequest::freeWebGLRenderingResources):
Add a scoped holder for the WebGL global resources. Currently it frees
the ANGLE related global data. It also purges all Metal device memory
via RenderingResourcesRequest.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::RemoteMediaPlayerProxy):
(WebKit::RemoteMediaPlayerProxy::invalidate):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:

Hold RenderingResourcesRequest for the duration of a media player
existing in the GPU process. It's not known if media playback needs
Metal. At least some videos do not need it. However, this is erring
on the side of caution in order to avoid potential video frame skips
the video playback using Metal but then the devices being purged by
a Context2D or WebGL -related destruction.

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
9:02 PM Changeset in webkit [275402] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

Expand on shouldComputeLogicalWidthFromAspectRatioAndInsets return logic
https://bugs.webkit.org/show_bug.cgi?id=224057

Reviewed by Rob Buis.

In this patch we also start checking against logicalWidth/height instead of just width/height.

  • rendering/RenderBox.cpp:

(WebCore::shouldComputeLogicalWidthFromAspectRatioAndInsets):
(WebCore::RenderBox::shouldComputeLogicalHeightFromAspectRatio const):
(WebCore::RenderBox::shouldComputeLogicalWidthFromAspectRatio const):
(WebCore::RenderBox::shouldComputeLogicalWidthFromAspectRatioAndInsets const): Deleted.

  • rendering/RenderBox.h:
8:19 PM Changeset in webkit [275401] by Kate Cheney
  • 8 edits in trunk/Source

Clear network website data when a user clears history/website data
https://bugs.webkit.org/show_bug.cgi?id=224030
<rdar://problem/75288338>

Reviewed by David Kilzer.

Source/WebKit:

Clear network-related website data for domains when clearing history/
website data.

No new tests. Unable to test due to recent changes in a dependent
framework's infrastructure for setting network website data for
testing. Will post a followup test once that is resolved.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::deleteWebsiteData):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::removeNetworkWebsiteData):

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

(NetworkSessionCocoa::removeNetworkWebsiteData):

  • Scripts/process-entitlements.sh:

Source/WTF:

  • wtf/cocoa/SoftLinking.h:

Add a new soft link macro to link umbrella private frameworks. We need
this to support internal additions we need to clear network domain data.

6:37 PM Changeset in webkit [275400] by Russell Epstein
  • 10 edits in branches/safari-612.1.9-branch/Source/JavaScriptCore

Cherry-pick r275392. rdar://problem/76132877

REGRESSION(r274724): JITCage trampoline needs to be adjusted
https://bugs.webkit.org/show_bug.cgi?id=224065

Reviewed by Saam Barati.

r274724 introduced a new parameter to custom setters, but it didn't change the parameter recognization of JITCage trampolines for custom accessors.
As a result, we are jumping with the wrong pointer, and crash when custom setter is called with JITCage.

This patch fixes the above bug.

  1. Now, custom getter and custom setter have different number of parameters. We should have two different trampolines to invoke it. We remove vmEntryCustomAccessor, and add vmEntryCustomGetter/vmEntryCustomSetter.
  2. vmEntryCustomSetter should use a4 parameter as a executable address for trampoline.
  • bytecode/AccessCase.cpp: (JSC::AccessCase::generateImpl):
  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileCallDOMGetter):
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter):
  • llint/LLIntThunks.cpp:
  • llint/LLIntThunks.h:
  • llint/LowLevelInterpreter.asm:
  • offlineasm/arm64.rb:
  • offlineasm/registers.rb:
  • runtime/PropertySlot.h:

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

6:07 PM Changeset in webkit [275399] by Chris Gambrell
  • 5 edits
    2 adds
    3 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/cache convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=222935
<rdar://problem/75183314>

Reviewed by Jonathan Bedard.

  • http/tests/cache/cache-redirections.html:
  • http/tests/cache/resources/cache-control-redirect.php: Removed.
  • http/tests/cache/resources/cache-control-redirect.py: Added.
  • http/tests/cache/resources/permanent-redirect.php: Removed.
  • http/tests/cache/resources/x-frame-options.php: Removed.
  • http/tests/cache/resources/x-frame-options.py: Added.
  • http/tests/cache/x-frame-options-304.html:
  • http/tests/navigation/window-open-redirect-and-remove-opener.html:
  • http/tests/xmlhttprequest/cacheable-cross-origin-redirect-crash.html:
6:03 PM Changeset in webkit [275398] by Chris Gambrell
  • 11 edits
    2 moves
    1 add
    1 delete in trunk/LayoutTests

[LayoutTests] Convert http/tests/history convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=222614
<rdar://problem/74946423>

Reviewed by Jonathan Bedard.

  • http/tests/history/back-to-post.php: Removed.
  • http/tests/history/back-to-post.py: Added.
  • http/tests/history/back-with-fragment-change-expected.txt:
  • http/tests/history/back-with-fragment-change.php: Removed.
  • http/tests/history/back-with-fragment-change.py: Added.
  • http/tests/history/resources/back-during-onload-hung-page.php: Removed.
  • http/tests/history/resources/back-during-onload-hung-page.py: Added.
  • http/tests/history/resources/back-during-onload-middle.html:
  • http/tests/navigation/resources/back-twice-page-2.html:
  • platform/glib/TestExpectations:
  • platform/ios-wk1/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/win/TestExpectations:
5:52 PM Changeset in webkit [275397] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[watchOS] Contact AutoFill suggestions no longer show up in non-username or password fields
https://bugs.webkit.org/show_bug.cgi?id=224087
<rdar://problem/76080205>

Reviewed by Tim Horton.

For the time being, limit use of PUICQuickboardController to text content types that would allow for login
credential AutoFill in Quickboard. We can remove this logic when PUICQuickboardController can be updated with
and present arbitrary text suggestion values.

  • UIProcess/ios/WKContentViewInteraction.mm:

(canUseQuickboardControllerFor):
(-[WKContentView presentViewControllerForCurrentFocusedElement]):

5:40 PM Changeset in webkit [275396] by Robert Jenner
  • 2 edits in trunk/LayoutTests

inspector/animation/lifecycle-css-transition.html is a flakey timeout on EWS
https://bugs.webkit.org/show_bug.cgi?id=222195

Unreviewed test gardening.

  • platform/mac/TestExpectations: Removing test expectations to see if it is still an issue on EWS.
5:38 PM Changeset in webkit [275395] by commit-queue@webkit.org
  • 4 edits in trunk

REGRESSION(r272469) QuickLook previews broken in some places on macOS
https://bugs.webkit.org/show_bug.cgi?id=224086

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-01
Reviewed by Tim Horton.

Source/WebCore:

The linked-on-or-after check saves us from most compatibility problems, but QuickLook on macOS was broken.
It uses schemes x-apple-ql-id and x-apple-ql-magic, which we allow to continue to have non-null origins.
Covered by API tests.

  • page/SecurityOrigin.cpp:

(WebCore::shouldTreatAsUniqueOrigin):

Tools:

  • TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp:

(TestWebKitAPI::TEST_F):

5:19 PM Changeset in webkit [275394] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Add more deprecation macros.

I missed one in r275298

  • platform/network/cocoa/CertificateInfoCocoa.mm:

(WebCore::CertificateInfo::dump const):

4:32 PM Changeset in webkit [275393] by BJ Burg
  • 10 edits
    2 deletes in trunk

v2: REGRESSION(r266890): [Cocoa] Fix API::InspectorClient leak
https://bugs.webkit.org/show_bug.cgi?id=223899
<rdar://problem/75249282>

Reviewed by Devin Rousso.

Refactor to *not* use the helper ObjC class InspectorDelegate.
Instead, store the _WKInspectorDelegate in _WKInspector directly
using a WeakObjCPtr ivar. Move the C++ bridge class to be defined
inside _WKInspector.mm since it's only used there. Adapt it to
work better with a nil delegate.

  • UIProcess/API/APIInspectorClient.h:

(API::InspectorClient::openURLExternally):

  • UIProcess/API/Cocoa/_WKInspectorInternal.h:
  • UIProcess/API/Cocoa/_WKInspector.mm:

(-[_WKInspector delegate]):
(-[_WKInspector setDelegate:]):
(-[_WKInspector dealloc]):

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • UIProcess/Inspector/Cocoa/InspectorDelegate.h: Removed.
  • UIProcess/Inspector/Cocoa/InspectorDelegate.mm: Removed.
  • UIProcess/Inspector/mac/WKInspectorViewController.mm:

(-[WKInspectorViewController initWithConfiguration:inspectedPage:]):
Drive-by, fix the leak of _WKInspectorConfiguration.

4:06 PM Changeset in webkit [275392] by ysuzuki@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

REGRESSION(r274724): JITCage trampoline needs to be adjusted
https://bugs.webkit.org/show_bug.cgi?id=224065

Reviewed by Saam Barati.

r274724 introduced a new parameter to custom setters, but it didn't change the parameter recognization of JITCage trampolines for custom accessors.
As a result, we are jumping with the wrong pointer, and crash when custom setter is called with JITCage.

This patch fixes the above bug.

  1. Now, custom getter and custom setter have different number of parameters. We should have two different trampolines to invoke it. We remove vmEntryCustomAccessor, and add vmEntryCustomGetter/vmEntryCustomSetter.
  2. vmEntryCustomSetter should use a4 parameter as a executable address for trampoline.
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCallDOMGetter):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter):

  • llint/LLIntThunks.cpp:
  • llint/LLIntThunks.h:
  • llint/LowLevelInterpreter.asm:
  • offlineasm/arm64.rb:
  • offlineasm/registers.rb:
  • runtime/PropertySlot.h:
3:50 PM Changeset in webkit [275391] by Devin Rousso
  • 5 edits in trunk/LayoutTests

REGRESSION (r275358): [ macOS ] 2X media/modern-media-controls layout-tests are text failing
https://bugs.webkit.org/show_bug.cgi?id=224061
<rdar://problem/76115550>

Unreviewed test fix.

  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles-expected.txt:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-dropping-controls.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-dropping-controls-expected.txt:

Set a maximumRightContainerButtonCountOverride so that the collapsing behavior of the
overflow button doesn't affect the test (and force a layout to ensure it's picked up).

3:30 PM Changeset in webkit [275390] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur Wk1 Release] webanimations/accelerated* tests are flaky image failing
https://bugs.webkit.org/show_bug.cgi?id=224066

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
3:27 PM Changeset in webkit [275389] by Chris Dumez
  • 7 edits in trunk/Source/WebKit

Share same code between network process termination and crash handling
https://bugs.webkit.org/show_bug.cgi?id=224056

Reviewed by Darin Adler.

Share same code between network process termination and crash handling. This would avoid
bugs such as Bug 224022.

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::terminate):
(WebKit::NetworkProcessProxy::networkProcessDidTerminate):
(WebKit::NetworkProcessProxy::didClose):
(WebKit::NetworkProcessProxy::didFinishLaunching):
(WebKit::NetworkProcessProxy::didTerminate): Deleted.
(WebKit::NetworkProcessProxy::networkProcessCrashed): Deleted.

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::networkProcessDidTerminate):
(WebKit::WebProcessPool::networkProcessCrashed): Deleted.

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::networkProcessDidTerminate):
(WebKit::WebsiteDataStore::terminateNetworkProcess):
(WebKit::WebsiteDataStore::networkProcessCrashed): Deleted.

  • UIProcess/WebsiteData/WebsiteDataStore.h:
3:26 PM Changeset in webkit [275388] by commit-queue@webkit.org
  • 8 edits
    2 deletes in trunk

Unreviewed, reverting r274381.
https://bugs.webkit.org/show_bug.cgi?id=224080

Caused stuttery select scrolling

Reverted changeset:

"Add basic (non-momentum) wheel event handling for scroll
snap"
https://bugs.webkit.org/show_bug.cgi?id=222594
https://trac.webkit.org/changeset/274381

3:19 PM Changeset in webkit [275387] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Add IOKit method filter telemetry
https://bugs.webkit.org/show_bug.cgi?id=223652
<rdar://problem/75751391>

Reviewed by Brent Fulgham.

Add IOKit method filter telemetry in the WebContent sandbox on macOS and iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
3:19 PM Changeset in webkit [275386] by Ruben Turcios
  • 3 edits in branches/safari-612.1.9-branch/Source/JavaScriptCore

Cherry-pick r275374. rdar://problem/76124167

Remove use of ENABLE from API header
https://bugs.webkit.org/show_bug.cgi?id=224060
<rdar://76111678>

Reviewed by Mark Lam.

The use of the ENABLE macro in these API headers has caused build failures. Instead of
conditionally exposing these API methods we make them into no-ops if DFG is disabled.

  • API/JSVirtualMachine.mm: (+[JSVirtualMachine setNumberOfDFGCompilerThreads:]): (+[JSVirtualMachine setNumberOfFTLCompilerThreads:]):
  • API/JSVirtualMachinePrivate.h:

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

2:51 PM Changeset in webkit [275385] by Ross Kirsling
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Use ucal_getTimeZoneOffsetFromLocal if ICU 69 is present
https://bugs.webkit.org/show_bug.cgi?id=224075

Reviewed by Yusuke Suzuki.

Apple ICU 68 cherry picked ucal_getTimeZoneOffsetFromLocal (see r223783),
but now that ICU 69 is in RC, we can go ahead and update the #if for non-Apple platforms.

  • runtime/JSDateMath.cpp:
2:25 PM Changeset in webkit [275384] by Russell Epstein
  • 1 copy in tags/Safari-612.1.8.4

Tag Safari-612.1.8.4.

2:23 PM Changeset in webkit [275383] by Russell Epstein
  • 3 edits in branches/safari-612.1.8-branch/Source/JavaScriptCore

Cherry-pick r275374. rdar://problem/76111678

Remove use of ENABLE from API header
https://bugs.webkit.org/show_bug.cgi?id=224060
<rdar://76111678>

Reviewed by Mark Lam.

The use of the ENABLE macro in these API headers has caused build failures. Instead of
conditionally exposing these API methods we make them into no-ops if DFG is disabled.

  • API/JSVirtualMachine.mm: (+[JSVirtualMachine setNumberOfDFGCompilerThreads:]): (+[JSVirtualMachine setNumberOfFTLCompilerThreads:]):
  • API/JSVirtualMachinePrivate.h:

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

2:21 PM Changeset in webkit [275382] by Russell Epstein
  • 8 edits in branches/safari-612.1.8-branch/Source

Versioning.

WebKit-7612.1.8.4

2:21 PM Changeset in webkit [275381] by dino@apple.com
  • 2 edits in trunk/Source/WebKit

Add #import for when unified sources doesn't import it first.

  • Shared/ios/WebIconUtilities.h:
2:12 PM Changeset in webkit [275380] by Chris Gambrell
  • 9 edits
    2 adds
    2 deletes in trunk/LayoutTests

LayoutTests] Convert http/tests/download convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=222618
<rdar://problem/74949253>

Reviewed by Jonathan Bedard.

  • http/tests/download/default-encoding-expected.txt:
  • http/tests/download/default-encoding.html:
  • http/tests/download/inherited-encoding-expected.txt:
  • http/tests/download/inherited-encoding-form-submission-result-expected.txt:
  • http/tests/download/inherited-encoding-form-submission-result.html:
  • http/tests/download/inherited-encoding.html:
  • http/tests/download/literal-utf-8-expected.txt:
  • http/tests/download/literal-utf-8.html:
  • http/tests/download/resources/literal-koi8-r.php: Removed.
  • http/tests/download/resources/literal-koi8-r.py: Added.
  • http/tests/download/resources/literal-utf-8.php: Removed.
  • http/tests/download/resources/literal-utf-8.py: Added.
1:59 PM Changeset in webkit [275379] by Chris Dumez
  • 2 edits in trunk/Source/WTF

REGRESSION(r275267): [GTK][WPE] 12 new crashes on service-workers layout tests
https://bugs.webkit.org/show_bug.cgi?id=224059

Reviewed by Carlos Alberto Lopez Perez.

Have the glib implementation of FileSystem::writeToFile() return early when the size to
write is 0, instead of calling g_output_stream_write_all(). It appears that passing a
NULL buffer to g_output_stream_write_all() crashes, even if size is 0.

  • wtf/glib/FileSystemGlib.cpp:

(WTF::FileSystemImpl::writeToFile):

1:56 PM Changeset in webkit [275378] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Enable ews status bubble for stress tests ews
https://bugs.webkit.org/show_bug.cgi?id=224069

Reviewed by Jonathan Bedard.

  • CISupport/ews-app/ews/views/statusbubble.py:

(StatusBubble):

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

aspect-ratio not recomputed on hover
https://bugs.webkit.org/show_bug.cgi?id=224028

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-01
Reviewed by Zalan Bujtas.

LayoutTests/imported/w3c:

Add test for this.

  • web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-dynamic-aspect-ratio-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-dynamic-aspect-ratio.html: Added.

Source/WebCore:

Detect change in aspect-ratio on hover.

Test: imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-dynamic-aspect-ratio.html

  • rendering/style/RenderStyle.cpp:

(WebCore::rareNonInheritedDataChangeRequiresLayout):

1:43 PM Changeset in webkit [275376] by clopez@igalia.com
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Gardening of layout tests.

Unreviewed gardening.

Report and mark new failures.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
1:05 PM Changeset in webkit [275375] by Chris Dumez
  • 22 edits in trunk/Source

Have the ServiceWorker process hold on to a file mapped version of the service worker scripts to save dirty memory
https://bugs.webkit.org/show_bug.cgi?id=224015
<rdar://75637679>

Reviewed by Geoffrey Garen.

Source/WebCore:

Since r275267, the Network process holds on the file mapped (mmap'd) versions of the service worker
scripts instead of heap allocated versions, in order to decrease its dirty memory use. However, the
ServiceWorker process (which is often a regular WebProcess) was still using heap allocated service
worker scripts. This patch is a follow-up to make sure the NetworkProcess sends its file mapped
scripts to the ServiceWorker processes as ShareableResource handles in order to decrease the dirty
memory usage of the ServiceWorker processes as well.

No new tests, no Web-facing behavior change, just a decrease in dirty memory use in the ServiceWorker
processes (which may be WebProcesses). I have done local testing with a very large service worker
that uses a ~100MB main script, which imports another ~100MB sub-script. With my change, dirty
memory usage goes from ~440MB to ~230MB in both the cold and warm cases ("Cold" meaning that the
service worker was just registed and downloaded from the network and "Warm" meaning that the
service worker had been previously registed and was loaded straight from the SWScriptStorage).

  • platform/SharedBuffer.cpp:

(WebCore::SharedBuffer::hasOneSegment const):
Add a utility function to SharedBuffer to check if it contains a single data segment.

(WebCore::SharedBuffer::DataSegment::containsMappedFileData const):
Add a utility function to check if a SharedBuffer DataSegment contains a MappedFileData object.

  • platform/SharedBuffer.h:
  • workers/service/ServiceWorkerContextData.h:

(WebCore::ServiceWorkerContextData::ImportedScript::isolatedCopy const):
Move IPC encoders / decoders for ServiceWorkerContextData and ServiceWorkerContextData::ImportedScript
to the WebKit layer, in WebCoreArgumentCoders. This allows us to encode / decode the scripts as
WebKit::ShareableHandle whenever possible. This way, when the NetworkProcess sends a
ServiceWorkerContextData to the ServiceWorker process to launch a service worker, both the
ServiceWorker process and the Network process share the same mmap'd versions of the scripts and we
save on dirty memory use. This helps reduce dirty memory use in the ServiceWorker process in the
warm case, where the scripts are loaded straight from the disk (via SWScriptStorage).

  • workers/service/ServiceWorkerGlobalScope.cpp:

(WebCore::ServiceWorkerGlobalScope::didSaveScriptsToDisk):

  • workers/service/ServiceWorkerGlobalScope.h:
  • workers/service/context/SWContextManager.cpp:

(WebCore::SWContextManager::didSaveScriptsToDisk):

  • workers/service/context/SWContextManager.h:
  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::didSaveScriptsToDisk):

  • workers/service/context/ServiceWorkerThreadProxy.h:
  • workers/service/server/SWServerToContextConnection.h:
  • workers/service/server/SWServerWorker.cpp:

(WebCore::SWServerWorker::didSaveScriptsToDisk):
In the cold case, once the NetworkProcess is done saving the scripts to disk, it now sends the
file mapped version of the scripts to the ServiceWorker process, so that it can also replace
its heap-allocated copies and save on dirty memory use.

Source/WebKit:

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:

(WebKit::WebSWServerToContextConnection::didSaveScriptsToDisk):

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::didSaveScriptsToDisk):

  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/Storage/WebSWContextManagerConnection.messages.in:

When the NetworkProcess is done saving the service worker scripts to disk and it gets
a file mapped version, it now sends them to the ServiceWorker process as ShareableResource
handles via IPC. This allows the ServiceWorker process to replace its heap-allocated
versions of the script and save on dirty memory use (in the cold case).

  • Shared/ShareableResource.h:

Fix bug where 2 of ShareableResource data members were not properly initialized by the default
constructor.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::encodeServiceWorkerContextDataScript):
(IPC::decodeServiceWorkerContextDataScript):
(IPC::ArgumentCoder<ServiceWorkerContextData::ImportedScript>::encode):
(IPC::ArgumentCoder<ServiceWorkerContextData::ImportedScript>::decode):
(IPC::ArgumentCoder<ServiceWorkerContextData>::encode):
(IPC::ArgumentCoder<ServiceWorkerContextData>::decode):
(IPC::tryConvertToShareableResourceHandle):

  • Shared/WebCoreArgumentCoders.h:

Moved IPC encoders / decoders for ServiceWorkerContextData and ServiceWorkerContextData::ImportedScript
to the WebKit layer, in WebCoreArgumentCoders. This allows us to encode / decode the scripts as
WebKit::ShareableHandle whenever possible. This way, when the NetworkProcess sends a
ServiceWorkerContextData to the ServiceWorker process to launch a service worker, both the
ServiceWorker process and the Network process share the same mmap'd versions of the scripts and we
save on dirty memory use. This helps reduce dirty memory use in the ServiceWorker process in the
warm case, where the scripts are loaded straight from the disk (via SWScriptStorage).

1:02 PM Changeset in webkit [275374] by Tadeu Zagallo
  • 3 edits in trunk/Source/JavaScriptCore

Remove use of ENABLE from API header
https://bugs.webkit.org/show_bug.cgi?id=224060
<rdar://76111678>

Reviewed by Mark Lam.

The use of the ENABLE macro in these API headers has caused build failures. Instead of
conditionally exposing these API methods we make them into no-ops if DFG is disabled.

  • API/JSVirtualMachine.mm:

(+[JSVirtualMachine setNumberOfDFGCompilerThreads:]):
(+[JSVirtualMachine setNumberOfFTLCompilerThreads:]):

  • API/JSVirtualMachinePrivate.h:
1:01 PM Changeset in webkit [275373] by Fujii Hironori
  • 6 edits in trunk/Source/WebCore

[WebGL] Use GraphicsContextGLOpenGLManager for ports using TextureMapper
https://bugs.webkit.org/show_bug.cgi?id=224035

Reviewed by Don Olmstead.

Use GraphicsContextGLOpenGLManager for GTK, WPE and WinCairo ports
to reduce duplicated code.

GraphicsContextGLOpenGLBase.cpp isn't used by Cocoa ports.

No behavior change.

  • PlatformMac.cmake:
  • Sources.txt:
  • SourcesCocoa.txt:
  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:

(WebCore::GraphicsContextGLOpenGL::create):
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):
(WebCore::activeContexts): Deleted.

11:53 AM Changeset in webkit [275372] by Ruben Turcios
  • 5 edits in branches/safari-612.1.9-branch/Source

Cherry-pick r275370. rdar://problem/76113438

Allow ASCWebKitSPISupport to be used on macOS
https://bugs.webkit.org/show_bug.cgi?id=224036
<rdar://76028645>

Reviewed by Brent Fulgham.

Source/WebKit:

  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.h:
  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.mm:

Source/WTF:

  • wtf/PlatformHave.h:

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

11:50 AM Changeset in webkit [275371] by mmaxfield@apple.com
  • 6 edits
    1 add in trunk

[Cocoa] REGRESSION(r272999): User-installed fonts no longer work in Mail
https://bugs.webkit.org/show_bug.cgi?id=223985
<rdar://problem/75975210>

Reviewed by Per Arne Vollan.

Source/WebKit:

The sandbox extension which allows user-installed fonts to work was part of the WebPage,
but XType may already have been initialized to use the static registry by the time the WebPage
has been created. Therefore, simply _having_ a sandbox extension isn't sufficient; instead,
WebPage's constructor needs to call CTFontManagerEnableAllUserFonts() to switch to using fontd
in addition to using the sandbox extension.

Test: WebKit.UserInstalledFontsWork

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_lastNavigationWasAppBound):
(WebKit::WebPage::~WebPage):

  • WebProcess/WebPage/WebPage.h:

Tools:

  • TestWebKitAPI/Tests/WebKit/FontRegistrySandboxCheck.mm:

(TEST):

11:09 AM Changeset in webkit [275370] by jiewen_tan@apple.com
  • 5 edits in trunk/Source

Allow ASCWebKitSPISupport to be used on macOS
https://bugs.webkit.org/show_bug.cgi?id=224036
<rdar://76028645>

Reviewed by Brent Fulgham.

Source/WebKit:

  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.h:
  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.mm:

Source/WTF:

  • wtf/PlatformHave.h:
10:44 AM Changeset in webkit [275369] by Russell Epstein
  • 1 copy in tags/Safari-612.1.7.14

Tag Safari-612.1.7.14.

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

Versioning.

WebKit-7612.1.7.14

10:38 AM Changeset in webkit [275367] by pvollan@apple.com
  • 4 edits in trunk/Source/WebKit

[GPU process] Enable CFPrefs direct mode
https://bugs.webkit.org/show_bug.cgi?id=223817
<rdar://74748933>

Reviewed by Brent Fulgham.

Enable CFPrefs direct mode in the GPU process.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:

(WebKit::shouldEnableCFPrefsDirectMode):
(WebKit::XPCServiceMain):

10:25 AM Changeset in webkit [275366] by Chris Gambrell
  • 6 edits in trunk/LayoutTests

Flaky LayoutTests in http/tests/appcache
https://bugs.webkit.org/show_bug.cgi?id=224054
<rdar://problem/76108352>

Reviewed by Jonathan Bedard.

  • http/tests/appcache/fail-on-update-2.html:
  • http/tests/appcache/fail-on-update.html:
  • http/tests/appcache/resources/abort-cache-onchecking.manifest.py:
  • http/tests/appcache/resources/abort-cache-ondownloading.text.py:
  • http/tests/appcache/resources/not-exist.vob.py:
10:17 AM Changeset in webkit [275365] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebKit

Use sendWithAsyncReply for NetworkProcess messages with async replies
https://bugs.webkit.org/show_bug.cgi?id=224025

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

This will prevent us from having to manually store and handle the callback IDs and other things.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::~NetworkProcessProxy):
(WebKit::NetworkProcessProxy::fetchWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcessProxy::networkProcessCrashed):
(WebKit::NetworkProcessProxy::clearCallbackStates): Deleted.
(WebKit::NetworkProcessProxy::didFetchWebsiteData): Deleted.
(WebKit::NetworkProcessProxy::didDeleteWebsiteData): Deleted.
(WebKit::NetworkProcessProxy::didDeleteWebsiteDataForOrigins): Deleted.

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
9:10 AM Changeset in webkit [275364] by Chris Lord
  • 8 edits in trunk/Source/WebCore

Make FontCache constructable and safe to use off the main thread
https://bugs.webkit.org/show_bug.cgi?id=223997

Reviewed by Darin Adler.

So that we can have a separate FontCache for use with OffscreenCanvas
on Worker threads, make FontCache constructable/destructable and
ref-counted.

This also changes some functions so that they no longer rely on static
AtomString variables, as these paths would not be safe to use off the
main thread, and changes main-thread checks to creation-thread checks.

No new tests, no change in behavior.

  • platform/graphics/FontCache.cpp:

(WebCore::FontCache::alternateFamilyName):
(WebCore::FontCache::getCachedFontPlatformData):
(WebCore::FontCache::fontForFamily):
(WebCore::FontCache::similarFont):

  • platform/graphics/FontCache.h:

(WebCore::FontCache::fontForFamily):
(WebCore::FontCache::getCachedFontPlatformData):

  • platform/graphics/FontCascadeFonts.cpp:

(WebCore::FontCascadeFonts::FontCascadeFonts):
(WebCore::FontCascadeFonts::glyphDataForCharacter):

  • platform/graphics/FontCascadeFonts.h:

(WebCore::FontCascadeFonts::primaryFont):

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontCache::similarFont):
(WebCore::FontCache::platformAlternateFamilyName):

  • platform/graphics/freetype/FontCacheFreeType.cpp:

(WebCore::FontCache::lastResortFallbackFont):
(WebCore::getFamilyNameStringFromFamily):
(WebCore::FontCache::platformAlternateFamilyName):

  • platform/graphics/win/FontCacheWin.cpp:

(WebCore::FontCache::fontFromDescriptionAndLogFont):
(WebCore::FontCache::lastResortFallbackFont):
(WebCore::FontCache::platformAlternateFamilyName):

9:07 AM Changeset in webkit [275363] by Alexey Shvayka
  • 10 edits
    2 adds in trunk

Optimize createListFromArrayLike() and Proxy's OwnPropertyKeys method
https://bugs.webkit.org/show_bug.cgi?id=223928

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/json-stringify-array-replacer.js:

Reduce running time from over 350ms to ~60ms.

  • microbenchmarks/reflect-own-keys-proxy-2.js: Added.
  • microbenchmarks/reflect-own-keys-proxy.js: Added.

Source/JavaScriptCore:

createListFromArrayLike() changes:

  1. Use toLength() / getIndex() methods that have fast paths.
  2. Remove RuntimeTypeMask and error messages from its signature: type checks are better performed in advance / inside a functor to keep the helper more versatile.
  3. Invert functor's return value to align with Structure::forEachProperty() and friends.
  4. Rename it to forEachInArrayLike() as no list is actually returned.

ProxyObject::performGetOwnPropertyNames() changes:

  1. Remove RuntimeTypeMask filtering as it's already performed by PropertyNameArray::add().
  2. Store target's keys in a HashSet for faster insertion / search.
  3. Don't populate targetConfigurableKeys for extensible target as it won't be used [1].
  4. Leverage return value of HashSet::remove() instead of using a helper.

This patch advances Proxy's OwnPropertyKeys microbenchmarks by 20-30%,
mainly due to createListFromArrayLike() changes. No behavior changes.

Also, utilizes forEachInArrayLike() for allow list of JSON.stringify().

[1]: https://tc39.es/ecma262/#sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys (step 20)

  • runtime/JSONObject.cpp:

(JSC::Stringifier::Stringifier):

  • runtime/JSObject.h:

(JSC::JSObject::getIndex const):

  • runtime/JSObjectInlines.h:

(JSC::forEachInArrayLike):
(JSC::createListFromArrayLike): Deleted.

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::performGetOwnPropertyNames):

  • runtime/ReflectObject.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

8:48 AM Changeset in webkit [275362] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r275350.
https://bugs.webkit.org/show_bug.cgi?id=224048

Introduced perf regression

Reverted changeset:

"Add IOKit method filter telemetry"
https://bugs.webkit.org/show_bug.cgi?id=223652
https://trac.webkit.org/changeset/275350

8:35 AM Changeset in webkit [275361] by mark.lam@apple.com
  • 3 edits
    2 adds in trunk

Fix some missing exception checks in HTMLMediaElement methods.
https://bugs.webkit.org/show_bug.cgi?id=224038
rdar://69573092

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/missing-exception-checks-in-HTMLMediaElement-methods.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setupAndCallJS):
(WebCore::HTMLMediaElement::updateCaptionContainer):
(WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
(WebCore::HTMLMediaElement::setControllerJSProperty):
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
(WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange):
(WebCore::HTMLMediaElement::getCurrentMediaControlsStatus):

LayoutTests:

  • media/missing-exception-checks-in-HTMLMediaElement-methods-expected.txt: Added.
  • media/missing-exception-checks-in-HTMLMediaElement-methods.html: Added.
8:19 AM Changeset in webkit [275360] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

Previous artwork isn't cleared when NowPlaying info doesn't contain an artwork
https://bugs.webkit.org/show_bug.cgi?id=224031
<rdar://76044544>

Patch by Jean-Yves Avenard <Jean-Yves Avenard> on 2021-04-01
Reviewed by Youenn Fablet.

Source/WebCore:

Manually tested, no framework available to test such change.

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::setNowPlayingInfo): use MRMediaRemoteSetNowPlayingInfoWithMergePolicy instead.

  • platform/mac/MediaRemoteSoftLink.h: Soft link MRMediaRemoteSetNowPlayingInfoWithMergePolicy
  • platform/mac/MediaRemoteSoftLink.mm:

Source/WebCore/PAL:

  • pal/spi/mac/MediaRemoteSPI.h: Add MRMediaRemoteMergePolicy enum definitions.
8:17 AM Changeset in webkit [275359] by commit-queue@webkit.org
  • 14 edits
    1 add in trunk/Source/WebCore

Now Playing artwork doesn't update when changed.
https://bugs.webkit.org/show_bug.cgi?id=223731
<rdar://problem/75823923>

Source/WebCore:

Now Playing and Media Remote requires a unique identifier for the currently playing item.
If the same identifier is provided for every call to MRMediaRemoteSetNowPlayingInfo,
then some updates may be skipped.
In earlier changes, the MediaSessionElement identifier was combined with the Media Element
identifier which broke Now Playing as the MediaSession identifier never changes for the
lifetime of the web content process.
So we create a new method HTMLMediaElement::mediaUniqueIdentifier with a new MediaUniqueIdentifier
that willthat will be updated whenever the source of a media element changes and stop
using the MediaSession identifier when dealing with Now Playing.

Patch by Jean-Yves Avenard <Jean-Yves Avenard> on 2021-04-01
Reviewed by Eric Carlson.

Manually tested, no framework available to test such change.

  • WebCore.xcodeproj/project.pbxproj: Add MediaUniqueIdentifier.h
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::prepareForLoad): Use setCurrentSrc instead of directly modifying m_currentSrc.
(WebCore::HTMLMediaElement::selectMediaResource): Use setCurrentSrc instead of directly modifying m_currentSrc.
(WebCore::HTMLMediaElement::loadResource): Use setCurrentSrc instead of directly modifying m_currentSrc.
(WebCore::HTMLMediaElement::setCurrentSrc): Add convenience method, generate new MediaUniqueIdentifier each time m_currentSrc is modified.
(WebCore::HTMLMediaElement::mediaUniqueIdentifier const): Return unique media identifier.
(WebCore::HTMLMediaElement::mediaSessionUniqueIdentifier const): Deleted.

  • html/HTMLMediaElement.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::nowPlayingInfo const):

  • platform/audio/NowPlayingInfo.h: Use MediaUniqueIdentifier for uniqueIdentifier member.

(WebCore::NowPlayingInfo::decode):

  • platform/audio/PlatformMediaSessionManager.h: Use MediaUniqueIdentifier instead.

(WebCore::PlatformMediaSessionManager::lastUpdatedNowPlayingInfoUniqueIdentifier const):
set kMRMediaRemoteNowPlayingInfoArtworkIdentifier in CFDictionary to the source of the artwork.
Workaround a bug in Media Controller component.

  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::setNowPlayingInfo):

  • platform/mac/MediaRemoteSoftLink.h: Soft-link kMRMediaRemoteNowPlayingInfoArtworkIdentifier symbol.
  • platform/mac/MediaRemoteSoftLink.mm:
  • testing/Internals.h: Add missing header.

Source/WebCore/PAL:

Patch by Jean-Yves Avenard <Jean-Yves Avenard> on 2021-04-01
Reviewed by Eric Carlson.

  • pal/spi/mac/MediaRemoteSPI.h:
8:05 AM Changeset in webkit [275358] by Devin Rousso
  • 29 edits
    2 deletes in trunk

Limit the number of buttons shown in media controls
https://bugs.webkit.org/show_bug.cgi?id=223909

Reviewed by Eric Carlson.

Source/WebCore:

When in fullscreen, it's possible to have five different buttons to the right of "Play":

  • AirPlay
  • Enter Picture in Picture
  • Audio/Languages
  • Exit Full Screen
  • More...

This turns the UI into something of an "icon soup" and should really be avoided, especially
now that OverflowButton allows for a single button to have multiple actions (via a native
contextmenu). This matches AVKit behavior.

Tests: media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls.html:

media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html:
media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html:
media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor.html:
media/modern-media-controls/macos-inline-media-controls/macos-inline-media-dropping-controls.html:

  • Modules/modern-media-controls/controls/inline-media-controls.js:

(InlineMediaControls.prototype.layout):
(InlineMediaControls.prototype._droppableButtons):
(InlineMediaControls.prototype._collapsableButtons): Added.

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:

(MacOSFullscreenMediaControls):
(MacOSFullscreenMediaControls.prototype.layout):
(MacOSFullscreenMediaControls.prototype._collapsableButtons): Added.
Limit the number of visible buttons in rightContainer.children by iteratively marking
dropped = true on buttons that are also in _collapsableButtons until either there are
no iterations left (i < 0) or the number of visible buttons is below the maximum (2 for
inline and 3 for fullscreen).

  • Modules/modern-media-controls/controls/pip-button.js:

(PiPButton.prototype.get contextMenuOptions): Added.

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::showMediaControlsContextMenu):
Add support for includePictureInPicture to the native contextmenu.

  • en.lproj/Localizable.strings:
  • testing/Internals.idl:
  • testing/Internals.h:
  • testing/Internals.cpp:

(WebCore::Internals::setMediaControlsMaximumRightContainerButtonCountOverride): Added.

  • html/HTMLMediaElement.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setMediaControlsMaximumRightContainerButtonCountOverride): Added.

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype.set maximumRightContainerButtonCountOverride): Added.
Add a way to override the default maximum right container button count for testing. This is
useful for testing the functionality of a specific button when not in the collapsed state,
allowing for tests to not have to worry about other state that may affect collapsing (e.g.
the AirPlay button is shown when there are AirPlay targets).

LayoutTests:

  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles-expected.txt:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-dropping-controls.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-dropping-controls-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-right-container-margin.html: Removed.
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-right-container-margin-expected.txt: Removed.

macOS fullscreen controls don't adjust the buttonMargin anymore as buttons are moved into
the overflow menu instead.

  • media/modern-media-controls/tracks-support/auto-text-track.html:
  • media/modern-media-controls/tracks-support/click-track-in-contextmenu.html:
  • media/modern-media-controls/tracks-support/hidden-tracks.html:
  • media/modern-media-controls/tracks-support/off-text-track.html:
  • media/modern-media-controls/tracks-support/show-contextmenu-then-double-click-on-tracks-button.html:
  • media/modern-media-controls/tracks-support/text-track-selected-via-media-api.html:

Override the default maximum right container button count so that the tracks button is shown.

7:47 AM Changeset in webkit [275357] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Cleanup shouldComputeLogicalWidthFromAspectRatio and shouldComputeLogicalWidthFromAspectRatioAndInsets
https://bugs.webkit.org/show_bug.cgi?id=224044

Reviewed by Antti Koivisto.

Let's use "return foo()" (or "return !foo()") instead of
if (!foo())

return true;

return false;

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::shouldComputeLogicalWidthFromAspectRatio const):
(WebCore::RenderBox::shouldComputeLogicalWidthFromAspectRatioAndInsets const):

7:02 AM Changeset in webkit [275356] by aakash_jain@apple.com
  • 9 edits
    2 adds
    2 deletes in trunk/LayoutTests

Unreviewed, reverting r275295.
https://bugs.webkit.org/show_bug.cgi?id=224046

Broken 3 layout tests on wk1

Reverted changeset:

"[LayoutTests] Convert http/tests/download convert PHP to
Python"
https://bugs.webkit.org/show_bug.cgi?id=222618
https://trac.webkit.org/changeset/275295

Patch by Commit Queue <commit-queue@webkit.org> on 2021-04-01

6:37 AM Changeset in webkit [275355] by Aditya Keerthi
  • 19 edits
    2 adds in trunk

[iOS] '-webkit-appearance: none' is not respected for searchfield decorations
https://bugs.webkit.org/show_bug.cgi?id=224018

Reviewed by Antti Koivisto.

Source/WebCore:

Specifying '-webkit-appearance: none' on a searchfield decoration
pseudo-element fails to hide the native icon. This issue arises from
the fact that we add the icon in the UA stylesheet, rather than painting
it in the theme.

To fix, remove the styles from the UA stylesheet, and paint the icon in
RenderThemeIOS. If a different '-webkit-appearance' is specified the
theme will not adjust styles or paint the icon.

Test: fast/forms/ios/form-control-refresh/search/search-decoration-appearance.html

  • css/html.css:

Remove the UA styles for searchfield decorations so that they are not
applied when specifying a different -webkit-appearance.

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

(WebCore::RenderThemeIOS::adjustSearchFieldDecorationPartStyle const):

Adjust the style to match the native appearance.

(WebCore::RenderThemeIOS::paintSearchFieldDecorationPart):

Paint the native icon.

(WebCore::RenderThemeIOS::adjustSearchFieldResultsDecorationPartStyle const):
(WebCore::RenderThemeIOS::paintSearchFieldResultsDecorationPart):
(WebCore::RenderThemeIOS::adjustSearchFieldResultsButtonStyle const):
(WebCore::RenderThemeIOS::paintSearchFieldResultsButton):

LayoutTests:

Rebaselined tests to account for the change to the way we paint
searchfield decorations on iOS. Added a new test to verify that
'-webkit-appearance: none' is respected.

  • fast/forms/ios/form-control-refresh/search/search-decoration-appearance-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/search/search-decoration-appearance.html: Added.
  • platform/ios-simulator/fast/forms/datalist/datalist-searchinput-appearance-expected.txt:
  • platform/ios/fast/css/focus-ring-exists-for-search-field-expected.txt:
  • platform/ios/fast/css/input-search-padding-expected.txt:
  • platform/ios/fast/css/text-input-with-webkit-border-radius-expected.txt:
  • platform/ios/fast/css/text-overflow-input-expected.txt:
  • platform/ios/fast/forms/box-shadow-override-expected.txt:
  • platform/ios/fast/forms/control-restrict-line-height-expected.txt:
  • platform/ios/fast/forms/input-appearance-height-expected.txt:
  • platform/ios/fast/forms/placeholder-pseudo-style-expected.txt:
  • platform/ios/fast/forms/search-cancel-button-style-sharing-expected.txt:
  • platform/ios/fast/forms/search-display-none-cancel-button-expected.txt:
  • platform/ios/fast/forms/search-input-rtl-expected.txt:
  • platform/ios/fast/forms/search-styled-expected.txt:
  • platform/ios/fast/replaced/width100percent-searchfield-expected.txt:
4:45 AM Changeset in webkit [275354] by commit-queue@webkit.org
  • 16 edits in trunk/Source

Expose an alias for ScrollSnapOffsetInfo<T> to make it easier to use
https://bugs.webkit.org/show_bug.cgi?id=223986

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-04-01
Reviewed by Sergio Villar Senin.

Source/WebCore:

No new tests. This should not change behavior.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::setStateScrollingNodeSnapOffsetsAsFloat): Use new aliases.

  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::FloatScrollSnapOffsetsInfo::convertUnits const): Ditto.
(WebCore::LayoutScrollSnapOffsetsInfo::convertUnits const): Ditto.
(WebCore::LayoutScrollSnapOffsetsInfo::closestSnapOffset const): Ditto.
(WebCore::FloatScrollSnapOffsetsInfo::closestSnapOffset const): Ditto.
(WebCore::ScrollSnapOffsetsInfo<float>::convertUnits const): Deleted.
(WebCore::ScrollSnapOffsetsInfo<LayoutUnit>::convertUnits const): Deleted.
(WebCore::ScrollSnapOffsetsInfo<LayoutUnit>::closestSnapOffset const): Deleted.
(WebCore::ScrollSnapOffsetsInfo<float>::closestSnapOffset const): Deleted.

  • page/scrolling/ScrollSnapOffsetsInfo.h: Ditto.
  • page/scrolling/ScrollingStateScrollingNode.cpp:

(WebCore::ScrollingStateScrollingNode::setSnapOffsetsInfo): Ditto.

  • page/scrolling/ScrollingStateScrollingNode.h:

(WebCore::ScrollingStateScrollingNode::snapOffsetsInfo const): Ditto.

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::snapOffsetsInfo const): Ditto.

  • page/scrolling/ScrollingTreeScrollingNode.h: Ditto.
  • platform/ScrollController.cpp:

(WebCore::ScrollController::updateScrollSnapPoints): Ditto.

  • platform/ScrollController.h: Ditto.
  • platform/ScrollSnapAnimatorState.h:

(WebCore::ScrollSnapAnimatorState::snapOffsetInfo const): Ditto.
(WebCore::ScrollSnapAnimatorState::setSnapOffsetInfo): Ditto.

  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::ensureSnapOffsetsInfo): Ditto.
(WebCore::ScrollableArea::snapOffsetInfo const): Ditto.
(WebCore::ScrollableArea::setScrollSnapOffsetInfo): Ditto.

  • platform/ScrollableArea.h: Ditto.
  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::gestureShouldBeginSnap): Ditto.

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<ScrollingStateScrollingNode>::decode): Use new aliases.
(ArgumentCoder<FloatScrollSnapOffsetsInfo>::encode): Ditto.
(ArgumentCoder<FloatScrollSnapOffsetsInfo>::decode): Ditto.
(ArgumentCoder<ScrollSnapOffsetsInfo<float>>::encode): Deleted.
(ArgumentCoder<ScrollSnapOffsetsInfo<float>>::decode): Deleted.

4:36 AM Changeset in webkit [275353] by Jonathan Bedard
  • 8 edits in trunk/Tools

[webkitscmpy] Improve git-svn-id regex
https://bugs.webkit.org/show_bug.cgi?id=224008
<rdar://problem/76062561>

Rubber-stamped by Aakash Jain.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git.commit): Strip leading spaces before parsing the commit message.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py: Ensure that git-svn-id lines

are printed to stdout with leading spaces.

  • Scripts/libraries/webkitscmpy/webkitscmpy/scm_base.py:

(ScmBase): Only match git-svn-id lines if they are at the beginning of a line.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/canonicalize_unittest.py:
  • Scripts/libraries/webkitscmpy/webkitscmpy/test/find_unittest.py:
4:06 AM Changeset in webkit [275352] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Support case where contributor did not define email
https://bugs.webkit.org/show_bug.cgi?id=224005
<rdar://problem/76058258>

Rubber-stamped by Aakash Jain.

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

(Contributor):
(Contributor.Mapping.create): An email of 'None' should not be indexed.
(Contributor.from_scm_log): Handle case where contributor is defined, but email isn't.

3:26 AM Changeset in webkit [275351] by commit-queue@webkit.org
  • 10 edits
    6 adds in trunk

Use Element for checking Settings in CSSComputedStyleDeclaration
https://bugs.webkit.org/show_bug.cgi?id=223598

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-01
Reviewed by Darin Adler.

Source/WebCore:

Use Element for checking Settings in CSSComputedStyleDeclaration.
Right now renderer is used but this will not work for non-rendered elements.

Tests: fast/css/rotate-invalidate-if-disabled.html

fast/css/scale-invalidate-if-disabled.html
fast/css/translate-invalidate-if-disabled.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

LayoutTests:

Adapt tests to verify that non-rendered elements do not expose
contain/aspect-ratio when these features are disabled.
Add tests for rotate, scale and translate as well.

  • fast/css/aspect-ratio-invalidate-if-disabled-expected.txt:
  • fast/css/aspect-ratio-invalidate-if-disabled.html:
  • fast/css/contain-invalidate-if-disabled-expected.txt:
  • fast/css/contain-invalidate-if-disabled.html:
  • fast/css/overscroll-behavior-invalidate-if-disabled-expected.txt:
  • fast/css/overscroll-behavior-invalidate-if-disabled.html:
  • fast/css/rotate-invalidate-if-disabled-expected.txt: Added.
  • fast/css/rotate-invalidate-if-disabled.html: Added.
  • fast/css/scale-invalidate-if-disabled-expected.txt: Added.
  • fast/css/scale-invalidate-if-disabled.html: Added.
  • fast/css/translate-invalidate-if-disabled-expected.txt: Added.
  • fast/css/translate-invalidate-if-disabled.html: Added.
  • platform/win/TestExpectations:
3:07 AM Changeset in webkit [275350] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Add IOKit method filter telemetry
https://bugs.webkit.org/show_bug.cgi?id=223652
<rdar://problem/75751391>

Reviewed by Brent Fulgham.

Add IOKit method filter telemetry in the WebContent sandbox on macOS and iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
2:04 AM Changeset in webkit [275349] by Said Abou-Hallawa
  • 4 edits in trunk/Source/WebKit

[GPU Process] Process the pending messages of GPUProcessProxy before its destructor is called
https://bugs.webkit.org/show_bug.cgi?id=224017

Reviewed by Simon Fraser.

Ensure all the pending messages of the singleton GPUProcessProxy are
processed every time a WebProcessPool is about to be deleted. When calling
the completion handlers of these messages, the GPUProcessProxy and the
WebProcessPool have to be valid

  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::~AuxiliaryProcessProxy):
(WebKit::AuxiliaryProcessProxy::replyToPendingMessages):

  • UIProcess/AuxiliaryProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::~WebProcessPool):

1:05 AM Changeset in webkit [275348] by youenn@apple.com
  • 8 edits in trunk/Source/WebCore

Add some logging to RTCRtpSender and RTCRtpReceiver
https://bugs.webkit.org/show_bug.cgi?id=223991

Reviewed by Eric Carlson.

Add some logging around transforms.
No change of behavior.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::setRemoteDescriptionSucceeded):

  • Modules/mediastream/RTCRtpReceiver.cpp:

(WebCore::RTCRtpReceiver::RTCRtpReceiver):
(WebCore::RTCRtpReceiver::setTransform):
(WebCore::RTCRtpReceiver::logChannel const):

  • Modules/mediastream/RTCRtpReceiver.h:
  • Modules/mediastream/RTCRtpReceiver.idl:
  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::RTCRtpSender):
(WebCore::RTCRtpSender::setTransform):
(WebCore::RTCRtpSender::logChannel const):

  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSender.idl:

Mar 31, 2021:

11:38 PM Changeset in webkit [275347] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests/imported/w3c

Unreviewed. Import WPT test modified in https://github.com/web-platform-tests/wpt/pull/28315
with updated expectation showing a slight progression in a failing test (we fail the second
assertion instead of the first one).

  • web-platform-tests/css/css-fonts/animations/font-stretch-interpolation-expected.txt:
  • web-platform-tests/css/css-fonts/animations/font-stretch-interpolation.html:
11:33 PM Changeset in webkit [275346] by graouts@webkit.org
  • 12 edits
    1 copy in trunk/Source/WebCore

Move AnimationTimeline methods related to Styleable to Styleable
https://bugs.webkit.org/show_bug.cgi?id=224012

Reviewed by Dean Jackson.

A number of public methods on AnimationTimeline make no use of any AnimationTimeline instance
variables and instead call into Styleable:

void elementWasRemoved(const Styleable&);
void willChangeRendererForStyleable(const Styleable&);
void cancelDeclarativeAnimationsForStyleable(const Styleable&);
void animationWasAddedToStyleable(WebAnimation&, const Styleable&);
void animationWasRemovedFromStyleable(WebAnimation&, const Styleable&);
void removeDeclarativeAnimationFromListsForOwningElement(WebAnimation&, const Styleable&);
void updateCSSAnimationsForStyleable(const Styleable&, const RenderStyle* currentStyle, const RenderStyle& afterChangeStyle, const RenderStyle* parentElementStyle);
void updateCSSTransitionsForStyleable(const Styleable&, const RenderStyle& currentStyle, const RenderStyle& newStyle);

These really belong on Styleable so we move them all over to that class with a new .cpp class
for these non-trivial methods.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::removeAnimation):
(WebCore::AnimationTimeline::animationWasAddedToStyleable): Deleted.
(WebCore::removeCSSTransitionFromMap): Deleted.
(WebCore::AnimationTimeline::animationWasRemovedFromStyleable): Deleted.
(WebCore::AnimationTimeline::removeDeclarativeAnimationFromListsForOwningElement): Deleted.
(WebCore::AnimationTimeline::removeCSSAnimationCreatedByMarkup): Deleted.
(WebCore::AnimationTimeline::elementWasRemoved): Deleted.
(WebCore::AnimationTimeline::willChangeRendererForStyleable): Deleted.
(WebCore::AnimationTimeline::cancelDeclarativeAnimationsForStyleable): Deleted.
(WebCore::shouldConsiderAnimation): Deleted.
(WebCore::AnimationTimeline::updateCSSAnimationsForStyleable): Deleted.
(WebCore::keyframeEffectForElementAndProperty): Deleted.
(WebCore::propertyInStyleMatchesValueForTransitionInMap): Deleted.
(WebCore::transitionCombinedDuration): Deleted.
(WebCore::transitionMatchesProperty): Deleted.
(WebCore::compileTransitionPropertiesInStyle): Deleted.
(WebCore::AnimationTimeline::updateCSSTransitionsForStyleableAndProperty): Deleted.
(WebCore::AnimationTimeline::updateCSSTransitionsForStyleable): Deleted.

  • animation/AnimationTimeline.h:
  • animation/DeclarativeAnimation.cpp:

(WebCore::DeclarativeAnimation::disassociateFromOwningElement):

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setEffectInternal):
(WebCore::WebAnimation::setTimeline):
(WebCore::WebAnimation::effectTargetDidChange):
(WebCore::WebAnimation::persist):

  • dom/Element.cpp:

(WebCore::Element::removedFromAncestor):

  • dom/PseudoElement.cpp:

(WebCore::PseudoElement::clearHostElement):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::tearDownRenderers):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::createAnimatedElementUpdate):

  • style/Styleable.cpp: Copied from Source/WebCore/animation/AnimationTimeline.cpp.

(WebCore::Styleable::animationWasAdded const):
(WebCore::removeCSSTransitionFromMap):
(WebCore::Styleable::removeDeclarativeAnimationFromListsForOwningElement const):
(WebCore::Styleable::animationWasRemoved const):
(WebCore::removeCSSAnimationCreatedByMarkup):
(WebCore::Styleable::elementWasRemoved const):
(WebCore::Styleable::willChangeRenderer const):
(WebCore::Styleable::cancelDeclarativeAnimations const):
(WebCore::shouldConsiderAnimation):
(WebCore::Styleable::updateCSSAnimations const):
(WebCore::keyframeEffectForElementAndProperty):
(WebCore::propertyInStyleMatchesValueForTransitionInMap):
(WebCore::transitionCombinedDuration):
(WebCore::transitionMatchesProperty):
(WebCore::compileTransitionPropertiesInStyle):
(WebCore::updateCSSTransitionsForStyleableAndProperty):
(WebCore::Styleable::updateCSSTransitions const):

  • style/Styleable.h:
9:03 PM Changeset in webkit [275345] by Simon Fraser
  • 18 edits in trunk/Source

Feed preferred frames per second back to the UI process for each DisplayRefreshMonitor
https://bugs.webkit.org/show_bug.cgi?id=224023

Reviewed by Sam Weinig.

Source/WebCore:

DisplayRefreshMonitors should be responsive to the frame rate demands of their clients,
so move from a model where DisplayRefreshMonitor has setPreferredFramesPerSecond()
to one where it computes maxClientPreferredFramesPerSecond().

DisplayRefreshMonitor needs to recompute maxClientPreferredFramesPerSecond when clients
are added, removed, or when the preferred frame rate of a client changes.

For now, just one of the DisplayRefreshMonitor implementations responds to adjustPreferredFramesPerSecond:
DisplayRefreshMonitorMac sends IPC to the UI process, which DisplayLink can use on a per-connection
basis to throttle the frequency of display updates sent to that process (which is important
for power).

  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::addClient):
(WebCore::DisplayRefreshMonitor::removeClient):
(WebCore::DisplayRefreshMonitor::maximumClientPreferredFramesPerSecond const):
(WebCore::DisplayRefreshMonitor::computeMaxPreferredFramesPerSecond):
(WebCore::DisplayRefreshMonitor::clientPreferredFramesPerSecondChanged):

  • platform/graphics/DisplayRefreshMonitor.h:

(WebCore::DisplayRefreshMonitor::maxClientPreferredFramesPerSecond const):
(WebCore::DisplayRefreshMonitor::adjustPreferredFramesPerSecond):
(WebCore::DisplayRefreshMonitor::setPreferredFramesPerSecond): Deleted.

  • platform/graphics/DisplayRefreshMonitorClient.cpp:

(WebCore::DisplayRefreshMonitorClient::setPreferredFramesPerSecond):

  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::clientPreferredFramesPerSecondChanged):
(WebCore::DisplayRefreshMonitorManager::setPreferredFramesPerSecond): Deleted.

  • platform/graphics/DisplayRefreshMonitorManager.h:

Source/WebKit:

DisplayLink needs to track the preferredFramesPerSecond of each of its client
observers. notifyObserversDisplayWasRefreshed() can then avoid sending IPC to
a process a frequency which is higher than that process needs.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::startDisplayLink):
(WebKit::WebProcessPool::setDisplayLinkPreferredFramesPerSecond):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::addObserver):
(WebKit::DisplayLink::removeObserver):
(WebKit::DisplayLink::removeObservers):
(WebKit::DisplayLink::setPreferredFramesPerSecond):
(WebKit::DisplayLink::notifyObserversDisplayWasRefreshed):

  • UIProcess/mac/DisplayLink.h:
  • UIProcess/mac/WebProcessProxyMac.mm:

(WebKit::WebProcessProxy::startDisplayLink):
(WebKit::WebProcessProxy::setDisplayLinkPreferredFramesPerSecond):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::adjustPreferredFramesPerSecond):
(WebKit::RemoteLayerTreeDisplayRefreshMonitor::setPreferredFramesPerSecond): Deleted.

  • WebProcess/WebPage/mac/DisplayRefreshMonitorMac.cpp:

(WebKit::DisplayRefreshMonitorMac::startNotificationMechanism):
(WebKit::DisplayRefreshMonitorMac::adjustPreferredFramesPerSecond):

  • WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h:
8:18 PM Changeset in webkit [275344] by Chris Dumez
  • 2 edits in trunk/Tools

Add API test for Bug 224022
https://bugs.webkit.org/show_bug.cgi?id=224024

Reviewed by Alex Christensen.

The way to reproduce the bug was to make sure that the NetworkProcessProxy was not associated
with any datastore at the time of the crash, then construct a new view and do a load, which
would hang.

If the NetworkProcessProxy was associated with a datastore and the WKWebSiteDataStore's
m_networkProcess was not null, then WebsiteDataStore::networkProcessCrashed() would take
care of calling m_networkProcess->didTerminate(), which would destroy the NetworkProcessProxy
singleton.

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(TEST):

7:55 PM Changeset in webkit [275343] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

UBSan: JSC::Parser<LexerType>::parseProperty(): runtime error: load of value nnn, which is not a valid value for type 'bool'
<https://webkit.org/b/223896>
<rdar://problem/75970132>

Reviewed by Darin Adler.

Based on a suggestion by Darin Adler.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseProperty):

  • Change 'escaped' to 'wasUnescapedIdent' to avoid the undefined behavior since m_token.m_data.escaped is only set in the case when an identifer is parsed (in Lexer<>::parseIdentifer()), not a string (in Lexer<>::parseString()). This simplifies the logic later in the method.
7:32 PM Changeset in webkit [275342] by Kocsen Chung
  • 1 copy in tags/Safari-612.1.7.13

Tag Safari-612.1.7.13.

7:31 PM Changeset in webkit [275341] by Patrick Angle
  • 2 edits in trunk/Source/WebKit

Web Inspector: [Cocoa] WKInspectorResourceURLSchemeHandler can exceed the soft thread limit when opening multiple inspectors simultaneously.
https://bugs.webkit.org/show_bug.cgi?id=223958

Reviewed by BJ Burg.

In engineering builds, the Web Inspector is loaded as hundreds of separate resources instead of the handful of
minified sources used for released builds. When two Web Inspector windows are opened their loads can overlap
and it is possible for the sum total of file load operations to exceed the dispatch soft thread limit. To
resolve this, we set a sensible limit to the number of simultaneous inspector loading operations. A higher
number of allowed concurrent operations yielded no noticeable increase in load speeds.

  • UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:

(-[WKInspectorResourceURLSchemeHandler webView:startURLSchemeTask:]):

7:30 PM Changeset in webkit [275340] by Kocsen Chung
  • 8 edits in branches/safari-612.1.7-branch/Source

Versioning.

WebKit-7612.1.7.13

7:26 PM Changeset in webkit [275339] by Kocsen Chung
  • 1 copy in tags/Safari-612.1.8.3

Tag Safari-612.1.8.3.

7:21 PM Changeset in webkit [275338] by Kocsen Chung
  • 8 edits in branches/safari-612.1.8-branch/Source

Versioning.

WebKit-7612.1.8.3

7:02 PM Changeset in webkit [275337] by Patrick Angle
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Regression (r270134) Timeline recordings 2 and beyond do not show a timescale.
https://bugs.webkit.org/show_bug.cgi?id=222930

Reviewed by Devin Rousso.

When a new TimelineOverview is created, it calls TimelineOverview.prototype._viewModeDidChange inside the
constructor, which in turn called updateLayout. This was problematic in that a TimelineRuler would have
sizeDidChange invoked before it was attached to the DOM, which meant that there was no width to cache. Because
sizeDidChange is only invoked during the first layout and on resize events, the cached width is not updated
when the ruler is attached to the view hierarchy, having already performed an early initial layout.

This patch now checks if the TimelineOverview has performed its initial layout before updating the layout
inside _viewModeDidChange, which means that the initial layout on the child TimelineRuler will be done while
attached, thus producing a valid width value to cache.

  • UserInterface/Views/TimelineOverview.js:

(WI.TimelineRuler.prototype._viewModeDidChange):

6:53 PM Changeset in webkit [275336] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ Debug wk2 ] ASSERTION FAILED: willBeComposited == needsToBeComposited(layer, queryData)
https://bugs.webkit.org/show_bug.cgi?id=223750

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Adding the Failure back to the test expectations that I removed during the prior update.
6:42 PM Changeset in webkit [275335] by Robert Jenner
  • 3 edits in trunk/LayoutTests

ASSERTION FAILED: CustomElementReactionDisallowedScope::isReactionAllowed() ./dom/CustomElementReactionQueue.cpp(175) : static void WebCore::CustomElementReactionQueue::enqueueDisconnectedCallbackIfNeeded(WebCore::Element &)
https://bugs.webkit.org/show_bug.cgi?id=224033

Uneviewed test gardening.

  • platform/ios-simulator/TestExpectations: Updated test expectations while test is reviewed.
  • platform/mac/TestExpectations:
6:39 PM Changeset in webkit [275334] by Wenson Hsieh
  • 9 edits in trunk

List of extents should be bounds-checked when iterating display list items
https://bugs.webkit.org/show_bug.cgi?id=224019
<rdar://problem/71851600>

Reviewed by Tim Horton.

Source/WebCore:

Add a bounds check before attempting to access the vector of display list drawing item extents. In the case
where we would've otherwise attempted to access an out-of-bounds item, we instead flag ourselves as invalid and
stop early with StopReplayReason::InvalidItemOrExtent.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::setTracksDrawingItemExtents):

Drive-by fix: use isEmpty() in the release assertion instead of duplicating code.

(WebCore::DisplayList::DisplayList::iterator::updateCurrentDrawingItemExtent):
(WebCore::DisplayList::DisplayList::iterator::updateCurrentItem):

  • platform/graphics/displaylists/DisplayList.h:
  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::applyItem):
(WebCore::DisplayList::Replayer::replay):

  • platform/graphics/displaylists/DisplayListReplayer.h:

Rename the StopReplayReason::InvalidItem to StopReplayReason::InvalidItemOrExtent, to reflect that we may
also stop replay when encountering invalid item extents.

Source/WebKit:

Rename InvalidItem to InvalidItemOrExtent.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):

Tools:

Rename InvalidItem to InvalidItemOrExtent.

  • TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:

(TestWebKitAPI::TEST):

6:38 PM Changeset in webkit [275333] by Tadeu Zagallo
  • 3 edits
    2 adds in trunk

Missing scope release in JSDOMBuiltinConstructorBase
https://bugs.webkit.org/show_bug.cgi?id=216851
<rdar://problem/69144642>

Reviewed by Yusuke Suzuki.

Source/WebCore:

In JSDOMBuiltinConstructorBase::callFunctionWithCurrentArguments, we should release the
ThrowScope before calling into JavaScript since we don't intend to handle the exception.

Test: js/transform-stream.html

  • bindings/js/JSDOMBuiltinConstructorBase.cpp:

(WebCore::JSDOMBuiltinConstructorBase::callFunctionWithCurrentArguments):

LayoutTests:

  • js/dom/transform-stream-expected.txt: Added.
  • js/dom/transform-stream.html: Added.
6:16 PM Changeset in webkit [275332] by Chris Gambrell
  • 42 edits
    4 moves
    28 adds
    29 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/appcache convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=221286
<rdar://problem/73893844>

Reviewed by Jonathan Bedard.

  • TestExpectations:
  • http/tests/appcache/404-resource-with-slow-main-resource.php: Removed.
  • http/tests/appcache/404-resource-with-slow-main-resource.py: Added.
  • http/tests/appcache/abort-cache-onchecking-manifest-404.html:
  • http/tests/appcache/abort-cache-onchecking.html:
  • http/tests/appcache/access-via-redirect.php: Removed.
  • http/tests/appcache/access-via-redirect.py: Added.
  • http/tests/appcache/auth.html:
  • http/tests/appcache/document-cookie-http-only.php: Removed.
  • http/tests/appcache/document-cookie-http-only.py: Added.
  • http/tests/appcache/document-cookie.php: Removed.
  • http/tests/appcache/document-cookie.py: Added.
  • http/tests/appcache/fail-on-update-2.html:
  • http/tests/appcache/fail-on-update.html:
  • http/tests/appcache/fallback.html:
  • http/tests/appcache/identifier-test.html:
  • http/tests/appcache/main-resource-redirect.html:
  • http/tests/appcache/manifest-redirect-2.html:
  • http/tests/appcache/manifest-redirect.html:
  • http/tests/appcache/online-whitelist.html:
  • http/tests/appcache/remove-cache.html:
  • http/tests/appcache/resource-redirect-2-expected.txt:
  • http/tests/appcache/resource-redirect-expected.txt:
  • http/tests/appcache/resources/abort-cache-onchecking-resource-404.manifest:
  • http/tests/appcache/resources/abort-cache-onchecking.manifest.php: Removed.
  • http/tests/appcache/resources/abort-cache-onchecking.manifest.py: Added.
  • http/tests/appcache/resources/abort-cache-ondownloading.manifest:
  • http/tests/appcache/resources/abort-cache-ondownloading.text.php: Removed.
  • http/tests/appcache/resources/abort-cache-ondownloading.text.py: Added.
  • http/tests/appcache/resources/abort-cache-onprogress.manifest:
  • http/tests/appcache/resources/access-via-redirect.html:
  • http/tests/appcache/resources/appcache-cookies-test.html:
  • http/tests/appcache/resources/auth/iframe.php: Removed.
  • http/tests/appcache/resources/auth/iframe.py: Added.
  • http/tests/appcache/resources/auth/manifest.php: Removed.
  • http/tests/appcache/resources/auth/manifest.py: Added.
  • http/tests/appcache/resources/auth/setup.php: Removed.
  • http/tests/appcache/resources/auth/setup.py: Added.
  • http/tests/appcache/resources/auth/subresource.php: Removed.
  • http/tests/appcache/resources/auth/subresource.py: Added.
  • http/tests/appcache/resources/cookie-protected-script.php: Removed.
  • http/tests/appcache/resources/cookie-protected-script.py: Added.
  • http/tests/appcache/resources/document-cookie.manifest:
  • http/tests/appcache/resources/fail-on-update-2.html:
  • http/tests/appcache/resources/fail-on-update-2.php: Removed.
  • http/tests/appcache/resources/fail-on-update-2.py: Added.
  • http/tests/appcache/resources/fail-on-update.php: Removed.
  • http/tests/appcache/resources/fail-on-update.py: Added.
  • http/tests/appcache/resources/fallback-redirect.php: Removed.
  • http/tests/appcache/resources/fallback-redirect.py: Added.
  • http/tests/appcache/resources/identifier-test-real.php: Removed.
  • http/tests/appcache/resources/identifier-test-real.py: Added.
  • http/tests/appcache/resources/identifier-test.php: Removed.
  • http/tests/appcache/resources/identifier-test.py: Added.
  • http/tests/appcache/resources/intercept/.htaccess:
  • http/tests/appcache/resources/main-resource-redirect-frame.php: Removed.
  • http/tests/appcache/resources/main-resource-redirect-frame.py: Added.
  • http/tests/appcache/resources/manifest-if-cookie.php: Removed.
  • http/tests/appcache/resources/manifest-if-cookie.py: Added.
  • http/tests/appcache/resources/manifest-protected-script.php: Removed.
  • http/tests/appcache/resources/manifest-redirect-2.php: Removed.
  • http/tests/appcache/resources/manifest-redirect-2.py: Added.
  • http/tests/appcache/resources/manifest-redirect.php: Removed.
  • http/tests/appcache/resources/manifest-redirect.py: Added.
  • http/tests/appcache/resources/navigating-away-while-cache-attempt-in-progress.manifest:
  • http/tests/appcache/resources/not-exist.vob.php: Removed.
  • http/tests/appcache/resources/not-exist.vob.py: Added.
  • http/tests/appcache/resources/online-allowlist.manifest:
  • http/tests/appcache/resources/online-allowlist.php: Removed.
  • http/tests/appcache/resources/online-allowlist.py: Added.
  • http/tests/appcache/resources/print-uri.php: Removed.
  • http/tests/appcache/resources/print-uri.py: Added.
  • http/tests/appcache/resources/remove-cache-frame-2.html:
  • http/tests/appcache/resources/remove-cache-frame.html:
  • http/tests/appcache/resources/remove-cache.php: Removed.
  • http/tests/appcache/resources/remove-cache.py: Added.
  • http/tests/appcache/resources/resource-redirect-2.manifest:
  • http/tests/appcache/resources/resource-redirect-2.php: Removed.
  • http/tests/appcache/resources/resource-redirect-2.py: Added.
  • http/tests/appcache/resources/resource-redirect.manifest:
  • http/tests/appcache/resources/resource-redirect.php: Removed.
  • http/tests/appcache/resources/resource-redirect.py: Added.
  • http/tests/appcache/resources/scope1/cookie-protected-manifest.php: Removed.
  • http/tests/appcache/resources/scope1/cookie-protected-manifest.py: Added.
  • http/tests/appcache/resources/scope2/cookie-protected-script.php: Removed.
  • http/tests/appcache/resources/scope2/cookie-protected-script.py: Added.
  • http/tests/appcache/resources/slow-resource.php: Removed.
  • http/tests/appcache/resources/slow-resource.py: Added.
  • http/tests/appcache/resources/uncacheable-resource.php: Removed.
  • http/tests/appcache/resources/uncacheable-resource.py: Added.
  • http/tests/appcache/resources/update-cache.php: Removed.
  • http/tests/appcache/resources/update-cache.py: Added.
  • http/tests/appcache/resources/x-frame-options-prevents-framing-test.html:
  • http/tests/appcache/update-cache.html:
  • http/tests/appcache/x-frame-options-prevents-framing-expected.txt:
  • http/tests/appcache/x-frame-options-prevents-framing.php: Removed.
  • http/tests/appcache/x-frame-options-prevents-framing.py: Added.
  • http/tests/resources/portabilityLayer.py:

(get_count):
(get_state):
(set_state):
(step_state):
(setState): Deleted.
(getState): Deleted.

  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-invalidation.py:
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-timeout.py:
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache.py:
  • http/tests/xmlhttprequest/resources/access-control-preflight-denied-xsrf.py:
  • http/tests/xmlhttprequest/resources/no-custom-header.py:
  • http/tests/xmlhttprequest/resources/redirect-cross-origin-tripmine.py:
  • http/tests/xmlhttprequest/resources/remember-bad-password/count-failures.py:
  • platform/ios-wk2/TestExpectations:
6:12 PM Changeset in webkit [275331] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ARM64 ] tiled-drawing/top-content-inset-fixed-attachment-cover-local.html is a flakey Image failure
https://bugs.webkit.org/show_bug.cgi?id=224032

Uneviewed test garending.

  • platform/mac-wk2/TestExpectations: Updated test expectations to Pass ImageOnlyFailure while test is reviewed.
5:58 PM Changeset in webkit [275330] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] media/pip-video-going-into-fullscreen.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=223762

Patch by Peng Liu <Peng Liu> on 2021-03-31
Reviewed by Eric Carlson.

Fix a flaky test related to video fullscreen by:
1) Wait for a video presentation mode change to complete before moving to the next step in the test.
2) Request the video to exit fullscreen before endTest() (to avoid interference with other tests).

  • media/pip-video-going-into-fullscreen-expected.txt:
  • media/pip-video-going-into-fullscreen.html:
  • platform/mac-wk2/TestExpectations:
5:50 PM Changeset in webkit [275329] by zhifei_fang@apple.com
  • 12 edits in trunk/Websites/perf.webkit.org

Add commit revision label support
https://bugs.webkit.org/show_bug.cgi?id=222897

Reviewed by Ryosuke Niwa.

Add new column revision label.
Make all commit api also can work with revision label.
Change the commit label display with commit revision label.

  • browser-tests/commit-log-viewer-tests.js: Fix a failed test case, while requesting the remote api,

we should wait for those promises resolved and then wait for commponent to render.

  • init-database.sql: Add new column revision_identifier.
  • migrate-database.sql: Add new column revision_identifier.
  • public/include/commit-log-fetcher.php: Make api that works with revision should work with revision label.
  • public/include/commit-updater.php: Ditto.
  • public/include/report-processor.php: Make the processor can also insert revision label.
  • public/v3/models/commit-log.js:

(CommitLog.prototype.updateSingleton):
(CommitLog.prototype.revisionIdentifier):
(CommitLog.prototype.label): Make the label include revision label and revision.
(CommitLog.prototype.diff): Make the diff label include revision label and revision.

  • server-tests/api-commits-tests.js:
  • server-tests/api-report-commits-tests.js:
  • server-tests/api-report-tests.js:

(reportWithRevisionIdentifierCommit):

  • unit-tests/commit-log-tests.js:
5:47 PM Changeset in webkit [275328] by Peng Liu
  • 4 edits in trunk/LayoutTests

[ macOS wk2 ] media/pip-video-going-into-fullscreen.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=223762

Reviewed by Eric Carlson.

Fix a flaky test related to video fullscreen by:
1) Wait for a video presentation mode change to complete before moving to the next step in the test.
2) Request the video to exit fullscreen before endTest() (to avoid interference with other tests).

  • media/pip-video-going-into-fullscreen-expected.txt:
  • media/pip-video-going-into-fullscreen.html:
  • platform/mac-wk2/TestExpectations:
5:39 PM Changeset in webkit [275327] by Chris Dumez
  • 6 edits in trunk/Source

Use MACH_PORT_VALID() when wanting to check if a mach port is valid
https://bugs.webkit.org/show_bug.cgi?id=224004

Reviewed by Darin Adler.

Use MACH_PORT_VALID() when wanting to check if a mach port is valid, instead of checking for
MACH_PORT_NULL. MACH_PORT_VALID() is the correct way to check for validity since it also checks
for the MACH_PORT_DEAD value.

Source/WebCore:

  • page/cocoa/ResourceUsageThreadCocoa.mm:

(WebCore::ResourceUsageThread::platformCollectCPUData):

  • platform/graphics/mac/GraphicsChecksMac.cpp:

(WebCore::attachToAppleGraphicsControl):
(WebCore::hasMuxCapability):

Source/WebKitLegacy/mac:

  • Plugins/Hosted/NetscapePluginHostManager.mm:

(WebKit::NetscapePluginHostManager::spawnPluginHost):

  • Plugins/Hosted/NetscapePluginHostProxy.mm:

(WebKit::NetscapePluginHostProxy::processRequests):

5:33 PM Changeset in webkit [275326] by Cameron McCormack
  • 3 edits
    2 adds in trunk

Avoid creating any complex text runs when font-size is zero.
https://bugs.webkit.org/show_bug.cgi?id=223983

Reviewed by Myles C. Maxfield.

Source/WebCore:

We have existing checks to handle font-size: 0 on the simple
text path, but not for complex text. Handle this by creating
no complex text runs for text with zero size.

Test: fast/text/font-size-zero-complex.html

  • platform/graphics/ComplexTextController.cpp:

(WebCore::ComplexTextController::collectComplexTextRuns):

LayoutTests:

  • fast/text/font-size-zero-complex-expected.html: Added.
  • fast/text/font-size-zero-complex.html: Added.
5:30 PM Changeset in webkit [275325] by Russell Epstein
  • 1 copy in tags/Safari-611.1.21.161.3

Tag Safari-611.1.21.161.3.

5:29 PM Changeset in webkit [275324] by mark.lam@apple.com
  • 3 edits
    2 adds in trunk

Placate exception check validation below convertVariadicArguments().
https://bugs.webkit.org/show_bug.cgi?id=224027
rdar://68912995

Reviewed by Saam Barati.

Source/WebCore:

Test: js/dom/missing-exception-check-in-convertVariadicArguments.html

  • bindings/js/JSDOMConvertVariadic.h:

(WebCore::convertVariadicArguments):

LayoutTests:

  • js/dom/missing-exception-check-in-convertVariadicArguments-expected.txt: Added.
  • js/dom/missing-exception-check-in-convertVariadicArguments.html: Added.
5:18 PM Changeset in webkit [275323] by Russell Epstein
  • 2 edits in branches/safari-611.1.21.161-branch/Source/WebKit

Cherry-pick r275316. rdar://problem/76078629

REGRESSION: The NetworkProcess fails to relaunch after it crashes
https://bugs.webkit.org/show_bug.cgi?id=224022
<rdar://75148724>

Reviewed by Darin Adler.

NetworkProcessProxy::networkProcessCrashed() failed to clear defaultNetworkProcess() like we do on
network process termination (in NetworkProcessProxy::didTerminate()). As a result, upon a
network process crash, WebsiteDataStore::networkProcessCrashed() would get called and
properly clear WebsiteDataStore::m_networkProcess. However, when calling
WebsiteDataStore::networkProcess() later on, it would re-initialize m_networkProcess with
the same dead NetworkProcessProxy, since networkProcessForSession() relies on
NetworkProcessProxy::defaultNetworkProcess().

No new tests, will land an API test shortly as a follow-up.

  • UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::networkProcessCrashed):

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

5:16 PM Changeset in webkit [275322] by Russell Epstein
  • 8 edits in branches/safari-611.1.21.161-branch/Source

Versioning.

WebKit-7611.1.21.161.3

5:12 PM Changeset in webkit [275321] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

REGRESSION (Metal ANGLE): [Catalina] 6 consistent WebGL failures / timeouts
https://bugs.webkit.org/show_bug.cgi?id=224016

Unreviewed test gardening.

  • platform/mac/TestExpectations: Mark tests as failing / skipped.
4:38 PM Changeset in webkit [275320] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Null pointer access crash in WebCore::makeBoundaryPoint(..)
https://bugs.webkit.org/show_bug.cgi?id=223977

Patch by Venky Dass <yaranamavenkataramana@apple.com> on 2021-03-31
Reviewed by Darin Adler.

Source/WebCore:

In makeBoundaryPoint, position.containerNode() can be nullptr even if position.isNull() was false

Test: LayoutTests/editing/inserting/crash-make-boundary-point.html

  • dom/Position.cpp:

(WebCore::makeBoundaryPoint):

LayoutTests:

Adding a refression test case.

  • editing/inserting/crash-make-boundary-point-expected.txt: Added.
  • editing/inserting/crash-make-boundary-point.html: Added.
4:35 PM Changeset in webkit [275319] by Russell Epstein
  • 1 copy in tags/Safari-611.1.21.0.13

Tag Safari-611.1.21.0.13.

4:34 PM Changeset in webkit [275318] by Russell Epstein
  • 2 edits in branches/safari-611.1.21.0-branch/Source/WebKit

Cherry-pick r275316. rdar://problem/76077169

REGRESSION: The NetworkProcess fails to relaunch after it crashes
https://bugs.webkit.org/show_bug.cgi?id=224022
<rdar://75148724>

Reviewed by Darin Adler.

NetworkProcessProxy::networkProcessCrashed() failed to clear defaultNetworkProcess() like we do on
network process termination (in NetworkProcessProxy::didTerminate()). As a result, upon a
network process crash, WebsiteDataStore::networkProcessCrashed() would get called and
properly clear WebsiteDataStore::m_networkProcess. However, when calling
WebsiteDataStore::networkProcess() later on, it would re-initialize m_networkProcess with
the same dead NetworkProcessProxy, since networkProcessForSession() relies on
NetworkProcessProxy::defaultNetworkProcess().

No new tests, will land an API test shortly as a follow-up.

  • UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::networkProcessCrashed):

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

4:32 PM Changeset in webkit [275317] by Russell Epstein
  • 8 edits in branches/safari-611.1.21.0-branch/Source

Versioning.

WebKit-7611.1.21.0.13

4:19 PM Changeset in webkit [275316] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

REGRESSION: The NetworkProcess fails to relaunch after it crashes
https://bugs.webkit.org/show_bug.cgi?id=224022
<rdar://75148724>

Reviewed by Darin Adler.

NetworkProcessProxy::networkProcessCrashed() failed to clear defaultNetworkProcess() like we do on
network process termination (in NetworkProcessProxy::didTerminate()). As a result, upon a
network process crash, WebsiteDataStore::networkProcessCrashed() would get called and
properly clear WebsiteDataStore::m_networkProcess. However, when calling
WebsiteDataStore::networkProcess() later on, it would re-initialize m_networkProcess with
the same dead NetworkProcessProxy, since networkProcessForSession() relies on
NetworkProcessProxy::defaultNetworkProcess().

No new tests, will land an API test shortly as a follow-up.

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::networkProcessCrashed):

4:15 PM Changeset in webkit [275315] by Chris Gambrell
  • 53 edits
    19 adds
    24 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/contentextensions convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=223891
<rdar://problem/75965634>

Reviewed by Jonathan Bedard.

  • http/tests/contentextensions/block-cookies-basic.html:
  • http/tests/contentextensions/block-cookies-basic.html.json:
  • http/tests/contentextensions/block-cookies-in-image-load-in-onunload.html:
  • http/tests/contentextensions/block-cookies-in-ping.html:
  • http/tests/contentextensions/block-cookies-send.html:
  • http/tests/contentextensions/resources/save_ping.py:

(not_being_called):

  • http/tests/cookies/cookie-with-multiple-level-path.html:
  • http/tests/cookies/document-cookie-after-showModalDialog.html:
  • http/tests/cookies/document-cookie-during-iframe-parsing.html:
  • http/tests/cookies/only-accept-first-party-cookies.html:
  • http/tests/cookies/resources/cookie-utilities.js:
  • http/tests/cookies/resources/cookie-utility.php: Removed.
  • http/tests/cookies/resources/cookie-utility.py: Added.

(delete_cookie):

  • http/tests/cookies/resources/cookie-with-multiple-level-path.php: Removed.
  • http/tests/cookies/resources/cookie-with-multiple-level-path.py: Added.
  • http/tests/cookies/resources/echo-cookies.php: Removed.
  • http/tests/cookies/resources/echo-cookies.py: Added.
  • http/tests/cookies/resources/echo-http-and-dom-cookies-and-notify-done.php: Removed.
  • http/tests/cookies/resources/echo-http-and-dom-cookies-and-notify-done.py: Added.
  • http/tests/cookies/resources/echo-json.php: Removed.
  • http/tests/cookies/resources/echo-json.py: Added.
  • http/tests/cookies/resources/post-cookies-onmessage.php: Removed.
  • http/tests/cookies/resources/post-cookies-onmessage.py: Added.
  • http/tests/cookies/resources/post-cookies-to-opener.php: Removed.
  • http/tests/cookies/resources/post-cookies-to-opener.py: Added.
  • http/tests/cookies/resources/resetCookies.js:

(resetCookies):

  • http/tests/cookies/resources/set-cookie-and-redirect-back.php: Removed.
  • http/tests/cookies/resources/set-cookie-and-redirect-back.py: Added.
  • http/tests/cookies/resources/set-cookie-and-serve.php: Removed.
  • http/tests/cookies/resources/set-cookie-and-serve.py: Added.
  • http/tests/cookies/resources/set-cookie-on-redirect.php: Removed.
  • http/tests/cookies/resources/set-cookie-on-redirect.py: Added.
  • http/tests/cookies/resources/set-http-only-cookie.php: Removed.
  • http/tests/cookies/resources/set-http-only-cookie.py: Added.
  • http/tests/cookies/resources/setArraycookies-result.php: Removed.
  • http/tests/cookies/resources/setArraycookies.php: Removed.
  • http/tests/cookies/resources/setUtf8Cookies-result.php: Removed.
  • http/tests/cookies/resources/setUtf8Cookies.php: Removed.
  • http/tests/cookies/resources/third-party-cookie-relaxing-iframe.html:
  • http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page.html:
  • http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect.html:
  • http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page.html:
  • http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html:
  • http/tests/cookies/same-site/fetch-after-top-level-same-origin-redirect.html:
  • http/tests/cookies/same-site/fetch-in-same-origin-service-worker.html:
  • http/tests/cookies/same-site/lax-samesite-cookie-after-cross-site-history-load.php: Removed.
  • http/tests/cookies/same-site/lax-samesite-cookie-after-cross-site-history-load.py: Added.
  • http/tests/cookies/same-site/popup-cross-site-post.html:
  • http/tests/cookies/same-site/popup-cross-site.html:
  • http/tests/cookies/same-site/popup-same-site-post.html:
  • http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect.html:
  • http/tests/cookies/same-site/popup-same-site-via-same-site-redirect.html:
  • http/tests/cookies/same-site/popup-same-site.html:
  • http/tests/cookies/same-site/resources/click-hyperlink.php: Removed.
  • http/tests/cookies/same-site/resources/click-hyperlink.py: Added.
  • http/tests/cookies/same-site/resources/fetch-after-navigating-iframe-in-cross-origin-page.php: Removed.
  • http/tests/cookies/same-site/resources/fetch-after-navigating-iframe-in-cross-origin-page.py: Added.
  • http/tests/cookies/same-site/resources/fetch-after-top-level-cross-origin-redirect.php: Removed.
  • http/tests/cookies/same-site/resources/fetch-after-top-level-cross-origin-redirect.py: Added.
  • http/tests/cookies/same-site/resources/fetch-after-top-level-navigation-from-cross-origin-page.php: Removed.
  • http/tests/cookies/same-site/resources/fetch-after-top-level-navigation-from-cross-origin-page.py: Added.
  • http/tests/cookies/same-site/resources/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.php: Removed.
  • http/tests/cookies/same-site/resources/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.py: Added.
  • http/tests/cookies/same-site/resources/fetch-after-top-level-same-origin-redirect.php: Removed.
  • http/tests/cookies/same-site/resources/fetch-after-top-level-same-origin-redirect.py: Added.
  • http/tests/cookies/same-site/resources/fetch-in-same-origin-service-worker.php: Removed.
  • http/tests/cookies/same-site/resources/fetch-in-same-origin-service-worker.py: Added.
  • http/tests/cookies/same-site/resources/post-from-popup.html:
  • http/tests/cookies/same-site/set-first-party-cross-site-cookies.php:
  • http/tests/cookies/same-site/set-first-party-same-site-cookies.php:
  • http/tests/cookies/set-cookie-on-redirect.html:
  • http/tests/cookies/third-party-cookie-relaxing-expected.txt:
  • http/tests/plugins/resources/third-party-cookie-accept-policy-iframe.html:
  • http/tests/privateClickMeasurement/send-attribution-conversion-request.html:
  • http/tests/resourceLoadStatistics/delete-script-accessible-cookies.html:
  • http/tests/resourceLoadStatistics/exemptDomains/app-bound-domains-exempt-from-website-data-deletion-database.html:
  • http/tests/resourceLoadStatistics/exemptDomains/app-bound-domains-exempt-from-website-data-deletion.html:
  • http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-not-removed-with-user-interaction-6-days-ago.html:
  • http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-with-user-interaction-7-days-ago.html:
  • http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed.html:
  • http/tests/resourceLoadStatistics/resources/set-all-kinds-of-cookies.py:
  • http/tests/resourceLoadStatistics/resources/set-cookie-on-redirect.py:
  • http/tests/resourceLoadStatistics/resources/set-cookie.py:
  • http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion.html:
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html:
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-with-user-interaction.html:
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-without-user-interaction.html:
  • http/tests/resources/init.py: Removed.
  • http/tests/resources/portabilityLayer.py:

(get_cookies):
(getState):

  • http/tests/security/cookies/third-party-cookie-blocking-redirect.html:
  • http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-party.html:
  • http/tests/websocket/tests/hybi/websocket-blocked-from-setting-cookie-as-third-party.html:
  • http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior.html:
  • http/tests/xmlhttprequest/access-control-preflight-credential-async-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-credential-sync-expected.txt:
4:11 PM Changeset in webkit [275314] by eric.carlson@apple.com
  • 36 edits
    2 copies
    1 move in trunk

[macOS] MediaSessionCoordinator should have join and leave methods
https://bugs.webkit.org/show_bug.cgi?id=223955
<rdar://problem/76021588>

Reviewed by Jer Noble.
Source/WebCore:

Add 'join' and 'leave' methods to MediaSessionCoordinator so a page has to opt-in
to participating in a coordinated session and can leave at any time. Don't have
the coordinator automatically call session methods when the private coordinator
finishes, just signal the promise and let the page handle it.

No new tests, updated media/media-session/mock-coordinator.html.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/mediasession/MediaMetadata.idl: Fix Conditional.
  • Modules/mediasession/MediaMetadataPlaylistMixin.idl: Ditto.
  • Modules/mediasession/MediaPositionState.h: Add logging template.

(WTF::LogArgument<WebCore::MediaPositionState>::toString):

  • Modules/mediasession/MediaSession.cpp:

(WebCore::MediaSession::MediaSession): Switch from beging a ContextDestructionObserver
to an ActiveDOMObject to the wrapper won't be collected while an event dispatch
is pending.
(WebCore::MediaSession::virtualHasPendingActivity const): Prevent collection while
event dispatch is pending.
(WebCore::MediaSession::setPositionState): Improve logging.
(WebCore::MediaPositionState::toJSONString const):

  • Modules/mediasession/MediaSession.h:
  • Modules/mediasession/MediaSession.idl:
  • Modules/mediasession/MediaSessionCoordinator.cpp:

(WebCore::MediaSessionCoordinator::join): New.
(WebCore::MediaSessionCoordinator::leave): New.
(WebCore::MediaSessionCoordinator::seekTo): Reject unless state is 'joined'. Don't
call session method.
(WebCore::MediaSessionCoordinator::play): Ditto.
(WebCore::MediaSessionCoordinator::pause): Ditto.
(WebCore::MediaSessionCoordinator::setTrack): Ditto.
(WebCore::MediaSessionCoordinator::positionStateChanged):
(WebCore::MediaSessionCoordinator::playbackStateChanged):
(WebCore::MediaSessionCoordinator::readyStateChanged): Do nothing unless state is
'joined'. Improve logging.
(WebCore::MediaSessionCoordinator::seekSessionToTime): Ditto.
(WebCore::MediaSessionCoordinator::playSession): Ditto.
(WebCore::MediaSessionCoordinator::pauseSession): Ditto.
(WebCore::MediaSessionCoordinator::setSessionTrack): Ditto.

  • Modules/mediasession/MediaSessionCoordinator.h:

(WebCore::MediaSessionCoordinator::identifier const):
(WebCore::MediaSessionCoordinator::state const):

  • Modules/mediasession/MediaSessionCoordinator.idl:
  • Modules/mediasession/MediaSessionCoordinatorMixin.idl: Fix Conditional.
  • Modules/mediasession/MediaSessionCoordinatorPrivate.h: Declare new required methods.
  • Modules/mediasession/MediaSessionCoordinatorState.h: Define states.
  • Modules/mediasession/MediaSessionCoordinatorState.idl:
  • Modules/mediasession/MediaSessionPlaylistMixin.idl: Fix Conditional.
  • Sources.txt: Add JSMediaSessionCoordinatorState.cpp.
  • WebCore.xcodeproj/project.pbxproj:
  • testing/MockMediaSessionCoordinator.cpp:

(WebCore::MockMediaSessionCoordinator::join):
(WebCore::MockMediaSessionCoordinator::leave):
(WebCore::MockMediaSessionCoordinator::coordinatorStateChanged):

  • testing/MockMediaSessionCoordinator.h:

Source/WebKit:

  • UIProcess/Media/MediaSessionCoordinatorProxyPrivate.h: Renamed from Source/WebKit/UIProcess/Media/MediaSessionCoordinatorPrivateProxy.h.
  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:

(WebKit::RemoteMediaSessionCoordinatorProxy::create):
(WebKit::RemoteMediaSessionCoordinatorProxy::RemoteMediaSessionCoordinatorProxy):
(WebKit::RemoteMediaSessionCoordinatorProxy::join):
(WebKit::RemoteMediaSessionCoordinatorProxy::leave):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatorStateChanged):

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:
  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createMediaSessionCoordinator):

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp:

(WebKit::RemoteMediaSessionCoordinator::create):
(WebKit::RemoteMediaSessionCoordinator::RemoteMediaSessionCoordinator):
(WebKit::RemoteMediaSessionCoordinator::join):
(WebKit::RemoteMediaSessionCoordinator::leave):
(WebKit::RemoteMediaSessionCoordinator::coordinatorStateChanged):

  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::createMediaSessionCoordinator):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • UIProcess/Media/MediaSessionCoordinatorProxyPrivate.h: Renamed from Source/WebKit/UIProcess/Media/MediaSessionCoordinatorPrivateProxy.h.
  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:

(WebKit::RemoteMediaSessionCoordinatorProxy::create):
(WebKit::RemoteMediaSessionCoordinatorProxy::RemoteMediaSessionCoordinatorProxy):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatorStateChanged):

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:
  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createMediaSessionCoordinator):

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp:

(WebKit::RemoteMediaSessionCoordinator::create):
(WebKit::RemoteMediaSessionCoordinator::RemoteMediaSessionCoordinator):
(WebKit::RemoteMediaSessionCoordinator::coordinatorStateChanged):

  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::createMediaSessionCoordinator):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

LayoutTests:

  • media/media-session/mock-coordinator-expected.txt:
  • media/media-session/mock-coordinator.html:
4:05 PM Changeset in webkit [275313] by BJ Burg
  • 4 edits in trunk/Tools

Style checker should warn about use of future OS versions in WK_API_AVAILABLE
https://bugs.webkit.org/show_bug.cgi?id=223881

Reviewed by Jonathan Bedard.

Add some more brains to the WK_API_AVAILABLE style checker. It is now more
fussy and won't allow anything except a valid version string or a TBA macro.
There is also a mechanism to prevent adding version numbers that exceed the
publicly available SDK version for the relevant OS.

  • Scripts/webkitpy/common/version_name_map.py:

(VersionNameMap.mapping_for_platform): Add 'macos' as an alias for 'mac'.
(VersionNameMap.max_public_version): Added.

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

(check_arguments_for_wk_api_available):
(check_arguments_for_wk_api_available.max_version_for_platform):
(check_arguments_for_wk_api_available.check_version_string):
(check_style):
(check_min_versions_of_wk_api_available): Deleted.

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

(WebKitStyleTest):

3:36 PM Changeset in webkit [275312] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Remove misleading FIXME comment in RenderBox::shouldComputeLogicalWidthFromAspectRatioAndInsets
https://bugs.webkit.org/show_bug.cgi?id=224020

Reviewed by Simon Fraser.

RenderStyle should not contain such logic (or any layout related logic for that matter).

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::shouldComputeLogicalWidthFromAspectRatioAndInsets const):

3:32 PM Changeset in webkit [275311] by Robert Jenner
  • 2 edits in trunk/LayoutTests/imported/w3c

REGRESSION (r275227): [ macOS iOS Release ] imported/w3c/web-platform-tests/css/css-transitions/properties-value-003.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=224006

Uneviewed test gardening.

Rebaseline test that started to consantly fail.

  • web-platform-tests/css/css-transitions/properties-value-003-expected.txt:
3:31 PM Changeset in webkit [275310] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Autocomplete experimental CSS Color values (hwb, lch, lab, color-mix, color-contrast)
https://bugs.webkit.org/show_bug.cgi?id=224010
<rdar://problem/76065217>

Reviewed by BJ Burg.

  • UserInterface/Models/CSSKeywordCompletions.js:
3:11 PM Changeset in webkit [275309] by Robert Jenner
  • 2 edits in trunk/LayoutTests

REGRESSION (r275227): [ macOS iOS Release ] imported/w3c/web-platform-tests/css/css-transitions/properties-value-003.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=224006

Uneviewed test gardening.

  • platform/mac/TestExpectations: Removed test expectations because EWS was not flagging this failure.
3:03 PM Changeset in webkit [275308] by Chris Lord
  • 3 edits in trunk/Source/WebCore

Make FontCache self-contained (remove static global variables)
https://bugs.webkit.org/show_bug.cgi?id=223995

Reviewed by Darin Adler.

This refactors FontCache so that the iOS font lock, the
FontPlatformDataCache, the FontDataCache, the FontVerticalDataCache,
the FontSelector clients list and the generation counter all live on
FontCache instead of in static global variables.

No new tests, no change in behavior.

  • platform/graphics/FontCache.cpp:

(WebCore::FontCache::FontCache):
(WebCore::FontPlatformDataCacheKey::isHashTableDeletedValue const):
(WebCore::FontCache::getCachedFontPlatformData):
(WebCore::FontCache::verticalData):
(WebCore::FontCache::fontForPlatformData):
(WebCore::FontCache::purgeInactiveFontDataIfNeeded):
(WebCore::FontCache::purgeInactiveFontData):
(WebCore::FontCache::fontCount):
(WebCore::FontCache::inactiveFontCount):
(WebCore::FontCache::addClient):
(WebCore::FontCache::removeClient):
(WebCore::FontCache::invalidate):

  • platform/graphics/FontCache.h:

(WebCore::FontCache::generation const):

2:48 PM Changeset in webkit [275307] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

EWS should stress test newly added tests
https://bugs.webkit.org/show_bug.cgi?id=223938

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/config.json:
  • CISupport/ews-build/factories.py:

(Factory):
(StressTestFactory):

  • CISupport/ews-build/factories_unittest.py: Added unit-tests.
  • CISupport/ews-build/loadConfig.py:
2:45 PM Changeset in webkit [275306] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[iOS] Update a couple of icons in the file upload context menu
https://bugs.webkit.org/show_bug.cgi?id=224013
<rdar://problem/73234218>

Reviewed by Tim Horton.

Use updated symbols for the "Photo Library" and "Take Photo or Video" menu items.

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel contextMenuInteraction:configurationForMenuAtLocation:]):

1:36 PM Changeset in webkit [275305] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r275150): set-webkit-configuration is too aggressive at deleting config files when switch is not set
<https://webkit.org/b/224009>

Reviewed by Mark Lam.

  • Scripts/set-webkit-configuration:
  • Partially revert changes in r275150 when the config file wasn't always deleted for $architecture, $configuration, $forceOptimizationLevel and $ltoMode.
1:32 PM Changeset in webkit [275304] by weinig@apple.com
  • 2 edits in trunk/Source/WTF

Ease experimentation by enabling <model> if SEPARATED_MODEL is being used
https://bugs.webkit.org/show_bug.cgi?id=224011

Reviewed by Tim Horton.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

There is little point to experimenting with SEPARATED_MODEL if <model> is disabled.

1:15 PM Changeset in webkit [275303] by weinig@apple.com
  • 9 edits
    2 moves
    1 add
    4 deletes in trunk/Source/WebCore

Merge DOMWindow+IndexedDatabase.idl and WorkerGlobalScope+IndexedDatabase.idl into a single WindowOrWorkerGlobalScope+IndexedDatabase.idl to match the IndexedDB spec
https://bugs.webkit.org/show_bug.cgi?id=223856

Reviewed by Sihui Liu.

Replaces DOMWindow+IndexedDatabase.idl and WorkerGlobalScope+IndexedDatabase.idl with
WindowOrWorkerGlobalScope+IndexedDatabase.idl which contains a partial mixin interface
like specified. Also moves implementations of supplements into the cpp file, as the only
use of them is by the two indexedDB static functions.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/indexeddb/DOMWindow+IndexedDatabase.idl: Removed.
  • Modules/indexeddb/DOMWindowIndexedDatabase.cpp: Removed.
  • Modules/indexeddb/DOMWindowIndexedDatabase.h: Removed.
  • Modules/indexeddb/WindowOrWorkerGlobalScope+IndexedDatabase.idl: Added.
  • Modules/indexeddb/WindowOrWorkerGlobalScopeIndexedDatabase.cpp: Added.

(WebCore::DOMWindowIndexedDatabase::supplementName):
(WebCore::WorkerGlobalScopeIndexedDatabase::supplementName):
(WebCore::WindowOrWorkerGlobalScopeIndexedDatabase::indexedDB):
(WebCore::DOMWindowIndexedDatabase::DOMWindowIndexedDatabase):
(WebCore::DOMWindowIndexedDatabase::from):
(WebCore::DOMWindowIndexedDatabase::indexedDB):
(WebCore::WorkerGlobalScopeIndexedDatabase::WorkerGlobalScopeIndexedDatabase):
(WebCore::WorkerGlobalScopeIndexedDatabase::from):
(WebCore::WorkerGlobalScopeIndexedDatabase::indexedDB):

  • Modules/indexeddb/WindowOrWorkerGlobalScopeIndexedDatabase.h: Added.
  • Modules/indexeddb/WorkerGlobalScope+IndexedDatabase.idl: Removed.
  • Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.cpp: Removed.
  • Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.h: Removed.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMWindowCustom.cpp:
  • inspector/agents/InspectorIndexedDBAgent.cpp:
1:13 PM Changeset in webkit [275302] by Simon Fraser
  • 15 edits in trunk/Source

Assertions in DisplayUpdate when dragging WebView windows between screens with different refresh rates
https://bugs.webkit.org/show_bug.cgi?id=223984

Reviewed by Sam Weinig.

Source/WebCore:

There are various reasons why rigorous assertions in DisplayUpdate::relevantForUpdateFrequency()
are ill advised.

When WebKitLegacy calls windowScreenDidChange() it does not pass in a nominal display
refresh rate, so we assume 60fps. If the screen actually has a non-60fps refresh rate, then
we can get mixed 60/50 state in various places; this change fixes one of them, but such bugs
have to not result in assertions or divide by zero crashes in
DisplayUpdate::relevantForUpdateFrequency().

The second reason is webkit.org/b/212120; we may start DisplayRefreshMonitors with DisplayID
0 before we know what screen we're on, again risking a situation where the actual screen has
a non-60fps refresh rate.

To fix the case where no nominal refresh rate is passed through
Chrome::windowScreenDidChange(), allow a DisplayRefreshMonitor to supply a rate; often, a
DisplayRefreshMonitor can compute one from its knowledge of the display. This requires
DisplayRefreshMonitorManager is able to create a DisplayRefreshMonitor with no client, so
support that with a little refactoring.

Have some DisplayRefreshMonitor implementations supply their nominal display refresh rate
when known.

  • page/Chrome.cpp:

(WebCore::Chrome::windowScreenDidChange): No need to early return here; Page does the same check.

  • page/Page.cpp:

(WebCore::Page::windowScreenDidChange): Push the call to adjustRenderingUpdateFrequency() into
renderingUpdateScheduler().windowScreenDidChange() as suggested in a previous review.

  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::windowScreenDidChange):

  • platform/graphics/DisplayRefreshMonitor.h:

(WebCore::DisplayRefreshMonitor::displayNominalFramesPerSecond):

  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::ensureMonitorForDisplayID):
(WebCore::DisplayRefreshMonitorManager::nominalFramesPerSecondForDisplay):
(WebCore::DisplayRefreshMonitorManager::monitorForClient):

  • platform/graphics/DisplayRefreshMonitorManager.h:
  • platform/graphics/DisplayUpdate.cpp:

(WebCore::DisplayUpdate::relevantForUpdateFrequency const):

  • platform/graphics/ios/DisplayRefreshMonitorIOS.h:
  • platform/graphics/ios/DisplayRefreshMonitorIOS.mm:

(WebCore::DisplayRefreshMonitorIOS::displayNominalFramesPerSecond):

  • platform/graphics/mac/LegacyDisplayRefreshMonitorMac.cpp:

(WebCore::LegacyDisplayRefreshMonitorMac::ensureDisplayLink):
(WebCore::LegacyDisplayRefreshMonitorMac::startNotificationMechanism):
(WebCore::LegacyDisplayRefreshMonitorMac::displayNominalFramesPerSecond):

  • platform/graphics/mac/LegacyDisplayRefreshMonitorMac.h:

Source/WebKit:

RemoteLayerTreeDisplayRefreshMonitor knows its m_preferredFramesPerSecond so can
return that.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::displayNominalFramesPerSecond):

12:34 PM Changeset in webkit [275301] by sihui_liu@apple.com
  • 7 edits in trunk/Source

Add logging in IndexedDB to help debug flaky quota tests
https://bugs.webkit.org/show_bug.cgi?id=223578
<rdar://problem/75956789>

Reviewed by Alexey Proskuryakov.

Source/WebCore:

With r274323, we know that the tests fail because of IndexedDB. IndexedDB data should be cleared between tests,
so let's add more logging to see what databases are left.

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::diskUsage):

  • Modules/indexeddb/server/IDBServer.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForDirectory):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::storageQuotaManager):

12:25 PM Changeset in webkit [275300] by youenn@apple.com
  • 5 edits
    2 adds in trunk

In case WebRTC VTB decoder returns a null frame, mark the decoder as failing
https://bugs.webkit.org/show_bug.cgi?id=223993
<rdar://problem/76049206>

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

In case VTB does not return any pixel buffer, consider decoding is failing.
Set the error so that we we will send the error on the next frame we try to decode.

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH264.mm:

(decompressionOutputCallback):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH265.mm:

(h265DecompressionOutputCallback):
(-[RTCVideoDecoderH265 setError:]):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderVTBVP9.mm:

(vp9DecompressionOutputCallback):

LayoutTests:

  • http/wpt/webrtc/webrtc-late-transform-expected.txt: Added.
  • http/wpt/webrtc/webrtc-late-transform.html: Added.
11:45 AM Changeset in webkit [275299] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Missing exception check in HashMapImpl::add().
https://bugs.webkit.org/show_bug.cgi?id=224007
rdar://76053163

Reviewed by Saam Barati.

JSTests:

  • stress/missing-exception-check-in-HashMapImpl-add.js: Added.

Source/JavaScriptCore:

  • runtime/HashMapImpl.h:

(JSC::HashMapImpl::add):

11:37 AM Changeset in webkit [275298] by achristensen@apple.com
  • 8 edits in trunk

Add deprecation macros.

Source/WebCore:

  • platform/network/cf/CertificateInfoCFNet.cpp:

(WebCore::certificatesMatch):
(WebCore::CertificateInfo::certificateChainFromSecTrust):
(WebCore::CertificateInfo::containsNonRootSHA1SignedCertificate const):

Source/WebKit:

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::encodeNSError):

  • UIProcess/Authentication/mac/WebCredentialMac.mm:

(WebKit::leafCertificate):
(WebKit::chain):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(verifyCertificateAndPublicKey):

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
11:33 AM Changeset in webkit [275297] by Wenson Hsieh
  • 7 edits
    1 add in trunk

WKContentView should support UIKit protocol methods for becoming focused
https://bugs.webkit.org/show_bug.cgi?id=224003
<rdar://problem/75313658>

Reviewed by Megan Gardner.

Source/WebKit:

Implement a few protocol methods on UIFocusEnvironment. See below for more details.

Test: UIFocusTests.OverrideCanBecomeFocused

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView canBecomeFocused]):

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

(-[WKContentView canBecomeFocused]):
(-[WKContentView canBecomeFocusedForWebView]):

Implement -canBecomeFocused, and return YES by default. If -canBecomeFocused is overridden on WKWebView,
then defer to that overridden method instead.

(-[WKContentView didUpdateFocusInContext:withAnimationCoordinator:]):

Handle the focus environment change by advancing to the next or previous focusable element, depending on the
focus context's heading direction.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]):

Add a null check so that callers that don't need to know when the focus change is complete are able to pass in a
nil completion handler.

Tools:

Add a test to verify that the vaue of -[WKContentView canBecomeFocused] can be overridden by subclassing
-[WKWebView canBecomeFocused].

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/ios/UIFocusTests.mm: Added.

(-[UIFocusTestWKWebView canBecomeFocused]):

11:29 AM Changeset in webkit [275296] by graouts@webkit.org
  • 4 edits in trunk/Source

Remove CA_WHERE_ADDITIVE_TRANSFORMS_ARE_REVERSED
https://bugs.webkit.org/show_bug.cgi?id=224000

Reviewed by Simon Fraser.

Since trunk is no longer maintained on macOS versions earlier than 10.15,
we can remove this compile-time flag.

Source/WebCore:

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::updateAnimations):

Source/WTF:

  • wtf/PlatformHave.h:
11:14 AM Changeset in webkit [275295] by Chris Gambrell
  • 9 edits
    2 adds
    2 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/download convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=222618
<rdar://problem/74949253>

Reviewed by Jonathan Bedard.

  • http/tests/download/default-encoding-expected.txt:
  • http/tests/download/default-encoding.html:
  • http/tests/download/inherited-encoding-expected.txt:
  • http/tests/download/inherited-encoding-form-submission-result-expected.txt:
  • http/tests/download/inherited-encoding-form-submission-result.html:
  • http/tests/download/inherited-encoding.html:
  • http/tests/download/literal-utf-8-expected.txt:
  • http/tests/download/literal-utf-8.html:
  • http/tests/download/resources/literal-koi8-r.php: Removed.
  • http/tests/download/resources/literal-koi8-r.py: Added.
  • http/tests/download/resources/literal-utf-8.php: Removed.
  • http/tests/download/resources/literal-utf-8.py: Added.
11:13 AM Changeset in webkit [275294] by youenn@apple.com
  • 4 edits in trunk/Source

Make use of NSURLSessionWebSocket.sendCloseCode if available
https://bugs.webkit.org/show_bug.cgi?id=223999

Reviewed by Alex Christensen.

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

If available, we just call sendCloseCode, cancel will happen when NetworkSocketChannel is destroyed.
Covered by LayoutTests/http/tests/websocket/tests/hybi/client-close-2.html.

  • NetworkProcess/cocoa/WebSocketTaskCocoa.mm:

(WebKit::WebSocketTask::close):

10:49 AM Changeset in webkit [275293] by Patrick Angle
  • 2 edits in trunk/Source/WebCore

Web Inspector: CSS Grid overlay track sizes are incorrect when inline styles are applied to the element
https://bugs.webkit.org/show_bug.cgi?id=223908

Reviewed by BJ Burg.

Add checking the inline style attributes on an element when collecting authored track sizes for grid overlays.

  • inspector/InspectorOverlay.cpp:

(WebCore::authoredGridTrackSizes):

10:39 AM Changeset in webkit [275292] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.8.2

Tag Safari-612.1.8.2.

10:37 AM Changeset in webkit [275291] by Ruben Turcios
  • 8 edits in branches/safari-612.1.8-branch/Source

Versioning.

WebKit-7612.1.8.2

10:25 AM Changeset in webkit [275290] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Add test for SOCKS5 proxy SPI
https://bugs.webkit.org/show_bug.cgi?id=223964

Patch by Alex Christensen <achristensen@webkit.org> on 2021-03-31
Reviewed by Sam Weinig.

  • TestWebKitAPI/Tests/WebKitCocoa/Proxy.mm:

(TestWebKitAPI::TEST):

10:21 AM Changeset in webkit [275289] by youenn@apple.com
  • 4 edits in trunk/Source/WebKit

Send WebSocket cocoa authentication challenge to AuthenticationManager
https://bugs.webkit.org/show_bug.cgi?id=223998

Reviewed by Alex Christensen.

In case of authentication challenge related to WebSocketTask, send it to the AuthenticationManager for evaluation.
Minor refactoring to reuse the same completion handler as for network data tasks.
Covered by LayoutTests/http/tests/websocket/tests/hybi/simple-wss.html with NSURLSessionWebSocket code path enabled.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::allowsSpecificHTTPSCertificateForHost):
(WebKit::CompletionHandler<void):
(WebKit::NetworkSessionCocoa::continueDidReceiveChallenge):
(WebKit::NetworkSessionCocoa::createWebSocketTask):

  • NetworkProcess/cocoa/WebSocketTaskCocoa.h:

(WebKit::WebSocketTask::pageID const):
(WebKit::WebSocketTask::partition const):

  • NetworkProcess/cocoa/WebSocketTaskCocoa.mm:
10:15 AM Changeset in webkit [275288] by Chris Dumez
  • 12 edits in trunk/Source

ServiceWorkerContextData should not be saved both on ServiceWorkerThread & ServiceWorkerGlobalScope
https://bugs.webkit.org/show_bug.cgi?id=224001

Reviewed by Geoffrey Garen.

Source/WebCore:

ServiceWorkerContextData should not be saved both on ServiceWorkerThread & ServiceWorkerGlobalScope.
ServiceWorkerContextData contains script sources and may use a large amount of memory.

To address the issue, we now clear ServiceWorkerThread's context data once the ServiceWorkerGlobalScope
has been constructed.

  • inspector/agents/worker/ServiceWorkerAgent.cpp:

(WebCore::ServiceWorkerAgent::getInitializationInfo):

  • workers/service/ServiceWorkerGlobalScope.cpp:

(WebCore::ServiceWorkerGlobalScope::create):
(WebCore::ServiceWorkerGlobalScope::ServiceWorkerGlobalScope):

  • workers/service/ServiceWorkerGlobalScope.h:
  • workers/service/context/SWContextManager.cpp:

(WebCore::SWContextManager::registerServiceWorkerThreadForInstall):

  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):
(WebCore::ServiceWorkerThread::heartBeatTimerFired):
(WebCore::ServiceWorkerThread::finishedFiringInstallEvent):

  • workers/service/context/ServiceWorkerThread.h:

(WebCore::ServiceWorkerThread::identifier const):
(WebCore::ServiceWorkerThread::jobDataIdentifier const):
(WebCore::ServiceWorkerThread::contextData const): Deleted.

  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):

  • workers/service/context/ServiceWorkerThreadProxy.h:

Source/WebKit:

  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::installServiceWorker):

  • WebProcess/Storage/WebSWContextManagerConnection.h:
10:10 AM Changeset in webkit [275287] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Add build step to run layout tests for multiple iterations in guard malloc mode
https://bugs.webkit.org/show_bug.cgi?id=224002

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(RunWebKitTests):
(RunWebKitTests.setLayoutTestCommand):
(RunWebKitTestsInStressGuardmallocMode):

  • CISupport/ews-build/steps_unittest.py:
10:06 AM Changeset in webkit [275286] by Russell Epstein
  • 4 edits in branches/safari-612.1.9-branch/Source/WebKit/FeatureFlags

Unreviewed build fix after r275246.

Conflict markers in source.

9:15 AM Changeset in webkit [275285] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Remove warnings about unnecessary operator= for ARMv7Assembler LinkRecord
https://bugs.webkit.org/show_bug.cgi?id=223916

Patch by Xan Lopez <Xan Lopez> on 2021-03-31
Reviewed by Darin Adler.

Many years ago we defined an assignment operator for LinkRecord in
order to speed up build times (see #90930). Recent GCC versions
tell us that if we do that we almost certainly want to define a
copy constructor too. The ARM64Assembler file already does it, so
do it too for ARMv7 to remove the warnings.

  • assembler/ARM64Assembler.h:
  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::LinkRecord::LinkRecord):
(JSC::ARMv7Assembler::LinkRecord::operator=):

9:10 AM Changeset in webkit [275284] by Ruben Turcios
  • 2 edits in branches/safari-612.1.9-branch/Source/WebKit

Cherry-pick r275248. rdar://problem/76054448

Allow WebAuthn process talk to the ASD
https://bugs.webkit.org/show_bug.cgi?id=223947
<rdar://75908828>

Reviewed by Brent Fulgham.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:

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

9:10 AM Changeset in webkit [275283] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Add build step to run layout tests for multiple iterations
https://bugs.webkit.org/show_bug.cgi?id=223950

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(RunWebKitTestsInStressMode):
(RunWebKitTestsInStressMode.setLayoutTestCommand):
(RunWebKitTestsInStressMode.evaluateCommand):

  • CISupport/ews-build/steps_unittest.py: Added unit-tests.
9:03 AM Changeset in webkit [275282] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Add a fast-cq mode for commit-queue which will skip build and test
https://bugs.webkit.org/show_bug.cgi?id=223954

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py: Enable fast-cq mode when patch name on bugzilla starts with [fast-cq].

(BugzillaMixin):
(BugzillaMixin._is_patch_obsolete):
(CompileWebKit.doStepIf): Skip building on commit-queue when fast_commit_queue property is set.
(RunWebKitTests.doStepIf): Skip testing on commit-queue when fast_commit_queue property is set.

  • CISupport/ews-build/steps_unittest.py:
8:52 AM WebKitGTK/2.32.x edited by Michael Catanzaro
(diff)
8:40 AM Changeset in webkit [275281] by graouts@webkit.org
  • 8 edits in trunk

font-stretch should support 0% and disallow animating to a value below 0%
https://bugs.webkit.org/show_bug.cgi?id=223994

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark 23 tests as PASS results.

  • web-platform-tests/css/css-fonts/animations/font-stretch-interpolation-expected.txt:
  • web-platform-tests/css/css-fonts/variations/at-font-face-descriptors-expected.txt:
  • web-platform-tests/css/css-fonts/variations/font-parse-numeric-stretch-style-weight-expected.txt:
  • web-platform-tests/css/css-fonts/variations/font-stretch-expected.txt:

Source/WebCore:

Trying to fix css/css-fonts/animations/font-stretch-interpolation.html showed two issues:

  1. we disallowed 0% as a valid value when parsing font-stretch,
  2. we allowed negative values when blending.

This patch addresses both.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::fontStretchIsWithinRange):

8:38 AM Changeset in webkit [275280] by graouts@webkit.org
  • 8 edits in trunk/Source/WebCore

Remove the Silently argument to WebAnimation::cancel()
https://bugs.webkit.org/show_bug.cgi?id=223992

Reviewed by Frédéric Wang.

The recent commit r275228 removed the use of the Silently argument in
AnimationTimeline::cancelDeclarativeAnimationsForStyleable(), which
was the only function that would eventually call into WebAnimation::cancel()
with a value other than the default, Silently::No.

So we remove that argument to WebAnimation::cancel(), its call sites and
WebAnimation::resetPendingTasks() which was called from it.

And since the Silently enum is no longer used outside of WebAnimation.cpp,
we move it to be private.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::elementWasRemoved):
(WebCore::AnimationTimeline::cancelDeclarativeAnimationsForStyleable):

  • animation/AnimationTimeline.h:
  • animation/DeclarativeAnimation.cpp:

(WebCore::DeclarativeAnimation::cancel):

  • animation/DeclarativeAnimation.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::cancel):
(WebCore::WebAnimation::resetPendingTasks):

  • animation/WebAnimation.h:
  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::tearDownRenderers):

7:10 AM Changeset in webkit [275279] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Use :is() instead of :matches() on UA stylesheet
https://bugs.webkit.org/show_bug.cgi?id=223996

Reviewed by Antoine Quint.

Use the standard name.

  • css/html.css:

(:is(article, aside, nav, section) h1):
(:is(article, aside, nav, section) :is(article, aside, nav, section) h1):
(:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1):
(:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1):
(:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1):
(#endif):
(#if defined(WTF_PLATFORM_IOS_FAMILY) && WTF_PLATFORM_IOS_FAMILY):
(input:is([type="hidden"], [type="image"], [type="file"])):
(input:is([type="radio"], [type="checkbox"])):
(input:is([type="button"], [type="submit"], [type="reset"])):
(input:is([type="button"], [type="submit"], [type="reset"]), input[type="file"]::file-selector-button, button):
(input:is([type="button"], [type="submit"], [type="reset"]):active, input[type="file"]::file-selector-button:active, button:active):
(input:is([type="button"], [type="submit"], [type="reset"]):active, input[type="file"]:active::file-selector-button, button:active):
(input:is([type="button"], [type="submit"], [type="reset"]):active:disabled,):
(input:is([type="button"], [type="submit"], [type="reset"]):disabled,):
(input:is([type="checkbox"], [type="radio"]):checked):
(input:is([type="checkbox"], [type="radio"]):disabled):
(input:is([type="checkbox"], [type="radio"]):checked:disabled):
(:matches(article, aside, nav, section) h1): Deleted.
(:matches(article, aside, nav, section) :matches(article, aside, nav, section) h1): Deleted.
(:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) h1): Deleted.
(:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) h1): Deleted.
(:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) h1): Deleted.
(input:matches([type="hidden"], [type="image"], [type="file"])): Deleted.
(input:matches([type="radio"], [type="checkbox"])): Deleted.
(input:matches([type="button"], [type="submit"], [type="reset"])): Deleted.
(input:matches([type="button"], [type="submit"], [type="reset"]), input[type="file"]::file-selector-button, button): Deleted.
(input:matches([type="button"], [type="submit"], [type="reset"]):active, input[type="file"]::file-selector-button:active, button:active): Deleted.
(input:matches([type="button"], [type="submit"], [type="reset"]):active, input[type="file"]:active::file-selector-button, button:active): Deleted.
(input:matches([type="button"], [type="submit"], [type="reset"]):active:disabled,): Deleted.
(input:matches([type="button"], [type="submit"], [type="reset"]):disabled,): Deleted.
(input:matches([type="checkbox"], [type="radio"]):checked): Deleted.
(input:matches([type="checkbox"], [type="radio"]):disabled): Deleted.
(input:matches([type="checkbox"], [type="radio"]):checked:disabled): Deleted.

6:40 AM Changeset in webkit [275278] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[RenderTreeBuilder] Do not merge anonymous table cells with mismatching children types
https://bugs.webkit.org/show_bug.cgi?id=223979
<rdar://76003320>

Reviewed by Antti Koivisto.

A table cell (as it establishes a block formatting context) should only contain either
inline or block level inflow boxes.

  • rendering/RenderElement.h:

(WebCore::RenderElement::firstInFlowChild const):
(WebCore::RenderElement::lastInFlowChild const):

  • rendering/RenderObject.h:

(WebCore::RenderObject::isInFlow const):
(WebCore::RenderObject::previousInFlowSibling const):
(WebCore::RenderObject::nextInFlowSibling const):

  • rendering/updating/RenderTreeBuilderTable.cpp:

(WebCore::canCollapseNextSibling):
(WebCore::RenderTreeBuilder::Table::collapseAndDetachAnonymousNextSibling):

5:16 AM Changeset in webkit [275277] by Antti Koivisto
  • 4 edits
    2 adds in trunk

Animated pseudo element style resolved against wrong parent style
https://bugs.webkit.org/show_bug.cgi?id=223990
rdar://74997361

Reviewed by Antoine Quint.
Source/WebCore:

In createAnimatedElementUpdate we get the parent and parent box styles from the parent stack.
This is wrong for pseudo elements. Their parent style should the host style which is not pushed to the stack.

This matters in style adjuster which may apply wrong adjustments as a result.

Test: fast/animation/pseudo-element-style-adjuster.html

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::TreeResolver::resolvePseudoStyle):
(WebCore::Style::TreeResolver::createAnimatedElementUpdate):

Make static and provide the parent and parent box styles as parameters.

  • style/StyleTreeResolver.h:

LayoutTests:

  • fast/animation/pseudo-element-style-adjuster-expected.html: Added.
  • fast/animation/pseudo-element-style-adjuster.html: Added.
4:16 AM Changeset in webkit [275276] by youenn@apple.com
  • 9 edits in trunk

Apply permission policy to geolocation
https://bugs.webkit.org/show_bug.cgi?id=223248

Reviewed by Eric Carlson.

Source/WebCore:

Only allow third-party iframes if allowed by permission policy,
following https://w3c.github.io/geolocation-api/#permissions-policy.
Covered by API tests.

  • Modules/geolocation/Geolocation.cpp:

(WebCore::Geolocation::shouldBlockGeolocationRequests):

  • html/FeaturePolicy.cpp:

(WebCore::policyTypeName):
(WebCore::FeaturePolicy::parse):
(WebCore::FeaturePolicy::allows const):

  • html/FeaturePolicy.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(-[GeolocationDelegateNew setValidationHandler:]):
(-[GeolocationDelegateNew _webView:requestGeolocationPermissionForOrigin:initiatedByFrame:decisionHandler:]):
(-[GeolocationPermissionMessageHandler userContentController:didReceiveScriptMessage:]):

LayoutTests:

  • http/tests/security/sandboxed-iframe-geolocation-getCurrentPosition-expected.txt:
  • http/tests/security/sandboxed-iframe-geolocation-watchPosition-expected.txt:
4:11 AM Changeset in webkit [275275] by commit-queue@webkit.org
  • 12 edits
    2 adds in trunk/Source

[WebRTC][GStreamer] Build and use the openh264 based encoder if present on the system
https://bugs.webkit.org/show_bug.cgi?id=202538

Patch by Thibault Saunier <tsaunier@igalia.com> and Philippe Normand <pnormand@igalia.com> on 2021-03-31
Reviewed by Xabier Rodriguez-Calvar and Adrian Perez de Castro.

Source/ThirdParty/libwebrtc:

In WPE/GTK we would like to have the libwebrtc openh264 encoder enabled if libopenh264 is
present on the host (eg not vendored).

  • CMakeLists.txt:
  • Source/webrtc/modules/video_coding/codecs/h264/h264.cc:
  • Source/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc:
  • Source/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.h:

Source/WebCore:

Enable the openh264 encoder if it is available, it would be preferred over existing
GStreamer H.264 encoders in such case.

  • platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:

(WebCore::GStreamerVideoEncoder::AddCodecIfSupported):
(WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder):

1:41 AM Changeset in webkit [275274] by clopez@igalia.com
  • 4 edits in trunk/LayoutTests

REGRESSION(r274244): [GTK][WPE] Two http/tests/security/contentSecurityPolicy tests crash
https://bugs.webkit.org/show_bug.cgi?id=223978

Reviewed by Philippe Normand.

Apache not longer sends a Content-Length header with the cgi/python version of this tests,
but it used chunked transfer encoding.
It seems this confuses libsoup causing a critical event.
Add an empty \r\n at the end of the test to indicate that the server has finished sending
the data.

  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy.py:
1:30 AM Changeset in webkit [275273] by graouts@webkit.org
  • 6 edits in trunk

Computed style for a border-radius corner should never be 0px when the provided width isn't 0px
https://bugs.webkit.org/show_bug.cgi?id=223927

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark 5 tests as PASS results as a result of returning the correct computed style for
"border-top-left-radius: 40px 0px". This is importing a change made to WPT via
https://github.com/web-platform-tests/wpt/pull/28310.

  • web-platform-tests/css/css-backgrounds/animations/border-radius-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/parsing/border-radius-computed-expected.txt:
  • web-platform-tests/css/css-backgrounds/parsing/border-radius-computed.html:

Source/WebCore:

If "border-top-left-radius: 40px 0px" is provided, the computed style would return "0px" since
BuilderConverter::convertRadius() would treat either of the dimensions for the radius being 0
as both being 0.

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertRadius):

12:44 AM Changeset in webkit [275272] by graouts@webkit.org
  • 8 edits in trunk

Fix interpolation of box-shadow and text-shadow CSS properties
https://bugs.webkit.org/show_bug.cgi?id=223924

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark all interpolation tests for box-shadow and text-shadow as PASS results.

  • web-platform-tests/css/css-backgrounds/animations/box-shadow-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation-expected.txt:
  • web-platform-tests/css/css-transitions/animations/text-shadow-composition-expected.txt:
  • web-platform-tests/css/css-transitions/animations/text-shadow-interpolation-expected.txt:

Source/WebCore:

There were three issues with interpolation of ShadowData-backed properties such
as box-shadow and text-shadow:

  1. the blur radius should not be allowed to be negative,
  2. blending LayoutUnit had accuracy issues,
  3. we would allow interpolation to happen when items in lists did not have matching shadow styles ("inset" vs. unspecified).
  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):

  • platform/animation/AnimationUtilities.h:

(WebCore::blend):

12:21 AM Changeset in webkit [275271] by Alexey Shvayka
  • 22 edits
    5 adds in trunk

Optimize constructors of ES6 collections
https://bugs.webkit.org/show_bug.cgi?id=223953

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/map-constructor.js:
  • microbenchmarks/set-constructor.js: Added.
  • microbenchmarks/weak-map-constructor.js: Added.
  • microbenchmarks/weak-set-constructor.js: Added.
  • stress/map-constructor-adder.js:
  • stress/set-constructor-adder.js:
  • stress/weak-map-constructor-adder-error-cross-realm.js: Added.
  • stress/weak-map-constructor-adder.js:
  • stress/weak-set-constructor-adder-error-cross-realm.js: Added.
  • stress/weak-set-constructor-adder.js:
  • stress/weak-set-constructor.js:

Source/JavaScriptCore:

This patch speeds up the constructors by avoiding call() for non-observable
"set" / "add" methods and using getIndex() for Map / WeakMap collections.

For Map / Set, this change leverages existing cloning helpers, which rely on
watchpoints, to avoid even a method lookup. However, slower path is used for
subclasses. Results in 1.9x speed-up for common case.

For WeakMap / WeakSet, adder function is checked by C++ pointer, which enables
fast path even for cross-realm subclasses. Results in 2.3x progression.

Both approaches require special handling of a cross-realm NewTarget to ensure
that raised exceptions (OOM / TypeError) belong to realm of the adder function,
and not to constructor's or NewTarget's.

Also, adds descriptve error messages for non-callable "set" / "add" properties.

  • runtime/JSMap.cpp:

(JSC::JSMap::isSetFastAndNonObservable):
(JSC::JSMap::canCloneFastAndNonObservable): Deleted.

  • runtime/JSMap.h:
  • runtime/JSSet.cpp:

(JSC::JSSet::isAddFastAndNonObservable):
(JSC::JSSet::canCloneFastAndNonObservable): Deleted.

  • runtime/JSSet.h:
  • runtime/MapConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/SetConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/WeakMapConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/WeakMapPrototype.cpp:

(JSC::WeakMapPrototype::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/WeakMapPrototype.h:
  • runtime/WeakSetConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/WeakSetPrototype.cpp:

(JSC::WeakSetPrototype::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/WeakSetPrototype.h:

LayoutTests:

  • js/dom/basic-weakset-expected.txt:
Note: See TracTimeline for information about the timeline view.