Timeline



Jul 6, 2021:

11:05 PM Changeset in webkit [279639] by commit-queue@webkit.org
  • 5 edits
    2 deletes in trunk

Unreviewed, reverting r279628.
https://bugs.webkit.org/show_bug.cgi?id=227737

Test does not work since it relies on r279546, which is
reverted due to Speedometer regression

Reverted changeset:

"SubtleCrypto should only be exposed to secure contexts"
https://bugs.webkit.org/show_bug.cgi?id=227725
https://commits.webkit.org/r279628

8:49 PM Changeset in webkit [279638] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix after r279630
https://bugs.webkit.org/show_bug.cgi?id=223166

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
8:44 PM Changeset in webkit [279637] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, need CryptoKey and SubtleCrypto names

  • bindings/js/WebCoreBuiltinNames.h:
8:36 PM Changeset in webkit [279636] by Simon Fraser
  • 3 edits
    2 adds in trunk

REGRESSION (r262237) Safari 14.x shows graphics artifacts when scrolling, using drop-down menus or just moving the mouse
https://bugs.webkit.org/show_bug.cgi?id=220892
<rdar://73538454>

Reviewed by Alan Bujtas.

Source/WebCore:

Fix an issue with backing sharing where a composited layer needs to interrupted a backing
sharing sequence. In some cases, a layer that became composited via an indirect reason
(like overflow positioning) would not interrupt a backing sharing sequence, leaving a dangling
layer that ended up painting into the wrong ancestor.

The fix is to ensure that BackingSharingState::updateBeforeDescendantTraversal() and
BackingSharingState::updateAfterDescendantTraversal() have the same behavior when a layer
becomes composited (thus interrupting the sequence). However, we also have ensure that
updateAfterDescendantTraversal() doesn't erroeously interrupt the sequence when the sequence
was initiated by some descendant, hence the check against the preDescendantProviderCandidate.

Test: compositing/shared-backing/backing-sharing-compositing-change.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::BackingSharingState::endBackingSharingSequence):
(WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal):
(WebCore::RenderLayerCompositor::BackingSharingState::updateAfterDescendantTraversal):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::traverseUnchangedSubtree):

LayoutTests:

  • compositing/shared-backing/backing-sharing-compositing-change-expected.html: Added.
  • compositing/shared-backing/backing-sharing-compositing-change.html: Added.
8:12 PM Changeset in webkit [279635] by commit-queue@webkit.org
  • 122 edits
    5 deletes in trunk

Unreviewed, reverting r279546, r279554, r279558 and r279567.
https://bugs.webkit.org/show_bug.cgi?id=227732

Speedometer/jQuery-TodoMVC 2-3% regression

Reverted changesets:

"[WebIDL] Rework runtime enabled properties leveraging
PropertyCallback"
https://bugs.webkit.org/show_bug.cgi?id=227275
https://commits.webkit.org/r279546

"[WebIDL] Generate constructor's hash table in
GenerateConstructorHelperMethods"
https://bugs.webkit.org/show_bug.cgi?id=227668
https://commits.webkit.org/r279554

"[WebIDL] Simplify generation of runtime conditionally read-
write attributes"
https://bugs.webkit.org/show_bug.cgi?id=227672
https://commits.webkit.org/r279558

"Use AbortSignal's [PrivateIdentifier] whenSignalAborted()
static method"
https://bugs.webkit.org/show_bug.cgi?id=227673
https://commits.webkit.org/r279567

6:09 PM Changeset in webkit [279634] by Alan Coon
  • 1 copy in tags/Safari-612.1.22.3.1

Tag Safari-612.1.22.3.1.

6:06 PM Changeset in webkit [279633] by Alan Coon
  • 1 copy in tags/Safari-612.1.22.1.1

Tag Safari-612.1.22.1.1.

6:04 PM Changeset in webkit [279632] by Alan Coon
  • 1 copy in tags/Safari-612.1.22.2.1

Tag Safari-612.1.22.2.1.

6:01 PM Changeset in webkit [279631] by Alan Coon
  • 1 copy in tags/Safari-612.1.22.0.1

Tag Safari-612.1.22.0.1.

5:48 PM Changeset in webkit [279630] by commit-queue@webkit.org
  • 8 edits
    4 adds in trunk/Source/JavaScriptCore

[JSC] Implement Temporal
https://bugs.webkit.org/show_bug.cgi?id=223166

Patch by Philip Chimento <pchimento@igalia.com> on 2021-07-06
Reviewed by Yusuke Suzuki.

Intended to be the first patch in a stack. Adds boilerplate for
Temporal in order to unblock further parallelizable work on this bug.

This patch adds a feature flag for Temporal, and a toplevel Temporal
global containing only Temporal.now, which is itself an empty object.
These objects will be further populated in later patches.

  • CMakeLists.txt: Add TemporalObject and TemporalNow. Property lookup table in TemporalObject.
  • DerivedSources.make: Add TemporalObject property lookup table header.
  • JavaScriptCore.xcodeproj/project.pbxproj: Add new files.
  • Sources.txt: Add TemporalObject and TemporalNow.
  • runtime/CommonIdentifiers.h: Add 'Temporal' property key.
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init): Create the Temporal global if the feature

flag is enabled.

  • runtime/OptionsList.h: Add useTemporal feature flag.
  • runtime/TemporalNow.cpp: Added.

(JSC::TemporalNow::TemporalNow):
(JSC::TemporalNow::create):
(JSC::TemporalNow::createStructure):
(JSC::TemporalNow::finishCreation):

  • runtime/TemporalNow.h: Added.
  • runtime/TemporalObject.cpp: Added.

(JSC::createNowObject):
(JSC::TemporalObject::TemporalObject):
(JSC::TemporalObject::create):
(JSC::TemporalObject::createStructure):
(JSC::TemporalObject::finishCreation):

  • runtime/TemporalObject.h: Added.
5:27 PM Changeset in webkit [279629] by commit-queue@webkit.org
  • 4 edits in trunk

imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any*.html are crashing in debug
https://bugs.webkit.org/show_bug.cgi?id=227310

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

Source/WebCore:

In r228486 we blocked cross-origin requests from asking for credentials, and we wanted to add a console log for web developers
to see why they could no longer ask for credentials. r228703 loosened that to allow main resources to request credentials,
and it added an incorrect assertion before logging. ResourceLoader::isAllowedToAskUserForCredentials has two other reasons
why credentials could be blocked, and there is no reason to log in those cases because that is standard web behavior, as seen by
running the tests in Chrome and Firefox and seeing no console log. This removes the logs in cases where other browsers also
have the same behavior and do not log, and removes the incorrect assertion.

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::didBlockAuthenticationChallenge):

LayoutTests:

4:54 PM Changeset in webkit [279628] by Chris Dumez
  • 5 edits
    2 adds in trunk

SubtleCrypto should only be exposed to secure contexts
https://bugs.webkit.org/show_bug.cgi?id=227725

Reviewed by Darin Adler.

Source/WebCore:

SubtleCrypto should only be exposed to secure contexts:

Gecko and Blink match the specification.

This was causing WebKit to fail the WebCryptoAPI/historical.any.html WPT test.

Test: http/wpt/crypto/historical.html

  • crypto/CryptoKey.idl:
  • crypto/SubtleCrypto.idl:
  • page/Crypto.idl:

LayoutTests:

Add layout test coverage.

  • http/wpt/crypto/historical-expected.txt: Added.
  • http/wpt/crypto/historical.html: Added.
3:49 PM Changeset in webkit [279627] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Fix type error in testb3
https://bugs.webkit.org/show_bug.cgi?id=227722

Patch by Yijia Huang <Yijia Huang> on 2021-07-06
Reviewed by Mark Lam.

Fix type error in testb3. Shift amount should be 32-bit constant.

  • b3/testb3_3.cpp:

(testInsertSignedBitfieldInZero64):
(testExtractSignedBitfield64):

3:37 PM Changeset in webkit [279626] by rniwa@webkit.org
  • 5 edits in trunk/Source

Deploy smart pointers in EventHandler and UserInputBridge
https://bugs.webkit.org/show_bug.cgi?id=227481
<rdar://problem/79906757>

Reviewed by Wenson Hsieh and Chris Dumez.

Source/WebCore:

Deployed Ref/RefPtr in various places in EventHandler and UserInputBridge.

  • page/EventHandler.cpp:

(WebCore::EventHandler::selectClosestWordFromHitTestResult):
(WebCore::EventHandler::selectClosestContextualWordFromMouseEvent):
(WebCore::EventHandler::selectClosestContextualWordOrLinkFromMouseEvent):
(WebCore::EventHandler::handleMousePressEventTripleClick):
(WebCore::EventHandler::handleMousePressEventSingleClick):
(WebCore::EventHandler::selectionExtentRespectingEditingBoundary):
(WebCore::EventHandler::handleMouseDraggedEvent):
(WebCore::EventHandler::eventMayStartDrag const):
(WebCore::EventHandler::updateSelectionForMouseDrag):
(WebCore::EventHandler::handleMouseReleaseEvent):
(WebCore::EventHandler::hitTestResultAtPoint const):
(WebCore::EventHandler::scrollOverflow):
(WebCore::EventHandler::logicalScrollOverflow):
(WebCore::EventHandler::scrollRecursively):
(WebCore::EventHandler::logicalScrollRecursively):
(WebCore::EventHandler::updateCursor):
(WebCore::EventHandler::selectCursor):
(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::contentFrameForNode): Renamed from targetIsFrame and made it return the node.
(WebCore::EventHandler::updateDragAndDrop):
(WebCore::EventHandler::cancelDragAndDrop):
(WebCore::EventHandler::performDragAndDrop):
(WebCore::hierarchyHasCapturingEventListeners):
(WebCore::EventHandler::updateMouseEventTargetNode):
(WebCore::EventHandler::notifyScrollableAreasOfMouseEvents):
(WebCore::EventHandler::dispatchMouseEvent):
(WebCore::EventHandler::isInsideScrollbar const):
(WebCore::EventHandler::handleWheelEvent):
(WebCore::EventHandler::handleWheelEventInternal):
(WebCore::EventHandler::sendContextMenuEvent):
(WebCore::EventHandler::sendContextMenuEventForKey):
(WebCore::EventHandler::fakeMouseMoveEventTimerFired):
(WebCore::EventHandler::hoverTimerFired):
(WebCore::EventHandler::handleAccessKey):
(WebCore::EventHandler::isKeyEventAllowedInFullScreen const):
(WebCore::EventHandler::keyEvent):
(WebCore::EventHandler::internalKeyEvent):
(WebCore::setInitialKeyboardSelection):
(WebCore::removeDraggedContentDocumentMarkersFromAllFramesInPage):
(WebCore::EventHandler::handleKeyboardScrolling):
(WebCore::EventHandler::handleTouchEvent):
(WebCore::EventHandler::passWheelEventToWidget):

  • replay/UserInputBridge.cpp:

(WebCore::UserInputBridge::handleMousePressEvent):
(WebCore::UserInputBridge::handleMouseReleaseEvent):
(WebCore::UserInputBridge::handleMouseMoveEvent):
(WebCore::UserInputBridge::handleMouseMoveOnScrollbarEvent):
(WebCore::UserInputBridge::handleMouseForceEvent):
(WebCore::UserInputBridge::handleKeyEvent):
(WebCore::UserInputBridge::handleAccessKeyEvent):
(WebCore::UserInputBridge::handleWheelEvent):
(WebCore::UserInputBridge::scrollRecursively):
(WebCore::UserInputBridge::logicalScrollRecursively):
(WebCore::UserInputBridge::loadRequest):
(WebCore::UserInputBridge::tryClosePage):

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::contextMenuAtPointInWindow):
(WebKit::handleContextMenuEvent):

3:34 PM Changeset in webkit [279625] by Devin Rousso
  • 3 edits in trunk/Source/WebKit

Provide SPI for clients to override just the contextmenu preview instead of the entire UIContextMenuConfiguration
https://bugs.webkit.org/show_bug.cgi?id=227603
<rdar://problem/78832586>

Reviewed by Wenson Hsieh.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView continueContextMenuInteraction:]):
This allows Safari to remove some custom contextmenu code and use WebKit's default actions.

3:33 PM Changeset in webkit [279624] by dino@apple.com
  • 5 edits in trunk/Source/WebCore

WebGL video to texture upload spends time clearing the uploaded-to texture
https://bugs.webkit.org/show_bug.cgi?id=227582
<rdar://problem/80020335>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-07-06
Reviewed by Kenneth Russell.

Disable robust resource initiaization for the shared ANGLE context that is used
to copy video frames to WebGL textures. Otherwise ANGLE would spend time
initializing the texture in gl::DrawArrays.

No new tests, we currently do not have WebGL perf tests.

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::texImage2DDirect):
Add the direct texImage2D call so that the texture seed can be
somehow updated. This will be removed once the texture image version
management is fixed to be a bit more robust.

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):

  • platform/graphics/cv/GraphicsContextGLCVANGLE.cpp:

(WebCore::GraphicsContextGLCVANGLE::copyPixelBufferToTexture):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
3:27 PM Changeset in webkit [279623] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

RenderLayer does not need a virtual destructor
https://bugs.webkit.org/show_bug.cgi?id=227706

Reviewed by Tim Horton.

The virtual destructor was a holdover from when RenderLayer inherited from
ScrollableArea.

  • rendering/RenderLayer.h:
2:35 PM Changeset in webkit [279622] by Truitt Savell
  • 16 edits
    6 deletes in trunk

Unreviewed, reverting r279542.

Casued 4 test crashes

Reverted changeset:

"SourceBuffer.abort() doesn't go back to state
WAITING_FOR_SEGMENT properly"
https://bugs.webkit.org/show_bug.cgi?id=227559
https://commits.webkit.org/r279542

2:20 PM Changeset in webkit [279621] by msaboff@apple.com
  • 14 edits in trunk/Source/bmalloc

[bmalloc] Make adaptive scavenging more precise
https://bugs.webkit.org/show_bug.cgi?id=226237

Reviewed by Geoffrey Garen.

Reland the adaptive scavenger change for macOS with fix.

The bug happens when decommitting large ranges that don't have physical pages.
We'd call Heap::decommitLargeRange(), but would only add the range to the
decommitter list if there were physical pages associated with the range.
We would still perform all the other processing of a decommitted range,
including setting the range as not elgible for allocation or merging.
Had the range been added to the decommitter list, we would have set the
range as elgible after the physical pages were released to the OS.
The result is that the range could never be allocated, either by itself or as a
larger range merged with adjacent ranges.

The fix is to only perform decommit processing of large ranges if they have
physical pages. We now check for physical pages before calling Heap::decommitLargeRange().
For ranges that don't have physical pages, they can stay on the free list as
elgible without having to round trip through decommit processing.

Made a minor change to the calculation of the physical end of the LargeRange created
and added to the free list in Heap::deallocateSmallChunk. If the last page in the chunk
has a physical page, we set the physical end of the range to the end of the chunk.
This is for the case where there is an unusable partial small page at the end of the chunk.

  • bmalloc/BPlatform.h:
  • bmalloc/Heap.cpp:

(bmalloc::Heap::decommitLargeRange):
(bmalloc::Heap::scavenge):
(bmalloc::Heap::allocateSmallChunk):
(bmalloc::Heap::deallocateSmallChunk):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::allocateLarge):
(bmalloc::Heap::tryAllocateLargeChunk):
(bmalloc::Heap::shrinkLarge):
(bmalloc::Heap::deallocateLarge):
(bmalloc::Heap::scavengeToHighWatermark): Deleted.

  • bmalloc/Heap.h:
  • bmalloc/IsoDirectory.h:
  • bmalloc/IsoDirectoryInlines.h:

(bmalloc::passedNumPages>::takeFirstEligible):
(bmalloc::passedNumPages>::scavenge):
(bmalloc::passedNumPages>::scavengeToHighWatermark): Deleted.

  • bmalloc/IsoHeapImpl.h:
  • bmalloc/IsoHeapImplInlines.h:

(bmalloc::IsoHeapImpl<Config>::scavengeToHighWatermark): Deleted.

  • bmalloc/IsoSharedHeapInlines.h:

(bmalloc::IsoSharedHeap::allocateSlow):

  • bmalloc/LargeMap.cpp:

(bmalloc::LargeMap::add):

  • bmalloc/LargeRange.h:

(bmalloc::LargeRange::LargeRange):
(bmalloc::LargeRange::physicalEnd const):
(bmalloc::LargeRange::setPhysicalEnd):
(bmalloc::LargeRange::clearPhysicalEnd):
(bmalloc::LargeRange::setUsedSinceLastScavenge):
(bmalloc::merge):
(bmalloc::LargeRange::split const):
(): Deleted.

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::Scavenger):
(bmalloc::Scavenger::scheduleIfUnderMemoryPressure):
(bmalloc::Scavenger::schedule):
(bmalloc::Scavenger::scavenge):
(bmalloc::Scavenger::threadRunLoop):
(bmalloc::Scavenger::didStartGrowing): Deleted.
(bmalloc::Scavenger::timeSinceLastPartialScavenge): Deleted.
(bmalloc::Scavenger::partialScavenge): Deleted.

  • bmalloc/Scavenger.h:
  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::setUsedSinceLastScavenge):

2:12 PM Changeset in webkit [279620] by sbarati@apple.com
  • 2 edits in trunk/JSTests

Run microbenchmarks/memcpy-typed-loop-small.js for fewer iterations to avoid timeouts
https://bugs.webkit.org/show_bug.cgi?id=227717

Reviewed by Robin Morisset.

  • microbenchmarks/memcpy-typed-loop-small.js:
2:05 PM Changeset in webkit [279619] by sihui_liu@apple.com
  • 7 edits in trunk/Source/WebKit

WebIDBServer created after NetworkProcess::prepareToSuspend is not suspended correctly
https://bugs.webkit.org/show_bug.cgi?id=227650

Reviewed by Chris Dumez.

We created WebIDBServer on receiving AddIDBConnection message from web process, to make sure WebIDBServer's
thread is launched only when it is needed. Now WebIDBServer uses WorkQueue, which uses thread from thread pool,
we can go back to ensure WebIDBServer at when connection to web process is needed. By doing this, it's less
likely WebIDBServer is created after NetworkProcess::prepareToSuspend. To make it more safe, this patch also
sets m_shouldSuspendIDBServer on NetworkProcess::prepareToSuspend. If the value is true, WebIDBServer is
suspended after creation.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::addIDBConnection): Deleted.

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::prepareToSuspend):
(WebKit::NetworkProcess::resume):
(WebKit::NetworkProcess::createWebIDBServer):

  • NetworkProcess/NetworkProcess.h:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):

1:54 PM Changeset in webkit [279618] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/WebCore

Merge r278892 - [GStreamer] Another crash under gst_element_add_pad
https://bugs.webkit.org/show_bug.cgi?id=225765

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

Decodebin3 in GStreamer <= 1.16 does not respect user-supplied select-stream events. So we
need to relax the release assert for these versions. This bug was fixed in:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/commit/b41b87522f59355bb21c001e9e2df96dc6956928

  • platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:

(WebCore::ImageDecoderGStreamer::InnerDecoder::connectDecoderPad):

1:54 PM Changeset in webkit [279617] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/WebKit

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

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

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

  • UIProcess/API/gtk/DropTargetGtk3.cpp:

(WebKit::DropTarget::dataReceived):

1:53 PM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
1:51 PM Changeset in webkit [279616] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.32/Source

Merge r278302 - [WPE][GTK] Support building against uClibc
https://bugs.webkit.org/show_bug.cgi?id=226244

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

  • assembler/MacroAssemblerARM64.cpp:

(getauxval): Provide a fallback implementation of getauxval() for
systems which do not provide <sys/auxv.h>, like those using uClibc
as their C library.

Source/WTF:

  • wtf/PlatformRegisters.h: Use the <sys/ucontext.h> header instead of

<ucontext.h>, which is enough to gain access to the type definitions
for CPU registers and is available on every libc. On the other hand,
uClibc does not have <ucontext.h>, so this fixes the build in that
case.

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

Make sure PlatformCALayer gets destroyed on the main thread
https://bugs.webkit.org/show_bug.cgi?id=227714

Reviewed by Geoffrey Garen.

Make sure PlatformCALayer gets destroyed on the main thread as we have evidence this is
not always the case and its destructor is definitely not safe to call on a non-main
thread.

  • platform/graphics/ca/PlatformCALayer.h:
1:31 PM Changeset in webkit [279614] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

MediaPlayer may be left in a non-visible state
https://bugs.webkit.org/show_bug.cgi?id=227711

Reviewed by Eric Carlson.

Prospective fix for possible edge-case behavior. MediaPlayer defaults to non-visible state
at creation time, but that visibility state is set to true in two places:

  • When the Page's visibility state changes
  • During layout

If the MediaPlayer is created (or re-created) after the Page's visibility state, or (somehow)
layout does not occur, the MediaPlayer can be left thinking it is not visible, which could
cause downstream effects like a failure to render video content.

Rather than wait for layout to occur, or for the Page's visibility state to change, always
set the visibility state immediately after creating the MediaPlayer object.

No test, as it's unclear what edge case may cause this problem to occur; could be a result of
re-creating the remote MediaPlayer after a GPU process crash; could be a specific page behavior
when switching media sources; could only occur in fullscreen mode.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::createMediaPlayer:

1:25 PM Changeset in webkit [279613] by Patrick Angle
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements Tab Details Sidebar navigation items sometime wrap to a second line
https://bugs.webkit.org/show_bug.cgi?id=227707

Reviewed by Devin Rousso.

When resizing a sidebar, it was possible that the cumulative widths of each navigation item could add up to just
less than the actual amount of space necessary to lay out each item in a single row, leading to wrapping items
to the next line. This resolves that issue by taking the ceiling of each item's width when calculating the
total amount of space needed to display all the items. Additionally, every time a panel is added or removed from
the sidebar, we need to recalculate the width of the sidebar to make sure the new navigation item, or the
removal thereof, is accommodated.

  • UserInterface/Views/NavigationBar.js:

(WI.NavigationBar.prototype.layout.calculateVisibleItemWidth):
(WI.NavigationBar.prototype._calculateMinimumWidth):

  • UserInterface/Views/SingleSidebar.js:

(WI.SingleSidebar.prototype.didInsertSidebarPanel):
(WI.SingleSidebar.prototype.didRemoveSidebarPanel):

1:19 PM Changeset in webkit [279612] by Ruben Turcios
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.24

1:01 PM Changeset in webkit [279611] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, address flakiness of imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout.any.worker.html

This test has been flaky since its import. Silence its console logging to address the flakiness.

12:43 PM Changeset in webkit [279610] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.3-branch

Cherry-pick r279449. rdar://problem/80212082

Turn off data ICs by default
https://bugs.webkit.org/show_bug.cgi?id=227334
<rdar://problem/79802812>

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/deltablue-varargs.js:
  • microbenchmarks/richards-try-catch.js:

Source/JavaScriptCore:

There are GC crashes that are caused by access data IC sharing. This
patch is both turning off data IC sharing by default, and turning off data
ICs by default.

We should re-enable this once we figure out the issue:
https://bugs.webkit.org/show_bug.cgi?id=227551

Some of our testing modes are still running with data ICs on, so the code doesn't
bit rot. And a select few tests are running with data IC sharing on, for
similar reasons, even though we know it has issues. If those tests start
crashing, we'll just disable sharing completely until the issue is resolved.

  • bytecode/PolymorphicAccess.cpp: (JSC::PolymorphicAccess::regenerate):
  • runtime/OptionsList.h:

Tools:

  • Scripts/run-jsc-stress-tests:

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

12:37 PM Changeset in webkit [279609] by Wenson Hsieh
  • 9 edits
    2 adds in trunk

[Live Text] Extraneous spaces when copying or translating Chinese and Japanese text in WebKit
https://bugs.webkit.org/show_bug.cgi?id=227674
rdar://79669807

Reviewed by Tim Horton.

Source/WebCore:

See WebKit/ChangeLog for more details.

Test: fast/images/text-recognition/image-overlay-text-without-leading-whitespace.html

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::updateWithTextRecognitionResult):

For each recognized word in text, only append a trailing newline in the text content of the text container
element if hasLeadingWhitespace is set. Drive-by fix: additionally remove logic to append a line break when
computing and applying CSS transforms to text container elements.

  • platform/TextRecognitionResult.h:

(WebCore::TextRecognitionWordData::TextRecognitionWordData):
(WebCore::TextRecognitionWordData::encode const):
(WebCore::TextRecognitionWordData::decode):

Add a per-word hasLeadingWhitespace flag.

  • testing/Internals.cpp:

(WebCore::makeDataForLine):

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

Source/WebKit:

When injecting Live Text into images, we currently assume that all pieces of recognized text from VisionKit are
separated by spaces. Upon selecting Japanese or Chinese text, this causes text selections to include extraneous
spaces between words.

To fix this, we add a bit for each TextRecognitionWordData, to indicate whether that word should be followed by
whitespace in the image overlay. When converting VKWKTextInfo into TextRecognitionWordData, we then set this bit
to true only if the word is the first on a line of text that is preceded by another line, or there exists
whitespace between the word and the previous word on the same line.

  • Platform/cocoa/TextRecognitionUtilities.mm:

(WebKit::makeTextRecognitionResult):

LayoutTests:

Add a layout test to verify that no extraneous spaces are inserted when injecting recognized text into images
without leading whitespace.

  • fast/images/text-recognition/image-overlay-text-without-leading-whitespace-expected.txt: Added.
  • fast/images/text-recognition/image-overlay-text-without-leading-whitespace.html: Added.
12:34 PM Changeset in webkit [279608] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.1-branch

Cherry-pick r279449. rdar://problem/80212104

Turn off data ICs by default
https://bugs.webkit.org/show_bug.cgi?id=227334
<rdar://problem/79802812>

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/deltablue-varargs.js:
  • microbenchmarks/richards-try-catch.js:

Source/JavaScriptCore:

There are GC crashes that are caused by access data IC sharing. This
patch is both turning off data IC sharing by default, and turning off data
ICs by default.

We should re-enable this once we figure out the issue:
https://bugs.webkit.org/show_bug.cgi?id=227551

Some of our testing modes are still running with data ICs on, so the code doesn't
bit rot. And a select few tests are running with data IC sharing on, for
similar reasons, even though we know it has issues. If those tests start
crashing, we'll just disable sharing completely until the issue is resolved.

  • bytecode/PolymorphicAccess.cpp: (JSC::PolymorphicAccess::regenerate):
  • runtime/OptionsList.h:

Tools:

  • Scripts/run-jsc-stress-tests:

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

12:34 PM Changeset in webkit [279607] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Make Caches::writeRecord and Caches::readRecord more robust
https://bugs.webkit.org/show_bug.cgi?id=221620

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

I saw null dereferenced in EWS, and everywhere else we check m_storage for null.
Some events happen during teardown. No reason to crash.

  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::Caches::writeRecord):
(WebKit::CacheStorage::Caches::readRecord):

12:33 PM Changeset in webkit [279606] by Kyle Piddington
  • 13 edits in trunk/Source/ThirdParty/ANGLE

REGRESSION (r279466): [Big Sur] webgl/1.0.3/conformance & webgl/2.0.0/conformance are failing
https://bugs.webkit.org/show_bug.cgi?id=227596
Provide Intel workaround for Big Sur systems. Atan and invariant have
issues on older systems, and require us to disable fastmath to produce correct results.

Reviewed by Kenneth Russell.

  • include/platform/FeaturesMtl.h:
  • src/compiler/translator/TranslatorMetalDirect.h:

(sh::TranslatorMetalReflection::reset):

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

(GenMetalTraverser::emitPostQualifier):
(GenMetalTraverser::visitUnary):
(GenMetalTraverser::visitAggregate):

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

(rx::DisplayMtl::initializeFeatures):

  • src/libANGLE/renderer/metal/ProgramMtl.h:

(rx::ProgramMtl::getTranslatedShaderInfo const):

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

(rx::mtl::GlslangGetMSL):

  • src/libANGLE/renderer/metal/mtl_render_utils.h:
  • src/libANGLE/renderer/metal/mtl_render_utils.mm:

(rx::mtl::TransformFeedbackUtils::createMslXfbLibrary):
(rx::mtl::TransformFeedbackUtils::getTransformFeedbackRenderPipeline):

  • src/libANGLE/renderer/metal/mtl_utils.h:
  • src/libANGLE/renderer/metal/mtl_utils.mm:

(rx::mtl::CreateShaderLibrary):

12:30 PM Changeset in webkit [279605] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.0-branch

Cherry-pick r279449. rdar://problem/80212096

Turn off data ICs by default
https://bugs.webkit.org/show_bug.cgi?id=227334
<rdar://problem/79802812>

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/deltablue-varargs.js:
  • microbenchmarks/richards-try-catch.js:

Source/JavaScriptCore:

There are GC crashes that are caused by access data IC sharing. This
patch is both turning off data IC sharing by default, and turning off data
ICs by default.

We should re-enable this once we figure out the issue:
https://bugs.webkit.org/show_bug.cgi?id=227551

Some of our testing modes are still running with data ICs on, so the code doesn't
bit rot. And a select few tests are running with data IC sharing on, for
similar reasons, even though we know it has issues. If those tests start
crashing, we'll just disable sharing completely until the issue is resolved.

  • bytecode/PolymorphicAccess.cpp: (JSC::PolymorphicAccess::regenerate):
  • runtime/OptionsList.h:

Tools:

  • Scripts/run-jsc-stress-tests:

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

12:25 PM Changeset in webkit [279604] by ysuzuki@apple.com
  • 35 edits
    3 adds in trunk

[JSC] Optimize Object.assign and putDirectInternal
https://bugs.webkit.org/show_bug.cgi?id=227677

Reviewed by Filip Pizlo.

JSTests:

  • microbenchmarks/object-assign-replace.js: Added.

(test):

  • microbenchmarks/object-assign-transition.js: Added.

(test):

Source/JavaScriptCore:

This patch improves Object.assign performance (and this requires putDirectInternal improvement).

  1. Object.assign is handled by DFG / FTL as ObjectAssign node
  2. We found that putDirectInternal is suboptimal. This patch removes several bottlenecks. They are super critical from the measurement of microbenchmarks.

2.1. Creating and destroying DeferredStructureTransitionWatchpointFire is not free. We should do that only when we need it.
2.2. Before r277620, we are checking m_replacementWatchpointSets's nullptr and that was fast. But after that, we are always

calling HashMap::get, and it is not inlined. This means that if we have StructureRareData, we are always calling HashMap::get
even though there is no m_replacementWatchpointSets set. This patch adds HashMap::isNullStorage to avoid this call by inlinely
check this via LIKELY(m_replacementWatchpointSets.isNullStorage()).

2.3. Structure::addPropertyTransitionToExistingStructure has very cheap fast path and we must inline them to get performance benefit

for major single-transition case.

Added microbenchmarks show significant performance improvements. And Speedometer2 shows 0.6 - 1.0% improvement.

ToT Patched

object-assign-transition 105.2539+-0.2970 88.8046+-0.2029 definitely 1.1852x faster
object-assign-replace 116.1568+-0.0905 75.0673+-0.0658 definitely 1.5474x faster

(JSC::DeferredWatchpointFire::fireAllSlow):
(JSC::DeferredWatchpointFire::DeferredWatchpointFire): Deleted.
(JSC::DeferredWatchpointFire::~DeferredWatchpointFire): Deleted.
(JSC::DeferredWatchpointFire::fireAll): Deleted.

  • bytecode/Watchpoint.h:

(JSC::DeferredWatchpointFire::DeferredWatchpointFire):
(JSC::DeferredWatchpointFire::fireAll):
(JSC::FireDetail::FireDetail): Deleted.
(JSC::FireDetail::~FireDetail): Deleted.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGMayExit.cpp:
  • 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::compileObjectAssign):

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

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileObjectAssign):

  • runtime/Intrinsic.cpp:

(JSC::intrinsicName):

  • runtime/Intrinsic.h:
  • runtime/JSObject.cpp:

(JSC::JSObject::deleteProperty):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::putDirectInternal):

  • runtime/ObjectConstructor.cpp:

(JSC::objectAssignGeneric):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/ObjectConstructor.h:
  • runtime/ObjectConstructorInlines.h: Added.

(JSC::canPerformFastPropertyEnumerationForObjectAssign):

  • runtime/Structure.cpp:

(JSC::StructureTransitionTable::singleTransition const): Deleted.
(JSC::StructureTransitionTable::get const): Deleted.
(JSC::Structure::addPropertyTransitionToExistingStructureImpl): Deleted.
(JSC::Structure::addPropertyTransitionToExistingStructure): Deleted.
(JSC::Structure::addPropertyTransitionToExistingStructureConcurrently): Deleted.

  • runtime/Structure.h:
  • runtime/StructureInlines.h:

(JSC::Structure::didReplaceProperty):
(JSC::Structure::propertyReplacementWatchpointSet):
(JSC::Structure::addPropertyTransitionToExistingStructureImpl):
(JSC::Structure::addPropertyTransitionToExistingStructure):
(JSC::Structure::addPropertyTransitionToExistingStructureConcurrently):
(JSC::StructureTransitionTable::singleTransition const):
(JSC::StructureTransitionTable::get const):

Source/WTF:

  • wtf/HashMap.h:
  • wtf/HashSet.h:
  • wtf/HashTable.h:

(WTF::HashTable::isNullStorage const):

12:10 PM Changeset in webkit [279603] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Add myself (Harshil Ratnu) to contributors.json
https://bugs.webkit.org/show_bug.cgi?id=227653

Patch by Harshil Ratnu <hratnu@apple.com> on 2021-07-06
Reviewed by Devin Rousso.

  • Scripts/webkitpy/common/config/contributors.json: Added myself.
12:02 PM Changeset in webkit [279602] by youenn@apple.com
  • 16 edits in trunk

Unable to use 'data:application/javascript' url for Worker
https://bugs.webkit.org/show_bug.cgi?id=225716
<rdar://problem/78222538>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/cors/data-url-worker-expected.txt:
  • web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https-expected.txt:
  • web-platform-tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin-expected.txt:
  • web-platform-tests/service-workers/service-worker/local-url-inherit-controller.https-expected.txt:
  • web-platform-tests/workers/Worker_script_mimetype-expected.txt:
  • web-platform-tests/workers/constructors/Worker/same-origin-expected.txt:
  • web-platform-tests/workers/data-url-expected.txt:
  • web-platform-tests/workers/dedicated-worker-in-data-url-context.window-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-import-data-url-cross-origin-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-import-data-url.any-expected.txt:

Source/WebCore:

As per https://fetch.spec.whatwg.org/#main-fetch step 11, same origin fetch for data URL should succeed.
Update AbstractWorker to let such URLs trigger loads and update WorkerScriptLoader to enable those loads.

Covered by rebased tests.

  • workers/AbstractWorker.cpp:

(WebCore::AbstractWorker::resolveURL):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadAsynchronously):

LayoutTests:

Some tests are showing progress but are timing out. Skipping them for now.

12:01 PM Changeset in webkit [279601] by Chris Dumez
  • 20 edits in trunk/Source/WebKit

[iOS] Have ProcessAssertion take the RunningBoard assertion asynchronously by default
https://bugs.webkit.org/show_bug.cgi?id=225324
<rdar://76972252>

Reviewed by Geoffrey Garen.

Have ProcessAssertion take the RunningBoard assertion asynchronously (on a background thread) by
default as we have evidence that doing so on the main thread is bad for performance and may
negatively impact launch time.

When constructing a ProcessAssertion, the caller can now indicate if it wants the assertion to be
taken asynchronously (default) or not. Bug 227552 is an example of a case where we still want to
take the assertion synchronously (because we're not on the main thread and we need to make sure
we have the assertion before proceeding).

The caller can also provide a completion handler that will get called once the RunningBoard is
taken. Note that the RunningBoard async API ([RBSAssertion acquireWithInvalidationHandler]) does
not provide a way for us to know when the assertion is taken. For this reason, ProcessAssertion
keeps using the RunningBoard sync API ([RBSAssertion acquireWithError:]) but calls in on a
background queue.

For the UIProcess's background task though, we don't need to know when the assertion is taken
so we can use the RunningBoard async API.

Note that the previous iteration of this patch had a bug where the ProcessThrottler would release
its previous assertion before the new one is taken (asynchronously) when changing the assertion
type (e.g. foreground to background). This is addressed in this patch. ProcessThrottler now passes
an acquisition handler when constructing the ProcessAssertion and only releases its previous
assertion once the acquisition handler for the new one is taken.

  • NetworkProcess/Downloads/DownloadMap.cpp:

(WebKit::DownloadMap::add):

  • NetworkProcess/Downloads/DownloadMap.h:
  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog):

  • UIProcess/Downloads/DownloadProxyMap.cpp:

(WebKit::DownloadProxyMap::createDownloadProxy):

  • UIProcess/Downloads/DownloadProxyMap.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::setWebProcessHasUploads):

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

(WebKit::ProcessAssertion::ProcessAssertion):

  • UIProcess/ProcessAssertion.h:

(WebKit::ProcessAssertion::create):

  • UIProcess/ProcessThrottler.cpp:

(WebKit::ProcessThrottler::setAssertionType):

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

(WebKit::WebProcessPool::updateAudibleMediaAssertions):

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

(WebKit::WebProcessProxy::updateAudibleMediaAssertions):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/ios/ProcessAssertionIOS.mm:

(assertionsWorkQueue):
(-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):
(-[WKProcessAssertionBackgroundTaskManager assertion:didInvalidateWithError:]):
(WebKit::ProcessAssertion::ProcessAssertion):
(WebKit::ProcessAssertion::acquireAsync):
(WebKit::ProcessAssertion::acquireSync):
(WebKit::ProcessAssertion::~ProcessAssertion):
(WebKit::ProcessAssertion::processAssertionWasInvalidated):
(WebKit::ProcessAssertion::isValid const):

12:00 PM Changeset in webkit [279600] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Don't interrupt database for WebResourceLoadStatisticsStore if it will not be suspended
https://bugs.webkit.org/show_bug.cgi?id=227708

Reviewed by Geoffrey Garen.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::suspend):

11:29 AM Changeset in webkit [279599] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r279597.

Broke build

Reverted changeset:

"Make Caches::writeRecord and Caches::readRecord more robust"
https://bugs.webkit.org/show_bug.cgi?id=221620
https://commits.webkit.org/r279597

10:59 AM Changeset in webkit [279598] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.3-branch/Source/JavaScriptCore

Cherry-pick r279560. rdar://problem/80212160

ActiveScratchBufferScope should take the buffer as argument
https://bugs.webkit.org/show_bug.cgi?id=227670
rdar://80011612

Reviewed by Mark Lam.

https://bugs.webkit.org/show_bug.cgi?id=227013 created ActiveScratchBufferScope.
It is used by operations that can cause the GC to run, to mark as roots the contents of the scratch buffer that is live during that time (if any).
The bug is that it simply asks the VM for a scratch buffer of the right size, but this will always return the last scratch buffer, and not necessarily the one that the operation is actually using.

A fairly simple fix is to pass it directly the scratch buffer, since the operation normally can get it easily enough.
In most cases the operation has access to the m_buffer field of the ScratchBuffer, but getting a pointer to the entire structure from that is fairly simple (I added ScratchBuffer::fromData() to do so).

  • dfg/DFGOSRExit.cpp: (JSC::DFG::JSC_DEFINE_JIT_OPERATION):
  • dfg/DFGOSRExit.h:
  • dfg/DFGOperations.cpp: (JSC::DFG::JSC_DEFINE_JIT_OPERATION):
  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileNewArray):
  • dfg/DFGThunks.cpp: (JSC::DFG::osrExitGenerationThunkGenerator):
  • runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::haveABadTime):
  • runtime/VM.h: (JSC::ScratchBuffer::fromData):
  • runtime/VMInlines.h: (JSC::ActiveScratchBufferScope::ActiveScratchBufferScope): (JSC::ActiveScratchBufferScope::~ActiveScratchBufferScope):

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

10:40 AM Changeset in webkit [279597] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Make Caches::writeRecord and Caches::readRecord more robust
https://bugs.webkit.org/show_bug.cgi?id=221620

Reviewed by Youenn Fablet.

I saw null dereferenced in EWS, and everywhere else we check m_storage for null.
Some events happen during teardown. No reason to crash.

  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::Caches::writeRecord):
(WebKit::CacheStorage::Caches::readRecord):

10:38 AM Changeset in webkit [279596] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.1-branch/Source/JavaScriptCore

Cherry-pick r279560. rdar://problem/80212179

ActiveScratchBufferScope should take the buffer as argument
https://bugs.webkit.org/show_bug.cgi?id=227670
rdar://80011612

Reviewed by Mark Lam.

https://bugs.webkit.org/show_bug.cgi?id=227013 created ActiveScratchBufferScope.
It is used by operations that can cause the GC to run, to mark as roots the contents of the scratch buffer that is live during that time (if any).
The bug is that it simply asks the VM for a scratch buffer of the right size, but this will always return the last scratch buffer, and not necessarily the one that the operation is actually using.

A fairly simple fix is to pass it directly the scratch buffer, since the operation normally can get it easily enough.
In most cases the operation has access to the m_buffer field of the ScratchBuffer, but getting a pointer to the entire structure from that is fairly simple (I added ScratchBuffer::fromData() to do so).

  • dfg/DFGOSRExit.cpp: (JSC::DFG::JSC_DEFINE_JIT_OPERATION):
  • dfg/DFGOSRExit.h:
  • dfg/DFGOperations.cpp: (JSC::DFG::JSC_DEFINE_JIT_OPERATION):
  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileNewArray):
  • dfg/DFGThunks.cpp: (JSC::DFG::osrExitGenerationThunkGenerator):
  • runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::haveABadTime):
  • runtime/VM.h: (JSC::ScratchBuffer::fromData):
  • runtime/VMInlines.h: (JSC::ActiveScratchBufferScope::ActiveScratchBufferScope): (JSC::ActiveScratchBufferScope::~ActiveScratchBufferScope):

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

10:34 AM Changeset in webkit [279595] by achristensen@apple.com
  • 15 edits in trunk

loadSimulatedRequest: should do same delegate callbacks as loadHTMLString and loadData
https://bugs.webkit.org/show_bug.cgi?id=227599

Reviewed by Chris Dumez.

Source/WebCore:

  • loader/SubstituteData.h:

Source/WebKit:

Share more code with loadData and loadHTMLString to prevent such errors.

Before this change we set SubstituteData.failingURL, which in FrameLoader::PolicyChecker::checkNavigationPolicy
makes it behave more like _loadAlternateHTMLString which doesn't call decidePolicyForNavigationAction and does
add a back/forward entry. We want it to behave more like loadHTMLString, which does call decidePolicyForNavigationAction
and doesn't add a back/forward entry. Except we do want it to add a back/forward entry. This patch is to accomplish that.

In order to continue making a back/forward list item with loadSimulatedRequest, we need to use
WebCore::SubstituteData::SessionHistoryVisibility::Visible for its calls and also API::SubstituteData
needs to remember that we initially used that for when we go back to a back/forward list item from
that data. In order to keep binary compatibility with existing apps, loadData and loadHTMLString
need to continue using WebCore::SubstituteData::SessionHistoryVisibility::Hidden.

Covered by existing and new API tests.

  • Shared/LoadParameters.cpp:

(WebKit::LoadParameters::encode const):
(WebKit::LoadParameters::decode):

  • Shared/LoadParameters.h:
  • UIProcess/API/APINavigation.cpp:

(API::SubstituteData::SubstituteData):

  • UIProcess/API/APINavigation.h:

(API::SubstituteData::SubstituteData):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::loadData):

  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::loadDataWithNavigationShared):
(WebKit::WebPageProxy::loadSimulatedRequest):
(WebKit::WebPageProxy::continueNavigationInNewProcess):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadDataImpl):
(WebKit::WebPage::loadData):
(WebKit::WebPage::loadAlternateHTML):
(WebKit::WebPage::loadSimulatedRequestAndResponse):

  • WebProcess/WebPage/WebPage.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewLoadAPIs.mm:

(TEST):

10:32 AM Changeset in webkit [279594] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Add assertions in LayerPool to help debug <rdar://80184576>
https://bugs.webkit.org/show_bug.cgi?id=227710

Reviewed by Simon Fraser.

  • platform/graphics/ca/LayerPool.cpp:

(WebCore::LayerPool::LayerPool):
(WebCore::LayerPool::~LayerPool):
(WebCore::LayerPool::addLayer):
(WebCore::LayerPool::takeLayerWithSize):
(WebCore::LayerPool::pruneTimerFired):
(WebCore::LayerPool::drain):

  • platform/graphics/ca/LayerPool.h:
10:29 AM Changeset in webkit [279593] by commit-queue@webkit.org
  • 5 edits in trunk/Source/JavaScriptCore

Fix instruction check failure of UBFX and SBFIZ in testb3 due to the speculative fix in bug 227554
https://bugs.webkit.org/show_bug.cgi?id=227563

Patch by Yijia Huang <Yijia Huang> on 2021-07-06
Reviewed by Filip Pizlo.

This patch includes two modifications to resolve rdar://79978150:

  1. Fix the bug caused by the patch introducing BFI.
  2. Discard the corresponding speculative fix in https://bugs.webkit.org/show_bug.cgi?id=227554.

The previous patch, added bit field insert (BFI) to AIR opcode, causes the Gmail page
hanging issue on Safari. The root cause is the incorrect definition of register role in
BFI's AIR opcode. Since BFI inserts a bit field at the low end of the destination register
while keeping the high bit unchanged, the destination register should have both roles of
use and define simultaneously, which is not (missing use) in the previous patch.

This will result in the loss of preserving the value of the destination register,
which does happen when browsing the Gmail page on Safari.

B3 IR snippets from Gmail
Int32 b@23 = Add(b@104, b@111, D@100)
...
Int32 b@55 = Const32(65535, D@50)
Int32 b@137 = BitAnd(b@118, $65535(b@55), D@160)
Int32 b@168 = Const32(16, D@40)
Int32 b@141 = Shl(b@137, $16(b@168), D@163)
Int32 b@143 = BitAnd(b@23, $65535(b@55), D@166)
Int32 b@144 = BitOr(b@141, b@143, D@169)

The pattern of BFI is d = ((n & mask1) << lsb) | (d & mask2). So, it is obvious that
BFI can be utilized in b@144 where the d is b@23.

Incorrect AIR opcode of BFI
arm64: InsertBitField32 U:G:32, U:G:32, U:G:32, ZD:G:32

Tmp, Imm, Imm, Tmp

Air w/o use role
Add32 %x3, %x7, %x7, b@23
...
InsertBitField32 %x3, $16, $16, %x4, b@144

Generated code w/o use role
add w7, w3, w7
...
bfi w4, w3, #16, #16

In Air, the added value is stored in the w7. But the value is not preserved after
lowering with BFI. To fix this, the use role should be enabled for the destination
register.

Correnct AIR opcode of BFI
arm64: InsertBitField32 U:G:32, U:G:32, U:G:32, UZD:G:32

Tmp, Imm, Imm, Tmp

Air w/ use role
Add32 %x3, %x7, %x7, b@23
...
Move32 %x7, %x4, b@144
InsertBitField32 %x3, $16, $16, %x4, b@144

Generated code w/ use role
add w7, w3, w7
...
ubfx x4, x7, #0, #32
bfi w4, w3, #16, #16

In addition, BFXIL, which has pattern d = ((n >> lsb) & mask1) | (d & mask2), also needs
the similar update.

  • b3/B3LowerToAir.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/testb3_2.cpp:

(testInsertBitField32):
(testInsertBitField64):
(testExtractInsertBitfieldAtLowEnd32):
(testExtractInsertBitfieldAtLowEnd64):

  • runtime/OptionsList.h:
10:26 AM Changeset in webkit [279592] by Russell Epstein
  • 1 copy in tags/Safari-611.3.10.1.4

Tag Safari-611.3.10.1.4.

10:25 AM Changeset in webkit [279591] by pvollan@apple.com
  • 9 edits in trunk/Source/WebKit

Collect Accessibility preferences on a background queue
https://bugs.webkit.org/show_bug.cgi?id=227617
<rdar://80055168>

