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

Timeline



Dec 4, 2021:

8:14 PM Changeset in webkit [286536] by Andres Gonzalez
  • 3 edits in trunk/Tools

Change WTR::AccessibilityUIElement::descriptionOfValue(id) to return a RetainPtr.
https://bugs.webkit.org/show_bug.cgi?id=233815
<rdar://problem/86019373>

Reviewed by Chris Fleizach.

This fixes several tests in isolated tree mode, in particular:
accessibility/mac/focus-crash.html
accessibility/mac/search-predicate.html

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::descriptionOfValue const):
(WTR::AccessibilityUIElement::allAttributes):
(WTR::AccessibilityUIElement::stringDescriptionOfAttributeValue):
(WTR::AccessibilityUIElement::role):
(WTR::AccessibilityUIElement::subrole):
(WTR::AccessibilityUIElement::roleDescription):
(WTR::AccessibilityUIElement::computedRoleString):
(WTR::AccessibilityUIElement::title):
(WTR::AccessibilityUIElement::description):
(WTR::AccessibilityUIElement::orientation const):
(WTR::AccessibilityUIElement::stringValue):
(WTR::AccessibilityUIElement::language):
(WTR::AccessibilityUIElement::helpText const):
(WTR::AccessibilityUIElement::embeddedImageDescription const):

7:51 PM Changeset in webkit [286535] by mmaxfield@apple.com
  • 9 edits in trunk

Rename DerivedSources/WebKit2 to DerivedSources/WebKit
https://bugs.webkit.org/show_bug.cgi?id=233803

Reviewed by Tim Horton.

Mechanical rename.

No new tests because there is no behavior change.

  • Configurations/BaseTarget.xcconfig:
  • DerivedSources-output.xcfilelist:
  • PlatformGTK.cmake:
  • Scripts/generate-derived-sources.sh:
  • Scripts/generate-unified-sources.sh:
  • UnifiedSources-output.xcfilelist:
  • WebKit.xcodeproj/project.pbxproj:
8:51 AM Changeset in webkit [286534] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Compute isFirstBox/isLastBox for text content
https://bugs.webkit.org/show_bug.cgi?id=233850

Reviewed by Antti Koivisto.

This is in preparation for helping the iterator interface to compute renderer (layout box) boundaries for text content.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

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

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.h:
  • layout/formattingContexts/inline/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::lineLayoutForIntergration):

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

(WebCore::InlineDisplay::Box::setIsFirstBox):

8:08 AM Changeset in webkit [286533] by beidson@apple.com
  • 2 edits
    7 adds in trunk/Source/WebKit

Add command line webpushtool for daemon development and debugging.
https://bugs.webkit.org/show_bug.cgi?id=233845

Reviewed by Tim Horton.

No behavior change.

This utility will eventually be quite fleshed out.

For now, it can act as a terminal that prints debug messages from webpushd.

  • Configurations/webpushtool.xcconfig: Added.
  • Resources/webpushtool.entitlements: Added.
  • WebKit.xcodeproj/project.pbxproj:
  • WebKit.xcodeproj/xcshareddata/xcschemes/webpushtool.xcscheme: Added.
  • webpushd/webpushtool/WebPushToolConnection.h: Added.
  • webpushd/webpushtool/WebPushToolConnection.mm: Added.

(WebPushTool::Connection::create):
(WebPushTool::maybeConnectToService):
(WebPushTool::Connection::Connection):
(WebPushTool::Connection::connectToService):
(WebPushTool::Connection::startAction):
(WebPushTool::Connection::startDebugStreamAction):
(WebPushTool::Connection::sendAuditToken):
(WebPushTool::Connection::connectionDropped):
(WebPushTool::Connection::messageReceived):

  • webpushd/webpushtool/WebPushToolMain.mm: Added.

(printUsageAndTerminate):
(main):

7:28 AM Changeset in webkit [286532] by graouts@webkit.org
  • 5 edits
    2 adds in trunk

CSS animation sorting may crash due to AnimationList copy upon CSS Animation removal
https://bugs.webkit.org/show_bug.cgi?id=233819
rdar://85596065

Reviewed by Dean Jackson and Darin Adler.

Source/WebCore:

Test: webanimations/css-animation-sorting-crash-2.html

When resolving animations during style resolution, we sort them to ensure they're in the right
composite order as defined by the Web Animations and related specifications, in this case the
CSS Animations specification defining how CSS Animations set on a given element are sorted.

Indeed, a given element may have multiple animations specified on it, and in fact it may have
multiple instances of the same animation. For instance, setting animation-name: anim, anim, anim
would create three separate CSS Animations all with the same keyframes and timing properties.

The CSS machinery within WebKit creates an AnimationList to reference the animations parsed from
CSS. Each animation is an Animation object. These Animation objects are ref-counted.

When we update animations, using Styleable::updateCSSAnimations(), we compare the current AnimationList
for this style resolution, with the previous AnimationList specified when this method was last called
for this element. The outcome of this comparison will yield new CSSAnimation objects, the removal of
such objects or the update of existing objects by setting the Animation object as its "backing animation".

When we're done we keep a reference to the current AnimationList on the element's KeyframeEffectStack.

Later, when we resolve animations during style resolution and we get to sort the animations, we will
use the AnimationList which contains the Animation objects in the order they were specified in the
animation-list property to establish the order in which the CSSAnimation objects should be ordered
relative to one another, based on their "backing animation" which must be an Animation object found
in the AnimationList.

If we fail to find matching Animation objects, we crash due to a call to RELEASE_ASSERT_NOT_REACHED()
in compareCSSAnimations(const CSSAnimation&, const CSSAnimation&).

So, why would we ever get in a situation where we reach this RELEASE_ASSERT_NOT_REACHED? Well, there is
a situation where we manipulate the AnimationList set on the KeyframeEffectStack in Styleable::updateCSSAnimations().
That case is when Styleable::cancelDeclarativeAnimations() is called, and we call the static function
removeCSSAnimationCreatedByMarkup(). In this function, we actually make a copy of the previously recorded
AnimationList because that list is const so we can't manipulate it directly. To make this copy we call
AnimationList::copy() which creates a new AnimationList object, which itself is not the issue, but also
makes copies of each Animation object within. Now, that's the problem, because at this point our pointer
comparisons in compareCSSAnimations() will fail since the Animation objects we recorded in
Styleable::updateCSSAnimations() will no longer be the same instances as those in the manipulated AnimationList.

To fix this, we add a new AnimationList::shallowCopy() method to specify whether we want clones or references
of the Animation members, and when calling removeCSSAnimationCreatedByMarkup(), we use this new method such
that we get references and not clones. This ensures that removing an animation from the list will indeed
create a new AnimationList, but the two lists will have references to the same Animation objects.

  • platform/animation/AnimationList.cpp:

(WebCore::AnimationList::AnimationList):

  • platform/animation/AnimationList.h:

(WebCore::AnimationList::copy const):
(WebCore::AnimationList::shallowCopy const):

  • style/Styleable.cpp:

(WebCore::removeCSSAnimationCreatedByMarkup):

LayoutTests:

Add a test that used to crash before this patch.

  • webanimations/css-animation-sorting-crash-2-expected.txt: Added.
  • webanimations/css-animation-sorting-crash-2.html: Added.
7:24 AM Changeset in webkit [286531] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Fix parentNode in CompositeEditCommand::splitTreeToNode
https://bugs.webkit.org/show_bug.cgi?id=230710

Patch by Rob Buis <rbuis@igalia.com> on 2021-12-04
Reviewed by Ryosuke Niwa.

Source/WebCore:

Fix parentNode handling in CompositeEditCommand::splitTreeToNode and
also a few more IndentOutdentCommand methods to support the test case.

Test: editing/execCommand/outdent-cut-crash.html

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::moveParagraphs):

  • editing/IndentOutdentCommand.cpp:

(WebCore::IndentOutdentCommand::indentIntoBlockquote): do not call positionInParentAfterNode
if insertNodeBefore failed.
(WebCore::IndentOutdentCommand::outdentParagraph): need to check for null positions
before calling moveParagraphs.

LayoutTests:

  • editing/execCommand/outdent-cut-crash-expected.txt: Added.
  • editing/execCommand/outdent-cut-crash.html: Added.
7:22 AM Changeset in webkit [286530] by Tyler Wilcock
  • 7 edits in trunk/LayoutTests

AX: Make ellipsis-text.html, aria-roledescription.html, and aria-switch-checked.html pass in isolated tree mode
https://bugs.webkit.org/show_bug.cgi?id=233790

Reviewed by Chris Fleizach.

  • accessibility/aria-roledescription-expected.txt:
  • accessibility/aria-roledescription.html:
  • accessibility/aria-switch-checked-expected.txt:
  • accessibility/aria-switch-checked.html:

