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

Timeline



Oct 6, 2021:

10:33 PM Changeset in webkit [283701] by timothy@apple.com
  • 2 edits in trunk/Source/WebKit

_WKRemoteObjectRegistry's ReplyBlockCallChecker should always dealloc on the main thread
https://bugs.webkit.org/show_bug.cgi?id=231346
rdar://problem/83965481

Reviewed by Chris Dumez.

  • Shared/API/Cocoa/_WKRemoteObjectRegistry.mm:

(-[_WKRemoteObjectRegistry _invokeMethod:]): Added WTF::DestructionThread::MainRunLoop to ReplyBlockCallChecker.

9:39 PM AnalyzingBuildPerformance created by jer.noble@apple.com
9:15 PM Changeset in webkit [283700] by Ben Nham
  • 16 edits
    15 adds in trunk

Add PushSubscription stubs
https://bugs.webkit.org/show_bug.cgi?id=231278

Reviewed Alex Christensen.

LayoutTests/imported/w3c:

Updated the WPT test results to reflect the newly implemented interfaces.

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

Source/WebCore:

This adds PushSubscription-related IDL to WebCore. Currently the objects are just data
containers and PushSubscription.unsubscribe() does nothing.

Test: http/wpt/push-api/pushSubscription.https.any.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/push-api/PushEncryptionKeyName.h: Added.
  • Modules/push-api/PushEncryptionKeyName.idl: Added.
  • Modules/push-api/PushSubscription.cpp: Added.

(WebCore::PushSubscription::create):
(WebCore::PushSubscription::PushSubscription):
(WebCore::PushSubscription::endpoint const):
(WebCore::PushSubscription::expirationTime const):
(WebCore::PushSubscription::options const):
(WebCore::PushSubscription::getKey const):
(WebCore::PushSubscription::unsubscribe):
(WebCore::PushSubscription::toJSON const):

  • Modules/push-api/PushSubscription.h: Added.
  • Modules/push-api/PushSubscription.idl: Added.
  • Modules/push-api/PushSubscriptionJSON.h: Added.
  • Modules/push-api/PushSubscriptionJSON.idl: Added.
  • Modules/push-api/PushSubscriptionOptions.cpp: Added.

(WebCore::PushSubscriptionOptions::create):
(WebCore::PushSubscriptionOptions::PushSubscriptionOptions):
(WebCore::PushSubscriptionOptions::userVisibleOnly const):
(WebCore::PushSubscriptionOptions::serverVAPIDPublicKey const):
(WebCore::PushSubscriptionOptions::applicationServerKey const):

  • Modules/push-api/PushSubscriptionOptions.h: Added.
  • Modules/push-api/PushSubscriptionOptions.idl: Added.
  • Modules/push-api/PushSubscriptionOptionsInit.h: Added.
  • Modules/push-api/PushSubscriptionOptionsInit.idl: Added.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • testing/Internals.cpp:

(WebCore::Internals::createPushSubscription):

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

LayoutTests:

Added a basic test for PushSubscription. Right now the test only runs in the window global
scope because it relies on a constructor called via window.internals. I'll add more test
cases and test it in the worker scope as well once we change the test to create a
subscription via a mocked PushManager.subscribe call instead.

  • http/wpt/push-api/pushSubscription.https.any-expected.txt: Added.
  • http/wpt/push-api/pushSubscription.https.any.html: Added.
  • http/wpt/push-api/pushSubscription.https.any.js: Added.

(bytesFrom):
(test):

9:02 PM Changeset in webkit [283699] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] InlineDisplay::Box should not hold on to RenderStyle&
https://bugs.webkit.org/show_bug.cgi?id=231325
<rdar://83925737>

Reviewed by Simon Fraser.

In the long run InlineDisplay::Box should retain the style so that we could paint the content independently, but for now
let's just consult the layout box for the style information.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::build):
(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineContent):
(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineSpanningInlineBoxes):

  • layout/formattingContexts/inline/display/InlineDisplayBox.h:

(WebCore::InlineDisplay::Box::style const): The assumption here was that the style object stays around for the lifecycle of the display box (i.e. style object is destroyed -> layout -> new set of display boxes).
(WebCore::InlineDisplay::Box::Box):

  • layout/integration/LayoutIntegrationPagination.cpp:

(WebCore::LayoutIntegration::makeAdjustedContent):

8:54 PM Changeset in webkit [283698] by Simon Fraser
  • 7 edits in trunk/Source/WebCore

Rename the AnimatedScroll enum to ScrollIsAnimated for consistency
https://bugs.webkit.org/show_bug.cgi?id=231336

Reviewed by Wenson Hsieh.

All the other scroll-related enums start with "Scroll" so rename AnimatedScroll to
ScrollIsAnimated to match, and ScrollIsAnimated::Yes and ScrollIsAnimated::No become more
readable.

  • dom/Element.cpp:

(WebCore::Element::scrollTo):
(WebCore::Element::setScrollLeft):
(WebCore::Element::setScrollTop):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::scrollTo const):

  • page/FrameView.cpp:

(WebCore::FrameView::setScrollPosition):

  • platform/ScrollTypes.h:

(WebCore::ScrollPositionChangeOptions::createProgrammaticWithOptions):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollRectToVisible):

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::scrollToOffset):

7:22 PM Changeset in webkit [283697] by Wenson Hsieh
  • 10 edits in trunk/Source

Delete WebCore::DisplayList::SetInlineFillGradient
https://bugs.webkit.org/show_bug.cgi?id=231326

Reviewed by Simon Fraser.

Source/WebCore:

Remove this display list item, because:

  • It should never have been encoded and decoded as POD data in the first place, due to the fact that it

indirectly contains Variants.

  • Deleting this item does not cause any significant performance impact when using streaming IPC for

display lists.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::append):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::safeCopy const):

  • platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):

  • platform/graphics/displaylists/DisplayListItemType.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::SetInlineFillGradient::SetInlineFillGradient): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::gradient const): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::apply const): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::isInline): Deleted.

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::SetInlineFillGradient::isValid const): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::containsOnlyInlineStateChanges):
(WebCore::DisplayList::Recorder::appendStateChangeItem):

Source/WebKit:

See WebCore/ChangeLog for more details.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::decodeItem):

7:21 PM Changeset in webkit [283696] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit

Add a configurable wake up message hysteresis to IPC::StreamClientConnection
https://bugs.webkit.org/show_bug.cgi?id=231304

Reviewed by Simon Fraser.

Make it possible to avoid sending the wakeup message in StreamClientConnection, until some configurable number
of messages have been queued up. This allows us to avoid triggering excessive wakeups in the GPU Process when
using streaming IPC for display lists in the Canvas Lines subtest in MotionMark, which exercises sending a
massive, constant stream of cheap drawing commands to the GPUP.

By default, this hysteresis remains at 0, which means that we'll continue to immediately send GL commands to the
GPU Process when using GPU Process for WebGL. In a future patch, I intend on defaulting to a small hysteresis
(i.e. ~256) for 2D canvas and DOM rendering.

  • Platform/IPC/StreamClientConnection.cpp:

(IPC::StreamClientConnection::wakeUpServer):
(IPC::StreamClientConnection::deferredWakeUpServer):
(IPC::StreamClientConnection::decrementRemainingMessageCountBeforeSendingWakeUp):
(IPC::StreamClientConnection::sendDeferredWakeUpMessageIfNeeded):

  • Platform/IPC/StreamClientConnection.h:

Also mark StreamClientConnection with WTF_MAKE_FAST_ALLOCATED, so that we can wrap the client connection in a
std::unique_ptr in a future patch.

(IPC::StreamClientConnection::trySendStream):

When sending a normal (non-blocking) stream message, if the wakeup hysteresis count is non-zero, avoid
immediately signaling the semaphore and instead just set the hysteresis count to the client's specified count
(m_wakeUpMessageHysteresis).

(IPC::StreamClientConnection::trySendSyncStream):

When sending a sync message, we always want to immediately flush out any pending wakeup message regardless of
the current hysteresis, since we're waiting for the server to process a reply.

7:15 PM Changeset in webkit [283695] by Russell Epstein
  • 8 edits in branches/safari-612.2.9.1-branch/Source

Versioning.

WebKit-7612.2.9.1.6

6:39 PM Changeset in webkit [283694] by Russell Epstein
  • 2 edits in branches/safari-612.2.9.3-branch/Source/JavaScriptCore

Revert "Cherry-pick r283632. rdar://problem/83942645"

This reverts commit r283653.

6:19 PM Changeset in webkit [283693] by Russell Epstein
  • 1 copy in tags/Safari-612.2.9.1.5

Tag Safari-612.2.9.1.5.

5:56 PM Changeset in webkit [283692] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r283490. rdar://problem/83954408

Vorbis decoder can't be instantiated - follow up on Bug 230742
https://bugs.webkit.org/show_bug.cgi?id=231154
rdar://problem/83825162

Fix typo in expression.

Reviewed by Tim Horton.

  • Scripts/process-entitlements.sh: Add missing bool keyword.

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

5:56 PM Changeset in webkit [283691] by Russell Epstein
  • 3 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r283209. rdar://problem/83956699

Crash in WebKit::DisplayLink::displayLinkCallback()
https://bugs.webkit.org/show_bug.cgi?id=230917
<rdar://82528370>

Reviewed by Tim Horton.

We have evidence of a divide-by-zero crash in DisplayLink::notifyObserversDisplayWasRefreshed()
where m_currentUpdate.updatesPerSecond is zero. The only way I can see this happening
is if DisplayLink::DisplayLink() returns early, which should log. Protect against
this by initializing m_displayNominalFramesPerSecond to 60, and do another check,
with a log, in DisplayLink::addObserver() before we use m_displayNominalFramesPerSecond
for the first time.

Convert the logging to RELEASE_LOG_FAULT reports.

  • UIProcess/mac/DisplayLink.cpp: (WebKit::DisplayLink::DisplayLink): (WebKit::DisplayLink::addObserver):
  • UIProcess/mac/DisplayLink.h:

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

5:52 PM Changeset in webkit [283690] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/JavaScriptCore

Cherry-pick r283632. rdar://problem/83942704

Speculative fix for a null pointer dereference in ByteCodeParser::handlePutByVal.
https://bugs.webkit.org/show_bug.cgi?id=231252
rdar://83310320

Reviewed by Yusuke Suzuki.

We're seeing a null pointer dereference in ByteCodeParser::handlePutByVal().
Adding a null check here as a speculative fix to mitigate crashes while we
investigate further.

  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock): (JSC::DFG::ByteCodeParser::handlePutByVal):

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

5:52 PM Changeset in webkit [283689] by Russell Epstein
  • 16 edits
    2 adds in branches/safari-612-branch

Cherry-pick r283556. rdar://problem/83956477

[JSC] JSPropertyNameEnumerator should not have cached prototype chain since empty JSPropertyNameEnumerator is shared
https://bugs.webkit.org/show_bug.cgi?id=231202
JSTests:

Reviewed by Keith Miller.

  • stress/for-in-validation-poly-proto.js: Added. (shouldBe): (test): (factory.Test): (factory):
  • stress/for-in-validation-watchpoint.js: Added. (shouldBe): (test): (Test): (factory):

Source/JavaScriptCore:

rdar://83815122

Reviewed by Keith Miller.

r282014 assumed an invariant that JSPropertyNameEnumerator's StructureChain is immutable.
This invariant is also used in validation of JSPropertyNameEnumerator. However, this
invariant was broken since we now have shared empty sentinel JSPropertyNameEnumerator, which can
be used for different structures having different prototype chain.

Since now we have shared JSPropertyNameEnumerator, JSPropertyNameEnumerator should not have
StructureChain in its member. When invalidating StructureChain in Structure, we also clear
cached JSPropertyNameEnumerator so that we do not get a stale JSPropertyNameEnumerator from
Structure even though watchpoint-based validation is not used.

This patch also removes ValidatedViaWatchpoint flag in JSPropertyNameEnumerator due to the same
reason. We should not modify JSPropertyNameEnumerator once it is instantiated. Instead, we encode
this flag as a lowest bit of m_cachedPropertyNameEnumerator. If it is validated via traversing (not watchpoints),
then this bit is set. So when loading that pointer from StructureRareData, we can quickly detect
it without even accessing to the enumerator. This fixes the issue, and it is even cleaner.
We rename m_cachedPropertyNameEnumerator to m_cachedPropertyNameEnumeratorAndFlag since it now
includes this flag.

While reviewing the code, we also found that watchpoint-based validation didn't care about PolyProto.
We should disable watchpoint-based validation if PolyProto is used.

  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileGetPropertyEnumerator):
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::emit_op_get_property_enumerator):
  • llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL):
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSPropertyNameEnumerator.cpp: (JSC::JSPropertyNameEnumerator::visitChildrenImpl):
  • runtime/JSPropertyNameEnumerator.h: (JSC::propertyNameEnumerator):
  • runtime/Structure.cpp: (JSC::Structure::visitChildrenImpl): (JSC::Structure::setCachedPropertyNameEnumerator): (JSC::Structure::cachedPropertyNameEnumeratorAndFlag const):
  • runtime/Structure.h: (JSC::Structure::propertyNameEnumeratorShouldWatch const):
  • runtime/StructureInlines.h: (JSC::Structure::prototypeChain const): (JSC::Structure::clearCachedPrototypeChain):
  • runtime/StructureRareData.cpp: (JSC::StructureRareData::visitChildrenImpl):
  • runtime/StructureRareData.h:
  • runtime/StructureRareDataInlines.h: (JSC::StructureRareData::cachedPropertyNameEnumerator const): (JSC::StructureRareData::cachedPropertyNameEnumeratorAndFlag const): (JSC::StructureRareData::setCachedPropertyNameEnumerator): (JSC::StructureChainInvalidationWatchpoint::fireInternal): (JSC::StructureRareData::tryCachePropertyNameEnumeratorViaWatchpoint): (JSC::StructureRareData::clearCachedPropertyNameEnumerator): (JSC::StructureRareData::invalidateWatchpointBasedValidation): Deleted.

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

5:52 PM Changeset in webkit [283688] by Russell Epstein
  • 7 edits in branches/safari-612-branch/Source

Cherry-pick r283444. rdar://problem/83960033

Remove JSC hack after r283410
https://bugs.webkit.org/show_bug.cgi?id=230261

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • runtime/JSObject.cpp: (JSC::JSObject::getOwnPropertyDescriptor):
  • runtime/PropertySlot.h:

Source/WebCore:

We revert a hack for accessors in JSC since this is not necessary.

  • bindings/scripts/CodeGeneratorJS.pm: (GetJSCAttributesForAttribute):
  • bindings/scripts/test/JS/JSTestObj.cpp: (WebCore::JSTestObjDOMConstructor::construct): (WebCore::jsTestObj_searchGetter): (WebCore::JSC_DEFINE_CUSTOM_GETTER): (WebCore::setJSTestObj_searchSetter): (WebCore::JSC_DEFINE_CUSTOM_SETTER):
  • bindings/scripts/test/TestObj.idl:

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

5:52 PM Changeset in webkit [283687] by Russell Epstein
  • 16 edits in branches/safari-612-branch

Cherry-pick r283410. rdar://problem/83960033

Disable new incumbent-window until it is fully implemented
https://bugs.webkit.org/show_bug.cgi?id=230261
<rdar://problem/83099726>

Reviewed by Chris Dumez and Geoffrey Garen.

LayoutTests/imported/w3c:

  • web-platform-tests/html/webappapis/scripting/events/compile-event-handler-settings-objects-expected.txt:
  • web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-incumbent-expected.txt:

Source/JavaScriptCore:

  • interpreter/CallFrame.cpp: (JSC::CallFrame::globalObjectOfClosestCodeBlock):
  • runtime/JSObject.cpp: (JSC::JSObject::getOwnPropertyDescriptor):
  • runtime/PropertySlot.h:

Source/WebCore:

This patch disables new incumbent-window until it is fully implemented to avoid compatibility issue.

  • bindings/js/JSDOMConvertCallbacks.h: (WebCore::Converter<IDLCallbackFunction<T>>::convert): (WebCore::Converter<IDLCallbackInterface<T>>::convert):
  • bindings/js/JSDOMGlobalObject.cpp: (WebCore::callerGlobalObject): (WebCore::legacyActiveGlobalObjectForAccessor):
  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/JSDOMWindowBase.cpp: (WebCore::incumbentDOMWindow): (WebCore::legacyActiveDOMWindowForAccessor):
  • bindings/js/JSDOMWindowBase.h:
  • bindings/scripts/CodeGeneratorJS.pm: (GetJSCAttributesForAttribute): (GenerateCallWith):
  • page/Location.idl:

LayoutTests:

  • http/tests/security/frameNavigation/context-for-location-href-gopd-expected.txt:

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

5:46 PM Changeset in webkit [283686] by Russell Epstein
  • 1 copy in tags/Safari-612.2.9.0.5

Tag Safari-612.2.9.0.5.

5:43 PM Changeset in webkit [283685] by Jean-Yves Avenard
  • 3 edits in trunk/Source/WebCore

Have SourceBufferPrivateAVJObjC use WorkQueue instead of dispatch_async
https://bugs.webkit.org/show_bug.cgi?id=230881
rdar://83429276

This change is twofold:
1- dispatch_async takes an objective-C block which doesn't support C++ move
semantics. As such the lambda would be copied including the captured variables.
When use with a non-thread safe refcounted object it could lead to a race
on the refcount which would result in a leak.
By using a WorkQueue instead, we avoid the above problem.
2- We want to unify in the media code how threads are created and task
dispatched: WorkQueue is a nice solution.

Reviewed by Chris Dumez.

No observable difference.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::append):
(WebCore::SourceBufferPrivateAVFObjC::resetParserState):

5:32 PM Changeset in webkit [283684] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r283294. rdar://problem/83956654

Add weakThis check in addition to null check added in r282881
https://bugs.webkit.org/show_bug.cgi?id=231000
<rdar://83605614>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-09-29
Reviewed by Brady Eidson.

r282881 made NetworkLoad::start call didCompleteWithError, which can cause the
NetworkResourceLoader to be deleted. It added a null check on m_networkLoad which
sometimes reads freed memory. This certainly isn't great, but luckily we have a way
to check if this object has been deleted. Let's do that.

  • NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::startNetworkLoad):

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

5:32 PM Changeset in webkit [283683] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebKitLegacy/mac

Cherry-pick r283225. rdar://problem/83953851

Make WebLocalizedString() thread-safe
https://bugs.webkit.org/show_bug.cgi?id=230954

Reviewed by Alexey Proskuryakov.

Make WebLocalizedString() thread-safe. It takes minimal effort to make it thread-safe given
that the NSBundle API is thread-safe [1] and clients keep calling it on the background thread.

[1] https://developer.apple.com/documentation/foundation/nslocalizedstringwithdefaultvalue
"As of OS X 10.11 and iOS 9, NSBundle is thread-safe. As such, you can safely call

NSLocalizedStringWithDefaultValue from any execution context."

  • Misc/WebLocalizableStrings.mm:

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

5:09 PM Changeset in webkit [283682] by Fujii Hironori
  • 13 edits in trunk

Python 3: run-inspector-generator-tests and generate-inspector-protocol-bindings.py
https://bugs.webkit.org/show_bug.cgi?id=231055

Reviewed by Jonathan Bedard.

Source/JavaScriptCore:

BaseException.message has been deprecated as of Python 2.6. Use
str(e) instead.

It seems that using frozenset causes flaky test failures in Python

  1. Stopped using frozenset.

Rebaselined test expected results with Python 3. This change is
not Python 2 compatible because Python 2 represent a unicode text
as u'pagee' while Python 3 does 'pagee'.

  • inspector/scripts/codegen/models.py:
  • inspector/scripts/generate-inspector-protocol-bindings.py:
  • inspector/scripts/tests/expected/fail-on-command-targetType-matching-domain-debuggableType.json-error:
  • inspector/scripts/tests/expected/fail-on-command-targetTypes-value.json-error:
  • inspector/scripts/tests/expected/fail-on-domain-debuggableTypes-value.json-error:
  • inspector/scripts/tests/expected/fail-on-domain-targetType-matching-domain-debuggableType.json-error:
  • inspector/scripts/tests/expected/fail-on-domain-targetTypes-value.json-error:
  • inspector/scripts/tests/expected/fail-on-event-targetType-matching-domain-debuggableType.json-error:
  • inspector/scripts/tests/expected/fail-on-event-targetTypes-value.json-error:

Tools:

  • Scripts/run-inspector-generator-tests:
  • Scripts/webkitpy/inspector/main.py:

(InspectorGeneratorTests.generate_from_json): Use sys.executable
to invoke generate-inspector-protocol-bindings.py because 'python'
is python2.

5:06 PM Changeset in webkit [283681] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Fix unified source-related build failures in RemoteSourceBufferProxy.cpp
https://bugs.webkit.org/show_bug.cgi?id=231335

Reviewed by Tim Horton.

We directly use WebCore::AudioTrackPrivate and WebCore::VideoTrackPrivate in RemoteSourceBufferProxy.cpp, but we
don't import their respective WebCore headers; this causes the build to break when shifting around unified
source groupings. Resolve this via the usual means (by importing these headers).

  • GPUProcess/media/RemoteSourceBufferProxy.cpp:
4:56 PM Changeset in webkit [283680] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

AX: Make AccessibilityObjectInterface::contents return-by-value instead of return-by-out-parameter
https://bugs.webkit.org/show_bug.cgi?id=231289

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-10-06
Reviewed by Darin Adler.

Make AccessibilityObjectInterface::contents return-by-value instead of
return-by-out-parameter as this is more ergonomic.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::contents):

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::contents):

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

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