Reviewed by Brent Fulgham.

To avoid blocking the main thread of the UI process, collect Media Accessibility preferences on a background thread,
and send them to the WebContent process(es).

  • Shared/AccessibilityPreferences.cpp:

(IPC::ArgumentCoder<WebKit::AccessibilityPreferences>::encode):
(IPC::ArgumentCoder<WebKit::AccessibilityPreferences>::decode):

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

(WebKit::accessibilityPreferences):
(WebKit::WebProcessPool::setMediaAccessibilityPreferences):
(WebKit::WebProcessPool::mediaAccessibilityPreferencesChangedCallback):
(WebKit::WebProcessPool::registerNotificationObservers):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

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

(WebKit::WebProcess::accessibilityPreferencesDidChange):
(WebKit::WebProcess::setMediaAccessibilityPreferences):

10:24 AM Changeset in webkit [279590] by Russell Epstein
  • 8 edits in branches/safari-611.3.10.1-branch/Source

Versioning.

WebKit-7611.3.10.1.4

10:20 AM Changeset in webkit [279589] by Russell Epstein
  • 8 edits in branches/safari-611.3.10.0-branch/Source

Revert "Versioning."

This reverts commit r279588.

10:15 AM Changeset in webkit [279588] by Russell Epstein
  • 8 edits in branches/safari-611.3.10.0-branch/Source

Versioning.

WebKit-7611.3.10.1.4

10:05 AM Changeset in webkit [279587] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.0-branch/Source/JavaScriptCore

Cherry-pick r279560. rdar://problem/80212171

ActiveScratchBufferScope should take the buffer as argument
https://bugs.webkit.org/show_bug.cgi?id=227670
rdar://80011612

Reviewed by Mark Lam.

https://bugs.webkit.org/show_bug.cgi?id=227013 created ActiveScratchBufferScope.
It is used by operations that can cause the GC to run, to mark as roots the contents of the scratch buffer that is live during that time (if any).
The bug is that it simply asks the VM for a scratch buffer of the right size, but this will always return the last scratch buffer, and not necessarily the one that the operation is actually using.

A fairly simple fix is to pass it directly the scratch buffer, since the operation normally can get it easily enough.
In most cases the operation has access to the m_buffer field of the ScratchBuffer, but getting a pointer to the entire structure from that is fairly simple (I added ScratchBuffer::fromData() to do so).

  • dfg/DFGOSRExit.cpp: (JSC::DFG::JSC_DEFINE_JIT_OPERATION):
  • dfg/DFGOSRExit.h:
  • dfg/DFGOperations.cpp: (JSC::DFG::JSC_DEFINE_JIT_OPERATION):
  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileNewArray):
  • dfg/DFGThunks.cpp: (JSC::DFG::osrExitGenerationThunkGenerator):
  • runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::haveABadTime):
  • runtime/VM.h: (JSC::ScratchBuffer::fromData):
  • runtime/VMInlines.h: (JSC::ActiveScratchBufferScope::ActiveScratchBufferScope): (JSC::ActiveScratchBufferScope::~ActiveScratchBufferScope):

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

10:04 AM Changeset in webkit [279586] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[BigSur E Wk2 Release] imported/w3c/web-platform-tests/webrtc/RTCRtpSender-encode-same-track-twice.https.html in flaky failure
https://bugs.webkit.org/show_bug.cgi?id=226054

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-06

  • platform/mac-wk2/TestExpectations:
9:27 AM Changeset in webkit [279585] by Chris Dumez
  • 18 edits
    181 adds in trunk/LayoutTests