Make these tests async. They must be made async to pass in
isolated tree mode as they dynamically change page content using JS.

  • accessibility/ellipsis-text.html:

Make this test isolated-tree-friendly by selecting elements with accessibleElementById instead
document.getElementById("id").focus() and accessibilityController.focusedElement

  • platform/glib/accessibility/aria-roledescription-expected.txt:

Update platform-specfic expectation for the new version of this test.

5:52 AM Changeset in webkit [286529] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Set BoxGeometry for bidi inline boxes
https://bugs.webkit.org/show_bug.cgi?id=233616

Reviewed by Antti Koivisto.

In this patch we compute the BoxGeometry values for the bidi inline boxes.
BoxGeometry is mostly used for boundingClientRect/offsetWidth(left etc).

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):

1:13 AM Changeset in webkit [286528] by commit-queue@webkit.org
  • 12 edits in trunk/Source/WebCore

Prepare for SharedWorker implementation
https://bugs.webkit.org/show_bug.cgi?id=233848

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

This splits off the parts of bug 230382 that don't change behavior.

  • workers/AbstractWorker.cpp:

(WebCore::AbstractWorker::workerFetchOptions):

  • workers/AbstractWorker.h:
  • workers/DedicatedWorkerThread.h:
  • workers/Worker.cpp:

(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):

  • workers/Worker.h:
  • workers/WorkerOptions.h:
  • workers/WorkerOrWorkletScriptController.cpp:
  • workers/WorkerOrWorkletScriptController.h:
  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::createThread):

  • workers/WorkerThread.h:

(WebCore::WorkerThread::isServiceWorkerThread const): Deleted.

  • workers/service/context/ServiceWorkerThread.h:
12:28 AM Changeset in webkit [286527] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[Cocoa] Launch Captive Portal WebContent process when requested
https://bugs.webkit.org/show_bug.cgi?id=233824
<rdar://problem/86023898>

Reviewed by Darin Adler.

When the WebKit client requests a Captive Portal process, launch the dedicated XPC service
with Captive Portal entitlements.

  • UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm:

(WebKit::webContentServiceName): New helper function.
(WebKit::serviceName): Update to use new helper.
(WebKit::ProcessLauncher::launchProcess): Log errors when launching.

  • WebKit.xcodeproj/project.pbxproj: Include the CaptivePortal xpc service when creating

development symlinks.

Dec 3, 2021:

10:12 PM Changeset in webkit [286526] by Said Abou-Hallawa
  • 13 edits in trunk

[GPU Process] (REGRESSION r285597): Fix SVGFilter clamping calculation
https://bugs.webkit.org/show_bug.cgi?id=233843

Reviewed by Simon Fraser.

Source/WebCore:

In this patch:

  1. lastEffect() is made virtual function of Filter and it's already implemented as non-virtual function in both CSSFilter and SVGFilter.
  1. The clamping calculations for SVGFilter and CSSFilter are merged in one function called Filter::clampFilterRegionIfNeeded(). This merge makes the new function is the only caller to FilterEffect::maxEffectRect().
  1. Remove FilterEffect::maxEffectRect() . It can be calculated by clipping the FilterEffect::filterPrimitiveSubregion() to filterRegion() and then scaling the result by filterScale().
  1. In RenderSVGResourceFilter::applyResource() we need to pass the non- scaled drawingRegion to ImageBuffer::sizeNeedsClamping() because this function starts by scaling the argument 'size' by the argument 'scale'. So we were doubling the scaling by passing 'absoluteDrawingRegion'
  1. SVGRenderingContext::createImageBuffer() needs to use ImageBuffer:: sizeNeedsClamping() instead of using ImageBuffer::clampedSize(). The former function clamps the size to the MaxClampedArea. But the later function shrinks the size to { MaxClampedLength, MaxClampedLength }.
When calling createImageBuffer() from RenderSVGResourceFilter
applyResource() we do not expect any further clamping. But if we pass a size with a side greater than MaxClampedLength to clampedSize(), it will be clamped even if the area is less than MaxClampedArea. And for filters we clamp to the area.
  • platform/graphics/filters/Filter.cpp:

(WebCore::Filter::clampFilterRegionIfNeeded):

  • platform/graphics/filters/Filter.h:
  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::determineFilterPrimitiveSubregion):
(WebCore::FilterEffect::apply):

  • platform/graphics/filters/FilterEffect.h:

(WebCore::FilterEffect::maxEffectRect const): Deleted.
(WebCore::FilterEffect::setMaxEffectRect): Deleted.

  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::lastEffect const):
(WebCore::CSSFilter::lastEffect): Deleted.
(WebCore::CSSFilter::determineFilterPrimitiveSubregion): Deleted.

  • rendering/CSSFilter.h:
  • rendering/RenderLayerFilters.cpp:

(WebCore::RenderLayerFilters::beginFilterEffect):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::createImageBuffer):

  • svg/graphics/filters/SVGFilter.h:

LayoutTests:

Unskip two layout tests which were skipped in r285597.

7:30 PM Changeset in webkit [286525] by Lauro Moura
  • 3 edits in trunk/LayoutTests

[GLIB] Gardening some consistent timeouts

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/wpe/TestExpectations:
7:08 PM Changeset in webkit [286524] by Russell Epstein
  • 1 copy in tags/Safari-612.4.2

Tag Safari-612.4.2.

7:05 PM Changeset in webkit [286523] by Russell Epstein
  • 8 edits in branches/safari-612-branch/Source

Versioning.

WebKit-7612.4.2

5:35 PM Changeset in webkit [286522] by Wenson Hsieh
  • 4 edits in trunk

[iOS] Web content process sometimes crashes under WebPage::positionInformation()
https://bugs.webkit.org/show_bug.cgi?id=233841
rdar://85917212

Reviewed by Geoffrey Garen.

Source/WebKit:

Add a missing null check in the case where the hit-tested node is null in WebPage::positionInformation. This
can happen in a number of ways (one of which is exercised by the new API test).

Test: ImageAnalysisTests.DoNotCrashWhenHitTestingOutsideOfWebView

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::positionInformation):

Tools:

Add a test that exercises hit-testing for Live Text, but induces this crash by hit-testing outside of the bounds
of the web view (such that the hit-tested node ends up as null).

  • TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:

(TestWebKitAPI::swizzledLocationInView):
(TestWebKitAPI::TEST):

5:14 PM Changeset in webkit [286521] by Russell Epstein
  • 1 copy in tags/Safari-612.4.1

Tag Safari-612.4.1.

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

Add BroadcastChannel, COOP, COEP and Web Locks to features.json
https://bugs.webkit.org/show_bug.cgi?id=233839

Reviewed by Alex Christensen.

  • features.json:
4:02 PM Changeset in webkit [286519] by wilander@apple.com
  • 24 edits in trunk

PCM: Unlinkable tokens for triggering event to prevent fraud
https://bugs.webkit.org/show_bug.cgi?id=233673
<rdar://79426347>

Reviewed by Alex Christensen.

Source/WebCore:

This patch allows triggering events to have an optional query parameter like this:
https://destination.example/.well-known/private-click-measurement/trigger-attribution/11?attributionDestinationNonce=ABCDEFabcdef0123456789

The presence of an attributionDestinationNonce triggers PrivateClickMeasurementManager to
ask the server to sign an unlinkable token for the triggering event and then stores the
corresponding secret token plus the signature for later inclusion in the attribution report.

The WebCore changes introduce these new structs and data fields in
WebCore::PrivateClickMeasurement:

  • EphemeralDestinationNonce
  • UnlinkableToken (base class for the specific ones for source and destination)
  • SourceUnlinkableToken
  • DestinationUnlinkableToken
  • SecretToken (base class for the specific ones for source and destination)
  • SourceSecretToken
  • DestinationSecretToken

WebCore::PrivateClickMeasurement::AttributionTriggerData now has these optional fields:

  • ephemeralDestinationNonce
  • destinationUnlinkableToken
  • destinationSecretToken
  • destinationSite

The remaining changes are setters/getters and creator functions for those data fields.

New API/unit test PrivateClickMeasurement.DestinationClickFraudPrevention.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parsePrivateClickMeasurement const):

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::SecretToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::SourceSecretToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::DestinationSecretToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::EphemeralNonce::isolatedCopy const):
(WebCore::PrivateClickMeasurement::UnlinkableToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::SourceUnlinkableToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::DestinationUnlinkableToken::isolatedCopy const):
(WebCore::PrivateClickMeasurement::parseAttributionRequestQuery):
(WebCore::PrivateClickMeasurement::parseAttributionRequest):
(WebCore::PrivateClickMeasurement::attributionReportJSON const):
(WebCore::PrivateClickMeasurement::EphemeralNonce::isValid const):
(WebCore::PrivateClickMeasurement::setEphemeralSourceNonce):
(WebCore::PrivateClickMeasurement::tokenPublicKeyURL):
(WebCore::PrivateClickMeasurement::tokenPublicKeyURL const):
(WebCore::PrivateClickMeasurement::tokenSignatureURL):
(WebCore::PrivateClickMeasurement::tokenSignatureURL const):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::tokenSignatureJSON const):
(WebCore::PrivateClickMeasurement::SecretToken::isValid const):
(WebCore::PrivateClickMeasurement::setDestinationSecretToken):
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::isolatedCopy const): Deleted.
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::isValid const): Deleted.
(WebCore::PrivateClickMeasurement::SourceSecretToken::isValid const): Deleted.

  • loader/PrivateClickMeasurement.h:

(WebCore::PrivateClickMeasurement::AttributionTriggerData::AttributionTriggerData):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::setDestinationUnlinkableTokenValue):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::setDestinationSecretToken):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::tokenPublicKeyURL const):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::tokenSignatureURL const):
(WebCore::PrivateClickMeasurement::ephemeralSourceNonce const):
(WebCore::PrivateClickMeasurement::sourceUnlinkableToken):
(WebCore::PrivateClickMeasurement::decode):
(WebCore::PrivateClickMeasurement::EphemeralNonce::encode const):
(WebCore::PrivateClickMeasurement::EphemeralNonce::decode):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::encode const):
(WebCore::PrivateClickMeasurement::AttributionTriggerData::decode):
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::encode const): Deleted.
(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::decode): Deleted.

  • loader/cocoa/PrivateClickMeasurementCocoa.mm:

(WebCore::PrivateClickMeasurement::calculateAndUpdateSourceUnlinkableToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateDestinationUnlinkableToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateUnlinkableToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateSourceSecretToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateDestinationSecretToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateSecretToken):

Source/WebKit:

This patch allows triggering events to have an optional query parameter like this:
https://destination.example/.well-known/private-click-measurement/trigger-attribution/11?attributionDestinationNonce=ABCDEFabcdef0123456789

The presence of an attributionDestinationNonce triggers PrivateClickMeasurementManager to
ask the server to sign an unlinkable token for the triggering event and then stores the
corresponding secret token plus the signature for later inclusion in the attribution report.

New API/unit test PrivateClickMeasurement.DestinationClickFraudPrevention.

  • NetworkProcess/DatabaseUtilities.cpp:

(WebKit::DatabaseUtilities::buildPrivateClickMeasurementFromDatabase const):

Now handles destination tokens.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::willSendRedirectedRequest):

Now sets destinationSite in WebCore::PrivateClickMeasurement::AttributionTriggerData.

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:

(WebKit::PCM::Database::Database):

Now calls addDestinationTokenColumnsIfNecessary().

(WebKit::PCM::Database::insertPrivateClickMeasurement):

Now does insertion of optional destination tokens.

(WebKit::PCM::Database::addDestinationTokenColumnsIfNecessary):

Database migration.

(WebKit::PCM::Database::addBundleIDColumnIfNecessary): Deleted.

Temporary migration function for non-customer builds. No longer needed.

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

(WebKit::PrivateClickMeasurementManager::storeUnattributed):

Just name changes.

(WebKit::PrivateClickMeasurementManager::getTokenPublicKey):

Not changed afaik. Seems like the diff is confused.

(WebKit::PrivateClickMeasurementManager::configureForTokenSigning):

New function to extract shared code.

(WebKit::PrivateClickMeasurementManager::getSignatureBase64URLFromTokenSignatureResponse):

New function to extract shared code.

(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableTokenForSource):

Renamed to add "ForSource" and all shared code extracted.

(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableTokenForDestination):

Different than for the source in that it results in an attribution call.

(PrivateClickMeasurementManager::handleAttribution):

Now does signing of destination token if the optional nonce is in the triggering event.

(PrivateClickMeasurementManager::fireConversionRequest):
(WebKit::PrivateClickMeasurementManager::setPCMFraudPreventionValuesForTesting):

Added empty initializer strings for the destination test token values not in use yet.

(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableToken): Deleted.

Renamed PrivateClickMeasurementManager::getSignedUnlinkableTokenForSource().

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h:

Tools:

New test PrivateClickMeasurement.DestinationClickFraudPrevention.
The other changes are a report version bump 2->3 and a name change
FraudPrevention–>SourceClickFraudPrevention.

  • TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/cocoa/PrivateClickMeasurementCocoa.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:

(TestWebKitAPI::runBasicPCMTest):
(TestWebKitAPI::triggerAttributionWithSubresourceRedirect):

Extracted shared code.

(TestWebKitAPI::runDestinationWebView):

Extracted shared code.

(TestWebKitAPI::signUnlinkableTokenAndSendSecretToken):

Extracted shared code.

(TestWebKitAPI::TEST):

New test PrivateClickMeasurement.DestinationClickFraudPrevention.
Extracted shared code from PrivateClickMeasurement.SourceClickFraudPrevention.

LayoutTests:

These changes are a report version bump 2->3.

  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt:
  • http/tests/privateClickMeasurement/expired-attribution-report-gets-sent-on-session-start-expected.txt:
  • http/tests/privateClickMeasurement/multiple-app-bundle-ids-expected.txt:
  • http/tests/privateClickMeasurement/send-attribution-conversion-request-expected.txt:
  • http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce-expected.txt:
  • http/tests/privateClickMeasurement/triggering-event-with-attribution-source-through-fetch-keepalive-expected.txt:
  • platform/ios/http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt:
3:42 PM Changeset in webkit [286518] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Move the (bidi)display boxes horizontally by the inline box margin, border and padding end as needed
https://bugs.webkit.org/show_bug.cgi?id=233744

Reviewed by Antti Koivisto.

Keep track of the inline box range in the context of display boxes so that we can adjust the content horizontally
with the margin/border/padding end of the "last" inline box.
We also set the width of the (fragmented inline box type of) display boxes here based on their content right position.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):

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

(WebCore::InlineDisplay::Box::setLogicalRight):

  • layout/layouttree/LayoutBoxGeometry.h:

(WebCore::Layout::BoxGeometry::borderAndPaddingEnd const):

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

Fix playstation build after r286484
https://bugs.webkit.org/show_bug.cgi?id=233823

unreviewed build fix.

Patch by ujwal koneru <ujwal.koneru@sony.com> on 2021-12-03

  • UIProcess/playstation/WebProcessPoolPlayStation.cpp:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/playstation/WebProcessPlayStation.cpp:

(WebKit::WebProcess::platformInitializeWebProcess):

2:48 PM Changeset in webkit [286516] by fpizlo@apple.com
  • 5 edits
    1 add in trunk/Source/bmalloc

[libpas] Bitfit allocator has a wrong assertion when a page's max_free is enough for the size of an allocation, not enough for that allocation's size class, and the object of that size is not aligned to the currently requested alignment
https://bugs.webkit.org/show_bug.cgi?id=233831

Reviewed by Yusuke Suzuki.

What a combination of conditions:

  • We just failed bitfit allocation in a page, which gives us some max_free (aka largest_available), and the allocation had nontrivial alignment.
  • The max_free is smaller than the size class.
  • The max_free is larger than the requested size.
  • The max_free object is not aligned to the requested alignment.


The code handles this fine, but has a wrong assertion about it.

This change fixes the assertion and adds a test that deterministically reproduced the issue.

  • libpas/libpas.xcodeproj/project.pbxproj:
  • libpas/src/libpas/pas_bitfit_allocator.c:

(pas_bitfit_allocator_finish_failing):

  • libpas/src/libpas/pas_bitfit_allocator_inlines.h:

(pas_bitfit_allocator_try_allocate):

  • libpas/src/test/BitfitTests.cpp: Added.

(std::getBitfitSizeClasses):
(std::assertSizeClasses):
(std::testAllocateAlignedSmallerThanSizeClassAndSmallerThanLargestAvailable):
(addBitfitTests):

  • libpas/src/test/TestHarness.cpp:

(main):

1:58 PM Changeset in webkit [286515] by Russell Epstein
  • 1 copy in tags/Safari-613.1.10

Tag Safari-613.1.10.

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

[WK2] Turn on Web Locks API support
https://bugs.webkit.org/show_bug.cgi?id=233816

Reviewed by Darin Adler.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
1:14 PM Changeset in webkit [286513] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Fix the build

  • NetworkProcess/storage/NetworkStorageManager.cpp:
1:10 PM Changeset in webkit [286512] by timothy_horton@apple.com
  • 4 edits in trunk/Source/WebKit

Add more logging for MomentumEventDispatcher
https://bugs.webkit.org/show_bug.cgi?id=233811

Reviewed by Simon Fraser.

Add a temporary event log to MomentumEventDispatcher, to debug delta/offset/curve issues.

  • WebProcess/WebPage/EventDispatcher.h:

(WebKit::EventDispatcher::queue):

  • WebProcess/WebPage/MomentumEventDispatcher.cpp:

(WebKit::MomentumEventDispatcher::handleWheelEvent):
Accumulate event deltas. Also accumulate event deltas for the
fingers-down phase in the "generated" offset. Store the phase and
momentum phase smooshed into a single field.

(WebKit::MomentumEventDispatcher::dispatchSyntheticMomentumEvent):
Accumulate generated deltas.

(WebKit::MomentumEventDispatcher::didEndMomentumPhase):
Attempt to dump the log 1 second after each momentum phase. We'll skip
it if another scroll has started since.

(WebKit::MomentumEventDispatcher::setScrollingAccelerationCurve):
(WebKit::MomentumEventDispatcher::startDisplayLink):
(WebKit::MomentumEventDispatcher::stopDisplayLink):
(WebKit::MomentumEventDispatcher::consumeDeltaForCurrentTime):
(WebKit::MomentumEventDispatcher::buildOffsetTableWithInitialDelta):
(WebKit::MomentumEventDispatcher::computeNextDelta):
Adopt more MOMENTUM_EVENT_DISPATCHER_TEMPORARY_LOGGING. Error logging
we leave outside of this, because that we'll keep around.

(WebKit::MomentumEventDispatcher::pushLogEntry):
(WebKit::MomentumEventDispatcher::flushLog):
Dump the event log in an easy-to-copy-into-a-CSV format.

  • WebProcess/WebPage/MomentumEventDispatcher.h:
12:37 PM Changeset in webkit [286511] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Fix internal Apple builds

Unreviewed.

Turns out -weak_framework works if the framework isn't present at runtime, but
still requires the framework to be present at build time.

No new tests because there is no behavior change.

  • Configurations/WebCore.xcconfig:
12:29 PM Changeset in webkit [286510] by Russell Epstein
  • 11 edits in branches/safari-612-branch

Cherry-pick r286505. rdar://problem/85918531

Follow-up to r286479 to add API test and address issues found by the test
https://bugs.webkit.org/show_bug.cgi?id=233798

Reviewed by Darin Adler.

Source/WebKit:

Add functionality needed for API testing and fix issues found by the API test.

  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm: (-[WKWebView _isLayerTreeFrozenForTesting:]):
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::destroyProvisionalPage): (WebKit::WebPageProxy::isLayerTreeFrozen):
  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::isLayerTreeFrozen):
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in: Add new SPI to check if the layer tree is frozen in the WebProcess so that I could write an API test for this.
  • UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::ProvisionalPageProxy): Make sure m_provisionalLoadURL gets initialized when the ProvisionalPageProxy gets constructed *after* the provisional load has already started (which is the case when the process swap is triggered by COOP).

(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
If the provisional load load fails in the provisional process, and the ProvisionalPageProxy
was constructed on resource response (COOP case), then no longer forward the
didFailProvisionalLoadForFrame() to the WebPageProxy. Instead, we destroy the
ProvisionalPageProxy. This is to avoid duplicate calls to didFailProvisionalLoadForFrame().
In this case, there is still a provisional load ongoing in the committed process and the
ProvisionalPageProxy destructor will take care of stopping that provisional load (due to
r286479), which will cause the committed process to send its own
didFailProvisionalLoadForFrame IPC.

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

12:29 PM Changeset in webkit [286509] by Russell Epstein
  • 4 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r286479. rdar://problem/85918531

Regression(r283179) Google Drive freezes after downloading a folder
https://bugs.webkit.org/show_bug.cgi?id=233783
<rdar://85918531>

Reviewed by Darin Adler.

When process-swapping on a navigation response due to COOP, we create a new ProvisionalPageProxy
to trigger a provisional load in a new WebProcess. In the common case, the ProvisionalPageProxy
gets committed, we process-swap and everything works fine. However, if the client decides to
convert the navigation into a download (like in the Google Drive case), then the
ProvisionalPageProxy gets destroyed without being committed. The issue is that the committed
process still thinks at this point that it is in the middle of a navigation and its layer
tree is thus frozen with reason=PageTransition. This is what makes Google Drive look frozen
after the download. This is not an issue with PSON because the process-swap happens in
decidePolicyForNavigationAction() and we tell the previous process to ignore the navigation
when we process-swap.

To address the issue, we now tell the committed process to cancel its navigation if the
ProvisionalPageProxy ends up getting destroyed without being committed. This lets the
committed process know there is no point in waiting for this navigation to happen and allows
it to unfreeze its layer tree.

  • UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::ProvisionalPageProxy): (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
  • UIProcess/ProvisionalPageProxy.h: (WebKit::ProvisionalPageProxy::isProcessSwappingOnNavigationResponse const): (WebKit::ProvisionalPageProxy::shouldClosePreviousPageAfterCommit const): Deleted.
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::commitProvisionalPage): (WebKit::WebPageProxy::continueNavigationInNewProcess):

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

12:23 PM Changeset in webkit [286508] by Robert Jenner
  • 6 edits in trunk/Source/WebKit

Unreviewed, reverting r286487.

Broke multiple builds.

Reverted changeset:

"Rename DerivedSources/WebKit2 to DerivedSources/WebKit"
https://bugs.webkit.org/show_bug.cgi?id=233803
https://commits.webkit.org/r286487

12:17 PM Changeset in webkit [286507] by sihui_liu@apple.com
  • 29 edits
    1 add in trunk

Fetch and remove file system data via WKWebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=233567

Reviewed by Youenn Fablet.

Source/WebCore:

  • Modules/filesystemaccess/FileSystemStorageConnection.h:

Source/WebKit:

Introduce a new WebsiteDataType value FileSystem for FileSystemAccess data. Network process now can fetch and
delete this type of data when fetching and deleteing website data (if FileSystem type is included in target
types).

To track origins that have FileSystem data, this patch introduces a new file named origin in the origin's
directory. This file will be created when OriginStorageManager is created.

To delete existing FileSystem data, network process finds origins that are requested to be deleted and have data
on disk, closes active access handles, and deletes the files. The origin file mentioned above will be deleted if
there is no other file left in the same directory, and empty directories will be deleted.

New API tests: FileSystemAccess.FetchAndRemoveData

FileSystemAccess.RemoveDataByModificationTime
FileSystemAccess.FetchDataForThirdParty

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::monitoredDataTypes):

  • NetworkProcess/NetworkProcess.cpp:

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

  • NetworkProcess/storage/FileSystemStorageHandle.h:

(WebKit::FileSystemStorageHandle::activeSyncAccessHandle const):

  • NetworkProcess/storage/FileSystemStorageManager.cpp:

(WebKit::FileSystemStorageManager::~FileSystemStorageManager):
(WebKit::FileSystemStorageManager::close):

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

(WebKit::readOriginFromFile):
(WebKit::writeOriginToFileIfNecessary):
(WebKit::deleteOriginFileIfNecessary):
(WebKit::originDirectoryPath):
(WebKit::originFilePath):
(WebKit::NetworkStorageManager::localOriginStorageManager):
(WebKit::NetworkStorageManager::removeOriginStorageManagerIfPossible):
(WebKit::toWebsiteDataType):
(WebKit::NetworkStorageManager::forEachOriginDirectory):
(WebKit::NetworkStorageManager::fetchDataFromDisk):
(WebKit::NetworkStorageManager::fetchData):
(WebKit::NetworkStorageManager::deleteDataOnDisk):
(WebKit::NetworkStorageManager::deleteData):
(WebKit::NetworkStorageManager::deleteDataModifiedSince):
(WebKit::NetworkStorageManager::deleteDataForRegistrableDomains):
(WebKit::originPath): Deleted.

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

(WebKit::OriginStorageManager::StorageBucket::toStorageIdentifier):
(WebKit::OriginStorageManager::StorageBucket::typeStoragePath const):
(WebKit::OriginStorageManager::StorageBucket::fileSystemStorageManager):
(WebKit::OriginStorageManager::StorageBucket::isActive):
(WebKit::OriginStorageManager::StorageBucket::deleteData):
(WebKit::OriginStorageManager::StorageBucket::deleteFileSystemStorageData):
(WebKit::OriginStorageManager::OriginStorageManager):
(WebKit::OriginStorageManager::isActive):
(WebKit::OriginStorageManager::deleteData):

  • NetworkProcess/storage/OriginStorageManager.h:
  • Shared/WebsiteData/WebsiteData.cpp:

(WebKit::WebsiteData::ownerProcess):

  • Shared/WebsiteData/WebsiteDataType.h:
  • UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:

(dataTypesToString):

  • UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:

(WebKit::toWebsiteDataType):
(WebKit::toWKWebsiteDataTypes):

  • UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(+[WKWebsiteDataStore _allWebsiteDataTypesIncludingPrivate]):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didReceiveMessage):

  • WebProcess/WebCoreSupport/WebFileSystemStorageConnection.messages.in: Added.

