Timeline



Apr 21, 2022:

11:08 PM Changeset in webkit [293211] by commit-queue@webkit.org
  • 21 edits
    1 add in trunk

Use GCGLSpanTuple to pass buffer parameters to multidraw calls.
https://bugs.webkit.org/show_bug.cgi?id=239154

Patch by John Cunningham <johncunningham@apple.com> on 2022-04-21
Reviewed by Kimmo Kinnunen.

Source/WebCore:

  • html/canvas/WebGLMultiDraw.cpp:

(WebCore::WebGLMultiDraw::multiDrawArraysWEBGL):
(WebCore::WebGLMultiDraw::multiDrawArraysInstancedWEBGL):
(WebCore::WebGLMultiDraw::multiDrawElementsWEBGL):
(WebCore::WebGLMultiDraw::multiDrawElementsInstancedWEBGL):
(WebCore::makeSpanWithOffset): Deleted.

  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/GraphicsTypesGL.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLANGLE::multiDrawArraysANGLE):
(WebCore::GraphicsContextGLANGLE::multiDrawArraysInstancedANGLE):
(WebCore::GraphicsContextGLANGLE::multiDrawElementsANGLE):
(WebCore::GraphicsContextGLANGLE::multiDrawElementsInstancedANGLE):

  • platform/graphics/angle/GraphicsContextGLANGLE.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:

Source/WebKit:

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::WebCore::vectorCopyCast):
(WebKit::RemoteGraphicsContextGL::multiDrawArraysANGLE):
(WebKit::RemoteGraphicsContextGL::multiDrawArraysInstancedANGLE):
(WebKit::RemoteGraphicsContextGL::multiDrawElementsANGLE):
(WebKit::RemoteGraphicsContextGL::multiDrawElementsInstancedANGLE):

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • GPUProcess/graphics/RemoteGraphicsContextGLFunctionsGenerated.h:

(getInternalformativ):
(multiDrawArraysANGLE): Deleted.
(multiDrawArraysInstancedANGLE): Deleted.
(multiDrawElementsANGLE): Deleted.
(multiDrawElementsInstancedANGLE): Deleted.

  • Platform/IPC/ArgumentCoders.h:
  • Platform/IPC/ArrayReferenceTuple.h: Added.
  • Scripts/webkit/messages.py:

(class_template_headers):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::multiDrawArraysANGLE):
(WebKit::RemoteGraphicsContextGLProxy::multiDrawArraysInstancedANGLE):
(WebKit::RemoteGraphicsContextGLProxy::multiDrawElementsANGLE):
(WebKit::RemoteGraphicsContextGLProxy::multiDrawElementsInstancedANGLE):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp:

(WebKit::RemoteGraphicsContextGLProxy::multiDrawArraysANGLE): Deleted.
(WebKit::RemoteGraphicsContextGLProxy::multiDrawArraysInstancedANGLE): Deleted.
(WebKit::RemoteGraphicsContextGLProxy::multiDrawElementsANGLE): Deleted.
(WebKit::RemoteGraphicsContextGLProxy::multiDrawElementsInstancedANGLE): Deleted.

Tools:

  • Scripts/generate-gpup-webgl:
10:41 PM Changeset in webkit [293210] by ysuzuki@apple.com
  • 27 edits
    2 adds in trunk

[JSC] PropertyTable should have compact mode
https://bugs.webkit.org/show_bug.cgi?id=239451

Reviewed by Saam Barati.

This patch introduces "compact" version of PropertyTable. PropertyTable needs to hold two kind of integers: index and property offset.
But for most of objects, both are pretty small and they can fit in uint8_t. If we can use uint8_t for both, we can significantly reduce
size of allocated memory for PropertyTable (only 40% of memory is required!). This is good for memory, but also good for performance.
Now each CompactPropertyTableEntry is 8bytes while original PropertyMapEntry was 16bytes, so CompactPropertyTableEntry can fit in CPU cache well.
Also, not allocating large amount of memory can reduce memory allocation / deallocation cost. One of costly destruction of GC-managed objects is
PropertyTable (and CodeBlock), and we can reduce that cost by not allocating much memory.

The approach is following.

  1. For index vector, we use uint8_t if index can fit within uint8_t.
  2. For proprety offset, we use uint8_t and CompactPropertyTableEntry if it is suitable.
  3. Once the table gets non-compact, we keep it non-compact since we could have deleted index which has larger than uint8_t. We could improve this strategy when deleted indexes are cleared, but for now, we are taking simple approach.
  4. We store isCompactFlag 1 bit in the pointer to the table.
  5. We encapsulate functions modifying property table entry in PropertyTable itself, so we do not leak internal compact / non-compact mode to the user of PropertyTable. We remove begin() / end() iterators and instead use forEachproperty, which can implement iteration for each mode more efficiently.

We have a further opportunity to improve this further: we can deploy 75% load factor only for compact table. Then we can increase threshold of
compact table further and keep more and more tables compact mode. Plus, for small sized tables, small backing memory is better in terms of
CPU cache hit (and that's measured in WTF::HashTable, and that's why WTF::Hashtable deploys 75% load factor only for small tables). This is left
for the subsequent change.

This change is neutral in JetStream2, 0.3% improvement in Speedometer2 with 80% confidence, and 0.41% improvement in RAMification with 95% confidence.

  • JSTests/stress/change-attribute-structure-transition.js:

(shouldBe.JSON.stringify.sd):

  • Source/JavaScriptCore/bytecode/ObjectAllocationProfileInlines.h:

(JSC::ObjectAllocationProfileBase<Derived>::initializeProfile):

  • Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • Source/JavaScriptCore/dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:
  • Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:

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

  • Source/JavaScriptCore/ftl/FTLOperations.cpp:

(JSC::FTL::JSC_DEFINE_JIT_OPERATION):

  • Source/JavaScriptCore/runtime/ClonedArguments.h:
  • Source/JavaScriptCore/runtime/IteratorOperations.cpp:

(JSC::createIteratorResultObjectStructure):

  • Source/JavaScriptCore/runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • Source/JavaScriptCore/runtime/JSONObject.cpp:

(JSC::Stringifier::Holder::appendNextProperty):

  • Source/JavaScriptCore/runtime/JSObject.cpp:

(JSC::JSObject::analyzeHeap):

  • Source/JavaScriptCore/runtime/JSObject.h:
  • Source/JavaScriptCore/runtime/ObjectConstructor.h:

(JSC::constructEmptyObject):
(JSC::createDataPropertyDescriptorObjectStructure):
(JSC::createAccessorPropertyDescriptorObjectStructure):

  • Source/JavaScriptCore/runtime/ObjectConstructorInlines.h:

(JSC::objectAssignFast):

  • Source/JavaScriptCore/runtime/PropertyOffset.h:
  • Source/JavaScriptCore/runtime/PropertySlot.h:
  • Source/JavaScriptCore/runtime/PropertyTable.cpp:

(JSC::PropertyTable::PropertyTable):
(JSC::PropertyTable::finishCreation):
(JSC::PropertyTable::visitChildrenImpl):
(JSC::PropertyTable::~PropertyTable):
(JSC::PropertyTable::seal):
(JSC::PropertyTable::freeze):
(JSC::PropertyTable::isSealed const):
(JSC::PropertyTable::isFrozen const):
(JSC::PropertyTable::renumberPropertyOffsets):

  • Source/JavaScriptCore/runtime/PropertyTable.h:

(JSC::isPowerOf2):
(JSC::nextPowerOf2):
(JSC::PropertyTable::findImpl):
(JSC::PropertyTable::find):
(JSC::PropertyTable::get):
(JSC::PropertyTable::add):
(JSC::PropertyTable::remove):
(JSC::PropertyTable::take):
(JSC::PropertyTable::updateAttributeIfExists):
(JSC::PropertyTable::sizeInMemory):
(JSC::PropertyTable::reinsert):
(JSC::PropertyTable::rehash):
(JSC::PropertyTable::skipDeletedEntries):
(JSC::PropertyTable::dataSize):
(JSC::PropertyTable::canInsert):
(JSC::PropertyTable::forEachProperty const):
(JSC::PropertyTable::forEachPropertyMutable):
(JSC::PropertyTable::begin): Deleted.
(JSC::PropertyTable::end): Deleted.
(JSC::PropertyTable::begin const): Deleted.
(JSC::PropertyTable::end const): Deleted.
(JSC::PropertyTable::table): Deleted.
(JSC::PropertyTable::table const): Deleted.

  • Source/JavaScriptCore/runtime/RegExpMatchesArray.h:
  • Source/JavaScriptCore/runtime/Structure.cpp:

(JSC::Structure::dumpStatistics):
(JSC::Structure::Structure):
(JSC::Structure::materializePropertyTable):
(JSC::Structure::nonPropertyTransitionSlow):
(JSC::Structure::isSealed):
(JSC::Structure::isFrozen):
(JSC::Structure::flattenDictionaryStructure):
(JSC::PropertyTableStatisticsExitLogger::~PropertyTableStatisticsExitLogger):
(JSC::Structure::getConcurrently):
(JSC::Structure::getPropertiesConcurrently):
(JSC::Structure::getPropertyNamesFromStructure):
(JSC::Structure::toStructureShape):
(JSC::Structure::dump const):

  • Source/JavaScriptCore/runtime/Structure.h:

(JSC::CompactPropertyTableEntry::CompactPropertyTableEntry):
(JSC::CompactPropertyTableEntry::key const):
(JSC::CompactPropertyTableEntry::setKey):
(JSC::CompactPropertyTableEntry::offset const):
(JSC::CompactPropertyTableEntry::setOffset):
(JSC::CompactPropertyTableEntry::attributes const):
(JSC::CompactPropertyTableEntry::setAttributes):
(JSC::PropertyTableEntry::PropertyTableEntry):
(JSC::PropertyTableEntry::key const):
(JSC::PropertyTableEntry::setKey):
(JSC::PropertyTableEntry::offset const):
(JSC::PropertyTableEntry::setOffset):
(JSC::PropertyTableEntry::attributes const):
(JSC::PropertyTableEntry::setAttributes):
(JSC::PropertyMapEntry::PropertyMapEntry): Deleted.

  • Source/JavaScriptCore/runtime/StructureInlines.h:

(JSC::Structure::get):
(JSC::Structure::forEachPropertyConcurrently):
(JSC::Structure::forEachProperty):
(JSC::Structure::add):
(JSC::Structure::remove):
(JSC::Structure::attributeChange):

Canonical link: https://commits.webkit.org/249881@main

10:35 PM Changeset in webkit [293209] by commit-queue@webkit.org
  • 4 edits
    4 adds in trunk

contain: layout on the html element should change position:fixed behavior
https://bugs.webkit.org/show_bug.cgi?id=238560

Patch by Rob Buis <rbuis@igalia.com> on 2022-04-21
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-contain/contain-layout-021-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-layout-021.html: Added.
  • web-platform-tests/css/css-contain/reference/contain-layout-021-ref.html: Added.

Source/WebCore:

The mapLocalToContainer/mapAbsoluteToLocalPoint methods need to not only consider boxes
having transforms but need to include all checks in canContainFixedPositionObjects to
determine if the box acts as a fixed position containing block.

Tests: imported/w3c/web-platform-tests/css/css-contain/contain-layout-021.html

imported/w3c/web-platform-tests/css/css-contain/reference/contain-layout-021-ref.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::mapLocalToContainer const):
(WebCore::RenderBox::mapAbsoluteToLocalPoint const):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::mapLocalToContainer const):

10:21 PM Changeset in webkit [293208] by Chris Dumez
  • 5 edits
    2 adds in trunk

No-op, instead of throwing, on dataTransfer.items.remove()
https://bugs.webkit.org/show_bug.cgi?id=239618

Reviewed by Wenson Hsieh.

LayoutTests/imported/w3c:

Import test coverage from upstream WPT.

  • web-platform-tests/html/editing/dnd/datastore/datatransferitemlist-remove-expected.txt: Added.
  • web-platform-tests/html/editing/dnd/datastore/datatransferitemlist-remove.html: Added.

Source/WebCore:

Calling dataTransfer.items.remove() with an out-of-range index should be a no-op instead of
throwing as per the latest HTML specification:

We were the only browser behaving this way so this was a compatibility risk.

Test: imported/w3c/web-platform-tests/html/editing/dnd/datastore/datatransferitemlist-remove.html

  • dom/DataTransferItemList.cpp:

(WebCore::DataTransferItemList::remove):

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

[PGO] Fix perl warnings cause by PGO for real this time.
https://bugs.webkit.org/show_bug.cgi?id=239633

Reviewed by Yusuke Suzuki.

Add a missing 'defined' check before reading the PGO environment variable.

  • Tools/Scripts/check-for-weak-vtables-and-externals:

Canonical link: https://commits.webkit.org/249878@main

8:27 PM Changeset in webkit [293206] by Andres Gonzalez
  • 9 edits in trunk/LayoutTests

AX ITM: Fix for multiple flaky tests in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=239583
<rdar://problem/92064483>

Reviewed by Chris Fleizach.

Rewrote these flaky tests so that now pass in isolated tree mode:

  • Use expect() instead of shouldBe*() and log the output at the end of

the test.

  • Avoid setting focus to an element just to get the accessible element.
  • accessibility/legend-children-are-visible-expected.txt:
  • accessibility/legend-children-are-visible.html:
  • accessibility/mac/aria-label-overrides-visible-text-expected.txt:
  • accessibility/mac/aria-label-overrides-visible-text.html:
  • accessibility/mac/aria-popup-buttons-on-native-elements-expected.txt:
  • accessibility/mac/aria-popup-buttons-on-native-elements.html:
  • accessibility/mac/link-with-title-expected.txt:
  • accessibility/mac/link-with-title.html:
7:48 PM Changeset in webkit [293205] by Brent Fulgham
  • 4 edits in trunk/Source/WebKitLegacy/win

Unreviewed build fix after r293199.
https://bugs.webkit.org/show_bug.cgi?id=239628

Remove unused references to XSS Auditor.

  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::isXSSAuditorEnabled):
(WebPreferences::setXSSAuditorEnabled):

  • WebView.cpp:

(WebView::notifyPreferencesChanged):

6:21 PM Changeset in webkit [293204] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS wk2 arm64 ] media/modern-media-controls/tracks-support/text-track-selected-via-media-api.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=239634

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249875@main

5:51 PM Changeset in webkit [293203] by ysuzuki@apple.com
  • 12 edits
    2 deletes in trunk/Source/JavaScriptCore

[JSC] Remove TempRegisterSet
https://bugs.webkit.org/show_bug.cgi?id=239578

Reviewed by Mark Lam.

We can always use RegisterSet. TempRegisterSet can save several bytes, but we have no code using TempRegisterSet in
heap-allocated classes. So, this does not make sense anymore. Instead of TempRegisterSet, we will consistently use
RegisterSet to pass register info and ScratchRegisterAllocator to manage allocation of temp / scratch registers.

We also remove the copyCalleeSavesToEntryFrameCalleeSavesBuffer function which takes no scratch register. It was
using TempRegisterSet to allocate a scratch register, but the caller of this function was making assumptions on how
TempRegisterSet will allocate that scratch. This is very fragile and dangerous. We should explicitly pass a scratch
register instead in that case.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::lower):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer): Deleted.

  • jit/RegisterSet.h:
  • jit/ScratchRegisterAllocator.cpp:

(JSC::ScratchRegisterAllocator::lock):
(JSC::ScratchRegisterAllocator::allocateScratch):
(JSC::ScratchRegisterAllocator::preserveReusedRegistersByPushing):
(JSC::ScratchRegisterAllocator::restoreReusedRegistersByPopping):

  • jit/ScratchRegisterAllocator.h:
  • jit/TempRegisterSet.cpp: Removed.
  • jit/TempRegisterSet.h: Removed.
  • jit/ThunkGenerators.cpp:

(JSC::handleExceptionGenerator):
(JSC::handleExceptionWithCallFrameRollbackGenerator):
(JSC::throwExceptionFromCallSlowPathGenerator):
(JSC::nativeForGenerator):
(JSC::boundFunctionCallGenerator):
(JSC::remoteFunctionCallGenerator):

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

5:17 PM Changeset in webkit [293202] by ysuzuki@apple.com
  • 24 edits in trunk

[WTF] Add string concatenate adapter for UUID
https://bugs.webkit.org/show_bug.cgi?id=239590

Reviewed by Chris Dumez and Darin Adler.

This patch adds string concatenate adapter for UUID.
UUID's stringifier consists of multiple string concatenate adapters.
This patch adds WTF::handleWithAdapters so that we can define adapters
once, and we can semi-automatically define length() and writeTo method for UUID.

And we use UUID + makeString instead of createVersion4UUIDString. This is more
efficient since we do not need to allocate string twice.

  • Source/WTF/wtf/UUID.cpp:

(WTF::UUID::generateWeakRandomUUIDVersion4):
(WTF::createVersion4UUIDString):
(WTF::generateWeakRandomUUIDVersion4): Deleted.
(WTF::UUID::toString const): Deleted.
(WTF::createVersion4UUIDStringWeak): Deleted.

  • Source/WTF/wtf/UUID.h:

(WTF::UUID::createVersion4Weak):
(WTF::UUID::isHashTableDeletedValue const):
(WTF::UUID::data const):
(WTF::StringTypeAdapter<UUID>::StringTypeAdapter):
(WTF::StringTypeAdapter<UUID>::length const):
(WTF::StringTypeAdapter<UUID>::is8Bit const):
(WTF::StringTypeAdapter<UUID>::writeTo const):

  • Source/WebCore/animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::copyPropertiesFromSource):
(WebCore::KeyframeEffect::updateBlendingKeyframes):
(WebCore::KeyframeEffect::computeCSSTransitionBlendingKeyframes):

  • Tools/TestWebKitAPI/Tests/WTF/UUID.cpp:

(TEST):

Canonical link: https://commits.webkit.org/249873@main

5:09 PM Changeset in webkit [293201] by Alan Coon
  • 1 copy in tags/WebKit-7613.2.7

Tag WebKit-7613.2.7.

5:09 PM Changeset in webkit [293200] by Alan Coon
  • 1 delete in tags/WebKit-7613.2.7

Delete tag.

5:05 PM Changeset in webkit [293199] by Brent Fulgham
  • 4 edits in trunk/Source

Remove XSS Auditor: Part 4 (Settings)
https://bugs.webkit.org/show_bug.cgi?id=239628

Reviewed by Alex Christensen.

This change is a follow-up to Bug 230661 that removes the unused
Source/WebKitLegacy/mac:

WebKitXSSAuditorEnabledPreferenceKey.

  • WebView/WebPreferenceKeysPrivate.h:

Source/WTF:

WebPreferences.yaml content.

  • Scripts/Preferences/WebPreferences.yaml:
5:02 PM Changeset in webkit [293198] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r292095. rdar://problem/90240658

Ensure m_layerRulesBeforeImportRules is properly copied during StyleSheetContents instantiation
https://bugs.webkit.org/show_bug.cgi?id=238537

Reviewed by Antti Koivisto.

During the instantiation of the StyleSheetContents the m_layerRulesBeforeImportRules was not being
properly copied.

  • css/StyleSheetContents.cpp: (WebCore::StyleSheetContents::StyleSheetContents):

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

5:01 PM Changeset in webkit [293197] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Simplify FrameSelection::textWasReplaced() and callers
https://bugs.webkit.org/show_bug.cgi?id=239620

Reviewed by Geoffrey Garen.

  • dom/CharacterData.cpp:

(WebCore::CharacterData::setData):

  • Cache document().frame()
  • Call textWasReplaced() with *this instead of this
  • Use modern template deduction for Ref<>.

(WebCore::CharacterData::setDataAndUpdate):

  • Use WTFMove() for m_data to avoid ref-counting churn. We're about to overwrite m_data anyway.
  • Use else if for the ProcessingInstruction branch instead of if to avoid this check in the common case where |this| is a Text node. A Text node cannot be a ProcessingInstruction node.
  • Cache document().frame()
  • Call textWasReplaced() with *this instead of this
  • editing/FrameSelection.cpp:

(WebCore::updatePositionAfterAdoptingTextReplacement):

  • Pass node by reference now that the caller now has a reference instead of a pointer
  • Drop !position.anchorNode() check. It is not necessary as the position.anchorNode() != &node check would already be true if the anchorNode were null.

(WebCore::FrameSelection::textWasReplaced):

  • Drop outdated comment about a fragment check since there is no such check anymore
  • Pass node by reference instead of pointer as all call sites have a non-null pointer
  • Drop null check for node that is no longer necessary
  • editing/FrameSelection.h:
4:55 PM Changeset in webkit [293196] by Russell Epstein
  • 1 copy in tags/WebKit-7613.2.7

Tag WebKit-7613.2.7.

4:27 PM Changeset in webkit [293195] by Chris Dumez
  • 85 edits in trunk/Source

Adopt RobinHoodHashMap / RobinHoodHashSet more broadly in WebCore
https://bugs.webkit.org/show_bug.cgi?id=239576

Reviewed by Yusuke Suzuki.

Source/WebCore:

Adopt RobinHoodHashMap / RobinHoodHashSet more broadly in WebCore to avoid wasting memory in hash tables.
RobinHoodHashMap / RobinHoodHashSet have more restrictions on what key types they work with and may result
in slightly lower performance but they have a much higher load factor that the regular HashMap / HashSet,
thus reducing memory usage. This patch adopts RobinHoodHashMap / RobinHoodHashSet on non performance
sensitive maps / sets in WebCore that have compatible keys (String / AtomString / URL because they cache
their hash).

This is perf-neutral on all our benchmarks according to A/B testing.

  • Modules/encryptedmedia/InitDataRegistry.h:
  • Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.h:
  • Modules/indexeddb/server/SQLiteIDBTransaction.h:
  • Modules/mediasource/MediaSourceRegistry.h:
  • Modules/mediastream/MediaDevices.h:
  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
  • Modules/web-locks/WebLockRegistry.cpp:
  • Modules/webaudio/AudioWorkletGlobalScope.h:
  • Modules/webaudio/AudioWorkletNode.h:
  • Modules/webaudio/AudioWorkletProcessor.cpp:

(WebCore::constructFrozenKeyValueObject):
(WebCore::copyDataFromParameterMapToJSObject):
(WebCore::AudioWorkletProcessor::buildJSArguments):
(WebCore::AudioWorkletProcessor::process):

  • Modules/webaudio/AudioWorkletProcessor.h:
  • Modules/webaudio/BaseAudioContext.h:

(WebCore::BaseAudioContext::parameterDescriptorMap const):

  • Modules/webdatabase/Database.cpp:

(WebCore::WTF_REQUIRES_LOCK):

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::recordDeletingDatabase):

  • Modules/webdatabase/DatabaseTracker.h:
  • bindings/js/JSCustomElementInterface.h:
  • bindings/js/ScriptModuleLoader.h:
  • dom/CustomElementRegistry.h:

(WebCore::CustomElementRegistry::promiseMap):

  • dom/ExtensionStyleSheets.h:
  • dom/MutationObserver.cpp:

(WebCore::MutationObserver::observe):

  • dom/MutationObserverRegistration.cpp:

(WebCore::MutationObserverRegistration::MutationObserverRegistration):
(WebCore::MutationObserverRegistration::resetObservation):

  • dom/MutationObserverRegistration.h:
  • dom/Node.cpp:

(WebCore::Node::registerMutationObserver):

  • dom/Node.h:
  • dom/WindowEventLoop.cpp:
  • editing/Editor.h:
  • inspector/InspectorAuditResourcesObject.h:
  • inspector/NetworkResourcesData.cpp:

(WebCore::NetworkResourcesData::clear):

  • inspector/NetworkResourcesData.h:
  • inspector/agents/InspectorAnimationAgent.h:
  • inspector/agents/InspectorCanvasAgent.h:
  • inspector/agents/InspectorDOMDebuggerAgent.h:
  • inspector/agents/InspectorDatabaseAgent.h:
  • inspector/agents/InspectorNetworkAgent.h:
  • inspector/agents/InspectorPageAgent.h:
  • inspector/agents/InspectorWorkerAgent.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::setActiveContentRuleListActionPatterns):

  • loader/DocumentLoader.h:
  • loader/cache/CachedResourceLoader.h:
  • page/Page.h:
  • page/PageConfiguration.h:
  • page/csp/ContentSecurityPolicyMediaListDirective.h:
  • page/csp/ContentSecurityPolicySourceList.h:
  • platform/LegacySchemeRegistry.cpp:

(WebCore::WTF_REQUIRES_LOCK):

  • platform/StaticPasteboard.h:
  • platform/graphics/SourceBufferPrivate.h:
  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::updateTracksOfKind):

  • platform/graphics/cg/UTIRegistry.cpp:

(WebCore::additionalSupportedImageTypes):

  • platform/graphics/cg/UTIRegistry.h:
  • platform/graphics/cocoa/FontCacheCoreText.cpp:
  • platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:

(WebCore::genericFamily):

  • platform/graphics/cocoa/SystemFontDatabaseCoreText.h:
  • platform/mac/ThreadCheck.mm:

(WebCoreReportThreadViolation):

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/network/BlobRegistryImpl.h:
  • platform/network/CredentialStorage.h:
  • platform/network/NetworkStorageSession.h:
  • rendering/ReferencedSVGResources.h:
  • svg/SVGDocumentExtensions.h:
  • workers/Worker.h:
  • workers/WorkerGlobalScope.h:
  • workers/service/ServiceWorkerContextData.h:

(WebCore::ServiceWorkerContextData::decode):

  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::stripScriptSources):
(WebCore::populateScriptSourcesFromDisk):
(WebCore::RegistrationDatabase::doPushChanges):
(WebCore::RegistrationDatabase::importRecords):

  • workers/service/server/RegistrationStore.cpp:

(WebCore::RegistrationStore::didSaveWorkerScriptsToDisk):

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

(WebCore::SWServer::didSaveWorkerScriptsToDisk):
(WebCore::SWServer::updateWorker):
(WebCore::SWServer::installContextData):

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

(WebCore::SWServerWorker::SWServerWorker):
(WebCore::SWServerWorker::didSaveScriptsToDisk):

  • workers/service/server/SWServerWorker.h:

Source/WebKit:

Adopt RobinHoodHashMap / RobinHoodHashSet more broadly in WebKit to avoid wasting memory in hash tables.
RobinHoodHashMap / RobinHoodHashSet have more restrictions on what key types they work with and may result
in slightly lower performance but they have a much higher load factor that the regular HashMap / HashSet,
thus reducing memory usage. This patch adopts RobinHoodHashMap / RobinHoodHashSet on non performance
sensitive maps / sets in WebCore that have compatible keys (String / AtomString / URL because they cache
their hash).

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:

(WebKit::WebSWServerToContextConnection::didSaveScriptsToDisk):

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/API/APIPageConfiguration.h:

(API::PageConfiguration::allowedNetworkHosts const):
(API::PageConfiguration::setAllowedNetworkHosts):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _setLoadsFromNetwork:]):
(-[WKWebViewConfiguration _setAllowedNetworkHosts:]):

Source/WTF:

Allow using RobinHoodHashMap / RobinHoodHashSet with URL keys since a URL wraps a String
and uses its internal String's cached hash as hash.

  • wtf/URLHash.h:
4:11 PM Changeset in webkit [293194] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS wk2 arm64 ] fast/scrolling/mac/adjust-scroll-snap-during-gesture.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=239627

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249869@main

3:56 PM Changeset in webkit [293193] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ iOS 15.4 ] imported/w3c/web-platform-tests/css/css-color/opacity-overlapping-letters.html is failing
https://bugs.webkit.org/show_bug.cgi?id=239625

Unreviewed test gardening.

  • LayoutTests/platform/ios/TestExpectations:

Canonical link: https://commits.webkit.org/249868@main

3:31 PM Changeset in webkit [293192] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS wk2 arm64 ] REGRESSION (r242313): Layout Test scrollingcoordinator/mac/multiple-fixed.html is a flaky time out and image diff
https://bugs.webkit.org/show_bug.cgi?id=195635

Unreviewed test gardening.

Adding new test expectation.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249867@main

3:07 PM Changeset in webkit [293191] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Build is broken on shipping macOS due to TBA annotations replacement in API headers
https://bugs.webkit.org/show_bug.cgi?id=239623

Unreviewed, bump versions in WebKit.xcconfig too to disable TBA annotation replacement on shipping OS
so that we don't get warnings about API not yet being available.

  • Configurations/WebKit.xcconfig:
3:07 PM Changeset in webkit [293190] by Russell Epstein
  • 1 copy in tags/WebKit-7614.1.10.5

Tag WebKit-7614.1.10.5.

2:46 PM Changeset in webkit [293189] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements: Layout: hovering over a node should highlight it in the page
https://bugs.webkit.org/show_bug.cgi?id=239621

Reviewed by Patrick Angle.

  • UserInterface/Views/NodeOverlayListSection.js:

(WI.NodeOverlayListSection.prototype.layout):
Use the existing WI.linkifyNodeReference to create the UI for the WI.DOMNode.

  • UserInterface/Base/DOMUtilities.js:

(WI.linkifyNodeReferenceElement):
Don't style the UI as a link if clicking it doesn't do anything.

2:03 PM Changeset in webkit [293188] by Simon Fraser
  • 4 edits in trunk

<body> with overflow:hidden CSS is scrollable on iOS standalone web app
https://bugs.webkit.org/show_bug.cgi?id=220908
<rdar://73574797>

Reviewed by Devin Rousso.

Source/WebKit:

overflow:hidden failed to make the primary scroll view unscrollable in a home screen web
app because of logic in _updateScrollViewForTransaction: that was intended to ensure that if
the current unobscured rect is equal to the max unobscured rect (i.e. testing for collapsed
UI in MobileSafari), the user could scroll to expand the UI.

This failed in Web.app because there is no collapsible UI there, i.e.
minUnobscuredSize == maxUnobscuredSize. So test for that scenario.

Tested by new API tests.

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _updateScrollViewForTransaction:]):

Tools:

New API tests for various configurations of insets and size overrides.

  • TestWebKitAPI/Tests/ios/ScrollViewInsetTests.mm:

(TestWebKitAPI::TEST):

1:57 PM Changeset in webkit [293187] by Jonathan Bedard
  • 10 edits in trunk/Tools

[git-webkit] Allow caller to specify remote for PR
https://bugs.webkit.org/show_bug.cgi?id=239452
<rdar://problem/91897384>

Reviewed by Dewei Zhu.

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

(Git.init): Allow caller to define remotes.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py:

(PullRequest.parser): Add '--remote' option.
(PullRequest.main): Allow options to specify the remote we're making a PR against.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/revert.py:

(Revert.add_comment_to_reverted_commit_bug_tracker): Derive remote from argument.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.PRGenerator.find): Support finding PRs if label doesn't contain username.
(GitHub.PRGenerator.create): Error 422 is a validation error, usually caused by another PR pointing to the same branch.
(GitHub.PRGenerator.update): Extract error message for more actionable errors.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/clean_unittest.py:

(TestClean.test_clean_pr): Add fork remote.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py:
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/revert_unittest.py:

Canonical link: https://commits.webkit.org/249863@main

1:51 PM Changeset in webkit [293186] by Tyler Wilcock
  • 2 edits in trunk/Source/WebCore

Only AXIsolatedTree::update{Children,Node} once when processing notifications in AXObjectCache::updateIsolatedTree
https://bugs.webkit.org/show_bug.cgi?id=239499

Reviewed by Andres Gonzalez.

Currently, we do try to prevent performing duplicate updates, but we do so only
if we have an exact match for a previous notification for any given object.
However, multiple notifications trigger AXIsolatedTree::updateNode and children,
so we'll still duplicate work if we get multiple notifications in the same group.
For example, before this patch, if the same object got both an AXValueChanged and
AXTextChanged notification, we'd call AXIsolatedTree::updateNode twice.

With this patch, we instead keep track of whether or not we've
performed a node or children update for each object to prevent
duplicate work.

No new tests because there is no behavior change.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::updateIsolatedTree):
(WebCore::appendIfNotContainsMatching): Deleted.

1:48 PM Changeset in webkit [293185] by Russell Epstein
  • 9 edits in branches/safari-614.1.10-branch/Source

Versioning.

WebKit-7614.1.10.5

1:40 PM Changeset in webkit [293184] by Russell Epstein
  • 1 copy in tags/WebKit-7614.1.10.4

Tag WebKit-7614.1.10.4.

1:33 PM Changeset in webkit [293183] by Matteo Flores
  • 2 edits in trunk/LayoutTests

Implement ElementInternals

https://bugs.webkit.org/show_bug.cgi?id=197960

Unreviewed test gardening.

  • LayoutTests/platform/ipad/TestExpectations:

Canonical link: https://commits.webkit.org/249861@main

1:11 PM Changeset in webkit [293182] by Russell Epstein
  • 1 edit in branches/safari-613-branch/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm

Unreviewed build fix. rdar://91584856

WebPageProxyIOS.mm:572:31: error: use of undeclared identifier 'createVersion4UUIDString'; did you mean 'createVersion4UUIDStringWeak'?

1:11 PM Changeset in webkit [293181] by Russell Epstein
  • 1 edit in branches/safari-613-branch/Source/WebKit/WebProcess/WebPage/WebPage.messages.in

Unreviewed build fix. rdar://72058321

DerivedSources/WebKit/WebPageMessageReceiver.cpp:4038:99: error: indirection requires pointer operand ('UniqueRef<IPC::Encoder>' invalid)

return IPC::handleMessage<Messages::WebPage::PerformActionOnElement>(connection, decoder, *replyEncoder, this, &WebPage::performActionOnElement);


1:11 PM Changeset in webkit [293180] by Russell Epstein
  • 8 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r291371. rdar://problem/72058321

1:11 PM Changeset in webkit [293179] by Russell Epstein
  • 8 edits in branches/safari-613-branch/Source/WebKit

Revert r291371. rdar://problem/72058321

This reverts r293069.

10:51 AM Changeset in webkit [293178] by Devin Rousso
  • 23 edits in trunk/Source/WebInspectorUI

Web Inspector: add reference page links for the Timelines Tab
https://bugs.webkit.org/show_bug.cgi?id=239580

Reviewed by Patrick Angle.

  • UserInterface/Views/TimelineView.js:

(WI.TimelineView.prototype.initialLayout): Added.

  • UserInterface/Views/TimelineView.css:

(.timeline-view > .reference-page-link-container): Added.
Add a reference page link to the bottom-right of each timeline view.

  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView.prototype.initialLayout):

  • UserInterface/Views/HeapAllocationsTimelineView.js:
  • UserInterface/Views/LayoutTimelineView.js:
  • UserInterface/Views/MediaTimelineView.js:
  • UserInterface/Views/MemoryTimelineView.js:
  • UserInterface/Views/NetworkTimelineView.js:
  • UserInterface/Views/OverviewTimelineView.js:
  • UserInterface/Views/RenderingFrameTimelineView.js:
  • UserInterface/Views/ScriptDetailsTimelineView.js:
  • UserInterface/Views/ScriptProfileTimelineView.js:

Add WI.*.ReferencePage = WI.ReferencePage.* relationships for each timeline view.

  • UserInterface/Base/ReferencePage.js:

(WI.ReferencePage): Added.
(WI.ReferencePage.prototype.get page): Added.
(WI.ReferencePage.prototype.get topic): Added.
(WI.ReferencePage.prototype.createLinkElement): Added.

  • UserInterface/Base/Main.js:

(WI.createReferencePageLink): Moved to WI.ReferencePage.prototype.createLinkElement.
Create a WI.ReferencePage class that knows how to generate a <a>.

  • UserInterface/Views/AuditNavigationSidebarPanel.js:

(WI.AuditNavigationSidebarPanel.prototype.showDefaultContentView):

  • UserInterface/Views/AuditTestCaseContentView.js:

(WI.AuditTestCaseContentView.prototype.showRunningPlaceholder):

  • UserInterface/Views/AuditTestContentView.js:

(WI.AuditTestContentView.prototype.showStoppingPlaceholder):
(WI.AuditTestContentView.prototype.showNoResultPlaceholder):
(WI.AuditTestContentView.prototype.showNoResultDataPlaceholder):
(WI.AuditTestContentView.prototype.showFilteredPlaceholder):

  • UserInterface/Views/AuditTestGroupContentView.js:

(WI.AuditTestGroupContentView.prototype.showRunningPlaceholder):

  • UserInterface/Views/BreakpointPopover.js:

(WI.BreakpointPopover.prototype.show):

  • UserInterface/Views/CreateAuditPopover.js:

(WI.CreateAuditPopover.prototype.show):

  • UserInterface/Views/Layers3DContentView.js:

(WI.Layers3DContentView.prototype.initialLayout):

  • UserInterface/Views/LocalResourceOverridePopover.js:

(WI.LocalResourceOverridePopover.prototype.show):
Replace WI.createReferencePageLink with WI.ReferencePage.*.createLinkElement

10:43 AM Changeset in webkit [293177] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GBM] Debug build broken
https://bugs.webkit.org/show_bug.cgi?id=239609

Patch by Philippe Normand <pnormand@igalia.com> on 2022-04-21
Reviewed by Adrian Perez de Castro.

  • platform/graphics/gbm/GraphicsContextGLGBM.cpp: Include Logging.h enabling use of logging facilities.

Canonical link: https://commits.webkit.org/249859@main

10:32 AM Changeset in webkit [293176] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk/Source/JavaScriptCore

Unreviewed, reverting r293146.
https://bugs.webkit.org/show_bug.cgi?id=239613

Broke JSC tests. Looks like EWS was blocked by label
<https://bugs.webkit.org/show_bug.cgi?id=239411>

Reverted changeset:

"[JSC] Remove TempRegisterSet"
https://bugs.webkit.org/show_bug.cgi?id=239578
https://commits.webkit.org/r293146

10:16 AM Changeset in webkit [293175] by zhifei_fang@apple.com
  • 6 edits
    2 adds in trunk

[git-webkit] Add revert command (237663)
https://bugs.webkit.org/show_bug.cgi?id=237663
rdar://90039948

Reviewed by Jonathan Bedard.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py: Break the pull request creation into serval differnt funtions so that other action can reuse it easily.

(PullRequest):
(PullRequest.check_pull_request_args):
(PullRequest.pull_request_branch_point):
(PullRequest.create_pull_request):
(PullRequest.main):

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/revert.py: Added.

(Revert):
(Revert.parser):
(Revert.revert_commit):
(Revert.main):

Canonical link: https://commits.webkit.org/249857@main

10:10 AM Changeset in webkit [293174] by Jonathan Bedard
  • 3 edits in trunk/Tools

[Merge-Queue] Don't close bugs associated with test gardening
https://bugs.webkit.org/show_bug.cgi?id=239604
<rdar://problem/92093456>

Reviewed by Ryan Haddad.

  • Tools/CISupport/ews-build/steps.py:

(CloseBug.doStepIf): Skip step if we're a test gardening change.
(UpdatePullRequest):
(UpdatePullRequest.is_test_gardening): Check for "Unreviewed test gardening" in the commit message.
(UpdatePullRequest.evaluateCommand):

  • Tools/CISupport/ews-build/steps_unittest.py:

Canonical link: https://commits.webkit.org/249856@main

9:55 AM Changeset in webkit [293173] by youenn@apple.com
  • 9 edits in trunk

A suspended remote shared worker should resume when a new SharedWorker is added
https://bugs.webkit.org/show_bug.cgi?id=239325

Reviewed by Chris Dumez.

Source/WebKit:

Check whether resuming/suspending remote shared worker in case of added/removed SharedWorker object.
Make sure to suspend the remote shared worker at launch time if needed.

Covered by updated test.

  • NetworkProcess/SharedWorker/WebSharedWorker.cpp:
  • NetworkProcess/SharedWorker/WebSharedWorker.h:
  • NetworkProcess/SharedWorker/WebSharedWorkerServer.cpp:

LayoutTests:

  • http/tests/navigation/page-cache-shared-worker-expected.txt:
  • http/tests/navigation/page-cache-shared-worker.html:
  • http/tests/navigation/resources/page-cache-helper-for-sharedworker.html:
  • http/tests/navigation/resources/shared-worker-script.js:
9:28 AM Changeset in webkit [293172] by Jonathan Bedard
  • 4 edits in trunk/Tools

[commits.webkit.org] Disable CORS
https://bugs.webkit.org/show_bug.cgi?id=239607

Reviewed by Aakash Jain.

  • Tools/Scripts/libraries/reporelaypy/reporelaypy/init.py: Bump version.
  • Tools/Scripts/libraries/reporelaypy/reporelaypy/webserver.py: Disable CORS.
  • Tools/Scripts/libraries/reporelaypy/setup.py: Bump version.

Canonical link: https://commits.webkit.org/249853@main

9:28 AM Changeset in webkit [293171] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS Release ] webanimations/css-transition-retargeting-during-ready-promise.html is a flaky failure
Updating test expectations to include Monterey Release
https://bugs.webkit.org/show_bug.cgi?id=215335

Unreviewed test gardening.

  • LayoutTests/platform/mac/TestExpectations:

Canonical link: https://commits.webkit.org/249853@main

9:21 AM Changeset in webkit [293170] by eric.carlson@apple.com
  • 7 edits
    2 adds in trunk

AVSampleBufferRenderSynchronizer timeline sometimes goes backwards when playback begins
https://bugs.webkit.org/show_bug.cgi?id=239471
rdar://91117803

Reviewed by Jer Noble.

Source/WebCore:

Test: media/media-source/media-source-current-time.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerTimeChanged): Log current time and requested
playback rate.
(WebCore::HTMLMediaElement::setPausedInternal): Log.

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
If time has gone backward, clamp to the most recent seek time.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal): INFO_LOG -> ALWAYS_LOG
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::pauseInternal): Ditto.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::currentMediaTime const): Use clampTimeToLastSeekTime.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::clampTimeToLastSeekTime const): New,
clamp time value to the most recent seek time.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCurrentTimeDidChangeCallback):
Use clampTimeToLastSeekTime.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance): INFO_LOG -> ALWAYS_LOG
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal): INFO_LOG -> ALWAYS_LOG
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastPixelBuffer): INFO_LOG -> ALWAYS_LOG
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setHasAvailableVideoFrame): INFO_LOG -> ALWAYS_LOG
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::durationChanged): INFO_LOG -> ALWAYS_LOG

Source/WebKit:

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::currentTimeChanged): Log when time jumps backwards.

LayoutTests:

  • media/media-source/media-source-current-time-expected.txt: Added.
  • media/media-source/media-source-current-time.html: Added.
8:21 AM Changeset in webkit [293169] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

[LFC][Integration] Add direct style accessor to inline iterator
https://bugs.webkit.org/show_bug.cgi?id=239593

Reviewed by Alan Bujtas.

The current implementation fetches the line and the renderer and is pretty expensive.

  • layout/integration/inline/InlineIteratorBox.cpp:

(WebCore::InlineIterator::Box::style const): Deleted.

  • layout/integration/inline/InlineIteratorBox.h:

(WebCore::InlineIterator::Box::style const):

  • layout/integration/inline/InlineIteratorBoxLegacyPath.h:

(WebCore::InlineIterator::BoxLegacyPath::style const):

  • layout/integration/inline/InlineIteratorBoxModernPath.h:

(WebCore::InlineIterator::BoxModernPath::style const):

7:46 AM Changeset in webkit [293168] by Jonathan Bedard
  • 3 edits in trunk/Tools

[Merge-Queue] Allow "Rubber-stamped" as review message
https://bugs.webkit.org/show_bug.cgi?id=239601
<rdar://problem/92091819>

Reviewed by Aakash Jain.

  • Tools/CISupport/ews-build/steps.py:

(ValidateCommitMessage.evaluateCommand): Allow "Rubber-stamped by."

  • Tools/CISupport/ews-build/steps_unittest.py:

Canonical link: https://commits.webkit.org/249850@main

6:20 AM Changeset in webkit [293167] by Jonathan Bedard
  • 10 edits
    2 copies in trunk/Tools

[build.webkit.org] Support identifiers on dashboard
https://bugs.webkit.org/show_bug.cgi?id=239473
<rdar://problem/76852365>

Reviewed by Aakash Jain.

  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/Buildbot.js:

(Buildbot.prototype.layoutTestResultsDirectoryURLForIteration): Remove leading r.

  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/BuildbotIteration.js:

(BuildbotIteration.prototype.get buildURL): Request identifier.

  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/Dashboard.js: OpenSource should be considered a git checkout.
  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/Initialization.js: Add Commit interface.
  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/Main.js: Kick off periodic commits.webkit.org refresh.
  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/QueueView.js:

(QueueView.prototype._appendPendingRevisionCount): Use commit.webkit.org interface instead of trac.
(QueueView.prototype._formatRevisionForDisplay): Don't truncate identifiers.

  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/tests/index.html: Import Commits.js.
  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/tests/resources/MockCommits.js:

(MockCommits): Add mock commits.webkit.org interface.

  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/tests/resources/tests.js:

(setup): Add commits.webkit.org interface.
(this.view._latestProductiveIteration):

  • Tools/CISupport/build-webkit-org/public_html/dashboard/index.html:

Canonical link: https://commits.webkit.org/249849@main

5:14 AM Changeset in webkit [293166] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.36.1

WebKitGTK 2.36.1

5:13 AM Changeset in webkit [293165] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.36

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.36.1 release

.:

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

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.36.1.
4:41 AM Changeset in webkit [293164] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.36/Tools

Merge r293163 - [GTK][WPE] Make make-dist script python3 only
https://bugs.webkit.org/show_bug.cgi?id=239596

Reviewed by Adrian Perez de Castro.

It fails with python2 since r291934.

  • Scripts/make-dist:
4:40 AM Changeset in webkit [293163] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

[GTK][WPE] Make make-dist script python3 only
https://bugs.webkit.org/show_bug.cgi?id=239596

Reviewed by Adrian Perez de Castro.

It fails with python2 since r291934.

  • Scripts/make-dist:
3:53 AM Changeset in webkit [293162] by ntim@apple.com
  • 2 edits
    1 add in trunk/LayoutTests

[iOS] Rebaseline fast/attachment/attachment-disabled-rendering.html expectations
https://bugs.webkit.org/show_bug.cgi?id=238960

Unreviewed test gardening.

The page dimensions are slightly different, but the <attachment> has 0 size as expected.

  • platform/ios-wk2/TestExpectations:
  • platform/ios/fast/attachment/attachment-disabled-rendering-expected.txt: Added.
3:37 AM Changeset in webkit [293161] by ntim@apple.com
  • 2 edits in trunk/Source/WebCore

Small cleanups to StyleBuilderCustom.cpp
https://bugs.webkit.org/show_bug.cgi?id=239595

Reviewed by Antti Koivisto.

  • Make use of DECLARE_PROPERTY_CUSTOM_HANDLERS more often
  • Make code style for the containIntrinsic*Size methods consistent with

applyInitialContainIntrinsicBlockSize (use auto and better variable name)

  • A bit of extra sorting
  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueContainIntrinsicBlockSize):
(WebCore::Style::BuilderCustom::applyInitialContainIntrinsicInlineSize):
(WebCore::Style::BuilderCustom::applyValueContainIntrinsicInlineSize):

2:51 AM Changeset in webkit [293160] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.36/Source/WebCore

Merge r292901 - [GTK] AddressSanitizer: heap-buffer-overflow in WebCore::Length::ref()
https://bugs.webkit.org/show_bug.cgi?id=237389

Reviewed by Žan Doberšek.

  • platform/graphics/nicosia/NicosiaAnimation.cpp:

(Nicosia::createThreadsafeKeyFrames): Convert Length members of transform functions to
the fixed variety before they are moved to separate threads.
(Nicosia::Animation::Animation): Use the new helper.

  • platform/graphics/transforms/TranslateTransformOperation.h: Added setters.
2:51 AM Changeset in webkit [293159] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.36/Source/WebKit

Merge r292628 - [WPE][2.36] Build with a11y disabled fails
https://bugs.webkit.org/show_bug.cgi?id=239004

Patch by Philippe Normand <pnormand@igalia.com> on 2022-04-08
Reviewed by Michael Catanzaro.

Add accessibility build guards.

  • UIProcess/Launcher/glib/XDGDBusProxy.cpp:

(WebKit::XDGDBusProxy::XDGDBusProxy):
(WebKit::XDGDBusProxy::launch const):

2:51 AM WebKitGTK/2.36.x edited by Carlos Garcia Campos
(diff)
2:51 AM Changeset in webkit [293158] by Carlos Garcia Campos
  • 11 edits in releases/WebKitGTK/webkit-2.36/Source

Merge r292211 - REGRESSION(r290360): [GLX] Crash on process exit
https://bugs.webkit.org/show_bug.cgi?id=238494

Reviewed by Michael Catanzaro.

Source/WebCore:

When creating a PlatformDisplay from a shared GdkDisplay, we need to keep a reference to the display and connect
to closed signal to release our display dependent resources. Closed signal is emitted right before the native
display is actually closed by GDK. We also need to make sure that the sharing GL context is released before the
PlatformDisplay is destroyed. This is always happening for EGL because the sharing GL context is cleared before
terminating the EGL display in the atexit handler, but that's not the case of GLX. Since X11 only allows one
PlatformDisplay, which is always the shared one, we can just install an atexit handler in the constructor to
clear the sharing context before the destructor is called.

  • platform/graphics/PlatformDisplay.cpp:

(WebCore::PlatformDisplay::createPlatformDisplay):
(WebCore::PlatformDisplay::PlatformDisplay):
(WebCore::PlatformDisplay::sharedDisplayDidClose):
(WebCore::PlatformDisplay::~PlatformDisplay):
(WebCore::PlatformDisplay::clearSharingGLContext):
(WebCore::PlatformDisplay::terminateEGLDisplay):

  • platform/graphics/PlatformDisplay.h:
  • platform/graphics/libwpe/PlatformDisplayLibWPE.cpp:

(WebCore::PlatformDisplayLibWPE::PlatformDisplayLibWPE):

  • platform/graphics/wayland/PlatformDisplayWayland.cpp:

(WebCore::PlatformDisplayWayland::create):
(WebCore::PlatformDisplayWayland::PlatformDisplayWayland):
(WebCore::PlatformDisplayWayland::~PlatformDisplayWayland):
(WebCore::PlatformDisplayWayland::sharedDisplayDidClose):

  • platform/graphics/wayland/PlatformDisplayWayland.h:
  • platform/graphics/win/PlatformDisplayWin.h:
  • platform/graphics/x11/PlatformDisplayX11.cpp:

(WebCore::PlatformDisplayX11::create):
(WebCore::clearSharingGLContextAtExit):
(WebCore::PlatformDisplayX11::PlatformDisplayX11):
(WebCore::PlatformDisplayX11::~PlatformDisplayX11):
(WebCore::PlatformDisplayX11::sharedDisplayDidClose):

  • platform/graphics/x11/PlatformDisplayX11.h:

Source/WebKit:

  • WebProcess/gtk/WaylandCompositorDisplay.cpp:

(WebKit::WaylandCompositorDisplay::WaylandCompositorDisplay):

2:51 AM Changeset in webkit [293157] by Carlos Garcia Campos
  • 1 edit
    1 add in releases/WebKitGTK/webkit-2.36/Source/WebCore/platform/gtk/po

Merge r292212 - Croatian translation for WebKitGTK
https://bugs.webkit.org/show_bug.cgi?id=238611

Patch by gogo <trebelnik2@gmail.com> on 2022-04-01
Rubber-stamped by Carlos Garcia Campos.

  • hr.po: Added.
2:51 AM Changeset in webkit [293156] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.36/Source/WebKit

Merge r292099 - [GTK][WPE] Exit cleanly if Connection to UIProcess severed. Regression (r214307)
https://bugs.webkit.org/show_bug.cgi?id=235224

This patch reverts the WPE and GTK specific code removed in '[WK2] Make
establishing a connection between the WebProcess and the Network process more
robust' (r12345):

GTK+ and WPE ports don't exit on send sync message failure. In those particular
cases, the network process can be terminated by the UI process while the
Web process is still initializing, so we always want to exit instead of crashing. This can
happen when the WebView is created and then destroyed quickly.
See https://bugs.webkit.org/show_bug.cgi?id=183348.

Reviewed by Carlos Garcia Campos.

  • WebProcess/WebProcess.cpp:

(WebKit::getNetworkProcessConnection):
(WebKit::WebProcess::getGPUProcessConnection):
(WebKit::getWebAuthnProcessConnection):

2:51 AM Changeset in webkit [293155] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.36/Source/WebCore

Merge r292684 - Include locale.h for LC_MESSAGES definition.
https://bugs.webkit.org/show_bug.cgi?id=239030

Patch by Khem Raj <raj.khem@gmail.com> on 2022-04-09
Reviewed by Michael Catanzaro.

  • accessibility/atspi/AccessibilityRootAtspi.cpp:
2:51 AM Changeset in webkit [293154] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.36/Source/JavaScriptCore

Merge r291815 - [JSC] JSRemoteFunction thunk should materialize code-pointer
https://bugs.webkit.org/show_bug.cgi?id=238313

Reviewed by Mark Lam.

When invoking a JSRemoteFunction, we must first wrap the arguments passed to it.
The wrapping operation may trigger a GC, and GC can jettison JIT code. As a result,
even though we know that the target JSFunction has JIT code that we want to execute,
the JIT code may be jettisoned (while wrapping the arguments for it) before we get
to the call. This resulted in occasional crashes on the JSTests/stress/shadow-realm-evaluate.js test.

This patch fixes this by doing a null check on the JIT code just before calling it,
and if null (i.e. the JIT code has been jettisoned), re-materializing the JIT code
first before making the call.

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • jit/JITOperations.h:
  • jit/ThunkGenerators.cpp:

(JSC::remoteFunctionCallGenerator):

2:51 AM Changeset in webkit [293153] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.36

Merge r291785 - [JSC] Fix remoteFunctionCallGenerator on MIPS
https://bugs.webkit.org/show_bug.cgi?id=238274

Patch by Geza Lore <Geza Lore> on 2022-03-23
Reviewed by Yusuke Suzuki.

JSTests:

  • stress/shadow-realm-evaluate.js:

Source/JavaScriptCore:

Eliminate register conflict (nonArgGPR0 == regT4, which is used in
valueRegs)

  • jit/ThunkGenerators.cpp:

(JSC::remoteFunctionCallGenerator):

2:51 AM Changeset in webkit [293152] by Carlos Garcia Campos
  • 13 edits in releases/WebKitGTK/webkit-2.36/Source/JavaScriptCore

Merge r290788 - Add a DeferTraps scope
https://bugs.webkit.org/show_bug.cgi?id=237306
<rdar://83494949>

Reviewed by Mark Lam.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::jettison):
(JSC::CodeBlock::noticeIncomingCall):

  • bytecode/CodeBlock.h:
  • bytecode/RepatchInlines.h:

(JSC::linkFor):
(JSC::virtualForWithFunction):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeModuleProgram):

  • interpreter/InterpreterInlines.h:

(JSC::Interpreter::execute):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setUpCall):

  • runtime/ExceptionScope.h:
  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::installCode):

  • runtime/VMTraps.cpp:

(JSC::VMTraps::handleTraps):
(JSC::VMTraps::takeTopPriorityTrap):

  • runtime/VMTraps.h:

(JSC::VMTraps::needHandling const):
(JSC::VMTraps::maybeNeedHandling const):
(JSC::VMTraps::hasTrapBit):
(JSC::VMTraps::setTrapBit):

  • runtime/VMTrapsInlines.h:

(JSC::DeferTraps::DeferTraps):
(JSC::DeferTraps::~DeferTraps):

2:51 AM Changeset in webkit [293151] by Carlos Garcia Campos
  • 5 edits
    4 adds in releases/WebKitGTK/webkit-2.36

Merge r291813 - Safari can't play video completely at bilibili.com
https://bugs.webkit.org/show_bug.cgi?id=236440
rdar://88761053

Reviewed by Jer Noble.

Source/WebCore:

Video frames were incorrectly evicted during a call to appendBuffer
as the Source Buffer incorrectly assumed a discontinuity was present.

When appending data to a source buffer, the MSE specs describe a method
to detect discontinuities in the Coded Frame Processing algorithm
(https://www.w3.org/TR/media-source/#sourcebuffer-coded-frame-processing)
step 6:
"

  • If last decode timestamp for track buffer is set and decode timestamp is less than last decode timestamp:

OR

  • If last decode timestamp for track buffer is set and the difference between decode timestamp and last decode timestamp is greater than 2 times last frame duration.

"
The issue being what defines the last frame duration.
Is it the frame last seen in the coded frame processing loop or the frame
whose presentation timestamp is just before the one we are currently
processing.

H264 and HEVC have a concept of b-frames: that is a frame that depends
on a future frame to be decoded.
Those frames are found in the container and can be identified by their
presentation timestamp higher than the frame following in decode order.
Those present a challenge as the frame prior the current one in
presentation order, may actually only be found several frames back in
decode order.
Bug 181891 attempted to fix a similar issue, and used the longest
"decode duration" as a workaround to detect discontinuity in the content.
It mentioned adopting the same technique as in Mozilla's MSE
implementation, but Mozilla also skip discontinuity detection within a
media segment (https://www.w3.org/TR/media-source/#media-segment which for
fMP4 is a single moof box) an approach that can't be achieved with
CoreMedia's AVStreamDataParser.
As mentioned in bug 181891, CoreMedia ignore the decode timestamps' delta
and juggles with the sample's duration so that there's no discontinuity
in the demuxed samples' presentation time, causing false positive in the
gap detection algorithm.

Bilibili uses HEVC content, and uses an encoding that generate lots
of b-frames, with a very wide sliding window (seen up to 12 frames).
By using the longest frame duration found in either presentation or
decode duration as threshold to identify a discontinuity, we can
properly parse the content and not incorrectly evict appended frames.
(As a side note, the use of HEVC with B-Frames is peculiar as not all
hardware support it.)
It is difficult to identify here if the issue is within the bilibili's
content or CoreMedia's output, though the responsibility more than
likely lies with bilibili.

Test: media/media-source/media-mp4-hevc-bframes.html

  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::TrackBuffer::TrackBuffer):
(WebCore::SourceBufferPrivate::resetTrackBuffers):
(WebCore::SourceBufferPrivate::didReceiveSample):

  • platform/graphics/SourceBufferPrivate.h:

LayoutTests:

  • media/media-source/content/test-bframes-hevc-manifest.json: Added.
  • media/media-source/content/test-bframes-hevc.mp4: Added.
  • media/media-source/media-mp4-hevc-bframes-expected.txt: Added.
  • media/media-source/media-mp4-hevc-bframes.html: Added.
2:50 AM Changeset in webkit [293150] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.36/Source/WebKit

Merge r291621 - Ensure that proxies are invalidated before destroying them.
https://bugs.webkit.org/show_bug.cgi?id=237187

Reviewed by Carlos Garcia Campos.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::updateSceneState):

2:35 AM Changeset in webkit [293149] by vjaquez@igalia.com
  • 3 edits in trunk/Source/WebCore

[GTK][WPE] Update libwebrtc API usage for video encoder factory
https://bugs.webkit.org/show_bug.cgi?id=239558

Reviewed by Philippe Normand.

Update GstreamerVideoEncoderFactory with current libwebrtc API.

No new tests required.

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.cpp:

(WebCore::GStreamerVideoEncoder::GStreamerVideoEncoder): Chain main constructor rather to
copy its initializations.
Update InitEncode method signature.
Remove deprecated attributes of EncoderInfo.
Fix code-style.
(WebCore::GStreamerH264Encoder::GStreamerH264Encoder): Remove unused class attribute and fix
a memleak.

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.h: Remove deprecated

method.

2:28 AM Changeset in webkit [293148] by Diego Pino Garcia
  • 2 edits in trunk/Source/WTF

REGRESSION(r292863): std::remove_cvref_t not defined in GCC9<
https://bugs.webkit.org/show_bug.cgi?id=239482

Reviewed by Žan Doberšek.

std::remove_cvref_t is only available since GCC9 onwards:

https://en.cppreference.com/w/cpp/compiler_support/20

  • wtf/StdLibExtras.h: add remove_cvref_t to std namespace if not defined.
1:39 AM Changeset in webkit [293147] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Skip release assert during container query resolution
https://bugs.webkit.org/show_bug.cgi?id=239537

Patch by Rob Buis <rbuis@igalia.com> on 2022-04-21
Reviewed by Antti Koivisto.

Skip release assert during container query resolution
since resolveStyle will be a no-op as the container
query resolution was started in resolveStyle, so calling
resolveStyle the second time will bail right away.

  • dom/Document.cpp:

(WebCore::Document::updateStyleIfNeeded):

Apr 20, 2022:

10:28 PM Changeset in webkit [293146] by ysuzuki@apple.com
  • 9 edits
    2 deletes in trunk/Source/JavaScriptCore

[JSC] Remove TempRegisterSet
https://bugs.webkit.org/show_bug.cgi?id=239578

Reviewed by Mark Lam.

We can always use RegisterSet. TempRegisterSet can save several bytes, but we have no code using TempRegisterSet in
heap-allocated class, so this does not make sense anymore. Instead of TempRegisterSet, we should consistently use
ScratchRegisterAllocator.

  • Source/JavaScriptCore/CMakeLists.txt:
  • Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
  • Source/JavaScriptCore/Sources.txt:
  • Source/JavaScriptCore/jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer):

  • Source/JavaScriptCore/jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer): Deleted.

  • Source/JavaScriptCore/jit/RegisterSet.h:
  • Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:

(JSC::ScratchRegisterAllocator::lock):
(JSC::ScratchRegisterAllocator::allocateScratch):
(JSC::ScratchRegisterAllocator::preserveReusedRegistersByPushing):
(JSC::ScratchRegisterAllocator::restoreReusedRegistersByPopping):

  • Source/JavaScriptCore/jit/ScratchRegisterAllocator.h:
  • Source/JavaScriptCore/jit/TempRegisterSet.cpp: Removed.
  • Source/JavaScriptCore/jit/TempRegisterSet.h: Removed.

Canonical link: https://commits.webkit.org/249842@main

9:51 PM Changeset in webkit [293145] by Alan Coon
  • 1 edit in branches/safari-613-branch/Source/WebKit/DerivedSources-output.xcfilelist

Remove merge conflict marker.

9:51 PM Changeset in webkit [293144] by Alan Coon
  • 1 edit in branches/safari-613-branch/Source/WebKit/UIProcess/WebPageProxy.cpp

Unreviewed build fix. rdar://91446317

Source/WebKit/UIProcess/WebPageProxy.cpp:3499:17: error: no matching constructor for initialization of 'WTF::URL'

9:08 PM Changeset in webkit [293143] by ysuzuki@apple.com
  • 2 edits in trunk/Tools

Generate well-formed JSON for compile_commands.json
https://bugs.webkit.org/show_bug.cgi?id=239584

Reviewed by Mark Lam.

Currently, compile_commands.json always has one trailing comma in the main array. While clangd does not care this,
it is ill-formed JSON, and some other tools consuming compile_commands.json can fail.
This patch makes it so that generated compile_commands.json has well-formed JSON.

  • Tools/Scripts/generate-compile-commands:

Canonical link: https://commits.webkit.org/249841@main

8:56 PM Changeset in webkit [293142] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the iOS 15.4 build after r293117

Remove an unnecessary header include.

  • Platform/spi/ios/UIKitSPI.h:
8:32 PM Changeset in webkit [293141] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Fix GPRInfo inconsistency in unlinked DFG bringup
https://bugs.webkit.org/show_bug.cgi?id=239573

Reviewed by Mark Lam.

Previously, we forgot changing GPRInfo::toIndex of x64 so that we got assertion in ScratchRegisterAllocator.
This patch fixes it and test this consistency in testmasm.
It allows unlinked DFG style register usage in x64, so we reenabled it again.

  • Source/JavaScriptCore/assembler/testmasm.cpp:

(JSC::testGPRInfoConsistency):

  • Source/JavaScriptCore/dfg/DFGPlan.cpp:

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

  • Source/JavaScriptCore/jit/GPRInfo.h:

(JSC::GPRInfo::toRegister):
(JSC::GPRInfo::toArgumentRegister):
(JSC::GPRInfo::toIndex):

Canonical link: https://commits.webkit.org/249839@main

7:48 PM Changeset in webkit [293140] by mmaxfield@apple.com
  • 2 edits in trunk/LayoutTests

[ iOS ] platform/ios/ios/fast/text/opticalFont.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=239570
<rdar://problem/92056238>

Unreviewed test gardening.

Rebase.

  • platform/ios/platform/ios/ios/fast/text/opticalFont-expected.txt:
7:43 PM Changeset in webkit [293139] by Alan Coon
  • 19 edits
    3 deletes in branches/safari-613-branch

Revert r291589. rdar://problem/90511155

This reverts r293071.

7:08 PM Changeset in webkit [293138] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed follow-up to r293123 to address review feedback from Sam & Darin

  • css/SelectorFilter.cpp:

(WebCore::localNameIsKnownToBeLowercase):
(WebCore::SelectorFilter::collectElementIdentifierHashes):

6:51 PM Changeset in webkit [293137] by Wenson Hsieh
  • 16 edits
    2 adds in trunk

Avoid falling back to snapshots for transparent images when triggering batch text recognition
https://bugs.webkit.org/show_bug.cgi?id=239555
rdar://91622151

Reviewed by Aditya Keerthi.

Source/WebCore:

For normal Live Text, our existing heuristics fall back to analyzing a snapshot rather than the image data
itself for transparent image elements (e.g. on Twitter). However, when installing block-style image overlay
content using ImageAnalysisQueue, it doesn't make sense to use this compatibility hack, since this flavor of
image overlay content is directly visible to the user, and would still show up underneath fully transparent
image elements, as long as we're able to analyze the other (non-fully-transparent) image element underneath.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AXImage.cpp:
  • page/ChromeClient.h:

Plumb the new TextRecognitionOptions struct through this client method.

(WebCore::ChromeClient::requestTextRecognition):

  • page/EventHandler.cpp:

(WebCore::EventHandler::textRecognitionHoverTimerFired):

  • page/ImageAnalysisQueue.cpp:

(WebCore::ImageAnalysisQueue::resumeProcessing):

Use the presence of an identifier as a cue to determine whether or not we should opt into the snapshotting
fallback behavior, for the time being. I also considered just keying this behavior off of the identifier in
WebPage::requestTextRecognition, but chose this approach because it seems fragile to couple those two
behaviors.

  • platform/TextRecognitionOptions.h: Added.
  • testing/Internals.cpp:

Source/WebKit:

Refactor requestTextRecognition() to take in TextRecognitionOptions.
See WebCore/ChangeLog for more details.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::requestTextRecognition):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::requestTextRecognition):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::requestTextRecognition):

Tools:

Add an API test to exercise the bug, by triggering batch image analysis on an image with opacity: 0; that
fades in on a timer.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:

(TestWebKitAPI::CGImagePixelReader::CGImagePixelReader):
(TestWebKitAPI::CGImagePixelReader::isTransparentBlack const):
(TestWebKitAPI::CGImagePixelReader::at const):
(TestWebKitAPI::CGImagePixelReader::width const):
(TestWebKitAPI::CGImagePixelReader::height const):

Add a simple helper class to read pixel values at a given location in a given CGImage; this helper class works
by first rendering the given image into a plain SRGB bitmap context, which we then use to read back pixel data
in RGBA format.

(TestWebKitAPI::processRequestWithError):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/fade-in-image.html: Added.
6:30 PM Changeset in webkit [293136] by ysuzuki@apple.com
  • 2 edits in trunk

Unreviewed, add github accounts of Apple JSC reviewers

  • metadata/contributors.json:
6:24 PM Changeset in webkit [293135] by Alan Coon
  • 1 edit in branches/safari-613-branch/Source/WebCore/rendering/RenderGrid.cpp

Revert "Unreviewed build fix. rdar://88512506"

This reverts r293134.

5:47 PM Changeset in webkit [293134] by Alan Coon
  • 1 edit in branches/safari-613-branch/Source/WebCore/rendering/RenderGrid.cpp

Unreviewed build fix. rdar://88512506

Correction to r293125.

5:45 PM Changeset in webkit [293133] by Alan Coon
  • 13 edits
    2 deletes in branches/safari-613-branch

Revert r292274. rdar://problem/80544133

This reverts r293080.

5:30 PM Changeset in webkit [293132] by Ross Kirsling
  • 2 edits in trunk/Tools

[LayoutTests][Win] Tests can fail if long paths are not enabled in registry.
https://bugs.webkit.org/show_bug.cgi?id=188092

Reviewed by Basuke Suzuki.

Python 3.6 supports long file paths on Windows by default so long as LongPathsEnabled is set in
HKLM\System\CurrentControlSet\Control\FileSystem. This patch adds that key to webkitpy's registry editing.

  • Scripts/webkitpy/port/win.py:

(WinPort):
(WinPort.set_long_paths_enabled): Added.
(WinPort.restore_long_paths_enabled): Added.
(WinPort.setup_test_run):
(WinPort.clean_up_test_run):

Canonical link: https://commits.webkit.org/249834@main

5:25 PM Changeset in webkit [293131] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads.tentative.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=239577

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249833@main

4:17 PM Changeset in webkit [293130] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS Release wk2 ] webanimations/frame-rate/animation-frame-rate-alignment-started-with-one-frame-separation.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=239574

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249832@main

4:02 PM Changeset in webkit [293129] by Chris Dumez
  • 13 edits in trunk/Source

Move true / false AtomStrings to a central location and reuse them
https://bugs.webkit.org/show_bug.cgi?id=239530

Reviewed by Sam Weinig.

Source/WebCore:

  • dom/mac/ImageControlsMac.cpp:

(WebCore::ImageControlsMac::createImageControls):

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::detectContentInRange):

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::contentEditable const):
(WebCore::HTMLElement::setContentEditable):
(WebCore::trueName): Deleted.
(WebCore::falseName): Deleted.

  • html/shadow/TextControlInnerElements.cpp:

(WebCore::TextControlInnerTextElement::updateInnerTextElementEditabilityImpl):

  • mathml/MathMLPresentationElement.cpp:

(WebCore::MathMLPresentationElement::cachedBooleanAttribute):

  • platform/network/HTTPParsers.cpp:

(WebCore::parseStructuredFieldValue):

  • svg/SVGFEConvolveMatrixElement.cpp:

(WebCore::SVGFEConvolveMatrixElement::parseAttribute):

  • svg/properties/SVGPropertyTraits.h:

(WebCore::SVGPropertyTraits<bool>::toString):

  • xml/XPathValue.cpp:

(WebCore::XPath::Value::toString const):

Source/WTF:

  • wtf/text/AtomString.cpp:

(WTF::AtomString::init):

  • wtf/text/AtomString.h:

(WTF::trueAtom):
(WTF::falseAtom):

3:47 PM Changeset in webkit [293128] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ Monterey Release wk2 ] imported/w3c/web-platform-tests/content-security-policy/inheritance/blob-url-in-main-window-self-navigate-inherits.sub.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=239568

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249830@main

3:32 PM Changeset in webkit [293127] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Add release assert logging in RemoteRenderingBackendProxy::prepareBuffersForDisplay()
https://bugs.webkit.org/show_bug.cgi?id=239563

Reviewed by Wenson Hsieh.

Use RELEASE_ASSERT_WITH_MESSAGE() to make it more clear which of the two release
assertions is being hit.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::prepareBuffersForDisplay):

3:29 PM Changeset in webkit [293126] by Simon Fraser
  • 6 edits
    2 moves
    2 adds in trunk

REGRESSION (r281913): Map toolbar flickers when dragging the map on https://gis.ee/
https://bugs.webkit.org/show_bug.cgi?id=238589
<rdar://90483049>

Reviewed by Alan Bujtas.
Source/WebCore:

If a layer has negative z-order descendants, and one of those descendants becomes
composited, then that layer also has to composite, because its foreground needs to render in
front of those descendants. But this is tricky, because the compositing toggle is
out-of-order; we only know that the layer has to get composited after processing
descendants.

In particular, this created a problem with the overlap map, which tracks sets of rectangles
in "compositing scopes" via LayerOverlapMap. The delayed compositing toggle of the layer
with negative z-order descendants meant that any layers processed up to that point had their
bounds added in the wrong overlap scope. This resulted in subsequent bad overlap testing,
and a failure to make later layers composited.

The previous fix in this area (r281913) was incorrect. Revert it, and do a better fix, which
is to speculatively push an overlap map entry for the layer with negative z-order
descendants, if necessary. If this layer ends up not getting composited, we unwind the
speculative push, which will merge that scope with its parent scope.

In addition give OverlapMapContainer (an "overlap scope") a RenderLayer& which we can use
for logging, and to assert on correct behavior; it is not otherwise used in release builds.

Tests: compositing/layer-creation/overlap-with-negative-z-layers.html

compositing/layer-creation/subtree-div-overlaps-multiple-negative-z-divs.html

  • rendering/LayerOverlapMap.cpp:

(WebCore::OverlapMapContainer::OverlapMapContainer):
(WebCore::OverlapMapContainer::scopeLayer const):
(WebCore::OverlapMapContainer::dump const):
(WebCore::LayerOverlapMap::LayerOverlapMap):
(WebCore::LayerOverlapMap::add):
(WebCore::LayerOverlapMap::pushCompositingContainer):
(WebCore::LayerOverlapMap::popCompositingContainer):

  • rendering/LayerOverlapMap.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
(WebCore::RenderLayerCompositor::updateOverlapMap const):

LayoutTests:

Move subtree-div-overlaps-multiple-negative-z-divs.html into the layer-creation directory.
Add a new test.

  • compositing/layer-creation/overlap-with-negative-z-layers-expected.html: Added.
  • compositing/layer-creation/overlap-with-negative-z-layers.html: Added.
  • compositing/layer-creation/subtree-div-overlaps-multiple-negative-z-divs-expected.html: Renamed from LayoutTests/compositing/subtree-div-overlaps-multiple-negative-z-divs-expected.html.
  • compositing/layer-creation/subtree-div-overlaps-multiple-negative-z-divs.html: Renamed from LayoutTests/compositing/subtree-div-overlaps-multiple-negative-z-divs.html.
  • fast/harness/render-tree-as-text-options-expected.txt: Test progressed; update results.
3:27 PM Changeset in webkit [293125] by Alan Coon
  • 1 edit in branches/safari-613-branch/Source/WebCore/rendering/RenderGrid.cpp

Unreviewed build fix. rdar://88512506

./rendering/RenderGrid.cpp:477:94: error: too few arguments to function call, expected 2, have 1

3:21 PM Changeset in webkit [293124] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Simplify type checking / casting in JSEventListener::handleEvent()
https://bugs.webkit.org/show_bug.cgi?id=239559

Reviewed by Sam Weinig.

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

3:11 PM Changeset in webkit [293123] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Avoid call to convertToASCIILowercase() in SelectorFilter::collectElementIdentifierHashes() in the common case
https://bugs.webkit.org/show_bug.cgi?id=239545

Reviewed by Sam Weinig.

The call to convertToASCIILowercase() in SelectorFilter::collectElementIdentifierHashes() shows in Speedometer profiles
even though input tags are already lowercase, simply because the function needs to iterate over the string to determine
that it is all lowercase. In the common case though, we can leverage the fact that all known HTML element tags are
lowercase to avoid the call to convertToASCIILowercase(). This is because HTMLElement::localName() returns one of the
tags defined in HTMLNames.h (for known HTML elements), all of which are lowercase.

  • css/SelectorFilter.cpp:

(WebCore::SelectorFilter::collectElementIdentifierHashes):

3:09 PM Changeset in webkit [293122] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Add missing WTFMove() in MIMETypeRegistryThreadGlobalData()
https://bugs.webkit.org/show_bug.cgi?id=239565

Reviewed by Sam Weinig.

  • platform/MIMETypeRegistry.h:

(WebCore::MIMETypeRegistryThreadGlobalData::MIMETypeRegistryThreadGlobalData):

2:47 PM Changeset in webkit [293121] by Alan Coon
  • 8 edits
    2 deletes in branches/safari-613-branch

Revert r290201. rdar://problem/88672183

This reverts r293067.

2:47 PM Changeset in webkit [293120] by Alan Coon
  • 3 edits
    2 deletes in branches/safari-613-branch

Revert r291281. rdar://problem/90245637

This reverts r293068.

2:47 PM Changeset in webkit [293119] by Alan Coon
  • 1 edit in branches/safari-613-branch/Source/WebCore/animation/KeyframeEffect.cpp

Revert "Unreviewed build fix. rdar://problem/88672183"

This reverts r293107.

2:46 PM Changeset in webkit [293118] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] media/audio-session-category-at-most-recent-playback.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=239566

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249824@main

2:42 PM Changeset in webkit [293117] by Megan Gardner
  • 12 edits in trunk

Address recent deprecation warnings on iOS.
https://bugs.webkit.org/show_bug.cgi?id=239560

Reviewed by Wenson Hsieh.

Source/WebKit:

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant contextMenuInteraction:configuration:highlightPreviewForItemWithIdentifier:]):
(-[WKActionSheetAssistant contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): Deleted.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setUpInteraction]):
(-[WKContentView canPerformActionForWebView:withSender:]):
(-[WKContentView pasteForWebView:]):
(-[WKContentView _handleDOMPasteRequestWithResult:]):
(-[WKContentView _requestDOMPasteAccessForCategory:elementRect:originIdentifier:completionHandler:]):
(-[WKContentView contextMenuInteraction:configuration:previewForHighlightingItemWithIdentifier:]):
(-[WKContentView contextMenuInteraction:configuration:dismissalPreviewForItemWithIdentifier:]):
(-[WKContentView contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): Deleted.
(-[WKContentView contextMenuInteraction:previewForDismissingMenuWithConfiguration:]): Deleted.

  • UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:

(-[WKDataListSuggestionsDropdown contextMenuInteraction:configuration:highlightPreviewForItemWithIdentifier:]):
(-[WKDataListSuggestionsDropdown contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): Deleted.

  • UIProcess/ios/forms/WKDateTimeInputControl.mm:

(-[WKDateTimePicker contextMenuInteraction:configuration:highlightPreviewForItemWithIdentifier:]):
(-[WKDateTimePicker contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): Deleted.

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel contextMenuInteraction:configuration:highlightPreviewForItemWithIdentifier:]):
(-[WKFileUploadPanel contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): Deleted.

  • UIProcess/ios/forms/WKFormSelectPicker.mm:

(-[WKSelectPicker contextMenuInteraction:configuration:highlightPreviewForItemWithIdentifier:]):
(-[WKSelectPicker contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): Deleted.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKContentViewEditingActions.mm:

(TEST):

  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView initWithFrame:configuration:]):
(-[TestRunnerWKWebView _addCustomItemToMenuControllerIfNecessary]):
(-[TestRunnerWKWebView resetCustomMenuAction]):
(-[TestRunnerWKWebView canPerformAction:withSender:]):

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformInitialize):
(WTR::TestController::platformDestroy):

2:41 PM Changeset in webkit [293116] by Ryan Haddad
  • 2 edits in trunk/Tools/CISupport

Update archs for watchOS build queues
https://bugs.webkit.org/show_bug.cgi?id=239553

Reviewed by Aakash Jain.

Remove the deprecated i386 arch from watchOS simulator builders and switch
EWS + trunk bots to arm64 to expand build coverage for this architecture.

  • Tools/CISupport/build-webkit-org/config.json:
  • Tools/CISupport/ews-build/config.json:

Canonical link: https://commits.webkit.org/249822@main

2:37 PM Changeset in webkit [293115] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Some layout tests are failing on EWS but not post commit testing due to a OS difference
https://bugs.webkit.org/show_bug.cgi?id=239564

Unreviewed test gardening.

  • LayoutTests/platform/ios/TestExpectations:

Canonical link: https://commits.webkit.org/249821@main

2:25 PM Changeset in webkit [293114] by Alan Bujtas
  • 433 edits in trunk

[IFC][Integration] Do not call WebPreferences::simpleLineLayoutEnabled in canUseForLineLayoutWithReason
https://bugs.webkit.org/show_bug.cgi?id=239540

Reviewed by Antti Koivisto.

Source/WebCore:

  1. Use RuntimeEnabledFeatures::sharedFeatures() instead of Page::Settings.
  2. Remove simpleLineLayoutEnabled setting.
  3. Rename LayoutFormattingContextIntegrationEnabled -> InlineFormattingContextIntegrationEnabled (in preparation for adding more of these FCs).
  • display/DisplayView.cpp:

(WebCore::Display::View::prepareForDisplay):

  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::formattingStateForFormattingContext const):
(WebCore::Layout::LayoutState::formattingStateForInlineFormattingContext const):
(WebCore::Layout::LayoutState::ensureInlineFormattingState):
(WebCore::Layout::LayoutState::setViewportSize):
(WebCore::Layout::LayoutState::viewportSize const):
(WebCore::Layout::LayoutState::setIsIntegratedRootBoxFirstChild):
(WebCore::Layout::LayoutState::shouldIgnoreTrailingLetterSpacing const):
(WebCore::Layout::LayoutState::shouldNotSynthesizeInlineBlockBaseline const):

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::close):

  • layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::appendTextDisplayBox):

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

  • layout/integration/inline/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::isEnabled):
(WebCore::LayoutIntegration::LineLayout::releaseCaches):

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setInlineFormattingContextIntegrationEnabled):
(WebCore::RuntimeEnabledFeatures::inlineFormattingContextIntegrationEnabled const):
(WebCore::RuntimeEnabledFeatures::setLayoutFormattingContextIntegrationEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::layoutFormattingContextIntegrationEnabled const): Deleted.

  • rendering/TextPainter.cpp:

(WebCore::TextPainter::clearGlyphDisplayLists):

Source/WebKit:

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetSimpleLineLayoutEnabled): Deleted.
(WKPreferencesGetSimpleLineLayoutEnabled): Deleted.

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _simpleLineLayoutEnabled]): Deleted.
(-[WKPreferences _setSimpleLineLayoutEnabled:]): Deleted.

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Source/WebKitLegacy/mac:

  • WebView/WebPreferences.mm:

(-[WebPreferences simpleLineLayoutEnabled]): Deleted.
(-[WebPreferences setSimpleLineLayoutEnabled:]): Deleted.

  • WebView/WebPreferencesPrivate.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

LayoutTests:

  • TestExpectations:
  • editing/document-marker-null-check.html:
  • editing/text-iterator/count-mark-lineboxes.html:
  • fast/block/float/simple-line-layout-float-shrink-line-expected.html:
  • fast/block/line-layout/first-line-should-bail-out-of-simple-line-layout-expected.html:
  • fast/block/margin-collapse/empty-clear-blocks-complex.html:
  • fast/css/word-spacing-with-normal-layout.html:
  • fast/css3-text/css3-text-decoration/simple-line-layout-text-decoration-expected.html:
  • fast/css3-text/css3-text-justify/text-justify-last-line-simple-line-layout-expected.html:
  • fast/dom/Document/CaretRangeFromPoint/simple-line-layout-hittest-with-caret-range-from-point-expected.html:
  • fast/dom/Range/simple-line-layout-getclientrects-expected.html:
  • fast/forms/basic-textareas-quirks-simple-lines-expected.html:
  • fast/forms/basic-textareas-quirks.html:
  • fast/forms/basic-textareas-simple-lines-expected.html:
  • fast/forms/basic-textareas.html:
  • fast/forms/linebox-overflow-in-textarea-padding-simple-lines-expected.html:
  • fast/forms/linebox-overflow-in-textarea-padding.html:
  • fast/forms/negativeLineHeight-simple-lines-expected.html:
  • fast/forms/negativeLineHeight.html:
  • fast/forms/textAreaLineHeight-simple-lines-expected.html:
  • fast/forms/textAreaLineHeight.html:
  • fast/inline/hidpi-legacy-integral-rounding-on-hard-line-break-expected.html:
  • fast/inline/hidpi-legacy-integral-rounding-on-inline-boxes-expected.html:
  • fast/inline/simple-line-layout-16bit-content-expected.html:
  • fast/layoutformattingcontext/absolute-positioned-box-with-inline-sibling-expected.html:
  • fast/layoutformattingcontext/absolute-positioned-box-with-inline-sibling.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table-expected.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table2-expected.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table2.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table3-expected.html:
  • fast/layoutformattingcontext/absolute-positioned-simple-table3.html:
  • fast/layoutformattingcontext/anonymous-inline-container-simple-expected.html:
  • fast/layoutformattingcontext/anonymous-inline-container-simple.html:
  • fast/layoutformattingcontext/block-only/abs-pos-with-border-padding-and-float-child-expected.html:
  • fast/layoutformattingcontext/block-only/abs-pos-with-border-padding-and-float-child.html:
  • fast/layoutformattingcontext/block-only/absolute-auto-with-sibling-margin-bottom.html:
  • fast/layoutformattingcontext/block-only/absolute-height-stretch.html:
  • fast/layoutformattingcontext/block-only/absolute-left-auto.html:
  • fast/layoutformattingcontext/block-only/absolute-left-right-top-bottom-auto.html:
  • fast/layoutformattingcontext/block-only/absolute-nested.html:
  • fast/layoutformattingcontext/block-only/absolute-nested2.html:
  • fast/layoutformattingcontext/block-only/absolute-position-left-right-margin.html:
  • fast/layoutformattingcontext/block-only/absolute-position-min-max-height.html:
  • fast/layoutformattingcontext/block-only/absolute-position-min-max-width.html:
  • fast/layoutformattingcontext/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context.html:
  • fast/layoutformattingcontext/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context2.html:
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple-expected.html:
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple.html:
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple2-expected.html:
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple2.html:
  • fast/layoutformattingcontext/block-only/absolute-positioned-min-max-percentage-with-parent-padding-expected.html:
  • fast/layoutformattingcontext/block-only/absolute-positioned-min-max-percentage-with-parent-padding.html:
  • fast/layoutformattingcontext/block-only/absolute-simple.html:
  • fast/layoutformattingcontext/block-only/absolute-width-shrink-to-fit.html:
  • fast/layoutformattingcontext/block-only/absolute-width-stretch.html:
  • fast/layoutformattingcontext/block-only/absolute-with-static-block-position-nested.html:
  • fast/layoutformattingcontext/block-only/almost-intruding-left-float-simple.html:
  • fast/layoutformattingcontext/block-only/block-replaced-with-vertical-margins-expected.html:
  • fast/layoutformattingcontext/block-only/block-replaced-with-vertical-margins.html:
  • fast/layoutformattingcontext/block-only/block-root-top-should-start-from-float-top-expected.html:
  • fast/layoutformattingcontext/block-only/block-root-top-should-start-from-float-top.html:
  • fast/layoutformattingcontext/block-only/body-height-with-auto-html-height-quirk.html:
  • fast/layoutformattingcontext/block-only/body-height-with-auto-html-height-quirk2.html:
  • fast/layoutformattingcontext/block-only/body-height-with-non-auto-html-height-quirk.html:
  • fast/layoutformattingcontext/block-only/body-height-with-non-auto-html-height-quirk2.html:
  • fast/layoutformattingcontext/block-only/border-simple.html:
  • fast/layoutformattingcontext/block-only/box-sizing-inflow-out-of-flow-simple.html:
  • fast/layoutformattingcontext/block-only/child-containing-block-margin-collapse-when-float-avoiders-expected.html:
  • fast/layoutformattingcontext/block-only/child-containing-block-margin-collapse-when-float-avoiders.html:
  • fast/layoutformattingcontext/block-only/collapsed-margin-with-min-height.html:
  • fast/layoutformattingcontext/block-only/collapsed-through-siblings.html:
  • fast/layoutformattingcontext/block-only/collapsed-through-with-parent.html:
  • fast/layoutformattingcontext/block-only/fixed-nested.html:
  • fast/layoutformattingcontext/block-only/float-and-siblings-with-margins.html:
  • fast/layoutformattingcontext/block-only/float-avoider-multiple-roots.html:
  • fast/layoutformattingcontext/block-only/float-avoider-simple-left.html:
  • fast/layoutformattingcontext/block-only/float-avoider-simple-right.html:
  • fast/layoutformattingcontext/block-only/float-avoider-with-margins.html:
  • fast/layoutformattingcontext/block-only/float-clear-with-auto-width-expected.html:
  • fast/layoutformattingcontext/block-only/float-clear-with-auto-width.html:
  • fast/layoutformattingcontext/block-only/float-left-when-container-has-padding-margin.html:
  • fast/layoutformattingcontext/block-only/float-min-max-height.html:
  • fast/layoutformattingcontext/block-only/float-min-max-width.html:
  • fast/layoutformattingcontext/block-only/floating-and-next-previous-inflow-with-margin-with-no-border.html:
  • fast/layoutformattingcontext/block-only/floating-and-next-previous-inflow-with-margin.html:
  • fast/layoutformattingcontext/block-only/floating-box-clear-both-simple.html:
  • fast/layoutformattingcontext/block-only/floating-box-clear-right-simple.html:
  • fast/layoutformattingcontext/block-only/floating-box-left-and-right-multiple-with-top-offset.html:
  • fast/layoutformattingcontext/block-only/floating-box-left-and-right-multiple.html:
  • fast/layoutformattingcontext/block-only/floating-box-right-simple.html:
  • fast/layoutformattingcontext/block-only/floating-box-with-clear-siblings.html:
  • fast/layoutformattingcontext/block-only/floating-box-with-clear-simple.html:
  • fast/layoutformattingcontext/block-only/floating-box-with-new-formatting-context.html:
  • fast/layoutformattingcontext/block-only/floating-box-with-relative-positioned-sibling.html:
  • fast/layoutformattingcontext/block-only/floating-left-and-right-with-clearance.html:
  • fast/layoutformattingcontext/block-only/floating-left-right-simple.html:
  • fast/layoutformattingcontext/block-only/floating-left-right-with-all-margins.html:
  • fast/layoutformattingcontext/block-only/floating-lefts-and-rights-simple.html:
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts-in-body.html:
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts-multiple-lines.html:
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts.html:
  • fast/layoutformattingcontext/block-only/floating-with-new-block-formatting-context.html:
  • fast/layoutformattingcontext/block-only/floats-and-block-formatting-roots-expected.html:
  • fast/layoutformattingcontext/block-only/floats-and-block-formatting-roots.html:
  • fast/layoutformattingcontext/block-only/inflow-min-max-height.html:
  • fast/layoutformattingcontext/block-only/inflow-min-max-width.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-bottom-bottom.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-bottom-nested.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-first-last-are-floating.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-simple.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-top-nested.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-when-child-has-padding-border.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-with-block-formatting-context.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-with-block-formatting-context2.html:
  • fast/layoutformattingcontext/block-only/margin-collapse-with-clearance.html:
  • fast/layoutformattingcontext/block-only/margin-left-right-sizing-out-of-flow.html:
  • fast/layoutformattingcontext/block-only/margin-left-right-sizing.html:
  • fast/layoutformattingcontext/block-only/margin-propagation-simple-content-height.html:
  • fast/layoutformattingcontext/block-only/margin-sibling-collapse-propagated.html:
  • fast/layoutformattingcontext/block-only/margin-simple.html:
  • fast/layoutformattingcontext/block-only/min-max-and-preferred-width-simple-expected.html:
  • fast/layoutformattingcontext/block-only/min-max-and-preferred-width-simple.html:
  • fast/layoutformattingcontext/block-only/min-max-height-percentage.html:
  • fast/layoutformattingcontext/block-only/negative-margin-simple.html:
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-height-with-auto-margins.html:
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-height-with-margins.html:
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-left-right-widht-height-out-of-flow.html:
  • fast/layoutformattingcontext/block-only/out-of-flow-is-never-float-box-expected.html:
  • fast/layoutformattingcontext/block-only/out-of-flow-is-never-float-box.html:
  • fast/layoutformattingcontext/block-only/out-of-flow-with-containing-block-border-padding.html:
  • fast/layoutformattingcontext/block-only/padding-nested.html:
  • fast/layoutformattingcontext/block-only/padding-simple.html:
  • fast/layoutformattingcontext/block-only/relative-auto-with-parent-offset.html:
  • fast/layoutformattingcontext/block-only/relative-auto.html:
  • fast/layoutformattingcontext/block-only/relative-bottom.html:
  • fast/layoutformattingcontext/block-only/relative-position-when-containing-block-is-not-in-the-formatting-context.html:
  • fast/layoutformattingcontext/block-only/relative-right.html:
  • fast/layoutformattingcontext/block-only/relative-siblings.html:
  • fast/layoutformattingcontext/block-only/relative-simple.html:
  • fast/layoutformattingcontext/block-only/replaced-as-inline-block-simple-expected.html:
  • fast/layoutformattingcontext/block-only/replaced-as-inline-block-simple.html:
  • fast/layoutformattingcontext/block-only/replaced-intrinsic-width-simple-expected.html:
  • fast/layoutformattingcontext/block-only/replaced-intrinsic-width-simple.html:
  • fast/layoutformattingcontext/br-and-wbr-simple-expected.html:
  • fast/layoutformattingcontext/br-and-wbr-simple.html:
  • fast/layoutformattingcontext/br-in-inline-content-simple-expected.html:
  • fast/layoutformattingcontext/br-in-inline-content-simple.html:
  • fast/layoutformattingcontext/center-alignment-with-block-content-simple-expected.html:
  • fast/layoutformattingcontext/center-alignment-with-block-content-simple.html:
  • fast/layoutformattingcontext/display/stacking-item-bounds-expected.html:
  • fast/layoutformattingcontext/display/stacking-item-bounds.html:
  • fast/layoutformattingcontext/empty-block-level-box-with-clearance-expected.html:
  • fast/layoutformattingcontext/empty-block-level-box-with-clearance.html:
  • fast/layoutformattingcontext/empty-table-box-expected.html:
  • fast/layoutformattingcontext/empty-table-box.html:
  • fast/layoutformattingcontext/empty-table-with-specified-height-quirk-simple-expected.html:
  • fast/layoutformattingcontext/empty-table-with-specified-height-quirk-simple.html:
  • fast/layoutformattingcontext/empty-table-with-specified-height-standards-simple-expected.html:
  • fast/layoutformattingcontext/empty-table-with-specified-height-standards-simple.html:
  • fast/layoutformattingcontext/fit-content-width-simple-expected.html:
  • fast/layoutformattingcontext/fit-content-width-simple.html:
  • fast/layoutformattingcontext/flex-box-simple.html:
  • fast/layoutformattingcontext/float-and-br-inline-content-only-expected.html:
  • fast/layoutformattingcontext/float-and-br-inline-content-only.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space-expected.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space2-expected.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space2.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space3-expected.html:
  • fast/layoutformattingcontext/float-avoider-available-horizontal-space3.html:
  • fast/layoutformattingcontext/float-avoider-with-inline-content-expected.html:
  • fast/layoutformattingcontext/float-avoider-with-inline-content.html:
  • fast/layoutformattingcontext/float-avoiding-br-last-line-expected.html:
  • fast/layoutformattingcontext/float-avoiding-br-last-line.html:
  • fast/layoutformattingcontext/float-avoiding-br-simple-expected.html:
  • fast/layoutformattingcontext/float-avoiding-br-simple.html:
  • fast/layoutformattingcontext/float-in-inline-context-simple-expected.html:
  • fast/layoutformattingcontext/float-in-inline-context-simple.html:
  • fast/layoutformattingcontext/float-inside-table-cell-simple-expected.html:
  • fast/layoutformattingcontext/float-inside-table-cell-simple.html:
  • fast/layoutformattingcontext/float-with-clear-simple-expected.html:
  • fast/layoutformattingcontext/float-with-clear-simple.html:
  • fast/layoutformattingcontext/floats-shrinking-line-simple-expected.html:
  • fast/layoutformattingcontext/floats-shrinking-line-simple.html:
  • fast/layoutformattingcontext/flow-integration-basic-paint.html:
  • fast/layoutformattingcontext/flow-integration-basic.html:
  • fast/layoutformattingcontext/height-percentage-quirk-to-icb-expected.html:
  • fast/layoutformattingcontext/height-percentage-quirk-to-icb.html:
  • fast/layoutformattingcontext/height-precentage-with-anonymous-wrapper-expected.html:
  • fast/layoutformattingcontext/height-precentage-with-anonymous-wrapper.html:
  • fast/layoutformattingcontext/horizontal-sizing-with-trailing-letter-spacing-expected.html:
  • fast/layoutformattingcontext/horizontal-sizing-with-trailing-letter-spacing.html:
  • fast/layoutformattingcontext/html-is-absolute-positioned-expected.html:
  • fast/layoutformattingcontext/html-is-absolute-positioned.html:
  • fast/layoutformattingcontext/inlin-box-content-fits-but-the-box-does-not-expected.html:
  • fast/layoutformattingcontext/inlin-box-content-fits-but-the-box-does-not.html:
  • fast/layoutformattingcontext/inline-box-overlaps-multiple-lines-expected.html:
  • fast/layoutformattingcontext/inline-box-overlaps-multiple-lines.html:
  • fast/layoutformattingcontext/inline-float-simple-expected.html:
  • fast/layoutformattingcontext/inline-float-simple.html:
  • fast/layoutformattingcontext/inline-max-width-height-simple-expected.html:
  • fast/layoutformattingcontext/inline-max-width-height-simple.html:
  • fast/layoutformattingcontext/inline-text-outside-of-inline-container-simple-expected.html:
  • fast/layoutformattingcontext/inline-text-outside-of-inline-container-simple.html:
  • fast/layoutformattingcontext/intrusive-floats-and-stretchy-lines-simple-expected.html:
  • fast/layoutformattingcontext/intrusive-floats-and-stretchy-lines-simple.html:
  • fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space-expected.html:
  • fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space.html:
  • fast/layoutformattingcontext/line-heigt-when-text-is-inside-inline-container-expected.html:
  • fast/layoutformattingcontext/line-heigt-when-text-is-inside-inline-container.html:
  • fast/layoutformattingcontext/max-content-and-box-sizing-simple-expected.html:
  • fast/layoutformattingcontext/max-content-and-box-sizing-simple.html:
  • fast/layoutformattingcontext/min-max-content-width-simple-expected.html:
  • fast/layoutformattingcontext/min-max-content-width-simple.html:
  • fast/layoutformattingcontext/min-max-content-width-simple2-expected.html:
  • fast/layoutformattingcontext/min-max-content-width-simple2.html:
  • fast/layoutformattingcontext/min-max-content-width-with-floats-simple-expected.html:
  • fast/layoutformattingcontext/min-max-content-width-with-floats-simple.html:
  • fast/layoutformattingcontext/min-max-content-width-with-nested-floats-simple-expected.html:
  • fast/layoutformattingcontext/min-max-content-width-with-nested-floats-simple.html:
  • fast/layoutformattingcontext/out-of-flow-html-and-body-stretches-to-viewport.html:
  • fast/layoutformattingcontext/out-of-flow-positioned-line-breaks.html:
  • fast/layoutformattingcontext/out-of-flow-with-non-fixed-height-simple-expected.html:
  • fast/layoutformattingcontext/out-of-flow-with-non-fixed-height-simple.html:
  • fast/layoutformattingcontext/overflow-at-inline-box-boundary-simple-expected.html:
  • fast/layoutformattingcontext/overflow-at-inline-box-boundary-simple.html:
  • fast/layoutformattingcontext/quirk-margin-not-collapse-when-floating-expected.html:
  • fast/layoutformattingcontext/quirk-margin-not-collapse-when-floating.html:
  • fast/layoutformattingcontext/replaced-and-trailing-trimmable-content-expected.html:
  • fast/layoutformattingcontext/replaced-and-trailing-trimmable-content.html:
  • fast/layoutformattingcontext/replaced-box-with-margin-on-baseline-expected.html:
  • fast/layoutformattingcontext/replaced-box-with-margin-on-baseline.html:
  • fast/layoutformattingcontext/run-expansion-extends-line-content-width-expected.html:
  • fast/layoutformattingcontext/run-expansion-extends-line-content-width.html:
  • fast/layoutformattingcontext/simple-absolute-positioned-inline-element-expected.html:
  • fast/layoutformattingcontext/simple-absolute-positioned-inline-element.html:
  • fast/layoutformattingcontext/simple-absolute-positioned-replaced-inline-element-with-percentage-height-expected.html:
  • fast/layoutformattingcontext/simple-absolute-positioned-replaced-inline-element-with-percentage-height.html:
  • fast/layoutformattingcontext/simple-inline-block-expected.html:
  • fast/layoutformattingcontext/simple-inline-block.html:
  • fast/layoutformattingcontext/simple-table-with-empty-td.html:
  • fast/layoutformattingcontext/subframe-with-display-none-html-expected.html:
  • fast/layoutformattingcontext/subframe-with-display-none-html.html:
  • fast/layoutformattingcontext/table-basic-row-baseline-align.html:
  • fast/layoutformattingcontext/table-basic-row-baseline-with-nested-table.html:
  • fast/layoutformattingcontext/table-basic-row-vertical-align-baseline.html:
  • fast/layoutformattingcontext/table-cell-baseline-offset-simple-expected.html:
  • fast/layoutformattingcontext/table-cell-baseline-offset-simple.html:
  • fast/layoutformattingcontext/table-cell-baseline-offset-simple2-expected.html:
  • fast/layoutformattingcontext/table-cell-baseline-offset-simple2.html:
  • fast/layoutformattingcontext/table-cell-height-middle-align-simple-expected.html:
  • fast/layoutformattingcontext/table-cell-height-middle-align-simple.html:
  • fast/layoutformattingcontext/table-cell-vertical-alignment-simple-expected.html:
  • fast/layoutformattingcontext/table-cell-vertical-alignment-simple.html:
  • fast/layoutformattingcontext/table-colspan-simple-expected.html:
  • fast/layoutformattingcontext/table-colspan-simple.html:
  • fast/layoutformattingcontext/table-fixed-row-height-simple-expected.html:
  • fast/layoutformattingcontext/table-fixed-row-height-simple.html:
  • fast/layoutformattingcontext/table-fixed-width-colspans.html:
  • fast/layoutformattingcontext/table-fixed-width-variations-simple-expected.html:
  • fast/layoutformattingcontext/table-fixed-width-variations-simple.html:
  • fast/layoutformattingcontext/table-fixed-width-with-max-distribution.html:
  • fast/layoutformattingcontext/table-flex-width-border-collapse.html:
  • fast/layoutformattingcontext/table-flex-width-colspans.html:
  • fast/layoutformattingcontext/table-min-max-flex-distribution-simple-expected.html:
  • fast/layoutformattingcontext/table-min-max-flex-distribution-simple.html:
  • fast/layoutformattingcontext/table-min-max-width-empty-content-simple-expected.html:
  • fast/layoutformattingcontext/table-min-max-width-empty-content-simple.html:
  • fast/layoutformattingcontext/table-min-max-width-simple-expected.html:
  • fast/layoutformattingcontext/table-min-max-width-simple.html:
  • fast/layoutformattingcontext/table-missing-cells-simple-expected.html:
  • fast/layoutformattingcontext/table-missing-cells-simple.html:
  • fast/layoutformattingcontext/table-quirk-vertical-margin-simple-expected.html:
  • fast/layoutformattingcontext/table-quirk-vertical-margin-simple.html:
  • fast/layoutformattingcontext/table-simple-border-collapse-expected.html:
  • fast/layoutformattingcontext/table-simple-border-collapse-with-padding-expected.html:
  • fast/layoutformattingcontext/table-simple-border-collapse-with-padding.html:
  • fast/layoutformattingcontext/table-simple-border-collapse.html:
  • fast/layoutformattingcontext/table-simple-border-collapse2-expected.html:
  • fast/layoutformattingcontext/table-simple-border-collapse2.html:
  • fast/layoutformattingcontext/table-simple-border-collapse3-expected.html:
  • fast/layoutformattingcontext/table-simple-border-collapse3.html:
  • fast/layoutformattingcontext/table-simple-collapsed-row-border-expected.html:
  • fast/layoutformattingcontext/table-simple-collapsed-row-border.html:
  • fast/layoutformattingcontext/table-simple-collapsed-row-border2-expected.html:
  • fast/layoutformattingcontext/table-simple-collapsed-row-border2.html:
  • fast/layoutformattingcontext/table-simple-collapsed-tbody-border-expected.html:
  • fast/layoutformattingcontext/table-simple-collapsed-tbody-border.html:
  • fast/layoutformattingcontext/table-simple-fixed-width-with-wide-content-expected.html:
  • fast/layoutformattingcontext/table-simple-fixed-width-with-wide-content.html:
  • fast/layoutformattingcontext/table-simple-multiple-sections-expected.html:
  • fast/layoutformattingcontext/table-simple-multiple-sections-with-border-spacing-and-collapse-expected.html:
  • fast/layoutformattingcontext/table-simple-multiple-sections-with-border-spacing-and-collapse.html:
  • fast/layoutformattingcontext/table-simple-multiple-sections.html:
  • fast/layoutformattingcontext/table-simple-row-border-expected.html:
  • fast/layoutformattingcontext/table-simple-row-border.html:
  • fast/layoutformattingcontext/table-simple-rowspan-with-spacing-expected.html:
  • fast/layoutformattingcontext/table-simple-rowspan-with-spacing.html:
  • fast/layoutformattingcontext/table-simple-tall-cell-content-with-fixed-height-expected.html:
  • fast/layoutformattingcontext/table-simple-tall-cell-content-with-fixed-height.html:
  • fast/layoutformattingcontext/table-simple-thead-border-ignore-expected.html:
  • fast/layoutformattingcontext/table-simple-thead-border-ignore.html:
  • fast/layoutformattingcontext/table-simple-with-border.html:
  • fast/layoutformattingcontext/table-simple-with-fixed-widht-and-inline-content.html:
  • fast/layoutformattingcontext/table-simple-with-padding.html:
  • fast/layoutformattingcontext/table-space-distribution-mixed-width-type-simple-expected.html:
  • fast/layoutformattingcontext/table-space-distribution-mixed-width-type-simple.html:
  • fast/layoutformattingcontext/table-space-distribution-simple-expected.html:
  • fast/layoutformattingcontext/table-space-distribution-simple-mismatching.html:
  • fast/layoutformattingcontext/table-space-distribution-simple.html:
  • fast/layoutformattingcontext/table-space-distribution-simple2-expected.html:
  • fast/layoutformattingcontext/table-space-distribution-simple2.html:
  • fast/layoutformattingcontext/table-space-mixed-width-type-simple3-expected.html:
  • fast/layoutformattingcontext/table-space-mixed-width-type-simple3.html:
  • fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple-expected.html:
  • fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple.html:
  • fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple2-expected.html:
  • fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple2.html:
  • fast/layoutformattingcontext/table-space-width-100-percent-quirk-expected.html:
  • fast/layoutformattingcontext/table-space-width-100-percent-quirk.html:
  • fast/layoutformattingcontext/table-with-column-spanner-first-row.html:
  • fast/layoutformattingcontext/table-with-margin-content-simple-expected.html:
  • fast/layoutformattingcontext/table-with-margin-content-simple.html:
  • fast/layoutformattingcontext/table-with-margin-simple-expected.html:
  • fast/layoutformattingcontext/table-with-margin-simple.html:
  • fast/layoutformattingcontext/table-with-padding-and-border-simple-expected.html:
  • fast/layoutformattingcontext/table-with-padding-and-border-simple.html:
  • fast/layoutformattingcontext/table-with-percent-columns-and-spacing-expected.html:
  • fast/layoutformattingcontext/table-with-percent-columns-and-spacing.html:
  • fast/layoutformattingcontext/table-with-percent-columns-only-no-content-expected.html:
  • fast/layoutformattingcontext/table-with-percent-columns-only-no-content.html:
  • fast/layoutformattingcontext/table-with-percent-columns-simple-expected.html:
  • fast/layoutformattingcontext/table-with-percent-columns-simple.html:
  • fast/layoutformattingcontext/table-with-percent-height-descendant.html:
  • fast/layoutformattingcontext/vertical-align-bottom-nested-expected.html:
  • fast/layoutformattingcontext/vertical-align-bottom-nested.html:
  • fast/layoutformattingcontext/vertical-align-middle-nested-expected.html:
  • fast/layoutformattingcontext/vertical-align-middle-nested.html:
  • fast/layoutformattingcontext/vertical-align-middle-simple-expected.html:
  • fast/layoutformattingcontext/vertical-align-middle-simple.html:
  • fast/layoutformattingcontext/vertical-align-top-nested-expected.html:
  • fast/layoutformattingcontext/vertical-align-top-nested.html:
  • fast/layoutformattingcontext/wbr-simple-expected.html:
  • fast/layoutformattingcontext/wbr-simple.html:
  • fast/multicol/orphans-ignored-expected.html:
  • fast/multicol/orphans-ignored.html:
  • fast/repaint/implicitly-positioned-block-repaint-complex-line-layout.html:
  • fast/replaced/width100percent-textarea.html:
  • fast/text/embed-at-end-of-pre-wrap-line-simple-lines-expected.html:
  • fast/text/embed-at-end-of-pre-wrap-line-simple-lines.html:
  • fast/text/embed-at-end-of-pre-wrap-line.html:
  • fast/text/font-with-no-space-glyph-expected.html:
  • fast/text/font-with-no-space-glyph.html:
  • fast/text/line-runs-rounding-simple-lines-expected.html:
  • fast/text/mark-matches-rendering-simple-lines-expected.html:
  • fast/text/multiple-renderers-with-hypen-on-boundary-expected.html:
  • fast/text/negative-letter-spacing-visual-overflow-expected.html:
  • fast/text/newline-width-expected.html:
  • fast/text/newline-width.html:
  • fast/text/no-wrap-in-pre-with-word-wrap-expected.html:
  • fast/text/no-wrap-in-pre-with-word-wrap.html:
  • fast/text/overflow-wrap-break-word-004.html:
  • fast/text/overflow-wrap-break-word-005.html:
  • fast/text/overflow-wrap-break-word-007.html:
  • fast/text/simple-line-hyphens-with-text-align-expected.html:
  • fast/text/simple-line-hyphens-with-word-letter-spacing-expected.html:
  • fast/text/simple-line-layout-and-multiline-inlineboxtree-expected.html:
  • fast/text/simple-line-layout-and-multiline-inlineboxtree.html:
  • fast/text/simple-line-layout-dynamic-letter-word-spacing-expected.html:
  • fast/text/simple-line-layout-fallback-space-glyph-expected.html:
  • fast/text/simple-line-layout-glyph-overflows-line-expected.html:
  • fast/text/simple-line-layout-hyphen-limit-after-expected.html:
  • fast/text/simple-line-layout-hyphen-limit-before-expected.html:
  • fast/text/simple-line-layout-hyphen-limit-lines-expected.html:
  • fast/text/simple-line-layout-hyphen-limit-lines2-expected.html:
  • fast/text/simple-line-layout-hyphenation-limit-lines-accross-words-expected.html:
  • fast/text/simple-line-layout-leading-whitespace-with-soft-hard-linebreak-expected.html:
  • fast/text/simple-line-layout-leading-whitespace-with-soft-hard-linebreak.html:
  • fast/text/simple-line-layout-line-box-contain-glyphs-expected.html:
  • fast/text/simple-line-layout-line-box-contain-glyphs.html:
  • fast/text/simple-line-layout-multiple-renderers-non-breaking-space-expected.html:
  • fast/text/simple-line-layout-multiple-renderers-with-float-expected.html:
  • fast/text/simple-line-layout-selection-with-overflow-expected.html:
  • fast/text/simple-line-layout-text-position-with-stroke-expected.html:
  • fast/text/simple-line-layout-with-justified-punctuation-expected.html:
  • fast/text/simple-line-layout-wrapping-multiple-renderers-hang-expected.html:
  • fast/text/simple-line-letterspacing-expected.html:
  • fast/text/simple-line-text-indent-expected.html:
  • fast/text/simple-line-text-measuring-with-trailing-space-expected.html:
  • fast/text/simple-line-with-br-expected.html:
  • fast/text/simple-line-with-multiple-renderers-expected.html:
  • fast/text/simple-line-wordspacing-expected.html:
  • fast/text/simple-lines-float-compare-expected.html:
  • fast/text/simple-lines-float-expected.html:
  • fast/text/simple-lines-float.html:
  • fast/text/simple-lines-intruding-wide-float-expected.html:
  • fast/text/simple-lines-range-low-line-height-expected.html:
  • fast/text/simple-lines-text-transform-expected.html:
  • fast/text/simple-lines-text-transform.html:
  • fast/text/whitespace/pre-wrap-008.html:
  • fast/text/whitespace/pre-wrap-015.html:
  • fast/text/whitespace/pre-wrap-016.html:
  • fast/text/whitespace/pre-wrap-line-test-simple-lines-expected.html:
  • fast/text/whitespace/pre-wrap-line-test.html:
  • fast/text/whitespace/pre-wrap-long-word-simple-lines-expected.html:
  • fast/text/whitespace/pre-wrap-long-word-simple-lines.html:
  • fast/text/whitespace/pre-wrap-spaces-after-newline-simple-lines-expected.html:
  • fast/text/whitespace/pre-wrap-spaces-after-newline.html:
  • fast/text/whitespace/simple-line-layout-tab-position-expected.html:
  • fast/text/word-break-break-all-010.html:
  • fast/text/word-break-break-all-011.html:
  • printing/simple-lines-break-expected.html:
2:10 PM Changeset in webkit [293113] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] imported/blink/fast/text/international-iteration-simple-text.html is a flaky failure
Adding test expectation for newly affected macOS wk2
https://bugs.webkit.org/show_bug.cgi?id=179853

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249819@main

1:56 PM Changeset in webkit [293112] by mmaxfield@apple.com
  • 5 edits in trunk/LayoutTests

[WebGPU] Unskip api/validation/createTexture.html 🎉
https://bugs.webkit.org/show_bug.cgi?id=239447

Reviewed by Kimmo Kinnunen.

It passes now!!!!

  • http/tests/webgpu/webgpu/api/validation/createTexture-expected.txt:
  • platform/ios-device-wk1/TestExpectations:
  • platform/ios-simulator-wk1/TestExpectations:
  • platform/mac-wk1/TestExpectations:
1:18 PM Changeset in webkit [293111] by commit-queue@webkit.org
  • 5 edits in trunk

Unreviewed, reverting r292508.
https://bugs.webkit.org/show_bug.cgi?id=239561

Links to test results are partly broken in layout-tests-
results/results.html

Reverted changeset:

"Fix expected, actual links for variant-based imported wpt
tests"
https://bugs.webkit.org/show_bug.cgi?id=238832
https://commits.webkit.org/r292508

12:38 PM Changeset in webkit [293110] by Chris Dumez
  • 7 edits in trunk/Source/WebCore

Avoid repeated calls to eventNames() in a few more places
https://bugs.webkit.org/show_bug.cgi?id=239548

Reviewed by Yusuke Suzuki.

Avoid repeated calls to eventNames() in a few more places given that it accesses threadGlobalData().

  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::create):

  • dom/SimulatedClick.cpp:

(WebCore::simulateClick):

  • dom/ios/PointerEventIOS.cpp:

(WebCore::buttonsForType):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::eventListenersDidChange):

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchDragEvent):

  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::cancelPointer):

12:30 PM Changeset in webkit [293109] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk/Tools

[PGO] run-benchmark should allow pgo profiles to be collected during a benchmark run
https://bugs.webkit.org/show_bug.cgi?id=239313

Add a --profile-output-directory to run-benchmark.
Add helper scripts pgo-profile-merge and pgo-profile-summarize to simplify handling profile output.
Add a script called build-and-collect-pgo-profiles that automates everything.

Reviewed by Dewei Zhu.

  • Tools/Scripts/pgo-profile-merge: Added.
  • Tools/Scripts/pgo-profile-summarize: Added.
  • Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py:

(BenchmarkRunner.init):

  • Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py:

(config_argument_parser):
(parse_args):
(run_benchmark_plan):

  • Tools/Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py:

(WebServerBenchmarkRunner.init):
(WebServerBenchmarkRunner._get_result):
(WebServerBenchmarkRunner._run_one_test): Deleted.

Canonical link: https://commits.webkit.org/249815@main

11:36 AM Changeset in webkit [293108] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] fast/scrolling/overflow-scroll-past-max.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=239554

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249814@main

10:53 AM Changeset in webkit [293107] by Alan Coon
  • 1 edit in branches/safari-613-branch/Source/WebCore/animation/KeyframeEffect.cpp

Unreviewed build fix. rdar://problem/88672183

./animation/KeyframeEffect.cpp:644:9: error: use of undeclared identifier 'computedKeyframeList'; did you mean 'computedKeyframes'?

10:43 AM Changeset in webkit [293106] by mmaxfield@apple.com
  • 9 edits
    2 copies in trunk/Source

[WebGPU] WebKit and WebKitLegacy shouldn't need to know about WebGPU.framework
https://bugs.webkit.org/show_bug.cgi?id=239528
<rdar://problem/91740931>

Unreviewed build fix.

Source/WebCore/PAL:

WebKit and WebKitLegacy create a WebGPU implementation from pal/graphics/WebGPU/Impl. This implementation
knows about WebGPU.framework. However, the create() function doesn't need to know about WebGPU.framework,
and its header doesn't need to include <WebGPU/WebGPU.h>. Only the .cpp files need to know about
<WebGPU/WebGPU.h>, and those .cpp files are invisible from WebKit and WebKitLegacy's points of view. So,
this patch splits the PAL header into:

  1. A header which includes a creation function, but doesn't know about WebGPU.framework, and
  2. A header which knows about WebGPU.framework, but doesn't hold the creation function used by WebKit or

WebKitLegacy.

This fixes one of Apple's internal builds.

  • PAL.xcodeproj/project.pbxproj:
  • pal/graphics/WebGPU/Impl/WebGPUCreateImpl.cpp: Copied from Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUImpl.cpp.

(PAL::WebGPU::create):

  • pal/graphics/WebGPU/Impl/WebGPUCreateImpl.h: Copied from Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUImpl.h.
  • pal/graphics/WebGPU/Impl/WebGPUImpl.cpp:

(PAL::WebGPU::GPUImpl::create): Deleted.

  • pal/graphics/WebGPU/Impl/WebGPUImpl.h:

Source/WebKit:

  • GPUProcess/graphics/WebGPU/RemoteGPU.cpp:

(WebKit::RemoteGPU::workQueueInitialize):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createGPUForWebGPU const):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::createGPUForWebGPU const):

10:33 AM Changeset in webkit [293105] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=239546

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249812@main

10:24 AM Changeset in webkit [293104] by Alan Coon
  • 12 edits in branches/safari-613-branch/Source

Cherry-pick r289100. rdar://problem/79950080

Teach VideoFullscreenInterface to keep track of its corresponding MediaPlayer's MediaPlayerIdentifier
https://bugs.webkit.org/show_bug.cgi?id=236090

Reviewed by Eric Carlson.

Source/WebCore:

Add plumbing for an optional MediaPlayerIdentifier through the video fullscreen model. This identifier is
invalidated upon loadstart, and updated once we observe loadedmetadata, which ensures that if the media
engine (and media player) changes out from underneath the video fullscreen model, we still keep the new player
ID up to date.

See WebKit/ChangeLog for more details.

  • platform/cocoa/VideoFullscreenModel.h: (WebCore::VideoFullscreenModelClient::setPlayerIdentifier):
  • platform/cocoa/VideoFullscreenModelVideoElement.h:
  • platform/cocoa/VideoFullscreenModelVideoElement.mm: (WebCore::VideoFullscreenModelVideoElement::updateForEventName): (WebCore::VideoFullscreenModelVideoElement::observedEventNames):

Additionally listen for loadstartEvent and loadedmetadataEvent (see above).

(WebCore::VideoFullscreenModelVideoElement::setPlayerIdentifier):

  • platform/ios/VideoFullscreenInterfaceAVKit.h:
  • platform/mac/VideoFullscreenInterfaceMac.h: (WebCore::VideoFullscreenInterfaceMac::playerIdentifier const):

Source/WebKit:

Add an IPC message between VideoFullscreenManager and VideoFullscreenManagerProxy to update the media player ID
corresponding to a given PlaybackSessionContextIdentifier. This is sent if the underlying media player changes
(and subsequently fires loadstart and loadedmetadata events), and also sent upon entering fullscreen video.

In a future patch, this mechanism will be used to teach VideoFullscreenManagerProxy to grab an image bitmap from
the GPU process for a given PlaybackSessionContextIdentifier.

  • UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: (WebKit::VideoFullscreenManagerProxy::setPlayerIdentifier):
  • WebProcess/cocoa/VideoFullscreenManager.h:
  • WebProcess/cocoa/VideoFullscreenManager.mm: (WebKit::VideoFullscreenInterfaceContext::setPlayerIdentifier): (WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement): (WebKit::VideoFullscreenManager::setPlayerIdentifier):

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

10:24 AM Changeset in webkit [293103] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore/Modules/fetch

Unreviewed build fix. rdar://problem/91446363

Source/WebCore/Modules/fetch/FormDataConsumer.h:56:18: error: 'auto' not allowed in function prototype

10:09 AM Changeset in webkit [293102] by Russell Epstein
  • 10 edits in branches/safari-614.1.10-branch

Cherry-pick r293043. rdar://problem/91910145

Various WebKit tools need to be told about the system content path
https://bugs.webkit.org/show_bug.cgi?id=239516

Reviewed by Ryan Haddad.

Source/JavaScriptCore:

Added the INSTALL_PATH_PREFIX to the INSTALL_PATH for TestAPI and the JSC tools.
This will contain the system content path prefix when enabled.

  • Configurations/TestAPI.xcconfig:
  • Configurations/ToolExecutable.xcconfig:

Tools:

Added the INSTALL_PATH_PREFIX to the INSTALL_PATH for the webkit test tools.
This will contain the system content path prefix when enabled.

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
  • DumpRenderTree/mac/Configurations/LayoutTestHelper.xcconfig:
  • DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/BaseTarget.xcconfig:

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

10:08 AM Changeset in webkit [293101] by mmaxfield@apple.com
  • 110 edits
    29 adds in trunk

[WebGPU] Update WebGPU CTS to revision 549d7c2f1637321a9247f0a3ab022f919e5ca5da
https://bugs.webkit.org/show_bug.cgi?id=239444

Reviewed by Kimmo Kinnunen.

Tools:

  • Scripts/import-webgpu-cts:

LayoutTests:

This includes a fix for api/validation/createTexture.

  • http/tests/webgpu/common/framework/fixture.js:

(export.Fixture.prototype.eventualExpectOK):
(export.Fixture):

  • http/tests/webgpu/common/internal/version.js:
  • http/tests/webgpu/cts.https.html:
  • http/tests/webgpu/webgpu/api/operation/adapter/requestDevice_limits.spec.js:

(g.test.string_appeared_here.desc.Test.that.specifying.limits.that.aren.requestDevice.to.reject.fn.async t):
(string_appeared_here.fn.async t):
(kLimits.beginSubcases.expandWithParams.p.switch.case):
(kLimits.beginSubcases.expandWithParams.p.switch):
(fn.async t):
(fn.async t.switch.case):
(65535.fn.async t): Deleted.

  • http/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.spec.js:

(F.prototype.GetRenderPipelineForT2TCopyWithDepthTests):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.spec.js:

(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.async checkStencilTextureContent):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.DoCopyTextureToBufferWithDepthAspectTest):
(0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/programmable_state_test.js:

(export.ProgrammableStateTest.prototype.createBindingStatePipeline):

  • http/tests/webgpu/webgpu/api/operation/command_buffer/render/state_tracking.spec.js:

(VertexAndIndexStateTrackingTest.prototype.GetRenderPipelineForTest):
(VertexAndIndexStateTrackingTest):
(The.test.verifies.both.of.these.two.draw.calls.work.correctly.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/compute/basic.spec.js:

(g.test.string_appeared_here.fn.async t):
(kMaxComputeWorkgroupSize.p.largeDimension.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/buffer_sync_test.js:

(export.checkOpsValidForContext):
(export.BufferSyncTest.prototype.async createIntermediateBuffersAndTexturesForWriteOp):
(export.BufferSyncTest.prototype.async createBuffersForReadOp):
(export.BufferSyncTest.prototype.async createBufferWithValue):
(export.BufferSyncTest.prototype.async createBufferWithValues):
(export.BufferSyncTest.prototype.async createTextureWithValue):
(export.BufferSyncTest.prototype.createStorageWriteComputePipeline):
(export.BufferSyncTest.prototype.createTrivialRenderPipeline):
(export.BufferSyncTest.prototype.createStorageWriteRenderPipeline):
(export.BufferSyncTest.prototype.beginSimpleRenderPass):
(export.BufferSyncTest.prototype.encodeWriteAsStorageBufferInRenderPass):
(export.BufferSyncTest.prototype.encodeWriteAsStorageBufferInComputePass):
(export.BufferSyncTest.prototype.encodeWriteByB2BCopy):
(export.BufferSyncTest.prototype.encodeWriteByT2BCopy):
(export.BufferSyncTest.prototype.writeByWriteBuffer):
(export.BufferSyncTest.prototype.encodeWriteOp):
(export.BufferSyncTest.prototype.createStorageReadComputePipeline):
(export.BufferSyncTest.prototype.createBindGroupSrcDstBuffer):
(export.BufferSyncTest.prototype.createVertexReadRenderPipeline):
(export.BufferSyncTest.prototype.createUniformReadRenderPipeline):
(export.BufferSyncTest.prototype.createStorageReadRenderPipeline):
(export.BufferSyncTest.prototype.encodeReadAsStorageBufferInComputePass):
(export.BufferSyncTest.prototype.encodeReadAsIndirectBufferInComputePass):
(export.BufferSyncTest.prototype.encodeReadAsVertexBufferInRenderPass):
(export.BufferSyncTest.prototype.encodeReadAsIndexBufferInRenderPass):
(export.BufferSyncTest.prototype.encodeReadAsIndirectBufferInRenderPass):
(export.BufferSyncTest.prototype.encodeReadAsIndexedIndirectBufferInRenderPass):
(export.BufferSyncTest.prototype.encodeReadAsUniformBufferInRenderPass):
(export.BufferSyncTest.prototype.encodeReadAsStorageBufferInRenderPass):
(export.BufferSyncTest.prototype.encodeReadByB2BCopy):
(export.BufferSyncTest.prototype.encodeReadByB2TCopy):
(export.BufferSyncTest.prototype.encodeReadOp):
(export.BufferSyncTest.prototype.async encodeWriteByB2BCopy): Deleted.
(export.BufferSyncTest.prototype.async encodeWriteByT2BCopy): Deleted.
(export.BufferSyncTest.prototype.async encodeWriteOp): Deleted.
(export.BufferSyncTest.prototype.async createCommandBufferWithWriteOp): Deleted.
(export.BufferSyncTest.prototype.async submitWriteOp): Deleted.

  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/multiple_buffers.html: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/multiple_buffers.spec.js: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/single_buffer-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/single_buffer.html: Added.
  • http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/single_buffer.spec.js: Added.

(p.kBoundaryInfo.p.boundary.contexts.expandWithParams):
(fn.async t):
(true.fn.async t):
(g.test.string_appeared_here.desc.Test.write.after.write.operations.in.the.same.render.bundle.The.first.write.will.write.1.into.a.storage.buffer.The.second.write.will.write.2.into.the.same.buffer.in.the.same.pass.Expected.data.in.buffer.is.either.1.or.2.fn.async t):
(g.test.string_appeared_here.desc.Test.write.after.write.operations.in.the.same.compute.pass.The.first.write.will.write.1.into.a.storage.buffer.The.second.write.will.write.2.into.the.same.buffer.in.the.same.pass.Expected.data.in.buffer.is.2.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/memory_sync/operation_context_helper.js: Added.

(combineContexts):
(export.OperationContextHelper):
(export.OperationContextHelper.prototype.ensureSubmit):
(export.OperationContextHelper.prototype.popContext):
(export.OperationContextHelper.prototype.makeDummyAttachment):
(export.OperationContextHelper.prototype.ensureContext):
(export.OperationContextHelper.prototype.flushRenderBundles):
(export.OperationContextHelper.prototype.flushCommandBuffers):
(export.OperationContextHelper.prototype.ensureBoundary):

  • http/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource.spec.js:

(TextureSyncTestHelper):
(TextureSyncTestHelper.prototype.performWriteOp):
(TextureSyncTestHelper.prototype.ensureSubmit): Deleted.
(TextureSyncTestHelper.prototype.popContext): Deleted.
(TextureSyncTestHelper.prototype.makeDummyAttachment): Deleted.
(TextureSyncTestHelper.prototype.ensureContext): Deleted.
(TextureSyncTestHelper.prototype.flushRenderBundles): Deleted.
(TextureSyncTestHelper.prototype.flushCommandBuffers): Deleted.
(TextureSyncTestHelper.prototype.ensureBoundary): Deleted.

  • http/tests/webgpu/webgpu/api/operation/memory_sync/texture/texture_sync_test.js:

(combineContexts): Deleted.

  • http/tests/webgpu/webgpu/api/operation/render_pass/resolve.spec.js:
  • http/tests/webgpu/webgpu/api/operation/render_pass/storeOp.spec.js:

(kArrayLayers.fn.t.else):

  • http/tests/webgpu/webgpu/api/operation/rendering/basic.spec.js:
  • http/tests/webgpu/webgpu/api/operation/rendering/blending.spec.js:
  • http/tests/webgpu/webgpu/api/operation/rendering/depth.spec.js:
  • http/tests/webgpu/webgpu/api/operation/rendering/depth_clip_clamp.spec.js:

(fn.async t):

  • http/tests/webgpu/webgpu/api/operation/rendering/draw.spec.js:

(9.undefined.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/resource_init/buffer.spec.js:
  • http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_copy.js:

(export.const.checkContentsByBufferCopy):
(export.const.checkContentsByTextureCopy):

  • http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_ds_test.js:

(const.checkContents):

  • http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_sampling.js:

(export.const.checkContentsBySampling):

  • http/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.spec.js:

(export.TextureZeroInitTest.prototype.initializeWithStoreOp):
(export.TextureZeroInitTest.prototype.discardTexture):
(export.TextureZeroInitTest):

  • http/tests/webgpu/webgpu/api/operation/sampling/anisotropy.spec.js:

(SamplerAnisotropicFilteringSlantedPlaneTest.prototype.async init):

  • http/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation.html: Added.
  • http/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation.spec.js: Added.

(makeInputTexelView):
(viewFormat.fn.async t):
(4.fn.async t):

  • http/tests/webgpu/webgpu/api/operation/texture_view/read.spec.js:
  • http/tests/webgpu/webgpu/api/operation/texture_view/write.spec.js:
  • http/tests/webgpu/webgpu/api/operation/vertex_state/correctness.spec.js:

(prototype.makeTestWGSL):

  • http/tests/webgpu/webgpu/api/validation/attachment_compatibility.spec.js:

(F.prototype.createColorAttachment):
(F.prototype.createRenderPipeline):
(F):
(string_appeared_here.filter.p.p.format.depthStencilInfo.stencil):
(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/buffer/create.spec.js:
  • http/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/createBindGroupLayout.spec.js:

(prototype.async g): Deleted.

  • http/tests/webgpu/webgpu/api/validation/createComputePipeline.spec.js:

(making.sure.that.the.test.working):

  • http/tests/webgpu/webgpu/api/validation/createRenderPipeline.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/createTexture.spec.js:

(format.unless):
(2.fn.async t):
(fn.async t):
(format.fn.async t):
(kTextureFormats.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/createView.spec.js:

(true.fn.async t):
(kTextureFormats.fn.async t): Deleted.

  • http/tests/webgpu/webgpu/api/validation/encoding/beginRenderPass.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/buffer_texture_copies.spec.js:

(string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/clearBuffer.spec.js:

(kResourceStates.fn.async t):
(false.fn.async t):
(g.test.string_appeared_here.desc.Test.that.clearing.an.error.buffer.fails.fn.async t): Deleted.

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyBufferToBuffer.spec.js:

(F.prototype.TestCopyBufferToBuffer):
(F):
(kResourceStates.fn.async t):
(fn.async t):
(kBufferUsages.fn.async t):
(g.test.string_appeared_here.fn.async t): Deleted.

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js:

(fn.async t):
(kTextureFormats.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/indirect_draw.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setIndexBuffer.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setPipeline.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/state_tracking.spec.js:

(F.prototype.createRenderPipeline):

  • http/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/programmable/pipeline_bind_group_compat.spec.js:

(F.prototype.createComputePipelineWithLayout):

  • http/tests/webgpu/webgpu/api/validation/encoding/queries/general.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/queries/resolveQuerySet.spec.js:

(g.test.string_appeared_here.desc.Tests.that.resolve.query.set must.be.with.valid.query.set and):
(g.test.string_appeared_here.desc.Tests.that.resolve.query.set must):
(kResourceStates.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/encoding/render_bundle.spec.js:

(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.spec.js:

(kResourceStates.fn.async t):
(false.fn.async t):
(fn.async t):
(bytesPerRow.undefined.copyHeightInBlocks.1.bytesPerRow.undefined.bytesPerRow.kTextureFormatInfo.format.bytesPerBlock.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/image_copy/image_copy.js:

(export.ImageCopyTest.prototype.testBuffer):
(export.ImageCopyTest):

  • http/tests/webgpu/webgpu/api/validation/image_copy/layout_related.spec.js:

(fn.async t):
(unless.p.p.dimension.string_appeared_here.p.copyHeightInBlocks.1.p.copyDepth.1.fn.async t): Deleted.

  • http/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js:

(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js:
  • http/tests/webgpu/webgpu/api/validation/queue/submit.spec.js:

(fn.async t):

  • http/tests/webgpu/webgpu/api/validation/queue/writeBuffer.spec.js:

(kResourceStates.fn.async t):
(g.test.string_appeared_here.desc.Tests.that.the.data.ranges.given.to.GPUQueue.writeBuffer.are.properly.validated.Tests.calling.writeBuffer.with.both.TypedArrays.and.ArrayBuffers.and.checks.that.the.data.offset.and.size.is.interpreted.correctly.both.When.passing.a.TypedArray.the.data.offset.and.size.is.given.in.elements.When.passing.an.ArrayBuffer.the.data.offset.and.size.is.given.in.bytes.Also.verifies.that.the.specified.data.range.Describes.a.valid.range.of.the.destination.buffer.and.source.buffer.Fits.fully.within.the.destination.buffer.Has.a.byte.size.is.a.multiple.of.4.fn.async t.runTest):
(g.test.string_appeared_here.desc.Tests.that.the.data.ranges.given.to.GPUQueue.writeBuffer.are.properly.validated.Tests.calling.writeBuffer.with.both.TypedArrays.and.ArrayBuffers.and.checks.that.the.data.offset.and.size.is.interpreted.correctly.both.When.passing.a.TypedArray.the.data.offset.and.size.is.given.in.elements.When.passing.an.ArrayBuffer.the.data.offset.and.size.is.given.in.bytes.Also.verifies.that.the.specified.data.range.Describes.a.valid.range.of.the.destination.buffer.and.source.buffer.Fits.fully.within.the.destination.buffer.Has.a.byte.size.is.a.multiple.of.4.fn.async t):
(false.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/render_pass_descriptor.spec.js:

(true.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.spec.js:

(unless.p.kTextureFormatInfo.p.format.depth.kTextureFormatInfo.p.format.stencil.p.aspect0.string_appeared_here.p.type0.string_appeared_here.p.aspect1.string_appeared_here.p.type1.string_appeared_here.unless.p.p.binding1InBundle.p.type1.string_appeared_here.unless.p.p.compute.p.binding0InBundle.p.binding1InBundle.p.type1.string_appeared_here.fn.async t):

  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_common.spec.js:

(F.prototype.createBindGroupForTest):
(F.prototype.isRangeNotOverlapped):
(F):
(false.unless.t.t.inSamePass.t.level0.t.level1.fn.async t):
(false.fn.async t):
(false.unless.t.t.inSamePass.t.baseLevel0.t.baseLevel1.fn.async t): Deleted.

  • http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.js:

(F.prototype.createBindGroupLayoutForTest):
(F.prototype.createBindGroupForTest):
(F):
(false.fn.async t):
(usage0.string_appeared_here.usage0.string_appeared_here.usage1.string_appeared_here.usage1.string_appeared_here.fn.async t):
(or.different.subresources.of.the.same.texture.texture.usages.in.copies.and.in.render.pass.consecutively.set bind): Deleted.

  • http/tests/webgpu/webgpu/api/validation/state/device_lost/destroy-expected.txt: Added.
  • http/tests/webgpu/webgpu/api/validation/state/device_lost/destroy.html: Added.
  • http/tests/webgpu/webgpu/api/validation/state/device_lost/destroy.spec.js: Added.

(DeviceDestroyTests.prototype.async executeAfterDestroy):
(DeviceDestroyTests.prototype.async executeCommandsAfterDestroy):
(DeviceDestroyTests):
(false.filter):
(false.fn.async t):
(fn.async t):
(g.test.string_appeared_here.desc.Tests.creating.bind.group.on.destroyed.device.Tests.valid.combinations.of.Various.binded.resource.types.Various.valid.binding.entries.Maximum.set of):
(g.test.string_appeared_here.desc.Tests.creating.bind.group.layouts.on.destroyed.device.Tests.valid.combinations.of.Various.valid.binding.entries.Maximum.set of):

  • http/tests/webgpu/webgpu/api/validation/validation_test.js:

(export.ValidationTest.prototype.getNoOpShaderCode):
(export.ValidationTest.prototype.createNoOpRenderPipeline):
(export.ValidationTest.prototype.createNoOpComputePipeline):

  • http/tests/webgpu/webgpu/api/validation/vertex_state.spec.js:
  • http/tests/webgpu/webgpu/capability_info.js:

(export.resolvePerAspectFormat):
(export.viewCompatible):

  • http/tests/webgpu/webgpu/constants.js:
  • http/tests/webgpu/webgpu/gpu_test.js:

(export.GPUTest.prototype.expectSingleColor):
(export.GPUTest.prototype.readSinglePixelFrom2DTexture):
(export.GPUTest.prototype.async expectDeviceLost):
(export.GPUTest.prototype.makeTextureWithContents):
(export.GPUTest.prototype.createEncoder):
(export.GPUTest):
(export.GPUTest.prototype.async makeBufferWithContents): Deleted.

  • http/tests/webgpu/webgpu/listing.js:
  • http/tests/webgpu/webgpu/shader/execution/evaluation_order-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/evaluation_order.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/evaluation_order.spec.js: Added.

(run):

  • http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_arithmetic.spec.js:

(calculateResults):
(makeCaseImpl):
(4.fn.async t):
(fullNumericRange): Deleted.

  • http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_logical-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_logical.html: Added.
  • http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_logical.spec.js: Added.

(makeCase):
(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.spec.js:

(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.spec.js:

(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.spec.js:

(calculateMinMaxClamp):
(calculateMedianClamp):
(generateIntegerTestCases):
(generateFloatTestCases):
(4.fn.async t):
(generateTestCases): Deleted.

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.spec.js:

(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.spec.js:

(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/expression/expression.js:
  • http/tests/webgpu/webgpu/shader/execution/expression/unary/f32_arithmetic.spec.js:

(4.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/memory_model/memory_model_setup.js:
  • http/tests/webgpu/webgpu/shader/execution/robust_access.spec.js:

(runShaderTest):

  • http/tests/webgpu/webgpu/shader/execution/robust_access_vertex.spec.js:

(F.prototype.generateVertexShaderCode):

  • http/tests/webgpu/webgpu/shader/execution/sampling/gradients_in_varying_loop.spec.js:

(DerivativesTest.prototype.async init):

  • http/tests/webgpu/webgpu/shader/execution/shader_io/compute_builtins.spec.js:
  • http/tests/webgpu/webgpu/shader/execution/shader_io/shared_structs.spec.js:

(and.the.layout.attributes.should.be.ignored.when.used.as.an.entry.point.IO.parameter.fn.async t):
(and.uses.it.as.both.the.output.of.a.vertex.shader.and.the.input.to.a.fragment.shader.fn.async t):
(and.uses.those.structures.as.parameter.and.return.types.entry.point.functions.and.regular.functions.fn.async t):

  • http/tests/webgpu/webgpu/shader/execution/zero_init.spec.js:
  • http/tests/webgpu/webgpu/shader/types.js:
  • http/tests/webgpu/webgpu/shader/validation/shader_io/builtins.spec.js:
  • http/tests/webgpu/webgpu/shader/validation/shader_io/generic.spec.js:
  • http/tests/webgpu/webgpu/shader/validation/shader_io/invariant.spec.js:

(false.beginSubcases.fn.t.const.code.struct.VertexOut.location):

  • http/tests/webgpu/webgpu/shader/validation/shader_io/locations.spec.js:
  • http/tests/webgpu/webgpu/shader/validation/shader_io/util.js:

(export.generateShader):

  • http/tests/webgpu/webgpu/shader/validation/tokens-expected.txt: Added.
  • http/tests/webgpu/webgpu/shader/validation/tokens.html: Added.
  • http/tests/webgpu/webgpu/shader/validation/tokens.spec.js: Added.

(string_appeared_here.beginSubcases.fn.t.else):

  • http/tests/webgpu/webgpu/shader/validation/variable_and_const.spec.js:

(fn.t.prototype.else):

  • http/tests/webgpu/webgpu/util/check_contents.js:
  • http/tests/webgpu/webgpu/util/color_space_conversion.js:

(XYZ_to_lin_sRGB):
(lin_P3_to_XYZ):
(XYZ_to_lin_P3):
(export.makeInPlaceColorConversion):

  • http/tests/webgpu/webgpu/util/command_buffer_maker.js:

(export.CommandBufferMaker):

  • http/tests/webgpu/webgpu/util/conversion.js:

(export.floatAsNormalizedInteger):
(export.float32ToFloatBits):
(export.numberToFloatBits):

  • http/tests/webgpu/webgpu/util/copy_to_texture.js:

(export.CopyToTextureUtils.prototype.getExpectedPixels):
(export.CopyToTextureUtils.prototype.doTestAndCheckResult):
(export.CopyToTextureUtils):
(isFp16Format): Deleted.
(isFp32Format): Deleted.
(isUnormFormat): Deleted.
(export.CopyToTextureUtils.prototype.formatForExpectedPixels): Deleted.
(export.CopyToTextureUtils.prototype.getSourceImageBitmapPixels): Deleted.
(export.CopyToTextureUtils.prototype.checkCopyExternalImageResult): Deleted.
(export.CopyToTextureUtils.prototype.async checkBufferWithRowPitch): Deleted.

  • http/tests/webgpu/webgpu/util/create_elements.js:

(export.canCopyFromCanvasContext):
(export.createCanvas):

  • http/tests/webgpu/webgpu/util/device_pool.js:

(export.DevicePool.prototype.async reserve):
(export.DevicePool.prototype.async release):
(export.DevicePool):
(canonicalizeDescriptor):
(DeviceHolder.prototype.expectDeviceLost):

  • http/tests/webgpu/webgpu/util/math.js:
  • http/tests/webgpu/webgpu/util/texture.js: Added.

(export.makeTextureWithContents):

  • http/tests/webgpu/webgpu/util/texture/layout.js:

(export.getTextureCopyLayout):

  • http/tests/webgpu/webgpu/util/texture/texel_data.js:

(export.makeClampToRange):
(unpackComponentsBits):
(makeNormalizedInfo):
(makeIntegerInfo):
(makeFloatInfo):
(packComponents): Deleted.
(export.const.kTexelRepresentationInfo.rgba32float.makeFloatInfo): Deleted.
(export.getSingleDataType): Deleted.
(export.getComponentReadbackTraits): Deleted.

  • http/tests/webgpu/webgpu/util/texture/texel_view.js: Added.

(export.TexelView.prototype.fromTextureDataByReference):
(export.TexelView.fromTexelsAsBytes):
(export.TexelView.prototype.fromTexelsAsColors):
(export.TexelView.prototype.writeTextureData):
(export.TexelView):

  • http/tests/webgpu/webgpu/util/texture/texture_ok-expected.txt: Added.
  • http/tests/webgpu/webgpu/util/texture/texture_ok.html: Added.
  • http/tests/webgpu/webgpu/util/texture/texture_ok.js: Added.

(makeTexelViewComparer):
(makeTexelViewComparer.):

  • http/tests/webgpu/webgpu/util/texture/texture_ok.spec.js: Added.

(fn.async t):

  • http/tests/webgpu/webgpu/web_platform/canvas/readbackFromWebGPUCanvas.spec.js:

(allCanvasTypes.fn.async t): Deleted.

  • http/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.spec.js:

(makeTestColorsTexelView):
(F.prototype.generatePixel): Deleted.
(F.prototype.getImagePixels): Deleted.
(F): Deleted.
(fn.async t): Deleted.

  • http/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.spec.js:

(F.prototype.init2DCanvasContentWithColorSpace):
(F.prototype.init2DCanvasContent):
(F.prototype.initGLCanvasContent):
(F.prototype.getInitGPUCanvasData):
(F.prototype.initGPUCanvasContent):
(F.prototype.calculateSourceContentOnCPU):
(F):
(fn.async t):
(F.prototype.getTestImageURLByColorSpace): Deleted.

  • platform/ios-device-wk1/TestExpectations:
  • platform/ios-simulator-wk1/TestExpectations:
  • platform/mac-wk1/TestExpectations:
9:35 AM Changeset in webkit [293100] by Oriol Brufau
  • 4 edits in trunk/Source/WebCore

[css-cascade] Optimize code for deferred properties
https://bugs.webkit.org/show_bug.cgi?id=238260

Reviewed by Darin Adler.

CSS declarations for deferred properties were just appended to a vector,
which could grow huge. Then StyleBuilder would apply them one by one,
doing useless work if a property appeared multiple times.

The point of deferred properties is that they should be applied in
relative order. But if a property appears multiple times, we should only
care about the last occurrence.

So this patch removes the vector and instead stores the Property in the
same array as non-deferred properties. To track the indices, it uses an
array instead of a HashMap.

When applying the properties, the property IDs are placed in a vector,
which is then sorted according to the corresponding indices. This can
have some overhead, but the size of the vector will be limited by the
number of deferred properties. Currently there are only 8 of these (in
bug 236199 I plan to add 96 more, but 104 is still not that big).

No new tests since there should be no change in behavior.

  • style/PropertyCascade.cpp:

(WebCore::Style::PropertyCascade::buildCascade):
Call sortDeferredPropertyIDs().

(WebCore::Style::initializeCSSValue):
Move a low-level idiom into its own function.

(WebCore::Style::PropertyCascade::set):
Use the new initializeCSSValue().

(WebCore::Style::PropertyCascade::setDeferred):
Use the new data structures for deferred properties.

(WebCore::Style::PropertyCascade::sortDeferredPropertyIDs):
New private method to sort the deferred property IDs according to their
index.

  • style/PropertyCascade.h:

(WebCore::Style::PropertyCascade::deferredPropertyIndex const):
New private method to get the index of the deferred property.

(WebCore::Style::PropertyCascade::setDeferredPropertyIndex):
New private method to set the index of a deferred property.

(WebCore::Style::PropertyCascade::hasDeferredProperty const):
Use the new data structures for deferred properties.

(WebCore::Style::PropertyCascade::deferredProperty const):
Use the new data structures for deferred properties.

(WebCore::Style::PropertyCascade::deferredPropertyIDs const):
New method to get the deferred property IDs sorted by their index.

(WebCore::Style::PropertyCascade::deferredProperties const): Deleted.

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::applyDeferredProperties):
Use the new data structures for deferred properties.

9:17 AM Changeset in webkit [293099] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[ Monterey Release arm64 ] TestWebKitAPI.ContentRuleList.ResourceTypes is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=239523

Patch by Alex Christensen <achristensen@webkit.org> on 2022-04-20
Reviewed by Chris Dumez.

If the request count isn't the expected value, wait until it is.

  • TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:

(TEST):

9:10 AM Changeset in webkit [293098] by mmaxfield@apple.com
  • 8 edits
    1 move
    1 add
    1 delete in trunk/Source/WebGPU

[WebGPU] Expand hardware capabilities to include features (beyond just limits)
https://bugs.webkit.org/show_bug.cgi?id=239443

Reviewed by Kimmo Kinnunen.

Only MTLGPUFamilyApple devices support depth/stencil textures in the managed/shared address space.
So, we have to expand the hardware capabilities infrastructure to be able to hold this kind
of information (so the texture creation function can consult with this state to know what storage
mode to use for the created texture). This patch replaces the stored WGPULimits struct with a new
struct, HardwareCapabilities, which holds a WGPULimits iniside it.

While I was here, I also included a Vector<WGPUFeature> inside the HardwareCapabilities struct,
and hooked it up to the various places which need to be guarded by the presence of features.
This is needed for compressed textures to work (among other things). Because there are only
a handful of possible features, I elected to use a sorted Vector instead of using the big HashSet
hammer.

  • WebGPU.xcodeproj/project.pbxproj:
  • WebGPU/Adapter.h:

(WebGPU::Adapter::create):

  • WebGPU/Adapter.mm:

(WebGPU::Adapter::Adapter):
(WebGPU::Adapter::enumerateFeatures):
(WebGPU::Adapter::getLimits):
(WebGPU::Adapter::hasFeature):
(WebGPU::Adapter::requestDevice):

  • WebGPU/Device.h:

(WebGPU::Device::limits const):
(WebGPU::Device::features const):
(WebGPU::Device::baseCapabilities const):

  • WebGPU/Device.mm:

(WebGPU::Device::create):
(WebGPU::Device::Device):
(WebGPU::Device::enumerateFeatures):
(WebGPU::Device::getLimits):
(WebGPU::Device::hasFeature):

  • WebGPU/HardwareCapabilities.h: Renamed from Source/WebGPU/WebGPU/HardwareLimits.h.
  • WebGPU/HardwareCapabilities.mm: Added.

(WebGPU::baseCapabilities):
(WebGPU::baseFeatures):
(WebGPU::apple3):
(WebGPU::apple4):
(WebGPU::apple5):
(WebGPU::apple6):
(WebGPU::apple7):
(WebGPU::mac2):
(WebGPU::mergeMaximum):
(WebGPU::mergeAlignment):
(WebGPU::mergeLimits):
(WebGPU::mergeFeatures):
(WebGPU::mergeBaseCapabilities):
(WebGPU::rawHardwareCapabilities):
(WebGPU::anyLimitIsBetterThan):
(WebGPU::includesUnsupportedFeatures):
(WebGPU::checkLimits):
(WebGPU::hardwareCapabilities):
(WebGPU::isValid):

  • WebGPU/HardwareLimits.mm: Removed.
  • WebGPU/Instance.mm:

(WebGPU::Instance::requestAdapter):

  • WebGPU/Texture.mm:

(WebGPU::featureRequirementForFormat):
(WebGPU::Device::validateCreateTexture):
(WebGPU::storageMode):
(WebGPU::Device::createTexture):

9:03 AM Changeset in webkit [293097] by Russell Epstein
  • 2 edits in branches/safari-614.1.10-branch/Source/WebGPU

Cherry-pick r292760. rdar://problem/91351306

[WebGPU] Fix the tvOS build (again)
https://bugs.webkit.org/show_bug.cgi?id=239106
<rdar://problem/91351306>

Unreviewed.

Turns out PLATFORM(APPLETV) and PLATFORM(TVOS) are different things.

  • WebGPU/Texture.mm: (WebGPU::Device::createTexture): (WebGPU::Texture::createView):

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

8:56 AM Changeset in webkit [293096] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

[WebGPU] Fix texture conversion format typo
https://bugs.webkit.org/show_bug.cgi?id=239446

Reviewed by Kimmo Kinnunen.

I mixed up "plus" and "unorm".

  • pal/graphics/WebGPU/Impl/WebGPUConvertToBackingContext.cpp:

(PAL::WebGPU::ConvertToBackingContext::convertToBacking):

8:32 AM Changeset in webkit [293095] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebGPU

[WebGPU] RGB9E5Ufloat textures are not renderable
https://bugs.webkit.org/show_bug.cgi?id=239445

Reviewed by Kimmo Kinnunen.

I misread the table in the spec. This format isn't listed in
https://gpuweb.github.io/gpuweb/#plain-color-formats but is instead
listed in https://gpuweb.github.io/gpuweb/#packed-formats.

  • WebGPU/Texture.mm:

(WebGPU::isRenderableFormat):

8:04 AM Changeset in webkit [293094] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Some AutoscrollController cleanup
https://bugs.webkit.org/show_bug.cgi?id=239512

Reviewed by Alan Bujtas.

Have AutoscrollController store a WeakPtr to the render object. Address an apparent
null de-ref in AutoscrollController::stopAutoscrollTimer() where the Frame can null.

Refactor updateDragAndDrop() with a lambda so that all the code paths that exit early
clearly call stopAutoscrollTimer() which nulls out the renderer.

  • page/AutoscrollController.cpp:

(WebCore::AutoscrollController::autoscrollRenderer const):
(WebCore::AutoscrollController::startAutoscrollForSelection):
(WebCore::AutoscrollController::stopAutoscrollTimer):
(WebCore::AutoscrollController::updateAutoscrollRenderer):
(WebCore::AutoscrollController::updateDragAndDrop):
(WebCore::AutoscrollController::startPanScrolling):

  • page/AutoscrollController.h:
  • page/EventHandler.cpp:

(WebCore::EventHandler::startPanScrolling):

6:51 AM Changeset in webkit [293093] by zan@falconsigh.net
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, RISC-V build fix.

  • assembler/MacroAssemblerRISCV64.h:

(JSC::MacroAssemblerRISCV64::store64):
Add the store64(TrustedImmPtr, Address) overload required after 249798@main.
It constructs a 32-bit or 64-bit TrustedImm value, based on the detected
pointer size, and relays it to the appropriate store64() method.

6:36 AM Changeset in webkit [293092] by zan@falconsigh.net
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Accommodate the RISCV64 C calling convention
https://bugs.webkit.org/show_bug.cgi?id=236367
<rdar://problem/89026012>

Reviewed by Yusuke Suzuki.

The 64-bit RISC-V (RV64) calling convention requires 32-bit arguments
to be sign-extended to fill out the whole 64-bit register, fitting
nicely with different instructions in this ISA that operate on 32-bit
values, and differring from other 64-bit ISAs that provide partial-sized
registers (which are aliased to the whole register).

JSC JIT is tailored to the other ISAs, often taking shortcuts to pack
non-sign-extended values into registers that are then accessed for those
32-bit values through the partial-sized aliases. This can trip up RISC-V
execution when constructing calls that pass 32-bit values to native code
using the C calling convention.

To avoid this, arguments setup done through the CCallHelpers class is
enhanced to, after packing up arguments either into argument registers
or onto the stack, another pass of the argument types for the desired
operation is done, detecting whether the argument was supposed to be
packed into an GPR or an FPR destination. On RV64, when packed into a
GPR argument register that matches a 32-bit argument in the operation,
the additional sign extension is performed on that argument register.

GPR and FPR distinction for a given argument's register type is based
on whether or not the double type is used as the argument's type. All
non-double-typed arguments are passed as GPRs. Additional compile-time
validation is provided to ensure that's the case for every operation
that's having its arguments set up. This is relied upon when traversing
the operation's arguments and indexing every GPR argument along the way.

This approach only accommodates the RV64 calling convention for the
Baseline JIT level. For higher levels, similar but probably different
solutions will have to be crafted.

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::finalizeGPRArguments):
(JSC::CCallHelpers::gprArgsCount):
(JSC::CCallHelpers::fprArgsCount):
(JSC::CCallHelpers::setupArgumentsImpl):
(JSC::CCallHelpers::setupArgumentsEntryImpl):

5:56 AM Changeset in webkit [293091] by commit-queue@webkit.org
  • 3 edits
    3 adds in trunk

[GStreamer] REGRESSION(r285586): we never end the playback of some videos
https://bugs.webkit.org/show_bug.cgi?id=239387

Patch by Yacine Bandou <yacine.bandou@softathome.com> on 2022-04-20
Reviewed by Philippe Normand.

Source/WebCore:

If the sinks have the EOS flag, we shouldn't ignore the EOS message.
Without this commit we never end the playback of some videos,
because we ignore the EOS message, like this one:
https://www.tv5mondeplus.com/bumpers/tv5_bumper.mp4

Test: media/video-inaccurate-duration-ended.html

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::handleMessage):

LayoutTests:

  • media/content/test-inaccurate-duration.mp4: Added.
  • media/video-inaccurate-duration-ended-expected.txt: Added.
  • media/video-inaccurate-duration-ended.html: Added.
4:51 AM Changeset in webkit [293090] by cathiechen
  • 30 edits in trunk

Parsing of contain-intrinsic-size and adding a runtime flag for it
https://bugs.webkit.org/show_bug.cgi?id=238181

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/animation/contain-intrinsic-size-interpolation-expected.txt:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed-expected.txt:
  • web-platform-tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-valid-expected.txt:
  • web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:

Source/WebCore:

Parsing of contain-intrinsic-size according to [1]. In order to parse the shorthand properly,
the latest draft has been updated to "none | <length> | auto <length>". ContainIntrinsicSizeType
in RenderStyle, indicates the type of value. containIntrinsicWidth/Height indicates the length
value for Length and AutoAndLength type.
Thanks to Rob Buis for helping with this patch.

[1] https://www.w3.org/TR/css-sizing-4/#intrinsic-size-override

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::valueForContainIntrinsicSize):
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const):
(WebCore::StyleProperties::asTextInternal const):

  • css/parser/CSSParserContext.cpp:

(WebCore::operator==):
(WebCore::add):
(WebCore::CSSParserContext::isPropertyRuntimeDisabled const):

  • css/parser/CSSParserContext.h:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeContainIntrinsicSize):
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::consumeContainIntrinsicSizeShorthand):
(WebCore::CSSPropertyParser::parseShorthand):

  • css/parser/CSSPropertyParser.h:
  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::containIntrinsicWidthType const):
(WebCore::RenderStyle::containIntrinsicHeightType const):
(WebCore::RenderStyle::containIntrinsicWidth const):
(WebCore::RenderStyle::containIntrinsicHeight const):
(WebCore::RenderStyle::setContainIntrinsicWidthType):
(WebCore::RenderStyle::setContainIntrinsicHeightType):
(WebCore::RenderStyle::setContainIntrinsicWidth):
(WebCore::RenderStyle::setContainIntrinsicHeight):
(WebCore::RenderStyle::initialContainIntrinsicWidthType):
(WebCore::RenderStyle::initialContainIntrinsicHeightType):
(WebCore::RenderStyle::initialContainIntrinsicWidth):
(WebCore::RenderStyle::initialContainIntrinsicHeight):

  • rendering/style/RenderStyleConstants.cpp:

(WebCore::operator<<):

  • rendering/style/RenderStyleConstants.h:
  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator== const):

  • rendering/style/StyleRareNonInheritedData.h:
  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyInitialContainIntrinsicWidth):
(WebCore::Style::BuilderCustom::applyInheritContainIntrinsicWidth):
(WebCore::Style::BuilderCustom::applyValueContainIntrinsicWidth):
(WebCore::Style::BuilderCustom::applyInitialContainIntrinsicHeight):
(WebCore::Style::BuilderCustom::applyInheritContainIntrinsicHeight):
(WebCore::Style::BuilderCustom::applyValueContainIntrinsicHeight):
(WebCore::Style::BuilderCustom::applyInitialContainIntrinsicBlockSize):
(WebCore::Style::BuilderCustom::applyInheritContainIntrinsicBlockSize):
(WebCore::Style::BuilderCustom::applyValueContainIntrinsicBlockSize):
(WebCore::Style::BuilderCustom::applyInitialContainIntrinsicInlineSize):
(WebCore::Style::BuilderCustom::applyInheritContainIntrinsicInlineSize):
(WebCore::Style::BuilderCustom::applyValueContainIntrinsicInlineSize):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
3:43 AM Changeset in webkit [293089] by ntim@apple.com
  • 26 edits in trunk

Unprefix -webkit-user-select CSS property
https://bugs.webkit.org/show_bug.cgi?id=208677

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

WPT progressions.

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/css-ui/inheritance-expected.txt:
  • web-platform-tests/css/css-ui/parsing/user-select-computed-expected.txt:
  • web-platform-tests/css/css-ui/parsing/user-select-valid-expected.txt:
  • web-platform-tests/inert/inert-computed-style-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):

  • css/html.css:

(#if defined(WTF_PLATFORM_IOS_FAMILY) && WTF_PLATFORM_IOS_FAMILY):
(input::-webkit-inner-spin-button):
(input::-webkit-strong-password-auto-fill-button):
(input::-webkit-credentials-auto-fill-button):
(input::-webkit-contacts-auto-fill-button):
(input::-webkit-credit-card-auto-fill-button):
(input::-webkit-caps-lock-indicator):
(#if defined(ENABLE_DATALIST_ELEMENT) && ENABLE_DATALIST_ELEMENT):
(textarea):
(input:-webkit-autofill-strong-password):

  • css/mediaControls.css:

(audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel):
(audio::-webkit-media-controls-timeline-container, video::-webkit-media-controls-timeline-container):
(video::-webkit-media-text-track-container):

  • css/plugIns.css:

(embed::-webkit-snapshotted-plugin-content > .snapshot-overlay > .snapshot-label,):

  • dom/ImageOverlay.cpp:

(WebCore::ImageOverlay::updateSubtree):
(WebCore::ImageOverlay::updateWithTextRecognitionResult):

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::collectPresentationalHintsForAttribute):

LayoutTests:

  • editing/selection/user-select-js-property-expected.txt:
  • editing/selection/user-select-js-property.html:
  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • fast/css/getComputedStyle/resources/property-names.js:
  • platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • svg/css/getComputedStyle-basic-expected.txt:
2:09 AM Changeset in webkit [293088] by ntim@apple.com
  • 2 edits in trunk/LayoutTests

[Debug] Skip editing/inserting/insert-list-user-select-none-crash.html

Unreviewed test gardening.

This started crashing after r293028, but it's not a direct cause of that bug. You can also
reproduce before r293028 by replacing user-select: none; in the test with user-select: text.

12:54 AM Changeset in webkit [293087] by Mikhail R. Gadelha
  • 14 edits in trunk/Source/JavaScriptCore

Unify calls and checks for CellTag
https://bugs.webkit.org/show_bug.cgi?id=238025

Reviewed by Yusuke Suzuki.

This patch moves all the places where cell tags are written and checked
when branching: this will be needed when implementing the concurrency on
32 bits archs, so we can focus on changing storeCell, branchIfNotCell and
branchIfCell to implement the mutex locks/unlocks.

It also reduces the code size in JetStream2 by ~1% on average on 32
bits platforms.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::store8):
(JSC::MacroAssemblerARMv7::storePair32):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::storePair32):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::reifyInlinedCallFrames):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::checkArgumentTypes):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectStrictEquality):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::jitAssertIsCell):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::storeCell):
(JSC::AssemblyHelpers::storeTrustedValue):
(JSC::AssemblyHelpers::branchIfNotCell):
(JSC::AssemblyHelpers::branchIfCell):

  • jit/CallFrameShuffler32_64.cpp:

(JSC::CallFrameShuffler::emitStore):

  • jit/JSInterfaceJIT.h:

(JSC::JSInterfaceJIT::emitLoadJSCell):

12:43 AM Changeset in webkit [293086] by Diego Pino Garcia
  • 17 edits in trunk/Source

Unreviewed, non-unified build fixes after r293052

Source/WebCore:

  • css/typedom/numeric/CSSMathMin.cpp:
  • css/typedom/numeric/CSSMathNegate.cpp:
  • css/typedom/numeric/CSSMathProduct.cpp:
  • css/typedom/numeric/CSSMathSum.cpp:
  • css/typedom/transform/CSSSkew.cpp:
  • dom/CustomElementRegistry.cpp:
  • html/InputTypeNames.cpp:
  • inspector/agents/InspectorCSSAgent.cpp:
  • page/FocusController.cpp:
  • style/AttributeChangeInvalidation.cpp:
  • style/ClassChangeInvalidation.cpp:
  • style/ElementRuleCollector.cpp:
  • style/IdChangeInvalidation.cpp:
  • style/StyleSharingResolver.cpp:

Source/WebKit:

  • WebProcess/FullScreen/WebFullScreenManager.cpp:

(WebKit::WebFullScreenManager::handleEvent):

12:24 AM Changeset in webkit [293085] by ntim@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r293044): Extraneous border around AutoFill buttons in active and hover states
https://bugs.webkit.org/show_bug.cgi?id=239531

Unreviewed fix.

Used "Convert to Outlines" tool in Sketch for outlines, then cleaned up SVGs, instead of stroke atttributes.

  • css/html.css:

(input::-webkit-credentials-auto-fill-button:hover):
(input::-webkit-credentials-auto-fill-button:active):

Apr 19, 2022:

10:57 PM Changeset in webkit [293084] by Robert Jenner
  • 3 edits in trunk/Tools

Bring up new iOS builders
https://bugs.webkit.org/show_bug.cgi?id=239470

Reviewed by Ryan Haddad.

  • Tools/CISupport/build-webkit-org/config.json:
  • Tools/CISupport/ews-build/config.json:

Canonical link: https://commits.webkit.org/249795@main

10:47 PM Changeset in webkit [293083] by Russell Epstein
  • 9 edits in branches/safari-614.1.10-branch/Source

Versioning.

WebKit-7614.1.10.4

10:44 PM Changeset in webkit [293082] by Russell Epstein
  • 1 copy in tags/WebKit-7614.1.10.3

Tag WebKit-7614.1.10.3.

10:39 PM Changeset in webkit [293081] by Alan Coon
  • 59 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r292854. rdar://problem/91733055

Use [AtomString] where appropriate in IDL files for performance
https://bugs.webkit.org/show_bug.cgi?id=239314

Reviewed by Alexey Shvayka.

Use [AtomString] where appropriate in IDL files for performance. I added [AtomString] on the
IDL side whenever our C++ implementation uses AtomString.

Without this, the generated bindings code will generate a String, which will then get atomized
once passed to our implementation. This means we're doing unnecessary String allocations in
cases where the AtomString is already in the AtomStringTable.

  • dom/Attr.idl:
  • dom/Document+HTML.idl:
  • dom/Document.cpp: (WebCore::Document::createAttribute):
  • dom/Document.h:
  • dom/Document.idl:
  • dom/Element.cpp: (WebCore::Element::getAttribute const):
  • dom/Element.idl:
  • dom/ElementContentEditable.idl:
  • dom/Event.idl:
  • dom/FocusEvent.idl:
  • dom/FormDataEvent.idl:
  • dom/HashChangeEvent.idl:
  • dom/InputEvent.idl:
  • dom/KeyboardEvent.idl:
  • dom/MessageEvent.idl:
  • dom/MouseEvent.idl:
  • dom/MutationEvent.idl:
  • dom/NamedNodeMap.idl:
  • dom/Node.idl:
  • dom/OverflowEvent.idl:
  • dom/PageTransitionEvent.idl:
  • dom/PointerEvent.idl:
  • dom/ProgressEvent.idl:
  • dom/PromiseRejectionEvent.idl:
  • dom/SecurityPolicyViolationEvent.idl:
  • dom/TextEvent.idl:
  • dom/TouchEvent.idl:
  • dom/TransitionEvent.idl:
  • dom/UIEvent.idl:
  • dom/WheelEvent.idl:
  • html/HTMLButtonElement.idl:
  • html/HTMLDocument.idl:
  • html/HTMLElement.idl:
  • html/HTMLFormElement.idl:
  • html/HTMLImageElement.idl:
  • html/HTMLInputElement.idl:
  • html/HTMLLinkElement.idl:
  • html/HTMLMediaElement.idl:
  • html/HTMLScriptElement.idl:
  • html/HTMLTableCellElement.idl:
  • html/HTMLTrackElement.idl:
  • html/MediaEncryptedEvent.idl:
  • html/SubmitEvent.idl:
  • html/track/AudioTrack.idl:
  • html/track/AudioTrackList.idl:
  • html/track/TextTrack.idl:
  • html/track/TextTrackList.idl:
  • html/track/VTTRegion.idl:
  • html/track/VideoTrack.idl:
  • html/track/VideoTrackList.idl:
  • page/DOMWindow.idl:
  • page/UserMessageHandlersNamespace.idl:
  • storage/StorageEvent.idl:
  • svg/SVGAltGlyphElement.idl:
  • svg/SVGStyleElement.idl:
  • workers/service/ExtendableEvent.idl:
  • workers/service/ExtendableMessageEvent.idl:
  • workers/service/FetchEvent.idl:

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

10:39 PM Changeset in webkit [293080] by Alan Coon
  • 13 edits
    2 adds in branches/safari-613-branch

Cherry-pick r292274. rdar://problem/80544133

[Cocoa] Automatically relayout the page when new fonts are installed
https://bugs.webkit.org/show_bug.cgi?id=238483
<rdar://problem/80544133>

Reviewed by Chris Dumez.

Source/WebCore:

This patch simply calls setNeedsRecalcStyleInAllFrames on every Page when we receive a
kCTFontManagerRegisteredFontsChangedNotification.

FontCache::invalidateAllFontCaches() can't do this directly because it's in platform/ and
therefore isn't allowed to know what Pages are. Instead, this patch takes a process-global
callback and calls that instead. This callback is set at initialization time.

Test: fast/text/install-font-style-recalc.html

  • page/Page.cpp: (WebCore::m_contentSecurityPolicyModeForExtension): (WebCore::Page::firstTimeInitialization):
  • page/Page.h:
  • platform/graphics/FontCache.cpp: (WebCore::Function<void): (WebCore::FontCache::registerFontCacheInvalidationCallback): (WebCore::FontCache::invalidateAllFontCaches):
  • platform/graphics/FontCache.h:

Tools:

Make TestRunner::dumpResourceLoadStatistics() clear any currently-recorded statistics.
This avoids the problem where spurious layouts during the time when the page has been created but
before the test has begun record irrelevant statistics.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: (WTR::InjectedBundle::beginTesting): (WTR::InjectedBundle::clearResourceLoadStatistics):
  • WebKitTestRunner/InjectedBundle/InjectedBundle.h:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::dumpResourceLoadStatistics):

LayoutTests:

  • TestExpectations:
  • fast/text/install-font-style-recalc-expected.txt: Added.
  • fast/text/install-font-style-recalc.html: Added.
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:

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

10:39 PM Changeset in webkit [293079] by Alan Coon
  • 8 edits
    2 adds in branches/safari-613-branch

Cherry-pick r292079. rdar://problem/88512506

Don't mutate children during RenderGrid::computeIntrinsicLogicalWidths unless we're about to re-layout.
https://bugs.webkit.org/show_bug.cgi?id=237732

Reviewed by Dean Jackson.

Source/WebCore:

Test: fast/css-grid-layout/compute-intrinsic-logical-widths-should-not-mutate-children.html

  • rendering/GridTrackSizingAlgorithm.cpp: (WebCore::GridTrackSizingAlgorithm::gridAreaBreadthForChild const): (WebCore::GridTrackSizingAlgorithm::advanceNextState): (WebCore::GridTrackSizingAlgorithm::isValidTransition const):
  • rendering/GridTrackSizingAlgorithm.h:
  • rendering/RenderGrid.cpp: (WebCore::RenderGrid::layoutBlock): (WebCore::RenderGrid::computeIntrinsicLogicalWidths const):
  • rendering/RenderGrid.h:

computeIntrinsicLogicalWidths can re-layout children (via performGridItemsPreLayout, as well as during
the track sizing algorithm), and does so using the estimated track sizes. This can be incorrect, and if
we're not about to do a full layout on this RenderGrid, it can leave the children in an invalid state.

This caches the intrinsic sizes when we do a full layout, so that we can use these values instead when
we just want to query the RenderGrid without mutating anything.

LayoutTests:

Don't mutate children during computeIntrinsicWidth

  • TestExpectations:
  • fast/css-grid-layout/compute-intrinsic-logical-widths-should-not-mutate-children-expected.html: Added.
  • fast/css-grid-layout/compute-intrinsic-logical-widths-should-not-mutate-children.html: Added.
  • platform/ios/TestExpectations:

Marked existing WPT as passing on MacOS (since we run layout multiple times there).
Added new test for this implementation-specific bug.

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

10:39 PM Changeset in webkit [293078] by Alan Coon
  • 16 edits
    2 adds in branches/safari-613-branch

Cherry-pick r291759. rdar://problem/89589891

[iOS] WebKit app is sometimes not "Now Playing" during initial playback
https://bugs.webkit.org/show_bug.cgi?id=236993
<rdar://88827167>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/audio-session-category-at-most-recent-playback.html

Recently, we have added the concept of "preparingToPlay" to PlatformMediaSession to allow
the correct category to be set if updateSessionState() is called after playback is allowed
by the MediaSessionManager, but before playback is actually started by the media element.
However, this depends on updateSessionState() being called synchronously during playback.
We disabled this synchronous update in r269077 due to the large runtime cost when a large
number of media elements are created (but not used) at once.

Relax this asynchronous update in the case where the state is moving to "Playing", which
ensures that the correct AudioSessionCategory is set before playback starts, rather than
immediately afterward.

To support testing that the category was correctly set before playback started, add an
ivar to HTMLMediaElement that is set to the current AudioSessionCategory immediately before
the media element instructs the MediaPlayer to start playback. Expose this ivar to Internals.

Drive-by fixes: AudioSession::CategoryType cannot be forward declared, as it is a public
member of a class. Allow the enum to be forward declared by moving the declaration outside
the class, but allow current uses of the enum to continue by typedefing it inside the class
to the original enum name. Add an IDL enumeration matching the AudioSession one in Interals.idl
and convert the existing audioSessionCategory() call to use the new enumeration.

(Unforunately in the case where USE_AUDIO_SESSION is not set, the enumeration must be re-
declared. This can be removed and the entire implementation wrapped in a USE() check, once
the bindings generator is extended to allow "Conditional="-style attributes for USE checks.)

The added test is flakey due to a previous change which would keep the MediaSession category
in "MediaPlayback" for up to 2s after playback ends. To counteract this flakiness, reset the
state of the PlatformMediaSessionManager between tests.

  • html/HTMLMediaElement.cpp: (WebCore::m_categoryAtMostRecentPlayback): (WebCore::HTMLMediaElement::playPlayer): (WebCore::m_logIdentifier): Deleted.
  • html/HTMLMediaElement.h: (WebCore::HTMLMediaElement::categoryAtMostRecentPlayback const):
  • platform/audio/AudioSession.h:
  • platform/audio/PlatformMediaSessionManager.cpp: (WebCore::PlatformMediaSessionManager::sessionStateChanged):
  • platform/audio/PlatformMediaSessionManager.h: (WebCore::PlatformMediaSessionManager::resetSessionState):
  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm: (WebCore::MediaSessionManagerCocoa::resetSessionState):
  • testing/Internals.cpp: (WebCore::Internals::resetToConsistentState):
  • testing/Internals.cpp: (WebCore::Internals::audioSessionCategory const): (WebCore::Internals::categoryAtMostRecentPlayback const):
  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

Fix the audio-session-category test. Creating the oscilator actually does change the
AudioSession category to "Ambient", but (previously) only in the next run loop, so a
synchronous test that the AudioSession category is "None" succeeds. Now that starting
playback (as happens when creating an audio node) changes the AudioSession synchronously,
the test begins failing.

  • media/audio-session-category-at-most-recent-playback-expected.txt: Added.
  • media/audio-session-category-at-most-recent-playback.html: Added.
  • media/audio-session-category-expected.txt:
  • media/audio-session-category.html:

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

10:38 PM Changeset in webkit [293077] by Alan Coon
  • 5 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r290997. rdar://problem/79950080

[iOS] Flash media controls when a fullscreen video resets its source
https://bugs.webkit.org/show_bug.cgi?id=237493

Reviewed by Jer Noble.

Source/WebCore:

Some pages reset the fullscreen video's source when a user rotates the device.
The screen will become black for a while, and users might think the player is broken.
With this patch, the player will show the media controls for 1 second when the source
is changed, so that users will know the player is working.

  • platform/ios/VideoFullscreenInterfaceAVKit.h:
  • platform/ios/VideoFullscreenInterfaceAVKit.mm: _presentingViewController is only used for watchOS. (-[WebAVPlayerViewController flashPlaybackControlsWithDuration:]): (VideoFullscreenInterfaceAVKit::setPlayerIdentifier):

Source/WebCore/PAL:

  • pal/spi/cocoa/AVKitSPI.h:

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

10:38 PM Changeset in webkit [293076] by Alan Coon
  • 20 edits
    4 adds in branches/safari-613-branch/Source

Cherry-pick r289531. rdar://problem/88023949

Introduce SignedPtrTraits which enables Ref pointers to be protected with PtrTags.
https://bugs.webkit.org/show_bug.cgi?id=235588
rdar://88023849

Patch by Gavin Phillips <gavin.p@apple.com> on 2022-02-10
Reviewed by Mark Lam.

Create and adopt SignedPtrTraits which can be used to apply and verify PtrTag signatures
to pointers stored in and tracked by WTF:Ref.

Source/WebCore:

  • bindings/js/JSDOMWrapper.h: (WebCore::JSDOMWrapper::wrapped const): (WebCore::JSDOMWrapper::offsetOfWrapped): (WebCore::JSDOMWrapper::hasCustomPtrTraits):
  • bindings/scripts/CodeGeneratorJS.pm: (GetParentClassName): (GetImplClassPtrTag): (GenerateHeader): (GetTaggedWrapperForInterface):
  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/test/BindingTestGlobalConstructors.idl:
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp: (WebCore::jsTestGlobalObject_TestTaggedWrapperConstructorGetter): (WebCore::JSC_DEFINE_CUSTOM_GETTER):
  • bindings/scripts/test/JS/JSTestTaggedWrapper.cpp: Added. (WebCore::JSTestTaggedWrapperDOMConstructor::prototypeForStructure): (WebCore::JSTestTaggedWrapperDOMConstructor::initializeProperties): (WebCore::JSTestTaggedWrapperPrototype::finishCreation): (WebCore::JSTestTaggedWrapper::JSTestTaggedWrapper): (WebCore::JSTestTaggedWrapper::finishCreation): (WebCore::JSTestTaggedWrapper::createPrototype): (WebCore::JSTestTaggedWrapper::prototype): (WebCore::JSTestTaggedWrapper::getConstructor): (WebCore::JSTestTaggedWrapper::destroy): (WebCore::JSC_DEFINE_CUSTOM_GETTER): (WebCore::JSTestTaggedWrapper::subspaceForImpl): (WebCore::JSTestTaggedWrapper::analyzeHeap): (WebCore::JSTestTaggedWrapperOwner::isReachableFromOpaqueRoots): (WebCore::JSTestTaggedWrapperOwner::finalize): (WebCore::toJSNewlyCreated): (WebCore::toJS): (WebCore::JSTestTaggedWrapper::toWrapped):
  • bindings/scripts/test/JS/JSTestTaggedWrapper.h: Added. (WebCore::JSTestTaggedWrapper::create): (WebCore::JSTestTaggedWrapper::createStructure): (WebCore::JSTestTaggedWrapper::subspaceFor): (WebCore::wrapperOwner): (WebCore::wrapperKey): (WebCore::toJS): (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/SupplementalDependencies.dep:
  • bindings/scripts/test/TestTaggedWrapper.idl: Added.
  • css/DOMMatrixReadOnly.idl:
  • dom/DOMPointReadOnly.idl:
  • dom/DOMQuad.idl:
  • dom/DOMRectReadOnly.idl:
  • domjit/JSDocumentDOMJIT.cpp: (WebCore::compileDocumentDocumentElementAttribute): (WebCore::compileDocumentBodyAttribute):
  • domjit/JSNodeDOMJIT.cpp: (WebCore::createCallDOMGetterForOffsetAccess): (WebCore::compileNodeOwnerDocumentAttribute):
  • html/TimeRanges.idl:
  • html/canvas/OffscreenCanvasRenderingContext2D.idl:
  • html/canvas/PaintRenderingContext2D.idl:
  • svg/SVGMatrix.idl:

Source/WTF:

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/SignedPtr.h: Added. (WTF::SignedPtr::SignedPtr): (WTF::SignedPtr::get const): (WTF::SignedPtr::set): (WTF::SignedPtr::clear): (WTF::SignedPtr::operator-> const): (WTF::SignedPtr::operator* const): (WTF::SignedPtr::operator! const): (WTF::SignedPtr::operator UnspecifiedBoolType const): (WTF::SignedPtr::operator bool const): (WTF::SignedPtr::operator=): (WTF::SignedPtr::exchange): (WTF::SignedPtr::swap): (WTF::SignedPtrTraits::exchange): (WTF::SignedPtrTraits::swap): (WTF::SignedPtrTraits::unwrap): (WTF::SignedPtrTraits::hashTableDeletedValue): (WTF::SignedPtrTraits::isHashTableDeletedValue):

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

10:38 PM Changeset in webkit [293075] by Alan Coon
  • 6 edits
    1 add in branches/safari-613-branch

Cherry-pick r292680. rdar://problem/91323230

The Youtube plugin replacement should only work for actual Youtube URLs
https://bugs.webkit.org/show_bug.cgi?id=239003
<rdar://91323230>

Reviewed by Brent Fulgham.

Source/WebCore:

The Youtube plugin replacement was too permissive and was falling back to using
the original URL in cases there the original URL wasn't an expected Youtube
URL. This patch hardens the plugin replacement and drops the URL if it is not
a valid youtube URL instead.

Covered by new API test.

  • Modules/plugins/YouTubePluginReplacement.cpp: (WebCore::isYouTubeURL): (WebCore::processAndCreateYouTubeURL): (WebCore::YouTubePluginReplacement::youTubeURLFromAbsoluteURL):

Tools:

Add API test coverage.

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/YouTubePluginReplacement.cpp: (TestWebKitAPI::test): (TestWebKitAPI::TEST_F):
  • TestWebKitAPI/Tests/WebKitCocoa/YoutubeReplacementPlugin.mm: Added. (TEST):

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

10:38 PM Changeset in webkit [293074] by Alan Coon
  • 11 edits
    2 adds in branches/safari-613-branch

Cherry-pick r292049. rdar://problem/89104216

[macOS] Muted video is sometimes paused when entering fullscreen
https://bugs.webkit.org/show_bug.cgi?id=238462
rdar://89104216

Reviewed by Jer Noble.

Source/WebCore:

Test: media/fullscreen-when-muted.html

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::didMoveToNewDocument): Add logging. (WebCore::HTMLMediaElement::elementIsHidden const): Consider both element fullscreen and video fullscreen. (WebCore::HTMLMediaElement::visibilityStateChanged): Use elementIsHidden. (WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const): Add logging for the one case that didn't have it. (WebCore::HTMLMediaElement::updateMediaPlayer): New, wrap MediaPlayer functions that are called frequently by RenderVideo so we can only call them when necessary.
  • html/HTMLMediaElement.h: (WebCore::HTMLMediaElement::elementIsHidden const): Deleted.
  • html/MediaElementSession.cpp: (WebCore::MediaElementSession::visibilityChanged): Just use elementIsHidden, it already accounts for fullscreen.
  • platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::setVisibleInViewport): Do nothing when visibility is not changing.
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setPageIsVisible): Add logging.
  • rendering/RenderVideo.cpp: (WebCore::RenderVideo::updatePlayer): Call HTMLMediaElement::updateMediaPlayer instead of calling MediaPlayer directly.

Source/WebKit:

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::setPageIsVisible): Track visibility and do nothing when it doesn't change. (WebKit::MediaPlayerPrivateRemote::setShouldMaintainAspectRatio): Ditto for aspect ratio.
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:

LayoutTests:

  • media/fullscreen-when-muted-expected.txt: Added.
  • media/fullscreen-when-muted.html: Added.

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

10:38 PM Changeset in webkit [293073] by Alan Coon
  • 3 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r292044. rdar://problem/86662565

Don't send sync RemoteMediaPlayerProxy messages that we know will fail
https://bugs.webkit.org/show_bug.cgi?id=238467
rdar://86662565

Reviewed by Jer Noble.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::videoFrameForCurrentTime): Return early if readyState is less than HaveCurrentData, or if the first frame is not available.
  • WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm: (WebKit::MediaPlayerPrivateRemote::nativeImageForCurrentTime): Ditto. (WebKit::MediaPlayerPrivateRemote::colorSpace): Ditto.

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

10:38 PM Changeset in webkit [293072] by Alan Coon
  • 6 edits in branches/safari-613-branch

Cherry-pick r291606. rdar://problem/91446317

Website policies are not respected when doing COOP based process swap
https://bugs.webkit.org/show_bug.cgi?id=238036
<rdar://89616625>

Reviewed by Chris Dumez.

Source/WebKit:

In case of normal process swap, we make use of website policies so everything is fine.
For COOP based process swap, this happens later on, at a point where we lost website policies.
To overcome this, we store the website policies used by a navigation inside the API::Navigation object.
It is used by continueNavigationInNewProcess to correctly initialize the new WebPage website policies.
We then set the website policies in the navigation object just before continuing the load in the same process,
as process swap may happen later when inspecting the response.
Minor refactoring in continueNavigationInNewProcess to get the policies directly from the given Navigation object.
Minor refactoring in receivedNavigationPolicyDecision to make the code doing process swap clearer.

Covered by API test.

  • UIProcess/API/APINavigation.h: (API::Navigation::setWebsitePoliciesForProcessSwap): (API::Navigation::takeWebsitePoliciesForProcessSwap):
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::receivedNavigationPolicyDecision): (WebKit::WebPageProxy::receivedPolicyDecision): (WebKit::WebPageProxy::continueNavigationInNewProcess): (WebKit::WebPageProxy::triggerBrowsingContextGroupSwitchForNavigation):
  • UIProcess/WebPageProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

10:38 PM Changeset in webkit [293071] by Alan Coon
  • 19 edits
    3 adds in branches/safari-613-branch

Cherry-pick r291589. rdar://problem/90511155

LayoutTests/imported/w3c:
BroadcastChannel instances in distinct opaque origins can communicate
https://bugs.webkit.org/show_bug.cgi?id=238090
<rdar://problem/90511155>

Reviewed by Alex Christensen.

Import web-platform-tests test coverage.

  • web-platform-tests/webmessaging/broadcastchannel/opaque-origin-expected.txt: Added.
  • web-platform-tests/webmessaging/broadcastchannel/opaque-origin.html: Added.
  • web-platform-tests/webmessaging/broadcastchannel/w3c-import.log:

Source/WebCore:
BroadcastChannel instances in distinct opaque origins can communicate
https://bugs.webkit.org/show_bug.cgi?id=238090
<rdar://problem/90511155>

Reviewed by Alex Christensen.

The issue is that we would use a ClientOrigin to distinguish origins for BroadcastChannel,
which relies on SecurityOriginData internally. A unique/opaque SecurityOrigin becomes an empty
SecurityOriginData upon conversion. As a result, when comparing ClientOrigin objects from
unique SecurityOrigins, they would compare as equal.

To address the issue, I introduced a new PartitionedSecurityOrigin type which is similar
to ClientOrigin but stores SecurityOrigin objects internally, instead of SecurityOriginData
objects. PartitionedSecurityOrigin's operator==() is such that different SecurityOrigins
would not be equal but the same unique SecurityOrigin would be. I then used this new
PartitionedSecurityOrigin type as key in our HashMap on the WebProcess side instead of
ClientOrigin. This allows communication between several BroadcastChannels from the same
unique origin, while preventing communication between distinct opaque origins.

When the PartitionedSecurityOrigin contains an opaque security origin, we don't involve
the Network Process at all since the destination can only be in the same WebProcess.

Test: imported/w3c/web-platform-tests/webmessaging/broadcastchannel/opaque-origin.html

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/BroadcastChannel.cpp: (WebCore::shouldPartitionOrigin): (WebCore::BroadcastChannel::MainThreadBridge::registerChannel): (WebCore::BroadcastChannel::MainThreadBridge::unregisterChannel): (WebCore::BroadcastChannel::MainThreadBridge::postMessage):
  • dom/BroadcastChannelRegistry.h:
  • loader/EmptyClients.cpp:
  • page/PartitionedSecurityOrigin.h: Added. (WebCore::PartitionedSecurityOrigin::PartitionedSecurityOrigin): (WebCore::PartitionedSecurityOrigin::isHashTableDeletedValue const): (WebCore::PartitionedSecurityOrigin::isHashTableEmptyValue const): (WebCore::operator==): (WTF::add): (WTF::PartitionedSecurityOriginHash::hash): (WTF::PartitionedSecurityOriginHash::equal): (WTF::HashTraits<WebCore::PartitionedSecurityOrigin>::emptyValue): (WTF::HashTraits<WebCore::PartitionedSecurityOrigin>::constructEmptyValue): (WTF::HashTraits<WebCore::PartitionedSecurityOrigin>::isEmptyValue): (WTF::HashTraits<WebCore::PartitionedSecurityOrigin>::peek): (WTF::HashTraits<WebCore::PartitionedSecurityOrigin>::take):

Source/WebKit:
BroadcastChannel instances in distinct opaque origins can communicate
https://bugs.webkit.org/show_bug.cgi?id=238090
<rdar://problem/90511155>

Reviewed by Alex Christensen.

The issue is that we would use a ClientOrigin to distinguish origins for BroadcastChannel,
which relies on SecurityOriginData internally. A unique/opaque SecurityOrigin becomes an empty
SecurityOriginData upon conversion. As a result, when comparing ClientOrigin objects from
unique SecurityOrigins, they would compare as equal.

To address the issue, I introduced a new PartitionedSecurityOrigin type which is similar
to ClientOrigin but stores SecurityOrigin objects internally, instead of SecurityOriginData
objects. PartitionedSecurityOrigin's operator==() is such that different SecurityOrigins
would not be equal but the same unique SecurityOrigin would be. I then used this new
PartitionedSecurityOrigin type as key in our HashMap on the WebProcess side instead of
ClientOrigin. This allows communication between several BroadcastChannels from the same
unique origin, while preventing communication between distinct opaque origins.

When the PartitionedSecurityOrigin contains an opaque security origin, we don't involve
the Network Process at all since the destination can only be in the same WebProcess.

  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.cpp: (WebKit::toClientOrigin): (WebKit::WebBroadcastChannelRegistry::registerChannel): (WebKit::WebBroadcastChannelRegistry::unregisterChannel): (WebKit::WebBroadcastChannelRegistry::postMessage): (WebKit::WebBroadcastChannelRegistry::postMessageLocally): (WebKit::WebBroadcastChannelRegistry::postMessageToRemote): (WebKit::WebBroadcastChannelRegistry::networkProcessCrashed):
  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.h:

Source/WebKitLegacy:
Dust off Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=238121

Reviewed by Yusuke Suzuki.

  • PlatformMac.cmake:

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

10:38 PM Changeset in webkit [293070] by Alan Coon
  • 6 edits
    2 adds in branches/safari-613-branch

Cherry-pick r291689. rdar://problem/88461772

REGRESSION (iOS 15.1 / r280824) QuickLook - model not loading when passing extra parameters
https://bugs.webkit.org/show_bug.cgi?id=236069
<rdar://problem/88461772>

Reviewed by Darin Adler.

Source/WebCore:

To extend the lifetime of Blob objects while loading/downloading is pending, we rely to
BlobURLHandle objects, which tell the NetworkProcess that we still need this blob data,
even if the corresponding Blob object gets GC'd by JS. The issue here is that the load
was not using the vanilla blob URL but was intead appending a fragment to the URL. As
a result, BlobRegistryImpl::registerBlobURLHandle() would fail to look up the
corresponding blob data and would fail to extend its lifetime.

To address the issue, BlobRegistryImpl::registerBlobURLHandle() / unregisterBlobURLHandle()
now strip fragments from the blob URL, similarly to what was already done inside
BlobRegistryImpl::getBlobDataFromURL().

Test: fast/files/blob-with-fragment-as-frame-url.html

  • platform/network/BlobRegistryImpl.cpp: (WebCore::blobURLWithoutFragment): (WebCore::BlobRegistryImpl::registerBlobURLHandle): (WebCore::BlobRegistryImpl::unregisterBlobURLHandle):

Source/WebKit:

Fix theoretical blob data leak. A WebContent process could create several BlobURLHandles for
the same blob URL. This would result in several calls to NetworkConnectionToWebProcess::registerBlobURLHandle()
for the same URL and several calls to to BlobRegistryImpl::registerBlobURLHandle() for the
same URL as well. BlobRegistryImpl is using a HashCountedSet for m_blobReferences in order
to deal with this fact. However, NetworkConnectionToWebProcess was using a simple HashSet
for m_blobURLHandles. As a result, if the WebContent process would exit and didClose()
would get called, the NetworkConnectionToWebProcess may call BlobRegistryImpl::unregisterBlobURLHandle()
only once even though the WebContent process had several handles for this URL, which would
not fully remove the URL from BlobRegistryImpl's HashCountedSet. To address the issue,
NetworkConnectionToWebProcess::m_blobURLHandles is now a HashCountedSet too and we call
BlobRegistryImpl::unregisterBlobURLHandle() as many times as needed in didClose().

  • NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::didClose):
  • NetworkProcess/NetworkConnectionToWebProcess.h:

LayoutTests:

Add layout test coverage.

  • fast/files/blob-with-fragment-as-frame-url-expected.txt: Added.
  • fast/files/blob-with-fragment-as-frame-url.html: Added.

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

10:38 PM Changeset in webkit [293069] by Alan Coon
  • 8 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r291371. rdar://problem/72058321

CoreIPC Hardening: Add user gesture check when saving images
https://bugs.webkit.org/show_bug.cgi?id=237839
<rdar://72058321>

Reviewed by Chris Dumez.

Add check to confirm that attempts to store images in the user's Photo
Library and attempts to store data in the pasteboard were triggered by
a user gesture.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::writePromisedAttachmentToPasteboard): Message check the authorization token before performing the write.
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::isValidPerformActionOnElementAuthorizationToken const): Added. (WebKit::WebPageProxy::performActionOnElement): Added. (WebKit::WebPageProxy::saveImageToLibrary): Message check the authorization token before performing the save.
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::performActionOnElement):

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

10:38 PM Changeset in webkit [293068] by Alan Coon
  • 3 edits
    2 adds in branches/safari-613-branch

Cherry-pick r291281. rdar://problem/90245637

Crash in KeyframeList.cpp:183 in WebCore::KeyframeList::fillImplicitKeyframes
https://bugs.webkit.org/show_bug.cgi?id=237858

Reviewed by Antoine Quint.

Source/WebCore:

When filling implicit key frames, we iterate through the current keyframes (m_keyframes),
and cache the address of the implicitZeroKeyframe and implicitOneKeyframe.

However, if we're not provided with an existing implicit zero keyframe, we will create a new one
and insert it to the list of current keyframes.

This mutates m_keyframes and the old address for the implicitOneKeyframe would no longer be valid.
Thus we should iterate through the current keyframes, after the insertion, to get the latest address.

Test: animations/fill-implicit-keyframes-crash.html

  • rendering/style/KeyframeList.cpp: (WebCore::KeyframeList::fillImplicitKeyframes):

LayoutTests:

  • animations/fill-implicit-keyframes-crash-expected.txt: Added.
  • animations/fill-implicit-keyframes-crash.html: Added.

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

10:38 PM Changeset in webkit [293067] by Alan Coon
  • 8 edits
    2 adds in branches/safari-613-branch

Cherry-pick r290201. rdar://problem/88672183

REGRESSION (r287524): hihello.me does not show sliding sheet at the bottom of the page
https://bugs.webkit.org/show_bug.cgi?id=236838
rdar://88672183

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Add new WPT tests to check we correctly compute implicit keyframes when a 0% and/or 100% keyframe
is defined but only specifies a timing function. One test checks the output of getKeyframes() and
the other that we correctly account for the implicit vaues when computing styles.

  • web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative-expected.txt:
  • web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html:
  • web-platform-tests/css/css-animations/animation-multiple-from-to-keyframes-with-only-timing-function-expected.txt: Added.
  • web-platform-tests/css/css-animations/animation-multiple-from-to-keyframes-with-only-timing-function.html: Added.

Source/WebCore:

When we fixed bug 234799 we fixed the behavior of keyframe deduplication in
Style::Resolver::keyframeRulesForName(). While this was a good fix, code that
relied on the KeyframeList that would eventually be yielded from that function
did not quite correctly add implicit keyframes for the 0% and 100% case in some
relatively obscure situation.

The site hihello.me made this shortcoming apparent. This site has this odd keyframe rule:

from, 60%, 75%, 90%, to {

animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);

}

It appears the intention of the author with this rule is to replicate the timing function
on multiple keyframes. However, this does not work. This timing function will not be used
for *anything* since if a rule is specified without an animation-timing-function value it
will use the value set on the element, not one on a different keyframe.

This also means that while there are explicit 0% and 100% keyframes, they are not adequate
to then compute implicit properties since the timing function wouldn't match the default
timing function (unless the element that those keyframes are applied to would happen to
specify that exact same timing function).

To correctly handle this, we need to do several things.

First of all, we remove the implicit keyframe code found in KeyframeEffect::getKeyframes()
and let KeyframeList::fillImplicitKeyframes() do all the work to correctly fill-in values
for properties not eplicitly specified on a 0% or 100% keyframe.

This means we need to improve that function to correctly do the task that it's supposed to
do. Now provided with a KeyframeEffect and an underlying style as parameters, for 0% and
100% it correctly:

  1. compiles a list of implicit properties for the given keyframe
  2. find a compatible keyframe for the implicit properties or create one
  3. set the implicit properties on that compatible keyframe to match the values found in the underlying style

This correctly takes cares of calls to getKeyframes() as well as the generation of keyframes
passed down to RenderLayerBacking when starting an accelerated animation.

But RenderLayerBacking also had some outdated assumptions on the KeyframeList it receives.
Indeed, it would always assume that a 0% or 100% keyframe would *always* specify properties
for the animated property. That was incorrect since we correctly deduplicate keyframes and
having several 0% or 100% keyframes is perfectly valid. Now we don't give special treatment
to 0% or 100% keyframes in RenderLayerBacking::startAnimation() and always check that a keyframe
features values for the animated property before creating an animation value to send down
to GraphicsLayer.

Finally, another place we make assumptions on implicit keyframes was when resolving styles
as effects are applied in KeyframeEffect::setAnimatedPropertiesInStyle(). There we assumed
that a 0% or 100% keyframe would always qualify as a keyframe containing the animated property,
whereas the steps for resolving styles as specified by the Web Animations specification has
logic to deal with the case where we don't find a 0% or 100% keyframe with an explicit value
for the animated property. So we simplified the checks there to only ever check for an
explicit value.

This rather obscure way to specify keyframes was not previously tested by WPT, so this patch
improves the testing coverage in a way that would have caught this regression in the first place.

Test: imported/w3c/web-platform-tests/css/css-animations/animation-multiple-from-to-keyframes-with-only-timing-function.html

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::getKeyframes): (WebCore::KeyframeEffect::setAnimatedPropertiesInStyle): (WebCore::KeyframeEffect::applyPendingAcceleratedActions):
  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::startAnimation):
  • rendering/style/KeyframeList.cpp: (WebCore::KeyframeList::insert): (WebCore::KeyframeList::fillImplicitKeyframes):
  • rendering/style/KeyframeList.h:

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

10:37 PM Changeset in webkit [293066] by Alan Coon
  • 9 edits in branches/safari-613-branch/Source

Apply patch. rdar://problem/90968659

10:37 PM Changeset in webkit [293065] by Alan Coon
  • 3 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r291808. rdar://problem/91446363

FormDataConsumer callback happens more than once with an exception
https://bugs.webkit.org/show_bug.cgi?id=238091

In case of an error, it is not expected for the FormDataConsumer callback to happen
more than once with an exception. To avoid this, we introduce FormDataConsumer::didFail
which cancels/clears everything after reporting an error.

Reviewed by Youenn Fablet.

  • Modules/fetch/FormDataConsumer.cpp: (WebCore::FormDataConsumer::read): (WebCore::FormDataConsumer::consumeFile): (WebCore::FormDataConsumer::consumeBlob): (WebCore::FormDataConsumer::didFail): (WebCore::FormDataConsumer::cancel):
  • Modules/fetch/FormDataConsumer.h: (WebCore::FormDataConsumer::isCancelled):

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

10:37 PM Changeset in webkit [293064] by Alan Coon
  • 3 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r288680. rdar://91446363

Detect failed ThreadableLoader creation in FileReaderLoader.
https://bugs.webkit.org/show_bug.cgi?id=235566

Patch by Gavin Phillips <gavin.p@apple.com> on 2022-01-27
Reviewed by Youenn Fablet.

When we fail to successfully create a ThreadableLoader in FileReaderLoader we should catch
the failure and return early.

  • Modules/fetch/FormDataConsumer.cpp: (WebCore::FormDataConsumer::consumeBlob):
  • fileapi/FileReaderLoader.cpp: (WebCore::FileReaderLoader::start):

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

10:31 PM Changeset in webkit [293063] by graouts@webkit.org
  • 6 edits in trunk/Source

[model] set canonicalWebPageURL and urlFragment on ASVInlinePreview on iOS
https://bugs.webkit.org/show_bug.cgi?id=239502
rdar://87352281

Reviewed by Dean Jackson.

Source/WebCore/PAL:

Add the canonicalWebPageURL and urlFragment properties to the SPI declarations.

  • pal/spi/ios/SystemPreviewSPI.h:

Source/WebKit:

Set the canonicalWebPageURL and urlFragment properties on the ASVInlinePreview prior to
entering fullscreen.

  • UIProcess/Cocoa/ModelElementControllerCocoa.mm:

(WebKit::ModelElementController::takeModelElementFullscreen):

  • UIProcess/ModelElementController.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::takeModelElementFullscreen):

Canonical link: https://commits.webkit.org/249793@main

10:31 PM Changeset in webkit [293062] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Remove unnecessary String allocations in CSSPrimitiveValue::unitTypeString
https://bugs.webkit.org/show_bug.cgi?id=239529

Patch by Alex Christensen <achristensen@webkit.org> on 2022-04-19
Reviewed by Chris Dumez.

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::unitTypeString):

  • css/CSSPrimitiveValue.h:
  • css/typedom/CSSUnitValue.cpp:

(WebCore::CSSUnitValue::unit const):
(WebCore::CSSUnitValue::unitSerialization const):

  • css/typedom/CSSUnitValue.h:
10:16 PM Changeset in webkit [293061] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ Release wk2 arm64 ] fast/selectors/selection-window-inactive-stroke-color.html is a flaky image-only failure
https://bugs.webkit.org/show_bug.cgi?id=228337

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249792@main

10:11 PM Changeset in webkit [293060] by Ben Nham
  • 17 edits in trunk

Handle public token updates in webpushd
https://bugs.webkit.org/show_bug.cgi?id=239042

Reviewed by Brady Eidson.

Source/WebCore:

When the public token associated with our push service changes, we have to invalidate all
push subscriptions, since they all derive from the public token. This is only expected to
happen in very rare cases, e.g. keychain corruption.

To implement this, we now listen for public token updates from our push service, and pass
that on to PushDatabase. PushDatabase persists the token and deletes all subscriptions on
token change if necessary.

I had to change the schema to allow for this. openAndMigrateDatabaseImpl now migrates
existing data on schema change rather than nuking the whole database so users won't lose
their existing subscriptions.

  • Modules/push-api/PushDatabase.cpp:

(WebCore::openAndMigrateDatabaseImpl):
(WebCore::PushDatabase::updatePublicToken):
(WebCore::PushDatabase::getPublicToken):

Source/WebKit:

When the public token associated with our push service changes, we have to invalidate all
push subscriptions, since they all derive from the public token. This is only expected to
happen in very rare cases, e.g. keychain corruption.

To implement this, we now listen for public token updates from our push service, and pass
that on to PushDatabase. PushDatabase persists the token and deletes all subscriptions on
token change if necessary.

  • Shared/WebPushDaemonConstants.h:

(WebKit::WebPushD::messageTypeSendsReply):

  • webpushd/ApplePushServiceConnection.mm:

(-[_WKAPSConnectionDelegate connection:didReceivePublicToken:]):
(-[_WKAPSConnectionDelegate connection:didReceiveIncomingMessage:]):

  • webpushd/MockPushServiceConnection.mm:

(WebPushD::MockPushServiceConnection::MockPushServiceConnection):
(WebPushD::MockPushServiceConnection::setPublicTokenForTesting):

  • webpushd/PushService.mm:

(WebPushD::PushService::PushService):
(WebPushD::PushService::setPublicTokenForTesting):
(WebPushD::PushService::didReceivePublicToken):

  • webpushd/PushServiceConnection.mm:

(WebPushD::PushServiceConnection::startListeningForPublicToken):
(WebPushD::PushServiceConnection::didReceivePublicToken):
(WebPushD::PushServiceConnection::setPublicTokenForTesting):

  • webpushd/WebPushDaemon.mm:

(WebPushD::Daemon::decodeAndHandleMessage):
(WebPushD::Daemon::setPublicTokenForTesting):

Tools:

  • Test that public token updates are handled properly at the PushDatabase and WebPushDaemon levels
  • Test schema migration in PushDatabase
  • TestWebKitAPI/Tests/WebCore/PushDatabase.cpp:

(TestWebKitAPI::createDatabaseSync):
(TestWebKitAPI::getPublicTokenSync):
(TestWebKitAPI::updatePublicTokenSync):
(TestWebKitAPI::getRecordByBundleIdentifierAndScopeSync):
(TestWebKitAPI::getRowIdentifiersSync):
(TestWebKitAPI::PushDatabaseTest::getPublicToken):
(TestWebKitAPI::PushDatabaseTest::updatePublicToken):
(TestWebKitAPI::PushDatabaseTest::getRecordByBundleIdentifierAndScope):
(TestWebKitAPI::PushDatabaseTest::getRowIdentifiers):
(TestWebKitAPI::TEST_F):
(TestWebKitAPI::TEST):
(TestWebKitAPI::createDatabaseFromStatements):

  • TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:
8:05 PM Changeset in webkit [293059] by Chris Dumez
  • 84 edits in trunk/Source

Use more r-value references for Text / CharacterData classes
https://bugs.webkit.org/show_bug.cgi?id=239481

Reviewed by Sam Weinig.

Source/WebCore:

Use more r-value references for Text / CharacterData classes, which infected
a lot of the surrounding code. This avoids some ref-counting churn.

  • dom/CDATASection.cpp:

(WebCore::CDATASection::CDATASection):
(WebCore::CDATASection::create):
(WebCore::CDATASection::cloneNodeInternal):
(WebCore::CDATASection::virtualCreate):

  • dom/CDATASection.h:
  • dom/CharacterData.h:

(WebCore::CharacterData::CharacterData):

  • dom/Comment.cpp:

(WebCore::Comment::Comment):
(WebCore::Comment::create):
(WebCore::Comment::cloneNodeInternal):

  • dom/Comment.h:
  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::stringReplaceAll):

  • dom/ContainerNode.h:
  • dom/DOMImplementation.cpp:

(WebCore::DOMImplementation::createHTMLDocument):

  • dom/DOMImplementation.h:
  • dom/Document.cpp:

(WebCore::Document::createTextNode):
(WebCore::Document::createComment):
(WebCore::Document::createCDATASection):
(WebCore::Document::createProcessingInstruction):
(WebCore::Document::createEditingTextNode):
(WebCore::Document::setTitle):

  • dom/Document.h:
  • dom/Element.cpp:

(WebCore::Element::insertAdjacentText):

  • dom/Element.h:
  • dom/ImageOverlay.cpp:

(WebCore::ImageOverlay::installImageOverlayStyleSheet):
(WebCore::ImageOverlay::updateSubtree):

  • dom/Node.cpp:

(WebCore::Node::convertNodesOrStringsIntoNode):
(WebCore::Node::setTextContent):

  • dom/Node.h:
  • dom/ProcessingInstruction.cpp:

(WebCore::ProcessingInstruction::ProcessingInstruction):
(WebCore::ProcessingInstruction::create):
(WebCore::ProcessingInstruction::cloneNodeInternal):

  • dom/ProcessingInstruction.h:
  • dom/Text.cpp:

(WebCore::Text::create):
(WebCore::Text::createEditingText):
(WebCore::Text::cloneNodeInternal):
(WebCore::Text::virtualCreate):
(WebCore::Text::createWithLengthLimit):

  • dom/Text.h:

(WebCore::Text::Text):

  • dom/mac/ImageControlsMac.cpp:

(WebCore::ImageControlsMac::createImageControls):

  • editing/CreateLinkCommand.cpp:

(WebCore::CreateLinkCommand::doApply):

  • editing/Editing.cpp:

(WebCore::createTabSpanElement):

  • editing/Editing.h:
  • editing/Editor.cpp:

(WebCore::Editor::styleForSelectionStart):

  • editing/InsertLineBreakCommand.cpp:

(WebCore::InsertLineBreakCommand::doApply):

  • editing/InsertTextCommand.cpp:

(WebCore::InsertTextCommand::positionInsideTextNode):

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplaceSelectionCommand::addSpacesForSmartReplace):

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::replace):

  • editing/markup.cpp:

(WebCore::createFragmentFromText):
(WebCore::createFragmentForTransformToFragment):

  • editing/markup.h:
  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::updateInnerTextValue):

  • html/BaseDateAndTimeInputType.h:
  • html/FTPDirectoryDocument.cpp:

(WebCore::FTPDirectoryDocumentParser::appendEntry):
(WebCore::FTPDirectoryDocumentParser::createTDForFilename):
(WebCore::FTPDirectoryDocumentParser::parseAndAppendOneLine):

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::setText):

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

(WebCore::HTMLElement::setInnerText):
(WebCore::HTMLElement::setOuterText):

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

(WebCore::HTMLMeterElement::didAddUserAgentShadowRoot):

  • html/HTMLOptionElement.cpp:

(WebCore::HTMLOptionElement::createForLegacyFactoryFunction):
(WebCore::HTMLOptionElement::setText):

  • html/HTMLOptionElement.h:
  • html/HTMLOutputElement.cpp:

(WebCore::HTMLOutputElement::setValue):
(WebCore::HTMLOutputElement::setDefaultValue):

  • html/HTMLOutputElement.h:
  • html/HTMLScriptElement.cpp:

(WebCore::HTMLScriptElement::setText):

  • html/HTMLScriptElement.h:
  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::setValueCommon):
(WebCore::HTMLTextAreaElement::setDefaultValue):
(WebCore::HTMLTextAreaElement::updatePlaceholderText):

  • html/HTMLTextAreaElement.h:
  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setInnerTextValue):

  • html/HTMLTextFormControlElement.h:
  • html/HTMLTitleElement.cpp:

(WebCore::HTMLTitleElement::setText):

  • html/HTMLTitleElement.h:
  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::updatePlaceholderText):

  • html/parser/AtomHTMLToken.h:

(WebCore::AtomHTMLToken::comment):

  • html/parser/HTMLConstructionSite.cpp:

(WebCore::HTMLConstructionSite::insertComment):
(WebCore::HTMLConstructionSite::insertCommentOnDocument):
(WebCore::HTMLConstructionSite::insertCommentOnHTMLHtmlElement):
(WebCore::HTMLConstructionSite::insertTextNode):

  • html/shadow/DateTimeEditElement.cpp:

(WebCore::DateTimeEditBuilder::visitLiteral):

  • html/shadow/DateTimeFieldElement.cpp:

(WebCore::DateTimeFieldElement::updateVisibleValue):

  • html/track/TextTrackCue.cpp:

(WebCore::TextTrackCue::rebuildDisplayTree):

  • html/track/VTTCue.cpp:

(WebCore::VTTCue::getDisplayTree):

  • html/track/WebVTTParser.cpp:

(WebCore::WebVTTTreeBuilder::buildFromString):
(WebCore::WebVTTTreeBuilder::constructTreeFromToken):

  • page/DragController.cpp:

(WebCore::documentFragmentFromDragData):

  • platform/text/DateTimeFormat.h:
  • platform/text/PlatformLocale.cpp:

(WebCore::DateTimeStringBuilder::visitLiteral):

  • svg/SVGTRefElement.cpp:

(WebCore::SVGTRefElement::updateReferencedText):
(WebCore::SVGTRefElement::detachTarget):

  • xml/XMLErrors.cpp:

(WebCore::createXHTMLParserErrorHeader):
(WebCore::XMLErrors::insertErrorMessageBlock):

  • xml/XMLTreeViewer.cpp:

(WebCore::XMLTreeViewer::transformDocumentToTreeView):

  • xml/XSLTProcessor.cpp:

(WebCore::XSLTProcessor::transformToFragment):

  • xml/parser/XMLDocumentParser.cpp:

(WebCore::XMLDocumentParser::createLeafTextNode):
(WebCore::XMLDocumentParser::parseDocumentFragment):

Source/WTF:

Add a function to AtomString to release its String. This is convenient when you have an AtomString
and need a String&&.

  • wtf/text/AtomString.h:
7:47 PM Changeset in webkit [293058] by ysuzuki@apple.com
  • 21 edits in branches/safari-613-branch/Source/JavaScriptCore

Cherry-pick r292493, rdar://91370257

Call Structure::get instead of Structure::getConcurrently on the mutator thread
https://bugs.webkit.org/show_bug.cgi?id=238823

Reviewed by Yusuke Suzuki.

We try to call Structure::get instead of Structure::getConcurrently when
we know for sure we're on the main thread. This is because getConcurrently
is slower than get.

  • bytecode/AccessCase.cpp: (JSC::AccessCase::couldStillSucceed const): (JSC::AccessCase::generateImpl):
  • bytecode/AdaptiveInferredPropertyValueWatchpointBase.cpp: (JSC::AdaptiveInferredPropertyValueWatchpointBase::install):
  • bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.cpp: (JSC::LLIntPrototypeLoadAdaptiveStructureWatchpoint::install):
  • bytecode/ObjectPropertyCondition.cpp: (JSC::ObjectPropertyCondition::structureEnsuresValidityAssumingImpurePropertyWatchpoint const): (JSC::ObjectPropertyCondition::isStillValidAssumingImpurePropertyWatchpoint const): (JSC::ObjectPropertyCondition::isStillValid const): (JSC::ObjectPropertyCondition::structureEnsuresValidity const):
  • bytecode/ObjectPropertyCondition.h:
  • bytecode/ObjectPropertyConditionSet.cpp: (JSC::ObjectPropertyConditionSet::structuresEnsureValidity const): (JSC::generateConditionsForPropertyMiss): (JSC::generateConditionsForPropertySetterMiss): (JSC::generateConditionsForPrototypePropertyHit): (JSC::generateConditionsForPrototypePropertyHitCustom): (JSC::generateConditionsForPrototypeEquivalenceConcurrently): (JSC::generateConditionsForPropertyMissConcurrently): (JSC::generateConditionsForPropertySetterMissConcurrently): (JSC::generateConditionForSelfEquivalence): (JSC::ObjectPropertyConditionSet::structuresEnsureValidityAssumingImpurePropertyWatchpoint const): Deleted. (JSC::ObjectPropertyConditionSet::isValidAndWatchable const): Deleted.
  • bytecode/ObjectPropertyConditionSet.h:
  • bytecode/PropertyCondition.cpp: (JSC::PropertyCondition::isStillValidAssumingImpurePropertyWatchpoint const): (JSC::watchabilityToConcurrency): (JSC::PropertyCondition::isStillValid const): (JSC::PropertyCondition::isWatchableWhenValid const): (JSC::PropertyCondition::isWatchableAssumingImpurePropertyWatchpoint const): (JSC::PropertyCondition::isWatchable const):
  • bytecode/PropertyCondition.h:
  • dfg/DFGAdaptiveStructureWatchpoint.cpp: (JSC::DFG::AdaptiveStructureWatchpoint::install):
  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::check): (JSC::DFG::ByteCodeParser::planLoad):
  • dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::tryFoldAsPutByOffset):
  • dfg/DFGDesiredWatchpoints.h: (JSC::DFG::AdaptiveStructureWatchpointAdaptor::hasBeenInvalidated):
  • dfg/DFGGraph.cpp: (JSC::DFG::Graph::watchCondition):
  • llint/LLIntSlowPaths.cpp: (JSC::LLInt::setupGetByIdPrototypeCache):
  • runtime/CachedSpecialPropertyAdaptiveStructureWatchpoint.cpp: (JSC::CachedSpecialPropertyAdaptiveStructureWatchpoint::install):
  • runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::tryInstallSpeciesWatchpoint):
  • runtime/JSObject.h: (JSC::JSObject::getDirect const):
  • runtime/Structure.h: (JSC::Structure::get):
  • runtime/StructureRareData.cpp: (JSC::StructureRareData::cacheSpecialPropertySlow):

Canonical link: https://commits.webkit.org/249341@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@292493 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:39 PM Changeset in webkit [293057] by ysuzuki@apple.com
  • 14 edits in branches/safari-613-branch/Source

Cherry-pick r292714, rdar://91584856

[JSC] Reduce use of unnecessary cryptographicallyRandom numbers
https://bugs.webkit.org/show_bug.cgi?id=239026

Reviewed by Saam Barati.

Source/JavaScriptCore:

This patch removes cryptographically random calls in some of super hot critical path.
MarkedBlock's use is very hot and it appears on Speedometer2 artrace. But this is just
a random shuffling of freelist, and WeakRandom is enough for that. This patch replaces
them with WeakRandom. It offers 0.3% improvement in Speedometer2.

  • assembler/AbstractMacroAssembler.cpp: (JSC::AbstractMacroAssemblerBase::initializeRandom): (WTF::printInternal):
  • assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssemblerBase::random): (JSC::AbstractMacroAssembler::AbstractMacroAssembler): (JSC::AbstractMacroAssembler::random): Deleted.
  • b3/air/AirCode.cpp: (JSC::B3::Air::Code::Code):
  • b3/air/AirCode.h: (JSC::B3::Air::Code::weakRandom): Deleted.
  • heap/MarkedBlockInlines.h: (JSC::MarkedBlock::Handle::specializedSweep):
  • runtime/VM.cpp: (JSC::VM::VM):
  • runtime/VM.h: (JSC::VM::heapRandom):

Source/WebCore:

We use createVersion4UUIDStringWeak since there is no need to use cryptographically random numbers for KeyframeEffect names.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::copyPropertiesFromSource): (WebCore::KeyframeEffect::updateBlendingKeyframes): (WebCore::KeyframeEffect::computeCSSTransitionBlendingKeyframes):

Source/WTF:

We add createVersion4UUIDStringWeak, which can generate UUID with WeakRandom numbers.

  • wtf/UUID.cpp: (WTF::convertRandomUInt128ToUUIDVersion4): (WTF::generateCryptographicallyRandomUUIDVersion4): (WTF::generateWeakRandomUUIDVersion4): (WTF::UUID::UUID): (WTF::createVersion4UUIDStringWeak):
  • wtf/UUID.h:
  • wtf/WeakRandom.h:

Canonical link: https://commits.webkit.org/249504@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@292714 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:32 PM Changeset in webkit [293056] by Chris Dumez
  • 26 edits in trunk

Replace String::replaceWithLiteral() with a String::replace() overload that takes in an ASCIILiteral
https://bugs.webkit.org/show_bug.cgi?id=239500

Reviewed by Darin Adler.

Source/WebCore:

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::encodeDatabaseName):

  • display/css/DisplayTextBox.cpp:

(WebCore::Display::TextBox::debugDescription const):

  • dom/Node.cpp:

(WebCore::Node::showNode const):

  • dom/Text.cpp:

(WebCore::appendTextRepresentation):

  • editing/EditingStyle.cpp:

(WebCore::StyleChange::extractTextStyles):

  • editing/Editor.cpp:

(WebCore::Editor::selectedText const):

  • editing/MarkupAccumulator.cpp:

(WebCore::MarkupAccumulator::appendQuotedURLAttributeValue):

  • editing/markup.cpp:

(WebCore::StyledMarkupAccumulator::takeResults):

  • html/URLDecomposition.cpp:

(WebCore::URLDecomposition::setSearch):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputLayoutBox):

  • loader/FormSubmission.cpp:

(WebCore::appendMailtoPostFormDataToURL):

  • rendering/LegacyInlineTextBox.cpp:

(WebCore::LegacyInlineTextBox::outputLineBox const):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::outputRenderObject const):

  • xml/XSLTProcessor.cpp:

(WebCore::transformTextStringToXHTMLDocumentString):

Source/WTF:

Replace String::replaceWithLiteral() with a String::replace() overload that takes in an ASCIILiteral.
replaceWithLiteral() was encouraging people not to use ASCIILiteral and the ""_s suffix and calling
replace() with an ASCIILiteral would result in less efficient code, which goes against the idea of
ASCIILiteral.

To address this, String::replaceWithLiteral() is removed. Now, callers can call String::replace()
with an ASCIILiteral instead and it will result in code that is as efficient. I have verified that
this change is perf-neutral on Speedometer on both Apple Silicon and Intel.

  • wtf/text/WTFString.h:

(WTF::String::replace):
(WTF::String::replaceWithLiteral): Deleted.

Tools:

  • TestWebKitAPI/Tests/WTF/WTFString.cpp:

(TestWebKitAPI::TEST):

7:24 PM Changeset in webkit [293055] by ysuzuki@apple.com
  • 41 edits
    4 adds in branches/safari-613-branch

Cherry-pick r292697, rdar://91547350

[JSC] DFG / FTL should be aware of JSString's String replacement
https://bugs.webkit.org/show_bug.cgi?id=238918

Reviewed by Saam Barati.

JSTests:

  • stress/resolve-rope-get-by-val.js: Added. (shouldBe): (test):
  • stress/resolve-rope-string-char-at.js: Added. (shouldBe): (test):
  • stress/resolve-rope-string-char-code-at.js: Added. (shouldBe): (test):
  • stress/resolve-rope-string-code-point-at.js: Added. (shouldBe): (test):

Source/JavaScriptCore:

After r289359, String in JSString* can be replaced even after it is resolved. When atomizing String inside JSString*,
we may replace the existing one to new AtomStringImpl if different AtomStringImpl is already registered in the
AtomStringTable. However, DFG / FTL GetIndexedPropertyStorage assumes that StringImpl* in JSString* never changes after
resolving. And this is wrong.

This patch decouples String handling in GetIndexedPropertyStorage as ResolveRope DFG node. GetIndexedPropertyStorage no
longer handles JSString and it is now tailored to object cases. ResolveRope does not expose StringImpl::m_data pointer,
and instead it keeps resolved JSString*. After this change,

GetByVal(String:@0, Untyped:@1, GetIndexedProperty(String:@0))

is changed to

GetByVal(ResolveRope(String:@0), Untyped:@1)

Also, we revisit all the value(...) callsites (by changing function name) and ensure that we have no code assuming String
cannot be changed after resolving.

A/B test ensured that this is perf-neutral.

  • b3/B3Generate.cpp: (JSC::B3::generateToAir):
  • bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::emitEqualityOpImpl):
  • dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
  • dfg/DFGClobberize.h: (JSC::DFG::clobberize):
  • dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants):
  • dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC):
  • dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): (JSC::DFG::FixupPhase::checkArray):
  • dfg/DFGNode.h: (JSC::DFG::Node::hasStorageChild const): (JSC::DFG::Node::storageChildIndex):
  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp: (JSC::DFG::JSC_DEFINE_JIT_OPERATION):
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute):
  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileGetCharCodeAt): (JSC::DFG::SpeculativeJIT::compileGetByValOnString):
  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile):
  • dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): (JSC::DFG::SpeculativeJIT::compileStringCodePointAt):
  • dfg/DFGTypeCheckHoistingPhase.cpp: (JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks): (JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks):
  • ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile):
  • ftl/FTLCompile.cpp: (JSC::FTL::compile):
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileNode): (JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage): (JSC::FTL::DFG::LowerDFGToB3::compileResolveRope): (JSC::FTL::DFG::LowerDFGToB3::compileStringCharAtImpl): (JSC::FTL::DFG::LowerDFGToB3::compileStringCharCodeAt): (JSC::FTL::DFG::LowerDFGToB3::compileStringCodePointAt):
  • jsc.cpp: (JSC_DEFINE_HOST_FUNCTION):
  • runtime/HashMapImplInlines.h: (JSC::jsMapHashImpl):
  • runtime/InternalFunction.cpp: (JSC::InternalFunction::name): (JSC::InternalFunction::displayName): (JSC::InternalFunction::calculatedDisplayName):
  • runtime/InternalFunction.h:
  • runtime/JSBoundFunction.h:
  • runtime/JSCJSValueInlines.h: (JSC::toPreferredPrimitiveType):
  • runtime/JSModuleLoader.cpp: (JSC::JSModuleLoader::importModule):
  • runtime/JSONObject.cpp: (JSC::Stringifier::appendStringifiedValue):
  • runtime/JSPropertyNameEnumerator.cpp: (JSC::JSPropertyNameEnumerator::computeNext):
  • runtime/JSRemoteFunction.h:
  • runtime/Operations.h: (JSC::jsString): (JSC::compareBigIntToOtherPrimitive): (JSC::compareBigInt32ToOtherPrimitive):
  • runtime/RegExpMatchesArray.h: (JSC::createRegExpMatchesArray):
  • runtime/StringPrototype.cpp: (JSC::JSC_DEFINE_JIT_OPERATION): (JSC::JSC_DEFINE_HOST_FUNCTION):
  • runtime/SymbolConstructor.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION):
  • tools/JSDollarVM.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION):

Source/WebCore:

  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::reportViolationForUnsafeEval):

Canonical link: https://commits.webkit.org/249489@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@292697 268f45cc-cd09-0410-ab3c-d52691b4dbfc

7:05 PM Changeset in webkit [293054] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

EventHandler should use a WeakPtr for m_resizeLayer
https://bugs.webkit.org/show_bug.cgi?id=239515

Reviewed by Wenson Hsieh.

Use a WeakPtr for m_resizeLayer.

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMousePressEvent):

  • page/EventHandler.h:
6:29 PM Changeset in webkit [293053] by Alan Coon
  • 3 edits in branches/safari-613-branch/Source

Cherry-pick r290874. rdar://problem/84869202

Integrator's note: partial cherry-pick in conjunction with earlier applied patch.

Push HTMLMediaElement renderer's contentBox rect to GPU process
https://bugs.webkit.org/show_bug.cgi?id=237444
rdar://84869202

Reviewed by Jer Noble.

Source/WebCore:

No new tests. This is a speculative fix, with new logging, for an issue I haven't
been able to reproduce.

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::updateRenderer): Push mediaPlayerContentBoxRect to the media player.
  • platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::playerContentBoxRectChanged): Pass rect to platform player.
  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h: (WebCore::MediaPlayerPrivateInterface::playerContentBoxRectChanged):

Source/WebKit:

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp: (WebKit::RemoteMediaPlayerProxy::RemoteMediaPlayerProxy): Configuration now has playerContentBoxRect. (WebKit::RemoteMediaPlayerProxy::mediaPlayerContentBoxRect const): (WebKit::RemoteMediaPlayerProxy::playerContentBoxRectChanged): Update playerContentBoxRect.
  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/RemoteMediaPlayerProxyConfiguration.h: (WebKit::RemoteMediaPlayerProxyConfiguration::encode const): (WebKit::RemoteMediaPlayerProxyConfiguration::decode):
  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm: (WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeIfPossible): Convert from static function so we can log. (WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable): Add logging. (WebKit::RemoteMediaPlayerProxy::mediaPlayerRenderingModeChanged): Ditto. (WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeFenced): Ditto. (WebKit::setVideoInlineSizeIfPossible): Deleted.
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::playerContentBoxRectChanged):
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp: (WebKit::RemoteMediaPlayerManager::createRemoteMediaPlayer):

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

5:45 PM Changeset in webkit [293052] by commit-queue@webkit.org
  • 51 edits in trunk

Implement most of CSS typed OM object stringifiers
https://bugs.webkit.org/show_bug.cgi?id=239483

Patch by Alex Christensen <achristensen@webkit.org> on 2022-04-19
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-typed-om/stylevalue-serialization/cssKeywordValue.tentative-expected.txt:
  • web-platform-tests/css/css-typed-om/stylevalue-serialization/cssMathValue.tentative-expected.txt:
  • web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative-expected.txt:

Source/WebCore:

This is an off-by-default experimental feature.
Covered by web platform tests.

  • css/typedom/CSSKeywordValue.cpp:

(WebCore::CSSKeywordValue::serialize const):

  • css/typedom/CSSKeywordValue.h:
  • css/typedom/CSSOMVariableReferenceValue.cpp:

(WebCore::CSSOMVariableReferenceValue::toString const):
(WebCore::CSSOMVariableReferenceValue::serialize const):

  • css/typedom/CSSOMVariableReferenceValue.h:
  • css/typedom/CSSStyleImageValue.cpp:

(WebCore::CSSStyleImageValue::serialize const):
(WebCore::CSSStyleImageValue::document const):

  • css/typedom/CSSStyleImageValue.h:
  • css/typedom/CSSStyleValue.cpp:

(WebCore::CSSStyleValue::toString const):
(WebCore::CSSStyleValue::serialize const):

  • css/typedom/CSSStyleValue.h:
  • css/typedom/CSSUnitValue.cpp:

(WebCore::CSSUnitValue::serialize const):

  • css/typedom/CSSUnitValue.h:
  • css/typedom/CSSUnparsedValue.cpp:

(WebCore::CSSUnparsedValue::serialize const):
(WebCore::CSSUnparsedValue::toString const): Deleted.

  • css/typedom/CSSUnparsedValue.h:
  • css/typedom/numeric/CSSMathInvert.cpp:

(WebCore::CSSMathInvert::serialize const):

  • css/typedom/numeric/CSSMathInvert.h:
  • css/typedom/numeric/CSSMathMax.cpp:

(WebCore::CSSMathMax::serialize const):

  • css/typedom/numeric/CSSMathMax.h:
  • css/typedom/numeric/CSSMathMin.cpp:

(WebCore::CSSMathMin::serialize const):

  • css/typedom/numeric/CSSMathMin.h:
  • css/typedom/numeric/CSSMathNegate.cpp:

(WebCore::CSSMathNegate::serialize const):

  • css/typedom/numeric/CSSMathNegate.h:
  • css/typedom/numeric/CSSMathProduct.cpp:

(WebCore::CSSMathProduct::serialize const):

  • css/typedom/numeric/CSSMathProduct.h:
  • css/typedom/numeric/CSSMathSum.cpp:

(WebCore::CSSMathSum::serialize const):

  • css/typedom/numeric/CSSMathSum.h:
  • css/typedom/numeric/CSSNumericArray.cpp:

(WebCore::CSSNumericArray::forEach):

  • css/typedom/numeric/CSSNumericArray.h:
  • css/typedom/transform/CSSMatrixComponent.cpp:

(WebCore::CSSMatrixComponent::serialize const):
(WebCore::CSSMatrixComponent::toMatrix):
(WebCore::CSSMatrixComponent::toString const): Deleted.

  • css/typedom/transform/CSSMatrixComponent.h:
  • css/typedom/transform/CSSPerspective.cpp:

(WebCore::CSSPerspective::serialize const):
(WebCore::CSSPerspective::toMatrix):
(WebCore::CSSPerspective::toString const): Deleted.

  • css/typedom/transform/CSSPerspective.h:
  • css/typedom/transform/CSSRotate.cpp:

(WebCore::CSSRotate::serialize const):
(WebCore::CSSRotate::toMatrix):
(WebCore::CSSRotate::toString const): Deleted.

  • css/typedom/transform/CSSRotate.h:
  • css/typedom/transform/CSSScale.cpp:

(WebCore::CSSScale::serialize const):
(WebCore::CSSScale::toMatrix):
(WebCore::CSSScale::toString const): Deleted.

  • css/typedom/transform/CSSScale.h:
  • css/typedom/transform/CSSSkew.cpp:

(WebCore::CSSSkew::serialize const):
(WebCore::CSSSkew::toMatrix):
(WebCore::CSSSkew::toString const): Deleted.

  • css/typedom/transform/CSSSkew.h:
  • css/typedom/transform/CSSSkewX.cpp:

(WebCore::CSSSkewX::serialize const):
(WebCore::CSSSkewX::toMatrix):
(WebCore::CSSSkewX::toString const): Deleted.

  • css/typedom/transform/CSSSkewX.h:
  • css/typedom/transform/CSSSkewY.cpp:

(WebCore::CSSSkewY::serialize const):
(WebCore::CSSSkewY::toMatrix):
(WebCore::CSSSkewY::toString const): Deleted.

  • css/typedom/transform/CSSSkewY.h:
  • css/typedom/transform/CSSTransformComponent.cpp:

(WebCore::CSSTransformComponent::toString const):

  • css/typedom/transform/CSSTransformComponent.h:
  • css/typedom/transform/CSSTransformValue.cpp:

(WebCore::CSSTransformValue::serialize const):

  • css/typedom/transform/CSSTransformValue.h:
  • css/typedom/transform/CSSTranslate.cpp:

(WebCore::CSSTranslate::serialize const):
(WebCore::CSSTranslate::toMatrix):
(WebCore::CSSTranslate::toString const): Deleted.

  • css/typedom/transform/CSSTranslate.h:
5:25 PM Changeset in webkit [293051] by Wenson Hsieh
  • 4 edits in trunk

[iOS] Dictation text that contains emojis is inserted twice upon finalization
https://bugs.webkit.org/show_bug.cgi?id=239508
rdar://91895524

Reviewed by Aditya Keerthi.

Source/WebKit:

WebPage::replaceDictatedText contains logic to only proceed with text replacement in the case where the
dictated text still matches the text before the current selection. To ensure this, it marches backwards through
visible positions from the start of the selection, for a total number of times equal to the length of the
expected string (oldText). If the text within this found range (i.e. from the position before the start of the
selection, to the start of the selection) no longer matches the oldText provided by the client, we return
early and do nothing.

However, this logic fails in the case where oldText contains emojis (or more generally, multiple codepoints
that combine to form a single grapheme cluster), since the length of the string is more than the number of
visible position iterations needed to find the correct starting position for the range. As a result, we end up
not replacing any characters, and when UIKit dictation code later calls -insertText: with the final dictation
string, we end up duplicating the finalized dictation text.

To address this issue, simply advance backwards by grapheme count instead of the raw string length to keep the
starting visible position consistent with the start of the range that we're trying to replace.

Test: UIWKInteractionViewProtocol.ReplaceDictatedTextContainingEmojis

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::replaceDictatedText):
(WebKit::WebPage::applyAutocorrectionInternal):

Also add a FIXME here around similar code that might also be susceptible to the same bug. However, in this case,
we avoid the problem because of subsequent logic that adjusts the starting position to try and match the
expected string. We may be able to remove or further limit this extra adjustment by using grapheme cluster count
here instead of string length when finding the initial starting position.

Tools:

Add an API test to exercise the change.

  • TestWebKitAPI/Tests/ios/UIWKInteractionViewProtocol.mm:

(TestWebKitAPI::TEST):

5:23 PM Changeset in webkit [293050] by Chris Dumez
  • 7 edits in trunk/Source/WebCore

Use SortedArrayMap in parseEnumeration<>() in the JS bindings
https://bugs.webkit.org/show_bug.cgi?id=239503

Reviewed by Darin Adler.

Use SortedArrayMap in parseEnumeration<>() in the JS bindings, which should be slightly
better for performance.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateEnumerationImplementationContent):

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

(WebCore::parseEnumeration<TestCallbackInterface::Enum>):

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

(WebCore::parseEnumeration<TestDefaultToJSONEnum>):

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

(WebCore::parseEnumeration<TestObj::EnumType>):
(WebCore::parseEnumeration<TestObj::EnumTrailingComma>):
(WebCore::parseEnumeration<TestObj::Optional>):
(WebCore::parseEnumeration<AlternateEnumName>):
(WebCore::parseEnumeration<TestObj::EnumA>):
(WebCore::parseEnumeration<TestObj::EnumB>):
(WebCore::parseEnumeration<TestObj::EnumC>):
(WebCore::parseEnumeration<TestObj::Kind>):
(WebCore::parseEnumeration<TestObj::Size>):
(WebCore::parseEnumeration<TestObj::Confidence>):

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

(WebCore::parseEnumeration<TestStandaloneDictionary::EnumInStandaloneDictionaryFile>):

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

(WebCore::parseEnumeration<TestStandaloneEnumeration>):

5:10 PM Changeset in webkit [293049] by Alan Coon
  • 1 copy in tags/WebKit-7613.2.6.1.2

Tag WebKit-7613.2.6.1.2.

5:05 PM Changeset in webkit [293048] by Alan Coon
  • 3 edits in branches/safari-613.2.6.1-branch/Source/WebKit

Cherry-pick r292431. rdar://problem/91311117

Revert r291598
https://bugs.webkit.org/show_bug.cgi?id=238842
<rdar://90677955>

Reviewed by Geoff Garen.

It caused some problems and needs further analysis.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSessionCocoa::createWebSocketTask):

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

5:03 PM Changeset in webkit [293047] by Alan Coon
  • 9 edits in branches/safari-613.2.6.1-branch/Source

Versioning.

WebKit-7613.2.6.1.2

4:56 PM Changeset in webkit [293046] by Russell Epstein
  • 9 edits in branches/safari-614.1.10-branch/Source

Versioning.

WebKit-7614.1.10.3

4:41 PM Changeset in webkit [293045] by mark.lam@apple.com
  • 2 edits in trunk

Update my GitHub login.

  • metadata/contributors.json:
4:25 PM Changeset in webkit [293044] by ntim@apple.com
  • 2 edits in trunk/Source/WebCore

Clean up SVGs added by r293038
https://bugs.webkit.org/show_bug.cgi?id=239522

Reviewed by Wenson Hsieh.

The old SVGs apply clip-paths on rectangles (corresponding to the shapes), then fill those clipped rectangles.
Instead fill/stroke the shapes directly and remove the rectangles.

Also remove version="1.1" from other SVGs which is unnecessary.

  • css/html.css:

(input::-webkit-credentials-auto-fill-button):
(input::-webkit-credentials-auto-fill-button:hover):
(input::-webkit-credentials-auto-fill-button:active):
(input::-webkit-contacts-auto-fill-button):
(input::-webkit-credit-card-auto-fill-button):

4:23 PM Changeset in webkit [293043] by msaboff@apple.com
  • 10 edits in trunk

Various WebKit tools need to be told about the system content path
https://bugs.webkit.org/show_bug.cgi?id=239516

Reviewed by Ryan Haddad.

Source/JavaScriptCore:

Added the INSTALL_PATH_PREFIX to the INSTALL_PATH for TestAPI and the JSC tools.
This will contain the system content path prefix when enabled.

  • Configurations/TestAPI.xcconfig:
  • Configurations/ToolExecutable.xcconfig:

Tools:

Added the INSTALL_PATH_PREFIX to the INSTALL_PATH for the webkit test tools.
This will contain the system content path prefix when enabled.

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
  • DumpRenderTree/mac/Configurations/LayoutTestHelper.xcconfig:
  • DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/BaseTarget.xcconfig:
4:13 PM Changeset in webkit [293042] by Chris Dumez
  • 41 edits in trunk/Source

Inline Element::shadowRoot()
https://bugs.webkit.org/show_bug.cgi?id=239460

Reviewed by Darin Adler.

Source/WebCore:

Inline Element::shadowRoot() given that it is small and shows up in Speedometer profiles.

  • bindings/js/JSCustomElementInterface.cpp:
  • css/CSSComputedStyleDeclaration.cpp:
  • css/SelectorChecker.cpp:
  • dom/ComposedTreeAncestorIterator.h:
  • dom/ComposedTreeIterator.cpp:
  • dom/ComposedTreeIterator.h:
  • dom/ContainerNode.cpp:
  • dom/ContainerNodeAlgorithms.cpp:
  • dom/Document.cpp:
  • dom/Element.cpp:

(WebCore::Element::elementRareData const): Deleted.
(WebCore::Element::shadowRoot const): Deleted.

  • dom/Element.h:
  • dom/ElementInlines.h:
  • dom/ElementRareData.h:

(WebCore::Element::elementRareData const):
(WebCore::Element::shadowRoot const):

  • dom/EventPath.cpp:
  • dom/ImageOverlay.cpp:
  • dom/mac/ImageControlsMac.cpp:
  • editing/TextIterator.cpp:
  • editing/cocoa/DataDetection.h:
  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::findDataDetectionResultElementInImageOverlay):

  • editing/cocoa/HTMLConverter.mm:
  • editing/markup.cpp:
  • html/HTMLDetailsElement.cpp:
  • html/HTMLImageElement.cpp:
  • page/ios/FrameIOS.mm:
  • rendering/RenderFileUploadControl.cpp:
  • style/PseudoClassChangeInvalidation.cpp:
  • style/StyleInvalidator.cpp:
  • style/StyleScope.cpp:
  • svg/SVGTRefElement.cpp:
  • testing/Internals.cpp:

Source/WebKit:

I moved findDataDetectionResultElementInImageOverlay() to WebCore since it only relies on WebCore
things. This function relies on ElementRareData but ElementRareData.h is not currently exported
from WebCore.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updateWithTextRecognitionResult):
(WebKit::WebPage::findDataDetectionResultElementInImageOverlay): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::dataDetectorImageOverlayPositionInformation):

3:32 PM Changeset in webkit [293041] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

REGRESSION(r292372): cloop crashes on s390x
https://bugs.webkit.org/show_bug.cgi?id=238956

Reviewed by Mark Lam.

  • Source/JavaScriptCore/jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::calleeFrameCodeBlockBeforeCall):
(JSC::AssemblyHelpers::calleeFrameCodeBlockBeforeTailCall):

  • Source/JavaScriptCore/jit/ThunkGenerators.cpp:

(JSC::boundFunctionCallGenerator):
(JSC::remoteFunctionCallGenerator):

  • Source/JavaScriptCore/llint/LowLevelInterpreter.asm:

Canonical link: https://commits.webkit.org/249780@main

3:10 PM Changeset in webkit [293040] by mark.lam@apple.com
  • 2 edits in trunk

Adding my GitHub credentials.

  • metadata/contributors.json:
3:04 PM Changeset in webkit [293039] by commit-queue@webkit.org
  • 13 edits
    3 deletes in trunk

Unreviewed, reverting r292947.
https://bugs.webkit.org/show_bug.cgi?id=239520

Introduced new assertion failures

Reverted changeset:

"Make release assertion in Document::updateLayout more precise
for FrameSelection::setSelection"
https://bugs.webkit.org/show_bug.cgi?id=239431
https://commits.webkit.org/r292947

2:53 PM Changeset in webkit [293038] by commit-queue@webkit.org
  • 4 edits in trunk

Update in-field icons for credential fields
https://bugs.webkit.org/show_bug.cgi?id=239336

Patch by Ricky Mondello <Ricky Mondello> on 2022-04-19
Reviewed by Wenson Hsieh.

Source/WebCore:

This new styling is only appropriate for Cocoa platforms.

  • css/html.css:

(input::-webkit-credentials-auto-fill-button):
(input::-webkit-credentials-auto-fill-button:hover):
(input::-webkit-credentials-auto-fill-button:active):

LayoutTests:

  • platform/mac/fast/forms/auto-fill-button/input-auto-fill-button-expected.txt:
2:47 PM Changeset in webkit [293037] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebKit

Add logging for WebsiteDataStore data fetch and removal
https://bugs.webkit.org/show_bug.cgi?id=239409

Reviewed by Chris Dumez.

This would help us debug issues like rdar://91422245.

  • NetworkProcess/NetworkProcess.cpp:

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

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::fetchDataAndApply):
(WebKit::WebsiteDataStore::removeData):

1:36 PM Changeset in webkit [293036] by Jonathan Bedard
  • 2 edits in trunk

Correction to botwatcher github username to contributors json

Reviewed by Jonathan Bedard.

  • metadata/contributors.json:

Canonical link: https://commits.webkit.org/249775@main

1:33 PM Changeset in webkit [293035] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

ASSERTION FAILED: !m_isInitializingSendSource crashes on the bots
https://bugs.webkit.org/show_bug.cgi?id=239399

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2022-04-19
Reviewed by Chris Dumez.

Avoid sending messages to IPC::Connection before the connection is open.
There's multiple logic problems as well as a race to toggle m_isInitializingSendSource.

Commit "RemoteRenderingBackend should have dedicated IPC::Connection for out-of-stream messages"
would make RRBProxy in WP create the "server" IPC::Connection and send that to RRB in GPUP.

This would cause RRB in GPUP to ASSERT(...
!m_isInitializingSendSource) fail in

the IPC work queue.

For "client" connection, IPC::Connection::open() will run in the calling queue, toggling
m_isInitializingSendSource = true. The m_isInitializingSendSource = false will be toggled
in the message send queue by the send source initialization callback.

If the caller has already enqueued messages before calling open(), the callbacks the
sendMessage() or open() schedules might run the functions which do not expect to be dispatched unless
m_isInitializingSendSource == false.

This commit just fixes the send vs open order, but does not fix the underlying problems.
They are tracked in bug 239494, which should also add tests for the case.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::RemoteRenderingBackend):
(WebKit::RemoteRenderingBackend::startListeningForIPC):

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::Connection::sendOutgoingMessage):
Expand one ASSERT(!a && !b) to individual assertions in order to catch the exact problem easier.

1:31 PM Changeset in webkit [293034] by Jonathan Bedard
  • 2 edits in trunk/Tools

[ews-build.webkit.org] GitHub usernames are case insensitive
https://bugs.webkit.org/show_bug.cgi?id=239509
<rdar://problem/91971337>

Reviewed by Aakash Jain.

  • Tools/CISupport/ews-build/steps.py:

(GitHub.email_for_owners): Treat all GitHub usernames as lowercase.
(Contributors.load): Ditto.
(ValidateCommitterAndReviewer.is_reviewer): Ditto.
(ValidateCommitterAndReviewer.is_committer): Ditto.
(ValidateCommitterAndReviewer.full_name_from_email): Ditto.
(AddReviewerMixin.gitCommitEnvironment): Ditto.
(AddAuthorToCommitMessage.author): Ditto.

Canonical link: https://commits.webkit.org/249773@main

1:27 PM Changeset in webkit [293033] by commit-queue@webkit.org
  • 17 edits in trunk/Source

[WebXR] Update Device::initializeTrackingAndRendering() to take in more parameters regarding the session setup
https://bugs.webkit.org/show_bug.cgi?id=239476

Patch by Ada Chan <adachan@apple.com> on 2022-04-19
Reviewed by Dean Jackson.

Source/WebCore:

Pass in document's origin and session features to Device::initializeTrackingAndRendering().

  • Modules/webxr/WebXRSession.cpp:

(WebCore::WebXRSession::WebXRSession):

  • Modules/webxr/WebXRSystem.h:
  • platform/xr/PlatformXR.h:
  • platform/xr/openxr/PlatformXROpenXR.cpp:

(PlatformXR::OpenXRDevice::initializeTrackingAndRendering):

  • platform/xr/openxr/PlatformXROpenXR.h:
  • testing/WebFakeXRDevice.cpp:

(WebCore::SimulatedXRDevice::initializeTrackingAndRendering):

  • testing/WebFakeXRDevice.h:

Source/WebKit:

Pass in document's origin and session features to Device::initializeTrackingAndRendering().

  • Shared/XR/XRDeviceProxy.cpp:

(WebKit::XRDeviceProxy::initializeTrackingAndRendering):

  • Shared/XR/XRDeviceProxy.h:
  • UIProcess/XR/PlatformXRCoordinator.h:
  • UIProcess/XR/PlatformXRSystem.cpp:

(WebKit::PlatformXRSystem::initializeTrackingAndRendering):

  • UIProcess/XR/PlatformXRSystem.h:
  • UIProcess/XR/PlatformXRSystem.messages.in:
  • WebProcess/XR/PlatformXRSystemProxy.cpp:

(WebKit::PlatformXRSystemProxy::initializeTrackingAndRendering):

  • WebProcess/XR/PlatformXRSystemProxy.h:
1:08 PM Changeset in webkit [293032] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

[Cocoa] Add explanatory comments in fillVectorWithVerticalGlyphPositions() and simplify it somewhat
https://bugs.webkit.org/show_bug.cgi?id=239480

Reviewed by Alan Bujtas.

This adds a lot of explanatory text in fillVectorWithVerticalGlyphPositions(). It also rewrites some of it to
call shared functions (computeOverallTextMatrixInternal() and computeVerticalTextMatrixInternal()) instead of
reimplementing the contents of those functions.

The last thing this patch does is it stops adding in CTFontGetMatrix() to the text matrix, because:

  1. It's always the identity, because we never create a font with one of these things
  2. Even if it wasn't the identity, Core Text already applies it itself, so if we apply it, it would be double

applied.

No new tests because there is no behavior change.

  • platform/graphics/FontCascade.h:
  • platform/graphics/coretext/FontCascadeCoreText.cpp:

(WebCore::computeBaseOverallTextMatrix):
(WebCore::computeOverallTextMatrix):
(WebCore::computeBaseVerticalTextMatrix):
(WebCore::computeVerticalTextMatrix):
(WebCore::fillVectorWithVerticalGlyphPositions):
(WebCore::showGlyphsWithAdvances):

12:24 PM Changeset in webkit [293031] by graouts@webkit.org
  • 11 edits in trunk/Source/WebKit

[model] ready promise does not work on iOS
https://bugs.webkit.org/show_bug.cgi?id=239395
rdar://91761135

Reviewed by Dean Jackson.

We actually never communicated success or failure when creating the ASVInlinePreview
in the UI process on iOS in WKModelView. We now provide a reference to the WebPageProxy
and a GraphicsLayer::PlatformLayerID when creating a WKModelView so that we can message
the Web process and have WebPage look for the matching ARKitInlinePreviewModelPlayerIOS
to notify of load success or failure via the ModelPlayerClient protocol which is already
implemented by HTMLModelElement.

  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:

(WebKit::RemoteLayerTreeHost::makeNode):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::modelInlinePreviewDidLoad):
(WebKit::WebPageProxy::modelInlinePreviewDidFailToLoad):

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

(-[WKModelView initWithModel:layerID:page:]):
(-[WKModelView createPreview]):
(-[WKModelView initWithModel:]): Deleted.

  • WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.h:
  • WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm:

(WebKit::ARKitInlinePreviewModelPlayerIOS::ARKitInlinePreviewModelPlayerIOS):
(WebKit::ARKitInlinePreviewModelPlayerIOS::~ARKitInlinePreviewModelPlayerIOS):
(WebKit::ARKitInlinePreviewModelPlayerIOS::modelPlayerForPageAndLayerID):
(WebKit::ARKitInlinePreviewModelPlayerIOS::pageLoadedModelInlinePreview):
(WebKit::ARKitInlinePreviewModelPlayerIOS::pageFailedToLoadModelInlinePreview):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::modelInlinePreviewDidLoad):
(WebKit::WebPage::modelInlinePreviewDidFailToLoad):

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

Canonical link: https://commits.webkit.org/249770@main

12:00 PM Changeset in webkit [293030] by Wenson Hsieh
  • 15 edits in trunk

[iOS] Text selection flickers when inserting text using dictation
https://bugs.webkit.org/show_bug.cgi?id=239467
rdar://91895659

Reviewed by Aditya Keerthi.

Source/WebCore:

Add a method to invalidate TemporarySelectionChange and IgnoreSelectionChangeForScope, which immediately
reverts Editor::ignoreSelectionChanges() state to false without triggering an appearance update, and also
ensures that the RAII object's destructor is a noop.

See WebKit/ChangeLog for more details.

  • editing/Editor.cpp:

(WebCore::TemporarySelectionChange::invalidate):
(WebCore::TemporarySelectionChange::~TemporarySelectionChange):

Make the destructor robust in the case where m_document has been cleared out already due to invalidating the
temporary selection change.

  • editing/Editor.h:

Also mark these as non-copyable and fast-allocated, while we're here. Since these are RAII objects, we never
expect them to be copied, and the WTF_MAKE_FAST_ALLOCATED allows us to use WTF::makeUnique when creating
unique pointers to these helper objects.

(WebCore::IgnoreSelectionChangeForScope::invalidate):

Source/WebKit:

Implement two new SPI methods on UIWKInteractionViewProtocol (to be added in rdar://91919121), which UIKit uses
to encapsulate text input changes while inserting final dictation results (specifically, a call to
-replaceDictatedText:withText:, followed by one or more calls to -insertText:).

During this scope, we suppress all DOM selection changes from propagating to the client (thereby causing visible
text selection updates) by creating and holding on to a IgnoreSelectionChangeForScope RAII object. At the end
of this scope, we then schedule one final editor state update after resetting the scope, to ensure that the
final selection state propagates to the UI process.

Test: UIWKInteractionViewProtocol.SuppressSelectionChangesDuringDictation

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

(-[WKContentView willInsertFinalDictationResult]):
(-[WKContentView didInsertFinalDictationResult]):
(-[WKContentView _updateChangedSelection:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::willInsertFinalDictationResult):
(WebKit::WebPageProxy::didInsertFinalDictationResult):

Plumb these method calls into the web process, through WebPageProxy and WebPage.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didCommitLoad):

If (for any reason) we're committing a load while holding on to m_ignoreSelectionChangeScopeForDictation,
forcibly call Editor::setIgnoreSelectionChanges(false, RevealSelection::No) and destroy the scoped object.

  • WebProcess/WebPage/WebPage.h:

Add m_ignoreSelectionChangeScopeForDictation, which is set in willInsertFinalDictationResult and
unset in didInsertFinalDictationResult below.

  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::replaceSelectedText):
(WebKit::WebPage::replaceDictatedText):

Deploy IgnoreSelectionChangeForScope here, so that if we're already ignoring selection changes due to
m_ignoreSelectionChangeScopeForDictation, we won't prematurely revert "ignore selection change" state (this is
because this RAII helper object consults the preexisting state of document.editor().ignoreSelectionChanges()
before calling into setIgnoreSelectionChanges, and effectively becomes a no-op if the bit was already set).

(WebKit::WebPage::willInsertFinalDictationResult):
(WebKit::WebPage::didInsertFinalDictationResult):

Tools:

Add an API test to verify that -willInsertFinalDictationResult and -didInsertFinalDictationResult correctly
suppresses intermediate editor UI updates.

  • TestWebKitAPI/Tests/ios/UIWKInteractionViewProtocol.mm:

(-[EditorStateObserver initWithWebView:]):
(-[EditorStateObserver _webView:editorStateDidChange:]):
(TestWebKitAPI::setUpEditableWebViewAndWaitForInputSession):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/ios/UIKitSPI.h:
11:54 AM Changeset in webkit [293029] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

fast/css/sticky/sticky-left.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=227467

Unreviewed test gardening.

  • LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/249768@main

11:23 AM Changeset in webkit [293028] by ntim@apple.com
  • 6 edits
    6 adds
    10 deletes in trunk

user-select: none shouldn't affect editability
https://bugs.webkit.org/show_bug.cgi?id=118009

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-ui/user-select-none-in-editable-expected.txt: Added.
  • web-platform-tests/css/css-ui/user-select-none-in-editable.html: Added.
  • web-platform-tests/css/css-ui/user-select-none-on-input-expected.txt: Added.
  • web-platform-tests/css/css-ui/user-select-none-on-input.html: Added.

Source/WebCore:

Tests: editing/selection/user-select-js-property.html

imported/w3c/web-platform-tests/css/css-ui/user-select-none-in-editable.html
imported/w3c/web-platform-tests/css/css-ui/user-select-none-on-input.html

Change effectiveUserSelect to take in account -webkit-user-modify.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::effectiveUserSelect const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::effectiveUserSelect const): Deleted.

LayoutTests:

  • Removed tests that were testing old behavior
  • Added new tests for new behavior (imported from the Blink codebase)
  • editing/selection/4866671.html: Removed.
  • editing/selection/5779984-1-expected.txt: Removed.
  • editing/selection/5779984-1.html: Removed.
  • editing/selection/user-select-js-property-expected.txt: Added.
  • editing/selection/user-select-js-property.html: Added.
  • platform/gtk/editing/selection/4866671-expected.png: Removed.
  • platform/gtk/editing/selection/4866671-expected.txt: Removed.
  • platform/ios/TestExpectations:
  • platform/ios/editing/selection/4866671-expected.txt: Removed.
  • platform/mac/editing/selection/4866671-expected.png: Removed.
  • platform/mac/editing/selection/4866671-expected.txt: Removed.
  • platform/win/editing/selection/4866671-expected.txt: Removed.
  • platform/wincairo/editing/selection/4866671-expected.txt: Removed.
11:15 AM Changeset in webkit [293027] by Antti Koivisto
  • 9 edits in trunk/Source/WebCore

[LFC][Integration] Use WeakPtr for InlineContent in iterator
https://bugs.webkit.org/show_bug.cgi?id=239492

Reviewed by Alan Bujtas.

Simplify the logic and increase robustness.

  • layout/integration/inline/InlineIteratorBoxModernPath.h:

(WebCore::InlineIterator::BoxModernPath::atEnd const):

If the layout goes away we are "at end", avoiding hitting null pointers.

  • layout/integration/inline/InlineIteratorLineBoxModernPath.h:

(WebCore::InlineIterator::LineBoxIteratorModernPath::atEnd const):

  • layout/integration/inline/LayoutIntegrationInlineContent.cpp:

(WebCore::LayoutIntegration::InlineContent::~InlineContent):
(WebCore::LayoutIntegration::InlineContent::clearAndDetach): Deleted.

No need for "detached" state, InlineContent is simply deleted.

  • layout/integration/inline/LayoutIntegrationInlineContent.h:

RefCounted -> CanMakeWeakPtr

(WebCore::LayoutIntegration::InlineContent::create): Deleted.

  • layout/integration/inline/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::adjustForPagination):
(WebCore::LayoutIntegration::LineLayout::ensureInlineContent):
(WebCore::LayoutIntegration::LineLayout::clearInlineContent):

  • layout/integration/inline/LayoutIntegrationLineLayout.h:
  • layout/integration/inline/LayoutIntegrationPagination.cpp:

(WebCore::LayoutIntegration::makeAdjustedContent):
(WebCore::LayoutIntegration::adjustLinePositionsForPagination):

  • layout/integration/inline/LayoutIntegrationPagination.h:
11:07 AM Changeset in webkit [293026] by dino@apple.com
  • 2 edits in trunk

Adding GitHub username.

  • metadata/contributors.json:
11:02 AM Changeset in webkit [293025] by Jonathan Bedard
  • 2 edits in trunk/Tools

[ews-build.webkit.org] Resolve conflicting Mixin inheritance
https://bugs.webkit.org/show_bug.cgi?id=239504
<rdar://problem/91968024>

Reviewed by Aakash Jain.

  • Tools/CISupport/ews-build/steps.py:

(GitHubMixin.fetch_data_from_url_with_authentication_github): Renamed from fetch_data_from_url_with_authentication.
(GitHubMixin.get_pr_json): Invoke GitHub specific version.
(GitHubMixin.get_reviewers): Ditto.
(GitHubMixin.remove_labels): Ditto.
(BugzillaMixin.fetch_data_from_url_with_authentication_bugzilla): Renamed from fetch_data_from_url_with_authentication.
(BugzillaMixin.get_patch_json): Invoke buildbot specific version.
(BugzillaMixin.get_bug_json): Ditto.
(GitHubMixin.fetch_data_from_url_with_authentication): Renamed to fetch_data_from_url_with_authentication_github.
(BugzillaMixin.fetch_data_from_url_with_authentication): Renamed to fetch_data_from_url_with_authentication_bugzilla.

Canonical link: https://commits.webkit.org/249764@main

10:57 AM Changeset in webkit [293024] by Chris Dumez
  • 6 edits in trunk/Source

Introduce makeAtomString()
https://bugs.webkit.org/show_bug.cgi?id=239464

Reviewed by Sam Weinig.

Source/WebCore:

Adopt makeAtomString() in a few places where it is useful.

  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::HTMLTreeBuilder::insertPhoneNumberLink):

  • page/FrameTree.cpp:

(WebCore::FrameTree::generateUniqueName const):

  • svg/SVGLengthValue.cpp:

(WebCore::SVGLengthValue::valueAsAtomString const):

Source/WTF:

Introduce makeAtomString() which is an optimized version of makeString() when the caller knows it wants an
AtomString. It may avoid a StringImpl allocation when the string is already in the AtomStringTable.

  • wtf/text/StringConcatenate.h:

(WTF::tryMakeAtomStringFromAdapters):
(WTF::tryMakeAtomString):
(WTF::makeAtomString):

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

[build.webkit.org] Use identifier as version when uploading artifacts (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=239321
<rdar://problem/91734798>

Reviewed by Aakash Jain and Ryan Haddad.

  • Tools/CISupport/build-webkit-org/steps.py:

(UploadTestResults): Strip leading r.
(ExtractTestResults.init): Ditto.

Canonical link: https://commits.webkit.org/249762@main

10:31 AM Changeset in webkit [293022] by aakash_jain@apple.com
  • 1 edit in trunk/Tools/CISupport/.gitignore

Remove public_html from .gitignore file for CISupport
https://bugs.webkit.org/show_bug.cgi?id=239501

Reviewed by Ross Kirsling.

  • Tools/CISupport/.gitignore:

Canonical link: https://commits.webkit.org/249761@main

10:24 AM Changeset in webkit [293021] by commit-queue@webkit.org
  • 8 edits in trunk

Fix runtime expose scope check for shadow realms
https://bugs.webkit.org/show_bug.cgi?id=238381

LayoutTests/imported/w3c:

Reviewed Darin Adler.

Updated idlharness expectations to reflect the fix for
AbortController.timeout visibility

Patch by Joseph Griego <jgriego@igalia.com> on 2022-04-19

  • web-platform-tests/dom/idlharness-shadowrealm.window-expected.txt:

Source/WebCore:

Patch by Joseph Griego <jgriego@igalia.com> on 2022-04-19
Reviewed by Darin Adler.

Because shadow realms re-use their incubating realm's execution context
it doesn't make sense to check the is${expose_scope}GlobalScope
methods on ScriptExecutionContext anymore--instead, we'll use the type
information on the JSGlobalScope wrapper

This is at least justified in part by the fact that
JSDOMGlobalObject#scriptExecutionContext already does this internally
today to actually fetch the execution context, so, we can at least be
assured that this behaves the same way.

Some global scopes (notably, here, AudioWorklet) do not have distinct
wrapper types so we need to add a side condition to the generated code,
which we do after the type check.

Also removes ScriptExecutionContext::isShadowRealmGlobalScope as it's
now dead code and was never overridden anyways (a mistake left over
from the initial integration)

Tests: idlharness tests, including fixed visibility of
AbortController.timeout

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateRuntimeEnableConditionalStringForExposeScope):

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

(WebCore::JSExposedStarPrototype::finishCreation):

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

(WebCore::JSTestDefaultToJSONFilteredByExposedPrototype::finishCreation):
(WebCore::jsTestDefaultToJSONFilteredByExposedPrototypeFunction_toJSONBody):

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

(WebCore::JSTestObjPrototype::finishCreation):

  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::isServiceWorkerGlobalScope const):
(WebCore::ScriptExecutionContext::isShadowRealmGlobalScope const): Deleted.

10:19 AM Changeset in webkit [293020] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, disable UnlinkedDFG code in x64
https://bugs.webkit.org/show_bug.cgi?id=237863

  • dfg/DFGPlan.cpp:

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

  • jit/GPRInfo.h:

(JSC::GPRInfo::toRegister):

10:14 AM Changeset in webkit [293019] by Jonathan Bedard
  • 1 edit in trunk/metadata/contributors.json

Adding botwatchers github usernames to contributors json

Reviewed by Jonathan Bedard.

  • metadata/contributors.json:

Canonical link: https://commits.webkit.org/249758@main

9:45 AM Changeset in webkit [293018] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Unreviewed, do not use RELEASE_ASSERT_NOT_REACHED in super hot path to suppress warnings
https://bugs.webkit.org/show_bug.cgi?id=239290

  • bytecode/PropertyCondition.cpp:

(JSC::watchabilityToConcurrency):

  • runtime/JSObject.h:

(JSC::JSObject::getDirect const):

  • runtime/Structure.h:

(JSC::Structure::get):

8:58 AM Changeset in webkit [293017] by Simon Fraser
  • 8 edits in trunk/Source/WebKit

Use ProcessTerminationReason::Unresponsive for unresponsive network processes
https://bugs.webkit.org/show_bug.cgi?id=239401

Reviewed by Chris Dumez.

NetworkProcessProxy used ProcessTerminationReason::RequestedByClient for all callers
of terminate(). Move the call to networkProcessDidTerminate() out to callers of
terminate() so they can pass the correct reasons.

Also use processTerminationReasonToString() in some more logs, and fix a log string
typo introduced in the previous commit.

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::gpuProcessExited):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::terminate):
(WebKit::NetworkProcessProxy::didBecomeUnresponsive):
(WebKit::NetworkProcessProxy::didReceiveInvalidMessage):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::resetStateAfterProcessTermination):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::gpuProcessExited):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::gpuProcessExited):
(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):

8:45 AM Changeset in webkit [293016] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

Delete old buildbot code from bot watchers dashboard
https://bugs.webkit.org/show_bug.cgi?id=239497

Reviewed by Jonathan Bedard.

  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/Buildbot.js:
  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/BuildbotIteration.js:
  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/BuildbotQueue.js:
  • Tools/CISupport/build-webkit-org/public_html/dashboard/Scripts/WebKitBuildbot.js:

Canonical link: https://commits.webkit.org/249755@main

5:32 AM Changeset in webkit [293015] by zan@falconsigh.net
  • 6 edits
    3 adds in trunk/Source/WebKit

[GTK][WPE][GPUProcess] Add RemoteGraphicsContextGLGBM, RemoteGraphicsContextGLProxyGBM
https://bugs.webkit.org/show_bug.cgi?id=239348

Reviewed by Carlos Garcia Campos.

Provide RemoteGraphicsContextGL and RemoteGraphicsContextGLProxy
implementations guarded by and based on USE(LIBGBM) functionality,
usable by the GTK and WPE ports when jointly enabled with ANGLE
backing of WebGL execution.

RemoteGraphicsContextGLGBM is the GPUProcess-side GL executor.
Internally it spawns a GraphicsContextGLGBM instance, and once invoked,
the PrepareForDisplay() IPC message returns the reply with the DMABuf
object that was used as the rendering backing in that context instance.

RemoteGraphicsContextGLProxyGBM is the WebProcess-side counterpart.
Besides relaying the prepare-for-display request, it also manages the
GraphicsLayerContentsDisplayDelegate object which handles presenting
DMABuf objects arriving from the GPUProcess. That delegate is of the
NicosiaDisplayDelegate type, a slim class also handling a
Nicosia::ContentLayer object through which any arriving DMABuf is
presented in the TextureMapper tree.

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:
  • GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • GPUProcess/graphics/RemoteGraphicsContextGLGBM.cpp: Added.

(WebKit::RemoteGraphicsContextGLGBM::RemoteGraphicsContextGLGBM):
(WebKit::RemoteGraphicsContextGLGBM::platformWorkQueueInitialize):
(WebKit::RemoteGraphicsContextGLGBM::prepareForDisplay):
(WebKit::RemoteGraphicsContextGL::create):

  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp: Added.

(WebKit::NicosiaDisplayDelegate::NicosiaDisplayDelegate):
(WebKit::NicosiaDisplayDelegate::~NicosiaDisplayDelegate):
(WebKit::NicosiaDisplayDelegate::platformLayer const):
(WebKit::NicosiaDisplayDelegate::swapBuffersIfNeeded):
(WebKit::RemoteGraphicsContextGLProxyGBM::RemoteGraphicsContextGLProxyGBM):
(WebKit::RemoteGraphicsContextGLProxyGBM::layerContentsDisplayDelegate):
(WebKit::RemoteGraphicsContextGLProxyGBM::prepareForDisplay):
(WebKit::RemoteGraphicsContextGLProxy::create):

4:42 AM Changeset in webkit [293014] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer][WebRTC] Minor cleanup in IncomingSourceGStreamer
https://bugs.webkit.org/show_bug.cgi?id=239417

Patch by Philippe Normand <pnormand@igalia.com> on 2022-04-19
Reviewed by Xabier Rodriguez-Calvar.

  • platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.cpp: Remove un-needed include.

(WebCore::RealtimeIncomingSourceGStreamer::registerClient): Minor optimization, create
string only for GStreamer builds enabling debug support.

Canonical link: https://commits.webkit.org/249753@main

3:56 AM Changeset in webkit [293013] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer] Runtime warning when the player configures the avdec AV1 decoder
https://bugs.webkit.org/show_bug.cgi?id=238991

Patch by Philippe Normand <pnormand@igalia.com> on 2022-04-19
Reviewed by Xabier Rodriguez-Calvar.

Not all libav GStreamer decoders have a max-threads property, the AV1 decoder for instance
does not. So we need to check the property is present before attempting to set it, in order
to avoid runtime warnings.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::configureVideoDecoder):

3:36 AM Changeset in webkit [293012] by ntim@apple.com
  • 2 edits in trunk/LayoutTests

[iOS] Also skip resize-orthogonal-containing-block.html
https://bugs.webkit.org/show_bug.cgi?id=239459

Unreviewed test gardening.

I should have done this with the other resize tests.

  • platform/ios/TestExpectations:
2:28 AM Changeset in webkit [293011] by ntim@apple.com
  • 2 edits in trunk/Source/WebCore

Clean up Element::isFocusableWithoutResolvingFullStyle()
https://bugs.webkit.org/show_bug.cgi?id=239028

Reviewed by Antti Koivisto.

  • dom/Element.cpp:

(WebCore::Element::isFocusableWithoutResolvingFullStyle const):

1:48 AM Changeset in webkit [293010] by Martin Robinson
  • 2 edits in trunk/Source/JavaScriptCore

Fix the address sanitizer build when building with gcc
https://bugs.webkit.org/show_bug.cgi?id=238869

Reviewed by Philippe Normand.

  • runtime/ConfigFile.cpp:

(JSC::ConfigFile::ConfigFile):

1:06 AM Changeset in webkit [293009] by ysuzuki@apple.com
  • 31 edits in trunk/Source/JavaScriptCore

[JSC] Use constants buffer in DFG
https://bugs.webkit.org/show_bug.cgi?id=237863

Reviewed by Saam Barati.

This patch newly introduces LinkableConstant concept. We replace TrustedImmPtr::weakPointer with
that, and it can be switched between two modes: (1) just embedding a constant pointer in machine code
or (2) emitting a load from specific callee-save register. We use (2) for unlinked DFG code so that
we can start decoupling constants from machine code, which will be separately allocated as DFG constant buffer.
To introduce this mechanism, we introduce CCallHelpers::ConstantMaterializer concept, which can be used
to materialize constant in a specified way in CCallHelpers. And we use this to implement DFG LinkableConstant.

We also avoid embedding global object pointer in the tail call by modifying CallFrameShuffler to save it.

  • Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::transfer64):
(JSC::MacroAssemblerARM64::transferPtr):
(JSC::MacroAssemblerARM64::branch64):
(JSC::MacroAssemblerARM64::branchPtr):

  • Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h:

(JSC::MacroAssemblerRISCV64::transfer64):
(JSC::MacroAssemblerRISCV64::transferPtr):
(JSC::MacroAssemblerRISCV64::branch64):
(JSC::MacroAssemblerRISCV64::branchPtr):

  • Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::transfer64):
(JSC::MacroAssemblerX86_64::transferPtr):
(JSC::MacroAssemblerX86_64::branch64):
(JSC::MacroAssemblerX86_64::branchPtr):

  • Source/JavaScriptCore/bytecode/CodeBlock.cpp:

(JSC::CodeBlock::setupWithLinkableBaselineCode):
(JSC::CodeBlock::~CodeBlock):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::finalizeJITInlineCaches):
(JSC::CodeBlock::getICStatusMap):
(JSC::CodeBlock::findStubInfo):
(JSC::CodeBlock::resetBaselineJITData):
(JSC::CodeBlock::stronglyVisitStrongReferences):
(JSC::CodeBlock::findPC):

  • Source/JavaScriptCore/bytecode/CodeBlock.h:

(JSC::CodeBlock::offsetOfJITData):
(JSC::CodeBlock::baselineJITData):
(JSC::CodeBlock::setDFGJITData):
(JSC::CodeBlock::dfgJITData):
(JSC::CodeBlock::offsetOfBaselineJITData): Deleted.

  • Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:
  • Source/JavaScriptCore/dfg/DFGJITCode.h:
  • Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::compileSetupRegistersForEntry):
(JSC::DFG::JITCompiler::compileFunction):
(JSC::DFG::JITCompiler::loadLinkableConstant):
(JSC::DFG::JITCompiler::storeLinkableConstant):
(JSC::DFG::JITCompiler::LinkableConstant::LinkableConstant):
(JSC::DFG::JITCompiler::LinkableConstant::materialize):
(JSC::DFG::JITCompiler::LinkableConstant::poke):

  • Source/JavaScriptCore/dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::branchLinkableConstant):
(JSC::DFG::JITCompiler::branchWeakPtr): Deleted.

  • Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp:

(JSC::DFG::JITFinalizer::finalize):

  • Source/JavaScriptCore/dfg/DFGPlan.cpp:

(JSC::DFG::Plan::addLinkableConstant):
(JSC::DFG::Plan::finalizeJITData):

  • Source/JavaScriptCore/dfg/DFGPlan.h:
  • Source/JavaScriptCore/dfg/DFGSaneStringGetByValSlowPathGenerator.h:
  • Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitGetCallee):
(JSC::DFG::SpeculativeJIT::silentFill):
(JSC::DFG::SpeculativeJIT::compileDeleteById):
(JSC::DFG::SpeculativeJIT::compileDeleteByVal):
(JSC::DFG::SpeculativeJIT::compileInById):
(JSC::DFG::SpeculativeJIT::compileInByVal):
(JSC::DFG::SpeculativeJIT::compileHasPrivate):
(JSC::DFG::SpeculativeJIT::compilePushWithScope):
(JSC::DFG::SpeculativeJIT::compileStringSlice):
(JSC::DFG::SpeculativeJIT::compileToLowerCase):
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::compileCheckTraps):
(JSC::DFG::SpeculativeJIT::compileContiguousPutByVal):
(JSC::DFG::SpeculativeJIT::compileDoublePutByVal):
(JSC::DFG::SpeculativeJIT::compilePutByVal):
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
(JSC::DFG::SpeculativeJIT::compileFromCharCode):
(JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):

  • Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::TrustedImmPtr::TrustedImmPtr):
(JSC::DFG::SpeculativeJIT::callOperationWithCallFrameRollbackOnException):
(JSC::DFG::SpeculativeJIT::branchLinkableConstant):

  • Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::genericJSValueNonPeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compileToBooleanObjectOrOther):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compileGetByVal):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileArithRandom):

  • Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::genericJSValueNonPeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compileCompareEqPtr):
(JSC::DFG::SpeculativeJIT::compileToBooleanObjectOrOther):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::emitUntypedBranch):
(JSC::DFG::SpeculativeJIT::compileGetByVal):
(JSC::DFG::SpeculativeJIT::compileRegExpTestInline):
(JSC::DFG::SpeculativeJIT::compile):

  • Source/JavaScriptCore/dfg/DFGThunks.cpp:

(JSC::DFG::osrEntryThunkGenerator):

  • Source/JavaScriptCore/jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::executableFor): Deleted.

  • Source/JavaScriptCore/jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::globalObjectFor): Deleted.

  • Source/JavaScriptCore/jit/CCallHelpers.h:

(JSC::CCallHelpers::pokeForArgument):
(JSC::CCallHelpers::setupArgumentsImpl):

  • Source/JavaScriptCore/jit/GPRInfo.h:

(JSC::GPRInfo::toRegister):

  • Source/JavaScriptCore/jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::emitMaterializeMetadataAndConstantPoolRegisters):

  • Source/JavaScriptCore/jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_catch):

  • Source/JavaScriptCore/jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • Source/JavaScriptCore/jit/JITOperations.h:
  • Source/JavaScriptCore/jit/RegisterSet.cpp:

(JSC::RegisterSet::llintBaselineCalleeSaveRegisters):
(JSC::RegisterSet::dfgCalleeSaveRegisters):

  • Source/JavaScriptCore/llint/LLIntData.h:
  • Source/JavaScriptCore/llint/LowLevelInterpreter.asm:
  • Source/JavaScriptCore/runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::offsetOfGlobalThis):

Canonical link: https://commits.webkit.org/249748@main

Apr 18, 2022:

11:38 PM Changeset in webkit [293008] by zan@falconsigh.net
  • 2 edits in trunk/Source/WebCore

Remove the PlatformMediaEngineClassName macro
https://bugs.webkit.org/show_bug.cgi?id=239384

Reviewed by Philippe Normand.

Remove the PlatformMediaEngineClassName macro used in the MediaPlayer
implementation file. It's only used for two media engines.

For GStreamer, the code can be simplified and grouped under a single
if-block. For USE_MEDIA_FOUNDATION, the relevant call can similarly be
guarded by the corresponding build guards.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::WTF_REQUIRES_LOCK):

10:26 PM Changeset in webkit [293007] by mmaxfield@apple.com
  • 5 edits in trunk/LayoutTests

[WebGPU] Unskip api/validation/createSampler.html 🎉
https://bugs.webkit.org/show_bug.cgi?id=239448

Reviewed by Darin Adler.

Turns out we were already passing it.

  • http/tests/webgpu/webgpu/api/validation/createSampler-expected.txt:
  • platform/ios-device-wk1/TestExpectations:
  • platform/ios-simulator-wk1/TestExpectations:
  • platform/mac-wk1/TestExpectations:
8:25 PM Changeset in webkit [293006] by Tyler Wilcock
  • 22 edits
    5 adds in trunk

AX: Update the isolated tree in response to AXElementBusyChanged and AXTextChanged notifications
https://bugs.webkit.org/show_bug.cgi?id=239434

Reviewed by Chris Fleizach.

Source/WebCore:

We need to update the isolated tree in response to these notifications.

This patch also makes AccessibilityNodeObjects (e.g. for display:contents elements)
properly report AXCoreObject::isBusy by moving AccessibilityRenderObject's implementation
to AccessibilityNodeObject. This also required AccessibilityRenderObject::elementAttributeValue
to move as well.

Tests: accessibility/text-updates-after-dynamic-change.html

accessibility/aria-busy-updates-after-dynamic-change.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::updateIsolatedTree):

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::isBusy const):
Moved from AccessibilityRenderObject.
(WebCore::AccessibilityNodeObject::elementAttributeValue const):
Moved from AccessibilityRenderObject.

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

(WebCore::AccessibilityRenderObject::setElementAttributeValue):
Delete this method as it was unused.
(WebCore::AccessibilityRenderObject::elementAttributeValue const):
Moved to AccessibilityNodeObject.
(WebCore::AccessibilityRenderObject::isBusy const):
Moved to AccessibilityNodeObject.

  • accessibility/AccessibilityRenderObject.h:

Tools:

Added necessary tooling to enable querying AX object busy state for
the test added with this patch.

  • DumpRenderTree/AccessibilityUIElement.cpp:

(getIsBusyCallback):
(AccessibilityUIElement::getJSClass):

  • DumpRenderTree/AccessibilityUIElement.h:
  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::isBusy const):

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::isBusy const):

  • DumpRenderTree/win/AccessibilityUIElementWin.cpp:

(AccessibilityUIElement::isBusy const):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:

(WTR::AccessibilityUIElement::isBusy const):

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::isBusy const):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::isBusy const):

  • WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp:

(WTR::AccessibilityUIElement::isBusy const):

LayoutTests:

  • accessibility/text-updates-after-dynamic-change-expected.txt: Added.
  • accessibility/text-updates-after-dynamic-change.html: Added.
  • accessibility/aria-busy-updates-after-dynamic-change-expected.txt: Added.
  • accessibility/aria-busy-updates-after-dynamic-change.html: Added.
  • platform/glib/TestExpectations:

Skip new test.

  • platform/ios/TestExpectations:

Enable new tests.

  • platform/ios/accessibility/text-updates-after-dynamic-change-expected.txt: Added.
  • platform/win/TestExpectations:

Skip aria-busy-updates-after-dynamic-change.html.

7:45 PM Changeset in webkit [293005] by commit-queue@webkit.org
  • 37 edits in trunk

Implement CSSTransformValue.is2D
https://bugs.webkit.org/show_bug.cgi?id=239462

Patch by Alex Christensen <achristensen@webkit.org> on 2022-04-18
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative-expected.txt:
  • web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssRotate.tentative-expected.txt:
  • web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssScale.tentative-expected.txt:
  • web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative-expected.txt:
  • web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative-expected.txt:

Source/WebCore:

This is an off-by-default feature.
Covered by WPT tests.

  • bindings/js/JSCSSTransformComponentCustom.cpp:

(WebCore::toJSNewlyCreated):

  • css/typedom/CSSNumericValue.cpp:

(WebCore::CSSNumericValue::rectifyNumberish):

  • css/typedom/CSSNumericValue.h:
  • css/typedom/numeric/CSSNumericType.h:

(WebCore::CSSNumericType::valueForType const):
(WebCore::CSSNumericType::nonZeroEntryCount const):
(WebCore::CSSNumericType::matches const):
(WebCore::CSSNumericType::matchesNumber const):

  • css/typedom/transform/CSSMatrixComponent.cpp:

(WebCore::CSSMatrixComponent::create):
(WebCore::CSSMatrixComponent::CSSMatrixComponent):

  • css/typedom/transform/CSSMatrixComponent.h:

(WebCore::CSSMatrixComponent::create): Deleted.

  • css/typedom/transform/CSSMatrixComponent.idl:
  • css/typedom/transform/CSSRotate.cpp:

(WebCore::CSSRotate::create):
(WebCore::CSSRotate::CSSRotate):
(WebCore::CSSRotate::setX):
(WebCore::CSSRotate::setY):
(WebCore::CSSRotate::setZ):
(WebCore::CSSRotate::setAngle):

  • css/typedom/transform/CSSRotate.h:

(WebCore::CSSRotate::x):
(WebCore::CSSRotate::y):
(WebCore::CSSRotate::z):
(WebCore::CSSRotate::setX): Deleted.
(WebCore::CSSRotate::setY): Deleted.
(WebCore::CSSRotate::setZ): Deleted.
(WebCore::CSSRotate::setAngle): Deleted.

  • css/typedom/transform/CSSScale.cpp:

(WebCore::CSSScale::create):
(WebCore::CSSScale::CSSScale):

  • css/typedom/transform/CSSScale.h:

(WebCore::CSSScale::x const):
(WebCore::CSSScale::y const):
(WebCore::CSSScale::z const):
(WebCore::CSSScale::x): Deleted.
(WebCore::CSSScale::y): Deleted.
(WebCore::CSSScale::z): Deleted.

  • css/typedom/transform/CSSTransformComponent.cpp:

(WebCore::CSSTransformComponent::toString const):
(WebCore::CSSTransformComponent::toMatrix): Deleted.

  • css/typedom/transform/CSSTransformComponent.h:

(WebCore::CSSTransformComponent::CSSTransformComponent):
(WebCore::CSSTransformComponent::getType const): Deleted.

  • css/typedom/transform/CSSTransformValue.cpp:

(WebCore::CSSTransformValue::create):
(WebCore::CSSTransformValue::setItem):
(WebCore::CSSTransformValue::is2D const):
(WebCore::CSSTransformValue::setIs2D): Deleted.

  • css/typedom/transform/CSSTransformValue.h:
  • css/typedom/transform/CSSTranslate.h:
5:54 PM Changeset in webkit [293004] by Wenson Hsieh
  • 2 edits in trunk/LayoutTests

[iOS] fast/events/touch/force-press-event.html fails on iPhones with top safe area insets
https://bugs.webkit.org/show_bug.cgi?id=239475

Reviewed by Darin Adler.

Adjust this test so that it simulates a force press over the center of the target element.

  • platform/iphone-7/fast/events/touch/force-press-event.html:
5:50 PM Changeset in webkit [293003] by Alan Coon
  • 3 edits
    2 adds in branches/safari-613-branch

Cherry-pick r292858. rdar://problem/90699078

[web-animations] REGRESSION(r291527): assertion hit during teardown of document with CSS Animations
https://bugs.webkit.org/show_bug.cgi?id=239291
rdar://90699078

Reviewed by Dean Jackson.

Source/WebCore:

When a CSS Animation is not considered to be relevant anymore, it is removed from both AnimationTimeline::m_animations
and Styleable::animations(). However, if that animation becomes relevant again, it will be added back to the associated
effect stack as well as AnimationTimeline::m_animations but not to Styleable::animations().

This causes a problem because when eventually that CSS Animation's target is removed from the tree, such as during
document teardown, Styleable::cancelDeclarativeAnimations() will be called an iterate over Styleable::animations()
to find declarative animations to cancel. Since the CSS animation was not added to Styleable::animations(), it will
not be canceled and the associated effect will not be removed from the effect stack.

Later in Styleable::cancelDeclarativeAnimations(), the list of associated CSS Animation names is cleared.

If during that teardown an animation resolution is performed, such as within a "beforeunload" event listener as
shown in the new test, we will get into a state where there are effects left in the effect stack of the element
being torn down but no associated CSS Animation names and we will hit the RELEASE_ASSERT_NOT_REACHED() at the
end of compareCSSAnimations().

To fix this, we simply ensure that we add animations back to Styleable::animations() within
AnimationTimeline::animationTimingDidChange() the same way we add the animations back to
AnimationTimeline::m_animations.

Test: webanimations/css-animation-resolution-during-teardown.html

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::animationTimingDidChange):

LayoutTests:

Add a new test that would have asserted prior to the source change.

  • webanimations/css-animation-resolution-during-teardown-expected.txt: Added.
  • webanimations/css-animation-resolution-during-teardown.html: Added.

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

5:50 PM Changeset in webkit [293002] by Alan Coon
  • 3 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r292846. rdar://problem/88965550

Adjust when _setPrivacyProxyFailClosedForUnreachableNonMainHosts is called
https://bugs.webkit.org/show_bug.cgi?id=237735

Reviewed by Geoff Garen.

This is recommitting http://trac.webkit.org/r291598 but leaving the definition of PrivateRelayed::Yes and ::No
based on whether metrics._privacyStance == nw_connection_privacy_stance_direct instead of nw_connection_privacy_stance_failed.
It has flip flopped several times in the various related commits, but it needs to be nw_connection_privacy_stance_direct.
I manually verified that this fixes <rdar://88965550> without reintroducing <rdar://90677955>.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): (WebKit::NetworkSessionCocoa::createWebSocketTask):

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

5:50 PM Changeset in webkit [293001] by Alan Coon
  • 5 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r292779. rdar://problem/89750945

RejectedPromiseTracker can be recreated if we are in a worker / worklet whose execution is terminating
https://bugs.webkit.org/show_bug.cgi?id=239130

Reviewed by Chris Dumez.

We update ScriptExecutionContext::ensureRejectedPromiseTrackerSlow so that we wont
recreate the promise tracker if we are in a worker / worklet whose execution is terminating.

  • bindings/js/JSDOMGlobalObject.cpp: (WebCore::JSDOMGlobalObject::promiseRejectionTracker):
  • bindings/js/JSExecState.cpp: (WebCore::JSExecState::didLeaveScriptContext):
  • dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::ensureRejectedPromiseTrackerSlow):
  • dom/ScriptExecutionContext.h: (WebCore::ScriptExecutionContext::ensureRejectedPromiseTracker):

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

5:50 PM Changeset in webkit [293000] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/ThirdParty/ANGLE

Cherry-pick r292743. rdar://problem/91437430

This WebGL example crashes
https://bugs.webkit.org/show_bug.cgi?id=238953

Null-check subnodes while performing a deep copy for
loops, and branches. These nodes can be null in some cases

Reviewed by Dean Jackson.

  • src/compiler/translator/IntermNode.cpp: (sh::TIntermBranch::TIntermBranch): (sh::TIntermLoop::TIntermLoop):

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

5:50 PM Changeset in webkit [292999] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r292638. rdar://problem/91255370

Simplify / Optimize the whitespace cache implementation
https://bugs.webkit.org/show_bug.cgi?id=238736
<rdar://problem/91255370>

Reviewed by Darin Adler.

Follow-up to r292310 to add missing blank lines.

  • html/parser/HTMLConstructionSite.h:

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

5:50 PM Changeset in webkit [292998] by Alan Coon
  • 4 edits in branches/safari-613-branch/Source

Cherry-pick r292609. rdar://problem/90882766

Broaden TypedArray API fix to all apps not just Bleacher Report
https://bugs.webkit.org/show_bug.cgi?id=238955

Reviewed by Saam Barati.

Source/JavaScriptCore:

  • API/JSTypedArray.cpp: (isLinkedBeforeTypedArrayLengthQuirk): (JSObjectGetArrayBufferByteLength): (isBleecherReport): Deleted.

Source/WTF:

  • wtf/cocoa/RuntimeApplicationChecksCocoa.h:

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

5:50 PM Changeset in webkit [292997] by Alan Coon
  • 7 edits
    1 add in branches/safari-613-branch

Cherry-pick r292594. rdar://problem/91467003

[JSC] Fire structure transition watchpoint in Structure::finishCreation instead of Structure constructor
https://bugs.webkit.org/show_bug.cgi?id=238980

Reviewed by Saam Barati.

JSTests:

  • stress/heap-allocation-in-did-structure-transition-watchpoint.js: Added. (isPropertyOfType): (getProperties): (getObjects): (getRandomObject): (getRandomProperty): (callGC): (get var):

Source/JavaScriptCore:

After https://github.com/WebKit/WebKit/commit/dc3a347474a183891f8e07966dc09e684d7a1d13 change,
we start using Structure::get in the main thread. However one of the difference between Structure::get and
Structure::getConcurrently is that it can allocate GC memory: PropertyTable can be materialized.

Structure constructor was firing structure transition watchpoint. And some of watchpoints were using
Structure::getConcurrently. That's fine before, but now, it becomes Structure::get. It is not OK since
we cannot allocate GC memory inside constructor of GC managed objects.

This patch split didTransitionFromThisStructure into didTransitionFromThisStructureWithoutFiringWatchpoint and
fireStructureTransitionWatchpoint. And firing watchpoints in Structure::finishCreation instead of Structure
constructor so that we can allocate GC memory while firing watchpoints.

  • runtime/BrandedStructure.cpp: (JSC::BrandedStructure::BrandedStructure): (JSC::BrandedStructure::create):
  • runtime/BrandedStructure.h:
  • runtime/Structure.cpp: (JSC::Structure::Structure): (JSC::Structure::didTransitionFromThisStructureWithoutFiringWatchpoint const): (JSC::Structure::fireStructureTransitionWatchpoint const): (JSC::Structure::didTransitionFromThisStructure const):
  • runtime/Structure.h: (JSC::Structure::finishCreation):
  • runtime/StructureInlines.h: (JSC::Structure::create):

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

5:50 PM Changeset in webkit [292996] by Alan Coon
  • 4 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r292585. rdar://problem/90553831

When using a TrackDisplayUpdateScope queue updateActiveTextTrackCues as a task
https://bugs.webkit.org/show_bug.cgi?id=238963

Reviewed by Eric Carlson.

The HTMLMediaElement::didRemoveTextTrack call is done under ScriptDisallowedScope but this path
currently can call updateActiveTextTrackCues which could result in updating the layout downstream.
To resolve this we execute updateActiveTextTrackCues under a queueCancellableTaskKeepingObjectAlive call.

We also add a needed check in RenderVTTCue::initializeLayoutParameters exposed by queueing the task.

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::endIgnoringTrackDisplayUpdateRequests): (WebCore::HTMLMediaElement::cancelPendingTasks):
  • html/HTMLMediaElement.h:
  • rendering/RenderVTTCue.cpp: (WebCore::RenderVTTCue::initializeLayoutParameters):

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

5:50 PM Changeset in webkit [292995] by Alan Coon
  • 4 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r292563. rdar://problem/88969850

(Safari 15 - iOS15): Increased audio latency on streaming via webrtc
https://bugs.webkit.org/show_bug.cgi?id=236363
<rdar://problem/88969850>

Reviewed by Eric Carlson.

On macOS 12.3, the default preferred buffer size is roughly 100 ms.
This is ok for regular audio playback but is not desirable when playing realtime audio.
To reduce the perceived latency, we now reduce the preferred buffer size to 20ms
whenever playing an audio MediaStreamTrack, similarly to when capturing audio.

Manually tested.

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

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

5:49 PM Changeset in webkit [292994] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r292560. rdar://problem/90924861

Iterate over copy of animated properties in WebCore::WebAnimation::commitStyles
https://bugs.webkit.org/show_bug.cgi?id=238940

Reviewed by Antoine Quint.

WebAnimation::resolve can end up clearing the animated properties during iteration.

The proposal here will make a copy of the properties before applying the steps
outlined in the spec.

  • animation/WebAnimation.cpp: (WebCore::WebAnimation::commitStyles):

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

5:49 PM Changeset in webkit [292993] by Alan Coon
  • 4 edits
    4 adds in branches/safari-613-branch

Cherry-pick r292522. rdar://problem/91130503

NBSP characters drawn in fonts that don't support the space character turn into boxes
https://bugs.webkit.org/show_bug.cgi?id=238836
<rdar://problem/91130503>

Reviewed by Alan Bujtas.

Source/WebCore:

We have some historical code in WebKit where we swap out the non-breaking space glyph
for the space glyphs when rendering. This is not what the other browsers do; they will
faithfully render the non-breaking space glyph. This patch aligns with the other
browsers.

This patch also fixes a similar problem with tab characters. Other browsers never
render any visible tab glyphs, even if the font has a visible glyph for the tab
character. This patch implements this.

This patch also only clobbers the glyphs used for carriageReturn and newlineCharacter
if the replacement glyph exists.

Test: fast/text/nbsp-no-space.html

  • platform/graphics/WidthIterator.cpp: (WebCore::WidthIterator::applyCSSVisibilityRules):

LayoutTests:

  • fast/text/nbsp-no-space-expected.html: Added.
  • fast/text/nbsp-no-space.html: Added.
  • fast/text/resources/Ahem-nbsp-no-space.ttf: Added. Supports NBSP but not space.
  • fast/text/resources/Ahem-visible-tab-and-space.ttf: Added. Has visible glyphs for tab and space.

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

5:49 PM Changeset in webkit [292992] by Alan Coon
  • 4 edits
    1 add in branches/safari-613-branch

Cherry-pick r292484. rdar://problem/89253391

[JSC] Substring resolving should check 8bit / 16bit again
https://bugs.webkit.org/show_bug.cgi?id=236775
<rdar://problem/89253391>

Reviewed by Saam Barati.

JSTests:

  • stress/8bit-16bit-atomize-conversion.js: Added. (main.v64): (main):

Source/JavaScriptCore:

Substring JSString is wrapping JSString. Thus it is possible that underlying JSString's 8Bit / 16Bit status
becomes different from substring JSString wrapper's bit. We should not assume they are the same.

  • runtime/JSString.cpp: (JSC::JSRopeString::resolveRopeInternal const): (JSC::JSRopeString::resolveRopeToAtomString const): (JSC::JSRopeString::resolveRopeToExistingAtomString const): (JSC::JSRopeString::resolveRopeInternal8 const): Deleted. (JSC::JSRopeString::resolveRopeInternal16 const): Deleted.
  • runtime/JSString.h:

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

5:49 PM Changeset in webkit [292991] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r292482. rdar://problem/91299672

Check for document page in WorkerMessagingProxy::createCacheStorageConnection
https://bugs.webkit.org/show_bug.cgi?id=238872

Reviewed by Chris Dumez.

Add a check to the document page, similarily to how it is currently done in
WorkerMessagingProxy::createRTCDataChannelRemoteHandlerConnection.

  • workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::createCacheStorageConnection):

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

5:49 PM Changeset in webkit [292990] by Alan Coon
  • 9 edits in branches/safari-613-branch/Source/JavaScriptCore

Cherry-pick r292475. rdar://problem/91078546

CSE should be more careful with values that have WritesPinned, ExitsSideways, or are of different sizes
https://bugs.webkit.org/show_bug.cgi?id=238302

Reviewed by Saam Barati.

1) CSE for WasmAddressValue searches for any nodes marked with WritesPinned between all paths from the redundant
WasmAddressValue to the replacement that dominates it. For a switch construct, we might miss some paths while
performing this DFS of predecessor blocks because the termination condition was a break instead of a continue.

2) The CSE phase looks for a pattern it calls a store after clobber. That is, two stores to the same location where
the first store is not observable. It searches for reads and writes that overlap with the store and its clobber, and
bails if it finds them. When we add in CSE for WasmAddressValue, we expose the fact that WasmBoundsCheck has ExitSideways
but does not claim to read top, even though the code it exits to totally can. This can cause us to eliminate an observable store.

3) The store after clobber phase does not check that the size of the clobber is the same as the size of the store. Again,
this is usually hidden by JavaScript because the sizes are usually the same. Also, when WASM fast memory is enabled, this
bug is hidden because the loads/stores say that they may trap. That is why the unity test case only failed on iOS (although
it does fail on mac with XPC_JSC_useWebAssemblyFastMemory=0).

  • b3/B3EliminateCommonSubexpressions.cpp:
  • b3/testb3.h:
  • b3/testb3_8.cpp: (testWasmAddressDoesNotCSE): (addCopyTests):

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

5:49 PM Changeset in webkit [292989] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r292418. rdar://problem/91312118

Avoid unnecessary traversal when updating list markers
https://bugs.webkit.org/show_bug.cgi?id=238795

Reviewed by Anders Carlsson.

This code could use a full rewrite but there are also some simple optimizations that can be done.

  • rendering/RenderListItem.cpp: (WebCore::nextListItemHelper):

Don't advance into non-rendered subtrees. We won't find any renderers there.

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

5:49 PM Changeset in webkit [292988] by Alan Coon
  • 5 edits in branches/safari-613-branch

Cherry-pick r292401. rdar://problem/83168970

5 Media API tests are flakily timing out on iOS14
https://bugs.webkit.org/show_bug.cgi?id=230321
<rdar://problem/83168970>

Reviewed by Jer Noble.

Source/WebKit:

Un-skipped API test WKWebViewPausePlayingAudioTests.OutOfWindow

  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::applicationWillEnterForegroundForMedia): Log the correct name.
  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::applicationDidEnterBackgroundForMedia): Call PlatformMediaSessionManager. (WebKit::WebPage::applicationWillEnterForegroundForMedia): Ditto.

Tools:

  • TestWebKitAPI/Tests/ios/WKWebViewPausePlayingAudioTests.mm: (TestWebKitAPI::TEST):

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

5:49 PM Changeset in webkit [292987] by Alan Coon
  • 4 edits
    2 adds in branches/safari-613-branch

Cherry-pick r292400. rdar://problem/89382543

[macOS][selectors] :focus-visible matching on button focused via script (after clicking on a different button)
https://bugs.webkit.org/show_bug.cgi?id=236782
<rdar://problem/89382543>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Add specific test for <button> element.

  • web-platform-tests/css/selectors/focus-visible-script-focus-008-b-expected.txt: Added.
  • web-platform-tests/css/selectors/focus-visible-script-focus-008-b.html: Added.

Source/WebCore:

Document::m_latestFocusTrigger was not being updated after clicking on a button (or other form controls)
on platforms different than GTK and WPE.
This is because HTMLFormControlElement::isMouseFocusable() returns false on such platforms.

This issue is causing problems with :focus-visible, as the button is not actually focused via mouse click,
if you move the focus via script afterwards, the new focused element always match :focus-visible.

This patch is a workaround to solve that issue, by updating m_latestFocusTrigger on Document
even if the element is not actually focused.
That way :focus-visible doesn't match if there's a script focus afterwards.

Fix :focus-visible after clicking on a button on Mac

Test: imported/w3c/web-platform-tests/css/selectors/focus-visible-script-focus-008-b.html

  • dom/Document.h: (WebCore::Document::setLatestFocusTrigger):
  • page/EventHandler.cpp: (WebCore::EventHandler::dispatchMouseEvent):

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

5:49 PM Changeset in webkit [292986] by Alan Coon
  • 4 edits in branches/safari-613-branch/Source/WebKit

Cherry-pick r292319. rdar://problem/89916360

Remove display list map entry before remote resource
https://bugs.webkit.org/show_bug.cgi?id=238764

Reviewed by Simon Fraser.

  • GPUProcess/graphics/RemoteDisplayListRecorder.cpp: (WebKit::RemoteDisplayListRecorder::clearImageBufferReference):
  • GPUProcess/graphics/RemoteDisplayListRecorder.h:
  • GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::releaseRemoteResourceWithQualifiedIdentifier):

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

5:49 PM Changeset in webkit [292985] by Alan Coon
  • 3 edits in branches/safari-613-branch/Source/WebCore

Cherry-pick r292310. rdar://problem/91255370

Simplify / Optimize the whitespace cache implementation
https://bugs.webkit.org/show_bug.cgi?id=238736

Reviewed by Sam Weinig.

Instead of using 2 C arrays of size maximumCachedStringLength + 1 Vector with an inline
buffer of size maximumCachedStringLength, we now used a single FixedVector of size
maximumCachedStringLength.

Because the Vector has an inline buffer whose size is the max size of the cache, using
a FixedVector is just more efficient. It also means we don't need to store indexes in
that Vector in a separate C array. Finally, I used a struct named AtomStringWithCode to
store { AtomString, uint64 code } so we don't need separate containers for the AtomString
and the code.

Note that I added VectorTraits for the new AtomStringWithCode struct to make sure it can
get initialized via a simple memset.

This is a 0.25-0.3% progression on Speedometer according to A/B bots.

  • html/parser/HTMLConstructionSite.cpp: (WebCore::WhitespaceCache::lookup):
  • html/parser/HTMLConstructionSite.h: (WebCore::WhitespaceCache::WhitespaceCache):

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

5:49 PM Changeset in webkit [292984] by Alan Coon
  • 2 edits in branches/safari-613-branch/Source/JavaScriptCore

Cherry-pick r292269. rdar://problem/91204413

AI should do int32 optimization in ValueRep
https://bugs.webkit.org/show_bug.cgi?id=238699

Reviewed by Saam Barati.

When constant folding an int52 into a ValueRep AI doesn't
do our normal int32 boxing optimization. I'm not sure if
it matters since I couldn't find a test but it probably
doesn't hurt.

  • dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

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

5:49 PM Changeset in webkit [292983] by Alan Coon
  • 10 edits in branches/safari-613-branch

Cherry-pick r291852. rdar://problem/83235846

Improve rebuilding of ruby subtrees
https://bugs.webkit.org/show_bug.cgi?id=238365

Source/WebCore:

Patch by Frédéric Wang <fwang@igalia.com> on 2022-03-25
Reviewed by Alan Bujtas.

Don't collapse generated Ruby subtree when tearing down children and take into account the
fact that anonymous before/after node can belong to a display: content child.

  • rendering/updating/RenderTreeBuilder.cpp: (WebCore::RenderTreeBuilder::destroyAndCleanUpAnonymousWrappers): Don't collapse.
  • rendering/updating/RenderTreeBuilderRuby.cpp: (WebCore::lastRubyRun): Child can be also be an anonymous after content. (WebCore::RenderTreeBuilder::Ruby::findOrCreateParentForChild): When beforeChild is an anonymous before/after, just fallback to appending to the last ruby run.

LayoutTests:

Patch by Frederic Wang <fred.wang@free.fr> on 2022-03-25
Reviewed by Alan Bujtas.

Expectation for rubyDOM-remove-text2.html is updated now that we don't collapse anonymous
RenderRubyBase nodes.

  • platform/gtk/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
  • platform/ios/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
  • platform/mac/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
  • platform/win/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
  • platform/wincairo/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
  • platform/wpe/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.

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

5:49 PM Changeset in webkit [292982] by Alan Coon
  • 4 edits in branches/safari-613-branch/LayoutTests

Cherry-pick r290622. rdar://problem/90454629

REBASELINE [ iOS15 ] fast/text/khmer-lao-font.html is a constant text failure
<rdar://88841324>

Unreviewed test gardening. Rebaseline for iOS15.

  • platform/ios-wk2/TestExpectations:
  • platform/ios-wk2/fast/text/khmer-lao-font-expected.txt:
  • platform/ios/fast/text/khmer-lao-font-expected.txt:

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

5:49 PM Changeset in webkit [292981] by Alan Coon
  • 2 edits
    1 copy
    1 add in branches/safari-613-branch/LayoutTests

Cherry-pick r289834. rdar://problem/90455347

Rebaslining fonts/monospace.html for Monterey.
https://bugs.webkit.org/show_bug.cgi?id=236619

Unreviewed test gardening.

Patch by Matteo Flores <Matteo Flores> on 2022-02-15

  • platform/mac-catalina/fonts/monospace-expected.txt: Copied from LayoutTests/platform/mac/fonts/monospace-expected.txt.
  • platform/mac/fonts/monospace-expected.txt:

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

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

Block system calls in the Network process
https://bugs.webkit.org/show_bug.cgi?id=238935
<rdar://47323426>

Reviewed by Geoffrey Garen.

Block unused system calls in the Network process on macOS and iOS. This is based on collected telemetry.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.in:
4:42 PM Changeset in webkit [292979] by Alan Coon
  • 9 edits in branches/safari-613-branch/Source

Versioning.

WebKit-7613.2.7

4:06 PM Changeset in webkit [292978] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

The VMTraps signal handler should no return SignalAction::NotHandled on codeBlockSet lock contention.
https://bugs.webkit.org/show_bug.cgi?id=239457

Reviewed by Yusuke Suzuki.

The signal handler is triggered by the mutator thread due to the installed halt
instructions in JIT code (which we already confirmed higher up in the signal handler).
Hence, the mutator cannot be in C++ code, and therefore, cannot be already holding
the codeBlockSet lock. The only time the codeBlockSet lock could be in contention
is if the Sampling Profiler thread is holding it. In that case, we'll simply wait
till the Sampling Profiler is done with it. There are no lock ordering issues w.r.t.
the Sampling Profiler on this code path.

Note that it is not ok to return SignalAction::NotHandled here if we see contention.
Doing so will cause the fault to be handled by the default handler, which will crash.
It is also not productive to return SignalAction::Handled on contention. Doing so
will simply trigger this fault handler over and over again. We might as well wait
for the Sampling Profiler to release the lock, which is what we should do.

This issue was detected by the stress/get-array-length-concurrently-change-mode.js.ftl-no-cjit-validate-sampling-profiler
test, resulting in intermittent crashes.

  • runtime/VMTraps.cpp:
3:48 PM Changeset in webkit [292977] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS][WP] Add telemetry with backtrace for network related system calls
https://bugs.webkit.org/show_bug.cgi?id=239465

Reviewed by Darin Adler.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
3:24 PM Changeset in webkit [292976] by Chris Dumez
  • 7 edits in trunk/Source

Use convertToASCIILowercase() less and more SortedArrayMap / SortedArraySet
https://bugs.webkit.org/show_bug.cgi?id=239453

Reviewed by Darin Adler.

Source/WebCore:

  • Modules/applicationmanifest/ApplicationManifestParser.cpp:

(WebCore::ApplicationManifestParser::parseDisplay):

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::supportsType):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::isUnsupportedMIMEType):

  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:

(WebCore::AVAssetMIMETypeCache::isUnsupportedContainerType):

Source/WebDriver:

  • WebDriverService.cpp:

(WebDriver::WebDriverService::toCommandHTTPMethod):

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

Unreviewed, reverting r292957.
https://bugs.webkit.org/show_bug.cgi?id=239468

Introduced crash

Reverted changeset:

"Block system calls in the Network process"
https://bugs.webkit.org/show_bug.cgi?id=238935
https://commits.webkit.org/r292957

2:54 PM Changeset in webkit [292974] by Elliott Williams
  • 2 edits in trunk/Tools/CISupport/build-webkit-org

[buildbot] Increase the compile timeout to account for delayed output from clang/XCBuild
https://bugs.webkit.org/show_bug.cgi?id=239455

Reviewed by Aakash Jain.

  • Tools/CISupport/build-webkit-org/steps.py:

(CompileWebKit):
(CompileWebKit.init): Change the default timeout to 30 minutes.

  • Tools/CISupport/build-webkit-org/steps_unittest.py: Update expectations.

(TestCompileWebKit.test_success):
(TestCompileWebKit.test_success_gtk):
(TestCompileWebKit.test_success_wpe):
(TestCompileWebKit.test_failure):
(TestCompileJSCOnly.test_success):
(TestCompileJSCOnly.test_failure):

Canonical link: https://commits.webkit.org/249737@main

2:44 PM Changeset in webkit [292973] by Matt Woodrow
  • 8 edits
    8 adds in trunk

Implement support for aligning baselines through subgrids
https://bugs.webkit.org/show_bug.cgi?id=238643

Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-grid/subgrid/baseline-002-expected.html: Added.
  • web-platform-tests/css/css-grid/subgrid/baseline-002.html: Added.
  • web-platform-tests/css/css-grid/subgrid/baseline-003-expected.html: Added.
  • web-platform-tests/css/css-grid/subgrid/baseline-003.html: Added.
  • web-platform-tests/css/css-grid/subgrid/baseline-004-expected.html: Added.
  • web-platform-tests/css/css-grid/subgrid/baseline-004.html: Added.
  • web-platform-tests/css/css-grid/subgrid/baseline-005-expected.html: Added.
  • web-platform-tests/css/css-grid/subgrid/baseline-005.html: Added.

Added new WPT variants of the baseline tests, for the case where the introspected subgrid
has padding that affects the baseline position, and for the case where the subgrid uses an
orthogonal writing mode.

Source/WebCore:

Implement baseline sharing recursion into subgrids

Tests: imported/w3c/web-platform-tests/css/css-grid/subgrid/baseline-002.html

imported/w3c/web-platform-tests/css/css-grid/subgrid/baseline-003.html
imported/w3c/web-platform-tests/css/css-grid/subgrid/baseline-004.html
imported/w3c/web-platform-tests/css/css-grid/subgrid/baseline-005.html

  • rendering/GridBaselineAlignment.cpp:

(WebCore::GridBaselineAlignment::ascentForChild const):
(WebCore::GridBaselineAlignment::descentForChild const):
(WebCore::GridBaselineAlignment::updateBaselineAlignmentContext):
(WebCore::BaselineGroup::BaselineGroup):
(WebCore::BaselineGroup::update):
(WebCore::BaselineContext::BaselineContext):
(WebCore::BaselineContext::updateSharedGroup):

  • rendering/GridBaselineAlignment.h:

(WebCore::BaselineGroup::maxAscent const):
(WebCore::BaselineGroup::maxDescent const): Deleted.

  • rendering/GridLayoutFunctions.h:
  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::GridTrackSizingAlgorithm::canParticipateInBaselineAlignment const):
(WebCore::GridTrackSizingAlgorithm::updateBaselineAlignmentContext):
(WebCore::GridTrackSizingAlgorithm::baselineOffsetForChild const):
(WebCore::GridTrackSizingAlgorithm::cacheBaselineAlignedItem):

  • rendering/GridTrackSizingAlgorithm.h:
  • rendering/RenderGrid.cpp:

(WebCore::cacheBaselineAlignedChildren):
(WebCore::RenderGrid::computeIntrinsicLogicalWidths const):
(WebCore::RenderGrid::performGridItemsPreLayout const):
(WebCore::RenderGrid::alignSelfForChild const):
(WebCore::RenderGrid::justifySelfForChild const):
(WebCore::RenderGrid::columnAxisBaselineOffsetForChild const):
(WebCore::RenderGrid::rowAxisBaselineOffsetForChild const):

Moves the code for collecting baseline aligned children into a shared helper function, and adds
support for recursing into subgrid children (restricted to the axes that subgrid was applied).

Fixes align/justifySelfForChild to check if the child is a subgrid and overrides the result to 'stretch', so
that we're correctly stretching subgrids, not the children of subgrids (covered by new tests).

2:37 PM Changeset in webkit [292972] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

Remove the deprecated CaptivePortal enablement key
https://bugs.webkit.org/show_bug.cgi?id=239456

Reviewed by Wenson Hsieh.

This is a minor code cleanup to remove an old default key
we used in the early experiments with this behavior.

  • UIProcess/API/Cocoa/_WKSystemPreferences.mm:

(+[_WKSystemPreferences isCaptivePortalModeEnabled]):

  • UIProcess/API/Cocoa/_WKSystemPreferencesInternal.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::notifyPreferencesChanged):

2:35 PM Changeset in webkit [292971] by pvollan@apple.com
  • 7 edits in trunk/Source/WebKit

Fix incorrect syscall name in sandboxes
https://bugs.webkit.org/show_bug.cgi?id=239454

Reviewed by Darin Adler.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
2:20 PM Changeset in webkit [292970] by Simon Fraser
  • 11 edits in trunk

Allow C API clients to get the WKProcessTerminationReason in processDidCrash functions, and use in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=239400

Reviewed by Sam Weinig.

Source/WebKit:

Introduce WKContextClientV4 with "did crash" functions that take a ProcessID and WKProcessTerminationReason.
WebContextClient will call the new functions if registered, otherwise the old ones.

Have WebProcessPool::networkProcessDidTerminate() and WebProcessPool::gpuProcessExited() call
the client for more types of reasons; ExceededMemoryLimit and ExceededCPULimit only apply
to the web process, so the behavior change here is to call m_client.networkProcessDidCrash()
for ProcessTerminationReason::Unresponsive.

  • UIProcess/API/C/WKContext.h:
  • UIProcess/WebContextClient.cpp:

(WebKit::WebContextClient::networkProcessDidCrash):
(WebKit::WebContextClient::serviceWorkerProcessDidCrash):
(WebKit::WebContextClient::gpuProcessDidCrash):

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

(WebKit::shouldReportAuxiliaryProcessCrash):
(WebKit::WebProcessPool::networkProcessDidTerminate):
(WebKit::WebProcessPool::serviceWorkerProcessCrashed):
(WebKit::WebProcessPool::gpuProcessExited):

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

(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):

Tools:

Standardize the "didCrash" callbacks to use the WKContextClientV4 "with details" versions,
and use them to print out crash reasons.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::generatePageConfiguration):
(WTR::TestController::networkProcessDidCrashWithDetails):
(WTR::TestController::serviceWorkerProcessDidCrashWithDetails):
(WTR::TestController::gpuProcessDidCrashWithDetails):
(WTR::terminationReasonToString):
(WTR::TestController::networkProcessDidCrash):
(WTR::TestController::serviceWorkerProcessDidCrash):
(WTR::TestController::gpuProcessDidCrash):
(WTR::TestController::webProcessDidTerminate):

  • WebKitTestRunner/TestController.h:
1:55 PM Changeset in webkit [292969] by Alan Coon
  • 1 copy in tags/WebKit-7614.1.10.2

Tag WebKit-7614.1.10.2.

1:44 PM Changeset in webkit [292968] by Russell Epstein
  • 9 edits in branches/safari-614.1.10-branch/Source

Versioning.

WebKit-7614.1.10.2

1:29 PM Changeset in webkit [292967] by Tyler Wilcock
  • 4 edits in trunk/Source/WebCore

Node changes created by AXIsolatedTree::updateNode are overwritten when performed during AXIsolatedTree::collectNodeChangesForSubtree
https://bugs.webkit.org/show_bug.cgi?id=239398

Reviewed by Andres Gonzalez.

We currently do the wrong thing in this scenario:

  1. A dynamic page change causes an element to be included on the page, so we create a node change for it and its subtree by calling collectNodeChangesForSubtree. This causes a call to children() on the live object.
  1. In the process of (or after) updating the children of the live object, we perform some operation that triggers AXIsolatedTree::updateNode on said object. AccessibilityRenderObject::updateRoleAfterChildrenCreation would be an example of this if it were properly coded to update the isolated tree if the object's role changes (I'll address that in a separate patch). updateNode results in a node change with the correct properties being added to m_pendingAppends.
  1. collectNodeChangesForSubtree (started in step 1) finishes, and queues a node change for the same object, but with the wrong properties (because it was created before step 2). Because it comes after the node change added in step 2 to m_pendingAppends, it wins, and we add an object with the wrong properties to the tree.

This patch fixes this with a new AXIsolatedTree::m_unresolvedPendingAppends member
variable. This is a HashMap with an AXID key, representing the object to create a node
change for. Now, both collectNodeChangesForSubtree and updateNode will add an entry
to this HashMap, allowing it to be resolved it (i.e. by creating the node change) at a later time.

This is both more correct (as it prevents any ordering bugs entirely), and more
efficient, because we now never create multiple node changes for the same object.

This patch also necessitated other code cleanup items:

  • m_unresolvedPendingAppends allows us to remove the idsBeingChanged parameter we passed to several functions since this member variable does the same thing.
  • m_pendingNodeRemovals has been deleted. The only thing adding to this was AXIsolatedTree::updateNode, and it did so unnecessarily, since we already handle the case where we are replacing an existing object when proessing m_pendingAppends.

This patch also fixes an issue found by Andres Gonzalez in https://bugs.webkit.org/show_bug.cgi?id=239402.
AXIsolatedTree::updateNode should not immediately attach the wrapper to the new object on the main thread
since it could be in use on the AX thread. To make this more clear, the attachWrapper parameter has been
changed from a bool to an enum called AttachWrapper with values OnMainThread and OnAXThread.

Fixes six tests in isolated tree mode:

  • accessibility/aria-labelledby-overrides-label.html
  • accessibility/aria-role-on-label.html
  • accessibility/mac/label-element-all-text-string-value.html
  • accessibility/mac/label-element-with-hidden-control.html
  • accessibility/mac/label-element-all-text-string-value.html
  • accessibility/mac/slider-allows-title-ui-element.html
  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::treeData):

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::create):
(WebCore::AXIsolatedTree::generateSubtree):
(WebCore::AXIsolatedTree::nodeChangeForObject):
(WebCore::AXIsolatedTree::queueRemovals):
Added. Allows you to queue objects for removal from contexts where you
don't already hold a lock.
(WebCore::AXIsolatedTree::queueRemovalsLocked):
Added. Allows you to queue objects for removal from contexts where you
already hold a lock.
(WebCore::AXIsolatedTree::queueRemovalsAndUnresolvedChanges):
Added. Replaces AXIsolatedTree::queueChangesAndRemovals.
(WebCore::AXIsolatedTree::collectNodeChangesForSubtree):
(WebCore::AXIsolatedTree::updateNode):
(WebCore::AXIsolatedTree::updateChildren):
(WebCore::AXIsolatedTree::removeNode):
(WebCore::AXIsolatedTree::removeSubtreeFromNodeMap):
(WebCore::AXIsolatedTree::applyPendingChanges):
Change local variable name from object to existingObject as this makes
the code much more clear.

  • accessibility/isolatedtree/AXIsolatedTree.h:

(WebCore::AXIsolatedTree::queueChangesAndRemovals): Deleted.

1:25 PM Changeset in webkit [292966] by Jonathan Bedard
  • 2 edits in trunk/Tools

[ews.webkit.org] Reduce status updates
https://bugs.webkit.org/show_bug.cgi?id=239414
<rdar://problem/91839873>

Reviewed by Aakash Jain.

We're starting to bump against our API limits, many very short steps report
their status, only to be imiediately overwritten. Skip step started updates.

  • Tools/CISupport/ews-build/events.py:

(Events.stepStarted):

Canonical link: https://commits.webkit.org/249731@main

12:49 PM Changeset in webkit [292965] by Ryan Haddad
  • 1 edit
    8 adds in trunk/LayoutTests

REGRESSION (249698@main): 4 payment request layout tests failing on Big Sur
https://bugs.webkit.org/show_bug.cgi?id=239461

Unreviewed test gardening.

  • platform/mac-bigsur/http/tests/paymentrequest/payment-request-change-shipping-option.https-expected.txt: Added.
  • platform/mac-bigsur/http/tests/paymentrequest/updateWith-shippingOptions.https-expected.txt: Added.
  • platform/mac-bigsur/imported/w3c/web-platform-tests/payment-request/payment-request-constructor.https.sub-expected.txt: Added.
  • platform/mac-bigsur/imported/w3c/web-platform-tests/payment-request/payment-request-shippingOption-attribute.https-expected.txt: Added.
12:36 PM Changeset in webkit [292964] by ntim@apple.com
  • 2 edits in trunk/LayoutTests

[iOS] Skip CSS resize tests added by r292559
https://bugs.webkit.org/show_bug.cgi?id=239459

Unreviewed test gardening.

iOS doesn't support CSS resize.

  • platform/ios/TestExpectations:
11:56 AM Changeset in webkit [292963] by Chris Dumez
  • 13 edits in trunk/Source/WebCore

Optimize nodeHasRole()
https://bugs.webkit.org/show_bug.cgi?id=239430
<rdar://problem/91857547>

Reviewed by Darin Adler.

Optimize nodeHasRole() by calling spaceSplitStringContainsValue() instead of constructing a
SpaceSplitString (which is expensive simply for looking for a single value). Also take a
StringView in parameter to avoid constructing a String unnecessarily (most call sites pass
an ASCIILiteral).

  • accessibility/AXObjectCache.cpp:

(WebCore::nodeHasRole):

  • accessibility/AXObjectCache.h:

(WebCore::nodeHasRole):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::elementsFromAttribute const):
(WebCore::AccessibilityObject::ariaElementsReferencedByAttribute const):

  • dom/ClassCollection.h:

(WebCore::ClassCollection::ClassCollection):

  • dom/Element.cpp:

(WebCore::Element::classAttributeChanged):
(WebCore::Element::partAttributeChanged):

  • dom/SpaceSplitString.cpp:

(WebCore::SpaceSplitString::set):
(WebCore::SpaceSplitString::spaceSplitStringContainsValue):

  • dom/SpaceSplitString.h:

(WebCore::SpaceSplitString::SpaceSplitString):

  • html/Autofill.cpp:

(WebCore::AutofillData::createFromHTMLFormControlElement):

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parseAttribute):
(WebCore::HTMLAnchorElement::sendPings):

  • inspector/InspectorAuditAccessibilityObject.cpp:

(WebCore::InspectorAuditAccessibilityObject::getComputedProperties):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):

  • page/EventHandler.cpp:

(WebCore::findDropZone):

11:46 AM Changeset in webkit [292962] by commit-queue@webkit.org
  • 3 edits in trunk

[PGO] Fix build on intel machines
https://bugs.webkit.org/show_bug.cgi?id=239396

Reviewed by Jonathan Bedard.

We should use the correct comparison operator for Perl strings when checking
if we are building with PGO profile generation enabled.

Canonical link: https://commits.webkit.org/249727@main

11:30 AM Changeset in webkit [292961] by Said Abou-Hallawa
  • 10 edits in trunk/Source/WebKit

REGRESSION(r288847): GPU Process crash under GPUProcess::canExitUnderMemoryPressure()
https://bugs.webkit.org/show_bug.cgi?id=238558
rdar://91052033

Reviewed by Kimmo Kinnunen.

Use the rendering resources request count to keep the GPU process alive.

RemoteRenderingBackend updates it when active image buffers change.
RemoteGraphicsContextGL updates it on creation and destruction.
RemoteMediaPlayerProxy updates it on creation and destruction.

Remove RemoterRenderingBackend::updateRenderingResourceRequest(), the
count is now counted by RemoteImageBuffer creation, destruction.

Remove RemoterRenderingBackend::allowsExitUnderMemoryPressure(), it was
crashing due to race between the function and the work queue cleanup task.

Remove RemoteMediaPlayerManagerProxy::allowsExitUnderMemoryPressure(),
the count is already counted by RemoteMediaPlayerProxy creation, destruction.

Based on the initial patch by Kimmo Kinnunen.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::allowsExitUnderMemoryPressure const):

  • GPUProcess/graphics/QualifiedResourceHeap.h:

(WebKit::QualifiedResourceHeap::hasImageBuffer const): Deleted.
(WebKit::QualifiedResourceHeap::hasNativeImage const): Deleted.
(WebKit::QualifiedResourceHeap::hasFont const): Deleted.

  • GPUProcess/graphics/RemoteImageBuffer.h:

(WebKit::RemoteImageBuffer::m_renderingResourcesRequest):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::createImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::releaseRemoteResourceWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::updateRenderingResourceRequest): Deleted.
(WebKit::RemoteRenderingBackend::allowsExitUnderMemoryPressure const): Deleted.

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

(WebKit::RemoteResourceCache::resourceHeap const): Deleted.
(WebKit::RemoteResourceCache::hasActiveDrawables const): Deleted.

  • GPUProcess/graphics/ScopedRenderingResourcesRequest.h:

(WebKit::hasOutstandingRenderingResourceUsage):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:

(WebKit::RemoteMediaPlayerManagerProxy::deleteMediaPlayer):
(WebKit::RemoteMediaPlayerManagerProxy::allowsExitUnderMemoryPressure const): Deleted.

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
10:56 AM Changeset in webkit [292960] by Chris Dumez
  • 44 edits in trunk/Source/WebCore

Use AtomString as early as possible when string will eventually get atomized
https://bugs.webkit.org/show_bug.cgi?id=239427

Reviewed by Darin Adler.

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::asText const):
(WebCore::StyleProperties::asTextAtom const):
(WebCore::StyleProperties::asTextInternal const):

  • css/StyleProperties.h:
  • dom/DOMStringMap.idl:
  • dom/DatasetDOMStringMap.cpp:

(WebCore::DatasetDOMStringMap::setNamedItem):

  • dom/DatasetDOMStringMap.h:
  • dom/Document.cpp:

(WebCore::Document::createAttribute):
(WebCore::Document::createAttributeNS):

  • dom/ElementContentEditable.idl:
  • dom/StyledElement.cpp:

(WebCore::StyledElement::synchronizeStyleAttributeInternalImpl):
(WebCore::StyledElement::invalidateStyleAttribute):

  • editing/ApplyStyleCommand.cpp:

(WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
(WebCore::ApplyStyleCommand::removeEmbeddingUpToEnclosingBlock):
(WebCore::ApplyStyleCommand::applyInlineStyleToNodeRange):
(WebCore::ApplyStyleCommand::removeCSSStyle):
(WebCore::ApplyStyleCommand::applyInlineStyleToPushDown):
(WebCore::ApplyStyleCommand::applyInlineStyleChange):

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplacementFragment::ReplacementFragment):
(WebCore::ReplaceSelectionCommand::inverseTransformColor):
(WebCore::ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline):
(WebCore::ReplaceSelectionCommand::handleStyleSpans):

  • html/DOMTokenList.cpp:

(WebCore::tokenContainsHTMLSpace):
(WebCore::DOMTokenList::validateToken):
(WebCore::DOMTokenList::validateTokens):
(WebCore::DOMTokenList::addInternal):
(WebCore::DOMTokenList::add):
(WebCore::DOMTokenList::removeInternal):
(WebCore::DOMTokenList::remove):
(WebCore::DOMTokenList::setValue):

  • html/DOMTokenList.h:
  • html/DOMTokenList.idl:
  • html/FileInputType.cpp:

(WebCore::UploadButtonElement::createInternal):

  • html/HTMLButtonElement.cpp:

(WebCore::HTMLButtonElement::formControlType const):

  • html/HTMLButtonElement.idl:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::setEnterKeyHint):

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

(WebCore::HTMLFormControlElement::setFormEnctype):
(WebCore::HTMLFormControlElement::setFormMethod):
(WebCore::HTMLFormControlElement::setAutocomplete):

  • html/HTMLFormControlElement.h:
  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::setAction):
(WebCore::HTMLFormElement::setEnctype):
(WebCore::HTMLFormElement::setMethod):

  • html/HTMLFormElement.h:
  • html/HTMLFormElement.idl:
  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setSrc):
(WebCore::HTMLImageElement::setDecoding):

  • html/HTMLImageElement.h:
  • html/HTMLImageElement.idl:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::defaultValue const):
(WebCore::HTMLInputElement::setDefaultValue):

  • html/HTMLInputElement.h:
  • html/HTMLInputElement.idl:
  • html/HTMLOptionElement.cpp:

(WebCore::HTMLOptionElement::createForLegacyFactoryFunction):
(WebCore::HTMLOptionElement::setValue):
(WebCore::HTMLOptionElement::setLabel):

  • html/HTMLOptionElement.h:
  • html/HTMLOptionElement.idl:
  • html/InputTypeNames.cpp:

(WebCore::InputTypeNames::button):

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::createAutoFillButton):

  • html/shadow/TextControlInnerElements.cpp:

(WebCore::SearchFieldCancelButtonElement::create):

  • page/Frame.h:
  • page/ios/FrameIOS.mm:

(WebCore::Frame::initWithSimpleHTMLDocument):

  • svg/SVGLengthValue.cpp:

(WebCore::SVGLengthValue::valueAsAtomString const):

  • svg/SVGLengthValue.h:
  • svg/SVGMarkerElement.cpp:

(WebCore::SVGMarkerElement::orient const):
(WebCore::SVGMarkerElement::setOrient):

  • svg/SVGMarkerElement.h:
  • svg/SVGMarkerElement.idl:
  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::transferSizeAttributesToTargetClone const):

10:49 AM Changeset in webkit [292959] by Elliott Williams
  • 33 edits in trunk

[XCBuild] Use XCBuild for all command-line and project builds
https://bugs.webkit.org/show_bug.cgi?id=238916

Reviewed by Alexey Proskuryakov.

Source/bmalloc:

  • bmalloc.xcodeproj/project.pbxproj:

Source/JavaScriptCore:

Switch to the new build system, without changing anything about our
build order. Make will still build projects one-at-a-time, but this
drops our dependency on the legacy build system.

Source/ThirdParty/ANGLE:

  • ANGLE.xcodeproj/project.pbxproj:

Source/ThirdParty/libwebrtc:

  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:

Source/WebGPU:

  • WebGPU.xcodeproj/project.pbxproj:

Source/WebInspectorUI:

  • WebInspectorUI.xcodeproj/project.pbxproj:

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj:

Source/WebKitLegacy:

  • WebKitLegacy.xcodeproj/project.pbxproj:

Source/WTF:

  • WTF.xcodeproj/project.pbxproj:

Tools:

There are a few projects in Tools/ which are checked in but not built
as part of the normal Make or build-webkit workflow. I've updated
them, and noted below which ones were already failing to build.

  • ContentExtensionTester/ContentExtensionTester.xcodeproj/project.pbxproj:
  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • EditingHistory/EditingHistory.xcodeproj/project.pbxproj: Fails to

build locally, updated anyway.

  • FontWithFeatures/FontWithFeatures.xcodeproj/project.pbxproj: Fails

to build locally, updated anyway.

  • ImageDiff/ImageDiff.xcodeproj/project.pbxproj:
  • MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
  • MiniBrowserSwiftUI/MiniBrowserSwiftUI.xcodeproj/project.pbxproj:
  • MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • WebEditingTester/WebEditingTester.xcodeproj/project.pbxproj: Fails

to build locally, updated anyway.

  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
10:02 AM Changeset in webkit [292958] by Jonathan Bedard
  • 2 edits in trunk/Tools

[Merge-Queue] Handle label addition race condition
https://bugs.webkit.org/show_bug.cgi?id=238973
<rdar://problem/91452352>

Reviewed by Aakash Jain.

  • Tools/CISupport/ews-build/events.py:

(GitHubEventHandlerNoEdits.handle_pull_request): Wait for 10 seconds before processing
label additions.

Canonical link: https://commits.webkit.org/249723@main

9:46 AM Changeset in webkit [292957] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Block system calls in the Network process
https://bugs.webkit.org/show_bug.cgi?id=238935
<rdar://47323426>

Reviewed by Geoffrey Garen.

Block unused system calls in the Network process on macOS and iOS. This is based on collected telemetry.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb.in:
9:30 AM Changeset in webkit [292956] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the internal watchOS engineering build

In the case where HAVE(UIKIT_WITH_MOUSE_SUPPORT) is off, internal watchOS engineering builds fail due to
shouldEnableAlternativeMouseGestureRecognizers being unused. Fix this, and do some minor cleanup in this code
while we're here:

  • Remove extra space before _alternateMouseGestureRecognizer.get().
  • Move * to the correct side for Objective-C instances.
  • Fix a typo: "alternativeMouseRecgnizer" => "alternativeMouseRecognizer".
  • UIProcess/ios/WKContentViewInteraction.mm:

(shouldEnableAlternativeMouseGestureRecognizers):
(-[WKContentView _configureMouseGestureRecognizer]):

9:09 AM Changeset in webkit [292955] by Wenson Hsieh
  • 5 edits in trunk

Make the main video heuristic robust when video elements are added after entering fullscreen
https://bugs.webkit.org/show_bug.cgi?id=239438
rdar://91867187

Reviewed by Eric Carlson.

Source/WebKit:

Adjust the heuristic for identifying the most prominent video element in an element fullscreen container, such
that it can detect video elements that are inserted into the document after we've already entered fullscreen
mode. See below for more details.

Exercised by a new internal API test.

  • WebProcess/FullScreen/WebFullScreenManager.cpp:

(WebKit::WebFullScreenManager::setElement):

Listen for several events (play, pause, loadedmetadata) that are bubbled up to the fullscreen container element,
from any media element underneath the fullscreen container; in response to these events, we re-run the main
fullscreen video element heuristic to update m_mainVideoElement (and cancel and reschedule the video
extraction timer, if this main video element changed).

(WebKit::WebFullScreenManager::enterFullScreenForElement):
(WebKit::WebFullScreenManager::didEnterFullScreen):

Pull existing logic for walking through the element fullscreen DOM in search of video elements out into a new
helper method, updateMainVideoElement, that's invoked both when we finish entering fullscreen mode, and when
observing any of the new events that bubble up to the fullscreen container.

(WebKit::WebFullScreenManager::updateMainVideoElement):
(WebKit::WebFullScreenManager::handleEvent):
(WebKit::WebFullScreenManager::setMainVideoElement):

  • WebProcess/FullScreen/WebFullScreenManager.h:

Tools:

Add a helper method to a test page used in API tests; see the radar for more information.

  • TestWebKitAPI/Tests/WebKitCocoa/element-fullscreen.html:
7:33 AM Changeset in webkit [292954] by Alan Bujtas
  • 5 edits
    24 moves
    1 add in trunk/Source/WebCore

[IFC][Integration] Move inline integration under layout/integration/inline
https://bugs.webkit.org/show_bug.cgi?id=239441

Reviewed by Antti Koivisto.

This is in preparation for implementing additional integrated FCs.

  • CMakeLists.txt:
  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/integration/inline/InlineIteratorBox.cpp: Renamed from Source/WebCore/layout/integration/InlineIteratorBox.cpp.

(WebCore::InlineIterator::BoxIterator::BoxIterator):
(WebCore::InlineIterator::BoxIterator::operator== const):
(WebCore::InlineIterator::BoxIterator::atEnd const):
(WebCore::InlineIterator::Box::nextOnLine const):
(WebCore::InlineIterator::Box::previousOnLine const):
(WebCore::InlineIterator::Box::nextOnLineIgnoringLineBreak const):
(WebCore::InlineIterator::Box::previousOnLineIgnoringLineBreak const):
(WebCore::InlineIterator::Box::lineBox const):
(WebCore::InlineIterator::Box::style const):
(WebCore::InlineIterator::Box::selectionState const):
(WebCore::InlineIterator::LeafBoxIterator::LeafBoxIterator):
(WebCore::InlineIterator::LeafBoxIterator::traverseNextOnLine):
(WebCore::InlineIterator::LeafBoxIterator::traversePreviousOnLine):
(WebCore::InlineIterator::LeafBoxIterator::traverseNextOnLineIgnoringLineBreak):
(WebCore::InlineIterator::LeafBoxIterator::traversePreviousOnLineIgnoringLineBreak):
(WebCore::InlineIterator::boxFor):
(WebCore::InlineIterator::Box::modernPath const):
(WebCore::InlineIterator::Box::legacyPath const):

  • layout/integration/inline/InlineIteratorBox.h: Renamed from Source/WebCore/layout/integration/InlineIteratorBox.h.

(WebCore::InlineIterator::Box::logicalTop const):
(WebCore::InlineIterator::Box::logicalBottom const):
(WebCore::InlineIterator::Box::logicalLeft const):
(WebCore::InlineIterator::Box::logicalRight const):
(WebCore::InlineIterator::Box::logicalWidth const):
(WebCore::InlineIterator::Box::logicalHeight const):
(WebCore::InlineIterator::Box::leftmostCaretOffset const):
(WebCore::InlineIterator::Box::rightmostCaretOffset const):
(WebCore::InlineIterator::Box::direction const):
(WebCore::InlineIterator::Box::isLeftToRightDirection const):
(WebCore::InlineIterator::BoxIterator::operator bool const):
(WebCore::InlineIterator::BoxIterator::operator!= const):
(WebCore::InlineIterator::BoxIterator::operator== const):
(WebCore::InlineIterator::BoxIterator::operator* const):
(WebCore::InlineIterator::BoxIterator::operator-> const):
(WebCore::InlineIterator::BoxIterator::BoxIterator):
(WebCore::InlineIterator::Box::Box):
(WebCore::InlineIterator::Box::isText const):
(WebCore::InlineIterator::Box::isInlineBox const):
(WebCore::InlineIterator::Box::isRootInlineBox const):
(WebCore::InlineIterator::Box::visualRect const):
(WebCore::InlineIterator::Box::visualRectIgnoringBlockDirection const):
(WebCore::InlineIterator::Box::isHorizontal const):
(WebCore::InlineIterator::Box::isLineBreak const):
(WebCore::InlineIterator::Box::minimumCaretOffset const):
(WebCore::InlineIterator::Box::maximumCaretOffset const):
(WebCore::InlineIterator::Box::bidiLevel const):
(WebCore::InlineIterator::Box::renderer const):
(WebCore::InlineIterator::Box::legacyInlineBox const):
(WebCore::InlineIterator::Box::inlineBox const):

  • layout/integration/inline/InlineIteratorBoxLegacyPath.h: Renamed from Source/WebCore/layout/integration/InlineIteratorBoxLegacyPath.h.

(WebCore::InlineIterator::BoxLegacyPath::BoxLegacyPath):
(WebCore::InlineIterator::BoxLegacyPath::isText const):
(WebCore::InlineIterator::BoxLegacyPath::isInlineBox const):
(WebCore::InlineIterator::BoxLegacyPath::isRootInlineBox const):
(WebCore::InlineIterator::BoxLegacyPath::visualRectIgnoringBlockDirection const):
(WebCore::InlineIterator::BoxLegacyPath::isHorizontal const):
(WebCore::InlineIterator::BoxLegacyPath::isLineBreak const):
(WebCore::InlineIterator::BoxLegacyPath::minimumCaretOffset const):
(WebCore::InlineIterator::BoxLegacyPath::maximumCaretOffset const):
(WebCore::InlineIterator::BoxLegacyPath::bidiLevel const):
(WebCore::InlineIterator::BoxLegacyPath::hasHyphen const):
(WebCore::InlineIterator::BoxLegacyPath::text const):
(WebCore::InlineIterator::BoxLegacyPath::start const):
(WebCore::InlineIterator::BoxLegacyPath::end const):
(WebCore::InlineIterator::BoxLegacyPath::length const):
(WebCore::InlineIterator::BoxLegacyPath::selectableRange const):
(WebCore::InlineIterator::BoxLegacyPath::createTextRun const):
(WebCore::InlineIterator::BoxLegacyPath::renderer const):
(WebCore::InlineIterator::BoxLegacyPath::traverseNextTextBox):
(WebCore::InlineIterator::BoxLegacyPath::traverseNextOnLine):
(WebCore::InlineIterator::BoxLegacyPath::traversePreviousOnLine):
(WebCore::InlineIterator::BoxLegacyPath::traverseNextInlineBox):
(WebCore::InlineIterator::BoxLegacyPath::traversePreviousInlineBox):
(WebCore::InlineIterator::BoxLegacyPath::firstLeafBoxForInlineBox const):
(WebCore::InlineIterator::BoxLegacyPath::lastLeafBoxForInlineBox const):
(WebCore::InlineIterator::BoxLegacyPath::operator== const):
(WebCore::InlineIterator::BoxLegacyPath::atEnd const):
(WebCore::InlineIterator::BoxLegacyPath::legacyInlineBox const):
(WebCore::InlineIterator::BoxLegacyPath::rootInlineBox const):
(WebCore::InlineIterator::BoxLegacyPath::inlineTextBox const):
(WebCore::InlineIterator::BoxLegacyPath::inlineFlowBox const):

  • layout/integration/inline/InlineIteratorBoxModernPath.h: Renamed from Source/WebCore/layout/integration/InlineIteratorBoxModernPath.h.

(WebCore::InlineIterator::BoxModernPath::BoxModernPath):
(WebCore::InlineIterator::BoxModernPath::isText const):
(WebCore::InlineIterator::BoxModernPath::isInlineBox const):
(WebCore::InlineIterator::BoxModernPath::isRootInlineBox const):
(WebCore::InlineIterator::BoxModernPath::visualRectIgnoringBlockDirection const):
(WebCore::InlineIterator::BoxModernPath::isHorizontal const):
(WebCore::InlineIterator::BoxModernPath::isLineBreak const):
(WebCore::InlineIterator::BoxModernPath::minimumCaretOffset const):
(WebCore::InlineIterator::BoxModernPath::maximumCaretOffset const):
(WebCore::InlineIterator::BoxModernPath::bidiLevel const):
(WebCore::InlineIterator::BoxModernPath::hasHyphen const):
(WebCore::InlineIterator::BoxModernPath::text const):
(WebCore::InlineIterator::BoxModernPath::start const):
(WebCore::InlineIterator::BoxModernPath::end const):
(WebCore::InlineIterator::BoxModernPath::length const):
(WebCore::InlineIterator::BoxModernPath::selectableRange const):
(WebCore::InlineIterator::BoxModernPath::createTextRun const):
(WebCore::InlineIterator::BoxModernPath::renderer const):
(WebCore::InlineIterator::BoxModernPath::traverseNextTextBox):
(WebCore::InlineIterator::BoxModernPath::traverseNextOnLine):
(WebCore::InlineIterator::BoxModernPath::traversePreviousOnLine):
(WebCore::InlineIterator::BoxModernPath::traverseNextInlineBox):
(WebCore::InlineIterator::BoxModernPath::traversePreviousInlineBox):
(WebCore::InlineIterator::BoxModernPath::firstLeafBoxForInlineBox const):
(WebCore::InlineIterator::BoxModernPath::lastLeafBoxForInlineBox const):
(WebCore::InlineIterator::BoxModernPath::operator== const):
(WebCore::InlineIterator::BoxModernPath::atEnd const):
(WebCore::InlineIterator::BoxModernPath::box const):
(WebCore::InlineIterator::BoxModernPath::inlineContent const):
(WebCore::InlineIterator::BoxModernPath::isWithinInlineBox):
(WebCore::InlineIterator::BoxModernPath::traverseNextBox):
(WebCore::InlineIterator::BoxModernPath::traversePreviousBox):
(WebCore::InlineIterator::BoxModernPath::traverseNextLeaf):
(WebCore::InlineIterator::BoxModernPath::traversePreviousLeaf):
(WebCore::InlineIterator::BoxModernPath::traverseNextWithSameLayoutBox):
(WebCore::InlineIterator::BoxModernPath::traversePreviousWithSameLayoutBox):
(WebCore::InlineIterator::BoxModernPath::setAtEnd):
(WebCore::InlineIterator::BoxModernPath::boxes const):
(WebCore::InlineIterator::BoxModernPath::line const):
(WebCore::InlineIterator::BoxModernPath::renderText const):
(WebCore::InlineIterator::BoxModernPath::direction const):

  • layout/integration/inline/InlineIteratorInlineBox.cpp: Renamed from Source/WebCore/layout/integration/InlineIteratorInlineBox.cpp.

(WebCore::InlineIterator::InlineBox::InlineBox):
(WebCore::InlineIterator::InlineBox::hasClosedLeftAndRightEdge const):
(WebCore::InlineIterator::InlineBox::nextInlineBox const):
(WebCore::InlineIterator::InlineBox::previousInlineBox const):
(WebCore::InlineIterator::InlineBox::firstLeafBox const):
(WebCore::InlineIterator::InlineBox::lastLeafBox const):
(WebCore::InlineIterator::InlineBox::endLeafBox const):
(WebCore::InlineIterator::InlineBoxIterator::InlineBoxIterator):
(WebCore::InlineIterator::InlineBoxIterator::traverseNextInlineBox):
(WebCore::InlineIterator::InlineBoxIterator::traversePreviousInlineBox):
(WebCore::InlineIterator::firstInlineBoxFor):
(WebCore::InlineIterator::firstRootInlineBoxFor):
(WebCore::InlineIterator::inlineBoxFor):

  • layout/integration/inline/InlineIteratorInlineBox.h: Renamed from Source/WebCore/layout/integration/InlineIteratorInlineBox.h.

(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):

  • layout/integration/inline/InlineIteratorLineBox.cpp: Renamed from Source/WebCore/layout/integration/InlineIteratorLineBox.cpp.

(WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
(WebCore::InlineIterator::LineBoxIterator::atEnd const):
(WebCore::InlineIterator::LineBoxIterator::traverseNext):
(WebCore::InlineIterator::LineBoxIterator::traversePrevious):
(WebCore::InlineIterator::LineBoxIterator::operator== const):
(WebCore::InlineIterator::firstLineBoxFor):
(WebCore::InlineIterator::lastLineBoxFor):
(WebCore::InlineIterator::LineBox::next const):
(WebCore::InlineIterator::LineBox::previous const):
(WebCore::InlineIterator::LineBox::firstLeafBox const):
(WebCore::InlineIterator::LineBox::lastLeafBox const):
(WebCore::InlineIterator::closestBoxForHorizontalPosition):

  • layout/integration/inline/InlineIteratorLineBox.h: Renamed from Source/WebCore/layout/integration/InlineIteratorLineBox.h.

(WebCore::InlineIterator::LineBox::height const):
(WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
(WebCore::InlineIterator::LineBoxIterator::operator++):
(WebCore::InlineIterator::LineBoxIterator::operator bool const):
(WebCore::InlineIterator::LineBoxIterator::operator!= const):
(WebCore::InlineIterator::LineBoxIterator::operator== const):
(WebCore::InlineIterator::LineBoxIterator::operator* const):
(WebCore::InlineIterator::LineBoxIterator::operator-> const):
(WebCore::InlineIterator::previousLineBoxContentBottomOrBorderAndPadding):
(WebCore::InlineIterator::contentStartInBlockDirection):
(WebCore::InlineIterator::LineBox::LineBox):
(WebCore::InlineIterator::LineBox::contentLogicalTop const):
(WebCore::InlineIterator::LineBox::contentLogicalBottom const):
(WebCore::InlineIterator::LineBox::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBox::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBox::top const):
(WebCore::InlineIterator::LineBox::bottom const):
(WebCore::InlineIterator::LineBox::inkOverflowTop const):
(WebCore::InlineIterator::LineBox::inkOverflowBottom const):
(WebCore::InlineIterator::LineBox::contentLogicalLeft const):
(WebCore::InlineIterator::LineBox::contentLogicalRight const):
(WebCore::InlineIterator::LineBox::contentLogicalWidth const):
(WebCore::InlineIterator::LineBox::isHorizontal const):
(WebCore::InlineIterator::LineBox::baselineType const):
(WebCore::InlineIterator::LineBox::containingBlock const):
(WebCore::InlineIterator::LineBox::containingFragment const):
(WebCore::InlineIterator::LineBox::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineBox::isFirst const):

  • layout/integration/inline/InlineIteratorLineBoxLegacyPath.h: Renamed from Source/WebCore/layout/integration/InlineIteratorLineBoxLegacyPath.h.

(WebCore::InlineIterator::LineBoxIteratorLegacyPath::LineBoxIteratorLegacyPath):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalTop const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalBottom const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::top const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::bottom const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::inkOverflowTop const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::inkOverflowBottom const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalLeft const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalRight const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::isHorizontal const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::baselineType const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::containingBlock const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::containingFragment const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::traverseNext):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::traversePrevious):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::operator== const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::atEnd const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::firstLeafBox const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::lastLeafBox const):

  • layout/integration/inline/InlineIteratorLineBoxModernPath.h: Renamed from Source/WebCore/layout/integration/InlineIteratorLineBoxModernPath.h.

(WebCore::InlineIterator::LineBoxIteratorModernPath::LineBoxIteratorModernPath):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalTop const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalBottom const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::top const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::bottom const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::inkOverflowTop const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::inkOverflowBottom const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalLeft const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalRight const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::isHorizontal const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::baselineType const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::containingBlock const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::containingFragment const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::traverseNext):
(WebCore::InlineIterator::LineBoxIteratorModernPath::traversePrevious):
(WebCore::InlineIterator::LineBoxIteratorModernPath::operator== const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::atEnd const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::firstLeafBox const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::lastLeafBox const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::setAtEnd):
(WebCore::InlineIterator::LineBoxIteratorModernPath::lines const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::line const):

  • layout/integration/inline/InlineIteratorLogicalOrderTraversal.cpp: Renamed from Source/WebCore/layout/integration/InlineIteratorLogicalOrderTraversal.cpp.

(WebCore::InlineIterator::makeTextLogicalOrderCacheIfNeeded):
(WebCore::InlineIterator::updateTextLogicalOrderCacheIfNeeded):
(WebCore::InlineIterator::firstTextBoxInLogicalOrderFor):
(WebCore::InlineIterator::nextTextBoxInLogicalOrder):
(WebCore::InlineIterator::makeLineLogicalOrderCache):
(WebCore::InlineIterator::updateLineLogicalOrderCacheIfNeeded):
(WebCore::InlineIterator::firstLeafOnLineInLogicalOrder):
(WebCore::InlineIterator::lastLeafOnLineInLogicalOrder):
(WebCore::InlineIterator::nextLeafOnLineInLogicalOrder):
(WebCore::InlineIterator::previousLeafOnLineInLogicalOrder):
(WebCore::InlineIterator::firstLeafOnLineInLogicalOrderWithNode):
(WebCore::InlineIterator::lastLeafOnLineInLogicalOrderWithNode):

  • layout/integration/inline/InlineIteratorLogicalOrderTraversal.h: Renamed from Source/WebCore/layout/integration/InlineIteratorLogicalOrderTraversal.h.

(WebCore::InlineIterator::leafBoxesInLogicalOrder):

  • layout/integration/inline/InlineIteratorTextBox.cpp: Renamed from Source/WebCore/layout/integration/InlineIteratorTextBox.cpp.

(WebCore::InlineIterator::TextBox::nextTextBox const):
(WebCore::InlineIterator::TextBox::selectionRect const):
(WebCore::InlineIterator::TextBox::offsetForPosition const):
(WebCore::InlineIterator::TextBox::positionForOffset const):
(WebCore::InlineIterator::TextBox::isCombinedText const):
(WebCore::InlineIterator::TextBox::fontCascade const):
(WebCore::InlineIterator::TextBoxIterator::TextBoxIterator):
(WebCore::InlineIterator::TextBoxIterator::traverseNextTextBox):
(WebCore::InlineIterator::firstTextBoxFor):
(WebCore::InlineIterator::textBoxFor):
(WebCore::InlineIterator::textBoxesFor):

  • layout/integration/inline/InlineIteratorTextBox.h: Renamed from Source/WebCore/layout/integration/InlineIteratorTextBox.h.

(WebCore::InlineIterator::TextBox::renderer const):
(WebCore::InlineIterator::TextBox::legacyInlineBox const):
(WebCore::InlineIterator::TextBoxIterator::TextBoxIterator):
(WebCore::InlineIterator::TextBoxIterator::operator++):
(WebCore::InlineIterator::TextBoxIterator::operator* const):
(WebCore::InlineIterator::TextBoxIterator::operator-> const):
(WebCore::InlineIterator::TextBoxIterator::get const):
(WebCore::InlineIterator::TextBoxRange::TextBoxRange):
(WebCore::InlineIterator::TextBoxRange::begin const):
(WebCore::InlineIterator::TextBoxRange::end const):
(WebCore::InlineIterator::TextBox::hasHyphen const):
(WebCore::InlineIterator::TextBox::TextBox):
(WebCore::InlineIterator::TextBox::text const):
(WebCore::InlineIterator::TextBox::start const):
(WebCore::InlineIterator::TextBox::end const):
(WebCore::InlineIterator::TextBox::length const):
(WebCore::InlineIterator::TextBox::selectableRange const):
(WebCore::InlineIterator::TextBox::createTextRun const):
(isType):

  • layout/integration/inline/LayoutIntegrationInlineContent.cpp: Renamed from Source/WebCore/layout/integration/LayoutIntegrationInlineContent.cpp.

(WebCore::LayoutIntegration::InlineContent::InlineContent):
(WebCore::LayoutIntegration::InlineContent::hasContent const):
(WebCore::LayoutIntegration:: const):
(WebCore::LayoutIntegration::InlineContent::~InlineContent):
(WebCore::LayoutIntegration::InlineContent::rendererForLayoutBox const):
(WebCore::LayoutIntegration::InlineContent::containingBlock const):
(WebCore::LayoutIntegration::InlineContent::indexForBox const):
(WebCore::LayoutIntegration::InlineContent::firstBoxForLayoutBox const):
(WebCore::LayoutIntegration::InlineContent::firstBoxIndexForLayoutBox const):
(WebCore::LayoutIntegration::InlineContent::nonRootInlineBoxIndexesForLayoutBox const):
(WebCore::LayoutIntegration::InlineContent::clearAndDetach):
(WebCore::LayoutIntegration::InlineContent::releaseCaches):
(WebCore::LayoutIntegration::InlineContent::shrinkToFit):

  • layout/integration/inline/LayoutIntegrationInlineContent.h: Renamed from Source/WebCore/layout/integration/LayoutIntegrationInlineContent.h.

(WebCore::LayoutIntegration::InlineContent::create):
(WebCore::LayoutIntegration::InlineContent::hasVisualOverflow const):
(WebCore::LayoutIntegration::InlineContent::setHasVisualOverflow):
(WebCore::LayoutIntegration::InlineContent::lineForBox const):
(WebCore::LayoutIntegration::InlineContent::lineLayout const):
(WebCore::LayoutIntegration::InlineContent::traverseNonRootInlineBoxes):

  • layout/integration/inline/LayoutIntegrationInlineContentBuilder.cpp: Renamed from Source/WebCore/layout/integration/LayoutIntegrationInlineContentBuilder.cpp.

(WebCore::LayoutIntegration::operator+):
(WebCore::LayoutIntegration::lineOverflowLogicalWidth):
(WebCore::LayoutIntegration::InlineContentBuilder::InlineContentBuilder):
(WebCore::LayoutIntegration::InlineContentBuilder::build const):
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLines const):

  • layout/integration/inline/LayoutIntegrationInlineContentBuilder.h: Renamed from Source/WebCore/layout/integration/LayoutIntegrationInlineContentBuilder.h.
  • layout/integration/inline/LayoutIntegrationLine.h: Renamed from Source/WebCore/layout/integration/LayoutIntegrationLine.h.

(WebCore::LayoutIntegration::Line::Line):
(WebCore::LayoutIntegration::Line::firstBoxIndex const):
(WebCore::LayoutIntegration::Line::boxCount const):
(WebCore::LayoutIntegration::Line::lineBoxTop const):
(WebCore::LayoutIntegration::Line::lineBoxBottom const):
(WebCore::LayoutIntegration::Line::lineBoxLeft const):
(WebCore::LayoutIntegration::Line::lineBoxRight const):
(WebCore::LayoutIntegration::Line::lineBoxHeight const):
(WebCore::LayoutIntegration::Line::lineBoxWidth const):
(WebCore::LayoutIntegration::Line::enclosingContentTop const):
(WebCore::LayoutIntegration::Line::enclosingContentBottom const):
(WebCore::LayoutIntegration::Line::scrollableOverflow const):
(WebCore::LayoutIntegration::Line::inkOverflow const):
(WebCore::LayoutIntegration::Line::baseline const):
(WebCore::LayoutIntegration::Line::baselineType const):
(WebCore::LayoutIntegration::Line::isHorizontal const):
(WebCore::LayoutIntegration::Line::contentLogicalOffset const):
(WebCore::LayoutIntegration::Line::contentLogicalWidth const):

  • layout/integration/inline/LayoutIntegrationLineLayout.cpp: Renamed from Source/WebCore/layout/integration/LayoutIntegrationLineLayout.cpp.

(WebCore::LayoutIntegration::LineLayout::LineLayout):
(WebCore::LayoutIntegration::LineLayout::~LineLayout):
(WebCore::LayoutIntegration::LineLayout::blockContainer):
(WebCore::LayoutIntegration::LineLayout::containing):
(WebCore::LayoutIntegration::LineLayout::isEnabled):
(WebCore::LayoutIntegration::LineLayout::canUseFor):
(WebCore::LayoutIntegration::LineLayout::canUseForAfterStyleChange):
(WebCore::LayoutIntegration::LineLayout::canUseForAfterInlineBoxStyleChange):
(WebCore::LayoutIntegration::LineLayout::shouldSwitchToLegacyOnInvalidation const):
(WebCore::LayoutIntegration::LineLayout::updateReplacedDimensions):
(WebCore::LayoutIntegration::LineLayout::updateInlineBlockDimensions):
(WebCore::LayoutIntegration::LineLayout::updateInlineTableDimensions):
(WebCore::LayoutIntegration::LineLayout::updateListItemDimensions):
(WebCore::LayoutIntegration::LineLayout::updateListMarkerDimensions):
(WebCore::LayoutIntegration::contentLogicalWidthForRenderer):
(WebCore::LayoutIntegration::contentLogicalHeightForRenderer):
(WebCore::LayoutIntegration::horizontalLogicalMargin):
(WebCore::LayoutIntegration::verticalLogicalMargin):
(WebCore::LayoutIntegration::logicalBorder):
(WebCore::LayoutIntegration::logicalPadding):
(WebCore::LayoutIntegration::LineLayout::updateLayoutBoxDimensions):
(WebCore::LayoutIntegration::LineLayout::updateLineBreakBoxDimensions):
(WebCore::LayoutIntegration::LineLayout::updateInlineBoxDimensions):
(WebCore::LayoutIntegration::LineLayout::updateStyle):
(WebCore::LayoutIntegration::LineLayout::computeIntrinsicWidthConstraints):
(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::constructContent):
(WebCore::LayoutIntegration::LineLayout::updateFormattingRootGeometryAndInvalidate):
(WebCore::LayoutIntegration::LineLayout::prepareLayoutState):
(WebCore::LayoutIntegration::LineLayout::prepareFloatingState):
(WebCore::LayoutIntegration::LineLayout::contentLogicalHeight const):
(WebCore::LayoutIntegration::LineLayout::lineCount const):
(WebCore::LayoutIntegration::LineLayout::hasVisualOverflow const):
(WebCore::LayoutIntegration::LineLayout::firstLinePhysicalBaseline const):
(WebCore::LayoutIntegration::LineLayout::lastLineLogicalBaseline const):
(WebCore::LayoutIntegration::LineLayout::adjustForPagination):
(WebCore::LayoutIntegration::LineLayout::collectOverflow):
(WebCore::LayoutIntegration::LineLayout::ensureInlineContent):
(WebCore::LayoutIntegration::LineLayout::textBoxesFor const):
(WebCore::LayoutIntegration::LineLayout::boxFor const):
(WebCore::LayoutIntegration::LineLayout::firstInlineBoxFor const):
(WebCore::LayoutIntegration::LineLayout::firstRootInlineBox const):
(WebCore::LayoutIntegration::LineLayout::firstLineBox const):
(WebCore::LayoutIntegration::LineLayout::lastLineBox const):
(WebCore::LayoutIntegration::LineLayout::firstInlineBoxRect const):
(WebCore::LayoutIntegration::LineLayout::enclosingBorderBoxRectFor const):
(WebCore::LayoutIntegration::LineLayout::visualOverflowBoundingBoxRectFor const):
(WebCore::LayoutIntegration::LineLayout::collectInlineBoxRects const):
(WebCore::LayoutIntegration::LineLayout::rendererForLayoutBox const):
(WebCore::LayoutIntegration::LineLayout::rootLayoutBox const):
(WebCore::LayoutIntegration::LineLayout::rootLayoutBox):
(WebCore::LayoutIntegration::flippedContentOffsetIfNeeded):
(WebCore::LayoutIntegration::LineLayout::paint):
(WebCore::LayoutIntegration::flippedRectForWritingMode):
(WebCore::LayoutIntegration::LineLayout::hitTest):
(WebCore::LayoutIntegration::LineLayout::releaseCaches):
(WebCore::LayoutIntegration::LineLayout::clearInlineContent):
(WebCore::LayoutIntegration::LineLayout::ensureLineDamage):
(WebCore::LayoutIntegration::LineLayout::outputLineTree const):

  • layout/integration/inline/LayoutIntegrationLineLayout.h: Renamed from Source/WebCore/layout/integration/LayoutIntegrationLineLayout.h.

(WebCore::LayoutIntegration::LineLayout::isPaginated const):
(WebCore::LayoutIntegration::LineLayout::flow const):
(WebCore::LayoutIntegration::LineLayout::flow):

  • layout/integration/inline/LayoutIntegrationPagination.cpp: Renamed from Source/WebCore/layout/integration/LayoutIntegrationPagination.cpp.

(WebCore::LayoutIntegration::computeLineTopAndBottomWithOverflow):
(WebCore::LayoutIntegration::computeLineBreakIndex):
(WebCore::LayoutIntegration::computeOffsetAfterLineBreak):
(WebCore::LayoutIntegration::setPageBreakForLine):
(WebCore::LayoutIntegration::updateMinimumPageHeight):
(WebCore::LayoutIntegration::makeAdjustedContent):
(WebCore::LayoutIntegration::adjustLinePositionsForPagination):

  • layout/integration/inline/LayoutIntegrationPagination.h: Renamed from Source/WebCore/layout/integration/LayoutIntegrationPagination.h.
  • layout/integration/inline/LineSelection.h: Renamed from Source/WebCore/layout/integration/LineSelection.h.

(WebCore::LineSelection::logicalTop):
(WebCore::LineSelection::logicalBottom):
(WebCore::LineSelection::logicalRect):
(WebCore::LineSelection::physicalRect):
(WebCore::LineSelection::logicalTopAdjustedForPrecedingBlock):
(WebCore::LineSelection::selectionState):

5:35 AM Changeset in webkit [292953] by Martin Robinson
  • 16 edits
    1 copy
    9 adds in trunk/LayoutTests

TestRunner testdriver does not properly focus elements before sending keys to them
https://bugs.webkit.org/show_bug.cgi?id=237589

Reviewed by Carlos Garcia Campos.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-scroll-snap/input/keyboard-expected.txt:
  • web-platform-tests/css/css-scroll-snap/input/keyboard.html:
  • web-platform-tests/css/css-scroll-snap/input/snap-area-overflow-boundary-expected.txt:
  • web-platform-tests/css/css-scroll-snap/input/snap-area-overflow-boundary.html:
  • web-platform-tests/html/semantics/forms/input-change-event-properties-expected.txt:
  • web-platform-tests/html/semantics/forms/textfieldselection/selection-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/defaultValue-clobbering-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/email-set-value-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/maxlength-number-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/radio-double-activate-pseudo-expected.txt:
  • web-platform-tests/html/semantics/selectors/pseudo-classes/invalid-after-clone-expected.txt:
  • web-platform-tests/resources/testdriver-vendor.js: When sending keys, first focus the element

in question.

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/input-change-event-properties-expected.txt: Added.
  • platform/ios-simulator/imported/w3c/web-platform-tests/html/semantics/selectors/pseudo-classes/invalid-after-clone-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/selectors/pseudo-classes/invalid-after-clone-expected.txt.
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/input-change-event-properties-expected.txt: Added.
  • platform/mac/imported/w3c/web-platform-tests/css/css-scroll-snap/input/keyboard-expected.txt: Added.
  • platform/mac/imported/w3c/web-platform-tests/css/selectors/focus-visible-008-expected.txt:
4:47 AM Changeset in webkit [292952] by clopez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK][WPE] Build fix after r292951
https://bugs.webkit.org/show_bug.cgi?id=239426

Debug build was broken on GTK and WPE after r292951. Fix it.

Unreviewed build-fix.

No new tests, no change in behaviour.

  • platform/network/MIMEHeader.cpp:

(WebCore::MIMEHeader::parseContentTransferEncoding):

Apr 17, 2022:

10:55 PM Changeset in webkit [292951] by Chris Dumez
  • 40 edits in trunk/Source

Leverage StringView in more places
https://bugs.webkit.org/show_bug.cgi?id=239426

Reviewed by Sam Weinig.

Leverage StringView in more places, to reduce the number of String allocations.

Source/WebCore:

  • Modules/applicationmanifest/ApplicationManifestParser.cpp:

(WebCore::ApplicationManifestParser::parseDisplay):
(WebCore::ApplicationManifestParser::parseIcons):

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::SQLiteIDBCursor::createSQLiteStatement):

  • Modules/indexeddb/server/SQLiteIDBCursor.h:
  • Modules/webdatabase/Database.cpp:

(WebCore::setTextValueInDatabase):
(WebCore::retrieveTextResultFromDatabase):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
(appendStringToResult): Deleted.
(accessibleElementsForObjects): Deleted.
(rendererForView): Deleted.

  • css/parser/MediaQueryParser.h:

(WebCore::MediaQueryParser::MediaQueryData::setMediaType):

  • editing/Editor.cpp:

(WebCore::Editor::transpose):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::debugRenderer const):

  • html/MediaFragmentURIParser.cpp:

(WebCore::collectFraction):
(WebCore::MediaFragmentURIParser::parseNPTTime):

  • html/StepRange.cpp:

(WebCore::StepRange::parseStep):

  • html/StepRange.h:
  • html/parser/HTMLParserIdioms.cpp:

(WebCore::parseToDecimalForNumberType):
(WebCore::parseToDoubleForNumberType):

  • html/parser/HTMLParserIdioms.h:
  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::setAttributesAsText):

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::replaceNonPreservedNewLineCharactersAndAppend):

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::printTextForSubtree):

  • page/TextIndicator.cpp:

(WebCore::containsOnlyWhiteSpaceText):

  • platform/Decimal.cpp:

(WebCore::Decimal::fromString):

  • platform/Decimal.h:
  • platform/network/CacheValidation.cpp:

(WebCore::parseCacheHeader):
(WebCore::parseCacheControlDirectives):

  • platform/network/HTTPParsers.cpp:

(WebCore::filenameFromHTTPContentDisposition):

  • platform/network/HTTPParsers.h:
  • platform/network/MIMEHeader.cpp:

(WebCore::retrieveKeyValuePairs):
(WebCore::MIMEHeader::parseContentTransferEncoding):

  • platform/network/MIMEHeader.h:
  • platform/network/ParsedContentType.cpp:

(WebCore::ParsedContentType::setContentType):

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::isAttachment const):
(WebCore::ResourceResponseBase::isAttachmentWithFilename const):

  • platform/network/curl/ResourceResponseCurl.cpp:

(WebCore::ResourceResponse::platformSuggestedFilename const):

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::executeCommandSlow):
(WebCore::SQLiteDatabase::clearAllTables):
(WebCore::SQLiteDatabase::prepareStatementSlow):
(WebCore::SQLiteDatabase::prepareHeapStatementSlow):

  • platform/sql/SQLiteDatabase.h:
  • platform/xr/PlatformXR.h:

(PlatformXR::parseSessionFeatureDescriptor):

  • svg/SVGAnimationElement.cpp:

(WebCore::parseKeyTimes):
(WebCore::SVGAnimationElement::parseAttribute):

Source/WebKit:

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::dictionaryPopupInfoForRange):

Source/WebKitLegacy/mac:

  • WebView/WebImmediateActionController.mm:

(+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):

Source/WTF:

  • wtf/text/StringImpl.cpp:
  • wtf/text/StringImpl.h:

(WTF::isNotSpaceOrNewline):

  • wtf/text/WTFString.h:
2:52 PM Changeset in webkit [292950] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Harden JSObject::setPrototypeOf.
https://bugs.webkit.org/show_bug.cgi?id=239440

Reviewed by Yusuke Suzuki.

  • runtime/JSObject.cpp:

(JSC::JSObject::setPrototypeDirect):
(JSC::JSObject::setPrototypeWithCycleCheck):

  • runtime/JSObject.h:
  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorSetPrototypeOf):

2:01 PM Changeset in webkit [292949] by Lauro Moura
  • 5 edits in trunk/Source/WebCore

Unreviewed, non-unified build fixes after 249632@main
https://bugs.webkit.org/show_bug.cgi?id=239436

  • workers/DedicatedWorkerThread.cpp:
  • workers/WorkerGlobalScope.cpp:
  • workers/WorkerScriptLoader.cpp:
  • workers/service/ServiceWorkerClientData.cpp:
6:32 AM Changeset in webkit [292948] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

RenderDeprecatedFlexibleBox::applyLineClamp should use size_t
https://bugs.webkit.org/show_bug.cgi?id=239389

Reviewed by Darin Adler.

Use size_t consistently in applyLineClamp.
While LineClampValue is int based, it can also be a percent type which expands the clamping range to size_t.

getHeightForLineCount -> use size_t and drop the magic -1.
heightForLineCount -> return LayoutUnit instead of int.

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::getHeightForLineCount):
(WebCore::heightForLineCount):
(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):

1:08 AM Changeset in webkit [292947] by rniwa@webkit.org
  • 13 edits
    3 adds in trunk

Make release assertion in Document::updateLayout more precise for FrameSelection::setSelection
https://bugs.webkit.org/show_bug.cgi?id=239431

Reviewed by Alan Bujtas.

Source/WebCore:

Avoid the assertion failure by allowing no-op layout updates within FrameSelection::setSelection.

To do this, this patch introduces a new RAII object, UpToDateLayoutScope, which denotes when when the layout
is up-to-date and therefore does not require a new layout update. When this scope exists in the stack frame,
we allow calls to Document::updateLayout even inside ScriptDisallowedScope. We also assert that nobody attempts
to schedule a new style resolution or layout when this object exists.

Test: fast/forms/textarea-selection-update-during-DOMNodeRemoved-crash.html

  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::scheduleStyleRecalc):
(WebCore::Document::updateLayout):

  • dom/Document.h:

(WebCore::Document::upToDateLayoutScopeCount const):
(WebCore::Document::incrementUpToDateLayoutScopeCount):
(WebCore::Document::decrementUpToDateLayoutScopeCount):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::setSelection):

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::scheduleLayout):

  • rendering/RenderObject.h:

(WebCore::RenderObject::isSetNeedsLayoutForbidden const):

  • rendering/UpToDateLayoutScope.h: Added.

(WebCore::UpToDateLayoutScope::UpToDateLayoutScope):
(WebCore::UpToDateLayoutScope::~UpToDateLayoutScope):
(WebCore::UpToDateLayoutScope::scopeIfLayoutIsUpToUpdate):
(WebCore::UpToDateLayoutScope::needsLayout):

LayoutTests:

Add a regression test, and fix existing accessibility tests which were mutating DOM inside setSelection
via should* functions. In production, this will never happen since accessibility notification will be sent
to UI process asynchronously and accesssibility code won't try to mutate DOM synchronously.

  • accessibility/mac/focus-setting-selection-syncronizing-not-clearing-expected.txt: Rebaselined.
  • accessibility/mac/focus-setting-selection-syncronizing-not-clearing.html: Delay DOM mutations in should*

until the notification is over.

  • accessibility/mac/selection-change-userinfo.html: Ditto.
  • accessibility/mac/selection-sync.html: Ditto.
  • accessibility/mac/selection-value-changes-for-aria-textbox.html: Ditto.
  • fast/forms/textarea-selection-update-during-DOMNodeRemoved-crash-expected.txt: Added.
  • fast/forms/textarea-selection-update-during-DOMNodeRemoved-crash.html: Added.
Note: See TracTimeline for information about the timeline view.