4:49 PM Changeset in webkit [283679] by Wenson Hsieh
  • 5 edits in trunk/Source/WebKit

Add some helper functions to RemoteResourceCache and RemoteResourceCacheProxy
https://bugs.webkit.org/show_bug.cgi?id=231319

Reviewed by Simon Fraser.

Add a few const getters to RemoteResourceCache, and make an existing getter on RemoteResourceCacheProxy const.
I plan to use these in future patches, to support using streamable IPC for display list rendering in the GPU
process.

  • GPUProcess/graphics/RemoteResourceCache.cpp:

(WebKit::RemoteResourceCache::cachedImageBuffer const):
(WebKit::RemoteResourceCache::cachedNativeImage const):
(WebKit::RemoteResourceCache::cachedFont const):
(WebKit::RemoteResourceCache::cachedImageBuffer): Deleted.

  • GPUProcess/graphics/RemoteResourceCache.h:
  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::cachedImageBuffer const):
(WebKit::RemoteResourceCacheProxy::cachedImageBuffer): Deleted.

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
4:18 PM Changeset in webkit [283678] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Adopt WTF::ApproximateTime in IPC::Timeout
https://bugs.webkit.org/show_bug.cgi?id=231301

Reviewed by Simon Fraser.

When computing time out deadlines for IPC messages, the time granularities (on the order of hundreds of
milliseconds) are many, many orders of magnitude greater than the granularity of ApproximateTime; this makes it
much cheaper to use ApproximateTime instead of MonotonicTime when computing these deadlines, which significantly
improves performance in the case where we're streaming high volumes of IPC messages.

Additionally, in the case where the timeout duration is infinite, we can avoid asking for the current time
altogether, and simply use ApproximateTime::infinity().

  • Platform/IPC/Timeout.h:

(IPC::Timeout::Timeout):
(IPC::Timeout::secondsUntilDeadline const):
(IPC::Timeout::deadline const):
(IPC::Timeout::didTimeOut const):

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

[ iOS 15 Debug ] imported/w3c/web-platform-tests/xhr/send-timeout-events.htm is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=231337

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
3:58 PM Changeset in webkit [283676] by sihui_liu@apple.com
  • 37 edits
    3 copies
    4 adds in trunk

Add support for FileSystemSyncAccessHandle
https://bugs.webkit.org/show_bug.cgi?id=231185
<rdar://problem/83847859>

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-sync-access-handle-lock.https.tentative.worker-expected.txt:

Source/WebCore:

Implement basic support for FileSystemSyncAccessHandle as proposal:
https://github.com/WICG/file-system-access/blob/main/AccessHandle.md

FileSystemSyncAccessHandle can be created via FileSystemFileHandle, and it commuicates with backend via
FileSystemFileHandle.

Test: storage/filesystemaccess/sync-access-handle-basics-worker.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Headers.cmake:
  • Modules/filesystemaccess/FileSystemFileHandle.cpp:

(WebCore::FileSystemFileHandle::createSyncAccessHandle):
(WebCore::FileSystemFileHandle::getSize):
(WebCore::FileSystemFileHandle::truncate):
(WebCore::FileSystemFileHandle::flush):
(WebCore::FileSystemFileHandle::close):

  • Modules/filesystemaccess/FileSystemFileHandle.h:
  • Modules/filesystemaccess/FileSystemFileHandle.idl:
  • Modules/filesystemaccess/FileSystemStorageConnection.h:
  • Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp: Added.

(WebCore::FileSystemSyncAccessHandle::create):
(WebCore::FileSystemSyncAccessHandle::FileSystemSyncAccessHandle):
(WebCore::FileSystemSyncAccessHandle::~FileSystemSyncAccessHandle):
(WebCore::FileSystemSyncAccessHandle::truncate):
(WebCore::FileSystemSyncAccessHandle::getSize):
(WebCore::FileSystemSyncAccessHandle::flush):
(WebCore::FileSystemSyncAccessHandle::close):
(WebCore::FileSystemSyncAccessHandle::didClose):

  • Modules/filesystemaccess/FileSystemSyncAccessHandle.h: Added.
  • Modules/filesystemaccess/FileSystemSyncAccessHandle.idl: Added.
  • Modules/filesystemaccess/FileSystemSyncAccessHandleIdentifier.h: Added.
  • Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp:

(WebCore::WorkerFileSystemStorageConnection::scopeClosed):
(WebCore::WorkerFileSystemStorageConnection::removeEntry):
(WebCore::WorkerFileSystemStorageConnection::didCreateSyncAccessHandle):
(WebCore::WorkerFileSystemStorageConnection::completeIntegerCallback):
(WebCore::WorkerFileSystemStorageConnection::completeVoidCallback):
(WebCore::WorkerFileSystemStorageConnection::createSyncAccessHandle):
(WebCore::WorkerFileSystemStorageConnection::getSize):
(WebCore::WorkerFileSystemStorageConnection::truncate):
(WebCore::WorkerFileSystemStorageConnection::flush):
(WebCore::WorkerFileSystemStorageConnection::close):
(WebCore::WorkerFileSystemStorageConnection::didRemoveEntry): Deleted.

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

Source/WebKit:

Currently we only allow one open access handle on one file. Second access handle can be created after the first
is closed.

  • NetworkProcess/storage/FileSystemStorageError.h:

(WebKit::convertToException):
(WebKit::convertToExceptionOr):
(WebKit::convertToExceptionCode): Deleted.

  • NetworkProcess/storage/FileSystemStorageHandle.cpp:

(WebKit::FileSystemStorageHandle::createSyncAccessHandle):
(WebKit::FileSystemStorageHandle::getSize):
(WebKit::FileSystemStorageHandle::truncate):
(WebKit::FileSystemStorageHandle::flush):
(WebKit::FileSystemStorageHandle::close):

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

(WebKit::FileSystemStorageManager::connectionClosed):
(WebKit::FileSystemStorageManager::acquireLockForFile):
(WebKit::FileSystemStorageManager::releaseLockForFile):

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

(WebKit::NetworkStorageManager::createSyncAccessHandle):
(WebKit::NetworkStorageManager::getSizeForAccessHandle):
(WebKit::NetworkStorageManager::truncateForAccessHandle):
(WebKit::NetworkStorageManager::flushForAccessHandle):
(WebKit::NetworkStorageManager::closeAccessHandle):

  • NetworkProcess/storage/NetworkStorageManager.h:
  • NetworkProcess/storage/NetworkStorageManager.messages.in:
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp:

(WebKit::WebFileSystemStorageConnection::getFileHandle):
(WebKit::WebFileSystemStorageConnection::getDirectoryHandle):
(WebKit::WebFileSystemStorageConnection::removeEntry):
(WebKit::WebFileSystemStorageConnection::resolve):
(WebKit::WebFileSystemStorageConnection::createSyncAccessHandle):
(WebKit::WebFileSystemStorageConnection::getSize):
(WebKit::WebFileSystemStorageConnection::truncate):
(WebKit::WebFileSystemStorageConnection::flush):
(WebKit::WebFileSystemStorageConnection::close):

  • WebProcess/WebCoreSupport/WebFileSystemStorageConnection.h:
  • WebProcess/WebCoreSupport/WebStorageConnection.cpp:

(WebKit::WebStorageConnection::fileSystemGetDirectory):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
  • wtf/FileSystem.h:
  • wtf/glib/FileSystemGlib.cpp:

(WTF::FileSystemImpl::flushFile):

  • wtf/posix/FileSystemPOSIX.cpp:

(WTF::FileSystemImpl::flushFile):

  • wtf/win/FileSystemWin.cpp:

(WTF::FileSystemImpl::flushFile):

LayoutTests:

  • storage/filesystemaccess/resources/sync-access-handle-basics.js: Added.

(finishTest):
(getDirectory):

  • storage/filesystemaccess/sync-access-handle-basics-worker-expected.txt: Added.
  • storage/filesystemaccess/sync-access-handle-basics-worker.html: Added.
3:41 PM Changeset in webkit [283675] by Wenson Hsieh
  • 9 edits
    2 deletes in trunk

Make ImageBuffer::drawingContext() return GraphicsContext instead of DisplayList::DrawingContext
https://bugs.webkit.org/show_bug.cgi?id=231296

Reviewed by Simon Fraser.

Source/WebCore:

In preparation for decoupling RemoteImageBufferProxy from DisplayList::ImageBuffer (as well as DrawingContext),
we refactor ImageBuffer::drawingContext() to no longer return a DisplayList::DrawingContext, but rather a
generic GraphicsContext. In future patches, this allows us to create a new GraphicsContext subclass that doesn't
manage its own DisplayList, but instead uses streamable IPC messages to send individual display list items (or
eventually, just their arguments) over to the GPU process.

Unfortunately, this means that HTMLCanvasElement can no longer use its display list drawing context to track
display list items. However, since this capability was only used for a single layout test, we can simply remove
it altogether (and simplify some of the code in HTMLCanvasElement in the process).

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createImageBuffer const):
(WebCore::HTMLCanvasElement::setTracksDisplayListReplay): Deleted.
(WebCore::HTMLCanvasElement::displayListAsText const): Deleted.
(WebCore::HTMLCanvasElement::replayDisplayListAsText const): Deleted.

  • html/HTMLCanvasElement.h:
  • platform/graphics/displaylists/DisplayListImageBuffer.h:
  • testing/Internals.cpp:

(WebCore::Internals::setElementTracksDisplayListReplay):
(WebCore::Internals::displayListForElement):
(WebCore::Internals::replayDisplayListForElement):

LayoutTests:

Remove support for display list tracking in the canvas element. See WebCore ChangeLog for more details.

  • displaylists/canvas-display-list-expected.txt: Removed.
  • displaylists/canvas-display-list.html: Removed.
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
3:41 PM Changeset in webkit [283674] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 ] media/track/track-forced-subtitles-in-band.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=231333

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
3:35 PM Changeset in webkit [283673] by Ryan Haddad
  • 1 edit
    4 adds in trunk/LayoutTests

[ iOS 15 ]2 fast/dom/HTMLAnchorElement tests are failing
https://bugs.webkit.org/show_bug.cgi?id=231293

Unreviewed test gardening.

Add iOS 14 baselines.

  • platform/ios-14/fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-async-delegate-expected.txt: Added.
  • platform/ios-14/fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-expected.txt: Added.
3:26 PM Changeset in webkit [283672] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, reverting r283634.
https://bugs.webkit.org/show_bug.cgi?id=231332

Some debug assertions. RenderLayer needs to be fixed first

Reverted changeset:

"Ensure that the top layer is always anchored to the
RenderView"
https://bugs.webkit.org/show_bug.cgi?id=231292
https://commits.webkit.org/r283634

3:12 PM Changeset in webkit [283671] by Alan Coon
  • 7 edits in branches/safari-613.1.4-branch/Source/WebKit

Revert r283374. rdar://problem/83847918

3:08 PM Changeset in webkit [283670] by Wenson Hsieh
  • 16 edits
    1 move in trunk

Move FlushIdentifier out of the DisplayList namespace
https://bugs.webkit.org/show_bug.cgi?id=231263

Reviewed by Simon Fraser.

Source/WebCore:

See WebKit/ChangeLog for more details.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/GraphicsContextFlushIdentifier.h: Renamed from Source/WebCore/platform/graphics/displaylists/DisplayListFlushIdentifier.h.
  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::didFlush):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::FlushContext::FlushContext):
(WebCore::DisplayList::FlushContext::identifier const):

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::flushContext):

Source/WebKit:

In a future patch, I plan to use DisplayList::FlushIdentifier in code that is not specific to WebCore display
lists. As such, move this out into a separate header (GraphicsContextFlushIdentifier.h), and rename the enum
class accordingly.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::didFlush):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):
(headers_for_type):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::lastSentFlushIdentifier const):
(WebKit::RemoteImageBufferProxy::waitForDidFlushOnSecondaryThread):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::didFlush):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:

Tools:

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

(TestWebKitAPI::TEST):

3:03 PM Changeset in webkit [283669] by Ross Kirsling
  • 2 edits in trunk/JSTests

Unreviewed, ensure test262 expectations reflect BigSur release mode.

  • test262/expectations.yaml:
2:47 PM Changeset in webkit [283668] by Russell Epstein
  • 8 edits in branches/safari-612-branch/Source

Versioning.

WebKit-7612.3.1

2:45 PM Changeset in webkit [283667] by Kyle Piddington
  • 8 edits
    3 adds
    2 deletes in trunk

Shadertoy "truchet district" fails to compile with error: Internal error compiling shader with Metal backend"
https://bugs.webkit.org/show_bug.cgi?id=229378
<rdar://problem/82299053>

Reviewed by Kenneth Russell.

Source/ThirdParty/ANGLE:

Change TranslatorMetalDirect to prefix '_u' to all user defined variables.
Clean up builtins like samplers and ANGLE structs that were being
accidently promoted to userDefined variables.

  • src/compiler/translator/TranslatorMetalDirect.cpp:

(sh::GetMslKeywords):

  • src/compiler/translator/TranslatorMetalDirect/Name.cpp:

(Name::emit const):

  • src/compiler/translator/TranslatorMetalDirect/SymbolEnv.cpp:

(SymbolEnv::getTextureEnv):
(SymbolEnv::getSamplerStruct):
(sh::GetTextureTypeName):

  • src/libANGLE/renderer/metal/mtl_glslang_mtl_utils.mm:

(rx::mtl::GenerateTransformFeedbackVaryingOutput):

LayoutTests:

Add a test testing Metal reserved words and standard library macros.

  • webgl/pending/conformance/glsl/misc/shader-with-reserved-words-2-expected.txt: Added.
  • webgl/pending/conformance/glsl/misc/shader-with-reserved-words-2.html: Added.
  • webgl/pending/resources/webgl_test_files/conformance/glsl/misc/shader-with-reserved-words-2.html: Added.
2:38 PM Changeset in webkit [283666] by commit-queue@webkit.org
  • 1 edit
    27 adds in trunk/JSTests

[JSC] Update test262
https://bugs.webkit.org/show_bug.cgi?id=231201

Add tests that were somehow cut off in the previous patch.