Source/WTF:

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::readEntireFile): Read whole file content into a Vector.
(WTF::FileSystemImpl::deleteAllFilesModifiedSince): Recursively delete files and folders modified after
specified time in a directory.

  • wtf/FileSystem.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm:
11:52 AM Changeset in webkit [286506] by Russell Epstein
  • 8 edits in branches/safari-613.1.8-branch/Source

Versioning.

WebKit-7613.1.8.4

11:39 AM Changeset in webkit [286505] by Chris Dumez
  • 11 edits in trunk

Follow-up to r286479 to add API test and address issues found by the test
https://bugs.webkit.org/show_bug.cgi?id=233798

Reviewed by Darin Adler.

Source/WebKit:

Add functionality needed for API testing and fix issues found by the API test.

  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _isLayerTreeFrozenForTesting:]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::destroyProvisionalPage):
(WebKit::WebPageProxy::isLayerTreeFrozen):

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

(WebKit::WebPage::isLayerTreeFrozen):

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

Add new SPI to check if the layer tree is frozen in the WebProcess so that I could
write an API test for this.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
Make sure m_provisionalLoadURL gets initialized when the ProvisionalPageProxy gets
constructed *after* the provisional load has already started (which is the case
when the process swap is triggered by COOP).

(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
If the provisional load load fails in the provisional process, and the ProvisionalPageProxy
was constructed on resource response (COOP case), then no longer forward the
didFailProvisionalLoadForFrame() to the WebPageProxy. Instead, we destroy the
ProvisionalPageProxy. This is to avoid duplicate calls to didFailProvisionalLoadForFrame().
In this case, there is still a provisional load ongoing in the committed process and the
ProvisionalPageProxy destructor will take care of stopping that provisional load (due to
r286479), which will cause the committed process to send its own
didFailProvisionalLoadForFrame IPC.

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
11:21 AM Changeset in webkit [286504] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WTF

Enable Momentum Event Generator by default
https://bugs.webkit.org/show_bug.cgi?id=233807
<rdar://problem/85262515>

Reviewed by Simon Fraser.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Turn it on for modern WebKit. Adjust the description slightly.

11:06 AM Changeset in webkit [286503] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] WPT css-transform transform-interpolation-rotate-slerp.html is flaky img failing after updated in r286002

Unreviewed test gardening.

  • platform/glib/TestExpectations:
10:30 AM Changeset in webkit [286502] by keith_miller@apple.com
  • 11 edits
    1 delete in trunk/Source/JavaScriptCore

Remove StructureIDBlob
https://bugs.webkit.org/show_bug.cgi?id=233723

Reviewed by Yusuke Suzuki.

StructureIDBlob isn't very useful now that StructureIDs are just the
bottom bits of the pointer on 64 bit platforms. In a follow up patch
I'll change the layout of JSCell and Structure so that TypeInfo creation
can be a single load platforms that allow (and don't penalize) misaligned loads.

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

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

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitStoreStructureWithTypeInfo):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_put_to_scope):

  • runtime/Structure.cpp:

(JSC::Structure::Structure):
(JSC::Structure::addNewPropertyTransition):
(JSC::Structure::removeNewPropertyTransition):
(JSC::Structure::attributeChangeTransition):
(JSC::Structure::nonPropertyTransitionSlow):
(JSC::Structure::setBrandTransition):

  • runtime/Structure.h:

(JSC::Structure::id const):
(JSC::Structure::objectInitializationBlob const):
(JSC::Structure::idBlob const):
(JSC::Structure::isProxy const):
(JSC::Structure::typeInfo const):
(JSC::Structure::indexingType const):
(JSC::Structure::indexingMode const):
(JSC::Structure::fencedIndexingMode):
(JSC::Structure::indexingModeIncludingHistory const):
(JSC::Structure::indexingModeIncludingHistoryOffset):
(JSC::Structure::structureIDOffset): Deleted.

  • runtime/StructureIDBlob.h: Removed.
  • runtime/StructureInlines.h:

(JSC::Structure::hasIndexingHeader const):

  • tools/VMInspectorInlines.h:

(JSC::VMInspector::verifyCellSize):

10:29 AM Changeset in webkit [286501] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[ Monterey wk2 ] http/tests/media/video-webm-stall.html (layout-test) is a constant text failure
https://bugs.webkit.org/show_bug.cgi?id=233717
rdar://85933254

Reviewed by Peng Liu.

After r274117, we call PlatformMediaSessionManager::setWebMFormatReaderEnabled in GPUProcess with
m_webMParserEnabled instead of the value of m_webMFormatReaderEnabled. Since we (arbitrarily) update WebM
parser enablement before WebM format reader enablement, this means that the first call to update preferences
leaves the WebM format reader disabled on PlatformMediaSessionManager even though it should be enabled. Prior to
the more recent change in r285477, this would be corrected on subsequent calls into
GPUProcessProxy::updatePreferences(), which previously sent GPUProcess::SetWebMFormatReaderEnabled()
messages even if the value of the preference hadn't changed.

r285477 removed those redundant IPC messages when the enablement value hasn't changed, so we can no longer
rely on PlatformMediaSessionManager being eventually updated to true due to m_webMParserEnabled being set to
true. Simply fix this by using m_webMFormatReaderEnabled instead of m_webMParserEnabled.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::setWebMFormatReaderEnabled):

10:15 AM Changeset in webkit [286500] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Set the first/last box flag on the (bidi fragmented) inline box type of display boxes
https://bugs.webkit.org/show_bug.cgi?id=233743

Reviewed by Antti Koivisto.

Keep track of the last constructed inline box type of display box position so that when we
happen to create another fragment for this same inline box, we can change the 'isLastBox' box to false.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::insertInlineBoxDisplayBoxForBidiBoundary):
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.h:
10:00 AM Changeset in webkit [286499] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Introduce WorkerGlobalScope::type() function
https://bugs.webkit.org/show_bug.cgi?id=233793

Reviewed by Alex Christensen.

Introduce WorkerGlobalScope::type() function to replace isDedicatedWorkerGlobalScope() / isServiceWorkerGlobalScope()
/ isSharedWorkerGlobalScope(). This is extracted from Alex's large patch at Bug 230382.

  • workers/shared/SharedWorkerGlobalScope.h:

(isType):

9:45 AM Changeset in webkit [286498] by BJ Burg
  • 3 edits in trunk/Source/WebKit

Web Inspector: Web Inspector2 crashes after closing if Web Inspector1 closed first
https://bugs.webkit.org/show_bug.cgi?id=233293
<rdar://problem/85526508>

Reviewed by Devin Rousso.

Cache the inspected page's identifier. During frontend teardown, use the cached indentifier
to remove the message receiver that was added to receive messages from the inspected page.

Other operations using m_inspectedPage should be guarded in case that the inspected
page already been closed and destroyed.

  • UIProcess/Inspector/WebInspectorUIProxy.cpp:

(WebKit::WebInspectorUIProxy::createFrontendPage):
(WebKit::WebInspectorUIProxy::closeFrontendPageAndWindow):

  • UIProcess/Inspector/WebInspectorUIProxy.h:
9:36 AM Changeset in webkit [286497] by BJ Burg
  • 3 edits in trunk/Source/WebKit

[Cocoa] Web Inspector: fix completion handler type signature for _WKInspectorExtension methods
https://bugs.webkit.org/show_bug.cgi?id=233792
<rdar://problem/85995314>

Reviewed by Devin Rousso.

  • UIProcess/API/Cocoa/_WKInspectorExtension.h:
  • UIProcess/API/Cocoa/_WKInspectorExtension.mm:

(-[_WKInspectorExtension evaluateScript:frameURL:contextSecurityOrigin:useContentScriptContext:completionHandler:]):
(-[_WKInspectorExtension evaluateScript:inTabWithIdentifier:completionHandler:]):
Replace the completionHandler's NSDictionary argument type with id.

A dictionary is not necessarily returned here because the implementation deserializes a SerializedScriptValue.
This could be a string, number, array, dictionary, or other serializable values.

While the frontend does return a dictionary payload, this is unpacked on the WebProcess-side
before being sent back out via the _WKInspectorExtension APi.

9:35 AM Changeset in webkit [286496] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Improve dictionary-based DOMPromiseDeferred::settle
https://bugs.webkit.org/show_bug.cgi?id=233751

Patch by Youenn Fablet <youenn@apple.com> on 2021-12-03
Reviewed by Chris Dumez.

Make settle a templated function so that it can adapt to any ExceptionOr based type.
Update call sites that use settle for non ExceptionOr types as they should either use reject or resolve directly.
Covered by existing tests.

  • Modules/applepay/ApplePaySetup.cpp:

(WebCore::ApplePaySetup::getSetupFeatures):
(WebCore::ApplePaySetup::begin):
(WebCore::ApplePaySetup::stop):

  • Modules/filesystemaccess/FileSystemDirectoryHandle.cpp:

(WebCore::FileSystemDirectoryHandle::getFileHandle):
(WebCore::FileSystemDirectoryHandle::getDirectoryHandle):
(WebCore::FileSystemDirectoryHandle::resolve):

  • Modules/filesystemaccess/FileSystemFileHandle.cpp:

(WebCore::FileSystemFileHandle::createSyncAccessHandle):

  • bindings/js/JSDOMPromiseDeferred.h:

(WebCore::DOMPromiseDeferred::settle):
(WebCore::DOMPromiseDeferred<IDLDictionary<T>>::resolve): Deleted.
(WebCore::DOMPromiseDeferred<IDLDictionary<T>>::settle): Deleted.
(WebCore::DOMPromiseDeferred<IDLInterface<T>>::resolve): Deleted.
(WebCore::DOMPromiseDeferred<IDLInterface<T>>::settle): Deleted.

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::getNavigationPreloadState):

9:19 AM Changeset in webkit [286495] by Antti Koivisto
  • 2 edits in trunk/Source/WTF

[:has() pseudo-class] Enable by default
https://bugs.webkit.org/show_bug.cgi?id=233809

Reviewed by Simon Fraser.

Flip the switch.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
9:10 AM Changeset in webkit [286494] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

[:has() pseudo-class] Improve result caching
https://bugs.webkit.org/show_bug.cgi?id=233806

Reviewed by Simon Fraser.

Improve caching to to avoid O(n2) cases during invalidation and style resolution.

  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::matchHasPseudoClass const):

Cache matches as well as failures.
Cache failures that don't apply to subtrees.
Check cached matches and failures for all :has() match element types.

  • style/SelectorMatchingState.h:
9:08 AM Changeset in webkit [286493] by fpizlo@apple.com
  • 76 edits
    7 adds in trunk/Source/bmalloc

[libpas] Update to 96f9f4c28dc119695311c7c6bd81ed1f3f4e260c (allow more specialization of partial versus exclusive allocation)
https://bugs.webkit.org/show_bug.cgi?id=233782

Reviewed by Yusuke Suzuki.

Libpas's main optimization for lots of isoheaps is partial views of shared pages: a single page may get
chopped up so that different heaps get different ranges of the page. This works out, in a not-too-gross
way, by reusing the segregated heap page management logic.

But previously, pages used exclusively versus pages that were shared looked largely the same; the only
way to tell them apart is that they had a different owner. Notably, those pages would get allocated out
of the same megapages, so a megapage lookup could not tell you if you were exclusive or shared.

This change introduces the concept of pas_segregated_page_role, which is this distinction between
exclusive and shared, and spreads it across all page management logic. So:

-> Page allocation knows the page's role, so it can use different megapages for exclusive or shared.

This enables exclusive and shared to have different deallocation fast paths.

-> Page_kind is now different depending on whether the page is exclusive or shared.

-> Many of the entrypoints into segregated_page that are required to know page_config are now also

required to know page_role. This makes sense, because the combination of megapages and page_kinds
knowing about roles means that anyone who ends up calling segregated_page API will now typically
know the role.

-> It's still possible to dynamically deduce the role using the page's owner, but hardly any code does

that.

This is leveraged in this patch to introduce some tiny space-saving optimizations to isoheaps:

-> Partial deallocation no longer uses the deallocation log.

-> Partial deallocation no longer uses the empty_word_eligibility_optimization.

This change is a stepping stone for introducing more different kinds of roles in the future.

  • CMakeLists.txt:
  • bmalloc.xcodeproj/project.pbxproj:
  • libpas/libpas.xcodeproj/project.pbxproj:
  • libpas/src/libpas/bmalloc_heap_config.h:
  • libpas/src/libpas/hotbit_heap_config.h:
  • libpas/src/libpas/iso_heap_config.h:
  • libpas/src/libpas/iso_test_heap_config.h:
  • libpas/src/libpas/jit_heap_config.c:

(jit_heap_config_dump_shared_page_directory_arg):

  • libpas/src/libpas/jit_heap_config.h:
  • libpas/src/libpas/minalign32_heap_config.h:
  • libpas/src/libpas/pagesize64k_heap_config.h:
  • libpas/src/libpas/pas_basic_heap_page_caches.h:
  • libpas/src/libpas/pas_bitfit_allocator.c:

(pas_bitfit_allocator_commit_view):
(pas_bitfit_allocator_finish_failing):

  • libpas/src/libpas/pas_bitfit_allocator.h:
  • libpas/src/libpas/pas_bitfit_allocator_inlines.h:

(pas_bitfit_allocator_try_allocate):
(pas_bitfit_allocator_reset): Deleted.
(pas_bitfit_allocator_assert_reset): Deleted.

  • libpas/src/libpas/pas_bitfit_heap.c:

(pas_bitfit_heap_construct_and_insert_size_class):
(pas_bitfit_heap_ensure_size_class): Deleted.

  • libpas/src/libpas/pas_bitfit_heap.h:
  • libpas/src/libpas/pas_bitfit_page.c:

(pas_bitfit_page_construct):

  • libpas/src/libpas/pas_bitfit_page_config.h:
  • libpas/src/libpas/pas_bitfit_page_config_inlines.h:
  • libpas/src/libpas/pas_bitfit_page_config_kind.c:

(pas_bitfit_page_config_kind_get_string):

  • libpas/src/libpas/pas_bitfit_page_config_kind.h:

(pas_bitfit_page_config_kind_get_string): Deleted.

  • libpas/src/libpas/pas_bitfit_page_inlines.h:

(pas_bitfit_page_allocate):

  • libpas/src/libpas/pas_bitfit_size_class.c:

(pas_bitfit_size_class_create): Deleted.

  • libpas/src/libpas/pas_bitfit_size_class.h:
  • libpas/src/libpas/pas_create_basic_heap_page_caches_with_reserved_memory.c:

(pas_create_basic_heap_page_caches_with_reserved_memory):

  • libpas/src/libpas/pas_deallocate.c:

(deallocate_segregated):
(pas_try_deallocate_slow_no_cache):

  • libpas/src/libpas/pas_deallocate.h:

(pas_deallocate_known_segregated):
(pas_try_deallocate_not_small_exclusive_segregated):
(pas_try_deallocate_impl):
(pas_deallocate_known_segregated_impl): Deleted.
(pas_try_deallocate_not_small): Deleted.

  • libpas/src/libpas/pas_enumerate_segregated_heaps.c:

(pas_enumerate_segregated_heaps):

  • libpas/src/libpas/pas_fast_megapage_kind.h:

(pas_fast_megapage_kind_get_string):

  • libpas/src/libpas/pas_fast_megapage_table.c:

(pas_fast_megapage_table_set_by_index):

  • libpas/src/libpas/pas_fast_megapage_table.h:

(pas_fast_megapage_table_get_by_index):

  • libpas/src/libpas/pas_get_allocation_size.h:

(pas_get_allocation_size):

  • libpas/src/libpas/pas_get_heap.h:

(pas_get_heap):
(pas_get_heap_known_segregated): Deleted.

  • libpas/src/libpas/pas_get_object_kind.h:

(pas_get_object_kind):

  • libpas/src/libpas/pas_get_page_base.h:

(pas_get_page_base):

  • libpas/src/libpas/pas_get_page_base_and_kind_for_small_other_in_fast_megapage.h: Added.

(pas_get_page_base_and_kind_for_small_other_in_fast_megapage):

  • libpas/src/libpas/pas_has_object.h:

(pas_has_object):

  • libpas/src/libpas/pas_heap_config.h:
  • libpas/src/libpas/pas_heap_config_inlines.h:
  • libpas/src/libpas/pas_heap_config_kind.c:

(pas_heap_config_kind_get_string):

  • libpas/src/libpas/pas_heap_config_kind.h:

(pas_heap_config_kind_get_string): Deleted.

  • libpas/src/libpas/pas_heap_config_utils.h:
  • libpas/src/libpas/pas_heap_config_utils_inlines.h:
  • libpas/src/libpas/pas_internal_config.h:
  • libpas/src/libpas/pas_local_allocator.c:

(pas_local_allocator_construct):
(pas_local_allocator_refill_with_bitfit): Deleted.
(pas_local_allocator_finish_refill_with_bitfit): Deleted.

  • libpas/src/libpas/pas_local_allocator_inlines.h:

(pas_local_allocator_scan_bits_to_set_up_free_bits):
(pas_local_allocator_set_up_free_bits):
(pas_local_allocator_set_up_primordial_bump):
(pas_local_allocator_start_allocating_in_primordial_partial_view):
(pas_local_allocator_bless_primordial_partial_view_before_stopping):
(pas_local_allocator_try_allocate_in_primordial_partial_view):
(pas_local_allocator_refill_with_known_config):
(pas_local_allocator_return_memory_to_page_set_bit_callback):
(pas_local_allocator_return_memory_to_page_for_role):
(pas_local_allocator_return_memory_to_page):
(pas_local_allocator_try_allocate_small_segregated_slow_impl):
(pas_local_allocator_try_allocate_out_of_line_cases):
(pas_local_allocator_try_allocate_slow_impl):

  • libpas/src/libpas/pas_object_kind.h:

(pas_object_kind_for_page_kind):

  • libpas/src/libpas/pas_page_base_and_kind.h: Added.

(pas_page_base_and_kind_create):
(pas_page_base_and_kind_create_empty):

  • libpas/src/libpas/pas_page_base_config.c: Added.

(pas_page_base_config_get_kind_string):

  • libpas/src/libpas/pas_page_base_config.h:

(pas_page_base_config_is_segregated):
(pas_page_base_config_is_bitfit):
(pas_page_base_config_get_config_kind): Deleted.

  • libpas/src/libpas/pas_page_kind.h:

(pas_page_kind_get_string):
(pas_page_kind_get_config_kind):
(pas_page_kind_get_segregated_variant):
(pas_page_kind_get_segregated_role):
(pas_page_kind_for_segregated_variant_and_role):
(pas_page_kind_for_bitfit_variant):

  • libpas/src/libpas/pas_segregated_deallocation_logging_mode.h: Added.

(pas_segregated_deallocation_logging_mode_does_logging):
(pas_segregated_deallocation_logging_mode_is_size_aware):
(pas_segregated_deallocation_logging_mode_is_checked):

  • libpas/src/libpas/pas_segregated_heap.c:

(max_object_size_for_page_config):
(pas_segregated_heap_ensure_size_directory_for_size):

  • libpas/src/libpas/pas_segregated_page.c:

(pas_segregated_page_construct):
(pas_segregated_page_and_config_for_address_and_heap_config):

  • libpas/src/libpas/pas_segregated_page_config.h:

(pas_segregated_page_config_enable_empty_word_eligibility_optimization_for_role):
(pas_segregated_page_config_logging_mode_for_role):

  • libpas/src/libpas/pas_segregated_page_config_inlines.h:
  • libpas/src/libpas/pas_segregated_page_config_kind.c:

(pas_segregated_page_config_kind_get_string):

  • libpas/src/libpas/pas_segregated_page_config_kind.def:
  • libpas/src/libpas/pas_segregated_page_config_kind.h:

(pas_segregated_page_config_kind_get_string): Deleted.

  • libpas/src/libpas/pas_segregated_page_config_kind_and_role.c: Added.

(pas_segregated_page_config_kind_and_role_get_string):

  • libpas/src/libpas/pas_segregated_page_config_kind_and_role.h: Added.

(pas_segregated_page_config_kind_and_role_create):

  • libpas/src/libpas/pas_segregated_page_config_utils.h:

(pas_segregated_page_config_verify_dealloc): Deleted.

  • libpas/src/libpas/pas_segregated_page_inlines.h:

(pas_segregated_page_deallocate_with_page):
(pas_segregated_page_deallocate):
(pas_segregated_page_get_directory_for_address_in_page):
(pas_segregated_page_get_directory_for_address_and_page_config):
(pas_segregated_page_get_object_size_for_address_in_page):
(pas_segregated_page_get_object_size_for_address_and_page_config):
(pas_segregated_page_log_or_deallocate):

  • libpas/src/libpas/pas_segregated_page_role.h: Added.

(pas_segregated_page_role_get_string):

  • libpas/src/libpas/pas_segregated_shared_view.c:

(pas_segregated_shared_view_commit_page):

  • libpas/src/libpas/pas_segregated_size_directory.c:

(pas_segregated_size_directory_create):

  • libpas/src/libpas/pas_segregated_size_directory.h:

(pas_segregated_size_directory_is_bitfit):
(pas_segregated_size_directory_get_bitfit_size_class):

  • libpas/src/libpas/pas_segregated_view.c:

(should_be_eligible):

  • libpas/src/libpas/pas_segregated_view.h:

(pas_segregated_view_get_page_role_for_owner):
(pas_segregated_view_get_page_role_for_allocator):

  • libpas/src/libpas/pas_segregated_view_allocator_inlines.h:

(pas_segregated_view_will_start_allocating):

  • libpas/src/libpas/pas_segregated_view_kind.h:

(pas_segregated_view_kind_get_role_for_owner):
(pas_segregated_view_kind_get_role_for_allocator):

  • libpas/src/libpas/pas_thread_local_cache.c:

(process_deallocation_log_with_config):
(flush_deallocation_log):
(pas_thread_local_cache_append_deallocation_slow):

  • libpas/src/libpas/pas_thread_local_cache.h:

(pas_thread_local_cache_encode_object):
(pas_thread_local_cache_append_deallocation):
(pas_thread_local_cache_append_deallocation_with_size):

  • libpas/src/libpas/pas_try_reallocate.h:

(pas_try_reallocate_table_segregated_case):
(pas_try_reallocate):

  • libpas/src/libpas/pas_try_shrink.h:

(pas_try_shrink):

  • libpas/src/libpas/pas_utility_heap.c:

(pas_utility_heap_deallocate):

  • libpas/src/libpas/pas_utility_heap_config.c:

(pas_utility_heap_allocate_page):
(pas_utility_heap_shared_page_directory_selector):
(pas_utility_heap_config_for_each_shared_page_directory):
(pas_utility_heap_config_dump_shared_page_directory_arg):

  • libpas/src/libpas/pas_utility_heap_config.h:

(pas_utility_heap_shared_page_directory_selector): Deleted.

  • libpas/src/libpas/pas_utils.h:

(pas_assertion_failed_noreturn_silencer):

  • libpas/src/libpas/thingy_heap_config.h:
  • libpas/src/test/ThingyAndUtilityHeapAllocationTests.cpp:

(std::addMargeBitfitTests):

8:50 AM Changeset in webkit [286492] by achristensen@apple.com
  • 15 edits in trunk

Add room for more bytecode in WKContentRuleList file format
https://bugs.webkit.org/show_bug.cgi?id=233780

Reviewed by Tim Hatcher.

Source/WebCore:

For rdar://72203352 we will need more bytecode. This adds room for it without putting anything there yet.
As long as we are updating the version number and forcing a recompile, I'm making the string serialization
more like the other action serializations to be able to simplify the interpreter later. I'm also shifting
around a few bits in the bytecode to be more organized and reasonable.

  • contentextensions/CompiledContentExtension.h:
  • contentextensions/ContentExtensionStringSerialization.cpp:

(WebCore::ContentExtensions::deserializeString):
(WebCore::ContentExtensions::serializeString):
(WebCore::ContentExtensions::stringSerializedLength):

  • contentextensions/DFABytecode.h:

(WebCore::ContentExtensions::smallestPossibleJumpSize): Deleted.

  • contentextensions/DFABytecodeCompiler.cpp:

(WebCore::ContentExtensions::smallestPossibleJumpSize):

Source/WebKit:

  • Shared/WebCompiledContentRuleList.cpp:

(WebKit::WebCompiledContentRuleList::frameURLFiltersBytecode const):

  • Shared/WebCompiledContentRuleList.h:
  • Shared/WebCompiledContentRuleListData.cpp:

(WebKit::WebCompiledContentRuleListData::encode const):
(WebKit::WebCompiledContentRuleListData::decode):

  • Shared/WebCompiledContentRuleListData.h:

(WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):

  • UIProcess/API/APIContentRuleListStore.cpp:

(API::ContentRuleListMetaData::fileSize const):
(API::encodeContentRuleListMetaData):
(API::decodeContentRuleListMetaData):
(API::compiledToFile):
(API::createExtension):
(API::getContentRuleListSourceFromMappedFile):

  • UIProcess/API/APIContentRuleListStore.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
8:35 AM Changeset in webkit [286491] by eric.carlson@apple.com
  • 20 edits
    2 adds in trunk

DisplayCaptureSource doesn't initialize base class correctly
https://bugs.webkit.org/show_bug.cgi?id=233722

Reviewed by Youenn Fablet.

Source/WebCore:

Test: fast/mediastream/get-display-media-settings.html

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::createMediaStream): Pass hashSalt through.
(WebCore::RealtimeMediaSourceCenter::getDisplayMediaDevices): Ditto.
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraintsAfterEnumeration): Ditto.

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • platform/mediastream/RealtimeMediaSourceFactory.h:
  • platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:

(WebCore::DisplayCaptureSourceCocoa::create): Ditto.
(WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): Ditto.

  • platform/mediastream/cocoa/DisplayCaptureSourceCocoa.h:
  • platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:
  • platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:

(WebCore::GStreamerDisplayCaptureDeviceManager::createDisplayCaptureSource): Ditto.

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:
  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::settings):

Source/WebKit:

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
Pass the hash salt to the factory.

  • WebProcess/cocoa/RemoteRealtimeDisplaySource.cpp:

(WebKit::RemoteRealtimeDisplaySource::create): Remove 'name' parameter because
CaptureDevice already has the name.
(WebKit::RemoteRealtimeDisplaySource::RemoteRealtimeDisplaySource): Pass name to
base class from device.label().
(WebKit::RemoteRealtimeDisplaySource::createRemoteMediaSource): Don't call setName
with settings, it was already set in the constructor.

  • WebProcess/cocoa/RemoteRealtimeDisplaySource.h:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::DisplayFactory::createDisplayCaptureSource): Pass
hash salt to RemoteRealtimeDisplaySource::create.

  • WebProcess/cocoa/UserMediaCaptureManager.h:

LayoutTests:

  • fast/mediastream/get-display-media-settings-expected.txt: Added.
  • fast/mediastream/get-display-media-settings.html: Added.
7:30 AM Changeset in webkit [286490] by svillar@igalia.com
  • 9 edits
    2 adds in trunk/LayoutTests

[css-flexbox] WPT import. December 2021 edition
https://bugs.webkit.org/show_bug.cgi?id=233810

Reviewed by Rob Buis.

LayoutTests/imported/w3c:

  • resources/resource-files.json:
  • web-platform-tests/css/css-flexbox/negative-available-size-crash-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/negative-available-size-crash.html: Added.
  • web-platform-tests/css/css-flexbox/scrollbars-auto-expected.html:
  • web-platform-tests/css/css-flexbox/scrollbars-expected.html:
  • web-platform-tests/css/css-flexbox/table-as-item-inflexible-in-column-2.html:
  • web-platform-tests/css/css-flexbox/table-as-item-inflexible-in-row-2.html:
  • web-platform-tests/css/css-flexbox/w3c-import.log:

LayoutTests:

  • TestExpectations: Unskipped a test that works fine after the changes in the import.
6:12 AM Changeset in webkit [286489] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Move the (bidi)display boxes horizontally by the inline box margin, border and padding start as needed
https://bugs.webkit.org/show_bug.cgi?id=233742

Reviewed by Antti Koivisto.

Re-visit the newly constructed display boxes and move them horizontally using the inline box margin, border and padding start values.
Note that in this patch we don't yet handle the end side of the inline boxes.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):

6:01 AM Changeset in webkit [286488] by youenn@apple.com
  • 16 edits in trunk

Persist NavigationPreloadState in service worker registration database
https://bugs.webkit.org/show_bug.cgi?id=233698
Source/WebCore:

Reviewed by Chris Dumez.

Whenever changing a service worker registration navigation state, trigger storing of the changes in the database.
To do so, we add this state to ServiceWorkerContextData.
When creating a SWServerRegistration, we set default values to false and "true"
as per https://w3c.github.io/ServiceWorker/#service-worker-registration-navigation-preload-header-value.

Covered by updated test.

  • workers/service/ServiceWorkerContextData.cpp:
  • workers/service/ServiceWorkerContextData.h:
  • workers/service/server/RegistrationDatabase.cpp:
  • workers/service/server/RegistrationStore.h:
  • workers/service/server/SWServer.cpp:
  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerJobQueue.cpp:
  • workers/service/server/SWServerRegistration.cpp:
  • workers/service/server/SWServerRegistration.h:
  • workers/service/server/SWServerWorker.cpp:

Tools:

<rdar://problem/85963120>

Reviewed by Chris Dumez.

Increase counter from 7 to 8.

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

LayoutTests:

Reviewed by Chris Dumez.

  • http/wpt/service-workers/service-worker-networkprocess-crash-expected.txt:
  • http/wpt/service-workers/service-worker-networkprocess-crash.html:
1:31 AM Changeset in webkit [286487] by mmaxfield@apple.com
  • 6 edits in trunk/Source/WebKit

Rename DerivedSources/WebKit2 to DerivedSources/WebKit
https://bugs.webkit.org/show_bug.cgi?id=233803

Reviewed by Tim Horton.

Mechanical rename.

No new tests because there is no behavior change.

  • Configurations/BaseTarget.xcconfig:
  • Scripts/generate-derived-sources.sh:
  • Scripts/generate-unified-sources.sh:
  • UnifiedSources-output.xcfilelist:
  • WebKit.xcodeproj/project.pbxproj:
12:50 AM Changeset in webkit [286486] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GStreamer] test http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html fails
https://bugs.webkit.org/show_bug.cgi?id=233737

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-12-03
Reviewed by Philippe Normand.

Give some more time to the frequency analyzer to detect activity.

  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html:
12:25 AM Changeset in webkit [286485] by aboya@igalia.com
  • 3 edits
    2 adds in trunk

[MSE] Fix erase range to prevent accidental deletion in files with changing durations
https://bugs.webkit.org/show_bug.cgi?id=233528

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

In didReceiveSample(), eraseBeginTime was being set to
highestPresentationTimestamp minus a tolerance. The tolerance is not
needed since highestPresentationTimestamp is loaded from exact frame
timestamps, and can cause accidental frame erasure in situations where
there are frames with frames smaller than the tolerance, which is the
case for certain MP4 files.

Test: media/media-source/media-source-append-tiny-durations.html

  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::didReceiveSample):

LayoutTests:

  • media/media-source/media-source-append-tiny-durations-expected.txt: Added.
  • media/media-source/media-source-append-tiny-durations.html: Added.
12:06 AM Changeset in webkit [286484] by commit-queue@webkit.org
  • 29 edits
    2 copies in trunk/Source

Network process does not seem to initialize logging
https://bugs.webkit.org/show_bug.cgi?id=233360
<rdar://problem/85765854>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-12-03
Reviewed by Fujii Hironori.

Source/WebCore:

Export WebCore::logLevelString(), it's the canonical
method to obtain WebCore log configuration string.
It's already used in WebKit, but not on Cocoa platform
where the export matters.

  • platform/LogInitialization.h:

Source/WebKit:

Move GPUProcess and WebProcess process creation arguments
related to logging strings to new AuxiliaryProcessCreationParameters.
Use this in all auxiliary processes GPUProcess, WebProcess,
AuthnProcess and NetworkProcess.

Use the canonical WTF::logLevelString(), WebCore::logLevelString(),
WebKit::logLevelString() to initialize Cocoa WebKit2 logging settings
for process creation arguments.

Fixes bugs where

Tools/Scripts/run-minibrowser --debug -WebKit2Logging IPCMessages

would not print IPCMessages logging for NetworkProcess.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

  • GPUProcess/GPUProcessCreationParameters.cpp:

(WebKit::GPUProcessCreationParameters::encode const):
(WebKit::GPUProcessCreationParameters::decode):

  • GPUProcess/GPUProcessCreationParameters.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • Shared/AuxiliaryProcess.cpp:

(WebKit::AuxiliaryProcess::applyProcessCreationParameters):

  • Shared/AuxiliaryProcess.h:
  • Shared/AuxiliaryProcessCreationParameters.cpp: Copied from Source/WebKit/WebAuthnProcess/WebAuthnProcessCreationParameters.cpp.

(WebKit::AuxiliaryProcessCreationParameters::encode const):
(WebKit::AuxiliaryProcessCreationParameters::decode):

  • Shared/AuxiliaryProcessCreationParameters.h: Copied from Source/WebKit/WebAuthnProcess/WebAuthnProcessCreationParameters.h.
  • Shared/WebProcessCreationParameters.cpp:

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

  • Shared/WebProcessCreationParameters.h:
  • Sources.txt:
  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::auxiliaryProcessParameters):

  • UIProcess/AuxiliaryProcessProxy.h:
  • UIProcess/Cocoa/GPUProcessProxyCocoa.mm:

(WebKit::GPUProcessProxy::platformInitializeGPUProcessParameters):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::GPUProcessProxy):
(WebKit::GPUProcessProxy::platformInitializeGPUProcessParameters):

  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):

  • UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp:

(WebKit::WebAuthnProcessProxy::singleton):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

  • WebAuthnProcess/WebAuthnProcess.cpp:

(WebKit::WebAuthnProcess::initializeWebAuthnProcess):

  • WebAuthnProcess/WebAuthnProcessCreationParameters.cpp:

(WebKit::WebAuthnProcessCreationParameters::encode const):
(WebKit::WebAuthnProcessCreationParameters::decode):

  • WebAuthnProcess/WebAuthnProcessCreationParameters.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

  • WebProcess/playstation/WebProcessPlayStation.cpp:

(WebKit::WebProcess::platformInitializeWebProcess):

Note: See TracTimeline for information about the timeline view.