Resync cookies web-platform-tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227641

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Resync cookies web-platform-tests from upstream 2c19d6ee62676ac90146.

  • resources/import-expectations.json:
  • web-platform-tests/cookies/*: Updated.

LayoutTests:

9:02 AM Changeset in webkit [279584] by youenn@apple.com
  • 6 edits in trunk/Source/WebKit

REGRESSION: [iOS] ASSERTION FAILED: !m_messageReceiverMapCount under WebKit::RemoteRemoteCommandListener::~RemoteRemoteCommandListener()
https://bugs.webkit.org/show_bug.cgi?id=226248
<rdar://problem/78481758>

Reviewed by Eric Carlson.

Make sure to remove message receiver on the same gpu process connection it was added.
Also make sure to recreate remote command listener every time we use a new connection.
Do the same thing for RemoteAudioHardwareListener.
Also make sure to remove message receiver in RemoteRenderingBackendProxy::gpuProcessConnectionDidClose

Covered by existing tests.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::gpuProcessConnectionDidClose):

  • WebProcess/GPU/media/RemoteAudioHardwareListener.cpp:

(WebKit::RemoteAudioHardwareListener::RemoteAudioHardwareListener):
(WebKit::RemoteAudioHardwareListener::~RemoteAudioHardwareListener):

  • WebProcess/GPU/media/RemoteAudioHardwareListener.h:
  • WebProcess/GPU/media/RemoteRemoteCommandListener.cpp:

(WebKit::RemoteRemoteCommandListener::RemoteRemoteCommandListener):
(WebKit::RemoteRemoteCommandListener::~RemoteRemoteCommandListener):
(WebKit::RemoteRemoteCommandListener::ensureGPUProcessConnection):
(WebKit::RemoteRemoteCommandListener::gpuProcessConnectionDidClose):
(WebKit::RemoteRemoteCommandListener::updateSupportedCommands):

  • WebProcess/GPU/media/RemoteRemoteCommandListener.h:
9:00 AM Changeset in webkit [279583] by Chris Dumez
  • 10 edits in trunk/Source

Unreviewed, reverting r279495.

Seems to have caused a ~2% PLT5 regression

Reverted changeset:

"[macOS] Suspend WebProcesses that are in the process cache"
https://bugs.webkit.org/show_bug.cgi?id=227269
https://commits.webkit.org/r279495

8:17 AM Changeset in webkit [279582] by youenn@apple.com
  • 7 edits in trunk

Remove MediaStreamTrack.onconstrainederror
https://bugs.webkit.org/show_bug.cgi?id=227696

Reviewed by Eric Carlson.

Source/WebCore:

Covered by updated tests.

  • Modules/mediastream/MediaStreamTrack.idl:
  • dom/EventNames.h:

Remove never used/deprecated event handler.

LayoutTests:

  • fast/mediastream/MediaStreamTrack-clone-expected.txt:
  • fast/mediastream/MediaStreamTrack-clone.html:
  • fast/mediastream/MediaStreamTrack.html:
7:54 AM Changeset in webkit [279581] by Antti Koivisto
  • 7 edits
    10 adds in trunk/LayoutTests

Import basic :has() tests
https://bugs.webkit.org/show_bug.cgi?id=227703

Reviewed by Alan Bujtas.

Along with some other updates to css/selectors.

  • web-platform-tests/css/selectors/focus-visible-022.tentative-expected.txt: Added.
  • web-platform-tests/css/selectors/focus-visible-022.tentative.html: Added.
  • web-platform-tests/css/selectors/has-basic-expected.txt: Added.
  • web-platform-tests/css/selectors/has-basic.html: Added.
  • web-platform-tests/css/selectors/has-relative-argument-expected.txt: Added.
  • web-platform-tests/css/selectors/has-relative-argument.html: Added.
  • web-platform-tests/css/selectors/is-where-parsing-expected.txt:
  • web-platform-tests/css/selectors/is-where-parsing.html:
  • web-platform-tests/css/selectors/parsing/parse-has-expected.txt: Added.
  • web-platform-tests/css/selectors/parsing/parse-has.html: Added.
  • web-platform-tests/css/selectors/parsing/w3c-import.log:
  • web-platform-tests/css/selectors/user-invalid.html:
  • web-platform-tests/css/selectors/user-valid-expected.txt: Added.
  • web-platform-tests/css/selectors/user-valid.html: Added.
  • web-platform-tests/css/selectors/w3c-import.log:
4:10 AM Changeset in webkit [279580] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK4] Navigation swipe doesn't work when the page scrolls horizontally
https://bugs.webkit.org/show_bug.cgi?id=226173

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-06
Reviewed by Michael Catanzaro.

There was a chunk of code that was never ported to GTK4. Port it.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore):

1:02 AM Changeset in webkit [279579] by youenn@apple.com
  • 5 edits in trunk/Source/WebCore

Set kVTCompressionPropertyKey_MaxKeyFrameInterval in VideoSampleBufferCompressor
https://bugs.webkit.org/show_bug.cgi?id=227680
<rdar://78027782>

Reviewed by Eric Carlson.

Source/WebCore:

Set kVTCompressionPropertyKey_MaxKeyFrameInterval in addition to kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration.
Manually tested.

  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:

(WebCore::VideoSampleBufferCompressor::initCompressionSession):

Source/WebCore/PAL:

  • pal/cf/VideoToolboxSoftLink.cpp:
  • pal/cf/VideoToolboxSoftLink.h:
12:55 AM Changeset in webkit [279578] by youenn@apple.com
  • 5 edits in trunk/Source/WebKit

NetworkRTCUDPSocketCocoa should update the port of its m_address field
https://bugs.webkit.org/show_bug.cgi?id=227622

Reviewed by Eric Carlson.

Make sure we set the port to m_address field as this is used for setting up nw_connections.
Then notify WebProcess to proceed. This will ensure that we create a nw_connection with the right listening port.
Also fix the value given to nw_parameters_set_is_third_party_web_content.

Set local address reuse to true with nw_parameters_set_reuse_local_address so that listeners and connections can share the same address and port.
This does not always work so, we temporarily resort to use a 0 port instead of m_address.port() when setting up nw_connections.

Manually tested.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::doSocketTaskOnRTCNetworkThread):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:
  • NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.h:
  • NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.mm:

(WebKit::NetworkRTCUDPSocketCocoa::setListeningPort):
(WebKit::NetworkRTCUDPSocketCocoaConnections::NetworkRTCUDPSocketCocoaConnections):
(WebKit::NetworkRTCUDPSocketCocoaConnections::setListeningPort):

12:54 AM Changeset in webkit [279577] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

UserMediaCaptureManagerProxy::SourceProxy destructor should remove itself as observer before invalidating its ring buffer storage
https://bugs.webkit.org/show_bug.cgi?id=227683

Reviewed by Eric Carlson.

Covered by existing tests.

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::SourceProxy::~SourceProxy):
Previously, we were invalidating the ring buffer storage before removing the source proxy as audio observer.
This created the risk for the ring buffer to be recreated before the end of SourceProxy destructor.
To fix this, we invalidate the storage just after stopping observing.

12:48 AM Changeset in webkit [279576] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[curl][Win] very high CPU load on page with WebSocket
https://bugs.webkit.org/show_bug.cgi?id=227428
<rdar://problem/80150503>

Reviewed by Don Olmstead.

curl_socket_t is UINT_PTR on Windows while it is int on other
platforms. CurlStream::appendMonitoringFd was failing to update
maxfd because the following condition can't be true on Windows.

if (maxfd < *socket)

maxfd = *socket;

As the result, ::select was not called, and CurlStreamScheduler's
thread ran busy.

  • platform/network/curl/CurlStream.cpp:

(WebCore::CurlStream::appendMonitoringFd): Added static_cast.

12:44 AM Changeset in webkit [279575] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[curl][Win] wss: WebSocket doesn't work since r271170
https://bugs.webkit.org/show_bug.cgi?id=227694

Reviewed by Don Olmstead.

r271170 started to use CURLSSLOPT_NATIVE_CA for https for Windows.
However, I forgot to set the flag to WebSocket curl handles.

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::enableSSLForHost):
(WebCore::CurlHandle::enableHttp):

Jul 5, 2021:

10:45 PM Changeset in webkit [279574] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit

[GTK] Navigation swipe gesture can be triggered with mouse
https://bugs.webkit.org/show_bug.cgi?id=227678

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-05
Reviewed by Carlos Garcia Campos.

Originally, the navigation swipe gesture had a few checks to only make it possible to
trigger it with a touchpad or touchscreen, with an exception for simulated swipes
where we couldn't set the source easily.

During the rewrite in https://bugs.webkit.org/show_bug.cgi?id=212324, the check got
dropped, but it has a good reason to be there: not all devices are capable of
performing a gesture. Touchpads and touchscreens should be fine, trackpoints are
finicky, though can still technically work, but mouse are a no-go. While they can
start a swipe, they will never end it and the gesture will get stuck.

So, add the check back. Don't bother with the scroll direction this time though, while
that check made sense when it got added, at some point since then all scroll events
had GDK_SCROLL_SMOOTH direction and just set their deltas to (1, 0), (-1, 0), (0, 1)
or (0, -1), so that check stopped working, and the source type check should filter
mouse events anyway.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore):

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseHandleWheelEvent):
(webkitWebViewBaseScroll):
(webkitWebViewBaseTouchDragUpdate):
(webkitWebViewBaseTouchDragEnd):

  • UIProcess/ViewGestureController.h:
  • UIProcess/gtk/ViewGestureControllerGtk.cpp:

(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe):
(WebKit::isTouchEvent):
(WebKit::ViewGestureController::beginSimulatedSwipeInDirectionForTesting):
(WebKit::ViewGestureController::completeSimulatedSwipeInDirectionForTesting):

5:56 PM Changeset in webkit [279573] by Wenson Hsieh
  • 3 edits
    2 adds in trunk

Live Text should not be visible in video thumbnail images behind "Skip Ad" button on YouTube
https://bugs.webkit.org/show_bug.cgi?id=227692

Reviewed by Darin Adler.

Source/WebCore:

Force text-shadow: none; for image overlay text, such that Live Text injected into image elements isn't
visible to the user when the containing image element has a text shadow.

Test: fast/images/text-recognition/image-overlay-with-text-shadow.html

  • html/shadow/imageOverlay.css:

(div#image-overlay):

LayoutTests:

Add a new layout test to verify that specifying text-shadow on image elements does not cause Live Text to
become visible.

  • fast/images/text-recognition/image-overlay-with-text-shadow-expected.html: Added.
  • fast/images/text-recognition/image-overlay-with-text-shadow.html: Added.
3:54 PM Changeset in webkit [279572] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

[LFC][IFC] Test garderning for overflow-wrap:anywhere
https://bugs.webkit.org/show_bug.cgi?id=227689

Unreviewed.

with IFC. Also use ImageOnlyFailure instead so that we can see progressions.

2:15 PM Changeset in webkit [279571] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

[GTK] Kinetic scrolling interferes with gestures
https://bugs.webkit.org/show_bug.cgi?id=226680

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-05
Reviewed by Michael Catanzaro.

Simulate scroll events that would stop scrolling when we're starting any touch
gesture. Since we don't have a way to do that on touchpad yet, just stop it when
starting a zoom or a navigation swipe gesture instead.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::navigationGestureDidBegin):

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseZoomBegin):
(webkitWebViewBaseTouchDragBegin):
(webkitWebViewBaseConstructed):

1:59 PM Changeset in webkit [279570] by Cameron McCormack
  • 7 edits
    21 deletes in trunk/LayoutTests

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

Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

  • web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining-expected.txt:
  • web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt:

Make the macOS expectation file the default for these tests.

LayoutTests:

This should make it so that the same test expectation files are used
for Monterey as for Big Sur, without needing to add Monterey-specific
files.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:

Re-enable border-002.html.

  • platform/mac-wk1/TestExpectations:

Re-enable displaystyle-013.html and displaystyle-014.html.

  • platform/ios-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining-expected.txt: Removed.
  • platform/ios-wk2/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt: Removed.
  • platform/ios/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt: Removed.
  • platform/mac-bigsur-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-minsize-maxsize-001-expected.txt: Removed.
  • platform/mac-bigsur-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining-expected.txt: Removed.
  • platform/mac-bigsur-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001-expected.txt: Removed.
  • platform/mac-bigsur-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-002-expected.txt: Removed.
  • platform/mac-bigsur-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001-expected.txt: Removed.
  • platform/mac-bigsur-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-005-expected.txt: Removed.
  • platform/mac-bigsur-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006-expected.txt: Removed.
  • platform/mac-bigsur-wk1/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-minsize-maxsize-001-expected.txt: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001-expected.txt: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-002-expected.txt: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001-expected.txt: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-005-expected.txt: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006-expected.txt: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt: Removed.
  • platform/mac-wk2/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining-expected.txt: Removed.
  • platform/mac-wk2/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt: Removed.
  • platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt: Removed.
11:04 AM Changeset in webkit [279569] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[GTK] Installs in wrong directory on the bots
https://bugs.webkit.org/show_bug.cgi?id=227684

Patch by Philippe Normand <pnormand@igalia.com> on 2021-07-05
Reviewed by Aakash Jain.

The patch landed in r279563 induced a typo in the installation prefix path option passed to
build-webkit. Then the built-product-archive was failing to find the header andn pkgconfig
files to pack. This patch fixes the issue.

  • CISupport/build-webkit-org/steps.py:

(CompileWebKit.start):

  • CISupport/build-webkit-org/steps_unittest.py:

(TestCompileWebKit.test_success_gtk):

7:52 AM Changeset in webkit [279568] by Alan Bujtas
  • 4 edits in trunk

[LFC][IFC] Add support for conditionally hanging glyph
https://bugs.webkit.org/show_bug.cgi?id=227676

Reviewed by Antti Koivisto.

Source/WebCore:

When a glyph at the end edge of a line hangs, it is not considered when measuring the line’s contents alignment.
If white-space is set to pre-wrap, the UA must (unconditionally) hang the trailing sequence,
unless the sequence is followed by a forced line break, in which case it must conditionally hang the sequence instead
(hang only if it does not otherwise fit in the line prior to justification).
e.g.
<div style="white-space: pre-wrap; width: 5ch; text-align: center"> 0 </p>
We center the _0_ content as the trailing whitespace does not hang here.

  • layout/formattingContexts/inline/InlineFormattingGeometry.cpp:

(WebCore::Layout::hangingGlyphWidth): No need for the struct. We can handle it by returning the hanging content width.
(WebCore::Layout::horizontalAlignmentOffset):
(WebCore::Layout::HangingTrailingWhitespaceContent::width const): Deleted.
(WebCore::Layout::HangingTrailingWhitespaceContent::isConditional const): Deleted.
(WebCore::Layout::HangingTrailingWhitespaceContent::setIsConditional): Deleted.
(WebCore::Layout::HangingTrailingWhitespaceContent::expand): Deleted.
(WebCore::Layout::HangingTrailingWhitespaceContent::reset): Deleted.
(WebCore::Layout::collectHangingTrailingWhitespaceContent): Deleted.

LayoutTests:

7:34 AM Changeset in webkit [279567] by Alexey Shvayka
  • 8 edits in trunk

Use AbortSignal's [PrivateIdentifier] whenSignalAborted() static method
https://bugs.webkit.org/show_bug.cgi?id=227673

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/streams/piping/abort.any-expected.txt:
  • web-platform-tests/streams/piping/abort.any.worker-expected.txt:
  • web-platform-tests/streams/piping/pipe-through.any-expected.txt:
  • web-platform-tests/streams/piping/pipe-through.any.worker-expected.txt:

Source/WebCore:

Enabled by refactoring in r279546, this change removes handcrafted @whenSignalAborted()
global function in favor of using equivalent generated [PrivateIdentifier] static method.

The generated method checks its arguments more strictly (as per WebIDL spec):
a TypeError is thrown for invalid AbortSignal argument, which progresses the WPT.

Test: imported/w3c/web-platform-tests/streams/piping/pipe-through.any.js

  • Modules/streams/ReadableStreamInternals.js:

(readableStreamPipeToWritableStream):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::addBuiltinGlobals):

4:48 AM Changeset in webkit [279566] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[Media] test-webvtt.m3u8 is invalid
https://bugs.webkit.org/show_bug.cgi?id=227681

Patch by Philippe Normand <pnormand@igalia.com> on 2021-07-05
Reviewed by Xabier Rodriguez-Calvar.

This issue was detected by the GStreamer m3u8 parser.

  • http/tests/media/resources/hls/test-webvtt.m3u8:
2:58 AM Changeset in webkit [279565] by Philippe Normand
  • 2 edits in trunk/LayoutTests

Unreviewed, GLIB gardening triaging.

  • platform/glib/TestExpectations:
2:21 AM Changeset in webkit [279564] by Martin Robinson
  • 7 edits
    2 adds in trunk

[css-scroll-snap] Triggering a layout during scroll causes jittery scrolling on Mac when dragging the scrollbar
https://bugs.webkit.org/show_bug.cgi?id=227478

Reviewed by Simon Fraser.

Source/WebCore:

When dragging the scrollbar thumb, wait to resnap after layout for a
given axis until the mouse button is up on the scrollbar. This prevents
the layout and the scrollbar from fighting to set the scroll position
which causes some pretty terrible jitter in this case.

Test: css3/scroll-snap/scroll-snap-drag-scrollbar-thumb-with-relayouts.html

  • platform/ScrollAnimationSmooth.cpp:

(WebCore::ScrollAnimationSmooth::updatePerAxisData): Fix an issue where the new position
was calculated incorrectly. This did not cause the animation to land on the wrong place,
but did cause a very janky animation progression when retriggering animations to the
same location.

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::retargetRunningAnimation): Added this helper, which retargets a
a running animation to allow for a smooth transition during relayouts.

  • platform/ScrollAnimator.h: Added new method definition.
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::resnapAfterLayout): Only snap after layout when the user is not
currently interacting with the scrollbar. Once the scrollbar isn't being interacted with,
snapping will occur already. When there is already some sort of animation in progress,
smoothly transition that animation to land on the new position instead of snapping there
immediately.

LayoutTests:

  • css3/scroll-snap/scroll-snap-drag-scrollbar-thumb-with-relayouts-expected.txt: Added.
  • css3/scroll-snap/scroll-snap-drag-scrollbar-thumb-with-relayouts.html: Added.
  • platform/ios/TestExpectations: Skip this test on iOS since it uses a scrollbar thumb drag.
1:25 AM Changeset in webkit [279563] by commit-queue@webkit.org
  • 9 edits
    1 add in trunk/Tools

[GTK] Pack header and .pc files in the built-product archive
https://bugs.webkit.org/show_bug.cgi?id=227526

Patch by Philippe Normand <pnormand@igalia.com> on 2021-07-05
Reviewed by Michael Catanzaro.

The header files and pkg-config files needed to build WebKitGTK apps are now included in the
built product zip file. As they're text files the impact on the zip size should not be
significant. In order to support this, two changes are introduced for the GTK build bot:

  • build-webkit is now called with a --prefix option
  • a new build step has been added, which installs the built files in the given prefix directory

Then built-product-archive can simply pack files from the install prefix directory.

Additionally the .a (potentially big) files are now excluded from the zip archive.

  • CISupport/build-webkit-org/factories.py:

(BuildFactory.init):

  • CISupport/build-webkit-org/steps.py:

(CompileWebKit.start):
(InstallBuiltProduct):

  • CISupport/built-product-archive:
  • Scripts/install-built-product: Added.

Jul 4, 2021:

10:54 PM Changeset in webkit [279562] by Wenson Hsieh
  • 36 edits
    2 adds in trunk

[iOS] Augment -_webView:didNotHandleTapAsMeaningfulClickAtPoint: to include meaningful taps
https://bugs.webkit.org/show_bug.cgi?id=227666
rdar://80094962

Reviewed by Tim Horton.

Source/WebKit:

The private UI delegate method -_webView:didNotHandleTapAsMeaningfulClickAtPoint: is currently only invoked
when a tap was not handled as a "meaningful" synthetic click (where the notion of "meaningful" is heuristically
determined). However, in order to support revised tab pill minimization behaviors, Safari requires knowledge of
taps that were handled as meaningful clicks as well.

To support this, replace what is currently -_webView:didNotHandleTapAsMeaningfulClickAtPoint: with another
delegate method, -_webView:didTapAtPoint:withResult:, that is always invoked when a tap gesture is recognized
in the web view. The result parameter, a new _WKTapHandlingResult enum, then indicates to the client how the
tap was handled; this currently includes 3 values: one to indicate that the tap gesture did not result in a
synthetic click being dispatched, and two more to indicate whether the synthetic click that was dispatched as a
result of the tap was "meaningfully" handled.

To facilitate the transition from -_webView:didNotHandleTapAsMeaningfulClickAtPoint: to the new SPI, we still
call the old SPI as long as the tap handling result type is not equal to TapHandlingResult::MeaningfulClick;
however, mark the old SPI as deprecated with -_webView:didTapAtPoint:withResult: as the replacement.

Tests: fast/events/ios/did-not-handle-meaningful-click.html

fast/events/ios/meaningful-click-when-focusing-body.html
fast/events/ios/meaningful-click-when-playing-media.html
fast/events/ios/non-meaningful-click-when-tapping-document.html

  • Shared/ios/TapHandlingResult.h: Added.

Add a new C++ enum type to represent the tap handling result type (see description above).

  • UIProcess/API/APIUIClient.h:

(API::UIClient::didTapAtPoint):
(API::UIClient::didNotHandleTapAsMeaningfulClickAtPoint): Deleted.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/API/Cocoa/_WKTapHandlingResult.h: Added.
  • UIProcess/API/ios/WKWebViewIOS.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(wkTapHandlingResult):

Add a helper method to convert from the WebKit::TapHandlingResult enum to the SPI-exposed _WKTapHandlingResult.

  • UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
  • UIProcess/API/ios/WKWebViewTestingIOS.mm:

(-[WKWebView _didTapAtPoint:withResult:]):
(-[WKWebView _didNotHandleTapAsMeaningfulClickAtPoint:]): Deleted.

  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::didTapAtPoint):

Note that we still invoke the old UI delegate SPI here to ensure that these changes don't break Safari before
they have a chance to adopt the new SPI.

(WebKit::UIDelegate::UIClient::didNotHandleTapAsMeaningfulClickAtPoint): Deleted.

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:

Replace the DidNotHandleTapAsMeaningfulClickAtPoint message with DidTapAtPoint, which takes both a location
and a flag indicating how the tap was handled by web content.

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

(WebKit::PageClientImpl::didTapAtPoint):
(WebKit::PageClientImpl::didNotHandleTapAsMeaningfulClickAtPoint): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didTapAtPoint):
(WebKit::WebPageProxy::didNotHandleTapAsMeaningfulClickAtPoint): Deleted.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::completeSyntheticClick):

The meaningful tap heuristic no longer determines whether we send an IPC message or not, but rather the type of
TapHandlingResult to send (namely, whether to send NonMeaningfulClick or MeaningfulClick).

(WebKit::WebPage::attemptSyntheticClick):
(WebKit::WebPage::handleTwoFingerTapAtPoint):
(WebKit::WebPage::commitPotentialTapFailed):

Tools:

Update the layout test harness to use the replacement SPI instead of the newly deprecated SPI. See
WebKit/ChangeLog for more details.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::installDidHandleTapCallback):
(WTR::TestRunner::callDidHandleTapCallback):
(WTR::TestRunner::installDidNotHandleTapAsMeaningfulClickCallback): Deleted.
(WTR::TestRunner::callDidNotHandleTapAsMeaningfulClickCallback): Deleted.

Rename this to just DidHandleTapCallback, and make it take a boolean argument indicating whether the tap was
handled as a meaningful click.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::didHandleTap):
(WTR::TestController::didNotHandleTapAsMeaningfulClick): Deleted.

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didHandleTap):
(WTR::TestInvocation::didNotHandleTapAsMeaningfulClick): Deleted.

  • WebKitTestRunner/TestInvocation.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView _didTapAtPoint:withResult:]):
(-[TestRunnerWKWebView _didNotHandleTapAsMeaningfulClickAtPoint:]): Deleted.

LayoutTests:

Update the existing layout tests. The new UI delegate method should now be invoked in all of the cases; however,
we should only observe meaningful clicks in some of the below scenarios. See WebKit/ChangeLog for more details.

  • fast/events/ios/did-not-handle-meaningful-click-expected.txt:
  • fast/events/ios/did-not-handle-meaningful-click.html:
  • fast/events/ios/meaningful-click-when-focusing-body-expected.txt:
  • fast/events/ios/meaningful-click-when-focusing-body.html:
  • fast/events/ios/meaningful-click-when-playing-media-expected.txt:
  • fast/events/ios/meaningful-click-when-playing-media.html:
  • fast/events/ios/non-meaningful-click-when-tapping-document-expected.txt:
  • fast/events/ios/non-meaningful-click-when-tapping-document.html:
8:18 PM Changeset in webkit [279561] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

[LFC][IFC] WPT progressions
https://bugs.webkit.org/show_bug.cgi?id=227675

Unreviewed.

4:55 PM Changeset in webkit [279560] by rmorisset@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

ActiveScratchBufferScope should take the buffer as argument
https://bugs.webkit.org/show_bug.cgi?id=227670
rdar://80011612

Reviewed by Mark Lam.

https://bugs.webkit.org/show_bug.cgi?id=227013 created ActiveScratchBufferScope.
It is used by operations that can cause the GC to run, to mark as roots the contents of the scratch buffer that is live during that time (if any).
The bug is that it simply asks the VM for a scratch buffer of the right size, but this will always return the last scratch buffer, and not necessarily the one that the operation is actually using.

A fairly simple fix is to pass it directly the scratch buffer, since the operation normally can get it easily enough.
In most cases the operation has access to the m_buffer field of the ScratchBuffer, but getting a pointer to the entire structure from that is fairly simple (I added ScratchBuffer::fromData() to do so).

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGOSRExit.h:
  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewArray):

  • dfg/DFGThunks.cpp:

(JSC::DFG::osrExitGenerationThunkGenerator):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::haveABadTime):

  • runtime/VM.h:

(JSC::ScratchBuffer::fromData):

  • runtime/VMInlines.h:

(JSC::ActiveScratchBufferScope::ActiveScratchBufferScope):
(JSC::ActiveScratchBufferScope::~ActiveScratchBufferScope):

2:06 PM Changeset in webkit [279559] by Ben Nham
  • 2 edits in trunk/Tools

Add support for parsing Competitive PLT results to compare-results
https://bugs.webkit.org/show_bug.cgi?id=227470

Reviewed by Per Arne Vollan.

Modify the script to understand the competitive PLT JSON results produced by the perf bots.

  • Scripts/compare-results:

(plt5Breakdown):
(competitivePLTBreakdown):
(PLT5Results):
(detectCompetitivePLT):
(CompetitivePLTResults):
(CompetitivePLTResults.calculate_time_for_run):
(detectBenchmark):
(biggerIsBetter):
(main):

12:18 PM Changeset in webkit [279558] by Alexey Shvayka
  • 14 edits in trunk/Source

[WebIDL] Simplify generation of runtime conditionally read-write attributes
https://bugs.webkit.org/show_bug.cgi?id=227672

Reviewed by Sam Weinig.

Source/JavaScriptCore:

  • runtime/Lookup.h:

(JSC::HashTableValue::makeReadOnlyCopy const):

Source/WebCore:

This patch introduces HashTableValue::makeReadOnlyCopy() to avoid manually
generating & putting a JSValue for an attribute, which is non-trivial to
do right while supporting all kinds of accelerated / built-in attributes.

Also, removes incorrect classForThis argument from entries reification.

No new tests, no behavior change.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • bindings/scripts/test/JS/*: Updated.
11:47 AM Changeset in webkit [279557] by Kocsen Chung
  • 1 copy in tags/Safari-611.3.10.0.1

Tag Safari-611.3.10.0.1.

11:40 AM Changeset in webkit [279556] by Kocsen Chung
  • 1 delete in tags/Safari-611.3.10.0.1

Delete Tag

11:37 AM Changeset in webkit [279555] by Kocsen Chung
  • 1 copy in tags/Safari-611.3.10.0.1

Tag Safari-611.3.10.0.1.

11:37 AM Changeset in webkit [279554] by Alexey Shvayka
  • 6 edits in trunk/Source/WebCore

[WebIDL] Generate constructor's hash table in GenerateConstructorHelperMethods
https://bugs.webkit.org/show_bug.cgi?id=227668

Reviewed by Sam Weinig.

This change moves generation of constructor's hash table to GenerateConstructorHelperMethods,
right before it is used to define the constructor's s_info, which is nicer than inferring
table's name and more precise than using ConstructorHasProperties.

Also, makes $generatingLegacyFactoryFunction bool-ish and removes unused $protoClassName parameter.

No new tests, no behavior change.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):
(GenerateCallbackImplementationContent):
(GenerateConstructorDefinitions):
(GenerateConstructorDefinition):
(GenerateConstructorHelperMethods):
(ConstructorHasProperties): Deleted.

  • bindings/scripts/test/JS/*: Updated.
11:34 AM Changeset in webkit [279553] by Kocsen Chung
  • 1 copy in tags/Safari-611.3.10.1.3

Tag Safari-611.3.10.1.3.

11:33 AM Changeset in webkit [279552] by Kocsen Chung
  • 1 copy in tags/Safari-611.3.10.1.1/safari-611.3.10.1-branch

Tag Safari-611.3.10.1.1.

10:51 AM Changeset in webkit [279551] by commit-queue@webkit.org
  • 8 edits
    24 adds in trunk/LayoutTests

Resync web-platform-tests/css/css-sizing/aspect-ratio from upstream
https://bugs.webkit.org/show_bug.cgi?id=227657

Patch by Rob Buis <rbuis@igalia.com> on 2021-07-04
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Resync web-platform-tests/css/css-sizing/aspect-ratio from upstream c21b0b8ca7.

  • web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-025.html:
  • web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-026.html:
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-020.html:
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-021.html:
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-028-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-028.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-029-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-029.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-030-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-030.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-031-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-031.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-032-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-032.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-033-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-033.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-034-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-034.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-035-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-035.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-036-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-036.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-037-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-037.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-038-expected.xht: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/grid-aspect-ratio-038.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/select-element-001-expected.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/select-element-001.html: Added.
  • web-platform-tests/css/css-sizing/aspect-ratio/w3c-import.log:

LayoutTests:

9:53 AM Changeset in webkit [279550] by eric.carlson@apple.com
  • 7 edits
    4 adds in trunk

WebAudio auto-play policy should come from top document
https://bugs.webkit.org/show_bug.cgi?id=227593
rdar://76920375

Reviewed by Chris Dumez.

Source/WebCore:

Tests: media/auto-play-video-in-about-blank-iframe.html

media/auto-play-web-audio-in-about-blank-iframe.html

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::constructCommon): Get auto-play policy from document()->topDocument().

  • testing/Internals.cpp:

(WebCore::Internals::setDocumentAutoplayPolicy): New method to test auto-play policy.

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

LayoutTests:

  • media/auto-play-video-in-about-blank-iframe-expected.txt: Added.
  • media/auto-play-video-in-about-blank-iframe.html: Added.
  • media/auto-play-web-audio-in-about-blank-iframe-expected.txt: Added.
  • media/auto-play-web-audio-in-about-blank-iframe.html: Added.
  • media/video-test.js:

(waitForEventWithTimeout): Return event.

8:47 AM Changeset in webkit [279549] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][TFC] Cleanup computedPreferredWidthForColumns and distributeAvailableSpace functions
https://bugs.webkit.org/show_bug.cgi?id=227669

Reviewed by Antti Koivisto.

Let's create some sub-scopes within these long functions to make them read better.

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns):

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::distributeAvailableSpace):

7:10 AM Changeset in webkit [279548] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][TFC] 100% percent width column(s) make the table stretch
https://bugs.webkit.org/show_bug.cgi?id=227667

Reviewed by Antti Koivisto.

Source/WebCore:

This patch addresses the odd transition of going from 99% to 100% in accumulated percent width.

Test: fast/layoutformattingcontext/table-space-width-100-percent-quirk.html

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns):

LayoutTests:

  • fast/layoutformattingcontext/table-space-width-100-percent-quirk-expected.html: Added.
  • fast/layoutformattingcontext/table-space-width-100-percent-quirk.html: Added.

Jul 3, 2021:

2:29 PM Changeset in webkit [279547] by dino@apple.com
  • 8 edits in trunk

Move BottomControlsBarHeight and InsideMargin to be computed at runtime
https://bugs.webkit.org/show_bug.cgi?id=227505
<rdar://problem/79932256>

Reviewed by Devin Rousso.

Rather than having two JS constants that have to be kept in sync
with CSS, simply retrieve the value from the computed style.

No change in behaviour.

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

(InlineMediaControls.prototype.layout):

  • Modules/modern-media-controls/controls/media-controls.css:

(:host(audio), :host(video.media-document.audio), *):

  • Modules/modern-media-controls/controls/layout-node.js: Add two helpers to

retrieve computed style values.

12:57 PM Changeset in webkit [279546] by Alexey Shvayka
  • 115 edits
    5 adds in trunk

[WebIDL] Rework runtime enabled properties leveraging PropertyCallback
https://bugs.webkit.org/show_bug.cgi?id=227275

Reviewed by Saam Barati.

JSTests:

  • stress/lazy-property-cross-realm.js: Added.
  • stress/lazy-property-get-cache.js: Added.
  • stress/lazy-property-gopd.js: Added.
  • stress/lazy-property-hasownproperty-cache.js: Added.
  • stress/lazy-property-put-cache.js: Added.

Source/JavaScriptCore:

To make the implementation of WebIDL runtime enabled properties independent of eager
property reification, this change:

  1. Introduces IsLazyPropertyEnabledCallback, which is needed separately from existing value callback to maintain the invariant that reifyStaticProperty() always puts a property, and to keep enumeration fast.

Calling disableCaching() isn't enough to achieve correct Get? inline caching,
so isTaintedByOpaqueObject() is leveraged to prohibit caching of runtime disabled
properties, just like in operationTryGetByIdOptimize().

The only case that might seem weird is runtime disabled properties, which were
enabled after all static properties were reified via Delete?, are not appearing.
It's fixable, yet there is currently no demand for it.

  1. Adds support for LazyPropertyCallback returning GetterSetter / CustomGetterSetter, ensuring correct structure flags and slot initialization. Previously, the callback was used to init only objects and constructors, using putDirect() unconditionally.

To avoid mixing other non-basic attributes with PropertyCallback, which would require
hoisting of checks against PropertyCallback and complicating attribute validation in
HashTableValue methods, this patch checks the type of callback's return value instead.

In the future, sticking to this approach will make returning CustomValue impossible
as it can't be distinguished from CustomAccessor. That's fine because all present
CustomValue usages merely do lazy init, which PropertyCallback is better suited for.

Also, this patch:

  1. Expands setUpStaticFunctionSlot() to handle constant integers so the code using Node.ELEMENT_NODE & friends doesn't regress (proven by attached microbenchmark).
  1. Removes extra checks from setUpStaticPropertySlot(), which is called only on non-reified properties.
  1. Removes invariant that DOMJITAttribute property is read-only, which was broken by document.body having a non-JIT custom setter. This aligns non-reified properties with structure ones.
  • jit/Repatch.cpp:

(JSC::tryCacheGetBy):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setupGetByIdPrototypeCache):

  • runtime/HasOwnPropertyCache.h:

(JSC::HasOwnPropertyCache::tryAdd):

  • runtime/JSObject.cpp:

(JSC::lookupPropertyForPut):
(JSC::JSObject::putInlineSlow):
(JSC::JSObject::reifyAllStaticProperties):

  • runtime/JSObject.h:

(JSC::JSObject::getOwnNonIndexPropertySlot):
(JSC::JSObject::fillStructurePropertySlot):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::getNonReifiedStaticPropertyNames):

  • runtime/Lookup.cpp:

(JSC::setUpStaticPropertySlot):
(JSC::setUpStaticFunctionSlot): Deleted.

  • runtime/Lookup.h:

(JSC::HashTableValue::isLazyPropertyEnabled const):
(JSC::getStaticPropertySlotFromTable):
(JSC::reifyStaticProperty):
(JSC::reifyStaticProperties):

  • tools/JSDollarVM.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSDollarVM::finishCreation):

Source/WebCore:

This performance-neutral change makes implementation of runtime enabled properties independent
of eager property reification, slightly optimizing DOM global objects initialization.
A follow-up patch (webkit.org/b/158557) will remove eager property reification of WebIDL
constructors / prototypes, further reducing CPU usage and memory cost on page load.

Provided we reify properties without creating transitions and avoid conversion to a cacheable
dictionary, that should not regress performance & memory usage as well. Non-reified custom
accessors / values are inline-cached, even through JSProxy. DOM methods are reified on first
lookup; the same approach is used for multiple hot JSC built-ins (e.g. StringPrototype).

A huge refactoring was required to keep generation of lazy property callbacks within a single
function. Handling of private identifiers was decoupled from public ones, while hash table
generation for constructors / prototypes / instances was merged into GenerateHashTable.

This approach preserves HashTable's immutability while avoiding addition of extra checks to
entry lookup and memory usage increase. Another important advantage: a feature that was
enabled after its interface was created, immediately becomes usable (no page reload needed).

Also, this change removes all usages of DeletePropertyModeScope from WebCore, which was used
to disable non-configurable constants at runtime, allowing its complete removal in the future.

No new tests, no behavior change.

  • bindings/js/JSDOMBuiltinConstructor.h:
  • bindings/js/JSDOMConstructor.h:
  • bindings/js/JSDOMConstructorNotCallable.h:
  • bindings/js/JSDOMConstructorNotConstructable.h:
  • bindings/scripts/CodeGeneratorJS.pm:

Extract IDLInterface::className() to avoid passing $className as an argument.

(InstanceOperationCount): Deleted.
(PrototypeOperationCount): Deleted.
(InstancePropertyCount): Deleted.
(PrototypePropertyCount): Deleted.
(PrototypeHasStaticPropertyTable): Deleted.
(ConstructorHasProperties):
(PrototypeHasProperties):
(InstanceHasProperties):
Remove *Count helpers because they were incorrect with constants, overloads, private identifiers,
and Symbol.iterator. Instead, do the count in GeneratePropertiesHashTable to avoid duplicate checks.

(GeneratePropertiesHashTable):
(GenerateHashTableValueArray):

  • Compute $hasSetterOrReadonlyProperties early because it's impossible to detect runtime enabled accessors, which are concealed behind PropertyAttribute::PropertyCallback, in GenerateHashTableValueArray.
  • Set HashTable.hasSetterOrReadonlyProperties to true if a read-only value (constant) was seen.

(GenerateRuntimeEnableConditionalString):
Always use provided $globalObjectPtr parameter.

(GenerateHashTable):

  • Simplify name inference for HashTable's values / indices since hash table names never include ":".
  • Nicely simplify generation of hash table kind comment.
  • Set HashTable.classForThis to nullptr for constructors because they can't have DOMAttribute properties.

(GenerateImplementation):

  • Set ReadOnly attribute for runtime read-only accessors that shadow setter from static hash table.
  • Reify "entries" property of an iterable interface to ensure its identity with Symbol.iterator method.

(GeneratePrivateIdentifiers):

  • Add support for accelerated DOM attributes, which are rather common.
  • Add support for static operations, which we have a use case for (see @whenSignalAborted).

(GeneratePrototypeDeclaration):
Set HasStaticPropertyTable structure flag for global interfaces as well, progressing idlharness.js test.

(GenerateConstructorHelperMethods):
Ensure that HasStaticPropertyTable structure flag is set for constructors as well.

(StringifyJSCAttributes):
(GetJSCAttributesForAttribute):
(ShouldBeOnInstance):
(GenerateHeader):
(GetAttributeGetter):
(GetAttributeSetter):
(GetAttributeJSValue):
(GetOperationJSValue):
(GenerateLazyPropertyCallbacks):
(GenerateCallbackImplementationContent):
(GetRuntimeEnabledStaticProperties): Deleted.

  • bindings/scripts/test/JS/*: Updated.
  • bindings/scripts/test/DOMWindowConstructors.idl:
  • bindings/scripts/test/TestEnabledBySetting.idl:
  • bindings/scripts/test/TestObj.idl:

Cover [PrivateIdentifiers] with accelerated DOM attributes, static operations, and constructors.

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
10:43 AM Changeset in webkit [279545] by clopez@igalia.com
  • 21 edits
    4 copies
    1 move
    216 adds
    6 deletes in trunk/LayoutTests

[GTK][WPE] Gardening of expected failures and update list of baselines.

LayoutTests/imported/w3c:

Unreviewed gardening.

  • web-platform-tests/fetch/api/headers/header-values-expected.txt: Removed.
  • web-platform-tests/fetch/api/redirect/redirect-count-expected.txt: Removed.
  • web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.CSSHSL-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.dompoint.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.1.radius.double.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.dompoint.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompoint.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.double.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.dompoint.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.1.double.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.dompoint.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.2.double.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.dompoint.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.3.radii.3.double.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.double.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.dompoint.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.2.double.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.dompoint.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.3.double.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.dompoint.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.4.double.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.closed.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.2.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.3.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.4.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.negative.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.newsubpath.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.1.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.intersecting.2.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.none-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.none.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.toomany-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.radius.toomany.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.selfintersect.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.winding.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.1.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.2.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.3.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.4.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.5.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/path-objects/2d.path.roundrect.zero.6.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/text/2d.text.drawing.style.measure.direction-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/text/2d.text.drawing.style.measure.direction.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/text/2d.text.drawing.style.measure.rtl.text-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/text/2d.text.drawing.style.measure.rtl.text.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/text/2d.text.drawing.style.measure.textAlign-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/text/2d.text.drawing.style.measure.textAlign.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.combined.3d.transforms-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.combined.3d.transforms.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate3d-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate3d.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate3d.x-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate3d.x.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate3d.y-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate3d.y.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate3d.z-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate3d.z.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotateAxis-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotateAxis.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.3d-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.3d.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.3d-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.3d.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.3d-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.3d.worker-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.3d-expected.txt: Added.
  • web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.3d.worker-expected.txt: Added.

LayoutTests:

Update list of expected failures, re-baseline imported WPT tests and clean some old expectation files.

Unreviewed gardening.

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.any-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.any.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.https.any-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.https.any.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.worker-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.worker-expected.txt: Copied from LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.worker-expected.txt.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.https.any-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.https.any.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-same-in-same-self-allow-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode-csiso2022jp-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-nonascii.any-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-nonascii.any.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/api/headers/header-values.any-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/fetch/api/headers/header-values-expected.txt.
  • platform/glib/imported/w3c/web-platform-tests/fetch/api/headers/header-values.any.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any-expected.txt.
  • platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker-expected.txt.
  • platform/glib/imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached.any-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached.any.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/content-length/api-and-duplicate-headers.any-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/content-length/api-and-duplicate-headers.any.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/h1-parsing/status-code.window-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/http-cache/cc-request.any-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/http-cache/cc-request.any.worker-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.negative.rotation-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.positive.rotation-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/path-objects/2d.path.isPointInPath.basic-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.srgb-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/dom/elements/the-innertext-and-outertext-properties/getter-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt.
  • platform/glib/imported/w3c/web-platform-tests/html/links/manifest/link-relationship/link-rel-manifest-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-generated-content-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/audio_loop_seek_to_eos-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/video_timeupdate_on_seek-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/focus-after-close-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/import-scripts-cross-origin.https-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/registration-script-module.https-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/windowclient-navigate.https-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/websockets/Send-65K-data.any-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/websockets/Send-binary-65K-arraybuffer.any-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/websockets/Send-binary-arraybuffer.any-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/websockets/Send-data.any-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/websockets/Send-paired-surrogates.any-expected.txt:
  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/fetch/api/request/request-cache-expected.txt: Removed.
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/interaction/focus/document-level-focus-apis/document-has-system-focus-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt: Removed.
  • platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/input-valueasnumber-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-light-dismiss.tentative-expected.txt: Added.
  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/elements/the-innertext-and-outertext-properties/getter-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-light-dismiss.tentative-expected.txt: Added.
10:27 AM Changeset in webkit [279544] by Alan Bujtas
  • 5 edits
    2 adds in trunk

REGRESSION (r278377): incorrect hit-testing with clip-path()
https://bugs.webkit.org/show_bug.cgi?id=227624
<rdar://problem/79845896>

Reviewed by Simon Fraser.

Source/WebCore:

Use the correct coordinate space for clip-path based hittesting.

  1. The hittest location is in the coordinate space of the painting root (hittesting is similar to painting in this context).
  2. RenderBox::hitTestClipPath's accumulatedOffset (as the name implies) should include the offset from the (paint) hittest root.
  3. The clip-path intersecting takes coordinates relative to the containing block.

Test: fast/clip/hit-test-with-clip-path.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::hitTestVisualOverflow const):
(WebCore::RenderBox::hitTestClipPath const): Make the hittest root coordinates relative to the containing block.
(WebCore::RenderBox::hitTestBorderRadius const):

  • rendering/RenderBox.h: Let's not use locationInContainer name as it is way too generic and misleading.
  • rendering/RenderLayer.cpp: Compute and pass in proper accumulated offset value.

(WebCore::RenderLayer::hitTestLayer):

LayoutTests:

  • fast/clip/hit-test-with-clip-path-expected.txt: Added.
  • fast/clip/hit-test-with-clip-path.html: Added.
7:17 AM Changeset in webkit [279543] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][TFC] Add support for priority list of width types when expanding columns
https://bugs.webkit.org/show_bug.cgi?id=227627

Reviewed by Antti Koivisto.

Source/WebCore:

When expanding the columns to use the extra space available, we need to prioritize certain columns
with specific width types: fixed > percent > relative > auto
This is _almost_ the reversed version of the shrinking priority list (but not quite).
Now we can have mixed column types across multiple rows with expanding and shrinking columns.

Test: fast/layoutformattingcontext/table-space-mixed-width-type-simple3.html

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::distributeAvailableSpace):

LayoutTests:

  • fast/layoutformattingcontext/table-space-mixed-width-type-simple3-expected.html: Added.
  • fast/layoutformattingcontext/table-space-mixed-width-type-simple3.html: Added.
12:01 AM Changeset in webkit [279542] by Jean-Yves Avenard
  • 16 edits
    6 adds in trunk

SourceBuffer.abort() doesn't go back to state WAITING_FOR_SEGMENT properly
https://bugs.webkit.org/show_bug.cgi?id=227559
<rdar://problem/79996056>

Reviewed by Eric Carlson.

Source/WebCore:

Per spec, calling sourcebuffer.abort method should allow you to add a new segment
immediately after, as abort moves the append state back to WAITING_FOR_SEGMENT.
A segment can be either an init segment or a media segment.
We used to discard all further content until an init segment was encountered.
This could be problematic due to the typical use case of abort:
1- Seek to a location
2- Append a partial media segment long enough to finish seeking and display the

new content at the new position.

If multiple seeks were done in rapid succession, abort() is called right after
before starting the new seek so that we can add the new segment, regardless of what
was appended before.
YouTube applies a workaround for Safari where it will always append an init segment
after calling abort, this is different to what they do with Firefox (and likely Chrome).
To be able to resume after appending a partial media segment we must ensure that the
SourceBufferParser is always left in a sane context, and not be interrupted at some
random points. The abort() call used to interrupt the buffer parsing on the fly and
then reset things which would require a new init segment to restart.
Instead we always fully parse the pending buffer received befofe the call to abort.
The SourceBufferParserAVFObjC could already properly deal with discontinuity unlike
SourceBufferParserWebM.
To ensure that buffers sent after the call to abort() are only ever processed once
the pending ones have been parsed, and in order to avoid having blocking calls
we play with the order in which tasks are scheduled.

Fly-by fixes:

  • The SourceBufferParser handle two types of parser: SourceBufferParser and the

platform specific AVStreamDataParser. Rename the accessor method to more clearly
differentate which parser we are dealing with.

  • The SourceBufferParserWebM and SourceBufferPrivateAVFObjC used different task dispatching

mechanisms. We make them both share the same one now found in the base class.

Tests: media/media-source/media-mp4-h264-partial-abort.html

media/media-source/media-webm-opus-partial-abort.html

  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:

(WebCore::CDMSessionAVContentKeySession::~CDMSessionAVContentKeySession): rename method.

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

(WebCore::CDMSessionAVStreamSession::~CDMSessionAVStreamSession): rename method.
(WebCore::CDMSessionAVStreamSession::update): rename method.

  • platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm: rename method.

(WebCore::CDMSessionMediaSourceAVFObjC::addSourceBuffer): rename method.
(WebCore::CDMSessionMediaSourceAVFObjC::removeSourceBuffer): rename method.

  • platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.h: rename method, remove

now unused member.

  • platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::removeCodedFrames): Postpone call to ensure
we are running the remove frame algorithm once all pending frames have been processed.
(WebCore::SourceBufferParserAVFObjC::resetParserState): Remove use of m_discardSamplesUntilNextInitializationSegment.
(WebCore::SourceBufferParserAVFObjC::didParseStreamDataAsAsset): Change to base dispatch method.
(WebCore::SourceBufferParserAVFObjC::didFailToParseStreamDataWithError): Change to base dispatch method.
(WebCore::SourceBufferParserAVFObjC::didProvideMediaDataForTrackID): Change to base dispatch method.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h: Rename methods. Remove no longer used

members.

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

(WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::didParseInitializationData): No longer use a Cancellable task
as we never cancel it anymore.
(WebCore::SourceBufferPrivateAVFObjC::append): re-schedule the append task immediately to ensure
that processed packets flushed on the parser queue during abort are handled in the right order on
the main thread.
(WebCore::SourceBufferPrivateAVFObjC::appendCompleted): Check that abort wasn't called since append started
to ensure that no updateend event is incorrectly fired twice.
(WebCore::SourceBufferPrivateAVFObjC::abort): Abort is now a no-op that only set the m_abortCalled member.
(WebCore::SourceBufferPrivateAVFObjC::resetParserState): Change the order of operations so that the
SourceBufferParser is only reset after it has finished processing its data.
(WebCore::SourceBufferPrivateAVFObjC::destroyStreamDataParser): Use rename method.
(WebCore::SourceBufferPrivateAVFObjC::removedFromMediaSource): Use rename method.
(WebCore::SourceBufferPrivateAVFObjC::streamDataParser const): Renamed method from "parser"
(WebCore::SourceBufferPrivateAVFObjC::attemptToDecrypt): Use renamed method.

  • platform/graphics/cocoa/SourceBufferParser.cpp:

(WebCore::callOnMainThreadCallback): Move dispatch method from SourceBufferParserWebM
(WebCore::SourceBufferParser::setCallOnClientThreadCallback):
(WebCore::SourceBufferParser::SourceBufferParser):

  • platform/graphics/cocoa/SourceBufferParser.h:
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::SourceBufferParserWebM):
(WebCore::SourceBufferParserWebM::resetParserState): Don't clear the data set by parsing
the previous init segment. Set the parsing state to waiting for a new segment if an
init segment has been fully parsed.
(WebCore::SourceBufferParserWebM::OnElementEnd):
(WebCore::SourceBufferParserWebM::OnEbml):
(WebCore::SourceBufferParserWebM::VideoTrackData::reset):
(WebCore::SourceBufferParserWebM::VideoTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::AudioTrackData::reset):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

LayoutTests:

  • media/media-source/content/test-fragmented-video-manifest.json: Added.
  • media/media-source/content/test-fragmented-video.mp4: Added.
  • media/media-source/media-mp4-h264-partial-abort-expected.txt: Added.
  • media/media-source/media-mp4-h264-partial-abort.html: Added.
  • media/media-source/media-webm-opus-partial-abort-expected.txt: Added.
  • media/media-source/media-webm-opus-partial-abort.html: Added.
  • media/media-source/media-webm-opus-partial.html: fix title.
  • media/media-source/media-webm-vorbis-partial.html: fix title.
  • platform/mac/TestExpectations:

Jul 2, 2021:

11:46 PM Changeset in webkit [279541] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.11-branch/Source

Versioning.

WebKit-7612.1.22.11.1

11:45 PM Changeset in webkit [279540] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.3-branch/Source

Versioning.

WebKit-7612.1.22.3.1

11:43 PM Changeset in webkit [279539] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.2-branch/Source

Versioning.

WebKit-7612.1.22.2.1

11:42 PM Changeset in webkit [279538] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.1-branch/Source

Versioning.

WebKit-7612.1.22.1.1

11:40 PM Changeset in webkit [279537] by Ruben Turcios
  • 8 edits in branches/safari-612.1.22.0-branch/Source

Versioning.

WebKit-7612.1.22.0.1

9:42 PM Changeset in webkit [279536] by Ruben Turcios
  • 1 copy in branches/safari-612.1.22.11-branch

New branch.

9:41 PM Changeset in webkit [279535] by Ruben Turcios
  • 1 copy in branches/safari-612.1.22.3-branch

New branch.

9:41 PM Changeset in webkit [279534] by Ruben Turcios
  • 1 copy in branches/safari-612.1.22.2-branch

New branch.

9:40 PM Changeset in webkit [279533] by Ruben Turcios
  • 1 copy in branches/safari-612.1.22.1-branch

New branch.

9:40 PM Changeset in webkit [279532] by Ruben Turcios
  • 1 copy in branches/safari-612.1.22.0-branch

New branch.

9:34 PM Changeset in webkit [279531] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.22

Tag Safari-612.1.22.

7:50 PM Changeset in webkit [279530] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Remove the build warning below since r279498.
warning: redundant move in return statement [-Wredundant-move]

No new tests, no new behavioral changes.

  • css/parser/CSSPropertyParserWorkerSafe.cpp:

(WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontFaceUnicodeRange):

6:24 PM Changeset in webkit [279529] by Kocsen Chung
  • 5 edits in branches/safari-611.3.10.1-branch/Source/WebCore

Cherry-pick r278964. rdar://problem/79474157

Protect Element before calling dispatchMouseEvent() on it
https://bugs.webkit.org/show_bug.cgi?id=226767
<rdar://problem/79009112>

Reviewed by Ryosuke Niwa.

  • page/EventHandler.cpp: (WebCore::EventHandler::updateMouseEventTargetNode): (WebCore::EventHandler::dispatchMouseEvent):
  • page/PointerLockController.cpp: (WebCore::PointerLockController::dispatchLockedMouseEvent):
  • page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const):

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

6:19 PM Changeset in webkit [279528] by Kocsen Chung
  • 8 edits in branches/safari-611.3.10.1-branch/Source

Versioning.

WebKit-7611.3.10.1.3

6:11 PM Changeset in webkit [279527] by Kocsen Chung
  • 5 edits in branches/safari-611.3.10.0-branch/Source/WebCore

Cherry-pick r278964. rdar://problem/79474157

Protect Element before calling dispatchMouseEvent() on it
https://bugs.webkit.org/show_bug.cgi?id=226767
<rdar://problem/79009112>

Reviewed by Ryosuke Niwa.

  • page/EventHandler.cpp: (WebCore::EventHandler::updateMouseEventTargetNode): (WebCore::EventHandler::dispatchMouseEvent):
  • page/PointerLockController.cpp: (WebCore::PointerLockController::dispatchLockedMouseEvent):
  • page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const):

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

5:33 PM Changeset in webkit [279526] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Unreviewed attempt to fix Mac Catalyst build.

  • NetworkProcess/ios/NetworkProcessIOS.mm:

(WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost):

  • NetworkProcess/mac/NetworkProcessMac.mm:

(WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost):

4:40 PM Changeset in webkit [279525] by aakash_jain@apple.com
  • 1 edit
    1 delete in trunk/Tools

Delete unused BuildSlaveSupport symlink
https://bugs.webkit.org/show_bug.cgi?id=227644

Reviewed by Dewei Zhu.

  • BuildSlaveSupport: Symlink removed.
4:21 PM Changeset in webkit [279524] by Brent Fulgham
  • 3 edits in trunk/Source/WTF

[macOS] Only use WebGL on Metal by default on safe versions of macOS
https://bugs.webkit.org/show_bug.cgi?id=227633
<rdar://problem/78527887>

Reviewed by Dean Jackson.

Tested by WebGL test suite.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
  • wtf/PlatformHave.h:
4:05 PM Changeset in webkit [279523] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed Mac Catalyst build fix after r279514.

  • NetworkProcess/ios/NetworkProcessIOS.mm:
3:52 PM Changeset in webkit [279522] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[BigSur Release wk2] fast/history/visited-href-mutation.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=227639

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-02

  • platform/mac-wk2/TestExpectations:
3:43 PM Changeset in webkit [279521] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark imported/w3c/web-platform-tests/beacon/beacon-basic.https.window.html as flaky

It has been flaky since its import in r279225.

3:40 PM Changeset in webkit [279520] by keith_miller@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Add 10 more unified source cpp files for JSC
https://bugs.webkit.org/show_bug.cgi?id=227643

Reviewed by Alex Christensen.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Scripts/generate-unified-sources.sh:
  • UnifiedSources-output.xcfilelist:
3:33 PM Changeset in webkit [279519] by Ruben Turcios
  • 8 edits in branches/safari-612.1.21-branch/Source

Versioning.

WebKit-7612.1.22

3:26 PM Changeset in webkit [279518] by Chris Dumez
  • 8 edits in trunk

[MacOS wk1] crypto/workers/subtle/hrsa-postMessage-worker.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=227540
<rdar://problem/79977662>

Reviewed by Geoffrey Garen.

Source/WebCore:

The test was sending 2 messages to the worker, the first one with the public key
and the second one for the private key. As the worker would receive those messages,
it would do some checks synchronously and post a message back to the main thread
script with the result. As we could see from the test's expected results, the
main thread script would usually (although flakily) receive the result for the
private key *before* the result for the public key, which was wrong.

The reason for this was that serializing / deserializing the crypto key would
spin the worker's run loop and the worker would thus process incoming messages
while serializing / deserializing a crypto key from a previous message.

To address the issue, we now use a BinarySemaphore to wait for the main thread
to finish the wrapping / unwrapping, instead of spinning the run loop.

No new tests, unskipped existing test.

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::wrapCryptoKey):
(WebCore::WorkerGlobalScope::unwrapCryptoKey):

LayoutTests:

Rebaseline test now that the output is correct (and non-flaky). Also unmark the test as flaky.

  • crypto/workers/subtle/ec-postMessage-worker-expected.txt:
  • crypto/workers/subtle/hrsa-postMessage-worker-expected.txt:
  • crypto/workers/subtle/hrsa-postMessage-worker.html:
  • platform/mac-wk1/TestExpectations:
2:19 PM Changeset in webkit [279517] by Chris Dumez
  • 2 edits in trunk/LayoutTests

REGRESSION (r279427): [ Mac wk1 ] imported/w3c/web-platform-tests/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=227637
<rdar://problem/80102396>

Unreviewed, Skip this newly imported WPT test on mac wk1 as it is timing out on this
platform.

  • platform/mac-wk1/TestExpectations:
2:09 PM Changeset in webkit [279516] by Chris Dumez
  • 20 edits
    19 copies
    38 moves
    13 adds
    33 deletes in trunk/LayoutTests

Resync WebCryptoAPI web-platform-tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227601

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Resync WebCryptoAPI web-platform-tests from upstream 2c19d6ee62676ac90146.

  • web-platform-tests/WebCryptoAPI/*: Updated.

LayoutTests:

1:42 PM Changeset in webkit [279515] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.21.2

Tag Safari-612.1.21.2.

1:35 PM Changeset in webkit [279514] by Chris Dumez
  • 14 edits in trunk/Source/WebKit

Take a process assertion in the network process when holding locked files
https://bugs.webkit.org/show_bug.cgi?id=227552

Reviewed by Sihui Liu.

Take a process assertion in the network process when holding locked files. Previously, we'd
send an IPC to the UIProcess and the UIProcess would take the assertion on behalf of the
network process. However, our previous approach was racy and could cause the network process
to still get suspended while still holding locked files (which would get it killed).

We have evidence that the network process is getting killed a lot for this reason
(rdar://79787123).

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::NetworkProcess):
Call setIsHoldingLockedFiles() when the "isHoldingLockedFiles" state changes instead of sending
an IPC to the UIProcess. setIsHoldingLockedFiles() takes care of taking or releasing a
RunningBoard assertion.

(WebKit::NetworkProcess::prepareToSuspend):
(WebKit::NetworkProcess::resume):
Stop calling setSuspended() on the WebSQLiteDatabaseTracker. The purpose was to avoid sending
the SetIsHoldingLockedFiles IPC to the UIProcess after receiving the PrepareToSuspend IPC.
However, it is now acceptable to take a process assertion after PrepareToSuspend IPC has been
received.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/ios/NetworkProcessIOS.mm:

(WebKit::NetworkProcess::setIsHoldingLockedFiles):
When setIsHoldingLockedFiles(true) gets called, we take a runningboard assertion to prevent
suspension. Note that setIsHoldingLockedFiles(true) gets on the storage thread (which started
the SQLite transaction) so we take the assertion synchronously to make sure we cannot get
suspended during a SQLite transaction.
When setIsHoldingLockedFiles(false) gets called, we release the runningboard assertion.

  • Shared/WebSQLiteDatabaseTracker.cpp:

(WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker):
(WebKit::WebSQLiteDatabaseTracker::~WebSQLiteDatabaseTracker):
(WebKit::WebSQLiteDatabaseTracker::setIsSuspended):
(WebKit::WebSQLiteDatabaseTracker::willBeginFirstTransaction):
(WebKit::WebSQLiteDatabaseTracker::didFinishLastTransaction):
(WebKit::WebSQLiteDatabaseTracker::setIsHoldingLockedFiles):

  • Shared/WebSQLiteDatabaseTracker.h:

Update WebSQLiteDatabaseTracker so that it called its isHoldingLockedFilesHandler lambda
directly on the storage thread when the first transaction starts, instead of dispatching
to the main thread. Dispatching to the main thread would be racy as it would mean taking
the process assertion asynchronously (on the main thread), after the SQLite transaction
has begun on the storage thread.
As a result, of this change, I am not using the HysterisActivity class anymore and using
my own thread-safe hysteresis activity using RunLoop::dispatchAfter() with an integer
and a lock.

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::networkProcessDidTerminate):
(WebKit::NetworkProcessProxy::sendProcessDidResume):

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

Drop the SetIsHoldingLockedFiles IPC and its handling on UIProcess side since the network
process now takes the assertion by itself.

1:33 PM Changeset in webkit [279513] by Chris Dumez
  • 18 edits
    39 adds
    1 delete in trunk/LayoutTests

Resync encoding web-platform-tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227602

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Resync encoding web-platform-tests from upstream 2c19d6ee62676ac90146.

  • web-platform-tests/encoding/*: Updated.

LayoutTests:

1:22 PM Changeset in webkit [279512] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Regression(r278786) LocalStorageDatabase's transaction may be remain active when process gets suspended
https://bugs.webkit.org/show_bug.cgi?id=227632

Reviewed by Geoffrey Garen.

After r278786, LocalStorageDatabase has a SQL transaction that gets committed with a 500ms delay on the
storage thread. When the network process would receive the PrepareToSuspend IPC, it would suspend / hang
the storage thread, which would prevent the SQL transaction from getting committed and we would suspend
with a locked file and get killed. We now make sure to flush local storage to disk (i.e. commit that
transaction) before we suspend / hang the storage thread.

  • NetworkProcess/WebStorage/StorageManagerSet.cpp:

(WebKit::StorageManagerSet::waitUntilSyncingLocalStorageFinished):
(WebKit::StorageManagerSet::flushLocalStorage):
(WebKit::StorageManagerSet::suspend):

  • NetworkProcess/WebStorage/StorageManagerSet.h:
1:22 PM Changeset in webkit [279511] by Truitt Savell
  • 2 edits
    8 copies
    3 adds
    2 deletes in trunk/LayoutTests

Unreviewed, reverting r279485.

Broke expectations for 7 mathML test on Big Sur wk1

Reverted changeset:

"Move some Mac MathML test expectation files around"
https://bugs.webkit.org/show_bug.cgi?id=227520
https://commits.webkit.org/r279485

12:19 PM Changeset in webkit [279510] by commit-queue@webkit.org
  • 11 edits
    6 adds in trunk/Source/WebInspectorUI

Web Inspector: add contextual documentation for CSS properties
https://bugs.webkit.org/show_bug.cgi?id=226883

Patch by Harshil Ratnu <hratnu@apple.com> on 2021-07-02
Reviewed by Devin Rousso.

Overview: Add contextual documentation for all supported CSS properties in Styles and Computed panel within Web
Inspector.
Details: Add an info button which appears next to the property field on Hover. Clicking on the info button shows
a popover with the documentation for the property. Tabbing out or clicking anywhere other than the value field
dismisses the popover.
Architecture: Add a ContextualDocumentationButton in SpreadsheetStyleProperty and append that to the end of the
property content. This Button, when clicked, creates an instance of the ContextualDocumentation.js which will
search the ContextualDocumentationDB to find the related property and it's relevant details. Embed these details
in an instance of Popover.js and present next to the associated propertyName.

  • Localizations/en.lproj/localizedStrings.js:
  • Scripts/copy-user-interface-resources.pl:

Add details for the ContextualDocumentationDatabase from External Folder to build properly.

  • UserInterface/Base/Setting.js:

Add setting to show syntax in documentation popover and define default state as false.

  • UserInterface/External/ContextualDocumentationDatabase/ContextualDocumentationDatabase.js: Added.
  • UserInterface/External/ContextualDocumentationDatabase/LICENSE: Added.
  • UserInterface/Images/InfoIcon.svg: Added.
  • UserInterface/Main.html:

Add and link new files.

  • UserInterface/Views/ComputedStyleDetailsPanel.css:

(.sidebar > .panel.details.css-style > .content > .computed > .details-section.computed-style-variables .property .go-to-arrow):
(.sidebar > .panel.details.css-style > .content > .computed > .details-section.computed-style-variables .property:not(:hover) .go-to-arrow):
Remove absolute positioning from go-to-arrow button to align it with rest of the text in line and style it
similar to contextual-documentation-button.
(.sidebar > .panel.details.css-style > .content > .computed .property .go-to-arrow): Deleted.
(.sidebar > .panel.details.css-style > .content > .computed .property:not(:hover) .go-to-arrow): Deleted.
Change hover area to include white space on the side of computed variables.

  • UserInterface/Views/ComputedStyleSection.css:

(.sidebar > .panel.details.css-style > .content > .computed .computed-property-item > .property .go-to-arrow):
(.sidebar > .panel.details.css-style > .content > .computed .computed-property-item:not(:hover) > .property .go-to-arrow):
(.sidebar > .panel.details.css-style > .content > .computed .computed-property-item > .property > .content > .contextual-documentation-button):
(.sidebar > .panel.details.css-style > .content > .computed .computed-property-item:not(:hover) > .property > .content > .contextual-documentation-button):
Add unifrom styling for go-to-arrow button and contextual-documentation-button for computed properties.

  • UserInterface/Views/ContextualDocumentationPopover.css: Added.

(.popover .documentation-popover-content):
(.popover .documentation-popover-content > p):
(.popover .documentation-popover-content > .name-header):
(.popover .documentation-popover-content > .syntax):
(.popover .documentation-popover-content > .syntax > .syntax-title):
(.popover .documentation-popover-content > .reference-link):

  • UserInterface/Views/ContextualDocumentationPopover.js: Added.

(WI.ContextualDocumentationPopover):
(WI.ContextualDocumentationPopover.prototype.show):
(WI.ContextualDocumentationPopover.prototype._presentOverTargetElement):
(WI.ContextualDocumentationPopover.prototype._getDocumentationDetails):
(WI.ContextualDocumentationPopover.prototype._createDocumentationElement):
Add new class that extends Popover.js and handles fetching the values from VS Code documentation, puts relevant
information in the popover and presents the popover when the documentation-button is clicked.

  • UserInterface/Views/Main.css:

(.contextual-documentation-button):
(.contextual-documentation-button:active):
(@media (prefers-color-scheme: dark) .contextual-documentation-button):
Add general styling for contextualDocumentationButton.

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createElementsSettingsView):
Add a new setting in Elements Tab to show syntax.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.willDismissPopover):
Add a method - willDismissPopover to handle changes when the documentation popover is about to dismiss.
(WI.SpreadsheetStyleProperty.prototype.update):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
(WI.SpreadsheetStyleProperty.prototype._addContextualDocumentationButton):
Add a method which gets called for all property fields and also gets called when property name is changed and
updated by clicking out of the property name field or tabbing into the next value field and is responsible for
adding the info button add the end of the property.
(WI.SpreadsheetStyleProperty.prototype._handleContextualDocumentationButtonClicked):
(WI.SpreadsheetStyleProperty.prototype._presentContextualDocumentation):
Add a method which creates an instance of the ContextualDocumentationPopover.js class and shows it.

10:57 AM Changeset in webkit [279509] by beidson@apple.com
  • 2 edits in trunk/Source/WebKit

WebPageProxy::setAppHighlightsVisibility might send message from a background thread, ASSERTing
<rdar://80056481> and https://bugs.webkit.org/show_bug.cgi?id=227607

Reviewed by Chris Dumez.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::setAppHighlightsVisibility):
(WebKit::WebPageProxy::setUpHighlightsObserver): The callback we get here is often on a background thread.

So bounce it to main.

10:55 AM Changeset in webkit [279508] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TFC] Keep track of both the fixed and percent maximum values for each column
https://bugs.webkit.org/show_bug.cgi?id=227491

Reviewed by Antti Koivisto.

This patch is in preparation for supporting mixed column width types when each row
has diffrent type of widths (e.g <tr><td style="width: 100px;"></td></tr><tr><td style="width: 10%;"></td></tr>)

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns):

10:41 AM Changeset in webkit [279507] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

[ BigSur Release Arm64 ] imported/w3c/web-platform-tests/resource-timing/resource_timing.worker.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=223472

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-02

  • platform/mac-wk1/TestExpectations: Removing obsolete failure expectation.
  • platform/mac/TestExpectations: Mark test as flaky.
9:05 AM Changeset in webkit [279506] by commit-queue@webkit.org
  • 5 edits in trunk/Source

[GTK] Add new revision variable in pkgconfig file
https://bugs.webkit.org/show_bug.cgi?id=227629

Patch by Philippe Normand <pnormand@igalia.com> on 2021-07-02
Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

  • javascriptcoregtk.pc.in: Include SVN_REVISION as revision variable, useful for apps to

know on which upstream SVN revision their WebKitGTK-based app is built on.

Source/WebKit:

Include SVN_REVISION as revision variable, useful for apps to know on which upstream SVN
revision their WebKitGTK-based app is built on.

  • gtk/webkit2gtk-web-extension.pc.in:
  • gtk/webkit2gtk.pc.in:
8:38 AM Changeset in webkit [279505] by commit-queue@webkit.org
  • 4 edits in trunk

Unreviewed, reverting r279494.
https://bugs.webkit.org/show_bug.cgi?id=227628

Broke api test
TestWebKitAPI.WKWebView.LoadSimulatedRequestUpdatesBackForwardList

Reverted changeset:

"loadSimulatedRequest: should do same delegate callbacks as
loadHTMLString and loadData"
https://bugs.webkit.org/show_bug.cgi?id=227599
https://commits.webkit.org/r279494

8:28 AM Changeset in webkit [279504] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][TFC] TableGrid::Column holds both the computed and the used width values
https://bugs.webkit.org/show_bug.cgi?id=227488

Reviewed by Antti Koivisto.

This patch cleans up TableGrid::Column interface to ensure we don't confused
the computed and the used widths for columns.
This is also in prepartion for adding mixed width type support.

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):
(WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraSpace):

  • layout/formattingContexts/table/TableFormattingGeometry.cpp:

(WebCore::Layout::TableFormattingGeometry::horizontalSpaceForCellContent const):

  • layout/formattingContexts/table/TableGrid.cpp:

(WebCore::Layout::TableGrid::Column::setLogicalWidth): Deleted.
(WebCore::Layout::TableGrid::Column::logicalWidth const): Deleted.
(WebCore::Layout::TableGrid::Column::setLogicalLeft): Deleted.
(WebCore::Layout::TableGrid::Column::logicalLeft const): Deleted.

  • layout/formattingContexts/table/TableGrid.h:

(WebCore::Layout::TableGrid::Column::usedLogicalRight const):
(WebCore::Layout::TableGrid::Column::computedLogicalWidth const):
(WebCore::Layout::TableGrid::Columns::logicalWidth const):
(WebCore::Layout::TableGrid::Column::setComputedLogicalWidth):
(WebCore::Layout::TableGrid::Column::setUsedLogicalWidth):
(WebCore::Layout::TableGrid::Column::usedLogicalWidth const):
(WebCore::Layout::TableGrid::Column::setUsedLogicalLeft):
(WebCore::Layout::TableGrid::Column::usedLogicalLeft const):
(WebCore::Layout::TableGrid::Column::logicalRight const): Deleted.
(WebCore::Layout::TableGrid::Column::fixedWidth const): Deleted.
(WebCore::Layout::TableGrid::Column::percent const): Deleted.
(WebCore::Layout::TableGrid::Column::setFixedWidth): Deleted.
(WebCore::Layout::TableGrid::Column::setPercent): Deleted.

  • layout/formattingContexts/table/TableLayout.cpp:

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

7:45 AM Changeset in webkit [279503] by commit-queue@webkit.org
  • 7 edits
    4 deletes in trunk

Unreviewed, reverting r279487.
https://bugs.webkit.org/show_bug.cgi?id=227626

Added broken ios-wk2 test

Reverted changeset:

"WebAudio auto-play policy should come from top document"
https://bugs.webkit.org/show_bug.cgi?id=227593
https://commits.webkit.org/r279487

7:13 AM Changeset in webkit [279502] by Razvan Caliman
  • 8 edits in trunk

Web Inspector: Styles: should autocomplete var() and attr() values
https://bugs.webkit.org/show_bug.cgi?id=227098
<rdar://problem/79418247>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

Add support for completion suggestions in the Styles details sidebar panel
for CSS Variables for use with var() and DOM node attributes for use with attr().

  • UserInterface/Models/CSSCompletions.js:

(WI.CSSCompletions.prototype.addValues):

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

(WI.DOMNodeStyles):
(WI.DOMNodeStyles.prototype.get allCSSVariables):
(WI.DOMNodeStyles.prototype._updateStyleCascade):
(WI.DOMNodeStyles.prototype._collectCSSVariables):

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.getFunctionValueCompletions):
(WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):

LayoutTests:

Add test cases for contextual CSS function value completion.

  • inspector/unit-tests/css-keyword-completions-expected.txt:
  • inspector/unit-tests/css-keyword-completions.html:
1:13 AM Changeset in webkit [279501] by graouts@webkit.org
  • 2 edits in trunk/Source/WebKit

REGRESSION (r279477): WebKit_iosmac failed to build in : ModelElementControllerCocoa.mm:58:24: member reference type 'WebKit::WebPageProxy' is not a pointer; did you mean to use '.'?
https://bugs.webkit.org/show_bug.cgi?id=227612
<rdar://problem/80054936>

Reviewed by Alan Bujtas.

  • UIProcess/Cocoa/ModelElementControllerCocoa.mm:

(WebKit::ModelElementController::takeModelElementFullscreen):

12:09 AM Changeset in webkit [279500] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Make LocalSampleBufferDisplayLayer::requestNotificationWhenReadyForVideoData hop to main thread before hopping to processing thread
https://bugs.webkit.org/show_bug.cgi?id=227444
<rdar://79413368>

Reviewed by Chris Dumez.

It is safer to hop to main thread in requestNotificationWhenReadyForVideoData callback so that we can check weakThis safely.
When in main thread, hop to processing thread if LocalSampleBufferDisplayLayer is alive.

  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:

(WebCore::LocalSampleBufferDisplayLayer::~LocalSampleBufferDisplayLayer):
(WebCore::LocalSampleBufferDisplayLayer::requestNotificationWhenReadyForVideoData):

12:01 AM Changeset in webkit [279499] by calvaris@igalia.com
  • 4 edits in trunk

[GTK] media/event-attributes.html fails if mixer is not at 100%
https://bugs.webkit.org/show_bug.cgi?id=83704

Reviewed by Philippe Normand.

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues): GStreamer
ports use fakesink to avoid sound output and setting the page
volume to 0 creates trouble with volume events. Let's avoid it in
GStreamer ports.

LayoutTests:

  • platform/glib/TestExpectations: Unflagged that test and other

that get fixed with this patch.

Note: See TracTimeline for information about the timeline view.