Patch by Philip Chimento <pchimento@igalia.com> on 2021-10-06
Reviewed by Ross Kirsling.

  • test262/test/built-ins/Temporal/Now/*: Added.
2:24 PM Changeset in webkit [283665] by Alan Coon
  • 1 copy in tags/Safari-613.1.3.2

Tag Safari-613.1.3.2.

2:23 PM Changeset in webkit [283664] by Alan Coon
  • 2 edits in branches/safari-613.1.4-branch/Source/WebCore

Cherry-pick r283641. rdar://problem/83951373

Clear glyph cache in InlineContent::clearAndDetach
https://bugs.webkit.org/show_bug.cgi?id=231312

Reviewed by Alan Bujtas.

We may be leaving stale glyph cache entries behind.

  • layout/integration/LayoutIntegrationInlineContent.cpp: (WebCore::LayoutIntegration::InlineContent::clearAndDetach):

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

2:23 PM Changeset in webkit [283663] by Alan Coon
  • 11 edits in branches/safari-613.1.4-branch

Cherry-pick r283293. rdar://problem/83951351

Print values in a nicer way in the jsc shell
https://bugs.webkit.org/show_bug.cgi?id=230931

Reviewed by Tadeu Zagallo.

JSTests:

  • ChakraCore/test/jsc-lib.js:

Source/JavaScriptCore:

Currently, print(1), print("1"), and print([1]) all print to stdout
simply as "1" (without the quotes). Same for values when running the
REPL. This isn't super helpful. Let's print quotes for strings, and
brackets for arrays.

Some tests rely on the old print behavior. Those tests now use the legacyPrint
instead.

  • jsc.cpp: (toCString): (printInternal): (JSC_DEFINE_HOST_FUNCTION): (runInteractive): (cStringFromViewWithString): Deleted.
  • runtime/JSCJSValue.cpp: (JSC::JSValue::toWTFStringForConsole const):
  • runtime/JSCJSValue.h:

LayoutTests:

  • resources/standalone-pre.js:

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

2:20 PM Changeset in webkit [283662] by Aditya Keerthi
  • 6 edits in trunk/Source

Fix watchOS, tvOS, and macCatalyst builds after r283592
https://bugs.webkit.org/show_bug.cgi?id=231300
rdar://83936867

Reviewed by Wenson Hsieh.

Source/WebKit:

  • Platform/spi/ios/PhotosUISPI.h:
  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel imagePickerController:didFinishPickingMultipleMediaWithInfo:]):

Source/WTF:

  • wtf/PlatformEnableCocoa.h:
  • wtf/PlatformHave.h:
2:08 PM Changeset in webkit [283661] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 ] http/tests/websocket/tests/hybi/close-code-and-reason.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=231329

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
2:07 PM Changeset in webkit [283660] by Kocsen Chung
  • 8 edits in branches/safari-613.1.3-branch/Source

Versioning.

WebKit-7613.1.3.2

1:57 PM Changeset in webkit [283659] by ntim@apple.com
  • 10 edits in trunk/LayoutTests

Replace setTimeout(x, 0) with requestAnimationFrame(x) in some autofocus tests
https://bugs.webkit.org/show_bug.cgi?id=231323

Reviewed by Chris Dumez.

Reason being the new autofocus behavior will happen asynchronously during "update rendering"
steps which is caught by the first, but not the second method.

Other minor changes:

  • Remove "in XHTML", because the file extensions aren't actually XHTML...
  • Remove not needed attributes from <script> tag
  • Remove unneeded whitespace
  • fast/forms/autofocus-opera-001.html:
  • fast/forms/autofocus-opera-002.html:
  • fast/forms/autofocus-opera-003.html:
  • fast/forms/autofocus-opera-004.html:
  • fast/forms/autofocus-opera-005.html:
  • fast/forms/autofocus-opera-006.html:
  • fast/forms/autofocus-opera-007.html:
  • fast/forms/autofocus-opera-008.html:
  • fast/forms/textarea/textarea-autofocus-removal-while-focusing.html:
1:53 PM Changeset in webkit [283658] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/JavaScriptCore

Cherry-pick r281647. rdar://problem/83776284

[AppleWin] JSC build failure
https://bugs.webkit.org/show_bug.cgi?id=229578

Reviewed by Don Olmstead.

Add new build dependency between LLIntOffsetsExtractor and JSCBuiltins targets.

  • CMakeLists.txt:

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

1:47 PM Changeset in webkit [283657] by ntim@apple.com
  • 2 edits in trunk/LayoutTests

Rewrite plugins/object-onfocus-mutation-crash.html to stop relying on autofocus
https://bugs.webkit.org/show_bug.cgi?id=231327

Reviewed by Chris Dumez.

This test mostly tests onfocus and <object>, we don't need it to use autofocus.
The new autofocus timing will be async so we don't want this test to break with the new
behavior implemented. Use input.focus() instead.

  • plugins/object-onfocus-mutation-crash.html:
1:46 PM Changeset in webkit [283656] by Russell Epstein
  • 2 edits in branches/safari-612.2.9.1-branch/Source/JavaScriptCore

Cherry-pick r281647. rdar://problem/83782432

[AppleWin] JSC build failure
https://bugs.webkit.org/show_bug.cgi?id=229578

Reviewed by Don Olmstead.

Add new build dependency between LLIntOffsetsExtractor and JSCBuiltins targets.

  • CMakeLists.txt:

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

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

Unreviewed build fix for non-unified build.

  • Modules/webaudio/WaveShaperProcessor.cpp:
1:41 PM Changeset in webkit [283654] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ iOS macOS wk2 ] http/tests/preload/onload_event.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=231328

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
1:26 PM Changeset in webkit [283653] by Russell Epstein
  • 2 edits in branches/safari-612.2.9.3-branch/Source/JavaScriptCore

Cherry-pick r283632. rdar://problem/83942645

Speculative fix for a null pointer dereference in ByteCodeParser::handlePutByVal.
https://bugs.webkit.org/show_bug.cgi?id=231252
rdar://83310320

Reviewed by Yusuke Suzuki.

We're seeing a null pointer dereference in ByteCodeParser::handlePutByVal().
Adding a null check here as a speculative fix to mitigate crashes while we
investigate further.

  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock): (JSC::DFG::ByteCodeParser::handlePutByVal):

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

1:25 PM Changeset in webkit [283652] by Russell Epstein
  • 8 edits in branches/safari-612.2.9.3-branch/Source

Versioning.

WebKit-7612.2.9.3.4

1:20 PM Changeset in webkit [283651] by commit-queue@webkit.org
  • 597 edits
    2847 adds
    15 deletes in trunk/JSTests

[JSC] Update test262
https://bugs.webkit.org/show_bug.cgi?id=231201

Patch by Philip Chimento <pchimento@igalia.com> on 2021-10-06
Reviewed by Ross Kirsling.

Update test262 to latest, to bring in Temporal tests.

  • test262/config.yaml: Ignore tests that depend on unimplemented parts

of Temporal.

  • test262/expectations.yaml: Add new failures.
  • test262/*: Update from upstream.
  • test262/test262-Revision.txt:
1:09 PM Changeset in webkit [283650] by Russell Epstein
  • 2 edits in branches/safari-612.2.9.0-branch/Source/JavaScriptCore

Cherry-pick r283632. rdar://problem/83942677

Speculative fix for a null pointer dereference in ByteCodeParser::handlePutByVal.
https://bugs.webkit.org/show_bug.cgi?id=231252
rdar://83310320

Reviewed by Yusuke Suzuki.

We're seeing a null pointer dereference in ByteCodeParser::handlePutByVal().
Adding a null check here as a speculative fix to mitigate crashes while we
investigate further.

  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock): (JSC::DFG::ByteCodeParser::handlePutByVal):

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

1:07 PM Changeset in webkit [283649] by Russell Epstein
  • 8 edits in branches/safari-612.2.9.0-branch/Source

Versioning.

WebKit-7612.2.9.0.5

1:05 PM Changeset in webkit [283648] by Ben Nham
  • 2 edits in trunk/Source/WebCore

WaveShaperProcessor missing JSTypedArrays include

Unreviewed build fix.

The missing include can cause a build failure when adding a new file to Sources.txt.

  • Modules/webaudio/WaveShaperProcessor.cpp:
12:52 PM Changeset in webkit [283647] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[ iOS15 Release ] TestWebKitAPI.WebSocket.CloseCode
https://bugs.webkit.org/show_bug.cgi?id=231306

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

This test starts by navigating, opening a websocket connection, then navigating away.
Sometimes in release builds we only get one didFinishNavigation callback.
The important thing about this test is that the server receives the expected close code
whenever the page is navigated away from, so drop the two didFinishNavigation checks.

I manually verified that on iOS15 simulator release builds the test would time out here,
and that it doesn't any more.

  • TestWebKitAPI/Tests/WebKitCocoa/WebSocket.mm:

(TestWebKitAPI::TEST):

12:32 PM Changeset in webkit [283646] by Chris Dumez
  • 2 edits
    3 adds in trunk/LayoutTests

[ iOS 15 ]2 fast/dom/HTMLAnchorElement tests are failing
https://bugs.webkit.org/show_bug.cgi?id=231293
<rdar://problem/83935262>

Unreviewed, land iOS15 baselines for those tests.

  • platform/ios-wk2/TestExpectations:
  • platform/ios/fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-async-delegate-expected.txt: Added.
  • platform/ios/fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-expected.txt: Added.
12:24 PM Changeset in webkit [283645] by commit-queue@webkit.org
  • 5 edits
    158 adds in trunk/LayoutTests

Import css/motion tests from WPT
https://bugs.webkit.org/show_bug.cgi?id=231195

Patch by Kiet Ho <Kiet Ho> on 2021-10-06
Reviewed by Myles C. Maxfield.

LayoutTests/imported/w3c:

Imported from git hash 4060609421747fbcd6f99d59ded3df9eaf3018b4.

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/css/motion/META.yml: Added.
  • web-platform-tests/css/motion/animation/offset-anchor-composition-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-anchor-composition.html: Added.
  • web-platform-tests/css/motion/animation/offset-anchor-interpolation-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-anchor-interpolation.html: Added.
  • web-platform-tests/css/motion/animation/offset-distance-composition-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-distance-composition.html: Added.
  • web-platform-tests/css/motion/animation/offset-distance-interpolation-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-distance-interpolation.html: Added.
  • web-platform-tests/css/motion/animation/offset-interpolation-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-interpolation.html: Added.
  • web-platform-tests/css/motion/animation/offset-path-composition-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-path-composition.html: Added.
  • web-platform-tests/css/motion/animation/offset-path-interpolation-001-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-path-interpolation-001.html: Added.
  • web-platform-tests/css/motion/animation/offset-path-interpolation-002-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-path-interpolation-002.html: Added.
  • web-platform-tests/css/motion/animation/offset-path-interpolation-003-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-path-interpolation-003.html: Added.
  • web-platform-tests/css/motion/animation/offset-path-interpolation-004-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-path-interpolation-004.html: Added.
  • web-platform-tests/css/motion/animation/offset-path-interpolation-005-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-path-interpolation-005.html: Added.
  • web-platform-tests/css/motion/animation/offset-position-composition-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-position-composition.html: Added.
  • web-platform-tests/css/motion/animation/offset-position-interpolation-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-position-interpolation.html: Added.
  • web-platform-tests/css/motion/animation/offset-rotate-composition-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-rotate-composition.html: Added.
  • web-platform-tests/css/motion/animation/offset-rotate-interpolation-expected.txt: Added.
  • web-platform-tests/css/motion/animation/offset-rotate-interpolation.html: Added.
  • web-platform-tests/css/motion/animation/reftests/offset-distance-interpolation-001-expected.html: Added.
  • web-platform-tests/css/motion/animation/reftests/offset-distance-interpolation-001.html: Added.
  • web-platform-tests/css/motion/animation/reftests/offset-path-path-interpolation-001-expected.html: Added.
  • web-platform-tests/css/motion/animation/reftests/offset-path-path-interpolation-001.html: Added.
  • web-platform-tests/css/motion/animation/reftests/offset-path-with-transforms-001-expected.html: Added.
  • web-platform-tests/css/motion/animation/reftests/offset-path-with-transforms-001.html: Added.
  • web-platform-tests/css/motion/animation/reftests/offset-rotate-interpolation-001-expected.html: Added.
  • web-platform-tests/css/motion/animation/reftests/offset-rotate-interpolation-001.html: Added.
  • web-platform-tests/css/motion/animation/reftests/w3c-import.log: Added.
  • web-platform-tests/css/motion/animation/w3c-import.log: Added.
  • web-platform-tests/css/motion/inheritance-expected.txt: Added.
  • web-platform-tests/css/motion/inheritance.html: Added.
  • web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-001-expected.html: Added.
  • web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-001.html: Added.
  • web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-002-expected.html: Added.
  • web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-002.html: Added.
  • web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-003-expected.html: Added.
  • web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-003.html: Added.
  • web-platform-tests/css/motion/offset-distance-001-expected.html: Added.
  • web-platform-tests/css/motion/offset-distance-001.html: Added.
  • web-platform-tests/css/motion/offset-distance-002-expected.html: Added.
  • web-platform-tests/css/motion/offset-distance-002.html: Added.
  • web-platform-tests/css/motion/offset-distance-003-expected.html: Added.
  • web-platform-tests/css/motion/offset-distance-003.html: Added.
  • web-platform-tests/css/motion/offset-distance-004-expected.html: Added.
  • web-platform-tests/css/motion/offset-distance-004.html: Added.
  • web-platform-tests/css/motion/offset-distance-005-expected.html: Added.
  • web-platform-tests/css/motion/offset-distance-005.html: Added.
  • web-platform-tests/css/motion/offset-distance-006-expected.html: Added.
  • web-platform-tests/css/motion/offset-distance-006.html: Added.
  • web-platform-tests/css/motion/offset-distance-007-expected.html: Added.
  • web-platform-tests/css/motion/offset-distance-007.html: Added.
  • web-platform-tests/css/motion/offset-distance-008-expected.html: Added.
  • web-platform-tests/css/motion/offset-distance-008.html: Added.
  • web-platform-tests/css/motion/offset-distance-009-expected.html: Added.
  • web-platform-tests/css/motion/offset-distance-009.html: Added.
  • web-platform-tests/css/motion/offset-path-huge-angle-deg-001-crash.html: Added.
  • web-platform-tests/css/motion/offset-path-huge-angle-grad-001-crash.html: Added.
  • web-platform-tests/css/motion/offset-path-huge-angle-turn-001-crash.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-001-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-001.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-002-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-002.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-003-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-003.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-004-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-004.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-005-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-005.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-006-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-006.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-007-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-007.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-008-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-008.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-009-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-009.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-contain-001-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-contain-001.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-contain-002-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-contain-002.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-contain-003-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-contain-003.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-contain-004-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-contain-004.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-contain-005-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-ray-contain-005.html: Added.
  • web-platform-tests/css/motion/offset-path-serialization-expected.txt: Added.
  • web-platform-tests/css/motion/offset-path-serialization.html: Added.
  • web-platform-tests/css/motion/offset-path-string-001-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-string-001.html: Added.
  • web-platform-tests/css/motion/offset-path-string-002-expected.html: Added.
  • web-platform-tests/css/motion/offset-path-string-002.html: Added.
  • web-platform-tests/css/motion/offset-rotate-001-expected.html: Added.
  • web-platform-tests/css/motion/offset-rotate-001.html: Added.
  • web-platform-tests/css/motion/offset-rotate-002-expected.html: Added.
  • web-platform-tests/css/motion/offset-rotate-002.html: Added.
  • web-platform-tests/css/motion/offset-rotate-003-expected.html: Added.
  • web-platform-tests/css/motion/offset-rotate-003.html: Added.
  • web-platform-tests/css/motion/offset-rotate-004-expected.html: Added.
  • web-platform-tests/css/motion/offset-rotate-004.html: Added.
  • web-platform-tests/css/motion/offset-rotate-005-expected.html: Added.
  • web-platform-tests/css/motion/offset-rotate-005.html: Added.
  • web-platform-tests/css/motion/offset-supports-calc-expected.txt: Added.
  • web-platform-tests/css/motion/offset-supports-calc.html: Added.
  • web-platform-tests/css/motion/parsing/offset-anchor-computed-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-anchor-computed.html: Added.
  • web-platform-tests/css/motion/parsing/offset-anchor-parsing-invalid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-anchor-parsing-invalid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-anchor-parsing-valid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-anchor-parsing-valid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-distance-computed-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-distance-computed.html: Added.
  • web-platform-tests/css/motion/parsing/offset-distance-parsing-invalid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-distance-parsing-invalid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-distance-parsing-valid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-distance-parsing-valid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-parsing-invalid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-parsing-invalid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-parsing-valid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-parsing-valid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-path-computed-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-path-computed.html: Added.
  • web-platform-tests/css/motion/parsing/offset-path-parsing-invalid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-path-parsing-invalid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-path-parsing-valid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-path-parsing-valid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-position-computed-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-position-computed.html: Added.
  • web-platform-tests/css/motion/parsing/offset-position-parsing-invalid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-position-parsing-invalid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-position-parsing-valid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-position-parsing-valid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-rotate-computed-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-rotate-computed.html: Added.
  • web-platform-tests/css/motion/parsing/offset-rotate-parsing-invalid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-rotate-parsing-invalid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-rotate-parsing-valid-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-rotate-parsing-valid.html: Added.
  • web-platform-tests/css/motion/parsing/offset-shorthand-expected.txt: Added.
  • web-platform-tests/css/motion/parsing/offset-shorthand.html: Added.
  • web-platform-tests/css/motion/parsing/w3c-import.log: Added.
  • web-platform-tests/css/motion/w3c-import.log: Added.

LayoutTests:

12:04 PM Changeset in webkit [283644] by Ben Nham
  • 2 edits in trunk/Source/WebCore

WaveShaperProcessor missing ArrayBuffer include

Unreviewed build fix.

The missing include can cause a build failure when adding a new file to Sources.txt.

  • Modules/webaudio/WaveShaperProcessor.cpp:
11:58 AM Changeset in webkit [283643] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix.

Fix XPath::Value namespacing after r283635.

  • xml/XPathResult.cpp:

(WebCore::XPathResult::XPathResult):

11:48 AM Changeset in webkit [283642] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 ] fast/text/accessibility-bold-system-font-2.html is image failing.
https://bugs.webkit.org/show_bug.cgi?id=231316

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:39 AM Changeset in webkit [283641] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Clear glyph cache in InlineContent::clearAndDetach
https://bugs.webkit.org/show_bug.cgi?id=231312

Reviewed by Alan Bujtas.

We may be leaving stale glyph cache entries behind.

  • layout/integration/LayoutIntegrationInlineContent.cpp:

(WebCore::LayoutIntegration::InlineContent::clearAndDetach):

11:34 AM Changeset in webkit [283640] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/events/ios/rotation/safe-area-insets-during-safari-type-rotation.html is timing out/ flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=231315

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:28 AM Changeset in webkit [283639] by Russell Epstein
  • 2 edits in branches/safari-612.2.9.1-branch/Source/JavaScriptCore

Cherry-pick r283632. rdar://problem/83943156

Speculative fix for a null pointer dereference in ByteCodeParser::handlePutByVal.
https://bugs.webkit.org/show_bug.cgi?id=231252
rdar://83310320

Reviewed by Yusuke Suzuki.

We're seeing a null pointer dereference in ByteCodeParser::handlePutByVal().
Adding a null check here as a speculative fix to mitigate crashes while we
investigate further.

  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock): (JSC::DFG::ByteCodeParser::handlePutByVal):

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

11:17 AM Changeset in webkit [283638] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

ASSERTion failure in WebCore::deviceClass() on macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=231279

Reviewed by Anders Carlsson.

  • platform/ios/Device.cpp:

(WebCore::deviceClass):
Simplify deviceClass(); there's no reason to assert here, callers
should be written to assume they don't know the future. Also, this
has been asserting on macOS for ages...

11:11 AM Changeset in webkit [283637] by Aditya Keerthi
  • 10 edits in trunk

Fix serialization of CSSMediaRule
https://bugs.webkit.org/show_bug.cgi?id=231249

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-ui/appearance-serialization-expected.txt: Rebaseline.
  • web-platform-tests/css/css-ui/webkit-appearance-serialization-expected.txt: Rebaseline.
  • web-platform-tests/css/cssom/serialize-media-rule-expected.txt: Mark progression.

Source/WebCore:

See https://drafts.csswg.org/cssom/#serialize-a-css-rule.

New behavior matches Chrome and Firefox.

  • css/CSSMediaRule.cpp:

(WebCore::CSSMediaRule::cssText const):

Remove space before newline.

LayoutTests:

Rebaseline tests to account for the correct serialization.

  • css3/supports-cssom-expected.txt:
  • css3/supports-cssom.html:
  • fast/css/resources/insertRule-media.js:
11:08 AM Changeset in webkit [283636] by Darin Adler
  • 5 edits in trunk/Source/WebCore

Reduce use of "using namespace": eliminate all "using namespace XPath"
https://bugs.webkit.org/show_bug.cgi?id=231302

Reviewed by Sam Weinig.

  • xml/XPathEvaluator.cpp: Removed "using namespace XPath".

(WebCore::XPathEvaluator::evaluate): Use XPath prefix explicitly.

  • xml/XPathExpression.cpp: Removed "using namespace XPath".

(WebCore::XPathExpression::createExpression): Ditto.
(WebCore::XPathExpression::evaluate): Ditto.

  • xml/XPathGrammar.y: Removed "using namespace WebCore" and

"using namespace XPath".

  • xml/XPathResult.cpp: Removed "using namespace XPath".
11:00 AM Changeset in webkit [283635] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Don't use namespace WebCore::XPath at global scope
https://bugs.webkit.org/show_bug.cgi?id=231186

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

It causes problems with unified builds, which get confused between WebCore::XPath::Function and WTF::Function.

  • xml/XPathGrammar.cpp:
  • xml/XPathGrammar.h:
  • xml/XPathGrammar.y:
  • xml/XPathParser.cpp:
10:54 AM Changeset in webkit [283634] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Ensure that the top layer is always anchored to the RenderView
https://bugs.webkit.org/show_bug.cgi?id=231292

Reviewed by Simon Fraser.

A fixed positioned block level box is not necessarily anchored to the RenderView (see canContainFixedPositionObjects).
This patch ensures that we skip those ancestors and return the RenderView as the containing block for the top layer content.

https://fullscreen.spec.whatwg.org/#new-stacking-layer
"If the top layer position property computes to fixed, its containing block is the viewport, and the initial containing block otherwise."

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::containingBlock const):
(WebCore::containerForElement):

10:50 AM Changeset in webkit [283633] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/events/ios/fast-click-double-tap-to-zoom-in-on-text-and-then-again-to-zoom-out.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=231311

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:31 AM Changeset in webkit [283632] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Speculative fix for a null pointer dereference in ByteCodeParser::handlePutByVal.
https://bugs.webkit.org/show_bug.cgi?id=231252
rdar://83310320

Reviewed by Yusuke Suzuki.

We're seeing a null pointer dereference in ByteCodeParser::handlePutByVal().
Adding a null check here as a speculative fix to mitigate crashes while we
investigate further.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):

10:29 AM Changeset in webkit [283631] by ntim@apple.com
  • 7 edits
    1 delete in trunk

Reset m_isModal flag when removing <dialog> from document
https://bugs.webkit.org/show_bug.cgi?id=231290

Reviewed by Alan Bujtas.

m_isModal triggers the :-internal-modal-dialog pseudo class, which changes position from absolute to fixed.

When removing a modal <dialog> from the document, it is also removed from the top layer, so it makes sense
to reset the m_isModal flag as well as a result.

Updated test expectations to reflect new passing tests.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout-expected.txt:

Source/WebCore:

  • html/HTMLDialogElement.cpp:

(WebCore::HTMLDialogElement::removedFromAncestor):

  • html/HTMLDialogElement.h:

LayoutTests:

  • TestExpectations:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout-expected.txt: Removed.
10:13 AM Changeset in webkit [283630] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

media/modern-media-controls tests are timing out.
https://bugs.webkit.org/show_bug.cgi?id=231187

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:11 AM Changeset in webkit [283629] by Russell Epstein
  • 8 edits in branches/safari-612.2.9.1-branch/Source

Versioning.

WebKit-7612.2.9.1.5

9:56 AM Changeset in webkit [283628] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

CoreAudioSharedUnit should not clear its persistentID when device capture changes
https://bugs.webkit.org/show_bug.cgi?id=231280

Reviewed by Eric Carlson.

Manually tested.

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioSharedUnit::cleanupAudioUnit):
Partially reverting https://commits.webkit.org/r280702 which was clearing m_persistentID in cleanUpAudioUnit.
The issue is that when unit is capturing and is changing capturing device, it will set m_persistentID then cleanUpAudioUnit
as part of its reconfiguration. This was making m_persistentID being empty.
When starting to capture, we often receive a notification of changed devices and we would check whether the new devices set
contains m_persistentID. If not (which is the case since m_persistentID is empty), we would fail the capture.

9:30 AM Changeset in webkit [283627] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 Debug ] 3 imported/w3c/web-platform-tests/selection tests are a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=231299

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
9:06 AM Changeset in webkit [283626] by Chris Lord
  • 9 edits
    3 adds in trunk

[GTK][WPE] CSS scroll snapping interacts badly with smooth scrolling
https://bugs.webkit.org/show_bug.cgi?id=229037

Reviewed by Simon Fraser.

Source/WebCore:

Make CSS scroll snapping behave in a predictable way when scrolling
with touchpads/screens on GTK/WPE.

Test: fast/scrolling/gtk/user-scroll-snapping-interaction.html

  • platform/ScrollAnimator.h:

(WebCore::ScrollAnimator::isUserScrollInProgress const):
(WebCore::ScrollAnimator::isScrollSnapInProgress const):

  • platform/ScrollingEffectsController.cpp:

(WebCore::ScrollingEffectsController::processWheelEventForKineticScrolling):
(WebCore::ScrollingEffectsController::adjustDeltaForSnappingIfNeeded):
(WebCore::ScrollingEffectsController::handleWheelEvent):
(WebCore::ScrollingEffectsController::isUserScrollInProgress const):
(WebCore::ScrollingEffectsController::isScrollSnapInProgress const):

  • platform/ScrollingEffectsController.h:
  • platform/mac/ScrollAnimatorMac.h:
  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::isUserScrollInProgress const): Deleted.
(WebCore::ScrollAnimatorMac::isScrollSnapInProgress const): Deleted.

LayoutTests:

Add a GTK-only test to verify CSS scroll snapping and kinetic/touchpad
scrolling behave correctly.

  • TestExpectations:
  • fast/scrolling/gtk/user-scroll-snapping-interaction-expected.txt: Added.
  • fast/scrolling/gtk/user-scroll-snapping-interaction.html: Added.
  • platform/gtk/TestExpectations:
8:57 AM Changeset in webkit [283625] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Style checker should check spacing inside braces with elements in them
https://bugs.webkit.org/show_bug.cgi?id=231199

In order to automate this and prevent reviewers from having to comment
on it, ensure that spaces are required by webkit-check-style inside of
braces with elements in them (e.g., initializer lists.)

In order to avoid false positives, ignore brace spacing if the braces
are surrounded by double-quotes on the same line, assuming that means
it's likely the braces are inside a string.

Patch by Philip Chimento <pchimento@igalia.com> on 2021-10-06
Reviewed by Jonathan Bedard.

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

(check_spacing):

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

(CppStyleTest):
(NoNonVirtualDestructorsTest):
(WebKitStyleTest.test_indentation):

8:56 AM Changeset in webkit [283624] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 ] 2 http/tests/app-privacy-report tests are timing out.
https://bugs.webkit.org/show_bug.cgi?id=231295

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:49 AM Changeset in webkit [283623] by sbarati@apple.com
  • 8 edits
    1 add in trunk

Run backwards propagation before we prune the graph after ForceOSRExit nodes in BytecodeParser
https://bugs.webkit.org/show_bug.cgi?id=230823
<rdar://problem/83565088>

Reviewed by Robin Morisset.

JSTests:

  • run-backwards-propagation-before-osr-exit-pruning.js: Added.

(assert):
(main.async v24):
(main):

Source/JavaScriptCore:

We've found yet another bug where pruning code after OSR exits
before running backwards propagation leads to us breaking the spec
in weird IR situations. In the particular test case here, we end
up not thinking we care about negative zero for an ArithNegate,
and we exit the program while recovering the value 0 instead of -0.

Fundamentally, backwards propagation wants to see all bytecode uses.
Therefore, it seems like a more sound strategy to run backwards propagation
before we end up mucking with the graph. This patch makes it so we run
backwards propagation inside bytecode parser before we prune the IR.
That way, the phase sees the graph as if it's an IR over the whole bytecode
graph.

  • bytecode/Operands.h:

(JSC::Operands::operator!= const):

  • dfg/DFGBackwardsPropagationPhase.cpp:

(JSC::DFG::BackwardsPropagationPhase::BackwardsPropagationPhase):
(JSC::DFG::BackwardsPropagationPhase::run):
(JSC::DFG::BackwardsPropagationPhase::mergeFlags):
(JSC::DFG::BackwardsPropagationPhase::propagate):
(JSC::DFG::performBackwardsPropagation):

  • dfg/DFGBackwardsPropagationPhase.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parse):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

  • dfg/DFGUnificationPhase.cpp:

(JSC::DFG::UnificationPhase::run):

8:43 AM Changeset in webkit [283622] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 ]2 fast/dom/HTMLAnchorElement tests are failing.
https://bugs.webkit.org/show_bug.cgi?id=231293

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:31 AM Changeset in webkit [283621] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 ] fast/events/ios/rotation/safari-like-rotation.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=231269

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:25 AM Changeset in webkit [283620] by Antti Koivisto
  • 9 edits in trunk/Source/WebCore

[LFC] Layout box should own its children
https://bugs.webkit.org/show_bug.cgi?id=231288

Reviewed by Alan Bujtas.

Avoid the need to have a separate ownership scheme.

Also make the box tree use CheckedPtrs.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::appendChild):

  • layout/integration/LayoutIntegrationBoxTree.h:
  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::setParent):
(WebCore::Layout::Box::setNextSibling):
(WebCore::Layout::Box::setPreviousSibling):

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::nextSibling const):
(WebCore::Layout::Box::previousSibling const):
(WebCore::Layout::Box::nextSibling):
(WebCore::Layout::Box::setParent): Deleted.
(WebCore::Layout::Box::setNextSibling): Deleted.
(WebCore::Layout::Box::setPreviousSibling): Deleted.

  • layout/layouttree/LayoutContainerBox.cpp:

(WebCore::Layout::ContainerBox::~ContainerBox):
(WebCore::Layout::ContainerBox::appendChild):
(WebCore::Layout::ContainerBox::destroyChildren):
(WebCore::Layout::ContainerBox::setFirstChild): Deleted.
(WebCore::Layout::ContainerBox::setLastChild): Deleted.

  • layout/layouttree/LayoutContainerBox.h:

(WebCore::Layout::ContainerBox::firstChild const):
(WebCore::Layout::ContainerBox::lastChild const):
(WebCore::Layout::ContainerBox::firstChild):
(): Deleted.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::LayoutTree::LayoutTree):
(WebCore::Layout::appendChild):
(WebCore::Layout::TreeBuilder::buildLayoutTree):
(WebCore::Layout::TreeBuilder::TreeBuilder):
(WebCore::Layout::TreeBuilder::createReplacedBox):
(WebCore::Layout::TreeBuilder::createTextBox):
(WebCore::Layout::TreeBuilder::createLineBreakBox):
(WebCore::Layout::TreeBuilder::createContainer):
(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::TreeBuilder::buildTableStructure):
(WebCore::Layout::TreeBuilder::buildSubTree):

  • layout/layouttree/LayoutTreeBuilder.h:

(WebCore::Layout::LayoutTree::root const):
(WebCore::Layout::LayoutTree::append): Deleted.

8:23 AM Changeset in webkit [283619] by Megan Gardner
  • 9 edits in trunk/Source

Allow text selection to flip.
https://bugs.webkit.org/show_bug.cgi?id=231234
rdar://83889188

Reviewed by Wenson Hsieh.

Source/WebKit:

In order to bring webkit more in line with UIKit, allow text selection to flip.
This also requires a UIKit change tracked in rdar://83788439
This is currently guarded behind an off-by-default flag so that we can
test this new behavior before turning it on by default.

  • Platform/spi/ios/UIKitSPI.h:
  • Shared/ios/GestureTypes.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(toUIWKSelectionFlags):
(toSelectionFlags):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::selectionFlippingEnabled const):
(WebKit::WebPage::setSelectionFlippingEnabled):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::rangeForPointInRootViewCoordinates):
(WebKit::WebPage::updateSelectionWithTouches):

Source/WTF:

Add an internal flag to guard text selection flipping while
we test to make sure this is reasonable to turn on everywhere.

  • Scripts/Preferences/WebPreferencesInternal.yaml:
8:21 AM Changeset in webkit [283618] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

IPC SimpleArgumentEncoder should static_assert(std::is_trivially_copyable<T>)
https://bugs.webkit.org/show_bug.cgi?id=230743
<rdar://problem/83757335>

Reviewed by Kimmo Kinnunen.

Add static_assert(std::is_trivially_copyable<T>) to IPC SimpleArgumentEncoder to avoid misuses.

  • Platform/IPC/ArgumentCoders.h:
7:56 AM Changeset in webkit [283617] by Wenson Hsieh
  • 6 edits in trunk/Source/WebKit

[WebKit2] Refactor some IPC argument encoder logic to work with StreamConnectionEncoder
https://bugs.webkit.org/show_bug.cgi?id=230714
rdar://83477591

Reviewed by Tim Horton.

Make it possible to use IPC::StreamConnectionEncoder to encode display list items (and their members) in an
IPC stream. This patch comprises two main sets of changes in ArgumentCoders, and WebCoreArgumentCoders. See
below for more details.

  • Platform/IPC/ArgumentCoders.cpp:

(IPC::ArgumentCoder<audit_token_t>::decode):
(IPC::ArgumentCoder<Monostate>::encode): Deleted.
(IPC::ArgumentCoder<Monostate>::decode): Deleted.

  • Platform/IPC/ArgumentCoders.h:

(IPC::ArgumentCoder<Monostate>::encode):
(IPC::ArgumentCoder<Monostate>::decode):

Many of these encode() methods are currently non-templated, which means that Encoder and Decoder used here
refer solely to IPC::Encoder and IPC::Decoder (respectively) instead of other types of encoders (namely,
StreamConnectionEncoder). Make these use templated encode methods intead, so that they work with generic
encoders.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<AffineTransform>::encode): Deleted.
(IPC::ArgumentCoder<AffineTransform>::decode): Deleted.
(IPC::ArgumentCoder<FloatPoint>::encode): Deleted.
(IPC::ArgumentCoder<FloatPoint>::decode): Deleted.
(IPC::ArgumentCoder<FloatPoint3D>::encode): Deleted.
(IPC::ArgumentCoder<FloatPoint3D>::decode): Deleted.
(IPC::ArgumentCoder<FloatRect>::encode): Deleted.
(IPC::ArgumentCoder<FloatRect>::decode): Deleted.
(IPC::ArgumentCoder<FloatBoxExtent>::encode): Deleted.
(IPC::ArgumentCoder<FloatBoxExtent>::decode): Deleted.
(IPC::ArgumentCoder<FloatSize>::encode): Deleted.
(IPC::ArgumentCoder<FloatSize>::decode): Deleted.
(IPC::ArgumentCoder<FloatRoundedRect>::encode): Deleted.
(IPC::ArgumentCoder<FloatRoundedRect>::decode): Deleted.
(IPC::ArgumentCoder<IntPoint>::encode): Deleted.
(IPC::ArgumentCoder<IntPoint>::decode): Deleted.
(IPC::ArgumentCoder<IntRect>::encode): Deleted.
(IPC::ArgumentCoder<IntRect>::decode): Deleted.
(IPC::ArgumentCoder<IntSize>::encode): Deleted.
(IPC::ArgumentCoder<IntSize>::decode): Deleted.
(IPC::ArgumentCoder<LayoutSize>::encode): Deleted.
(IPC::ArgumentCoder<LayoutSize>::decode): Deleted.
(IPC::ArgumentCoder<LayoutPoint>::encode): Deleted.
(IPC::ArgumentCoder<LayoutPoint>::decode): Deleted.

These WebCore argument coders are also currently incompatible with StreamConnectionEncoder, since they are non-
templated (and thus only work with IPC::Encoder). Since these are all encodable as POD types, we can just use
SimpleArgumentCoder for all of these. We also add new DEFINE_SIMPLE_ARGUMENT_CODER_FOR_(HEADER|SOURCE) macros
to make this code a bit easier to read, which adds SimpleArgumentCoder for the given type, for both standard
IPC::Encoder as well as IPC::StreamConnectionEncoder.

  • Shared/WebCoreArgumentCoders.h:
  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<CGRect>::encode): Deleted.
(IPC::ArgumentCoder<CGRect>::decode): Deleted.
(IPC::ArgumentCoder<CGSize>::encode): Deleted.
(IPC::ArgumentCoder<CGSize>::decode): Deleted.
(IPC::ArgumentCoder<CGPoint>::encode): Deleted.
(IPC::ArgumentCoder<CGPoint>::decode): Deleted.
(IPC::ArgumentCoder<CGAffineTransform>::encode): Deleted.
(IPC::ArgumentCoder<CGAffineTransform>::decode): Deleted.

7:41 AM Changeset in webkit [283616] by Chris Dumez
  • 2 edits in trunk

Unreviewed, mark Kimmo Kinnunen as reviewer in the right contributors.json file this time.

  • metadata/contributors.json:
7:25 AM Changeset in webkit [283615] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Make containerForElement logic more explicit
https://bugs.webkit.org/show_bug.cgi?id=231275

Reviewed by Simon Fraser.

  1. Non-RenderElement renderers (e.g. text content) should return their parents. They are always in-flow, static positioned.
  2. Have the explicit list of position types where the parent is the containing block.
  • rendering/RenderObject.cpp:

(WebCore::containerForElement):

6:40 AM Changeset in webkit [283614] by Alan Bujtas
  • 5 edits in trunk

[LFC][IFC] word-break: break-all only allows mid-word arbitrary breaking positions
https://bugs.webkit.org/show_bug.cgi?id=231247

Reviewed by Antti Koivisto.

Source/WebCore:

Introduce a new type of breaking type where the arbitrary position is only applied when breaking mid-word within a continuous content.
While normally when we search for a breaking position inside an overflowing continuous set of runs, we find ourselves inside a "word" and any breaking
position would match the definition of the mid-work break.

However in other cases when these runs consist more than just a "word", for example

'XX ' (where the "white-space: break-spaces" sets the line breaking opportunity after the trailing whitespace)
'word-break: break-all' does not affect the breaking behavior between the trailing X and the ' ' and therefore it is not a breaking position.

It may very well be a valid breaking position if some other CSS properties allow it, but the notion of being able to break at any position (break-all) does not apply here.

see https://drafts.csswg.org/css-text-3/#word-break-property

WPT progressions.

  • layout/formattingContexts/inline/InlineContentBreaker.cpp:

(WebCore::Layout::nextTextRunIndex):
(WebCore::Layout::previousTextRunIndex):
(WebCore::Layout::findTrailingRunIndex):
(WebCore::Layout::InlineContentBreaker::tryBreakingOverflowingRun const):
(WebCore::Layout::InlineContentBreaker::tryBreakingPreviousNonOverflowingRuns const):
(WebCore::Layout::InlineContentBreaker::tryBreakingNextOverflowingRuns const):
(WebCore::Layout::InlineContentBreaker::processOverflowingContentWithText const):
(WebCore::Layout::InlineContentBreaker::wordBreakBehavior const):
(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):

  • layout/formattingContexts/inline/InlineContentBreaker.h:

LayoutTests:

4:26 AM Changeset in webkit [283613] by youenn@apple.com
  • 19 edits
    1 add in trunk

Implement https://w3c.github.io/push-api/#receiving-a-push-message
https://bugs.webkit.org/show_bug.cgi?id=231070
<rdar://problem/83759574>

Reviewed by Chris Dumez.

Source/WebCore:

Implement firing a functional event and push message specialization.
Covered by API test.

  • workers/service/server/SWServer.cpp:
  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerToContextConnection.h:

Source/WebKit:

Add temporary SPI in WKWebsiteDataStore to allow pushing messages to service workers.
It takes a completion handler to check whether the message is acknowledged or not.
The service worker registration is identified by its scope for now.
A few additional things might need to be done:

  • The case where the service worker is launched with no client.
  • Handling of background assertions, especially if service worker has no client.
  • Optimizations: skip events, optimization of network process launch by only loading the service worker registrations of an origin.
  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/Network/NetworkProcessProxy.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:
  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/Storage/WebSWContextManagerConnection.messages.in:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/PushAPI.mm: Added.
3:33 AM Changeset in webkit [283612] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

Unreviewed. [GTK] Fix /webkit/WebKitAccessibility/accessible/state with ATSPI

Add missing #else I didn't add by mistake in r283361.

  • TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp:

(testAccessibleState):

3:14 AM Changeset in webkit [283611] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore

Simplify BaseAudioSharedUnit client management
https://bugs.webkit.org/show_bug.cgi?id=231230
<rdar://83884131>

Reviewed by Eric Carlson.

Before the patch, m_clientsLock was used to handle BaseAudioSharedUnit concurrent access from main thread and audio thread.
The potential issue is that if the audio unit is running and m_clients is locked in main thread due to a call of forEach,
the audio thread might have to wait for the lock to be removed.
This is not great as this might cause glitches and potential deadlocks if trying to stop the audio unit in main thread inside a forEach call.

Instead of doing that, we now exclusively access m_clients from main thread, it does not require a lock anymore.
The audio thread accesses a copy of m_clients, called m_audioThreadClients, which is only accessed in addClient/removeClient and from the audio thread.
This reduces the possibility for stopping the audio thread and removes any potential deadlock.

Covered by existing tests.

  • platform/mediastream/mac/BaseAudioSharedUnit.cpp:
  • platform/mediastream/mac/BaseAudioSharedUnit.h:
  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:
3:13 AM Changeset in webkit [283610] by youenn@apple.com
  • 8 edits in trunk/Source/ThirdParty/libwebrtc

ObjectiveC WebRTC frame buffers are autoreleased late, especially on Debug builds
https://bugs.webkit.org/show_bug.cgi?id=231162

Reviewed by David Kilzer.

Instead of waiting for the autorelease pool to release these objects, we explicitly release them by calling close.
This ensures that pixel buffers get released very quickly.

  • Source/webrtc/sdk/WebKit/WebKitEncoder.mm:
  • Source/webrtc/sdk/objc/api/video_frame_buffer/RTCNativeI420Buffer+Private.h:
  • Source/webrtc/sdk/objc/api/video_frame_buffer/RTCNativeI420Buffer.mm:
  • Source/webrtc/sdk/objc/base/RTCI420Buffer.h:
  • Source/webrtc/sdk/objc/base/RTCVideoFrameBuffer.h:
  • Source/webrtc/sdk/objc/components/video_frame_buffer/RTCCVPixelBuffer.h:
  • Source/webrtc/sdk/objc/components/video_frame_buffer/RTCCVPixelBuffer.mm:
  • Source/webrtc/sdk/objc/native/src/objc_frame_buffer.mm:
3:07 AM WebKitFlatpakSDK/DebugWithApitrace created by Philippe Normand
3:03 AM WebKitFlatpakSDK edited by Philippe Normand
(diff)
2:48 AM Changeset in webkit [283609] by aboya@igalia.com
  • 8 edits in trunk

[MSE][GStreamer] Honor MP4 edit lists
https://bugs.webkit.org/show_bug.cgi?id=231019

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

This patch takes into consideration the GstSegment attached to a
sample to offset the PTS and DTS. This ensures accurate timestamps are
obtained for MP4 files containing edit lists (commonly necessary for
files containing video with B frames to have PTS starting at zero).

Before this was implemented, a workaround was in place based on a
heuristic (DTS = 0 && PTS > 0 && PTS < 0.1). The workaround is
preserved for the sake of content without proper edit lists, but
any edit list takes preference.

The time fudge factor has been modified from 0.083 seconds up to
0.100 seconds to accomodate the size of the empty edit in test.mp4
used by Web Platform Tests.

This test fixes improves expectation results and fixes two subtests in
imported/w3c/web-platform-tests/media-source/mediasource-remove.html.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::currentTimeFudgeFactor):

  • platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::timeFudgeFactor const):

  • platform/graphics/gstreamer/MediaSampleGStreamer.cpp:

(WebCore::MediaSampleGStreamer::extendToTheBeginning): Deleted.

  • platform/graphics/gstreamer/MediaSampleGStreamer.h:
  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::bufferTimeToStreamTimeClamped):
(WebCore::AppendPipeline::appsinkNewSample):

LayoutTests:

Update expectations for mediasource-remove.html in the GStreamer
ports, as a couple subtests get fixed.

  • platform/glib/imported/w3c/web-platform-tests/media-source/mediasource-remove-expected.txt:
2:35 AM Changeset in webkit [283608] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC][32bit] Remove a bunch of compiler warnings
https://bugs.webkit.org/show_bug.cgi?id=231091

Patch by Xan López <Xan Lopez> on 2021-10-06
Reviewed by Carlos Alberto Lopez Perez.

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::compileExit): silence warning about unused
variable, it's not used in 32-bit.

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_enter): use an unsigned int for the loop count.

2:25 AM Changeset in webkit [283607] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/Tools/buildstream

[Flatpak SDK] Add apitrace
https://bugs.webkit.org/show_bug.cgi?id=230967

Patch by Philippe Normand <pnormand@igalia.com> on 2021-10-06
Reviewed by Carlos Alberto Lopez Perez.

APITrace can be used to debug GL calls.

  • elements/sdk-platform.bst:
  • elements/sdk/apitrace.bst: Added.
1:07 AM Changeset in webkit [283606] by Carlos Garcia Campos
  • 4 edits
    1 add in trunk

[WPE][GTK] TestJSC incorrectly expects garbage collector to collect variables still on the stack
https://bugs.webkit.org/show_bug.cgi?id=222972

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Add JSCContextInternal.h header to be used by unit tests to use private JSC API and add
jscContextGarbageCollect().

  • API/glib/JSCContext.cpp:

(jscContextGarbageCollect): Moved from unit tests here adding a parameter to optionally call
sanitizeStackForVM() before doing the garbage collection.

  • API/glib/JSCContextInternal.h: Added.

Tools:

Include JSCContextInternal.h instead of JSCContextPrivate.h and remove the jscContextGarbageCollect() implementation.

  • TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:

(testJSCWeakValue): Call sanitizeStackForVM() before the garbage collection.
(jscContextGarbageCollect): Deleted.

12:49 AM Changeset in webkit [283605] by jer.noble@apple.com
  • 57 edits
    2 copies in trunk

[Build-time perf] Forward declare JS TypedArrays
https://bugs.webkit.org/show_bug.cgi?id=231196

Reviewed by Tim Horton.

Source/JavaScriptCore:

Add a new file, Forward.h, containing forward declarations of commonly used JavaScriptCore types. Removed duplicate declarations
of TypedArray classes from TypedArrayAdapters.h and TypedArrays.h.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • runtime/Forward.h: Added.
  • runtime/TypedArrayAdaptors.h:
  • runtime/TypedArrayAdaptersForwardDeclarations.h: Added.
  • runtime/TypedArrays.h:

Source/WebCore:

According to clang -ftime-trace, compilation is spending a large amount of time inside TypedArrays.h.
Most of the places where JavaScriptCore/<Type>Array.h is included in a header only needed a forward
declaration, so include the new JavaScriptCore/Forward.h header instead, and move the include of the
<Type>Array.h header into the implementation file.

  • Modules/encryptedmedia/legacy/LegacyCDM.h:
  • Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
  • Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
  • Modules/encryptedmedia/legacy/WebKitMediaKeys.cpp:
  • Modules/encryptedmedia/legacy/WebKitMediaKeys.h:
  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/webaudio/AudioBuffer.h:
  • Modules/webaudio/AudioParam.h:
  • Modules/webaudio/AudioParamTimeline.h:
  • Modules/webaudio/IIRFilterNode.h:
  • Modules/webaudio/PeriodicWave.h:
  • Modules/webaudio/RealtimeAnalyser.h:
  • Modules/webaudio/WaveShaperDSPKernel.cpp:
  • Modules/webaudio/WaveShaperProcessor.h:
  • Modules/webxr/WebXRRigidTransform.h:
  • Modules/webxr/WebXRView.h:
  • css/DOMMatrix.cpp:
  • css/DOMMatrixReadOnly.h:
  • dom/TextEncoder.h:
  • dom/TextEncoderStreamEncoder.h:
  • html/ImageData.h:
  • html/WebKitMediaKeyError.h:
  • html/canvas/WebGLAny.h:
  • html/canvas/WebGLBuffer.cpp:

(WebCore::WebGLBuffer::elementArrayBuffer const):

  • html/canvas/WebGLBuffer.h:
  • platform/graphics/LegacyCDMSession.h:
  • platform/graphics/MediaPlayer.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:
  • platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:

(WebCore::CDMSessionAVFoundationCF::cachedKeyForKeyID const):

  • platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:

(WebCore::CDMSessionAVContentKeySession::cachedKeyForKeyID const):

  • platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:

(WebCore::CDMSessionAVFoundationObjC::cachedKeyForKeyID const):

  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:

(WebCore::CDMSessionAVStreamSession::cachedKeyForKeyID const):

  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
  • platform/graphics/cocoa/SourceBufferParser.h:
  • platform/graphics/filters/FELighting.h:
  • platform/graphics/filters/FilterEffect.h:
  • testing/Internals.h:
  • testing/LegacyMockCDM.cpp:

Source/WebKit:

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

Tools:

  • TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp:
12:34 AM Changeset in webkit [283604] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Close NetworkRTCProvider sockets explicitly when closing NetworkRTCProvider
https://bugs.webkit.org/show_bug.cgi?id=231228
<rdar://83237496>

Reviewed by Eric Carlson.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::close):
Make sure to explictly closing the socket before deleting it.

12:15 AM Changeset in webkit [283603] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

Fix wrong edge type from get-by-val in 32 bits
https://bugs.webkit.org/show_bug.cgi?id=231179

Patch by Mikhail R. Gadelha <Mikhail R. Gadelha> on 2021-10-06
Reviewed by Yusuke Suzuki.

After https://bugs.webkit.org/show_bug.cgi?id=230801, a different type
can be set in DFG nodes, however, in 32 bits jsc was always setting the
type to Cell. This caused jsc to abort when verify the type of the edge:

DFG ASSERTION FAILED: Edge verification error: D@64->Check:Object:D@60 was expected to have type Object but has type Cell (43984760078335)

This patch changes the 32 bits version of the compileEnumeratorGetByVal
to manually speculate the edge if it is a Cell, since a differente Kind
could've been during Fixup.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compileEnumeratorGetByVal):

Oct 5, 2021:

11:14 PM Changeset in webkit [283602] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/WebCore

[PlayStation] Fix build break after r283441
https://bugs.webkit.org/show_bug.cgi?id=231277

Unreviewed.

No new tests because there is no behavior change.

  • platform/graphics/Path.h:

(WebCore::Path::strokeBoundingRect):

10:40 PM Changeset in webkit [283601] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

AX: Move handling of AXContents from platform wrapper to AX core
https://bugs.webkit.org/show_bug.cgi?id=231231

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-10-05
Reviewed by Chris Fleizach.

No changed functionality.

Moved handling of the AXContents (NSAccessibilityContentsAttribute) from the
Mac wrapper accessibilityAttributeValue handler to AXCoreObject::contents.
This makes it possible to share this code across multiple platforms.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::contents):

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):

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

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

10:20 PM Changeset in webkit [283600] by sbarati@apple.com
  • 3 edits
    1 add in trunk

Don't pass DontBuildStrings to next token after parsing an empty parameter list
https://bugs.webkit.org/show_bug.cgi?id=225094
<rdar://problem/77231778>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/dont-pass-DontBuildStrings-when-building-empty-arguments-list.js: Added.

(main.a.prototype.g.toString.string_appeared_here):
(main.a):
(main):

Source/JavaScriptCore:

We might need the string, it turns out!

  • parser/Parser.cpp:

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

8:47 PM Changeset in webkit [283599] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[ iOS15 ] TestWebKitAPI.ResourceLoadStatistics.DataTaskIdentifierCollision is a constant crash
https://bugs.webkit.org/show_bug.cgi?id=231246

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

For a reason that is mysterious to me, this test was timing out on iOS
in the call to synchronouslyLoadHTMLString unless I added "addToWindow:NO"
to the TestWKWebView initialization.

For a reason that is also mysterious to me, the test was crashing when closing
because of something in the autoreleasepool, but using Vector<String> instead of
RetainPtr<NSArray<NSString *>> in DataTaskIdentifierCollisionDelegate makes that
stop crashing.

I've looked quite closely and don't see why this fixes it, but I verified that it does.

While I was at it, I migrated from TCPServer to HTTPServer to be more robust against timeouts,
because the TCPServer destructor waits forever for threads to join, and if not everything is
perfect it will make the tests time out, which isn't great. HTTPServer does everything on the
main thread with callbacks instead.

  • TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:

(-[DataTaskIdentifierCollisionDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(-[DataTaskIdentifierCollisionDelegate waitForMessages:]):
(waitUntilTwoServersConnected):
(TEST):

7:06 PM Changeset in webkit [283598] by Russell Epstein
  • 1 copy in tags/Safari-612.2.9.2.3

Tag Safari-612.2.9.2.3.

7:03 PM Changeset in webkit [283597] by Russell Epstein
  • 1 copy in tags/Safari-612.2.9.3.3

Tag Safari-612.2.9.3.3.

6:42 PM Changeset in webkit [283596] by Russell Epstein
  • 1 copy in tags/Safari-612.2.9.0.4

Tag Safari-612.2.9.0.4.

6:16 PM Changeset in webkit [283595] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebKit

Do daily activity in AdAttributionDaemon based off of when the xpc activity happens
https://bugs.webkit.org/show_bug.cgi?id=231254

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

Before this change, we did the activity 5 seconds after startup of the daemon, which can be started
by sending an attribution to it or by the daily xpc activity. We want to do it only because of the xpc activity.

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClient.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDaemonClient.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::PrivateClickMeasurementManager):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.cpp:

(WebKit::PCM::doDailyActivityInManager):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.h:
  • Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonEntryPoint.mm:

(WebKit::registerScheduledActivityHandler):

5:56 PM Changeset in webkit [283594] by Russell Epstein
  • 1 copy in tags/Safari-612.2.9.1.4

Tag Safari-612.2.9.1.4.

5:46 PM Changeset in webkit [283593] by wilander@apple.com
  • 3 edits
    3 adds in trunk

PCM: Allow measurement of links in nested, cross-site iframes
https://bugs.webkit.org/show_bug.cgi?id=229204
<rdar://problem/82310386>

Reviewed by Alex Christensen.

Developers have said it would be great to allow measurement of links served in
nested, cross-site iframes on the click source. The click still count as if it
happened on the first party click source site, and any attribution report still
goes to that first party. This change enables the *serving* of measurable links
in nested, cross-site iframes.

The standards issue where this was discussed:
https://github.com/privacycg/private-click-measurement/issues/7

Source/WebCore:

Test: http/tests/privateClickMeasurement/store-private-click-measurement-nested.html

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parsePrivateClickMeasurement const):

Removed the block for nested, cross-site iframes.

LayoutTests:

  • http/tests/privateClickMeasurement/resources/nestedTargetLink.html: Added.
  • http/tests/privateClickMeasurement/store-private-click-measurement-nested-expected.txt: Added.
  • http/tests/privateClickMeasurement/store-private-click-measurement-nested.html: Added.
5:42 PM Changeset in webkit [283592] by Aditya Keerthi
  • 8 edits
    1 add in trunk/Source

[iOS] Transcode videos selected from UIImagePickerController
https://bugs.webkit.org/show_bug.cgi?id=230639
rdar://79665678

Reviewed by Tim Horton.

Source/WebCore:

  • en.lproj/Localizable.strings:

Add a localizable string for the message displayed while transcoding
video.

Source/WebCore/PAL:

Add AVFoundation API needed to transcode video.

  • pal/cocoa/AVFoundationSoftLink.h:
  • pal/cocoa/AVFoundationSoftLink.mm:

Source/WebKit:

File inputs on iOS allow users to choose images/videos from the system
photo picker, using UIImagePickerController. In single selection mode,
UIImagePickerController transcodes the selected video to H.264. However,
in multiple selection mode, video is not transcoded and is left in its
original format.

Today, videos on most iOS devices are encoded with HEVC by default.
However, some sites, such as Twitter, only accept H.264 encoded video.
Thus, the current video upload behavior is problematic, as users may be
unable to upload video.

Unfortunately, the photo picking functionality of UIImagePickerController
is deprecated. The best solution would be to adopt PHPickerViewController,
the replacement API, which performs transcoding when retrieving selected
items (regardless of single/multiple selection). However,
PHPickerViewController currently lacks other functionality that WebKit
requires, preventing adoption.

Consequently, the short term solution is to transcode the videos in
WebKit, ensuring H.264 encoded video is always provided to sites. See
below for implementation details.

  • Platform/spi/ios/PhotosUISPI.h: Added.
  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[_WKFileUploadItem setFileURL:]):

Add a setter to update the file URL. Called after transcoding a _WKFileUploadItem.

(-[WKFileUploadMediaTranscoder initWithItems:videoCount:completionHandler:]):

Introduce WKFileUploadMediaTranscoder to manage transcoding of videos
and the display of progress UI. Transcoding is performed serially
(one video at a time), but occurs off the main thread.

(-[WKFileUploadMediaTranscoder start]):

Begin transcoding. Run a timer to update the progress UI, as
AVAssetExportSession does not provide progress updates on its own.

The progress UI is implemented using PUActivityProgressController, to
match system Photos UI.

(-[WKFileUploadMediaTranscoder _processItemAtIndex:]):

Transcode a single video, using AVAssetExportSession. If transcoding
fails for any reason, the original video is used as a fallback.
Transcoding can also be cancelled using the progress UI, in which case
no more videos are processed.

(-[WKFileUploadMediaTranscoder _finishedProcessing]):
(-[WKFileUploadMediaTranscoder _dismissProgress]):
(-[WKFileUploadMediaTranscoder _updateProgress:]):
(-[WKFileUploadMediaTranscoder _temporaryDirectoryCreateIfNecessary]):
(-[WKFileUploadPanel _chooseMediaItems:]):

Refactor the common aspects of single/multiple media selection into a
single method.

(-[WKFileUploadPanel imagePickerController:didFinishPickingMediaWithInfo:]):
(-[WKFileUploadPanel imagePickerController:didFinishPickingMultipleMediaWithInfo:]):
(-[WKFileUploadPanel _processMediaInfoDictionaries:successBlock:failureBlock:]):
(-[WKFileUploadPanel _processMediaInfoDictionaries:atIndex:processedResults:successBlock:failureBlock:]):
(-[WKFileUploadPanel _uploadItemFromMediaInfo:successBlock:failureBlock:]):

Remove redundant platform conditional.

(-[WKFileUploadPanel _uploadMediaItemsTranscodingVideo:]):

If any videos were selected, transcode them prior to uploading.

  • WebKit.xcodeproj/project.pbxproj:
5:20 PM Changeset in webkit [283591] by Fujii Hironori
  • 42 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening after r283550

  • platform/wincairo/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt:
  • platform/wincairo/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt:
  • platform/wincairo/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt:
  • platform/wincairo/editing/deleting/delete-at-paragraph-boundaries-005-expected.txt:
  • platform/wincairo/editing/deleting/delete-at-paragraph-boundaries-006-expected.txt:
  • platform/wincairo/editing/deleting/delete-at-paragraph-boundaries-007-expected.txt:
  • platform/wincairo/editing/deleting/delete-at-paragraph-boundaries-008-expected.txt:
  • platform/wincairo/editing/deleting/delete-at-paragraph-boundaries-009-expected.txt:
  • platform/wincairo/editing/deleting/delete-at-paragraph-boundaries-010-expected.txt:
  • platform/wincairo/editing/deleting/delete-at-paragraph-boundaries-011-expected.txt:
  • platform/wincairo/editing/deleting/non-smart-delete-expected.txt:
  • platform/wincairo/editing/input/emacs-ctrl-o-expected.txt:
  • platform/wincairo/editing/inserting/insert-br-quoted-001-expected.txt:
  • platform/wincairo/editing/inserting/insert-br-quoted-002-expected.txt:
  • platform/wincairo/editing/inserting/insert-br-quoted-003-expected.txt:
  • platform/wincairo/editing/inserting/insert-br-quoted-004-expected.txt:
  • platform/wincairo/editing/inserting/insert-br-quoted-005-expected.txt:
  • platform/wincairo/editing/inserting/insert-br-quoted-006-expected.txt:
  • platform/wincairo/editing/inserting/insert-div-026-expected.txt:
  • platform/wincairo/editing/inserting/return-key-with-selection-001-expected.txt:
  • platform/wincairo/editing/inserting/return-key-with-selection-002-expected.txt:
  • platform/wincairo/editing/inserting/return-key-with-selection-003-expected.txt:
  • platform/wincairo/editing/style/block-styles-007-expected.txt:
  • platform/wincairo/editing/style/smoosh-styles-001-expected.txt:
  • platform/wincairo/editing/style/smoosh-styles-003-expected.txt:
  • platform/wincairo/editing/style/style-3998892-fix-expected.txt:
  • platform/wincairo/editing/style/style-boundary-001-expected.txt:
  • platform/wincairo/editing/style/style-boundary-002-expected.txt:
  • platform/wincairo/editing/style/style-boundary-003-expected.txt:
  • platform/wincairo/editing/style/style-boundary-004-expected.txt:
  • platform/wincairo/editing/style/style-boundary-005-expected.txt:
  • platform/wincairo/editing/unsupported-content/list-delete-001-expected.txt:
  • platform/wincairo/editing/unsupported-content/list-delete-003-expected.txt:
  • platform/wincairo/editing/unsupported-content/list-type-after-expected.txt:
  • platform/wincairo/editing/unsupported-content/list-type-before-expected.txt:
  • platform/wincairo/editing/unsupported-content/table-delete-002-expected.txt:
  • platform/wincairo/editing/unsupported-content/table-type-after-expected.txt:
  • platform/wincairo/editing/unsupported-content/table-type-before-expected.txt:
  • platform/wincairo/fast/css/first-line-text-decoration-expected.txt:
  • platform/wincairo/fast/css/first-line-text-decoration-inherited-from-parent-expected.txt:
  • platform/wincairo/fast/text/firstline/001-expected.txt:
5:16 PM Changeset in webkit [283590] by Chris Dumez
  • 4 edits
    6 adds in trunk

ASSERT(m_callback->hasCallback()) under IntersectionObserver::notify()
https://bugs.webkit.org/show_bug.cgi?id=231235
<rdar://80837616>

Reviewed by Ryosuke Niwa.

Source/WebCore:

IntersectionObserver's JS callback stays alive as long as its JS wrapper and
its JS wrapper's lifetime relies on the IntersectionObserver::isReachableFromOpaqueRoots()
implementation. isReachableFromOpaqueRoots() keeps the wrapper alive as long
as the JS wrappers of observation / pending targets are alive. However, as per specification,
we always need to dispatch an observation for an observation target, even if that target
is not connected. Our code was already taking care of dispatching such observation. However,
there was nothing keeping the observation target alive in this case and thus nothing keeping
the JS callback alive either.

To address the issue, I am introducing a new m_targetsWaitingForFirstObservation data member
which holds a strong ref to the observation target until the next time we call notify().
This makes sure that the observation target (and its JS wrapper) stays alive long enough for
us to dispatch the first observation for it. I also updated isReachableFromOpaqueRoots() to
return true as long as m_targetsWaitingForFirstObservation is non-empty so that the
IntersectionObserver's JS wrapper (and thus the JS callback) stay alive long enough too.

Tests: intersection-observer/observe-disconnected-target-crash.html

intersection-observer/observe-disconnected-target.html

  • page/IntersectionObserver.cpp:

(WebCore::IntersectionObserver::observe):
(WebCore::IntersectionObserver::unobserve):
(WebCore::IntersectionObserver::removeAllTargets):
(WebCore::IntersectionObserver::notify):
(WebCore::IntersectionObserver::isReachableFromOpaqueRoots const):

  • page/IntersectionObserver.h:

LayoutTests:

Add layout test coverage both for the crash and the Web facing behavior.

  • intersection-observer/observe-disconnected-target-crash-expected.txt: Added.
  • intersection-observer/observe-disconnected-target-crash.html: Added.
  • intersection-observer/observe-disconnected-target-expected.txt: Added.
  • intersection-observer/observe-disconnected-target.html: Added.
4:52 PM Changeset in webkit [283589] by Russell Epstein
  • 1 copy in tags/Safari-611.4.2.0.2

Tag Safari-611.4.2.0.2.

4:51 PM Changeset in webkit [283588] by Russell Epstein
  • 8 edits in branches/safari-611.4.2.0-branch/Source

Versioning.

WebKit-7611.4.2.0.2

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

[ iOS Release ] fast/events/ios/rotation/layout-viewport-during-safari-type-rotation.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=231266

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:47 PM Changeset in webkit [283586] by commit-queue@webkit.org
  • 5 edits in trunk

Add an entitlement check to only allow AdAttributionDaemon to be connected to by the network process
https://bugs.webkit.org/show_bug.cgi?id=231248

Patch by Alex Christensen <achristensen@webkit.org> on 2021-10-05
Reviewed by Alexey Proskuryakov.

Source/WebKit:

Adding a restricted entitlement on macOS when using a non-internal SDK causes the network process to not start,
so in open source builds (in which the daemon is only used for unit tests) just skip the entitlement check.

  • Scripts/process-entitlements.sh:
  • Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonEntryPoint.mm:

(WebKit::startListeningForMachServiceConnections):

Tools:

Also add a system call to "launchctl unload" to clear any residual state in launchd before starting the unit test.
Otherwise we could get into a state where the plist is registered with launchd from an old test that registered it
but didn't start the daemon, causing the test to time out until you reboot the machine. This makes it recover nicely.

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:

(TestWebKitAPI::attemptConnectionInProcessWithoutEntitlement):
(TestWebKitAPI::setInjectedBundleClient): Deleted.
(TestWebKitAPI::webViewWithOpenInspector): Deleted.

4:43 PM Changeset in webkit [283585] by Jean-Yves Avenard
  • 4 edits
    2 adds in trunk

createImageBitmap using a HLS video as source always return a black image.
https://bugs.webkit.org/show_bug.cgi?id=231225
rdar://83884031

Source/WebCore:

When playing HLS content, [AVURLAsset tracks] return an empty array.
We need to instead retrieve it from the AVPlayerItem object. The method
paintWithVideoOutput would have bailed out early as a consequence.
So we refactor the code a little to retrieve the tracks where they can be found

Reviewed by Eric Carlson.

Test: http/tests/media/video-hls-copy-into-canvas.html

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem):
(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateRotationSession):
(WebCore::MediaPlayerPrivateAVFoundationObjC::audioSourceProvider):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):
(WebCore::MediaPlayerPrivateAVFoundationObjC::firstEnabledTrack const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::firstEnabledAudibleTrack const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::firstEnabledVisibleTrack const):

LayoutTests:

Reviewed by Eric Carlson.

  • http/tests/media/video-hls-copy-into-canvas-expected.txt: Added.
  • http/tests/media/video-hls-copy-into-canvas.html: Added.
4:29 PM Changeset in webkit [283584] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 ] fast/events/ios/rotation/layout-viewport-during-rotation.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=231264

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:28 PM Changeset in webkit [283583] by Jean-Yves Avenard
  • 3 edits in trunk/Source/WebCore

REGRESSION (Monterey): paramountplus.com: Cannot enter fullscreen in Safari
https://bugs.webkit.org/show_bug.cgi?id=231005

The page performs a lot of canvas readbacks when entering or exiting
fullscreen mode.
When the media is encrypted, attempting to do so would have made the
sync call from the content to GPU process hang for one full second.
Worse the CATransaction should it fail to paint would retry continuously.
After 10 attempts (and blocking the process for over 10s) the
content process would get automatically killed.
This works around rdar://83867877 where outputMediaDataWillChange isn't
called following a call to
[AVPlayerItemVideoOutput requestNotificationOfMediaDataChangeWithAdvanceInterval].
In case we timed out. we will disable this functionality until there's a
track change.

Reviewed by Eric Carlson.

We do not have the infrastructure to easily test interacting with encrypted
content. Once bug 231006 is fixed, we could write a test to ensure that canvas
readbacks do not lock-up.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoTracks):
(WebCore::MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange):

3:47 PM Changeset in webkit [283582] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/events/ios/rotation/resize-iframe-after-orientation-change.html is crashing/ failing.
https://bugs.webkit.org/show_bug.cgi?id=231262

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
3:39 PM Changeset in webkit [283581] by Russell Epstein
  • 16 edits
    2 adds in branches/safari-612.2.9.3-branch

Cherry-pick r283556. rdar://problem/83899967

[JSC] JSPropertyNameEnumerator should not have cached prototype chain since empty JSPropertyNameEnumerator is shared
https://bugs.webkit.org/show_bug.cgi?id=231202
JSTests:

Reviewed by Keith Miller.

  • stress/for-in-validation-poly-proto.js: Added. (shouldBe): (test): (factory.Test): (factory):
  • stress/for-in-validation-watchpoint.js: Added. (shouldBe): (test): (Test): (factory):

Source/JavaScriptCore:

rdar://83815122

Reviewed by Keith Miller.

r282014 assumed an invariant that JSPropertyNameEnumerator's StructureChain is immutable.
This invariant is also used in validation of JSPropertyNameEnumerator. However, this
invariant was broken since we now have shared empty sentinel JSPropertyNameEnumerator, which can
be used for different structures having different prototype chain.

Since now we have shared JSPropertyNameEnumerator, JSPropertyNameEnumerator should not have
StructureChain in its member. When invalidating StructureChain in Structure, we also clear
cached JSPropertyNameEnumerator so that we do not get a stale JSPropertyNameEnumerator from
Structure even though watchpoint-based validation is not used.

This patch also removes ValidatedViaWatchpoint flag in JSPropertyNameEnumerator due to the same
reason. We should not modify JSPropertyNameEnumerator once it is instantiated. Instead, we encode
this flag as a lowest bit of m_cachedPropertyNameEnumerator. If it is validated via traversing (not watchpoints),
then this bit is set. So when loading that pointer from StructureRareData, we can quickly detect
it without even accessing to the enumerator. This fixes the issue, and it is even cleaner.
We rename m_cachedPropertyNameEnumerator to m_cachedPropertyNameEnumeratorAndFlag since it now
includes this flag.

While reviewing the code, we also found that watchpoint-based validation didn't care about PolyProto.
We should disable watchpoint-based validation if PolyProto is used.

  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileGetPropertyEnumerator):
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::emit_op_get_property_enumerator):
  • llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL):
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSPropertyNameEnumerator.cpp: (JSC::JSPropertyNameEnumerator::visitChildrenImpl):
  • runtime/JSPropertyNameEnumerator.h: (JSC::propertyNameEnumerator):
  • runtime/Structure.cpp: (JSC::Structure::visitChildrenImpl): (JSC::Structure::setCachedPropertyNameEnumerator): (JSC::Structure::cachedPropertyNameEnumeratorAndFlag const):
  • runtime/Structure.h: (JSC::Structure::propertyNameEnumeratorShouldWatch const):
  • runtime/StructureInlines.h: (JSC::Structure::prototypeChain const): (JSC::Structure::clearCachedPrototypeChain):
  • runtime/StructureRareData.cpp: (JSC::StructureRareData::visitChildrenImpl):
  • runtime/StructureRareData.h:
  • runtime/StructureRareDataInlines.h: (JSC::StructureRareData::cachedPropertyNameEnumerator const): (JSC::StructureRareData::cachedPropertyNameEnumeratorAndFlag const): (JSC::StructureRareData::setCachedPropertyNameEnumerator): (JSC::StructureChainInvalidationWatchpoint::fireInternal): (JSC::StructureRareData::tryCachePropertyNameEnumeratorViaWatchpoint): (JSC::StructureRareData::clearCachedPropertyNameEnumerator): (JSC::StructureRareData::invalidateWatchpointBasedValidation): Deleted.

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

3:38 PM Changeset in webkit [283580] by Russell Epstein
  • 8 edits in branches/safari-612.2.9.3-branch/Source

Versioning.

WebKit-7612.2.9.3.3

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

[ iOS ] accessibility/misspelling-range.html is constantly failing
https://bugs.webkit.org/show_bug.cgi?id=231261

Unreviewed test gardening.

3:32 PM Changeset in webkit [283578] by Russell Epstein
  • 16 edits
    2 adds in branches/safari-612.2.9.2-branch

Cherry-pick r283556. rdar://problem/83899913

[JSC] JSPropertyNameEnumerator should not have cached prototype chain since empty JSPropertyNameEnumerator is shared
https://bugs.webkit.org/show_bug.cgi?id=231202
JSTests:

Reviewed by Keith Miller.

  • stress/for-in-validation-poly-proto.js: Added. (shouldBe): (test): (factory.Test): (factory):
  • stress/for-in-validation-watchpoint.js: Added. (shouldBe): (test): (Test): (factory):

Source/JavaScriptCore:

rdar://83815122

Reviewed by Keith Miller.

r282014 assumed an invariant that JSPropertyNameEnumerator's StructureChain is immutable.
This invariant is also used in validation of JSPropertyNameEnumerator. However, this
invariant was broken since we now have shared empty sentinel JSPropertyNameEnumerator, which can
be used for different structures having different prototype chain.

Since now we have shared JSPropertyNameEnumerator, JSPropertyNameEnumerator should not have
StructureChain in its member. When invalidating StructureChain in Structure, we also clear
cached JSPropertyNameEnumerator so that we do not get a stale JSPropertyNameEnumerator from
Structure even though watchpoint-based validation is not used.

This patch also removes ValidatedViaWatchpoint flag in JSPropertyNameEnumerator due to the same
reason. We should not modify JSPropertyNameEnumerator once it is instantiated. Instead, we encode
this flag as a lowest bit of m_cachedPropertyNameEnumerator. If it is validated via traversing (not watchpoints),
then this bit is set. So when loading that pointer from StructureRareData, we can quickly detect
it without even accessing to the enumerator. This fixes the issue, and it is even cleaner.
We rename m_cachedPropertyNameEnumerator to m_cachedPropertyNameEnumeratorAndFlag since it now
includes this flag.

While reviewing the code, we also found that watchpoint-based validation didn't care about PolyProto.
We should disable watchpoint-based validation if PolyProto is used.

  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileGetPropertyEnumerator):
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::emit_op_get_property_enumerator):
  • llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL):
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSPropertyNameEnumerator.cpp: (JSC::JSPropertyNameEnumerator::visitChildrenImpl):
  • runtime/JSPropertyNameEnumerator.h: (JSC::propertyNameEnumerator):
  • runtime/Structure.cpp: (JSC::Structure::visitChildrenImpl): (JSC::Structure::setCachedPropertyNameEnumerator): (JSC::Structure::cachedPropertyNameEnumeratorAndFlag const):
  • runtime/Structure.h: (JSC::Structure::propertyNameEnumeratorShouldWatch const):
  • runtime/StructureInlines.h: (JSC::Structure::prototypeChain const): (JSC::Structure::clearCachedPrototypeChain):
  • runtime/StructureRareData.cpp: (JSC::StructureRareData::visitChildrenImpl):
  • runtime/StructureRareData.h:
  • runtime/StructureRareDataInlines.h: (JSC::StructureRareData::cachedPropertyNameEnumerator const): (JSC::StructureRareData::cachedPropertyNameEnumeratorAndFlag const): (JSC::StructureRareData::setCachedPropertyNameEnumerator): (JSC::StructureChainInvalidationWatchpoint::fireInternal): (JSC::StructureRareData::tryCachePropertyNameEnumeratorViaWatchpoint): (JSC::StructureRareData::clearCachedPropertyNameEnumerator): (JSC::StructureRareData::invalidateWatchpointBasedValidation): Deleted.

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

3:29 PM Changeset in webkit [283577] by Ayumi Kojima
  • 11 edits in trunk/Source/WebCore

Unreviewed, reverting r283339.

Reverting because this commit may have caused fast/attachment
tests to crash

Reverted changeset:

"[iOS][GPU Process] support <attachment>"
https://bugs.webkit.org/show_bug.cgi?id=230781
https://commits.webkit.org/r283339

3:26 PM Changeset in webkit [283576] by Russell Epstein
  • 8 edits in branches/safari-612.2.9.2-branch/Source

Versioning.

WebKit-7612.2.9.2.3

3:20 PM Changeset in webkit [283575] by Russell Epstein
  • 16 edits
    2 adds in branches/safari-612.2.9.0-branch

Cherry-pick r283556. rdar://problem/83900126

[JSC] JSPropertyNameEnumerator should not have cached prototype chain since empty JSPropertyNameEnumerator is shared
https://bugs.webkit.org/show_bug.cgi?id=231202
JSTests:

Reviewed by Keith Miller.

  • stress/for-in-validation-poly-proto.js: Added. (shouldBe): (test): (factory.Test): (factory):
  • stress/for-in-validation-watchpoint.js: Added. (shouldBe): (test): (Test): (factory):

Source/JavaScriptCore:

rdar://83815122

Reviewed by Keith Miller.

r282014 assumed an invariant that JSPropertyNameEnumerator's StructureChain is immutable.
This invariant is also used in validation of JSPropertyNameEnumerator. However, this
invariant was broken since we now have shared empty sentinel JSPropertyNameEnumerator, which can
be used for different structures having different prototype chain.

Since now we have shared JSPropertyNameEnumerator, JSPropertyNameEnumerator should not have
StructureChain in its member. When invalidating StructureChain in Structure, we also clear
cached JSPropertyNameEnumerator so that we do not get a stale JSPropertyNameEnumerator from
Structure even though watchpoint-based validation is not used.

This patch also removes ValidatedViaWatchpoint flag in JSPropertyNameEnumerator due to the same
reason. We should not modify JSPropertyNameEnumerator once it is instantiated. Instead, we encode
this flag as a lowest bit of m_cachedPropertyNameEnumerator. If it is validated via traversing (not watchpoints),
then this bit is set. So when loading that pointer from StructureRareData, we can quickly detect
it without even accessing to the enumerator. This fixes the issue, and it is even cleaner.
We rename m_cachedPropertyNameEnumerator to m_cachedPropertyNameEnumeratorAndFlag since it now
includes this flag.

While reviewing the code, we also found that watchpoint-based validation didn't care about PolyProto.
We should disable watchpoint-based validation if PolyProto is used.

  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileGetPropertyEnumerator):
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::emit_op_get_property_enumerator):
  • llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL):
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSPropertyNameEnumerator.cpp: (JSC::JSPropertyNameEnumerator::visitChildrenImpl):
  • runtime/JSPropertyNameEnumerator.h: (JSC::propertyNameEnumerator):
  • runtime/Structure.cpp: (JSC::Structure::visitChildrenImpl): (JSC::Structure::setCachedPropertyNameEnumerator): (JSC::Structure::cachedPropertyNameEnumeratorAndFlag const):
  • runtime/Structure.h: (JSC::Structure::propertyNameEnumeratorShouldWatch const):
  • runtime/StructureInlines.h: (JSC::Structure::prototypeChain const): (JSC::Structure::clearCachedPrototypeChain):
  • runtime/StructureRareData.cpp: (JSC::StructureRareData::visitChildrenImpl):
  • runtime/StructureRareData.h:
  • runtime/StructureRareDataInlines.h: (JSC::StructureRareData::cachedPropertyNameEnumerator const): (JSC::StructureRareData::cachedPropertyNameEnumeratorAndFlag const): (JSC::StructureRareData::setCachedPropertyNameEnumerator): (JSC::StructureChainInvalidationWatchpoint::fireInternal): (JSC::StructureRareData::tryCachePropertyNameEnumeratorViaWatchpoint): (JSC::StructureRareData::clearCachedPropertyNameEnumerator): (JSC::StructureRareData::invalidateWatchpointBasedValidation): Deleted.

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

3:16 PM Changeset in webkit [283574] by achristensen@apple.com
  • 2 edits in trunk/Tools

TestWebKitAPI.PrivateClickMeasurement.DaemonBasicFunctionality is timing out
https://bugs.webkit.org/show_bug.cgi?id=231257

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:

Originally reviewed as part of https://bugs.webkit.org/show_bug.cgi?id=231248
this should fix the error that happens when a previous test run has registered
the test AdAttributionDaemon but then failed before it was started, which leaves
launchd in a state of having already loaded a plist for the mach service named
"org.webkit.pcmtestdaemon.service" so it refuses to load another. The solution is
just to try unloading any previously loaded plist before loading another to clear
state in launchd.

3:15 PM Changeset in webkit [283573] by Russell Epstein
  • 16 edits
    2 adds in branches/safari-612.2.9.1-branch

Cherry-pick r283556. rdar://problem/83900153

[JSC] JSPropertyNameEnumerator should not have cached prototype chain since empty JSPropertyNameEnumerator is shared
https://bugs.webkit.org/show_bug.cgi?id=231202
JSTests:

Reviewed by Keith Miller.

  • stress/for-in-validation-poly-proto.js: Added. (shouldBe): (test): (factory.Test): (factory):
  • stress/for-in-validation-watchpoint.js: Added. (shouldBe): (test): (Test): (factory):

Source/JavaScriptCore:

rdar://83815122

Reviewed by Keith Miller.

r282014 assumed an invariant that JSPropertyNameEnumerator's StructureChain is immutable.
This invariant is also used in validation of JSPropertyNameEnumerator. However, this
invariant was broken since we now have shared empty sentinel JSPropertyNameEnumerator, which can
be used for different structures having different prototype chain.

Since now we have shared JSPropertyNameEnumerator, JSPropertyNameEnumerator should not have
StructureChain in its member. When invalidating StructureChain in Structure, we also clear
cached JSPropertyNameEnumerator so that we do not get a stale JSPropertyNameEnumerator from
Structure even though watchpoint-based validation is not used.

This patch also removes ValidatedViaWatchpoint flag in JSPropertyNameEnumerator due to the same
reason. We should not modify JSPropertyNameEnumerator once it is instantiated. Instead, we encode
this flag as a lowest bit of m_cachedPropertyNameEnumerator. If it is validated via traversing (not watchpoints),
then this bit is set. So when loading that pointer from StructureRareData, we can quickly detect
it without even accessing to the enumerator. This fixes the issue, and it is even cleaner.
We rename m_cachedPropertyNameEnumerator to m_cachedPropertyNameEnumeratorAndFlag since it now
includes this flag.

While reviewing the code, we also found that watchpoint-based validation didn't care about PolyProto.
We should disable watchpoint-based validation if PolyProto is used.

  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileGetPropertyEnumerator):
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::emit_op_get_property_enumerator):
  • llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL):
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSPropertyNameEnumerator.cpp: (JSC::JSPropertyNameEnumerator::visitChildrenImpl):
  • runtime/JSPropertyNameEnumerator.h: (JSC::propertyNameEnumerator):
  • runtime/Structure.cpp: (JSC::Structure::visitChildrenImpl): (JSC::Structure::setCachedPropertyNameEnumerator): (JSC::Structure::cachedPropertyNameEnumeratorAndFlag const):
  • runtime/Structure.h: (JSC::Structure::propertyNameEnumeratorShouldWatch const):
  • runtime/StructureInlines.h: (JSC::Structure::prototypeChain const): (JSC::Structure::clearCachedPrototypeChain):
  • runtime/StructureRareData.cpp: (JSC::StructureRareData::visitChildrenImpl):
  • runtime/StructureRareData.h:
  • runtime/StructureRareDataInlines.h: (JSC::StructureRareData::cachedPropertyNameEnumerator const): (JSC::StructureRareData::cachedPropertyNameEnumeratorAndFlag const): (JSC::StructureRareData::setCachedPropertyNameEnumerator): (JSC::StructureChainInvalidationWatchpoint::fireInternal): (JSC::StructureRareData::tryCachePropertyNameEnumeratorViaWatchpoint): (JSC::StructureRareData::clearCachedPropertyNameEnumerator): (JSC::StructureRareData::invalidateWatchpointBasedValidation): Deleted.

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

3:12 PM Changeset in webkit [283572] by Patrick Angle
  • 9 edits in trunk/Source

Web Inspector: Show color space for canvases in the Graphics tab on the overview cards
https://bugs.webkit.org/show_bug.cgi?id=231205

Reviewed by Devin Rousso.

Source/JavaScriptCore:

Use an enum instead of strings for color space values sent to the frontend.

  • inspector/protocol/Canvas.json:
  • inspector/scripts/codegen/generator.py:

Source/WebCore:

Use an enum instead of strings for color space values sent to the frontend.

  • inspector/InspectorCanvas.cpp:

(WebCore::buildObjectForCanvasContextAttributes):

Source/WebInspectorUI:

For canvas context's with a color space attribute, show the color space next to the context type in the header
of each context card in the Graphics tab.

  • UserInterface/Models/Canvas.js:

(WI.Canvas.displayNameForColorSpace):

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView.prototype.initialLayout):

  • UserInterface/Views/CanvasOverviewContentView.css:

(.content-view.canvas-overview > .content-view.canvas > header > .titles > :matches(.subtitle, .color-space),):
(.content-view.canvas-overview > .content-view.canvas > header .color-space::before):

3:04 PM Changeset in webkit [283571] by Russell Epstein
  • 1 copy in tags/Safari-611.4.2.0.1

Tag Safari-611.4.2.0.1.

2:54 PM Changeset in webkit [283570] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Remove leftover ASSERT.

Unreviewed.

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::inlineItemWidth const): We could very well run the fast text measuring codepath with different styles e.g. when there's color difference.

2:28 PM Changeset in webkit [283569] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 15 ] ASSERTION FAILED: isRunningTest(WebCore::applicationBundleIdentifier()).
https://bugs.webkit.org/show_bug.cgi?id=231255

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
1:12 PM Changeset in webkit [283568] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Incorrect Length constructor used after blending negative Length
https://bugs.webkit.org/show_bug.cgi?id=230873

Patch by Gabriel Nava Marino <gnavamarino@apple.com> on 2021-10-05
Reviewed by Antoine Quint.

Source/WebCore:

Test: fast/borders/border-radius-cubic-bezier-timing-function-negative-value.html

  • platform/Length.cpp:

(WebCore::blend):

Only call current Length constructor for the non-LengthType::Calculated types when the value is negative, otherwise use behavior before r273603.

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertToRadiusLength):

Clamp BuilderConverter::convertToRadiusLength Lengths to values >= 0

LayoutTests:

  • fast/borders/border-radius-cubic-bezier-timing-function-negative-value-expected.txt: Added.
  • fast/borders/border-radius-cubic-bezier-timing-function-negative-value.html: Added.
12:20 PM Changeset in webkit [283567] by mark.lam@apple.com
  • 6 edits
    1 add in trunk

CodeBlock should not add/remove LoopHintExecutionCounters.
https://bugs.webkit.org/show_bug.cgi?id=231209
rdar://83571235

Reviewed by Saam Barati.

JSTests:

  • stress/codeBlock-should-not-add-remove-loop-hint-execution-counters-due-to-cached-unlinked-baseline-code.js: Added.

Source/JavaScriptCore:

This is because cached unlinked baseline JIT code would retain a pointer to those
counters. Hence, the UnlinkedCodeBlock should do the add /remove of the counters
instead.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::~CodeBlock):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::initializeLoopHintExecutionCounter):
(JSC::UnlinkedCodeBlock::~UnlinkedCodeBlock):

  • bytecode/UnlinkedCodeBlock.h:
  • bytecode/UnlinkedCodeBlockGenerator.cpp:

(JSC::UnlinkedCodeBlockGenerator::finalize):

12:12 PM Changeset in webkit [283566] by Kate Cheney
  • 35 edits
    2 adds in trunk

CSP: unsafe-eval tests timing out or failing
https://bugs.webkit.org/show_bug.cgi?id=231113
<rdar://problem/83425041>

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • web-platform-tests/content-security-policy/script-src/script-src-1_4-expected.txt:
  • web-platform-tests/content-security-policy/script-src/script-src-1_4_1-expected.txt:
  • web-platform-tests/content-security-policy/script-src/script-src-1_4_2-expected.txt:
  • web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_eval-expected.txt: Added.
  • web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_new_function-expected.txt: Added.
  • web-platform-tests/content-security-policy/securitypolicyviolation/blockeduri-eval-expected.txt:

This test gets the report but gets an incorrect column number. The bug
seems tangential to this patch and we should fix it in a followup.

  • web-platform-tests/content-security-policy/unsafe-eval/eval-blocked-and-sends-report.sub-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.sub-expected.txt:

This test gets the report but reveals a bug where we don't allow
inline script to execute after calling eval() when unsafe-inline is
specified but not unsafe-eval. Tracking in rdar://83846298.

  • web-platform-tests/content-security-policy/unsafe-eval/eval-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setInterval-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setTimeout-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-eval/function-constructor-blocked.sub-expected.txt:

Source/JavaScriptCore:

Many imported unsafe-eval tests are failing because we don't report
violations to the DOM or report URI when an eval is blocked. This
patch adds support for that by calling
ContentSecurityPolicy::allowEval() when eval is disabled.

Eventually I think we can remove the evalEnabled() code and check the
CSP policy instead, but I will save that for another patch.

  • API/JSAPIGlobalObject.cpp:
  • API/JSAPIGlobalObject.mm:
  • interpreter/Interpreter.cpp:

(JSC::eval):

  • jsc.cpp:
  • runtime/DirectEvalExecutable.cpp:

(JSC::DirectEvalExecutable::create):

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunction):

  • runtime/IndirectEvalExecutable.cpp:

(JSC::IndirectEvalExecutable::create):

  • runtime/JSGlobalObject.cpp:
  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::reportViolationForUnsafeEval):
Per the spec we should send the report to the element's document and
bubble it up to the window.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

Source/WebCore:

No new tests. This will cause existing tests to pass.

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::reportViolationForUnsafeEval):
Add new parameter LogToConsole to ContentSecurityPolicy::allowEval()
because in many cases we already log to console for eval violations
when we throw an error.

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSRemoteDOMWindowBase.cpp:

Per the spec, we should set the DOM target to be the element's
document. If the element is null, we set it to the window's document.

  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::reportViolationForUnsafeEval):

  • bindings/js/JSWorkerGlobalScopeBase.h:
  • bindings/js/JSWorkletGlobalScopeBase.cpp:

(WebCore::JSWorkletGlobalScopeBase::reportViolationForUnsafeEval):

  • bindings/js/JSWorkletGlobalScopeBase.h:
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::setTimeout):
(WebCore::DOMWindow::setInterval):
Cases where we do not log to console already, so we should do it when
we check for a violation.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allowEval const):
(WebCore::ContentSecurityPolicy::reportViolation const):
Per the spec, the blockedURI for eval violations should be "eval".
This patch updates the blockedURI to be a string when passed to
reportViolation to allow this to happen.

(WebCore::ContentSecurityPolicy::logToConsole const):
Don't log an empty string to console. This allows us to pass an empty
string when shouldLogToConsole == LogToConsole::No so we don't need to
add an extra boolean to a lot of places to know whether to log.

  • page/csp/ContentSecurityPolicy.h:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::setTimeout):
(WebCore::WorkerGlobalScope::setInterval):

11:48 AM Changeset in webkit [283565] by Chris Dumez
  • 7 edits
    3 adds in trunk

Authorization header lost on 30x redirects
https://bugs.webkit.org/show_bug.cgi?id=230935
<rdar://problem/83689955>

Reviewed by Darin Adler.

Source/WebCore:

CFNetwork drops the Authorization request header in cases of same-origin redirects, which is not as per
the fetch specification [1] and doesn't match the behavior of other browsers.

To address the issue, WebKit adds the Authorization request back in case of a same-origin redirect.

Test: http/tests/fetch/fetch-redirect-same-origin-authorization.html

  • platform/network/cf/ResourceHandleCFNet.cpp:

(WebCore::ResourceHandle::willSendRequest):

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::ResourceHandle::willSendRequest):

Source/WebKit:

CFNetwork drops the Authorization request header in cases of same-origin redirects, which is not as per
the fetch specification [1] and doesn't match the behavior of other browsers.

To address the issue, WebKit adds the Authorization request back in case of a same-origin redirect.

[1] https://fetch.spec.whatwg.org/#concept-http-redirect-fetch

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

LayoutTests:

  • http/tests/fetch/fetch-redirect-same-origin-authorization-expected.txt: Added.
  • http/tests/fetch/fetch-redirect-same-origin-authorization.html: Added.
  • http/tests/fetch/resources/dump-authorization-header.py: Added.

Add layout test coverage.

  • http/tests/xmlhttprequest/redirections-and-user-headers.html:

Update existing test to reflect behavior change.

11:41 AM Changeset in webkit [283564] by Andres Gonzalez
  • 8 edits in trunk/Source/WebCore

Move handling of AXValue from platform wrapper to AX core code.
https://bugs.webkit.org/show_bug.cgi?id=231200

Reviewed by Chris Fleizach.

No change in functionality.

Moved handling of the AXValue (NSAccessibilityValueAttribute) from the
Mac wrapper accessibilityAttributeValue handler to AXCoreObject::value.
This makes possible to share this code across multiple platforms.

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::headingLevel const):
Returns unsigned instead of int.

  • accessibility/AccessibilityNodeObject.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::value):

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

11:40 AM Changeset in webkit [283563] by timothy_horton@apple.com
  • 12 edits
    1 add in trunk

<model> should be draggable, similar to <img>
https://bugs.webkit.org/show_bug.cgi?id=229246

Reviewed by Wenson Hsieh.

Source/WebCore:

  • page/DragActions.h:

(WebCore::anyDragSourceAction):

  • page/DragController.cpp:

(WebCore::DragController::draggableElement const):
(WebCore::DragController::startDrag):

  • page/EventHandler.cpp:

(WebCore::EventHandler::dragHysteresisExceeded const):
Make <model> draggable, vending a PasteboardImage with the model data and correct MIME type.
We currently make a DragImage from a node snapshot, but later will want a richer DragImage.

Source/WebKit:

  • UIProcess/ios/DragDropInteractionState.mm:

(WebKit::shouldUseDragImageToCreatePreviewForDragSource):
For now, use the Web-Content-process-painted node-snapshot DragImage for the targeted preview on iOS.

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(kit):
Do nothing for <model> drags in legacy WebKit.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/cube.usdz: Added.
  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:

(-[ModelLoadingMessageHandler userContentController:didReceiveScriptMessage:]):
(TestWebKitAPI::TEST):
Add a test that ensures that dragging a <model> works.

11:26 AM Changeset in webkit [283562] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Unsupported blending of mixed length types leads to nullptr deref when accessing m_value.calc in CSSPrimitiveValue::primitiveType()
https://bugs.webkit.org/show_bug.cgi?id=230929

Patch by Gabriel Nava Marino <gnavamarino@apple.com> on 2021-10-05
Source/WebCore:

Reviewed by Darin Adler.

Test: fast/layoutformattingcontext/fit-content-min-height-animation.html

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::init):

  • platform/Length.cpp:

(WebCore::blendMixedTypes):

LayoutTests:

Reviewed by Reviewed by Darin Adler.

  • fast/layoutformattingcontext/fit-content-min-height-animation-expected.txt: Added.
  • fast/layoutformattingcontext/fit-content-min-height-animation.html: Added.
11:19 AM Changeset in webkit [283561] by commit-queue@webkit.org
  • 6 edits in trunk

radial-gradient does not accept calc values that combine length and percent
https://bugs.webkit.org/show_bug.cgi?id=230388

Patch by Nikos Mouchtaris <Nikos Mouchtaris> on 2021-10-05
Reviewed by Simon Fraser.

Source/WebCore:

Removed outdated check that disallowed combined percentage and length expressions.
Added code to calculate radius for combined percentage and length expressions.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeRadialGradient):

LayoutTests:

  • css3/calc/css3-radial-gradients-expected.html:
  • css3/calc/css3-radial-gradients.html:
11:15 AM Changeset in webkit [283560] by timothy_horton@apple.com
  • 8 edits in trunk/Source

Add an alternate style for form controls, and implement it for checkboxes and radio buttons
https://bugs.webkit.org/show_bug.cgi?id=231160

Reviewed by Sam Weinig.

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

(WebCore::RenderThemeIOS::checkboxRadioBackgroundColor):
Add alternate background colors. Currently these are not specified as
semantic colors, so we inline the values.

(WebCore::RenderThemeIOS::checkboxRadioBackgroundGradient):
Add a gradient fill for checkbox and radio button backgrounds.

(WebCore::RenderThemeIOS::paintCheckboxRadioInnerShadow):
Add two inner shadows (really, a shadow and a glow) to the checkbox and radio button.

(WebCore::RenderThemeIOS::paintCheckbox):
(WebCore::RenderThemeIOS::paintRadio):
Drop the border and use a filled background and inner shadows instead,
when the setting is enabled.

  • Scripts/Preferences/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultAlternateFormControlDesignEnabled):

  • Shared/WebPreferencesDefaultValues.h:
11:12 AM Changeset in webkit [283559] by achristensen@apple.com
  • 20 edits
    3 adds
    1 delete in trunk

Implement missing functions in PrivateClickMeasurementDaemonClient
https://bugs.webkit.org/show_bug.cgi?id=231060

Reviewed by Chris Dumez.

Source/WebKit:

Enable debug mode in the daemon if any connected clients have debug mode enabled.
Broadcast debug messages to all clients, which will then broadcast them to all web processes.
Add an API test that turns it on then off and checks that the debug messages make it all the way to the inspector.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::managerOrProxy):
(WebKit::NetworkSession::setPrivateClickMeasurementDebugMode):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementConnection.cpp:

(WebKit::PCM::ConnectionToMachService::ConnectionToMachService):
(WebKit::PCM::ConnectionToMachService::send const):
(WebKit::PCM::ConnectionToMachService::sendWithReply const):
(WebKit::PCM::Connection::Connection): Deleted.
(WebKit::PCM::Connection::send const): Deleted.
(WebKit::PCM::Connection::sendWithReply const): Deleted.

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementConnection.h:

(WebKit::PCM::Connection::Connection):
(WebKit::PCM::Connection::get const):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDaemonClient.cpp:

(WebKit::PCM::DaemonClient::broadcastConsoleMessage):
(WebKit::PCM::DaemonClient::debugModeEnabled const):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::setDebugModeIsEnabled):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.cpp:

(WebKit::PCM::messageTypeSendsReply):
(WebKit::PCM::handlePCMMessageSetDebugModeIsEnabled):
(WebKit::PCM::decodeMessageAndSendToManager):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerProxy.cpp:

(WebKit::PCM::ManagerProxy::ManagerProxy):
(WebKit::PCM::ManagerProxy::setDebugModeIsEnabled):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerProxy.h:
  • NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementConnectionCocoa.mm: Renamed from Source/WebKit/NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementDaemonConnectionCocoa.mm.

(WebKit::PCM::ConnectionToMachService::initializeConnectionIfNeeded const):
(WebKit::PCM::ConnectionToMachService::sendDebugModeIsEnabledMessageIfNecessary const):
(WebKit::PCM::ConnectionToMachService::checkForDebugMessageBroadcast const):
(WebKit::PCM::Connection::send const):
(WebKit::PCM::Connection::sendWithReply const):
(WebKit::PCM::ConnectionToMachService::send const):
(WebKit::PCM::ConnectionToMachService::sendWithReply const):

  • Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonConnectionSet.h: Copied from Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementConnection.h.
  • Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonConnectionSet.mm: Added.

(WebKit::PCM::DaemonConnectionSet::singleton):
(WebKit::PCM::DaemonConnectionSet::add):
(WebKit::PCM::DaemonConnectionSet::remove):
(WebKit::PCM::DaemonConnectionSet::setConnectedNetworkProcessHasDebugModeEnabled):
(WebKit::PCM::DaemonConnectionSet::debugModeEnabled const):
(WebKit::PCM::DaemonConnectionSet::broadcastConsoleMessage):

  • Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonEntryPoint.mm:

(WebKit::connectionEventHandler):
(WebKit::startListeningForMachServiceConnections):
(WebKit::peers): Deleted.

  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _setPrivateClickMeasurementDebugModeEnabledForTesting:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:

(TestWebKitAPI::testDaemonPList):
(TestWebKitAPI::cleanUpDaemon):
(TestWebKitAPI::TEST):

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

(-[TestUIDelegate _webView:didAttachLocalInspector:]):
(-[TestUIDelegate waitForInspectorToShow]):
(-[WKWebView _test_waitForInspectorToShow]):

10:59 AM Changeset in webkit [283558] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS15 WK2 ] http/tests/media/modern-media-controls/overflow-support/playback-speed-live-broadcast.html is a constant timeout.
<rdar://80393995>

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:51 AM Changeset in webkit [283557] by commit-queue@webkit.org
  • 9 edits in trunk/Source/JavaScriptCore

[JSC][32bit] Fix bugs after unlinked baseline jit
https://bugs.webkit.org/show_bug.cgi?id=231232

Patch by Xan López <Xan Lopez> on 2021-10-05
Reviewed by Yusuke Suzuki.

Fix a bunch of bugs introduced with unlinked baseline jit. As of
now we are disabling DataIC on baseline JIT to get things working
ASAP, making that work will be the next step. This makes us almost
go back to green bots.

(Patch co-authored with Geza Lore)

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::emitDataICFastPath): ASSERT we are not using DataIC on 32-bit.

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::hasDebuggerRequests const):
(JSC::CodeBlock::debuggerRequestsAddress): Deleted.

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileOpCall): don't use DataIC.
(JSC::JIT::compileOpCallSlowCase): set missing label.

  • jit/JITCode.h:

(JSC::JITCode::useDataIC): disable DataIC on baseline JIT for 32-bit.

  • jit/JITInlines.h:

(JSC::JIT::getConstantOperand): get constants from the CodeBlock,
since we don't do sharing on 32-bit.
(JSC::JIT::emitValueProfilingSite): remove an overzealous ASSERT.
(JSC::JIT::loadConstant): use sizeof(void*) instead of '8', makes
things work on 32-bit.

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_debug): share this with 32-bit.

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_debug): Deleted.

  • llint/LowLevelInterpreter32_64.asm: do not thrash the PC register.
10:49 AM Changeset in webkit [283556] by ysuzuki@apple.com
  • 16 edits
    2 adds in trunk

[JSC] JSPropertyNameEnumerator should not have cached prototype chain since empty JSPropertyNameEnumerator is shared
https://bugs.webkit.org/show_bug.cgi?id=231202
JSTests:

Reviewed by Keith Miller.

  • stress/for-in-validation-poly-proto.js: Added.

(shouldBe):
(test):
(factory.Test):
(factory):

  • stress/for-in-validation-watchpoint.js: Added.

(shouldBe):
(test):
(Test):
(factory):

Source/JavaScriptCore:

rdar://83815122

Reviewed by Keith Miller.

r282014 assumed an invariant that JSPropertyNameEnumerator's StructureChain is immutable.
This invariant is also used in validation of JSPropertyNameEnumerator. However, this
invariant was broken since we now have shared empty sentinel JSPropertyNameEnumerator, which can
be used for different structures having different prototype chain.

Since now we have shared JSPropertyNameEnumerator, JSPropertyNameEnumerator should not have
StructureChain in its member. When invalidating StructureChain in Structure, we also clear
cached JSPropertyNameEnumerator so that we do not get a stale JSPropertyNameEnumerator from
Structure even though watchpoint-based validation is not used.

This patch also removes ValidatedViaWatchpoint flag in JSPropertyNameEnumerator due to the same
reason. We should not modify JSPropertyNameEnumerator once it is instantiated. Instead, we encode
this flag as a lowest bit of m_cachedPropertyNameEnumerator. If it is validated via traversing (not watchpoints),
then this bit is set. So when loading that pointer from StructureRareData, we can quickly detect
it without even accessing to the enumerator. This fixes the issue, and it is even cleaner.
We rename m_cachedPropertyNameEnumerator to m_cachedPropertyNameEnumeratorAndFlag since it now
includes this flag.

While reviewing the code, we also found that watchpoint-based validation didn't care about PolyProto.
We should disable watchpoint-based validation if PolyProto is used.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetPropertyEnumerator):

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

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

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_property_enumerator):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter64.asm:
  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::visitChildrenImpl):

  • runtime/JSPropertyNameEnumerator.h:

(JSC::propertyNameEnumerator):

  • runtime/Structure.cpp:

(JSC::Structure::visitChildrenImpl):
(JSC::Structure::setCachedPropertyNameEnumerator):
(JSC::Structure::cachedPropertyNameEnumeratorAndFlag const):

  • runtime/Structure.h:

(JSC::Structure::propertyNameEnumeratorShouldWatch const):

  • runtime/StructureInlines.h:

(JSC::Structure::prototypeChain const):
(JSC::Structure::clearCachedPrototypeChain):

  • runtime/StructureRareData.cpp:

(JSC::StructureRareData::visitChildrenImpl):

  • runtime/StructureRareData.h:
  • runtime/StructureRareDataInlines.h:

(JSC::StructureRareData::cachedPropertyNameEnumerator const):
(JSC::StructureRareData::cachedPropertyNameEnumeratorAndFlag const):
(JSC::StructureRareData::setCachedPropertyNameEnumerator):
(JSC::StructureChainInvalidationWatchpoint::fireInternal):
(JSC::StructureRareData::tryCachePropertyNameEnumeratorViaWatchpoint):
(JSC::StructureRareData::clearCachedPropertyNameEnumerator):
(JSC::StructureRareData::invalidateWatchpointBasedValidation): Deleted.

9:57 AM Changeset in webkit [283555] by Simon Fraser
  • 3 edits
    2 adds in trunk

REGRESSION (r283335): Momentum scrolling is no longer locked to an axis
https://bugs.webkit.org/show_bug.cgi?id=231206

Reviewed by Wenson Hsieh.

Source/WebCore:

r283335 removed the line that constrained the scroll delta to an axis, so restore it.

This bug only manifested during the momentum phase because both EventDispatcher and
EventHandler send only non-momentum events through the filter. We should also filter
deltas on momentum events (webkit.org/b/231207).

Test: fast/scrolling/mac/momentum-axis-locking.html

  • platform/mac/ScrollingEffectsController.mm:

(WebCore::ScrollingEffectsController::handleWheelEvent):

LayoutTests:

  • fast/scrolling/mac/momentum-axis-locking-expected.txt: Added.
  • fast/scrolling/mac/momentum-axis-locking.html: Added.
9:46 AM Changeset in webkit [283554] by Antti Koivisto
  • 8 edits
    2 adds in trunk/Source/WebCore

[LFC][Integration] Introduce InlineBoxIterator
https://bugs.webkit.org/show_bug.cgi?id=231233

Reviewed by Alan Bujtas.

And use it in InlineBoxPainter.

The adoption is still incomplete here so only the legacy path is covered.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/integration/InlineIteratorBox.h:

(WebCore::InlineIterator::Box::isInlineBox const):
(WebCore::InlineIterator::Box::isRootInlineBox const):

  • layout/integration/InlineIteratorBoxLegacyPath.h:

(WebCore::InlineIterator::BoxLegacyPath::isInlineBox const):
(WebCore::InlineIterator::BoxLegacyPath::isRootInlineBox const):
(WebCore::InlineIterator::BoxLegacyPath::traverseNextInlineBox):
(WebCore::InlineIterator::BoxLegacyPath::traversePreviousInlineBox):
(WebCore::InlineIterator::BoxLegacyPath::inlineFlowBox const):

  • layout/integration/InlineIteratorBoxModernPath.h:

(WebCore::InlineIterator::BoxModernPath::isInlineBox const):
(WebCore::InlineIterator::BoxModernPath::isRootInlineBox const):
(WebCore::InlineIterator::BoxModernPath::traverseNextInlineBox):
(WebCore::InlineIterator::BoxModernPath::traversePreviousInlineBox):

  • layout/integration/InlineIteratorInlineBox.cpp: Added.

(WebCore::InlineIterator::InlineBox::InlineBox):
(WebCore::InlineIterator::InlineBox::nextInlineBox const):
(WebCore::InlineIterator::InlineBox::previousInlineBox const):
(WebCore::InlineIterator::InlineBoxIterator::InlineBoxIterator):
(WebCore::InlineIterator::InlineBoxIterator::traverseNextInlineBox):
(WebCore::InlineIterator::InlineBoxIterator::traversePreviousInlineBox):
(WebCore::InlineIterator::inlineBoxFor):

  • layout/integration/InlineIteratorInlineBox.h: Added.

(WebCore::InlineIterator::InlineBox::renderer const):
(WebCore::InlineIterator::InlineBox::legacyInlineBox const):
(WebCore::InlineIterator::InlineBoxIterator::InlineBoxIterator):
(WebCore::InlineIterator::InlineBoxIterator::operator* const):
(WebCore::InlineIterator::InlineBoxIterator::operator-> const):
(WebCore::InlineIterator::InlineBoxIterator::get const):
(WebCore::InlineIterator::InlineBox::iterator const):
(isType):

  • rendering/InlineBoxPainter.cpp:

(WebCore::InlineBoxPainter::InlineBoxPainter):
(WebCore::clipRectForNinePieceImageStrip):
(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):
(WebCore::InlineBoxPainter::paintFillLayer):
(WebCore::InlineBoxPainter::paintBoxShadow):
(WebCore::InlineBoxPainter::constrainToLineTopAndBottomIfNeeded const):

  • rendering/InlineBoxPainter.h:
9:43 AM Changeset in webkit [283553] by ddkilzer@apple.com
  • 2 edits
    2 deletes in trunk/Tools

REGRESSION (r283476): [ iOS macOS Debug ] TestWTF failures in RetainPtrARC and TypeCastsCocoaARC
<https://webkit.org/b/231172>
<rdar://problem/83836549>

Unreviewed partial revert of r283476.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • Remove RetainPtrARC.mm and TypeCastsCocoaARC.mm from the project.
  • TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoaARC.mm: Delete.
  • TestWebKitAPI/Tests/WTF/ns/RetainPtrARC.mm: Delete.
  • Remove these tests until issues can be fixed.
8:54 AM Changeset in webkit [283552] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

Remove m_autoShrinkToFitEnabled from RuleSet
https://bugs.webkit.org/show_bug.cgi?id=231214

Reviewed by Alan Bujtas.

Make it RuleSetBuilder setting instead, enabled by default.

  • style/RuleSet.h:

(WebCore::Style::RuleSet::disableAutoShrinkToFit): Deleted.

  • style/RuleSetBuilder.cpp:

(WebCore::Style::RuleSetBuilder::RuleSetBuilder):
(WebCore::Style::m_shrinkToFit):
(WebCore::Style::RuleSetBuilder::~RuleSetBuilder):
(WebCore::Style::m_resolver): Deleted.

  • style/RuleSetBuilder.h:
  • style/StyleInvalidator.cpp:

(WebCore::Style::Invalidator::Invalidator):

Here we still want to avoid shrink-to-fit since the constructed RuleSets are temporary.

  • style/StyleScopeRuleSets.cpp:

(WebCore::Style::ScopeRuleSets::ScopeRuleSets):
(WebCore::Style::ScopeRuleSets::resetAuthorStyle):
(WebCore::Style::ScopeRuleSets::appendAuthorStyleSheets):

Since RuleSetBuilder is scoped over everything we can no use it to do shrink-to-fit.

8:53 AM Changeset in webkit [283551] by ddkilzer@apple.com
  • 4 edits in trunk

Follow-up #2: WTF::RetainPtr<> allows assignment of two pointer types that are not assignable
<https://webkit.org/b/230406>
<rdar://problem/83241893>

Unreviewed attempt to fix API tests.

Source/WTF:

  • wtf/cocoa/TypeCastsCocoa.h:

(WTF::checked_objc_cast):

  • Rename checked_objc_cast<> to checked_objc_castARC<> when compiling with ARC enabled.
  • Also mark as inline function to allow for optimization.

Tools:

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

(TestWebKitAPI::TEST):

  • Revert code back to using objectNS.get() for checked_objc_cast<> tests since it always worked.
8:21 AM Changeset in webkit [283550] by Alan Bujtas
  • 145 edits in trunk

[IFC][Integration] Enable first-line style for modern line layout
https://bugs.webkit.org/show_bug.cgi?id=231178

Reviewed by Antti Koivisto.

Source/WebCore:

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::printReason):
(WebCore::LayoutIntegration::canUseForStyle):
(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

  • layout/integration/LayoutIntegrationCoverage.h:

LayoutTests:

  • fast/css/empty-inline-line-height-first-line-expected.txt:
  • fast/css/empty-inline-line-height-first-line-quirksmode-expected.txt:
  • platform/ios/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt:
  • platform/ios/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt:
  • platform/ios/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt:
  • platform/ios/editing/deleting/delete-at-paragraph-boundaries-005-expected.txt:
  • platform/ios/editing/deleting/delete-at-paragraph-boundaries-006-expected.txt:
  • platform/ios/editing/deleting/delete-at-paragraph-boundaries-007-expected.txt:
  • platform/ios/editing/deleting/delete-at-paragraph-boundaries-008-expected.txt:
  • platform/ios/editing/deleting/delete-at-paragraph-boundaries-009-expected.txt:
  • platform/ios/editing/deleting/delete-at-paragraph-boundaries-010-expected.txt:
  • platform/ios/editing/deleting/delete-at-paragraph-boundaries-011-expected.txt:
  • platform/ios/editing/deleting/non-smart-delete-expected.txt:
  • platform/ios/editing/inserting/insert-br-quoted-001-expected.txt:
  • platform/ios/editing/inserting/insert-br-quoted-002-expected.txt:
  • platform/ios/editing/inserting/insert-br-quoted-003-expected.txt:
  • platform/ios/editing/inserting/insert-br-quoted-004-expected.txt:
  • platform/ios/editing/inserting/insert-br-quoted-005-expected.txt:
  • platform/ios/editing/inserting/insert-br-quoted-006-expected.txt:
  • platform/ios/editing/inserting/insert-div-026-expected.txt:
  • platform/ios/editing/inserting/return-key-with-selection-001-expected.txt:
  • platform/ios/editing/inserting/return-key-with-selection-002-expected.txt:
  • platform/ios/editing/inserting/return-key-with-selection-003-expected.txt:
  • platform/ios/editing/pasteboard/paste-4038267-fix-expected.txt:
  • platform/ios/editing/pasteboard/paste-line-endings-001-expected.txt:
  • platform/ios/editing/pasteboard/paste-line-endings-002-expected.txt:
  • platform/ios/editing/pasteboard/paste-line-endings-003-expected.txt:
  • platform/ios/editing/pasteboard/paste-line-endings-004-expected.txt:
  • platform/ios/editing/pasteboard/paste-line-endings-005-expected.txt:
  • platform/ios/editing/pasteboard/paste-line-endings-006-expected.txt:
  • platform/ios/editing/pasteboard/paste-line-endings-007-expected.txt:
  • platform/ios/editing/pasteboard/paste-line-endings-008-expected.txt:
  • platform/ios/editing/pasteboard/paste-line-endings-009-expected.txt:
  • platform/ios/editing/pasteboard/paste-line-endings-010-expected.txt:
  • platform/ios/editing/pasteboard/paste-match-style-001-expected.txt:
  • platform/ios/editing/pasteboard/paste-match-style-002-expected.txt:
  • platform/ios/editing/pasteboard/paste-text-019-expected.txt:
  • platform/ios/editing/style/block-styles-007-expected.txt:
  • platform/ios/editing/style/style-3998892-fix-expected.txt:
  • platform/ios/editing/style/style-boundary-001-expected.txt:
  • platform/ios/editing/style/style-boundary-004-expected.txt:
  • platform/ios/editing/unsupported-content/list-delete-003-expected.txt:
  • platform/ios/editing/unsupported-content/list-type-after-expected.txt:
  • platform/ios/fast/css/empty-inline-line-height-first-line-expected.txt:
  • platform/ios/fast/css/empty-inline-line-height-first-line-quirksmode-expected.txt:
  • platform/ios/fast/css/first-line-text-decoration-expected.txt:
  • platform/ios/fast/css/first-line-text-decoration-inherited-from-parent-expected.txt:
  • platform/ios/fast/text/firstline/001-expected.txt:
  • platform/mac/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt:
  • platform/mac/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt:
  • platform/mac/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt:
  • platform/mac/editing/deleting/delete-at-paragraph-boundaries-005-expected.txt:
  • platform/mac/editing/deleting/delete-at-paragraph-boundaries-006-expected.txt:
  • platform/mac/editing/deleting/delete-at-paragraph-boundaries-007-expected.txt:
  • platform/mac/editing/deleting/delete-at-paragraph-boundaries-008-expected.txt:
  • platform/mac/editing/deleting/delete-at-paragraph-boundaries-009-expected.txt:
  • platform/mac/editing/deleting/delete-at-paragraph-boundaries-010-expected.txt:
  • platform/mac/editing/deleting/delete-at-paragraph-boundaries-011-expected.txt:
  • platform/mac/editing/deleting/non-smart-delete-expected.txt:
  • platform/mac/editing/inserting/insert-br-quoted-001-expected.txt:
  • platform/mac/editing/inserting/insert-br-quoted-002-expected.txt:
  • platform/mac/editing/inserting/insert-br-quoted-003-expected.txt:
  • platform/mac/editing/inserting/insert-br-quoted-004-expected.txt:
  • platform/mac/editing/inserting/insert-br-quoted-005-expected.txt:
  • platform/mac/editing/inserting/insert-br-quoted-006-expected.txt:
  • platform/mac/editing/inserting/insert-div-026-expected.txt:
  • platform/mac/editing/inserting/return-key-with-selection-001-expected.txt:
  • platform/mac/editing/inserting/return-key-with-selection-002-expected.txt:
  • platform/mac/editing/inserting/return-key-with-selection-003-expected.txt:
  • platform/mac/editing/pasteboard/emacs-cntl-y-001-expected.txt:
  • platform/mac/editing/pasteboard/emacs-ctrl-k-y-001-expected.txt:
  • platform/mac/editing/pasteboard/paste-4038267-fix-expected.txt:
  • platform/mac/editing/pasteboard/paste-line-endings-001-expected.txt:
  • platform/mac/editing/pasteboard/paste-line-endings-002-expected.txt:
  • platform/mac/editing/pasteboard/paste-line-endings-003-expected.txt:
  • platform/mac/editing/pasteboard/paste-line-endings-004-expected.txt:
  • platform/mac/editing/pasteboard/paste-line-endings-005-expected.txt:
  • platform/mac/editing/pasteboard/paste-line-endings-006-expected.txt:
  • platform/mac/editing/pasteboard/paste-line-endings-007-expected.txt:
  • platform/mac/editing/pasteboard/paste-line-endings-008-expected.txt:
  • platform/mac/editing/pasteboard/paste-line-endings-009-expected.txt:
  • platform/mac/editing/pasteboard/paste-line-endings-010-expected.txt:
  • platform/mac/editing/pasteboard/paste-match-style-001-expected.txt:
  • platform/mac/editing/pasteboard/paste-match-style-002-expected.txt:
  • platform/mac/editing/pasteboard/paste-text-019-expected.txt:
  • platform/mac/editing/style/block-styles-007-expected.txt:
  • platform/mac/editing/style/smoosh-styles-001-expected.txt:
  • platform/mac/editing/style/smoosh-styles-003-expected.txt:
  • platform/mac/editing/style/style-3998892-fix-expected.txt:
  • platform/mac/editing/style/style-boundary-001-expected.txt:
  • platform/mac/editing/style/style-boundary-002-expected.txt:
  • platform/mac/editing/style/style-boundary-003-expected.txt:
  • platform/mac/editing/style/style-boundary-004-expected.txt:
  • platform/mac/editing/style/style-boundary-005-expected.txt:
  • platform/mac/editing/unsupported-content/list-delete-001-expected.txt:
  • platform/mac/editing/unsupported-content/list-delete-003-expected.txt:
  • platform/mac/editing/unsupported-content/list-type-after-expected.txt:
  • platform/mac/editing/unsupported-content/list-type-before-expected.txt:
  • platform/mac/editing/unsupported-content/table-delete-002-expected.txt:
  • platform/mac/editing/unsupported-content/table-type-after-expected.txt:
  • platform/mac/editing/unsupported-content/table-type-before-expected.txt:
  • platform/mac/fast/css/first-line-text-decoration-expected.txt:
  • platform/mac/fast/css/first-line-text-decoration-inherited-from-parent-expected.txt:
  • platform/mac/fast/text/firstline/001-expected.txt:
  • platform/win/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt:
  • platform/win/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt:
  • platform/win/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt:
  • platform/win/editing/deleting/delete-at-paragraph-boundaries-005-expected.txt:
  • platform/win/editing/deleting/delete-at-paragraph-boundaries-006-expected.txt:
  • platform/win/editing/deleting/delete-at-paragraph-boundaries-007-expected.txt:
  • platform/win/editing/deleting/delete-at-paragraph-boundaries-008-expected.txt:
  • platform/win/editing/deleting/delete-at-paragraph-boundaries-009-expected.txt:
  • platform/win/editing/deleting/delete-at-paragraph-boundaries-010-expected.txt:
  • platform/win/editing/deleting/delete-at-paragraph-boundaries-011-expected.txt:
  • platform/win/editing/deleting/non-smart-delete-expected.txt:
  • platform/win/editing/inserting/insert-br-quoted-001-expected.txt:
  • platform/win/editing/inserting/insert-br-quoted-002-expected.txt:
  • platform/win/editing/inserting/insert-br-quoted-003-expected.txt:
  • platform/win/editing/inserting/insert-br-quoted-004-expected.txt:
  • platform/win/editing/inserting/insert-br-quoted-005-expected.txt:
  • platform/win/editing/inserting/insert-br-quoted-006-expected.txt:
  • platform/win/editing/inserting/insert-div-026-expected.txt:
  • platform/win/editing/inserting/return-key-with-selection-001-expected.txt:
  • platform/win/editing/inserting/return-key-with-selection-002-expected.txt:
  • platform/win/editing/inserting/return-key-with-selection-003-expected.txt:
  • platform/win/editing/style/block-styles-007-expected.txt:
  • platform/win/editing/style/smoosh-styles-001-expected.txt:
  • platform/win/editing/style/smoosh-styles-003-expected.txt:
  • platform/win/editing/style/style-3998892-fix-expected.txt:
  • platform/win/editing/style/style-boundary-001-expected.txt:
  • platform/win/editing/style/style-boundary-002-expected.txt:
  • platform/win/editing/style/style-boundary-003-expected.txt:
  • platform/win/editing/style/style-boundary-004-expected.txt:
  • platform/win/editing/style/style-boundary-005-expected.txt:
  • platform/win/editing/unsupported-content/list-delete-001-expected.txt:
  • platform/win/editing/unsupported-content/list-delete-003-expected.txt:
  • platform/win/editing/unsupported-content/list-type-after-expected.txt:
  • platform/win/editing/unsupported-content/list-type-before-expected.txt:
  • platform/win/editing/unsupported-content/table-delete-002-expected.txt:
  • platform/win/editing/unsupported-content/table-type-after-expected.txt:
  • platform/win/editing/unsupported-content/table-type-before-expected.txt:
7:49 AM Changeset in webkit [283549] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Move tryBreaking*Run logic to standalone functions
https://bugs.webkit.org/show_bug.cgi?id=231198

Reviewed by Antti Koivisto.

InlineContentBreaker::processOverflowingContentWithText is getting way to long and while I love keeping logic like this local, the upcoming WordBreak::BreakWord functionality
makes this function body overlap multiple pages.

  • layout/formattingContexts/inline/InlineContentBreaker.cpp:

(WebCore::Layout::findTrailingRunIndex):
(WebCore::Layout::isWrappableRun):
(WebCore::Layout::InlineContentBreaker::tryBreakingOverflowingRun const):
(WebCore::Layout::InlineContentBreaker::tryBreakingPreviousNonOverflowingRuns const):
(WebCore::Layout::InlineContentBreaker::tryBreakingNextOverflowingRuns const):
(WebCore::Layout::InlineContentBreaker::processOverflowingContentWithText const):
(): Deleted.

  • layout/formattingContexts/inline/InlineContentBreaker.h:
6:57 AM Changeset in webkit [283548] by Chris Lord
  • 15 edits
    2 deletes in trunk/Source/WebCore

[GTK][WPE] REGRESSION: Async scrolling jumps to the top of the page until keyboard-initiated paging
https://bugs.webkit.org/show_bug.cgi?id=230953

Reviewed by Martin Robinson.

Update the non-Mac/iOS async scrolling path to work correctly after the
scrolling refactor. Trying to summarise, this implements
ScrollingEffectsController in ScrollingTreeScrollingNodeDelegateNicosia
and moves smooth and kinetic scrolling animations to
ScrollingEffectsController, to be shared by both sync and async paths.

No new tests, covered by existing tests (hopefully).

  • PlatformPlayStation.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeFrameScrollingNodeNicosia::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::commitStateAfterChildren):

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::commitStateAfterChildren):

  • page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.cpp:

(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::ScrollingTreeScrollingNodeDelegateNicosia):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::updateFromStateNode):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::updateVisibleLengths):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::handleWheelEvent):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::stopScrollAnimations):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::animationTimerFired):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::createTimer):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::startAnimationCallback):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::stopAnimationCallback):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::allowsHorizontalScrolling const):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::allowsVerticalScrolling const):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::immediateScrollBy):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::adjustScrollPositionToBoundsIfNecessary):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::scrollOffset const):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::willStartScrollSnapAnimation):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::didStopScrollSnapAnimation):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::pageScaleFactor const):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::scrollExtents const):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::resetCurrentPosition): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::ensureScrollAnimationKinetic): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::ensureScrollAnimationSmooth): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::pageScaleFactor): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::scrollAnimationDidUpdate): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::scrollAnimationDidEnd): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::scrollExtentsForAnimation): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::startTimerIfNecessary): Deleted.

  • page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.h:
  • platform/ScrollAnimationKinetic.h:
  • platform/ScrollAnimationSmooth.h:
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::retargetRunningAnimation):
(WebCore::ScrollAnimator::handleWheelEvent):
(WebCore::ScrollAnimator::scrollAnimationEnabled const):

  • platform/ScrollAnimator.h:
  • platform/ScrollingEffectsController.cpp:

(WebCore::ScrollingEffectsController::retargetAnimatedScroll):
(WebCore::ScrollingEffectsController::processWheelEventForKineticScrolling):
(WebCore::ScrollingEffectsController::handleWheelEvent):
(WebCore::ScrollingEffectsController::regargetAnimatedScroll): Deleted.

  • platform/ScrollingEffectsController.h:

(WebCore::ScrollingEffectsControllerClient::scrollAnimationEnabled const):

  • platform/generic/ScrollAnimatorGeneric.cpp: Removed.

(WebCore::ScrollAnimator::create): Deleted.
(WebCore::ScrollAnimatorGeneric::ScrollAnimatorGeneric): Deleted.
(WebCore::ScrollAnimatorGeneric::handleWheelEvent): Deleted.

  • platform/generic/ScrollAnimatorGeneric.h: Removed.

(): Deleted.

6:54 AM Changeset in webkit [283547] by Antti Koivisto
  • 15 edits in trunk/Source/WebCore

[LFC][Integration] Split BoxIterator into a base class and LeafBoxIterator
https://bugs.webkit.org/show_bug.cgi?id=231229

Reviewed by Alan Bujtas.

LeafBoxIterator contains function for traversing non-inline boxes.
BoxIterator becomes a non-instantiated base class.

This is in preparation for adding InlineBoxIterator.

  • dom/Position.cpp:

(WebCore::Position::inlineRunAndOffset const):

  • editing/InlineRunAndOffset.h:
  • editing/RenderedPosition.cpp:

(WebCore::RenderedPosition::RenderedPosition):
(WebCore::RenderedPosition::previousLeafOnLine const):
(WebCore::RenderedPosition::nextLeafOnLine const):

  • editing/RenderedPosition.h:
  • editing/VisibleUnits.cpp:

(WebCore::isTextOrLineBreakRun):
(WebCore::previousTextOrLineBreakRun):
(WebCore::nextTextOrLineBreakRun):
(WebCore::startTextOrLineBreakRun):
(WebCore::endTextOrLineBreakRun):
(WebCore::logicallyPreviousRun):
(WebCore::logicallyNextRun):
(WebCore::visualWordPosition):

  • layout/integration/InlineIteratorBox.cpp:

(WebCore::InlineIterator::Box::nextOnLine const):
(WebCore::InlineIterator::Box::previousOnLine const):
(WebCore::InlineIterator::Box::nextOnLineIgnoringLineBreak const):
(WebCore::InlineIterator::Box::previousOnLineIgnoringLineBreak const):
(WebCore::InlineIterator::LeafBoxIterator::LeafBoxIterator):
(WebCore::InlineIterator::LeafBoxIterator::traverseNextOnLine):
(WebCore::InlineIterator::LeafBoxIterator::traversePreviousOnLine):
(WebCore::InlineIterator::LeafBoxIterator::traverseNextOnLineIgnoringLineBreak):
(WebCore::InlineIterator::LeafBoxIterator::traversePreviousOnLineIgnoringLineBreak):
(WebCore::InlineIterator::LeafBoxIterator::traverseNextOnLineInLogicalOrder):
(WebCore::InlineIterator::LeafBoxIterator::traversePreviousOnLineInLogicalOrder):
(WebCore::InlineIterator::boxFor):
(WebCore::InlineIterator::BoxIterator::traverseNextOnLine): Deleted.
(WebCore::InlineIterator::BoxIterator::traversePreviousOnLine): Deleted.
(WebCore::InlineIterator::BoxIterator::traverseNextOnLineIgnoringLineBreak): Deleted.
(WebCore::InlineIterator::BoxIterator::traversePreviousOnLineIgnoringLineBreak): Deleted.
(WebCore::InlineIterator::BoxIterator::traverseNextOnLineInLogicalOrder): Deleted.
(WebCore::InlineIterator::BoxIterator::traversePreviousOnLineInLogicalOrder): Deleted.

  • layout/integration/InlineIteratorBox.h:

(WebCore::InlineIterator::BoxIterator::BoxIterator):

  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::Line::firstRun const):
(WebCore::InlineIterator::Line::lastRun const):
(WebCore::InlineIterator::Line::logicalStartRun const):
(WebCore::InlineIterator::Line::logicalEndRun const):
(WebCore::InlineIterator::Line::logicalStartRunWithNode const):
(WebCore::InlineIterator::Line::logicalEndRunWithNode const):
(WebCore::InlineIterator::Line::closestRunForPoint const):
(WebCore::InlineIterator::Line::closestRunForLogicalLeftPosition const):
(WebCore::InlineIterator::Line::firstSelectedBox const):
(WebCore::InlineIterator::Line::lastSelectedBox const):

  • layout/integration/InlineIteratorLine.h:
  • layout/integration/InlineIteratorTextBox.cpp:

(WebCore::InlineIterator::TextBoxIterator::TextBoxIterator):

  • layout/integration/InlineIteratorTextBox.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::boxFor const):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

5:10 AM Changeset in webkit [283546] by Martin Robinson
  • 5 edits
    1 delete in trunk

[css-position-sticky] scrollIntoView should not take into account sticky positioning offsets
https://bugs.webkit.org/show_bug.cgi?id=230689

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-position/sticky/position-sticky-scrollIntoView-expected.txt: Update results to show newly

passing test.

Source/WebCore:

When calculating the location for absolute anchors rectangles,
do not take into account sticky offsets. This means that when
scrolling to elements that are stickily positioned, their static
positions will be targeted.

No new tests. This is covered by an existing WPT test.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::getLeadingCorner const): Do not take into account sticky position when calculating this point.
(WebCore::RenderElement::getTrailingCorner const): Ditto.

LayoutTests:

  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-position/sticky/position-sticky-scrollIntoView-expected.txt: Removed.
4:48 AM Changeset in webkit [283545] by youenn@apple.com
  • 7 edits in trunk/LayoutTests

Removing no longer needed flaky expectations from WebRTC tests
https://bugs.webkit.org/show_bug.cgi?id=231223

Unreviewed.

Update expectations based on results.webkit.org results.

  • TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
3:59 AM Changeset in webkit [283544] by ntim@apple.com
  • 5 edits in trunk/Source/WebCore

Replace document.topDocument().securityOrigin() with document.topOrigin()
https://bugs.webkit.org/show_bug.cgi?id=231221

Reviewed by Youenn Fablet.

No behaviour change, Document::topOrigin() is defined as:

SecurityOrigin& topOrigin() const final { return topDocument().securityOrigin(); }

  • dom/BroadcastChannel.cpp:

(WebCore::shouldPartitionOrigin):

  • dom/DocumentStorageAccess.cpp:

(WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck):
(WebCore::DocumentStorageAccess::hasStorageAccess):
(WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck):
(WebCore::DocumentStorageAccess::requestStorageAccess):

  • dom/Element.cpp:

(WebCore::Element::focus):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

2:54 AM Changeset in webkit [283543] by ntim@apple.com
  • 3 edits in trunk/Source/WebCore

Clean up shouldAutofocus in HTMLFormControlElement.cpp
https://bugs.webkit.org/show_bug.cgi?id=231220

Reviewed by Youenn Fablet.

No behaviour change.

Minor cleanups:

  • Make shouldAutofocus take const HTMLFormControlElement& instead of HTMLFormControlElement*
  • Clean up repeated calls to element->document()
  • Use topOrigin() instead topDocument().securityOrigin() (same thing, but shorter)
  • html/HTMLFormControlElement.cpp:

(WebCore::shouldAutofocus):
(WebCore::HTMLFormControlElement::didAttachRenderers):

  • html/HTMLFormControlElement.h:

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

1:36 AM Changeset in webkit [283542] by ntim@apple.com
  • 4 edits in trunk/LayoutTests

Remove unnecessary autofocus attribute dependencies in tests
https://bugs.webkit.org/show_bug.cgi?id=231219

Reviewed by Antti Koivisto.

The new autofocus behaviour timing happens asynchronously with the page "update rendering" steps.

Some tests are using it solely to focus synchronously on elements. We should just use HTMLElement.focus()
there so they don't rely on the current synchronous timing of autofocus.

  • fast/forms/number/number-placeholder-with-unacceptable-value-expected.html:
  • fast/forms/number/number-placeholder-with-unacceptable-value.html:
  • fast/forms/range/range-type-change-onchange.html:
12:20 AM Changeset in webkit [283541] by Cameron McCormack
  • 2 edits in trunk/Source/WTF

Enable 2D canvas color space support on Apple platforms
https://bugs.webkit.org/show_bug.cgi?id=231145
<rdar://82948394>

Reviewed by Simon Fraser.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
12:08 AM Changeset in webkit [283540] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Negative integers in @font-palette-values are invalid
https://bugs.webkit.org/show_bug.cgi?id=230788
<rdar://problem/83528806>

Unreviewed post-review cleanup.

  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::consumeFontPaletteValuesRule):

12:04 AM Changeset in webkit [283539] by mmaxfield@apple.com
  • 5 edits in trunk/LayoutTests/imported/w3c

Test a font palette identifier of just "--"
https://bugs.webkit.org/show_bug.cgi?id=230975
<rdar://problem/83681811>

Reviewed by Tim Horton.

It's a valid <dashed-ident>:
"The <dashed-ident> production is a <custom-ident>, with all the case-sensitivity
that implies, with the additional restriction that it must start with two dashes
(U+002D HYPHEN-MINUS)."

This is being upstreamed at https://github.com/web-platform-tests/wpt/pull/30963.

  • web-platform-tests/css/css-fonts/parsing/font-palette-valid-expected.txt:
  • web-platform-tests/css/css-fonts/parsing/font-palette-valid.html:
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-valid-expected.txt:
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html:
Note: See TracTimeline for information about the timeline view.