Timeline



Dec 12, 2020:

11:03 PM Changeset in webkit [270747] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] tabCharacter and newlineCharacter are also word separators when not preserved
https://bugs.webkit.org/show_bug.cgi?id=219784

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::isWhitespaceCharacter):
(WebCore::Layout::shouldPreserveSpacesAndTabs):
(WebCore::Layout::InlineTextItem::createAndAppendTextItems):
(WebCore::Layout::InlineTextItem::shouldPreserveSpacesAndTabs):

9:43 PM Changeset in webkit [270746] by Ryan Haddad
  • 5 edits in trunk

Unreviewed, reverting r270661.

Caused layout test failures and timeouts

Reverted changeset:

"Unreviewed, re-landing r270132."
https://bugs.webkit.org/show_bug.cgi?id=202874
https://trac.webkit.org/changeset/270661

9:41 PM Changeset in webkit [270745] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Remove test entries referencing bug209859.

The bug was keeping tracking of several WebXR tests. The bug is
closed and all the tests referencing that bug are marked as passing.
WebXR feature is only enabled in WPE, all other ports skipping WebXR
tests. In conclusion, these entries in test expectations are no longer
necessary.

  • platform/wpe/TestExpectations:
8:32 PM Changeset in webkit [270744] by Diego Pino Garcia
  • 1 edit
    1 add in trunk/LayoutTests

[WPE] Unreviewed test gardening. Add WPE baseline after r270582.

  • platform/wpe/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_hoverable_pointers-expected.txt: Added.
5:58 PM Changeset in webkit [270743] by jiewen_tan@apple.com
  • 7 edits in trunk

[WebAuthn][iOS] Turn on modern WebAuthn for default browsers
https://bugs.webkit.org/show_bug.cgi?id=219823
<rdar://problem/72250436>

Reviewed by Brent Fulgham.

Source/WebKit:

Covered by manual tests.

This patch turns on modern WebAuthn on iOS by default. In addition to that,
it turns on WebAuthn for all default browsers.

  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:

(WebKit::WebCore::isWebBrowser):
(WebKit::WebAuthenticatorCoordinator::makeCredential):
(WebKit::WebAuthenticatorCoordinator::getAssertion):
(WebKit::WebAuthenticatorCoordinator::isUserVerifyingPlatformAuthenticatorAvailable):
For apps that turn on WebAuthn by overriding the experimental feature settings, return silently.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences)
Does the meat.

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

Does the meat.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::WebCore::webAuthenticationModernExperimentalFeature):
(TestWebKitAPI::TEST):
Turn modern WebAuthn off for old tests.

4:14 PM Changeset in webkit [270742] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Remove tests passing after r270741.

  • platform/wpe/TestExpectations:
2:34 PM Changeset in webkit [270741] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK4] Web view is incorrectly scaled on hidpi
https://bugs.webkit.org/show_bug.cgi?id=218353

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2020-12-12
Reviewed by Adrian Perez de Castro.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::snapshot): Account for the scale factor.

1:06 PM Changeset in webkit [270740] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r270692.
https://bugs.webkit.org/show_bug.cgi?id=219828

Introduced crash

Reverted changeset:

"[macOS] Remove access to com.apple.MTLCompilerService in the
WebContent process"
https://bugs.webkit.org/show_bug.cgi?id=219774
https://trac.webkit.org/changeset/270692

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

Unreviewed, reverting r270674.

Broke web content rendering on iOS

Reverted changeset:

"[iOS] Remove access to the IOKIt class AGXDeviceUserClient in
the WebContent process"
https://bugs.webkit.org/show_bug.cgi?id=219733
https://trac.webkit.org/changeset/270674

11:39 AM Changeset in webkit [270738] by commit-queue@webkit.org
  • 28 edits in trunk

Implement WebVTT VTTCue region attribute
https://bugs.webkit.org/show_bug.cgi?id=168716

LayoutTests/imported/w3c:

Patch by Frank Olivier <frankolivier@apple.com> on 2020-12-12
Reviewed by Eric Carlson.

  • web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-align-text-line-position-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-line-position-expected.txt:

Source/WebCore:

Patch by Frank Olivier <frankolivier@apple.com> on 2020-12-12
Reviewed by Eric Carlson.

Updated existing region tests.

  • WebCore.xcodeproj/project.pbxproj:
  • html/shadow/MediaControlTextTrackContainerElement.cpp:

(WebCore::MediaControlTextTrackContainerElement::processActiveVTTCue):

  • html/track/TextTrackCueGeneric.cpp:

(WebCore::TextTrackCueGenericBoxElement::applyCSSProperties):
(WebCore::TextTrackCueGeneric::setLine):

  • html/track/TextTrackCueGeneric.h:
  • html/track/VTTCue.cpp:

(WebCore::horizontalKeyword):
(WebCore::lineLeftKeyword):
(WebCore::lineRightKeyword):
(WebCore::autoKeyword):
(WebCore::VTTCueBox::applyCSSProperties):
(WebCore::VTTCue::setVertical):
(WebCore::VTTCue::line const):
(WebCore::VTTCue::setLine):
(WebCore::VTTCue::lineAlign const):
(WebCore::VTTCue::setLineAlign):
(WebCore::VTTCue::positionAlign const):
(WebCore::VTTCue::setPositionAlign):
(WebCore::VTTCue::setAlign):
(WebCore::VTTCue::setTrack):
(WebCore::VTTCue::setRegion):
(WebCore::VTTCue::region):
(WebCore::VTTCue::regionId):
(WebCore::VTTCue::calculateComputedLinePosition):
(WebCore::VTTCue::getDisplayTree):
(WebCore::VTTCue::removeDisplayTree):
(WebCore::VTTCue::settingName):
(WebCore::VTTCue::setCueSettings):
(WebCore::VTTCue::toJSON const):
(WebCore::VTTCue::setRegionId): Deleted.

  • html/track/VTTCue.h:

(WebCore::VTTCue::line const): Deleted.
(WebCore::VTTCue::regionId const): Deleted.

  • html/track/VTTCue.idl:
  • rendering/RenderVTTCue.cpp:

(WebCore::RenderVTTCue::layout):

LayoutTests:

Updated VTTCue to current IDL

Patch by Frank Olivier <frankolivier@apple.com> on 2020-12-12
Reviewed by Eric Carlson.

  • media/track/captions-webvtt/header-regions.vtt:
  • media/track/regions-webvtt/text-track-cue-region-attribute-expected.txt:
  • media/track/regions-webvtt/text-track-cue-region-attribute.html:
  • media/track/regions-webvtt/vtt-region-parser-expected.txt:
  • media/track/regions-webvtt/vtt-region-parser.html:
  • media/track/track-add-remove-cue-expected.txt:
  • media/track/track-add-remove-cue.html:
  • media/track/track-cue-container-rendering-position.html:
  • media/track/track-cue-mutable-expected.txt:
  • media/track/track-cue-mutable.html:
  • media/track/track-vttcue-expected.txt:
  • media/track/track-vttcue.html:
  • media/track/track-webvtt-tc013-settings-expected.txt:
  • media/track/track-webvtt-tc013-settings.html:
  • media/track/track-webvtt-tc017-line-position-expected.txt:
  • media/track/track-webvtt-tc017-line-position.html:
  • media/track/track-webvtt-tc018-align-text-line-position-expected.txt:
  • media/track/track-webvtt-tc018-align-text-line-position.html:
11:29 AM Changeset in webkit [270737] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Scroll performance logging: rubberbanding should not trigger "Exposed tileless area" logging
https://bugs.webkit.org/show_bug.cgi?id=219827
<rdar://problem/72209189>

Reviewed by Zalan Bujtas.

Clamp the scroll position before computing exposed tile-less area so that rubberbanding
doesn't trigger logging that we revealed areas not covered by tiles.

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::exposedUnfilledArea const):

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

REGRESSION(r270715) [LFC][IFC] Whitespace as expansion opportunity should not change as we expand the runs
https://bugs.webkit.org/show_bug.cgi?id=219826

Reviewed by Antti Koivisto.

This is the property of the entire run and should be set based on the box and whether the initial part of the run
is whitespace or not.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::Run::expand):
(WebCore::Layout::Line::Run::visuallyCollapseTrailingWhitespace):

  • layout/inlineformatting/InlineLine.h:
  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::shouldPreserveSpacesAndTabs):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::shouldPreserveSpacesAndTabs):

  • layout/inlineformatting/text/TextUtil.h:
9:54 AM WebKitGTK/2.30.x edited by Philippe Normand
(diff)
5:36 AM Changeset in webkit [270735] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB][GTK] Unreviewed test gardening. Remove tests passing after r270734.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
4:07 AM Changeset in webkit [270734] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB][GTK] Unreviewed test gardening. Update test expectations.

Added two failures related with font-size visualization in
WebInspector and another one related with WebRTC.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
3:44 AM Changeset in webkit [270733] by dino@apple.com
  • 115 edits
    1 copy
    78 adds in trunk/Source/ThirdParty/ANGLE

Improved Metal backend for ANGLE, with direct GLSL to Metal compiler translation
https://bugs.webkit.org/show_bug.cgi?id=219759
<rdar://problem/72200222>

Patch by Kyle Piddington <Kyle Piddington> on 2020-12-12
Reviewed by Dean Jackson.

Reviewer's note: While this patch is landing in WebKit now, it will
be submitted to the main ANGLE project for official review, then re-merged
back into WebKit. The feature provided here is not enabled by default.

Provide a WebGL1 compliant transpiler for GLSL content. With this
change, we can leverage the already present open source work in the
ANGLE project to enable webgl to run on top of Metal. In addition,
this patch contains a number of fixes to the existing ANGLE Metal backend.

Test: Tests were validated with the dEQP test suite with ANGLE, in
addition to running standard layout tests.

2:11 AM Changeset in webkit [270732] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Unreviewed test gardening. Update baseline after r270613.

Test results now include overscroll-behavior-x and overscroll-behavior-y properties.

  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Dec 11, 2020:

10:56 PM Changeset in webkit [270731] by Peng Liu
  • 12 edits in trunk/Source

[Media in GPU Process][MSE] Implement SourceBuffer::reportExtraMemoryAllocated()
https://bugs.webkit.org/show_bug.cgi?id=219812

Reviewed by Eric Carlson.

Source/WebCore:

Refactor the implementation of SourceBuffer::reportExtraMemoryAllocated() to let
SourceBufferPrivate calculate the extra memory cost and report the value to
SourceBuffer when necessary. This approach is better than the current one when
SourceBufferPrivate runs in the GPU process because track buffer management
has been moved to SourceBufferPrivate in r270435.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::appendBufferInternal):
(WebCore::SourceBuffer::sourceBufferPrivateAppendComplete):
(WebCore::SourceBuffer::sourceBufferPrivateReportExtraMemoryCost):
(WebCore::SourceBuffer::reportExtraMemoryAllocated):
(WebCore::SourceBuffer::extraMemoryCost const): Deleted.

  • Modules/mediasource/SourceBuffer.h:
  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::appendCompleted):
(WebCore::SourceBufferPrivate::evictCodedFrames):

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

(WebCore::SourceBufferPrivateAVFObjC::append):

Source/WebKit:

Add a new IPC message SourceBufferPrivateReportExtraMemoryCost to forward the callback
to the web process.

  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateReportExtraMemoryCost):

  • GPUProcess/media/RemoteSourceBufferProxy.h:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateReportExtraMemoryCost):

  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in:
9:19 PM Changeset in webkit [270730] by jiewen_tan@apple.com
  • 7 edits in trunk/Source

[WebAuthn] Adopt new UI for the Platform Authenticator getAssertion flow
https://bugs.webkit.org/show_bug.cgi?id=219710
<rdar://problem/72154800>

Reviewed by Brent Fulgham.

Source/WebCore:

Covered by manual tests.

  • Modules/webauthn/AuthenticatorAssertionResponse.h:

(WebCore::AuthenticatorAssertionResponse::laContext const):
(WebCore::AuthenticatorAssertionResponse::setLAContext):

Source/WebKit:

This patch adopts the new UI for the platform authenticator getAssertion flow. It's more or less
the same as the security key one except an LAContext will be passed in from the UI. Now LocalAuthenticator
will just utilize the LAContext from the UI.

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

(WebKit::AuthenticatorPresenterCoordinator::AuthenticatorPresenterCoordinator):
(WebKit::AuthenticatorPresenterCoordinator::~AuthenticatorPresenterCoordinator):
(WebKit::AuthenticatorPresenterCoordinator::selectAssertionResponse):
(WebKit::AuthenticatorPresenterCoordinator::didSelectAssertionResponse):

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::continueGetAssertionAfterResponseSelected):

  • UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.mm:

(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:credentialRequestedForLoginChoice:authenticatedContext:completionHandler:]):

7:19 PM Changeset in webkit [270729] by Megan Gardner
  • 7 edits
    4 adds in trunk/Source/WebCore

Infrastructure to store and restore AppHighlights
https://bugs.webkit.org/show_bug.cgi?id=219769
<rdar://problem/70297699>

Reviewed by Tim Horton.

AppHighlights can be pulled out of their HighlightRegister and encoded for storage by the app.
Also, an encoded buffer can be unpacked in ranges added back into the HighlightRegister.
Fallbacks for ranges that are not found are not designed yet, so currently they will just be stored
with the intention to communicate back to the app that they were not found in the current version of
the document. The API to interact with the client is not designed yet, so currently this encoded data does not get
shuttle anywhere but that plumbing will be added in a later patch.

  • Modules/highlight/AppHighlightListData.cpp: Added.

(WebCore::computePathIndex):
(WebCore::createNodePathComponent):
(WebCore::makeNodePath):
(WebCore::createAppHiglightRangeData):
(WebCore::AppHighlightListData::create):
(WebCore::AppHighlightListData::toData const):

  • Modules/highlight/AppHighlightListData.h: Added.

(WebCore::AppHighlightRangeData::NodePathComponent::NodePathComponent):
(WebCore::AppHighlightRangeData::NodePathComponent::operator== const):
(WebCore::AppHighlightRangeData::NodePathComponent::operator!= const):
(WebCore::AppHighlightRangeData::AppHighlightRangeData):
(WebCore::AppHighlightRangeData::text const):
(WebCore::AppHighlightRangeData::startContainer const):
(WebCore::AppHighlightRangeData::startOffset const):
(WebCore::AppHighlightRangeData::endContainer const):
(WebCore::AppHighlightRangeData::endOffset const):
(WebCore::AppHighlightListData::AppHighlightListData):
(WebCore::AppHighlightListData::ranges const):
(WebCore::AppHighlightListData::setRanges):
(WebCore::AppHighlightListData::addRanges):
(WebCore::AppHighlightListData::size const):
(WebCore::AppHighlightListData::isEmpty const):
(WebCore::AppHighlightRangeData::NodePathComponent::encode const):
(WebCore::AppHighlightRangeData::NodePathComponent::decode):
(WebCore::AppHighlightRangeData::encode const):
(WebCore::AppHighlightRangeData::decode):
(WebCore::AppHighlightListData::encode const):
(WebCore::AppHighlightListData::decode):

  • Modules/highlight/AppHighlightStorageController.cpp: Added.

(WebCore::findNodeByPathIndex):
(WebCore::findNodeStartingAtPathComponentIndex):
(WebCore::findNode):
(WebCore::findRangeByIdentifyingStartAndEndPositions):
(WebCore::findRangeBySearchingText):
(WebCore::findRange):
(WebCore::AppHighlightStorageController::AppHighlightStorageController):
(WebCore::AppHighlightStorageController::createAppHighlightListData):
(WebCore::AppHighlightStorageController::restoreAppHighlights):

  • Modules/highlight/AppHighlightStorageController.h: Added.
  • Modules/mediastream/RTCRtpScriptTransform.cpp:
  • Modules/mediastream/RTCRtpScriptTransform.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::appHighlightStorageController):
(WebCore::Document::updateHighlightPositions):

  • dom/Document.h:

(WebCore::Document::appHighlightStorageControllerIfExists const):

7:01 PM Changeset in webkit [270728] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[WebM] Mark Opus and Vorbis as supported track types.
https://bugs.webkit.org/show_bug.cgi?id=219819

Rubber-stamped by Eric Carlson.

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::supportedAudioCodecs):

6:36 PM Changeset in webkit [270727] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] Add Experimental VP8 support
https://bugs.webkit.org/show_bug.cgi?id=219732
<rdar://problem/72171055>

Reviewed by Eric Carlson.

Merge error after r270720; Use the local value isKey, rather than querying the VP9 header parser
to tell whether the incoming frame is a keyframe.

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::VideoTrackData::createSampleBuffer):

6:31 PM Changeset in webkit [270726] by wilander@apple.com
  • 2 edits in trunk/Source/WebKit

PCM: Change debugModeSecondsUntilSend from 60 seconds to 10 seconds
https://bugs.webkit.org/show_bug.cgi?id=219816
<rdar://problem/70779862>

Unreviewed change to a constant, only used for debugging.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

debugModeSecondsUntilSend changed to 10 seconds.

(WebKit::PrivateClickMeasurementManager::attribute):

Fixed bad indentation.

6:12 PM Changeset in webkit [270725] by rniwa@webkit.org
  • 33 edits
    1 copy in trunk/Source

[GPU Process] Cache Font objects
https://bugs.webkit.org/show_bug.cgi?id=219672

Reviewed by Wenson Hsieh.

Source/WebCore:

Partially based on the patch made by Said Abou-Hallawa.

This patch introduces a mechanism to cache Font objects in the GPU process much the same way
NativeImage objects are cached in the GPU process.

  • platform/graphics/Font.cpp:

(WebCore::Font::Font): Restore the same rendering resource identifier when Font object
is decoded in the GPU process.
(WebCore::Font::renderingResourceIdentifier const): Added. Lazily creates an identifier.
This never happens in the GPU process as we set it in the constructor above.

  • platform/graphics/Font.h:

(WebCore::Font::create): Ditto as Font::Font.

  • platform/graphics/displaylists/DisplayList.h:

(WebCore::DisplayList::DisplayList::fonts const): Added.
(WebCore::DisplayList::DisplayList::cacheFont): Added.

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderCoreText.cpp:

(WebCore::DisplayList::DrawGlyphsRecorder::recordDrawGlyphs): Call the newly introduced
appendDrawGraphsItemWithCachedFont instead of appending DrawGlyphs directly.
(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs):

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderHarfBuzz.cpp: Ditto.

(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs):

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderWin.cpp: Ditto.

(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply): Replaced call to DrawGlyphs::apply with
ASSERT_NOT_REACHED since Replayer::applyItem should handle it now.

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::DrawGlyphs::DrawGlyphs): The one used in decode function in GPU
process now takes RenderingResourceIdentifier instead of Font and the glyph bounds instead
of computing it again here. The one used in WebContent will continue to take Font
to copmute the bounds but encodes RenderingResourceIdentifier instead.
(WebCore::DisplayList::DrawGlyphs::generateGlyphBuffer const): Takes Font.
(WebCore::DisplayList::DrawGlyphs::apply const): Takes Font.
(WebCore::DisplayList::DrawGlyphs::computeBounds): Takes Font.

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawGlyphs::fontIdentifier): Added.
(WebCore::DisplayList::DrawGlyphs): No longer retains Font object.
(WebCore::DisplayList::DrawGlyphs::encode const): Encodes the bounding rect.
(WebCore::DisplayList::DrawGlyphs::decode): Ditto for decoding.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::appendDrawGraphsItemWithCachedFont): Added.

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::Delegate::cacheFont): Added.

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::Replayer): Now takes FontRenderingResourceMap.
(WebCore::DisplayList::applyFontItem): Added.
(WebCore::DisplayList::Replayer::applyItem): Applies DrawGlyphs with Font in m_fonts.

  • platform/graphics/displaylists/DisplayListReplayer.h:

Source/WebKit:

Partially based on the patch made by Said Abou-Hallawa.

This patch introduces a mechanism to cache Font objects in the GPU process much the same way
NativeImage objects are cached in the GPU process, and re-enables Web Fonts.

Fonts are removed from the GPU process when either they hadn't been used for 4 rendering updates
or a memory warning has been issued.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::submit): Added the font cache.
(WebKit::RemoteRenderingBackend::cacheFont): Added.
(WebKit::RemoteRenderingBackend::deleteAllFonts): Added.

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in: Added CacheFont and DeleteAllFonts

as new IPC messages.

  • GPUProcess/graphics/RemoteResourceCache.cpp:

(WebKit::RemoteResourceCache::cacheFont): Added.
(WebKit::RemoteResourceCache::deleteAllFonts): Added. Used when a memory warning is issued.

  • GPUProcess/graphics/RemoteResourceCache.h:

(WebKit::RemoteResourceCache::fonts const): Added.

  • Platform/IPC/FontReference.h: Added.

(IPC::FontReference): Added.

  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared): Added FontReference.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<Font>>::encode): Encode the rendering resource identifier of Font.
(IPC::ArgumentCoder<Ref<Font>>::decode): Ditto for decoding.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::cacheFont): Added.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::cacheFont): Added.
(WebKit::RemoteRenderingBackendProxy::deleteAllFonts): Added.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::cacheFont): Added. It updates the total number of fonts
being used since the last rendering update and records the self assigned identifier for
the next rendering update.
(WebKit::RemoteResourceCacheProxy::didFinalizeRenderingUpdate): Added. Called at the end of
each rendering update. It removes all fonts unused in the lsat 4 rendering updates if at least
1/4 of the fonts in the GPU process were not used in this rendering update.
(WebKit::RemoteResourceCacheProxy::releaseMemory): Added. Removes all the fonts to free up
memory when a memory warning is issued.

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:

(WebKit::RemoteResourceCacheProxy): Added m_fontLastRenderingUpdateMap which keeps track of
the rendering resource identifiers of the fonts cached in the GPU process.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences): Re-enables the Web Fonts.
(WebKit::WebPage::finalizeRenderingUpdate): Added the call to RemoteRenderingBackendProxy's
didFinalizeRenderingUpdate.
(WebKit::WebPage::releaseMemory): Added. Calls RemoteRenderingBackendProxy's function.

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

(WebKit::WebProcess::initializeWebProcess): Added the call to WebPage::releaseMemory in
the memory pressure handler.
(WebKit::WebProcess::prepareToSuspend): Ditto for the process suspension.

Source/WTF:

Specify the width of enum classes so that they can be forward declared.

  • wtf/MemoryPressureHandler.h:
6:03 PM Changeset in webkit [270724] by jiewen_tan@apple.com
  • 5 edits in trunk/Source/WebKit

[WebAuthn] Adopt new UI for the Security Key getAssertion flow
https://bugs.webkit.org/show_bug.cgi?id=219711
<rdar://problem/72154840>

Reviewed by Brent Fulgham.

This patch adopts the new UI for the security key getAssertion flow which contains two part:

  1. showing a informative UI to ask the user to connect their security keys,
  2. showing an account picker for users to select a credential to use.

Covered by manual tests.

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:

Paperwork.

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

(WebKit::AuthenticatorPresenterCoordinator::AuthenticatorPresenterCoordinator):
(WebKit::AuthenticatorPresenterCoordinator::selectAssertionResponse):
(WebKit::AuthenticatorPresenterCoordinator::didSelectAssertionResponse):

  • UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.mm:

(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:credentialRequestedForLoginChoice:authenticatedContext:completionHandler:]):
Implements the two flows.

5:34 PM Changeset in webkit [270723] by wilander@apple.com
  • 8 edits in trunk/Source/WebKit

PCM: Add feature flag support in the network process
https://bugs.webkit.org/show_bug.cgi?id=219811
<rdar://problem/72242633>

Reviewed by Alex Christensen.

No new tests. This just forwards a preference to the network process.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

Stores the incoming enablePrivateClickMeasurement from
WebKit::NetworkProcessCreationParameters.

(WebKit::NetworkProcess::setPrivateClickMeasurementEnabled):
(WebKit::NetworkProcess::privateClickMeasurementEnabled const):

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

New field enablePrivateClickMeasurement.

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

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):

Early return if the feature is not enabled.

(WebKit::PrivateClickMeasurementManager::handleAttribution):

Early return if the feature is not enabled.

(WebKit::PrivateClickMeasurementManager::fireConversionRequest):

Early return if the feature is not enabled.

(WebKit::PrivateClickMeasurementManager::featureEnabled const):

New convenience function.

  • NetworkProcess/PrivateClickMeasurementManager.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

Sets the new enablePrivateClickMeasurement in
WebKit::NetworkProcessCreationParameters.

5:18 PM Changeset in webkit [270722] by jer.noble@apple.com
  • 7 edits in trunk/Source

[Cocoa] Add Experimental Vorbis support
https://bugs.webkit.org/show_bug.cgi?id=219810
<rdar://problem/72242614>

Patch by Eric Carlson <eric.carlson@apple.com> on 2020-12-11
Reviewed by Jer Noble.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setVorbisDecoderEnabled):
(WebCore::RuntimeEnabledFeatures::vorbisDecoderEnabled const):

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::AudioTrackData::consumeFrameData): Support being
called with more than one sample.

  • platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm:

(WebCore::isVorbisDecoderAvailable): Check the runtime settings.

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml: Added an experimental web

preference.

  • wtf/PlatformEnableCocoa.h: Define ENABLE_VORBIS.
4:58 PM Changeset in webkit [270721] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, build fix after r270694

  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:

(WebKit::AuthenticatorPresenterCoordinator::AuthenticatorPresenterCoordinator):
Adds a instance method guard for new SPI.

4:57 PM Changeset in webkit [270720] by jer.noble@apple.com
  • 35 edits
    2 copies
    9 adds in trunk

[Cocoa] Add Experimental VP8 support
https://bugs.webkit.org/show_bug.cgi?id=219732

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Add a new decoder for VP8 video using the decoder exposed by libwebrtc. Refactor
WebKitDecoderReceiver into its own file, to be used by both the VP8 and VP9 decoders.

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:
  • Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp: Added.

(webrtc::WebKitDecoderReceiver::WebKitDecoderReceiver):
(webrtc::WebKitDecoderReceiver::~WebKitDecoderReceiver):
(webrtc::WebKitDecoderReceiver::initializeFromFormatDescription):
(webrtc::WebKitDecoderReceiver::pixelBufferPool):
(webrtc::WebKitDecoderReceiver::decoderFailed):
(webrtc::WebKitDecoderReceiver::Decoded):

  • Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.h: Added
  • Source/webrtc/sdk/WebKit/WebKitVP8Decoder.cpp: Added.

(webrtc::registerWebKitVP8Decoder):
(webrtc::createWebKitVP8Decoder):
(webrtc::invalidateVP8Decoder):
(webrtc::finalizeVP8Decoder):
(webrtc::copyVP8DecoderDebugDescription):
(webrtc::webKitVP8DecoderFromVTDecoder):
(webrtc::startVP8DecoderSession):
(webrtc::decodeVP8DecoderFrameFromContiguousBlock):
(webrtc::decodeVP8DecoderFrame):

  • Source/webrtc/sdk/WebKit/WebKitVP8Decoder.h: Copied from Source/WebCore/platform/graphics/cocoa/VP9UtilitiesCocoa.h.
  • Source/webrtc/sdk/WebKit/WebKitVP9Decoder.cpp:

(webrtc::createWebKitVP9Decoder):
(webrtc::startVP9DecoderSession):
(webrtc::WebKitVP9DecoderReceiver::WebKitVP9DecoderReceiver): Deleted.
(webrtc::WebKitVP9DecoderReceiver::~WebKitVP9DecoderReceiver): Deleted.
(webrtc::WebKitVP9DecoderReceiver::initializeFromFormatDescription): Deleted.
(webrtc::WebKitVP9DecoderReceiver::pixelBufferPool): Deleted.
(webrtc::WebKitVP9DecoderReceiver::decoderFailed): Deleted.
(webrtc::WebKitVP9DecoderReceiver::Decoded): Deleted.

  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Newly passing tests:

imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer.html
imported/w3c/web-platform-tests/media-source/mediasource-seek-during-pending-seek.html
imported/w3c/web-platform-tests/media-source/mediasource-seekable.html
imported/w3c/web-platform-tests/media-source/mediasource-config-change-webm-v-bitrate.html
imported/w3c/web-platform-tests/media-source/mediasource-config-change-webm-v-framerate.html
imported/w3c/web-platform-tests/media-source/mediasource-config-change-webm-v-framesize.html
imported/w3c/web-platform-tests/media-source/mediasource-invalid-codec.html

Parse VP8 video tracks out of WebM files. Add a simple VP8 frame header parser to extract width
height and color information out of keyframe headers, and create a CMFormatDescription from that
header.

Throw an error during parsing if an Audio or Video track is encountered with an unsupported codec.

  • platform/graphics/VP9Utilities.cpp:

(WebCore::parseVPCodecParameters):

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::isContentTypeSupported):
(WebCore::createFormatDescriptionFromVPCodecConfigurationRecord):
(WebCore::createFormatDescriptionFromVP9HeaderParser):
(WebCore::parseVP8FrameHeader):
(WebCore::createFormatDescriptionFromVP8Header):
(WebCore::SourceBufferParserWebM::OnFrame):

  • platform/graphics/cocoa/VP9UtilitiesCocoa.h:
  • platform/graphics/cocoa/VP9UtilitiesCocoa.mm:

(WebCore::registerWebKitVP8Decoder):
(WebCore::isVP8DecoderAvailable):
(WebCore::isVP9CodecConfigurationRecordSupported):
(WebCore::isVP8CodecConfigurationRecordSupported):
(WebCore::isVPCodecConfigurationRecordSupported):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:

(WebCore::LibWebRTCProvider::registerWebKitVP8Decoder):

Source/WebKit:

Add new WebPageCreationParameter flags to enable VP8 decoders in the WebContent and GPU
processes when the experimental feature is enabled.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::enableVP9Decoders):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::enableVP9Decoders):

  • GPUProcess/GPUProcess.h:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultVP8DecoderEnabled):

  • Shared/WebPreferencesDefaultValues.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):

  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::updateParameters):

  • WebProcess/GPU/GPUProcessConnection.h:

(WebKit::GPUProcessConnection::isVP8DecoderEnabled const):

  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::enableVP8SWDecoder):

  • WebProcess/WebProcess.h:

Source/WTF:

Add a new VP8 experimental feature flag.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

  • platform/mac/TestExpectations:
  • platform/mac-bigsur/imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer-expected.txt:
  • platform/mac-bigsur/imported/w3c/web-platform-tests/media-source/mediasource-invalid-codec-expected.txt:
4:43 PM Changeset in webkit [270719] by Tadeu Zagallo
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION (r270665): testapi failing on JSC bots
https://bugs.webkit.org/show_bug.cgi?id=219787

Reviewed by Saam Barati.

  • API/JSValueRef.cpp:

(JSValueIsString):
(JSValueIsObject):
(JSValueIsSymbol):

4:32 PM Changeset in webkit [270718] by Chris Dumez
  • 6 edits in trunk/Source

Potential null dereference of m_frame under DocumentLoader::stopLoading()
https://bugs.webkit.org/show_bug.cgi?id=219786
<rdar://71945402>

Reviewed by Geoffrey Garen.

Source/WebCore:

The crash indicates that FrameLoader::stopAllLoaders() is calling m_documentLoader->stopLoading()
and that DocumentLoader::m_frame is null, causing DocumentLoader::stopLoading() to do a null
dereference of m_frame.

I believe 3 things could have happened:

  1. DocumentLoader::detachFromFrame() was called on a DocumentLoader but that DocumentLoader somehow stayed attached to the FrameLoader. DocumentLoader::detachFromFrame() is what clears DocumentLoader::m_frame.
  2. FrameLoader::setDocumentLoader() was called with a DocumentLoader which already did not have a frame.
  3. The Frame was destroyed. DocumentLoader is a FrameDestructionObserver so m_frame would actually get nulled out in case of Frame destruction.

Now, I do not believe that 3 is actually possible. We know the FrameLoader is alive here since
FrameLoader::stopAllLoaders() is what's calling DocumentLoader::stopLoading(). The Frame owns
the FrameLoader so the Frame is alive. Also note that FrameLoader::stopAllLoaders() protects
the frame AND dereferences m_frame without crashing *BEFORE* calling DocumentLoader::stopLoading().

Looking at case 1, I believe this is actually possible currently because
FrameLoader::setProvisionalDocumentLoader() does not early return when the new DocumentLoader
being set is the same one as m_provisionalDocumentLoader. This means that
FrameLoader::setProvisionalDocumentLoader() would in such case call DocumentLoader::detachFromFrame()
on the DocumentLoader even though it will remain attached to this FrameLoader. Note that
FrameLoader::setPolicyDocumentLoader() & FrameLoader::setDocumentLoader() already return early
properly in such cases. This patch fixes FrameLoader::setProvisionalDocumentLoader() to early
return, thus making issue 1 impossible I believe.

Case 2 is a bit harder to fix. We had this debug assertion in FrameLoader::setDocumentLoader():
ASSERT(!loader || loader->frameLoader() == this);
So in debug builds at least, we are protected against issue 2 because loader->frameLoader()
would return null when the loader's frame is null. I turned this debug assertion into a release
assertion to help us figure out if this is what's causing this crash.

I also made the following changes:

  • Added release logging to the related code to help debug this in the future if the issue remains.
  • Do an early return in DocumentLoader::stopLoading() if m_frame is already null to avoid the crash. I added a debug assertion to ensure that m_frame is not null though to see if this is still happening.

No new tests, we do not know how this happens at this time.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::stopLoading):
(WebCore::DocumentLoader::attachToFrame):
(WebCore::DocumentLoader::detachFromFrame):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::stopAllLoaders):
(WebCore::FrameLoader::setDocumentLoader):
(WebCore::FrameLoader::setPolicyDocumentLoader):
(WebCore::FrameLoader::setProvisionalDocumentLoader):
Return early when the new loader is identical to the existing one, to avoid incorrectly calling
detachFromFrame() on it.

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::close):
Add some release logging.

4:07 PM Changeset in webkit [270717] by aestes@apple.com
  • 7 edits in trunk/Source/WebCore

[Mac] Abstract SourceBufferParser segments
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

Rather than directly using a Vector, teach SourceBufferParser to use a Segment class.
This will allow the underlying segment representation to vary in a follow-on patch.

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

(WebCore::SourceBufferParserAVFObjC::appendData):

  • platform/graphics/cocoa/SourceBufferParser.cpp:

(WebCore::SourceBufferParser::Segment::Segment):
(WebCore::SourceBufferParser::Segment::size const):
(WebCore::SourceBufferParser::Segment::read const):
(WebCore::SourceBufferParser::Segment::takeVector):

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

(WebCore::SourceBufferParserWebM::appendData):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:
4:07 PM Changeset in webkit [270716] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Fix the iOS !UISCROLLVIEW_ASYNCHRONOUS_SCROLL_EVENT_HANDLING build.

  • Shared/ios/WebIOSEventFactory.mm:

(WebIOSEventFactory::createWebWheelEvent):

3:38 PM Changeset in webkit [270715] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Use InlineTextItem::shouldPreserveSpacesAndTabs throughout the inline line layout code
https://bugs.webkit.org/show_bug.cgi?id=219799

Reviewed by Antti Koivisto.

Remove redundant local functions.

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processInlineContent):
(WebCore::Layout::shouldKeepBeginningOfLineWhitespace): Deleted.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::Run::expand):
(WebCore::Layout::Line::Run::visuallyCollapseTrailingWhitespace):
(WebCore::Layout::isWhitespacePreserved): Deleted.

  • layout/inlineformatting/InlineLine.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):

  • layout/inlineformatting/text/TextUtil.h:

(WebCore::Layout::TextUtil::shouldPreserveTrailingWhitespace): Deleted.

3:34 PM Changeset in webkit [270714] by Dewei Zhu
  • 2 edits in trunk/Websites/perf.webkit.org

'AnalysisTask._commitSetsInSamePlatformGroup' should not fetch an invalid platform and metric config for a MeasurementSet.
https://bugs.webkit.org/show_bug.cgi?id=219721

Reviewed by Ryosuke Niwa.

Selected test group on analysis task page may not highlight when 'AnalysisTask._commitSetsInSamePlatformGroup' fetches
an invalid platform and metric config for a MeasurementSet.

  • public/v3/models/analysis-task.js: Added a logic to avoid fetching MeasurementSet with an invalid config.

(AnalysisTask.prototype._commitSetsInSamePlatformGroup):

3:27 PM Changeset in webkit [270713] by Aditya Keerthi
  • 12 edits
    15 adds in trunk

[iOS][FCR] Add new look for select elements
https://bugs.webkit.org/show_bug.cgi?id=219507
<rdar://problem/71951874>

Reviewed by Wenson Hsieh.

Source/WebCore:

Implement the new in-page appearance for <select> and <select multiple>.
The new appearance/behavior of the select popup will be added separately.

Tests: fast/forms/ios/form-control-refresh/select/background-color.html

fast/forms/ios/form-control-refresh/select/border-radius.html
fast/forms/ios/form-control-refresh/select/border.html
fast/forms/ios/form-control-refresh/select/multiple-appearance.html
fast/forms/ios/form-control-refresh/select/rtl-appearance.html
fast/forms/ios/form-control-refresh/select/text-color.html
fast/forms/ios/form-control-refresh/select/width-height.html

  • css/formControlsIOS.css:

(select):

  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::adjustInnerStyle):
(RenderMenuList::layout):

Override the layout method so that the border radius can be adjusted to
enforce the pill-shaped appearance. Ideally, we should not be adjusting
styles during layout. However, for a pill-shaped appearance, the
horizontal border radius is dependent on the computed height of the box.
This means that the border radius cannot be declared prior to layout,
since CSS only allows the horizontal border radius to be dependent on the
computed width of the box.

Ignoring the style's border radius and forcing a pill-shaped appearance at
paint time is not an option, since focus rings and tap highlights will not
use the correct border radius. Consequently, we need to adjust the border
radius after layout.

Note that similar adjustments to style after layout are made in RenderSliderThumb,
RenderButton, and RenderTextControlSingleLine.

  • rendering/RenderMenuList.h:
  • rendering/RenderTheme.h:

(WebCore::RenderTheme::popupInternalPaddingBox const):

Added a new parameter, so that the padding can be controlled at runtime.

  • rendering/RenderThemeAdwaita.cpp:

(WebCore::RenderThemeAdwaita::popupInternalPaddingBox const):

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

(WebCore::RenderThemeIOS::popupInternalPaddingBox const):

Use a 1em padding, so that the button scales with the font size.

(WebCore::canAdjustBorderRadiusForAppearance):

Enforce a pill-like shape, only if the author has not specified a
custom border radius.

(WebCore::RenderThemeIOS::paintMenuListButtonDecorations):
(WebCore::RenderThemeIOS::paintMenuListButtonDecorationsWithFormControlRefresh):

Paint the appropriate glyph for <select> (a two-headed arrow) and
<select multiple> (ellipses). Both glyphs were obtained from
SF Symbols. The glyph is painted on the right by default, and on
the left if the element's direction is RTL.

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::popupInternalPaddingBox const):

LayoutTests:

Added tests to verify the stylability of select elements with the new appearance.

  • fast/forms/ios/form-control-refresh/select/background-color-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/select/background-color.html: Added.
  • fast/forms/ios/form-control-refresh/select/border-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/select/border-radius-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/select/border-radius.html: Added.
  • fast/forms/ios/form-control-refresh/select/border.html: Added.
  • fast/forms/ios/form-control-refresh/select/multiple-appearance-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/select/multiple-appearance.html: Added.
  • fast/forms/ios/form-control-refresh/select/rtl-appearance-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/select/rtl-appearance.html: Added.
  • fast/forms/ios/form-control-refresh/select/text-color-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/select/text-color.html: Added.
  • fast/forms/ios/form-control-refresh/select/width-height-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/select/width-height.html: Added.
2:59 PM Changeset in webkit [270712] by timothy_horton@apple.com
  • 28 edits in trunk

Trackpad and Mouse scroll events on iPad only fire "pointermove" -- not "wheel"
https://bugs.webkit.org/show_bug.cgi?id=210071
<rdar://problem/54616853>

Reviewed by Simon Fraser.

Source/WebCore:

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleWheelEventInternal):
Fix a minor logic error when WHEEL_EVENT_LATCHING is off; allowScrolling
would always be true, even if the set of processing steps does not include any scrolling steps.

  • rendering/EventRegion.h:

(WebCore::EventRegion::encode const):
(WebCore::EventRegion::decode):
Encode/decode the wheel and passive wheel event regions.

Source/WebKit:

  • Platform/spi/ios/UIKitSPI.h:

Add some SPI.

  • Shared/ios/WebIOSEventFactory.h:
  • Shared/ios/WebIOSEventFactory.mm:

(toWebPhase):
(WebIOSEventFactory::createWebWheelEvent):
Add a UIScrollEvent->WebWheelEvent conversion helper.

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/API/ios/WKWebViewIOS.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _setupScrollAndContentViews]):
Enable async UIScrollEvent handling for WKScrollView.

(-[WKWebView _scrollView:asynchronouslyHandleScrollEvent:completion:]):
Adopt new UIKit SPI to asynchronously defer UIScrollEvents.
We pass them to the Web Content process, where they are processed
*only* for event handling, not for scrolling.

If the event is not cancelable, we will synchronously reply that it was
not handled; if it is cancelable, or we don't yet know if it will be,
we'll wait to hear back from the Web Content process before replying.

UIKit will wait until our reply to apply the UIScrollEvent to the UIScrollView.

  • UIProcess/PageClient.h:
  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:

(WebKit::eventListenerTypesAtPoint):
Expose a mechanism for retrieving the event listener types at a given point,
similar to the existing mechanism for touch event listeners.

(-[WKChildScrollView initWithFrame:]):
Enable async UIScrollEvent handling for WKChildScrollView.

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(-[WKScrollingNodeScrollViewDelegate _scrollView:asynchronouslyHandleScrollEvent:completion:]):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::handleAsynchronousCancelableScrollEvent):
Plumb async scroll events for sub-scrollable regions through PageClient
to WKWebView; we don't actually care which UIScrollView they're handed to,
since we re-hit-test ourselves.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::dispatchWheelEventWithoutScrolling):

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

(WebKit::PageClientImpl::handleAsynchronousCancelableScrollEvent):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::wheelEvent):
(WebKit::WebPage::dispatchWheelEventWithoutScrolling):

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

Source/WTF:

  • wtf/PlatformEnableCocoa.h:

Enable wheel event regions on iOS + macCatalyst.

Tools:

  • TestWebKitAPI/Tests/ios/WKScrollViewTests.mm:

(-[WKUIScrollEvent initWithPhase:location:delta:]):
(-[WKUIScrollEvent phase]):
(-[WKUIScrollEvent locationInView:]):
(-[WKUIScrollEvent _adjustedAcceleratedDeltaInView:]):
(TEST):

  • TestWebKitAPI/ios/UIKitSPI.h:

Add a very simple test that directly calls the new UIScrollViewDelegate SPI
and verifies that only the first event is cancelable (unless the first event
is canceled, in which case all subsequent events are cancelable).

2:57 PM Changeset in webkit [270711] by Caio Lima
  • 10 edits in trunk/Source/JavaScriptCore

[JIT] Require value registers explicitly on emitValueProfilingSite
https://bugs.webkit.org/show_bug.cgi?id=219550

Reviewed by Yusuke Suzuki.

This patch is removing the default value for emitValueProfilingSite
to avoid bugs like r270423 and r270431.

  • jit/JIT.cpp:

(JSC::JIT::compileWithoutLinking):

  • jit/JIT.h:
  • jit/JITCall.cpp:

(JSC::JIT::emitPutCallResult):
(JSC::JIT::emit_op_iterator_open):

  • jit/JITCall32_64.cpp:

(JSC::JIT::emitPutCallResult):
(JSC::JIT::emit_op_iterator_open):

  • jit/JITInlines.h:

(JSC::JIT::appendCallWithExceptionCheckSetJSValueResultWithProfile):
(JSC::JIT::emitValueProfilingSiteIfProfiledOpcode):
(JSC::JIT::emitValueProfilingSite):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_get_direct_pname):
(JSC::JIT::emit_op_get_argument):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_get_direct_pname):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_get_internal_field):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_get_internal_field):

2:34 PM Changeset in webkit [270710] by Brent Fulgham
  • 7 edits in trunk/Source

Expose API for enabling/disabling Private Click Measurement
https://bugs.webkit.org/show_bug.cgi?id=219791
<rdar://problem/70502198>

Reviewed by Alex Christensen.

Source/WebKit:

Tested by existing PCM test cases.

This patch moves the flag for enabling and disabling PCM support from the Experimental
features settings to standard settings in preparation for exposing the option in more
permanent UI. This patch does not make any changes in behavior.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _privateClickMeasurementEnabled]):
(-[WKPreferences _setPrivateClickMeasurementEnabled:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Source/WTF:

This patch moves the flag for enabling and disabling PCM support from the Experimental
features settings to standard settings in preparation for exposing the option in more
permanent UI. This patch does not make any changes in behavior.

  • Scripts/Preferences/WebPreferences.yaml: Add PCM flag here.
  • Scripts/Preferences/WebPreferencesExperimental.yaml: Remove PCM flag from here.
2:28 PM Changeset in webkit [270709] by Truitt Savell
  • 11 edits
    35 copies
    41 adds
    1 delete in trunk/LayoutTests

Remove LayoutTests/platform/big-sur
https://bugs.webkit.org/show_bug.cgi?id=218359

Unreviewed test gardening.

  • platform/mac-bigsur/http/tests/navigation/javascriptlink-frames-expected.txt: Removed.
  • platform/mac-bigsur/media/controls-after-reload-expected.txt: Removed.
  • platform/mac-bigsur/media/video-no-audio-expected.txt: Removed.
  • platform/mac-bigsur/svg/W3C-I18N/tspan-direction-rtl-expected.txt: Removed.
  • platform/mac-bigsur/svg/custom/svg-fonts-without-missing-glyph-expected.txt: Removed.
  • platform/mac-bigsur/svg/text/bidi-tspans-expected.txt: Removed.
  • platform/mac-bigsur/tables/mozilla/bugs/bug18359-expected.txt: Removed.
  • platform/mac-bigsur/tables/mozilla/bugs/bug60749-expected.txt: Removed.
  • platform/mac-bigsur/tables/mozilla/bugs/bug7342-expected.txt: Removed.
  • platform/mac-bigsur/transforms/2d/zoom-menulist-expected.txt: Removed.
  • platform/mac-catalina/http/tests/navigation/javascriptlink-frames-expected.txt: Copied from LayoutTests/platform/mac/http/tests/navigation/javascriptlink-frames-expected.txt.
  • platform/mac-catalina/http/tests/xmlhttprequest/methods-async-expected.txt: Copied from LayoutTests/platform/mac-bigsur/http/tests/xmlhttprequest/methods-async-expected.txt.
  • platform/mac-catalina/http/tests/xmlhttprequest/methods-expected.txt: Copied from LayoutTests/platform/mac-bigsur/http/tests/xmlhttprequest/methods-expected.txt.
  • platform/mac-catalina/http/tests/xmlhttprequest/workers/methods-async-expected.txt: Copied from LayoutTests/platform/mac-bigsur/http/tests/xmlhttprequest/workers/methods-async-expected.txt.
  • platform/mac-catalina/http/tests/xmlhttprequest/workers/methods-expected.txt: Copied from LayoutTests/platform/mac-bigsur/http/tests/xmlhttprequest/workers/methods-expected.txt.
  • platform/mac-catalina/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any-expected.txt: Added.
  • platform/mac-catalina/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker-expected.txt: Added.
  • platform/mac-catalina/imported/w3c/web-platform-tests/fetch/redirect-navigate/preserve-fragment-expected.txt: Copied from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/fetch/redirect-navigate/preserve-fragment-expected.txt.
  • platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Copied from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt.
  • platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt: Copied from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt.
  • platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Copied from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt.
  • platform/mac-catalina/imported/w3c/web-platform-tests/xhr/send-entity-body-empty-expected.txt: Copied from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/xhr/send-entity-body-empty-expected.txt.
  • platform/mac-catalina/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-async-expected.txt: Added.
  • platform/mac-catalina/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-expected.txt: Added.
  • platform/mac-catalina/imported/w3c/web-platform-tests/xhr/send-entity-body-none-expected.txt: Added.
  • platform/mac-catalina/media/controls-after-reload-expected.txt: Copied from LayoutTests/platform/mac/media/controls-after-reload-expected.txt.
  • platform/mac-catalina/media/video-no-audio-expected.txt: Copied from LayoutTests/platform/mac/media/video-no-audio-expected.txt.
  • platform/mac-catalina/platform/mac/fast/text/bidi-fallback-font-weight-expected.txt: Copied from LayoutTests/platform/mac-bigsur/platform/mac/fast/text/international/bidi-fallback-font-weight-expected.txt.
  • platform/mac-catalina/svg/W3C-I18N/tspan-direction-rtl-expected.txt: Copied from LayoutTests/platform/mac/svg/W3C-I18N/tspan-direction-rtl-expected.txt.
  • platform/mac-catalina/svg/custom/svg-fonts-without-missing-glyph-expected.txt: Copied from LayoutTests/platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.txt.
  • platform/mac-catalina/svg/text/bidi-tspans-expected.txt: Copied from LayoutTests/platform/mac/svg/text/bidi-tspans-expected.txt.
  • platform/mac-catalina/tables/mozilla/bugs/bug18359-expected.txt: Copied from LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.txt.
  • platform/mac-catalina/tables/mozilla/bugs/bug60749-expected.txt: Copied from LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.txt.
  • platform/mac-catalina/tables/mozilla/bugs/bug7342-expected.txt: Copied from LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.txt.
  • platform/mac-catalina/transforms/2d/zoom-menulist-expected.txt: Copied from LayoutTests/platform/mac/transforms/2d/zoom-menulist-expected.txt.
  • platform/mac/http/tests/navigation/javascriptlink-frames-expected.txt:
  • platform/mac/http/tests/xmlhttprequest/methods-async-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/http/tests/xmlhttprequest/methods-async-expected.txt.
  • platform/mac/http/tests/xmlhttprequest/methods-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/http/tests/xmlhttprequest/methods-expected.txt.
  • platform/mac/http/tests/xmlhttprequest/workers/methods-async-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/http/tests/xmlhttprequest/workers/methods-async-expected.txt.
  • platform/mac/http/tests/xmlhttprequest/workers/methods-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/http/tests/xmlhttprequest/workers/methods-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/fetch/redirect-navigate/preserve-fragment-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/fetch/redirect-navigate/preserve-fragment-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/xhr/send-entity-body-empty-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/xhr/send-entity-body-empty-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-async-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-async-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/xhr/send-entity-body-none-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/xhr/send-entity-body-none-expected.txt.
  • platform/mac/media/controls-after-reload-expected.txt:
  • platform/mac/media/video-no-audio-expected.txt:
  • platform/mac/platform/mac/fast/loader/international/bidi-fallback-font-weight-expected.txt: Renamed from LayoutTests/platform/mac-bigsur/platform/mac/fast/text/international/bidi-fallback-font-weight-expected.txt.
  • platform/mac/svg/W3C-I18N/tspan-direction-rtl-expected.txt:
  • platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.txt:
  • platform/mac/svg/text/bidi-tspans-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug60749-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug7342-expected.txt:
  • platform/mac/transforms/2d/zoom-menulist-expected.txt:
1:47 PM Changeset in webkit [270708] by Peng Liu
  • 10 edits in trunk/Source

[Media in GPU Process][MSE] Implement some required functions with new IPC messages and remove some unneeded functions
https://bugs.webkit.org/show_bug.cgi?id=219788

Reviewed by Eric Carlson.

Source/WebCore:

Change the argument type of sourceBufferPrivateDidReceiveRenderingError() from int to int64_t
so that we can pass it in an IPC message.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveRenderingError):

  • Modules/mediasource/SourceBuffer.h:
  • platform/graphics/SourceBufferPrivateClient.h:

Source/WebKit:

Implement unimplemented functions and remove unneeded ones.
This patch also cleans up RemoteSourceBufferProxy.

  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateStreamEndedWithDecodeError):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateAppendError):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidDropSample):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveRenderingError):

  • GPUProcess/media/RemoteSourceBufferProxy.h:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateStreamEndedWithDecodeError):
(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateAppendError):
(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateDidDropSample):
(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateDidReceiveRenderingError):
(WebKit::SourceBufferPrivateRemote::flush): Deleted.
(WebKit::SourceBufferPrivateRemote::isReadyForMoreSamples): Deleted.
(WebKit::SourceBufferPrivateRemote::notifyClientWhenReadyForMoreSamples): Deleted.
(WebKit::SourceBufferPrivateRemote::canSetMinimumUpcomingPresentationTime const): Deleted.
(WebKit::SourceBufferPrivateRemote::setMinimumUpcomingPresentationTime): Deleted.
(WebKit::SourceBufferPrivateRemote::clearMinimumUpcomingPresentationTime): Deleted.

  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in:
1:36 PM Changeset in webkit [270707] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

[LFC][IFC] InlineTextItem::isCollapsible might be misleading
https://bugs.webkit.org/show_bug.cgi?id=219796

Reviewed by Antti Koivisto.

This change makes the code more aligned with the spec language.
::isCollapsed (which maps to RenderStyle::collapseWhiteSpace) is not always about collapsing subsequent
whitespace content but also about preserving tab stops.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendTextContent):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::trailingWhitespaceType const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::inlineItemWidth const):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::shouldPreserveSpacesAndTabs):

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::isWhitespace const):
(WebCore::Layout::InlineTextItem::InlineTextItem):
(WebCore::Layout::InlineTextItem::isCollapsible const): Deleted.

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):

1:05 PM Changeset in webkit [270706] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening for Windows.

  • platform/win/fast/url/data-url-mediatype-expected.txt: Correct the baseline.
1:04 PM Changeset in webkit [270705] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[GPUProcess] WebAudio rendering quantum is 15 instead of 128 when the GPU Process is enabled
https://bugs.webkit.org/show_bug.cgi?id=219797

Reviewed by Eric Carlson.

WebAudio rendering quantum is 15 instead of 128 when the GPU Process is enabled. This generates a lot more
IPC unnecessarily, not to mention how WebAudio code expects a rendering quantum of 128 and could potentially
do bad things with a lower value.

The issue was that RemoteAudioSessionProxyManager::setPreferredBufferSizeForProcess() was iterating over
all RemoteAudioSessionProxy objects to find out the lowest rendering quantum. If there is a proxy with
a preferred buffer size that is not set, the value ends up being 0. When then ask core audio for a rendering
quantum of 0, and they end up using 15 (likely the minimum).

  • GPUProcess/media/RemoteAudioSessionProxyManager.cpp:

(WebKit::RemoteAudioSessionProxyManager::setPreferredBufferSizeForProcess):

12:53 PM Changeset in webkit [270704] by Aditya Keerthi
  • 2 edits in trunk/Source/WebCore

Unreviewed. Address post-review comments after r270678.

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::paintColorWellDecorations):

Use std::size to determine the size of the color stops array.

12:41 PM Changeset in webkit [270703] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Line should report the correct value for "content logical right"
https://bugs.webkit.org/show_bug.cgi?id=219779

Reviewed by Antti Koivisto.

Adjust the run's horizontal geometry when negative margin-start is present.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendReplacedInlineBox):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::contentLogicalRight const):

12:39 PM Changeset in webkit [270702] by Alexey Shvayka
  • 9 edits
    4 adds in trunk

Reflect.preventExtensions should not throw if called on WindowProxy or Location
https://bugs.webkit.org/show_bug.cgi?id=219270

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/html/browsers/history/the-location-interface/location-prevent-extensions-expected.txt: Added.
  • web-platform-tests/html/browsers/history/the-location-interface/location-prevent-extensions.html: Added.
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
  • web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prevent-extensions-expected.txt: Added.
  • web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prevent-extensions.html: Added.

Source/WebCore:

Since r254626 fixed Object.preventExtensions to throw a TypeError on
false result, this patch makes PreventExtensions? overrides pure,
aligning Reflect.preventExtensions behavior with the spec [1], Gecko,
and (only for WindowProxy [2]) Blink.

[1]: https://html.spec.whatwg.org/multipage/history.html#location-preventextensions
[2]: https://html.spec.whatwg.org/multipage/window-object.html#windowproxy-preventextensions

Tests: imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prevent-extensions.html

imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prevent-extensions.html

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::preventExtensions):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::preventExtensions):

  • bindings/js/JSRemoteDOMWindowCustom.cpp:

(WebCore::JSRemoteDOMWindow::preventExtensions):

LayoutTests:

  • http/tests/security/preventExtensions-window-location-expected.txt:
12:21 PM Changeset in webkit [270701] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebKit

[PlayStation] Link additional libraries into processes after r270690
https://bugs.webkit.org/show_bug.cgi?id=219795

Unreviewed build fix after r270690.

Some libraries were being propagated from WebKit before the change so just add
them to the Process_PRIVATE_LIBRARIES.

  • PlatformPlayStation.cmake:
12:10 PM Changeset in webkit [270700] by Tadeu Zagallo
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION (r270665): testapi failing on CLoop bot
https://bugs.webkit.org/show_bug.cgi?id=219787

Reviewed by Mark Lam.

The API has to special case the empty JSValue as null.

  • API/JSValueRef.cpp:

(JSValueGetType):
(JSValueIsNull):

12:09 PM Changeset in webkit [270699] by Fujii Hironori
  • 6 edits in trunk

[WinCairo] Enable accelerated WebGL canvas
https://bugs.webkit.org/show_bug.cgi?id=219768

Reviewed by Don Olmstead.

Source/WebCore:

TextureMapper has TextureMapperGCGLPlatformLayer that is a
PlatformLayer for WebGL.

  • html/canvas/GPUBasedCanvasRenderingContext.h (isAccelerated):

Return true for WinCairo port.

Source/WebKit:

prepareForRendering should be called before calling
flushPendingLayerChanges to make the GL context current because it
uses OpenGL API.

  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHostTextureMapper.cpp:

(WebKit::LayerTreeHost::compositeLayersToContext):
(WebKit::LayerTreeHost::flushAndRenderLayers):

LayoutTests:

  • platform/wincairo/TestExpectations: Skip some WebGL tests

because WinCairo DRT and WTR don't support pixel dump yet.

12:06 PM Changeset in webkit [270698] by Fujii Hironori
  • 4 edits
    2 adds in trunk

[TextureMapper] REGRESION(r269570): mask layer doesn't clip descendent layers
https://bugs.webkit.org/show_bug.cgi?id=219136
<rdar://problem/71742605>

Reviewed by Carlos Garcia Campos.

Source/WebCore:

computeOverlapRegions shouldn't include the descendent layer
region for layers with a mask layer. Add a new mode Mask to
ComputeOverlapRegionMode which is like Union mode but doesn't
include descendent layers.

Test: compositing/masks/clip-path-composited-descendent-2.html

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::computeOverlapRegions): Skip
children for the Mask mode.
(WebCore::TextureMapperLayer::paintUsingOverlapRegions): Use
ComputeOverlapRegionMode::Mask for a layer with mask layer.

  • platform/graphics/texmap/TextureMapperLayer.h (ComputeOverlapRegionMode): Added Mask.

LayoutTests:

  • compositing/masks/clip-path-composited-descendent-2-expected.html: Added.
  • compositing/masks/clip-path-composited-descendent-2.html: Added.
12:00 PM Changeset in webkit [270697] by Jonathan Bedard
  • 7 edits in trunk/Tools

[webkitscmpy] Do not use actual URLs in testing
https://bugs.webkit.org/show_bug.cgi?id=219790
<rdar://problem/72228983>

Reviewed by Stephanie Lewis.

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

(Git): Use example.org instead of webkit.org.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/svn.py:

(Svn.init): Use example.org instead of webkit.org.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/find_unittest.py:

(TestFind.test_basic_svn_remote): Use example.org instead of webkit.org.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(TestGit.test_info): Use example.org instead of webkit.org.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/svn_unittest.py:

(TestRemoteSvn): Use example.org instead of webkit.org.
(TestRemoteSvn.test_detection):

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

[GPU process] Update TestExpectations to skip Layout tests crashes
https://bugs.webkit.org/show_bug.cgi?id=219792

Patch by Rini Patel <rini_patel@apple.com> on 2020-12-11
Reviewed by Simon Fraser.

  • gpu-process/TestExpectations:
11:50 AM Changeset in webkit [270695] by ysuzuki@apple.com
  • 76 edits
    32 adds in trunk/JSTests

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

Reviewed by Mark Lam.

  • test262/expectations.yaml:
  • test262/latest-changes-summary.txt:
  • test262/test/built-ins/Array/prototype/reverse/array-has-one-entry.js: Added.
  • test262/test/built-ins/Array/prototype/sort/bug_596_1.js:
  • test262/test/built-ins/Math/max/Math.max_each-element-coerced.js: Added.

(const.n.valueOf):

  • test262/test/built-ins/Math/min/Math.min_each-element-coerced.js: Added.

(const.n.valueOf):

  • test262/test/built-ins/String/prototype/at/prop-desc.js:
  • test262/test/built-ins/TypedArray/prototype/at/prop-desc.js:
  • test262/test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-non-numeric-throw.js:
  • test262/test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-non-numeric.js:
  • test262/test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-symbol-throws.js:
  • test262/test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-set-value.js:
  • test262/test/built-ins/TypedArray/prototype/fill/fill-values-non-numeric.js:
  • test262/test/built-ins/TypedArray/prototype/fill/fill-values-symbol-throws.js:
  • test262/test/built-ins/TypedArray/prototype/fill/return-abrupt-from-set-value.js:
  • test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js:

(testWithTypedArrayConstructors.valueOf):
(testWithTypedArrayConstructors):
(testWithTypedArrayConstructors.detachAndReturnIndex): Deleted.

  • test262/test/built-ins/TypedArray/prototype/map/return-new-typedarray-conversion-operation-consistent-nan.js:
  • test262/test/built-ins/TypedArray/prototype/map/return-new-typedarray-conversion-operation.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/bigint-tobigint64.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/bigint-tobiguint64.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/boolean-tobigint.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/null-tobigint.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/number-tobigint.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/string-nan-tobigint.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/string-tobigint.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/symbol-tobigint.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-to-primitive-typeerror.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-to-primitive.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-tostring.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-valueof-typeerror.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-valueof.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/undefined-tobigint.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/conversion-operation-consistent-nan.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/conversion-operation.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-to-primitive-typeerror.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-to-primitive.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-tostring.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-valueof-typeerror.js:
  • test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-valueof.js:
  • test262/test/built-ins/TypedArrayConstructors/from/BigInt/source-value-is-symbol-throws.js:
  • test262/test/built-ins/TypedArrayConstructors/from/nan-conversion.js:
  • test262/test/built-ins/TypedArrayConstructors/from/source-value-is-symbol-throws.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/desc-value-throws.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-realm.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/set-value.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/tonumber-value-detached-buffer.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/conversion-operation.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/desc-value-throws.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer-realm.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/set-value.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-realm.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/indexed-value.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-minus-zero.js:

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-integer.js:

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-out-of-bounds.js:

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-detached-buffer.js:

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-throws.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/Set/conversion-operation-consistent-nan.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/Set/conversion-operation.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer-realm.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/Set/indexed-value.js:
  • test262/test/built-ins/TypedArrayConstructors/internals/Set/key-is-minus-zero.js:

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-integer.js:

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds.js:

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-detached-buffer.js:

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-throws.js:
  • test262/test/built-ins/TypedArrayConstructors/of/BigInt/argument-is-symbol-throws.js:
  • test262/test/built-ins/TypedArrayConstructors/of/BigInt/new-instance.js:
  • test262/test/built-ins/TypedArrayConstructors/of/argument-is-symbol-throws.js:
  • test262/test/built-ins/TypedArrayConstructors/of/nan-conversion.js:
  • test262/test/built-ins/TypedArrayConstructors/of/new-instance.js:
  • test262/test/built-ins/parseInt/S15.1.2.2_A2_T2.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/date-x-greater-than-y-throws.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-x-greater-than-y-throws.js:
  • test262/test/language/arguments-object/mapped/enumerable-configurable-accessor-descriptor.js: Added.

(set _v):

  • test262/test/language/arguments-object/mapped/nonconfigurable-descriptors-define-failure.js: Added.

(get 3):

  • test262/test/language/arguments-object/mapped/writable-enumerable-configurable-descriptor.js: Added.
  • test262/test/language/destructuring/binding/syntax/destructuring-array-parameters-function-arguments-length.js: Added.

(assert.sameValue):
(assert.sameValue.async a):

  • test262/test/language/destructuring/binding/syntax/destructuring-object-parameters-function-arguments-length.js: Added.

(assert.sameValue):

  • test262/test/language/expressions/async-function/named-reassign-fn-name-in-body-in-arrow.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-function/named-reassign-fn-name-in-body-in-eval.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-function/named-reassign-fn-name-in-body.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-function/named-strict-error-reassign-fn-name-in-body-in-arrow.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-function/named-strict-error-reassign-fn-name-in-body-in-eval.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-function/named-strict-error-reassign-fn-name-in-body.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-generator/named-no-strict-reassign-fn-name-in-body-in-arrow.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-generator/named-no-strict-reassign-fn-name-in-body-in-eval.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-generator/named-no-strict-reassign-fn-name-in-body.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-generator/named-strict-error-reassign-fn-name-in-body-in-arrow.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-generator/named-strict-error-reassign-fn-name-in-body-in-eval.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/async-generator/named-strict-error-reassign-fn-name-in-body.js: Added.

(let.ref.async BindingIdentifier):
(let.ref):

  • test262/test/language/expressions/function/named-no-strict-reassign-fn-name-in-body-in-arrow.js: Added.

(let.ref):

  • test262/test/language/expressions/function/named-no-strict-reassign-fn-name-in-body-in-eval.js: Added.

(let.ref):

  • test262/test/language/expressions/function/named-no-strict-reassign-fn-name-in-body.js: Added.

(let.ref):

  • test262/test/language/expressions/function/named-strict-error-reassign-fn-name-in-body-in-arrow.js: Added.

(let.ref):

  • test262/test/language/expressions/function/named-strict-error-reassign-fn-name-in-body-in-eval.js: Added.

(let.ref):

  • test262/test/language/expressions/function/named-strict-error-reassign-fn-name-in-body.js: Added.

(let.ref):

  • test262/test/language/expressions/generators/named-no-strict-reassign-fn-name-in-body-in-arrow.js: Added.

(let.ref):

  • test262/test/language/expressions/generators/named-no-strict-reassign-fn-name-in-body-in-eval.js: Added.

(let.ref):

  • test262/test/language/expressions/generators/named-no-strict-reassign-fn-name-in-body.js: Added.

(let.ref):

  • test262/test/language/expressions/generators/named-strict-error-reassign-fn-name-in-body-in-arrow.js: Added.

(let.ref):

  • test262/test/language/expressions/generators/named-strict-error-reassign-fn-name-in-body-in-eval.js: Added.

(let.ref):

  • test262/test/language/expressions/generators/named-strict-error-reassign-fn-name-in-body.js: Added.

(let.ref):

  • test262/test262-Revision.txt:
11:46 AM Changeset in webkit [270694] by jiewen_tan@apple.com
  • 16 edits in trunk/Source/WebKit

[WebAuthn] Adopt new UI for the Platform Authenticator makeCredential flow
https://bugs.webkit.org/show_bug.cgi?id=219709
<rdar://problem/72154774>

Reviewed by Brent Fulgham.

This patch adopts the new UI for the platform authenticator makeCredential flow. In this new design,
the UI will be responsible for creating the LAContext and get it verified by the user. Therefore, WebKit
just needs to reverify the LAContext in non-UI mode against the SecAccessControlRef without handling any
LA UI anymore.

Covered by manual tests.

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:

Adds a new class which represents a successful operation.

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

Adds rule to allow the WebAuthn process to access Keychain and SEP.

  • UIProcess/WebAuthentication/Authenticator.h:

(WebKit::Authenticator::setWebAuthenticationModernEnabled):
(WebKit::Authenticator::webAuthenticationModernEnabled const):
Adds a flag to know which UI to call.

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::handleRequest):
(WebKit::AuthenticatorManager::enableModernWebAuthentication):
(WebKit::AuthenticatorManager::authenticatorAdded):
(WebKit::AuthenticatorManager::requestLAContextForUserVerification):
(WebKit::AuthenticatorManager::invokePendingCompletionHandler):

  • UIProcess/WebAuthentication/AuthenticatorManager.h:

Adds plumbing to the new UI method.

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

Paperwork.

  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.h:

(WebKit::AuthenticatorPresenterCoordinator::setCredentialRequestHandler):
This handler is from the UI delegate which is supposed to call if the operation succeeds.

  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:

(WebKit::AuthenticatorPresenterCoordinator::AuthenticatorPresenterCoordinator):
(WebKit::AuthenticatorPresenterCoordinator::requestLAContextForUserVerification):
(WebKit::AuthenticatorPresenterCoordinator::dimissPresenter):
(WebKit::AuthenticatorPresenterCoordinator::setLAContext):

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

(WebKit::LocalAuthenticator::makeCredential):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterReceivingLAContext):

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

(WebKit::LocalConnection::verifyUser):

  • UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.mm:

(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:credentialRequestedForLoginChoice:authenticatedContext:completionHandler:]):
(-[WKASCAuthorizationPresenterDelegate dispatchCoordinatorCallback:]):
Implements the new UI logic.

11:37 AM Changeset in webkit [270693] by Darin Adler
  • 2 edits in trunk/Source/WebKitLegacy/mac

[Cocoa] REGRESSION (r270315): WebKitLegacy builds fail with "unifdef" error message
https://bugs.webkit.org/show_bug.cgi?id=219756

Reviewed by Sam Weinig.

Was seeing this error: Unifdef: can't open Debug/WebKitLegacy.framework/Versions/A/Headers/*.h.tmp: No such file or directory.
Keith figured out it was because there are no public headers in the WebKitLegacy framework.

  • postprocess-headers.sh: Remove the line that post-processes public headers.
11:29 AM Changeset in webkit [270692] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Remove access to com.apple.MTLCompilerService in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=219774
<rdar://problem/70497100>

Reviewed by Brent Fulgham.

Remove access to com.apple.MTLCompilerService in the WebContent process on macOS, since there are no reports of this being used.

No new tests, since the result will depend on macOS version.

  • WebProcess/com.apple.WebProcess.sb.in:
11:26 AM Changeset in webkit [270691] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Remove Mobile Asset access from the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=219738
<rdar://problem/60650074>

Reviewed by Brent Fulgham.

Remove Mobile Asset access from the WebContent process on macOS, since there are no reports of this being used.

No new tests, since the result will depend on macOS version.

  • WebProcess/com.apple.WebProcess.sb.in:
11:15 AM Changeset in webkit [270690] by don.olmstead@sony.com
  • 30 edits in trunk

[CMake] Determine correct visibility for linked frameworks
https://bugs.webkit.org/show_bug.cgi?id=210366

Reviewed by Michael Catanzaro.

.:

WebKit has some frameworks that are compiled statically into a larger shared library. For
example Apple compiles bmalloc and WTF into JavaScriptCore. This means the JavaScriptCore
framework also exposes the symbols for those two libraries and that targets depending
on WTF or bmalloc should link to JavaScriptCore and never to WTF or bmalloc directly.

The CMake code allows each port to decide the type of library for a WEBKIT_FRAMEWORK.
This means there are many different combinations that it needs to support. To ensure that
everything links properly some bookkeeping is required.

WEBKIT_FRAMEWORK now uses ${target}_FRAMEWORKS to determine how to link the frameworks
it depends on. First the macro determines if the framework is a SHARED library or is linked
into a shared library, and if so it is linked as PUBLIC. If the framework itself is not a
SHARED library, then it links other STATIC/OBJECT framework as PUBLIC. If the framework
itself is SHARED then any framework that is a STATIC/OBJECT library is linked as PRIVATE
to stop propagation. The linked framework's header directories are added to the
WebKit::${framework} target to allow the framework to present as that framework. A global
property is set to inform consumers that they should link to this different framework
to get the requested framework.

This ensures that all ports can ship with hidden visibility turned on which is a precursor
to a port turning on link time optimization (LTO).

  • Source/cmake/WebKitMacros.cmake:

Source/JavaScriptCore:

Set JavaScriptCore_FRAMEWORKS to determine correct linkage for the library. Remove
explicit setting of STATICALLY_LINKED_WITH_${framework} and $<TARGET_OBJECTS:${framework}>
by ports.

Move the add_subdirectory of shell to the end of the CMakeLists.txt so its after the
WEBKIT_FRAMEWORK call. This ensures that the frameworks linked into JavaScriptCore are
known when creating the executables in that directory.

  • CMakeLists.txt:
  • PlatformGTK.cmake:
  • PlatformJSCOnly.cmake:
  • PlatformMac.cmake:
  • PlatformPlayStation.cmake:
  • shell/CMakeLists.txt:

Source/WebCore:

Set WebCore_FRAMEWORKS and WebCoreTestSupport_FRAMEWORKS to determine correct linkage
for the libraries. Remove explicit setting of STATICALLY_LINKED_WITH_PAL.

For the GTK port JavaScriptCore is compiled as a SHARED library with WTF and bmalloc
compiled into it. WEBKIT_FRAMEWORK now correctly prevents WTF and bmalloc being linked
into targets that also link JavaScriptCore. However GTK port can't be compiled with
hidden visibility turned on currently to properly export symbols so the libraries are
added back to the list for WebCore to keep the old, albiet wrong, behavior.

  • CMakeLists.txt:
  • PlatformGTK.cmake:

Source/WebCore/PAL:

Set PAL_FRAMEWORKS to determine correct linkage for the library.

  • pal/CMakeLists.txt:

Source/WebDriver:

Conditionally add bmalloc to the list of WebDriver_FRAMEWORKS.

  • CMakeLists.txt:

Source/WebKit:

Set WebKit_FRAMEWORKS to determine correct linkage for the library. Remove
explicit setting of STATICALLY_LINKED_WITH_${framework} and $<TARGET_OBJECTS:${framework}>
by ports.

  • CMakeLists.txt:
  • PlatformFTW.cmake:
  • PlatformPlayStation.cmake:
  • PlatformWPE.cmake:
  • PlatformWin.cmake:

Source/WebKitLegacy:

Remove explicit setting of STATICALLY_LINKED_WITH_${framework}.

  • PlatformFTW.cmake:
  • PlatformWin.cmake:

Source/WTF:

Set WTF_FRAMEWORKS to determine correct linkage for the library. Remove
explicit setting of STATICALLY_LINKED_WITH_${framework} by ports.

  • wtf/CMakeLists.txt:
  • wtf/PlatformPlayStation.cmake:

Tools:

Remove explicit setting of STATICALLY_LINKED_WITH_${framework}.

  • TestWebKitAPI/PlatformWin.cmake:
11:04 AM Changeset in webkit [270689] by commit-queue@webkit.org
  • 25 edits
    1 move
    5 adds
    2 deletes in trunk

[WASM-References] Add table.init
https://bugs.webkit.org/show_bug.cgi?id=219297

Patch by Dmitry Bezhetskov <dbezhetskov> on 2020-12-11
Reviewed by Yusuke Suzuki.

JSTests:

Added reference types spec tests for element section, table.init
and elem.drop:
https://github.com/WebAssembly/reference-types/blob/master/test/core/elem.wast,
https://github.com/WebAssembly/reference-types/blob/master/test/core/table_init.wast.
Added tests for checking table instructions immediates when they are unreachable.

  • wasm.yaml:
  • wasm/references-spec-tests/elem.wast.js: Added.
  • wasm/references-spec-tests/ref_is_null.js: Removed.
  • wasm/references-spec-tests/ref_is_null.wast.js: Added.
  • wasm/references-spec-tests/ref_null.js: Removed.
  • wasm/references-spec-tests/ref_null.wast.js: Added.
  • wasm/references-spec-tests/table_copy.wast.js: Renamed from JSTests/wasm/references-spec-tests/table_copy.js.
  • wasm/references-spec-tests/table_init.wast.js: Added.
  • wasm/spec-harness/wasm-constants.js:

(hostref):

  • wasm/wasm.json:

Source/JavaScriptCore:

Add support for table.init, elem.drop and new element section
from reference-type proposal:
https://webassembly.github.io/reference-types/core/syntax/instructions.html#table-instructions,
https://webassembly.github.io/reference-types/core/syntax/modules.html#element-segments.
All in one patch because all this stuff are very coupled and ref-types
spec tests require each other to run the its tests, so not to write
hand-crafted tests this is in one PR.

  • bytecode/BytecodeList.rb:
  • llint/WebAssembly.asm:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::addTableInit):
(JSC::Wasm::AirIRGenerator::addElemDrop):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addTableInit):
(JSC::Wasm::B3IRGenerator::addElemDrop):

  • wasm/WasmFormat.h:

(JSC::Wasm::Element::Element):
(JSC::Wasm::Element::length const):
(JSC::Wasm::Element::isPassive const):

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseExpression):

  • wasm/WasmInstance.cpp:

(JSC::Wasm::Instance::Instance):
(JSC::Wasm::Instance::elemDrop):
(JSC::Wasm::Instance::elem const):
(JSC::Wasm::Instance::initElementSegment):
(JSC::Wasm::Instance::tableInit):

  • wasm/WasmInstance.h:

(JSC::Wasm::Instance::isImportFunction const):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::addTableInit):
(JSC::Wasm::LLIntGenerator::addElemDrop):

  • wasm/WasmModuleInformation.h:

(JSC::Wasm::ModuleInformation::elementCount const):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmOperations.h:
  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseElement):
(JSC::Wasm::SectionParser::parseElementSegmentVectorOfExpressions):
(JSC::Wasm::SectionParser::parseElementSegmentVectorOfIndexes):
(JSC::Wasm::SectionParser::parseFuncIndexFromRefExpForElementSection): Deleted.
(JSC::Wasm::SectionParser::parseFuncIndexForElementSection): Deleted.

  • wasm/WasmSectionParser.h:
  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::WASM_SLOW_PATH_DECL):

  • wasm/WasmSlowPaths.h:
  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::evaluate):

  • wasm/wasm.json:

Tools:

Support ref-types spec tests.

  • Scripts/run-jsc-stress-tests:
11:00 AM Changeset in webkit [270688] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r270654.
https://bugs.webkit.org/show_bug.cgi?id=219793

Introduced crash

Reverted changeset:

"[macOS] The development WebContent XPC service is missing a
required entitlement"
https://bugs.webkit.org/show_bug.cgi?id=219730
https://trac.webkit.org/changeset/270654

10:50 AM Changeset in webkit [270687] by Ryan Haddad
  • 2 edits in trunk/Websites/webkit.org

Add Big Sur to WebKit Build Archives page
https://bugs.webkit.org/show_bug.cgi?id=219789

Reviewed by Alexey Proskuryakov.

  • wp-content/themes/webkit/build-archives.php:

Add Big Sur, remove High Sierra since we aren't producing new archives for it.

10:49 AM Changeset in webkit [270686] by mark.lam@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

Add extra validation after untagging code pointers.
https://bugs.webkit.org/show_bug.cgi?id=219765
rdar://72069920

Reviewed by Robin Morisset.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::untagReturnAddress):
(JSC::AbstractMacroAssembler::validateUntaggedPtr):

  • assembler/MacroAssemblerARM64E.h:

(JSC::MacroAssemblerARM64E::untagReturnAddress):
(JSC::MacroAssemblerARM64E::validateUntaggedPtr):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::reifyInlinedCallFrames):

  • ftl/FTLThunks.cpp:

(JSC::FTL::genericGenerationThunkGenerator):

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::prepareForTailCallSlow):

  • jit/CallFrameShuffler.cpp:

(JSC::CallFrameShuffler::prepareForTailCall):

  • jit/ThunkGenerators.cpp:

(JSC::emitPointerValidation):
(JSC::arityFixupGenerator):

  • llint/LLIntThunks.cpp:

(JSC::LLInt::createTailCallGate):
(JSC::LLInt::untagGateThunk):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::jsCallEntrypointSlow):

10:31 AM Changeset in webkit [270685] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Protect the WebProcessPool earlier in WebProcessCache::addProcessIfPossible
https://bugs.webkit.org/show_bug.cgi?id=219777

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-12-11
Reviewed by Adrian Perez de Castro.

We are taking a reference of the WebProcessPool in the isResponsive() completion handler lambda, but the
WebProcessPool can be destroyed earlier when CachedProcess is created if the WebProcessProxy contains the last
strong reference.

  • UIProcess/WebProcessCache.cpp:

(WebKit::WebProcessCache::addProcessIfPossible):

10:23 AM Changeset in webkit [270684] by ggaren@apple.com
  • 2 edits in trunk/PerformanceTests

Eliminate 'async time' in StyleBench
https://bugs.webkit.org/show_bug.cgi?id=219785

Reviewed by Antti Koivisto.

r270132 (a RunLoop change) measured as a 13% regression on the
StyleBench bot. But I don't think the measured regression was user-real.
Instead, I think the baseline score was artificially high because 'async
time' sometimes did not measure painting.

I decided just to eliminate 'async time' (and force style resolution +
layout during 'sync time') because this benchmark intends to measure
style resolution + layout, and not painting or frame rate.

With this change, there is no measured regression anymore.

Explanation of 'did not measure painting':

StyleBench synchronously modifies DOM + style, and then sets a
zero-delay timer to measure 'async time'. If layout has not
happened by the time the timer fires, StyleBench forces layout
and then computes 'async time'. The flaw here is painting.
StyleBench accepts both of these orders of operations as valid:

(A) { modify DOM + style }, { measure 'sync time' }, { style resolution + layout }, { paint }, { measure 'async time' }

(B) { modify DOM + style }, { measure 'sync time' }, { style resolution + layout }, { measure 'async time' }, { paint }

(B) includes more stuff than (A). Not cool!

Evidence for the theory that the baseline was sometimes doing (B):

  • Forcing style resolution + layout during sync time reduces the baseline score and eliminates the difference in async time between baseline and patch.
  • Starting the benchmark from a requestAnimationFrame() instead of a timer reduces the baseline score and eliminates the difference in async time between baseline and patch.
  • The regression only reproduced on machines with fewer cores.
  • The new benchmark method reduces sttdev by ~3X - ~5X.
  • StyleBench/resources/benchmark-runner.js:

(BenchmarkRunner.prototype._runTest): Call getBoundingClientRect()
during sync time to force style resolution + layout consistently.

Always report async time as 1, since this benchmark doesn't have an
async time component anymore. (The harness doesn't like zeroes.)

Just store height in a global because that is sufficient to prevent
dead code elimination (which was probably impossible anyway, since
getBoundingClientRect() has side effects).

9:50 AM Changeset in webkit [270683] by Chris Lord
  • 6 edits in trunk/Source

[GTK][WPE] Async overflow scrolling is disabled by default due to brokenness
https://bugs.webkit.org/show_bug.cgi?id=219776

Reviewed by Žan Doberšek.

Source/WebCore:

Make sure to respect GraphicsLayer::boundsOrigin when calculating
transforms, coverage and clipping in CoordinatedGraphicsLayer. Also,
when scrolling overflow areas, change the boundsOrigin on the
container layer and not the contents area, to match behaviour on Mac.

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::repositionScrollingLayers):

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::paintSelfAndChildren):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::computeTransformedVisibleRect):

Source/WTF:

Enable async overflow scrolling with Nicosia.

  • Scripts/Preferences/WebPreferencesInternal.yaml:
9:32 AM Changeset in webkit [270682] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[macOS] Only extend access to the RootDomainUserClient IOKit class if the GPU Process is not used
https://bugs.webkit.org/show_bug.cgi?id=219758
<rdar://problem/70464431>

Reviewed by Per Arne Vollan.

The RootDomainUserClient IOKit class appears to only be used by media on Apple Silicon. Dynamically extend access to this
class for Apple Silicon builds if the GPU process is not being used.

This patch also includes telemetry to confirm that it is not needed on Intel, or for any other purposes. It does not
block access to the IOKit class yet.

  • UIProcess/WebPageProxy.cpp:

(WebKit::mediaRelatedIOKitClasses):

  • WebProcess/com.apple.WebProcess.sb.in:
9:28 AM Changeset in webkit [270681] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Adopt AVSystemController_SubscribeToNotificationsAttribute
https://bugs.webkit.org/show_bug.cgi?id=219754
<rdar://problem/71352731>

Reviewed by Eric Carlson.

Ask AVSystemController to send us the notifications we are interested in,
making sure to ask again if the server dies.

  • platform/audio/ios/MediaSessionHelperIOS.mm:

(MediaSessionHelperiOS::mediaServerConnectionDied):
(-[WebMediaSessionHelper initWithCallback:]):

9:05 AM Changeset in webkit [270680] by youenn@apple.com
  • 2 edits in trunk/Source/WTF

Enable WebRTCPlatformSocketsEnabled by default
https://bugs.webkit.org/show_bug.cgi?id=219778

Reviewed by Eric Carlson.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
8:46 AM Changeset in webkit [270679] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

Introduce a way to update additional settings than the one handled by policies
https://bugs.webkit.org/show_bug.cgi?id=219681

Reviewed by Eric Carlson.

Add a way for WebKit additions to update page settings at the time settings are changed by policies.
Manually tested.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::applyPoliciesToSettings):

  • loader/DocumentLoader.h:
8:42 AM Changeset in webkit [270678] by Aditya Keerthi
  • 8 edits
    9 adds in trunk

[iOS][FCR] Add new look for color inputs
https://bugs.webkit.org/show_bug.cgi?id=219654
<rdar://problem/72107493>

Reviewed by Wenson Hsieh.

Source/WebCore:

The new appearance matches the appearance of UIKit's UIColorWell.

Tests: fast/forms/ios/form-control-refresh/color/background-color.html

fast/forms/ios/form-control-refresh/color/border-radius.html
fast/forms/ios/form-control-refresh/color/border.html
fast/forms/ios/form-control-refresh/color/width-height.html

  • css/formControlsIOS.css:

(input[type="color"]::-webkit-color-swatch-wrapper, input[type="color"]::-webkit-color-swatch):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::adjustStyle):
(WebCore::RenderTheme::paint):
(WebCore::RenderTheme::paintDecorations):
(WebCore::RenderTheme::adjustColorWellStyle const):

Call adjustButtonStyle to preserve existing behavior in cases where
the form control refresh does not apply (setting disabled,
non-iOS ports).

(WebCore::RenderTheme::paintColorWell):

Call paintButton to preserve existing behavior in cases where
the form control refresh does not apply (setting disabled,
non-iOS ports).

(WebCore::RenderTheme::paintColorWellDecorations):

Call paintButtonDecorations to preserve existing behavior in
cases where the form control refresh does not apply (setting
disabled, non-iOS ports).

(WebCore::RenderTheme::colorInputStyleSheet const):

  • rendering/RenderTheme.h:

Previously, color inputs always had the same appearance as buttons.
However, with the new appearance on iOS this is no longer always
the case. Consequently, it is necessary to introduce adjustColorWellStyle,
paintColorWell and paintColorWellDecorations.

Updated colorInputStyleSheet to take an additional parameter, so that
the style can change depending on whether or not the form control refresh
setting is enabled. It is not possible to simply add the new style to
formControlsiOS.css, since <input type=color> is another runtime
enabled feature.

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

(WebCore::RenderThemeIOS::colorInputStyleSheet const):
(WebCore::RenderThemeIOS::adjustColorWellStyle const):
(WebCore::RenderThemeIOS::paintColorWell):
(WebCore::RenderThemeIOS::paintColorWellDecorations):

Use a conic gradient to achieve the new appearance.

  • style/UserAgentStyle.cpp:

(WebCore::Style::UserAgentStyle::ensureDefaultStyleSheetsForElement):

LayoutTests:

Added tests to verify the stylability of color inputs with the new appearance.

  • fast/forms/ios/form-control-refresh/color/background-color-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/color/background-color.html: Added.
  • fast/forms/ios/form-control-refresh/color/border-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/color/border-radius-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/color/border-radius.html: Added.
  • fast/forms/ios/form-control-refresh/color/border.html: Added.
  • fast/forms/ios/form-control-refresh/color/width-height-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/color/width-height.html: Added.
8:38 AM Changeset in webkit [270677] by don.olmstead@sony.com
  • 6 edits in trunk/Source/WebKit

[GLib] Move GCrypt initialization to platformInitialize
https://bugs.webkit.org/show_bug.cgi?id=219749

Reviewed by Adrian Perez de Castro.

It makes more sense for initialization of GCrypt to occur in platformInitialize
than in the main method of the process. This means that the process does not have
to link gcrypt libraries and can just link WebKit only.

  • NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp:

(main):

  • NetworkProcess/soup/NetworkProcessMainSoup.cpp:
  • WebProcess/EntryPoint/unix/WebProcessMain.cpp:

(main):

  • WebProcess/gtk/WebProcessMainGtk.cpp:

(WebKit::WebProcessMain):

  • WebProcess/wpe/WebProcessMainWPE.cpp:
8:06 AM Changeset in webkit [270676] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

REGRESSION (r270458): Canvas painting is broken when enabling GPU process for DOM
https://bugs.webkit.org/show_bug.cgi?id=219760

Reviewed by Tim Horton.

Use ImageBuffer::logicalSize instead of ImageBuffer::backendSize when overriding the CanvasBase's size, upon
changing image buffers. When enabling GPU process for DOM, ImageBufferShareableIOSurfaceBackend::backendSize
is empty because the actual IOSurface backend exists in the GPU process; using the backendSize instead of the
logical size here would otherwise cause us to always set CanvasBase's size to (0, 0).

  • html/CanvasBase.cpp:

(WebCore::CanvasBase::setImageBuffer const):

4:46 AM Changeset in webkit [270675] by magomez@igalia.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r268923): [WPE] Nothing renders on the rpi3 using the proprietary video driver
https://bugs.webkit.org/show_bug.cgi?id=219739

Reviewed by Carlos Garcia Campos.

Rewrite the GLSL code to perform rounded rectangle clipping so it works with the limitations
of the raspberrypi3 proprietary video driver.

  • platform/graphics/texmap/TextureMapperShaderProgram.cpp:
3:39 AM Changeset in webkit [270674] by pvollan@apple.com
  • 4 edits in trunk/Source/WebKit

[iOS] Remove access to the IOKIt class AGXDeviceUserClient in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=219733
<rdar://problem/70628137>

Reviewed by Brent Fulgham.

Remove access to the IOKIt class AGXDeviceUserClient in the WebContent process on iOS, since this is not needed when allowing access to IOGPU.
The IOGPU class is the superclass of AGXDeviceUserClient, and is the preferred IOKit reference to use according to the Sandbox team.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • UIProcess/WebPageProxy.cpp:

(WebKit::gpuIOKitClasses):

2:50 AM Changeset in webkit [270673] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

REGRESSION(r270186): [GTK] MiniBrowser: do not exit after load when no arguments given
https://bugs.webkit.org/show_bug.cgi?id=219737

Reviewed by Adrian Perez de Castro.

Only exit after load when --exit-after-load is passed.

  • MiniBrowser/gtk/main.c:

(activate):

2:45 AM Changeset in webkit [270672] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Unreviewed. Remove temporary workaround added to fix the build with GCC 10

Revert r269948. The bug has already been fixed in GCC.

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::sanitizeHTTPHeaderFieldsAccordingToTainting):

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

[macOS] Add telemetry for notification message filtering in sandbox
https://bugs.webkit.org/show_bug.cgi?id=219684
<rdar://problem/69819260>

Reviewed by Brent Fulgham.

Add telemetry for notification message filtering in sandbox in the WebContent process on macOS.

No new tests, since this just adds telemetry.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
1:29 AM Changeset in webkit [270670] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r270655.
https://bugs.webkit.org/show_bug.cgi?id=219772

Introduced sandbox compile error

Reverted changeset:

"[iOS] Add missing endpoint in sandbox message filter"
https://bugs.webkit.org/show_bug.cgi?id=219731
https://trac.webkit.org/changeset/270655

Dec 10, 2020:

11:41 PM Changeset in webkit [270669] by commit-queue@webkit.org
  • 17 edits
    3 adds in trunk

Accept click measurement data from hosting application
https://bugs.webkit.org/show_bug.cgi?id=219763
<rdar://problem/72121094>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-10
Reviewed by John Wilander.

Source/WebCore:

Covered by an API test.

  • loader/PrivateClickMeasurement.h:

(WebCore::PrivateClickMeasurement::PrivateClickMeasurement):
(WebCore::PrivateClickMeasurement::sourceID const):
(WebCore::PrivateClickMeasurement::sourceDescription const):
(WebCore::PrivateClickMeasurement::purchaser const):
(WebCore::PrivateClickMeasurement::encode const):
(WebCore::PrivateClickMeasurement::decode):
(WebCore::PrivateClickMeasurement::sourceID): Deleted.

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::buildPrivateClickMeasurementFromDatabase):

  • Platform/ios/UIKitSoftLink.h: Added.
  • Platform/ios/UIKitSoftLink.mm: Added.
  • Platform/spi/ios/UIKitSPI.h:
  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _setPrivateClickMeasurementOverrideTimerForTesting:completionHandler:]):
(-[WKWebView _setPrivateClickMeasurementConversionURLForTesting:completionHandler:]):

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _setEventAttribution:]):
(-[WKWebView _eventAttribution]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::createNewPage):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::setPrivateClickMeasurement):
(WebKit::WebPageProxy::privateClickMeasurement const):

  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(testCertificate):

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm: Added.

(-[MockEventAttribution initWithReportEndpoint:attributeOn:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/HTTPServer.h:
11:11 PM Changeset in webkit [270668] by Peng Liu
  • 8 edits in trunk/Source

[Media in GPU Process][MSE] Implement several methods in SourceBufferPrivateRemote to make seeking more reliable
https://bugs.webkit.org/show_bug.cgi?id=219757

Reviewed by Eric Carlson.

Source/WebCore:

Clean up the code regarding flush audio and video.

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

(WebCore::SourceBufferPrivateAVFObjC::flush):

Source/WebKit:

Add the required IPC messages and implement three functions of SourceBufferPrivateRemote.

  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::abort):
(WebKit::RemoteSourceBufferProxy::resetParserState):
(WebKit::RemoteSourceBufferProxy::removedFromMediaSource):

  • GPUProcess/media/RemoteSourceBufferProxy.h:
  • GPUProcess/media/RemoteSourceBufferProxy.messages.in:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::abort):
(WebKit::SourceBufferPrivateRemote::resetParserState):
(WebKit::SourceBufferPrivateRemote::removedFromMediaSource):

9:32 PM Changeset in webkit [270667] by wilander@apple.com
  • 8 edits in trunk

PCM: Turn feature on by default
https://bugs.webkit.org/show_bug.cgi?id=219762
<rdar://problem/56118178>

Reviewed by Brent Fulgham.

This patch turns on Private Click Measurement (PCM) by default.
Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

Test cases no longer need to enable it.

  • http/tests/privateClickMeasurement/anchor-tag-attributes-reflect.html:
  • http/tests/privateClickMeasurement/attribution-conversion-through-cross-site-image-redirect.html:
  • http/tests/privateClickMeasurement/attribution-conversion-through-image-redirect-in-new-window.html:
  • http/tests/privateClickMeasurement/attribution-conversion-through-image-redirect-with-priority.html:
  • http/tests/privateClickMeasurement/clear-through-website-data-removal.html:
9:21 PM Changeset in webkit [270666] by aestes@apple.com
  • 7 edits
    1 copy
    3 adds in trunk/Source

[Mac] Create a format reader plug-in for WebM
https://bugs.webkit.org/show_bug.cgi?id=218908
<rdar://problem/71373264>

Reviewed by Eric Carlson.

Source/WebCore/PAL:

  • pal/spi/cocoa/MediaToolboxSPI.h: Defined SPI for MTPluginFormatReader.

Source/WebKit:

Added a new bundle target that builds a MediaToolbox format reader
plug-in and installs it in the WebContent and GPU XPC service bundles.
The plug-in does nothing for now, but in follow-up patches will learn
how to read WebM containers.

  • Configurations/MediaFormatReader.xcconfig: Added.
  • MediaFormatReaderPlugIn/Info.plist: Added. Defines a CMClassImplementations array

specifying the plug-in factory function and the supported media types / extensions.

  • MediaFormatReaderPlugIn/MediaFormatReaderPlugIn.cpp: Added.
  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

  • wtf/PlatformHave.h: Defined HAVE_MT_PLUGIN_FORMAT_READER.
8:20 PM Changeset in webkit [270665] by Tadeu Zagallo
  • 6 edits in trunk

Removing unnecessary locking from JSValue API functions
https://bugs.webkit.org/show_bug.cgi?id=219723

Reviewed by Filip Pizlo.

PerformanceTests:

Print an error message when benchmarks fail to run and add option to change
the configuration used to build the benchmarks.

  • APIBench/api-bench:

Source/JavaScriptCore:

Remove the unnecessary locking from the JSValueIs* and JSValueMake* API functions
that only work on primitives. Also remove the unnecessary method dispatching and
call from the -[JSValue is*] methods.

This improves the APIBench score by another ~8% since these are such common operations.
Here are the results: (Baseline includes https://bugs.webkit.org/show_bug.cgi?id=219663)

CURRENT_API: Baseline Change


RichardsMostlyC: 74ms 60ms
RichardsMostlyObjC: 304ms 300ms
RichardsMostlySwift: 305ms 293ms
RichardsSomeC: 97ms 77ms
RichardsSomeObjC: 158ms 159ms
RichardsSomeSwift: 202ms 198ms

UPCOMING_API: Baseline Change


RichardsMostlyC: 23ms 19ms
RichardsMostlyObjC: 282ms 282ms
RichardsMostlySwift: 280ms 282ms
RichardsSomeC: 95ms 76ms
RichardsSomeObjC: 157ms 156ms
RichardsSomeSwift: 202ms 197ms


Score: 33.6404 36.4006

  • API/APICast.h:

(toRef):

  • API/JSValue.mm:

(-[JSValue isUndefined]):
(-[JSValue isNull]):
(-[JSValue isBoolean]):
(-[JSValue isNumber]):
(-[JSValue isString]):
(-[JSValue isObject]):
(-[JSValue isSymbol]):

  • API/JSValueRef.cpp:

(JSValueGetType):
(JSValueIsUndefined):
(JSValueIsNull):
(JSValueIsBoolean):
(JSValueIsNumber):
(JSValueIsString):
(JSValueIsObject):
(JSValueIsSymbol):
(JSValueMakeUndefined):
(JSValueMakeNull):
(JSValueMakeBoolean):
(JSValueMakeNumber):

8:14 PM Changeset in webkit [270664] by Alexey Shvayka
  • 4 edits in trunk

Align DefineOwnProperty? method of mapped arguments object with the spec
https://bugs.webkit.org/show_bug.cgi?id=219750

Reviewed by Yusuke Suzuki.

JSTests:

  • test262/expectations.yaml: Mark 5 test cases as passing.

Source/JavaScriptCore:

This patch reimplements DefineOwnProperty? method to resemble the spec [1] as
closely as possible, aligning JSC with V8 and SpiderMonkey on remaining test262 cases.

Unlike the spec [2], JSC doesn't materialize mapped indices with initial values,
so putDirectIndex() is performed on the first call to handle incomplete descriptors.

Even though there is a possibility to avoid JSObject storage puts for a handful of
super rare descriptors, it's not worth the increased complexity.

[1]: https://tc39.es/ecma262/#sec-arguments-exotic-objects-defineownproperty-p-desc
[2]: https://tc39.es/ecma262/#sec-createmappedargumentsobject (step 15.b)

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::defineOwnProperty):

6:14 PM Changeset in webkit [270663] by Chris Dumez
  • 33 edits in trunk

[GPUProcess] Cut in half amount of IPC needed to do WebAudio
https://bugs.webkit.org/show_bug.cgi?id=219715

Reviewed by Geoff Garen.

Source/WebCore:

Cut in half amount of IPC needed to do WebAudio. Previously, we would send 2
IPCs per rendering quantum:

  1. RemoteAudioDestinationProxy::RequestBuffer from GPUProcess to WebProcess
  2. The response to RemoteAudioDestinationProxy::RequestBuffer which contained the frame bounds for the RingBuffer.

This patch gets rid of IPC 2 by having the CARingBuffer class store its bounds
in its memory backing. As a result, when the CARingBuffer is using a shared
memory backing, the bounds get shared between processes, without any need for
IPC to sync them.

This is still too much IPC but this is a step in the right direction. We
can hopefully get rid of (or greatly reduce) IPC 1 in a follow-up patch.

  • platform/audio/cocoa/AudioSampleBufferList.cpp:

(WebCore::AudioSampleBufferList::copyFrom):

  • platform/audio/cocoa/AudioSampleDataSource.mm:

(WebCore::AudioSampleDataSource::pullAvalaibleSamplesAsChunks):

  • platform/audio/cocoa/CARingBuffer.cpp:

(WebCore::CARingBufferStorageVector::CARingBufferStorageVector):
(WebCore::CARingBuffer::CARingBuffer):
(WebCore::CARingBuffer::flush):
(WebCore::CARingBufferStorageVector::flush):
(WebCore::CARingBuffer::setCurrentFrameBounds):
(WebCore::CARingBufferStorageVector::setCurrentFrameBounds):
(WebCore::CARingBuffer::getCurrentFrameBounds):
(WebCore::CARingBuffer::getCurrentFrameBoundsWithoutUpdate):
(WebCore::CARingBufferStorageVector::getCurrentFrameBounds):
(WebCore::CARingBuffer::clipTimeBounds):
(WebCore::CARingBuffer::currentStartFrame const):
(WebCore::CARingBufferStorageVector::currentStartFrame const):
(WebCore::CARingBuffer::currentEndFrame const):
(WebCore::CARingBufferStorageVector::currentEndFrame const):
(WebCore::CARingBuffer::updateFrameBounds):
(WebCore::CARingBuffer::fetchIfHasEnoughData):
(WebCore::CARingBuffer::fetch):
(WebCore::CARingBuffer::fetchInternal):

  • platform/audio/cocoa/CARingBuffer.h:

(WebCore::CARingBufferStorage::updateFrameBounds):

Source/WebKit:

Cut in half amount of IPC needed to do WebAudio. Previously, we would send 2
IPCs per rendering quantum:

  1. RemoteAudioDestinationProxy::RequestBuffer from GPUProcess to WebProcess
  2. The response to RemoteAudioDestinationProxy::RequestBuffer which contained the frame bounds for the RingBuffer.

This patch gets rid of IPC 2 by having the CARingBuffer class store its bounds
in its memory backing. As a result, when the CARingBuffer is using a shared
memory backing, the bounds get shared between processes, without any need for
IPC to sync them.

This is still too much IPC but this is a step in the right direction. We
can hopefully get rid of (or greatly reduce) IPC 1 in a follow-up patch.

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

(WebKit::RemoteAudioDestination::audioSamplesStorageChanged):
(WebKit::RemoteAudioDestination::render):

  • GPUProcess/media/RemoteAudioSourceProviderProxy.cpp:

(WebKit::RemoteAudioSourceProviderProxy::storageChanged):

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp:

(WebKit::RemoteAudioMediaStreamTrackRenderer::audioSamplesStorageChanged):
(WebKit::RemoteAudioMediaStreamTrackRenderer::audioSamplesAvailable):

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.h:
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.messages.in:
  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::audioSamplesStorageChanged):
(WebKit::RemoteMediaRecorder::audioSamplesAvailable):

  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • Shared/Cocoa/SharedRingBufferStorage.cpp:

(WebKit::SharedRingBufferStorage::allocate):
(WebKit::SharedRingBufferStorage::sharedFrameBounds):
(WebKit::SharedRingBufferStorage::data):
(WebKit::SharedRingBufferStorage::getCurrentFrameBounds):
(WebKit::SharedRingBufferStorage::setCurrentFrameBounds):
(WebKit::SharedRingBufferStorage::updateFrameBounds):
(WebKit::SharedRingBufferStorage::flush):

  • Shared/Cocoa/SharedRingBufferStorage.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp:

(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::remoteAudioSamplesAvailable):

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h:
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp:

(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::remoteAudioSamplesAvailable):

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.h:
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.messages.in:
  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::requestBuffer):
(WebKit::RemoteAudioDestinationProxy::storageChanged):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.h:
  • WebProcess/GPU/media/RemoteAudioDestinationProxy.messages.in:
  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp:

(WebKit::RemoteAudioSourceProviderManager::RemoteAudio::setStorage):
(WebKit::RemoteAudioSourceProviderManager::RemoteAudio::audioSamplesAvailable):

  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.cpp:

(WebKit::AudioMediaStreamTrackRenderer::pushSamples):
(WebKit::AudioMediaStreamTrackRenderer::storageChanged):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::audioSamplesAvailable):
(WebKit::MediaRecorderPrivate::storageChanged):

  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:
  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::audioSamplesAvailable):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::audioSamplesAvailable):

  • WebProcess/cocoa/RemoteCaptureSampleManager.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.messages.in:

Tools:

Minor API test changes due to CARingBuffer API change. fetch() always returned Ok
so I dropped the return value.

  • TestWebKitAPI/Tests/WebCore/CARingBuffer.cpp:

(TestWebKitAPI::TEST_F):
(TestWebKitAPI::MixingTest::run):

4:45 PM Changeset in webkit [270662] by eric.carlson@apple.com
  • 9 edits
    1 copy
    1 add in trunk/Source/WebCore

[MSE] Refactor SourceBufferParserWebM in preparation for supporting audio
https://bugs.webkit.org/show_bug.cgi?id=219755
<rdar://problem/72192625>

Reviewed by Jer Noble.

Refactor the WebM parser in preparation for supporting audio: move VP9-specific code
into VP9UtilitiesCocoa, convert TrackData from a struct to a class and made derived
classes for audio and video, add stub function to create format descriptions for
Vorbis and Opus audio.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/cocoa/MediaUtilities.cpp:

(WebCore::createAudioFormatDescription): Add optional parameters for magic cookie.

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

(WebCore::SourceBufferParserWebM::isContentTypeSupported):
(WebCore::SourceBufferParserWebM::create):
(WebCore::SourceBufferParserWebM::resetParserState):
(WebCore::SourceBufferParserWebM::trackDataForTrackNumber):
(WebCore::SourceBufferParserWebM::OnTrackEntry):
(WebCore::SourceBufferParserWebM::OnFrame):
(WebCore::SourceBufferParserWebM::provideMediaData):
(WebCore::SourceBufferParserWebM::VideoTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::VideoTrackData::createSampleBuffer):
(WebCore::SourceBufferParserWebM::AudioTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::AudioTrackData::createSampleBuffer):
(WebCore::SourceBufferParserWebM::flushPendingAudioBuffers):
(WebCore::SourceBufferParserWebM::setMinimumAudioSampleDuration):
(WebCore::convertToColorPrimaries): Deleted.
(WebCore::convertToCMColorPrimaries): Deleted.
(WebCore::convertToTransferCharacteristics): Deleted.
(WebCore::convertToCMTransferFunction): Deleted.
(WebCore::convertToMatrixCoefficients): Deleted.
(WebCore::convertToCMYCbCRMatrix): Deleted.
(WebCore::convertSubsamplingXYToChromaSubsampling): Deleted.
(WebCore::createFormatDescriptionFromVP9HeaderParser): Deleted.

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

(isType):

  • platform/graphics/cocoa/VP9UtilitiesCocoa.h:
  • platform/graphics/cocoa/VP9UtilitiesCocoa.mm:

(WebCore::convertToColorPrimaries):
(WebCore::convertToCMColorPrimaries):
(WebCore::convertToTransferCharacteristics):
(WebCore::convertToCMTransferFunction):
(WebCore::convertToMatrixCoefficients):
(WebCore::convertToCMYCbCRMatrix):
(WebCore::convertSubsamplingXYToChromaSubsampling):
(WebCore::createFormatDescriptionFromVP9HeaderParser):

  • platform/graphics/cocoa/WebMAudioUtilitiesCocoa.h: Added.
  • platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm: Added.

(WebCore::registerDecoderFactory):
(WebCore::createAudioFormatDescriptionForFormat):
(WebCore::cookieFromOpusCodecPrivate):
(WebCore::isOpusDecoderAvailable):
(WebCore::createOpusAudioFormatDescription):
(WebCore::cookieFromVorbisCodecPrivate):
(WebCore::isVorbisDecoderAvailable):
(WebCore::createVorbisAudioFormatDescription):

4:17 PM Changeset in webkit [270661] by ggaren@apple.com
  • 5 edits in trunk

Unreviewed, re-landing r270132.

Regression test failures have been resolved.

Re-landed changeset:

"Use a Version 1 CFRunLoopSource for faster task dispatch"
https://bugs.webkit.org/show_bug.cgi?id=202874
https://trac.webkit.org/changeset/270132

3:26 PM Changeset in webkit [270660] by Alan Coon
  • 1 copy in tags/Safari-611.1.8

Tag Safari-611.1.8.

3:10 PM Changeset in webkit [270659] by Tadeu Zagallo
  • 16 edits
    2 copies
    1 move
    2 adds in trunk

Add a JSC API to allow acquiring the JSLock
https://bugs.webkit.org/show_bug.cgi?id=219663

Reviewed by Filip Pizlo.

PerformanceTests:

This patch does 3 things:

  • Change how the geomean is calculated in api-bench to avoid overflowing
  • Allow linking against the local build we're benchmarking
  • Adopt the new JSLock API in the UpcomingAPI subtests

Using the new API the score improves by ~13.5%. Here are the results for each
of the "UpcomingAPI" subtests plus the total score:

Before After

RichardsMostlyC: 77ms 23ms
RichardsMostlyObjC: 309ms 282ms
RichardsMostlySwift 305ms 280ms
RichardsSomeC: 101ms 95ms
RichardsSomeObjC: 160ms 157ms
RichardsSomeSwift: 201ms 202ms


Score: 29.5974 33.6404

  • APIBench/UpcomingAPI/RichardsMostlyC/RichardsMostlyC/richards.c:

(workfn):

  • APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC.xcodeproj/xcshareddata/xcschemes/RichardsMostlyObjC.xcscheme: Renamed from PerformanceTests/APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC.xcodeproj/xcshareddata/xcschemes/RichardsMostlySwift.xcscheme.
  • APIBench/UpcomingAPI/RichardsMostlyObjC/RichardsMostlyObjC/WorkerTask.m:

(+[WorkerTask context]):

  • APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift.xcodeproj/project.pbxproj:
  • APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/BridgingHeader.h: Copied from PerformanceTests/APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift.
  • APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift:
  • APIBench/UpcomingAPI/RichardsSomeC/RichardsSomeC/main.m:

(main):

  • APIBench/UpcomingAPI/RichardsSomeObjC/RichardsSomeObjC/main.m:

(main):

  • APIBench/UpcomingAPI/RichardsSomeSwift/RichardsSomeSwift.xcodeproj/project.pbxproj:
  • APIBench/UpcomingAPI/RichardsSomeSwift/RichardsSomeSwift/BridgingHeader.h: Copied from PerformanceTests/APIBench/UpcomingAPI/RichardsMostlySwift/RichardsMostlySwift/WorkerTask.swift.
  • APIBench/UpcomingAPI/RichardsSomeSwift/RichardsSomeSwift/main.swift:
  • APIBench/api-bench:

Source/JavaScriptCore:

Introduce two new functions to the C API: JSLock and JSUnlock. These
functions allow users to take control of the JSContext's lock, which
can greatly reduce the overhead of bridging between JS and native.

  • API/JSLockRef.cpp: Added.

(JSLock):
(JSUnlock):

  • API/JSLockRefPrivate.h: Added.
  • API/JSValueRef.cpp:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
2:56 PM Changeset in webkit [270658] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Deny mach-lookup to the service 'com.apple.SystemConfiguration.configd' in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=219680
<rdar://problem/69019138>

Reviewed by Brent Fulgham.

Deny mach-lookup to the service 'com.apple.SystemConfiguration.configd' in the WebContent process on macOS,
since there are no reports of this being used.

No new tests, since the result will depend on macOS version.

  • WebProcess/com.apple.WebProcess.sb.in:
2:31 PM Changeset in webkit [270657] by pvollan@apple.com
  • 7 edits in trunk/Source/WebKit

[macOS] Create sandbox extension for AppleAVDUserClient when Media in GPU process is not enabled
https://bugs.webkit.org/show_bug.cgi?id=219740
<rdar://problem/70496905>

Reviewed by Brent Fulgham.

Create sandbox extension for AppleAVDUserClient for WebContent process when Media in GPU process is not enabled on macOS,
since this IOKit class is only used for Media purposes.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::mediaRelatedIOKitClasses):
(WebKit::WebPageProxy::creationParameters):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):

  • WebProcess/com.apple.WebProcess.sb.in:
2:29 PM Changeset in webkit [270656] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Add telemetry for notification message filtering in sandbox
https://bugs.webkit.org/show_bug.cgi?id=219684
<rdar://problem/69819260>

Reviewed by Brent Fulgham.

Add telemetry for notification message filtering in sandbox in the WebContent process on macOS.

No new tests, since this just adds telemetry.

  • WebProcess/com.apple.WebProcess.sb.in:
2:13 PM Changeset in webkit [270655] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Add missing endpoint in sandbox message filter
https://bugs.webkit.org/show_bug.cgi?id=219731
<rdar://problem/71566760>

Reviewed by Brent Fulgham.

Add missing endpoint in the WebContent process' sandbox message filter on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2:01 PM Changeset in webkit [270654] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] The development WebContent XPC service is missing a required entitlement
https://bugs.webkit.org/show_bug.cgi?id=219730
<rdar://problem/72145560>

Reviewed by Brent Fulgham.

The message filtering entitlement is missing in com.apple.WebKit.WebContent.Development.xpc on macOS.

  • Scripts/process-entitlements.sh:
2:01 PM Changeset in webkit [270653] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

[GPU Process] Crash when loading drinktrade.com
https://bugs.webkit.org/show_bug.cgi?id=219752

Reviewed by Tim Horton.

Fix an overrelease when rendering color emoji fonts by removing an extraneous adoptCF around a CGImageRef.
This CGImageRef is not a retained (+1) object, so we need to make sure that it is retained when tracking it in
the display list's native image cache.

Layout test: fast/text/emoji.html

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorderCoreText.cpp:

(WebCore::DisplayList::DrawGlyphsRecorder::recordDrawImage):

1:28 PM Changeset in webkit [270652] by don.olmstead@sony.com
  • 14 edits in trunk

[CMake] Determine when to use $<TARGET_OBJECTS> for executables
https://bugs.webkit.org/show_bug.cgi?id=219648

Reviewed by Michael Catanzaro.

.:

When a WebKit framework is declared as an OBJECT library the WebKit::${framework} ALIAS
does not propagate the objects to the executable being built. As a workaround ports will
explicitly add $<TARGET_OBJECTS> to the list of libraries being linked. There is already
enough information to determine when $<TARGET_OBJECTS> is needed so this decision is moved
into the WEBKIT_EXECUTABLE macros.

An additional ${taget_name}_FRAMEWORKS variable is added which specifies the WebKit
frameworks being used. This will link the WebKit::${framework} alias and if necessary the
associated $<TARGET_OBJECTS>.

This functionality will be expanded upon when support for ${target_name}_FRAMEWORKS is
added to WebKit frameworks to support hidden visibility across ports.

  • Source/cmake/WebKitMacros.cmake:

Source/JavaScriptCore:

Use ${taget_name}_FRAMEWORKS to specify WebKit frameworks when linking executables.

  • CMakeLists.txt:
  • shell/CMakeLists.txt:

Source/WebDriver:

Use ${taget_name}_FRAMEWORKS to specify WebKit frameworks when linking executables.
Remove use of $<TARGET_OBJECTS>.

  • CMakeLists.txt:
  • PlatformPlayStation.cmake:
  • PlatformWin.cmake:

Tools:

Use ${taget_name}_FRAMEWORKS to specify WebKit frameworks when linking executables.
Remove use of $<TARGET_OBJECTS>.

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/PlatformPlayStation.cmake:
  • TestWebKitAPI/PlatformWin.cmake:
  • WebKitTestRunner/CMakeLists.txt:
1:16 PM Changeset in webkit [270651] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKitLegacy/mac

macOS Production WebKitLegacy build is broken on Xcode 10
https://bugs.webkit.org/show_bug.cgi?id=219753

Patch by Adam Roben <Adam Roben> on 2020-12-10
Reviewed by Tim Horton.

  • Configurations/WebKitLegacy.xcconfig: Replaced :default= syntax that

is only supported in Xcode 11.4 and newer with the equivalent
WK_DEFAULT_PLATFORM_NAME variable.

1:00 PM Changeset in webkit [270650] by Russell Epstein
  • 1 copy in tags/Safari-611.1.7.10

Tag Safari-611.1.7.10.

12:56 PM Changeset in webkit [270649] by Russell Epstein
  • 2 edits in branches/safari-611.1.7-branch/Source/WebKit

Cherry-pick r270536. rdar://problem/72192895

Add target to create /usr/local to work around XBS Bug <rdar://problem/20388650>
https://bugs.webkit.org/show_bug.cgi?id=219618
rdar://72064576

Patch by Ryan Hostetler <rhost@apple.com> on 2020-12-08
Reviewed by Jonathan Bedard.

  • WebKit.xcodeproj/project.pbxproj: Add a build target EmptyDSTROOT with script to create an empty folder "/usr/local". This allows WebKit to retain a unified XBS project name across different train configurations.

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

12:54 PM Changeset in webkit [270648] by Russell Epstein
  • 8 edits in branches/safari-611.1.7-branch/Source

Versioning.

WebKit-7611.1.7.10

12:53 PM Changeset in webkit [270647] by Andres Gonzalez
  • 8 edits in trunk/Source

Rework of AXObjectCache::isIsolatedTreeEnabled.
https://bugs.webkit.org/show_bug.cgi?id=219722

Reviewed by Chris Fleizach.

Source/WebCore:

Covered by existing tests.

  • AXObjectCache::isIsolatedTreeEnabled now returns true if it is called

off the main thread, no matter the rest of the conditions. This is
necessary since any call off of the main thread must be handled by the
isolated tree.

  • It caches a true value to optimize the case where a client that

supports isolated tree mode makes a request. All subsequent request by
any client will be served by the isolated tree.

  • Moved the check for the WebKit test client to clientSupportsIsolatedTree

where it belongs.

  • Renamed canUseSecondaryAXThread to UsedOnAXThread, which is a more

accurate name.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::clientSupportsIsolatedTree):
(WebCore::AXObjectCache::isIsolatedTreeEnabled):
(WebCore::AXObjectCache::isolatedTreeRootObject):
(WebCore::AXObjectCache::usedOnAXThread):
(WebCore::AXObjectCache::canUseSecondaryAXThread): Renamed usedOnAXThread.

  • accessibility/AXObjectCache.h:
  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::AXIsolatedTree):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):

Source/WebKit:

  • Renamed AXObjecCache::canUseSecondaryAXThread as usedOnAXThread.
  • No need for the additional thread check since isIsolatedTreeEnabled

will return true for any call off of the main thread.

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKAccessibilityCanUseSecondaryAXThread):

  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:

(-[WKAccessibilityWebPageObject accessibilityHitTest:]):

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

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

Reviewed by Youenn Fablet.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::~WebProcessProxy): Remove SpeechRecognitionRemoteRealtimeMediaSourceManager from
MessageReceiverMap before destroying it.

12:20 PM Changeset in webkit [270645] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

DisplayList::Recorder::drawImageBuffer should flush the given image buffer before recording
https://bugs.webkit.org/show_bug.cgi?id=219748

Reviewed by Darin Adler.

Make sure that the source image buffer has been flushed, so that the platform context in the GPU process is
flushed along with any outstanding display list items. This codepath is exercised when painting GPU-process-
backed canvases into other GPU-process-backed canvases.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::drawImageBuffer):

12:17 PM Changeset in webkit [270644] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Cleanup TextUtil::width/split functions
https://bugs.webkit.org/show_bug.cgi?id=219697

Reviewed by Antti Koivisto.

General cleanup and tightening.

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::createAndAppendTextItems):

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::createEmptyItem):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::split):

  • layout/inlineformatting/text/TextUtil.h:
12:10 PM Changeset in webkit [270643] by timothy@apple.com
  • 3 edits in trunk/Source/WebKit

Add willInjectUserScriptForFrame to WKWebProcessPlugInLoadDelegate.
https://bugs.webkit.org/show_bug.cgi?id=219727
rdar://71987073

Reviewed by Brady Eidson.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(willInjectUserScriptForFrame): Added.
(setUpPageLoaderClient): Set client.willInjectUserScriptForFrame.

11:54 AM Changeset in webkit [270642] by don.olmstead@sony.com
  • 2 edits in trunk/Source/JavaScriptCore

[CMake] Use WEBKIT_EXECUTABLE macro for LLInt executables
https://bugs.webkit.org/show_bug.cgi?id=219746

Reviewed by Michael Catanzaro.

The LLInt executables were the only ones within Source that were being created
without the WEBKIT_EXECUTABLE macros.

  • CMakeLists.txt:
11:48 AM Changeset in webkit [270641] by youenn@apple.com
  • 10 edits
    2 moves in trunk

Add a SFrame VP8 experimental compatibility mode
https://bugs.webkit.org/show_bug.cgi?id=219674

Reviewed by Eric Carlson.

Source/WebCore:

Similarly to H264, prefix the SFrame content with some data to ensure key frames or resolution can be detected
without revealing the actual content.

Covered by updated test.

  • Modules/mediastream/RTCRtpSFrameTransform.idl:
  • Modules/mediastream/RTCRtpSFrameTransformer.cpp:

(WebCore::RTCRtpSFrameTransformer::decryptFrame):
(WebCore::RTCRtpSFrameTransformer::encryptFrame):

  • Modules/mediastream/RTCRtpSFrameTransformer.h:
  • Modules/mediastream/SFrameUtils.cpp: Renamed from Source/WebCore/Modules/mediastream/H264Utils.cpp.

(WebCore::computeH264PrefixOffset):
(WebCore::computeH264PrefixBuffer):
(WebCore::isVP8KeyFrame):
(WebCore::computeVP8PrefixOffset):
(WebCore::computeVP8PrefixBuffer):

  • Modules/mediastream/SFrameUtils.h: Renamed from Source/WebCore/Modules/mediastream/H264Utils.h.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

LayoutTests:

  • webrtc/video-sframe-expected.txt:
  • webrtc/video-sframe.html:
11:38 AM Changeset in webkit [270640] by don.olmstead@sony.com
  • 7 edits in trunk/Source

[GTK] Add even more exports to support hidden visibility
https://bugs.webkit.org/show_bug.cgi?id=219747

Reviewed by Michael Catanzaro.

Source/WebCore:

Add WEBCORE_EXPORT to additional declarations.

  • platform/graphics/SourceBufferPrivate.h:
  • platform/graphics/gstreamer/GRefPtrGStreamer.h:

Source/WebKit:

Add WK_EXPORT to additional declarations.

  • UIProcess/API/glib/WebKitSettingsPrivate.h:
  • UIProcess/API/glib/WebKitWebViewInternal.h:
  • UIProcess/API/gtk/WebKitWebViewBaseInternal.h:
11:31 AM Changeset in webkit [270639] by Peng Liu
  • 19 edits
    1 copy in trunk/Source

[Media in GPU Process][MSE] Implement seeking support
https://bugs.webkit.org/show_bug.cgi?id=219658

Reviewed by Jer Noble.

Source/WebCore:

Covered by existing tests.

  • platform/graphics/SourceBufferPrivate.h:

Change function seekToTime() to virtual because SourceBufferPrivateRemote
needs to override it.

Source/WebKit:

Implement the required functions with IPC to support seeking.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/media/RemoteMediaSourceProxy.cpp:

(WebKit::RemoteMediaSourceProxy::seekToTime):
(WebKit::RemoteMediaSourceProxy::waitForSeekCompleted):
(WebKit::RemoteMediaSourceProxy::seekCompleted):

  • GPUProcess/media/RemoteMediaSourceProxy.h:
  • GPUProcess/media/RemoteMediaSourceProxy.messages.in:
  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::seekToTime):

  • GPUProcess/media/RemoteSourceBufferProxy.h:
  • GPUProcess/media/RemoteSourceBufferProxy.messages.in:
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:

(WebKit::MediaSourcePrivateRemote::MediaSourcePrivateRemote):
(WebKit::MediaSourcePrivateRemote::~MediaSourcePrivateRemote):
(WebKit::MediaSourcePrivateRemote::waitForSeekCompleted):
(WebKit::MediaSourcePrivateRemote::seekCompleted):
(WebKit::MediaSourcePrivateRemote::seekToTime):

  • WebProcess/GPU/media/MediaSourcePrivateRemote.h:
  • WebProcess/GPU/media/MediaSourcePrivateRemote.messages.in: Added.
  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::seekToTime):

  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:
11:27 AM Changeset in webkit [270638] by commit-queue@webkit.org
  • 73 edits
    4 copies
    1 move
    4 adds
    1 delete in trunk

Source/WebKit:
Introduce new download API
https://bugs.webkit.org/show_bug.cgi?id=217747

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-10
Reviewed by Brady Eidson.

Safari currently uses _WKDownload, which has evolved strangely over the last decade.
In order to make a nicer interface, we need to learn from those lessons and take a step back.
I did that, and here's what I came up with: WKDownload and WKDownloadDelegate!

Notable changes include:

  1. The delegate now lives on the download object instead of the process pool.
  2. WKDownload does not conform to NSCopying because we have NSMapTable instead of NSDictionary.
  3. publishProgressAtURL is gone. That will be reimplemented in the UI process of the client that used it.
  4. cancel has a completion handler to get the resume data instead of waiting for didCancel then getting it from the download object.
  5. didFailWithError also gives you the resume data, so there is no way to get it from the download object. That's more about a fail/cancel

event than a property of the download.

  1. wasUserInitiated is gone. Instead, WKNavigationDelegate has a callback that links a navigation action (where _isUserInitiated is exposed) to the download.
  2. redirectChain is also gone. That can also be gotten from the link to the navigation and the download delegate's redirect callback.
  3. _downloadDidStart is gone. Instead, we have completion handlers that expose a WKDownload once it's started. There's no need to

reference the download object before then anyways. Note: that's when the download "starts" which is before it receives the response,
so there will be no server delay in the difference between download object availabilities.

  1. didReceiveServerRedirectToURL now gives you the option of continuing or cancelling. This reflects the amount of control the

WKNavigationDelegate has.

  1. decideDestinationWithSuggestedFilename and didReceiveResponse have been merged, since they actually happen at the same time and

NSURLResponse has suggestedFilename API. allowOverwrite is also gone. It wasn't used, and not really needed.

  1. didCreateDestination is gone. That callback time wasn't really necessary. If you need to know when it's created, wait until the first

didWriteData callback. The destination has definitely been created by then.

  1. shouldDecodeSourceDataOfMIMEType is gone. It's actually not called since we adopted NSURLSession, and we should remove the related dead code.
  2. originatingFrame is gone. On _WKDownload it was actually a non-null WKFrameInfo that often contained no information. When information was there,

the information access has been replaced by didBecomeDownload which links the WKNavigationResponse which has frame info on it.

I wrote API tests for everything I could think of.

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::resumeDownload):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:

(WebKit::Download::resume):
(WebKit::Download::platformCancelNetworkLoad):

  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::suggestedFilename const):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::resumeDownload):
(WebKit::NetworkProcess::findPendingDownloadLocation):

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

(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):

  • Scripts/webkit/messages.py:
  • Shared/API/Cocoa/WebKit.h:
  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):

  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/API/APIDownloadClient.h:

(API::DownloadClient::legacyDidStart):
(API::DownloadClient::didFail):
(API::DownloadClient::didStart): Deleted.

  • UIProcess/API/APINavigationAction.h:
  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::navigationResponseDidBecomeDownload):
(API::NavigationClient::navigationActionDidBecomeDownload):
(API::NavigationClient::contextMenuDidCreateDownload):

  • UIProcess/API/APIPolicyClient.h:

(API::PolicyClient::decidePolicyForNavigationAction):
(API::PolicyClient::decidePolicyForNewWindowAction):

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetDownloadClient): Deleted.

  • UIProcess/API/C/WKContext.h:
  • UIProcess/API/C/WKContextDownloadClient.h: Removed.
  • UIProcess/API/C/WKDownload.cpp: Removed.
  • UIProcess/API/C/WKDownloadClient.h: Added.
  • UIProcess/API/C/WKDownloadRef.cpp: Added.

(WKDownloadGetTypeID):
(WKDownloadCopyRequest):
(WKDownloadCancel):
(WKDownloadGetOriginatingPage):
(WKDownloadGetWasUserInitiated):
(WKDownloadSetClient):

  • UIProcess/API/C/WKDownloadRef.h: Renamed from Source/WebKit/UIProcess/API/C/WKDownload.h.
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPagePolicyClient):
(WKPageSetPageNavigationClient):

  • UIProcess/API/C/WKPageNavigationClient.h:
  • UIProcess/API/Cocoa/WKDownload.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKDownload.h.
  • UIProcess/API/Cocoa/WKDownload.mm: Added.

(-[WKDownload cancel:]):
(-[WKDownload originalRequest]):
(-[WKDownload delegate]):
(-[WKDownload setDelegate:]):
(-[WKDownload dealloc]):
(-[WKDownload _apiObject]):

  • UIProcess/API/Cocoa/WKDownloadDelegate.h: Added.
  • UIProcess/API/Cocoa/WKDownloadInternal.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKDownloadInternal.h.
  • UIProcess/API/Cocoa/WKNavigationAction.h:
  • UIProcess/API/Cocoa/WKNavigationAction.mm:

(-[WKNavigationAction downloadAttribute]):
(-[WKNavigationAction _shouldPerformDownload]):

  • UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
  • UIProcess/API/Cocoa/WKNavigationDelegate.h:
  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _downloadURLRequest:websiteDataStore:originatingWebView:]):
(-[WKProcessPool _resumeDownloadFromData:websiteDataStore:path:originatingWebView:]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView downloadRequest:completionHandler:]):
(-[WKWebView resumeDownloadWithData:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKDownload.h:
  • UIProcess/API/Cocoa/_WKDownload.mm:

(-[_WKDownload initWithDownload2:]):
(+[_WKDownload downloadWithDownload:]):
(-[_WKDownload cancel]):
(-[_WKDownload publishProgressAtURL:]):
(-[_WKDownload request]):
(-[_WKDownload originatingWebView]):
(-[_WKDownload redirectChain]):
(-[_WKDownload wasUserInitiated]):
(-[_WKDownload resumeData]):
(-[_WKDownload originatingFrame]):
(-[_WKDownload _apiObject]):
(-[_WKDownload dealloc]): Deleted.

  • UIProcess/API/Cocoa/_WKDownloadDelegate.h:
  • UIProcess/API/Cocoa/_WKDownloadInternal.h:
  • UIProcess/API/glib/WebKitDownloadClient.cpp:
  • UIProcess/Cocoa/LegacyDownloadClient.h:
  • UIProcess/Cocoa/LegacyDownloadClient.mm:

(WebKit::LegacyDownloadClient::legacyDidStart):
(WebKit::LegacyDownloadClient::didReceiveResponse):
(WebKit::LegacyDownloadClient::didReceiveData):
(WebKit::LegacyDownloadClient::didReceiveAuthenticationChallenge):
(WebKit::LegacyDownloadClient::didCreateDestination):
(WebKit::LegacyDownloadClient::processDidCrash):
(WebKit::LegacyDownloadClient::decideDestinationWithSuggestedFilename):
(WebKit::LegacyDownloadClient::didFinish):
(WebKit::LegacyDownloadClient::didFail):
(WebKit::LegacyDownloadClient::legacyDidCancel):
(WebKit::LegacyDownloadClient::willSendRequest):
(WebKit::LegacyDownloadClient::didStart): Deleted.

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

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
(WebKit::NavigationState::NavigationClient::navigationActionDidBecomeDownload):
(WebKit::NavigationState::NavigationClient::navigationResponseDidBecomeDownload):
(WebKit::NavigationState::NavigationClient::contextMenuDidCreateDownload):

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::~DownloadProxy):
(WebKit::DownloadProxy::didStart):
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):
(WebKit::DownloadProxy::didFail):
(WebKit::DownloadProxy::setClient):

  • UIProcess/Downloads/DownloadProxy.h:

(WebKit::DownloadProxy::setDidStartCallback):
(WebKit::DownloadProxy::setSuggestedFilename):

  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedNavigationPolicyDecision):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponseShared):
(WebKit::WebPageProxy::resumeDownload):
(WebKit::WebPageProxy::downloadRequest):
(WebKit::WebPageProxy::contextMenuItemSelected):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::receivedPolicyDecision):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::resumeDownload):

  • UIProcess/WebProcessPool.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:
Introduce new download SPI
https://bugs.webkit.org/show_bug.cgi?id=217747

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-10
Reviewed by Brady Eidson.

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/DownloadDecideDestinationCrash.cpp:

(TestWebKitAPI::decidePolicyForNavigationResponse):
(TestWebKitAPI::decideDestinationWithSuggestedFilename):
(TestWebKitAPI::navigationResponseDidBecomeDownload):
(TestWebKitAPI::setPagePolicyClient):
(TestWebKitAPI::TEST):
(TestWebKitAPI::decidePolicyForNavigationAction): Deleted.
(TestWebKitAPI::setContextDownloadClient): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/ContextMenuDownload.mm:

(TestWebKitAPI::decideDestinationWithSuggestedFilename):
(TestWebKitAPI::contextMenuDidCreateDownload):
(TestWebKitAPI::TEST):
(TestWebKitAPI::decideDestinationWithSuggestedFilenameContainingSlashes):
(TestWebKitAPI::contextMenuDidCreateDownloadWithSuggestedFilenameContainingSlashes):

  • TestWebKitAPI/Tests/WebKitCocoa/ContentFiltering.mm:

(-[BecomeDownloadDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(-[ConvertResponseToDownloadNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[TestDownloadNavigationResponseFromMemoryCacheDelegate webView:didFailProvisionalNavigation:withError:]):
(-[TestDownloadNavigationResponseFromMemoryCacheDelegate webView:didFinishNavigation:]):
(TEST):
(downloadTestServer):
(checkResumedDownloadContents):
(simpleDownloadTestServer):
(checkFileContents):
(tempFileThatDoesNotExist):
(-[DownloadTestSchemeDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(TestWebKitAPI::mutateFile):

  • TestWebKitAPI/Tests/WebKitCocoa/DownloadProgress.mm:

(-[DownloadProgressTestRunner webView:decidePolicyForNavigationResponse:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

(-[PSONNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/QuickLook.mm:

(TEST):

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

(-[TestDownloadDelegate download:willPerformHTTPRedirection:newRequest:decisionHandler:]):
(-[TestDownloadDelegate download:decideDestinationWithResponse:suggestedFilename:completionHandler:]):
(-[TestDownloadDelegate download:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]):
(-[TestDownloadDelegate download:didReceiveAuthenticationChallenge:completionHandler:]):
(-[TestDownloadDelegate downloadDidFinish:]):
(-[TestDownloadDelegate download:didFailWithError:resumeData:]):
(-[TestDownloadDelegate webView:navigationResponse:didBecomeDownload:]):
(-[TestDownloadDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[TestDownloadDelegate waitForDownloadDidFinish]):
(-[TestDownloadDelegate takeCallbackRecord]):
(-[TestDownloadDelegate _downloadDidStart:]): Deleted.
(-[TestDownloadDelegate _download:didReceiveServerRedirectToURL:]): Deleted.
(-[TestDownloadDelegate _download:didReceiveResponse:]): Deleted.
(-[TestDownloadDelegate _download:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]): Deleted.
(-[TestDownloadDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]): Deleted.
(-[TestDownloadDelegate _downloadDidFinish:]): Deleted.
(-[TestDownloadDelegate _download:didFailWithError:]): Deleted.
(-[TestDownloadDelegate _downloadDidCancel:]): Deleted.
(-[TestDownloadDelegate _download:didReceiveAuthenticationChallenge:completionHandler:]): Deleted.
(-[TestDownloadDelegate _download:didCreateDestination:]): Deleted.

  • TestWebKitAPI/cocoa/TestLegacyDownloadDelegate.h: Copied from Tools/TestWebKitAPI/cocoa/TestDownloadDelegate.h.
  • TestWebKitAPI/cocoa/TestLegacyDownloadDelegate.mm: Copied from Tools/TestWebKitAPI/cocoa/TestDownloadDelegate.mm.

(-[TestLegacyDownloadDelegate _downloadDidStart:]):
(-[TestLegacyDownloadDelegate _download:didReceiveServerRedirectToURL:]):
(-[TestLegacyDownloadDelegate _download:didReceiveResponse:]):
(-[TestLegacyDownloadDelegate _download:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]):
(-[TestLegacyDownloadDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]):
(-[TestLegacyDownloadDelegate _downloadDidFinish:]):
(-[TestLegacyDownloadDelegate _download:didFailWithError:]):
(-[TestLegacyDownloadDelegate _downloadDidCancel:]):
(-[TestLegacyDownloadDelegate _download:didReceiveAuthenticationChallenge:completionHandler:]):
(-[TestLegacyDownloadDelegate _download:didCreateDestination:]):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::navigationDidBecomeDownloadShared):
(WTR::TestController::navigationActionDidBecomeDownload):
(WTR::TestController::navigationResponseDidBecomeDownload):
(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::decideDestinationWithSuggestedFilename):
(WTR::TestController::downloadDidFinish):
(WTR::TestController::downloadDidFail):
(WTR::TestController::downloadDidReceiveServerRedirectToURL):
(WTR::TestController::downloadDidStart):
(WTR::TestController::decidePolicyForNavigationAction):
(WTR::TestController::downloadDidCancel): Deleted.

  • WebKitTestRunner/TestController.h:

LayoutTests:
Introduce new download API
https://bugs.webkit.org/show_bug.cgi?id=217747

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-10
Reviewed by Brady Eidson.

  • fast/dom/HTMLAnchorElement/anchor-download-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-download-user-triggered-synthetic-click-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-async-delegate-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-nodownload-set-expected.txt:

Now that NetworkDataTaskBlob::suggestedFilename doesn't suggest "unknown"
the capitalization has changed to "Unknown" from NSURLResponse's suggestedFilename.

11:09 AM Changeset in webkit [270637] by Patrick Angle
  • 23 edits
    8 adds in trunk

Web Inspector: Show current properties for font in new Elements sidebar Font panel
https://bugs.webkit.org/show_bug.cgi?id=218964

Reviewed by Devin Rousso.

Source/JavaScriptCore:

Adds objects and method for getting font data for a node to the CSS domain. A CSS.Font is meant to represent
a WebCore::Font and contain information about the underlying font as the system sees it. The source for this
information can be a system font or a web font. Each CSS.Font in turn can have some number of
CSS.FontVariationAxis for its available open-type variation axes. Fonts that don't support these features will
have an empty set of axes.

  • inspector/protocol/CSS.json:
  • Added objects and method for getting font data for a node.

Source/WebCore:

Test: inspector/css/getComputedPrimaryFontForNode.html

Adds support for retrieving the primary font computed for a node including the available variation axes of the
underlying Font.

  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::buildObjectForFont):
(WebCore::InspectorCSSAgent::getFontDataForNode):
(WebCore::InspectorCSSAgent::nodeForId):

  • inspector/agents/InspectorCSSAgent.h:
  • Added method for retrieving font data for a node.
  • platform/graphics/FontPlatformData.cpp:

(WebCore::FontPlatformData::variationAxes const):

  • Empty implementation for non-Cocoa platforms.
  • platform/graphics/FontPlatformData.h:

(WebCore::FontPlatformData::FontVariationAxis::FontVariationAxis):
(WebCore::FontPlatformData::FontVariationAxis::name const):
(WebCore::FontPlatformData::FontVariationAxis::tag const):
(WebCore::FontPlatformData::FontVariationAxis::defaultValue const):
(WebCore::FontPlatformData::FontVariationAxis::minimumValue const):
(WebCore::FontPlatformData::FontVariationAxis::maximumValue const):

  • Added struct type for font variation axis information.
  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::defaultVariationValues):

  • platform/graphics/cocoa/FontCacheCoreText.h:
  • Support getting the name of variation axes.
  • platform/graphics/cocoa/FontPlatformDataCocoa.mm:

(WebCore::FontPlatformData::variationAxes const):

  • Retrieve font variation axes from the underlying font.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Setting.js:
  • Added experimental setting for Font panel.
  • UserInterface/Main.html:
  • UserInterface/Models/DOMNodeStyles.js:

(WI.DOMNodeStyles):
(WI.DOMNodeStyles.prototype.get computedPrimaryFont):
(WI.DOMNodeStyles.prototype.refresh.fetchedComputedStyle):
(WI.DOMNodeStyles.prototype.refresh.fetchedFontData):
(WI.DOMNodeStyles.prototype.refresh):

  • Support getting the computed primary font.
  • UserInterface/Models/Font.js: Added.

(WI.Font):
(WI.Font.fromPayload):
(WI.Font.prototype.get name):
(WI.Font.prototype.get variationAxes):
(WI.Font.prototype.variationAxis):

  • Model object for CSS.Font.

(WI.Font.prototype.calculateFontProperties):

  • Build maps of font properties from the DOMNodeStyle and this Font.

(WI.Font.prototype._calculateProperties):
(WI.Font.prototype._calculateFontFeatureAxes):
(WI.Font.prototype._calculateFontVariationAxes):
(WI.Font.prototype._parseFontFeatureOrVariationSettings):

  • UserInterface/Models/FontVariationAxis.js: Added.

(WI.FontVariationAxis):
(WI.FontVariationAxis.fromPayload):
(WI.FontVariationAxis.prototype.get name):
(WI.FontVariationAxis.prototype.get tag):
(WI.FontVariationAxis.prototype.get minimumValue):
(WI.FontVariationAxis.prototype.get maximumValue):
(WI.FontVariationAxis.prototype.get defaultValue):

  • Model object for CSS.FontVariationAxis.
  • UserInterface/Test.html:
  • UserInterface/Views/ComputedStyleDetailsPanel.css:

(.sidebar > .panel.details.css-style > .content > .computed .property:not(:hover) .go-to-arrow):
(.multi-sidebar.showing-multiple > .sidebar > .panel.details.style-computed > .content > .pseudo-classes,): Deleted.

  • Move multi-sidebar support to GeneralStyleDetailsSidebarPanel.css
  • UserInterface/Views/ElementsTabContentView.js:

(WI.ElementsTabContentView):

  • Add Font panel to detail panel set if enabled and supported.
  • UserInterface/Views/FontDetailsPanel.js: Added.

(WI.FontDetailsPanel):
(WI.FontDetailsPanel.prototype.get supportsToggleCSSClass):
(WI.FontDetailsPanel.prototype.refresh):
(WI.FontDetailsPanel.prototype.initialLayout):
(WI.FontDetailsPanel.prototype._formatSizeValue):
(WI.FontDetailsPanel.prototype._formatStyleValue):
(WI.FontDetailsPanel.prototype._formatSimpleSingleValue):

  • Format basic font properties.

(WI.FontDetailsPanel.prototype._formatVariationValue):

  • Format non-standard variation axes.

(WI.FontDetailsPanel.prototype._formatSimpleFeatureValues):

  • Common formatting for font-variant-xxx properties that map to font feature values.

(WI.FontDetailsPanel.prototype._formatLigatureValue):
(WI.FontDetailsPanel.prototype._formatPositionValue):
(WI.FontDetailsPanel.prototype._formatCapitalsValue):
(WI.FontDetailsPanel.prototype._formatNumericValue):
(WI.FontDetailsPanel.prototype._formatAlternatesValue):
(WI.FontDetailsPanel.prototype._formatEastAsianValue):
(WI.FontDetailsPanel.prototype._featureIsEnabled):
(WI.FontDetailsPanel.prototype._hasVariationValue):

  • UserInterface/Views/FontDetailsSidebarPanel.js: Added.

(WI.FontDetailsSidebarPanel):

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:

(.sidebar > .panel.details.css-style > .content:not(.supports-new-rule) ~ .options-container > .new-rule,):
(.multi-sidebar.showing-multiple > .sidebar > .panel.details:not(.style-rules) > .content > .pseudo-classes,):

  • When showing the Styles panel alongside another style-based panel, hide the pseudo-class and filter options.
  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:

(WI.GeneralStyleDetailsSidebarPanel.prototype.styleDetailsPanelFocusFilterBar):
(WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
(WI.GeneralStyleDetailsSidebarPanel.prototype._showPanel):
(WI.GeneralStyleDetailsSidebarPanel.prototype._handleNodeChanged):
(WI.GeneralStyleDetailsSidebarPanel.prototype._filterDidChange):

  • Support not showing the filter bar for style panels where filtering is not applicable.
  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

  • UserInterface/Views/StyleDetailsPanel.js:

(WI.StyleDetailsPanel.prototype.get supportsToggleCSSClass):
(WI.StyleDetailsPanel.prototype.filterDidChange): Deleted.

  • Remove empty implementation of filterDidChange as WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout

checks for an implmentation of this function to determine if a filter bar should be shown.

LayoutTests:

  • inspector/css/getComputedPrimaryFontForNode-expected.txt: Added.
  • inspector/css/getComputedPrimaryFontForNode.html: Added.
  • inspector/model/font-calculate-properties-expected.txt: Added.
  • inspector/model/font-calculate-properties.html: Added.
10:58 AM Changeset in webkit [270636] by dino@apple.com
  • 7 edits in trunk/Source

Add runtime flag for ANGLE on Metal
https://bugs.webkit.org/show_bug.cgi?id=219661
Source/WebCore:

<rdar://problem/69061894>

Reviewed by Sam Weinig.

Add a new RuntimeEnabledFeature for "WebGL on Metal". Check that
value when creating the GraphicsContextGL inside WebGL and
then pass a new attribute into EGL_GetPlatformDisplay.
The value used isn't yet in the tree, but this allows for local testing.

No change of behaviour at the moment.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setWebGLUsingMetal):
(WebCore::RuntimeEnabledFeatures::webGLUsingMetal const):

  • platform/graphics/GraphicsContextGLAttributes.h: New useMetal attribute.
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::InitializeEGLDisplay):
(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):

Source/WTF:

Reviewed by Sam Weinig.

New internal feature flag "WebGL on Metal".

  • Scripts/Preferences/WebPreferencesInternal.yaml:
10:53 AM Changeset in webkit [270635] by Ryan Haddad
  • 1 edit
    2 adds in trunk/LayoutTests

[Win] fast/url/data-url-mediatype.html is failing
https://bugs.webkit.org/show_bug.cgi?id=219720

Unreviewed test gardening.

  • platform/win/fast/url/data-url-mediatype-expected.txt: Added.
10:08 AM Changeset in webkit [270634] by don.olmstead@sony.com
  • 5 edits in trunk/Source

[CMake] Use TARGET_PROPERTY to set includes for executables
https://bugs.webkit.org/show_bug.cgi?id=219743

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Use $<TARGET_PROPERTY:JavaScriptCore,INCLUDE_DIRECTORIES> for all executables being
built alongside JavaScriptCore. This simplifies the includes for those targets.

Additionally relocate the setting of include directories for LLInt executables
so they're next to the rest of their definitions.

  • CMakeLists.txt:
  • shell/CMakeLists.txt:

Source/WebKit:

Use $<TARGET_PROPERTY:WebKit,INCLUDE_DIRECTORIES> for all executables being
built alongside WebKit. This simplifies the includes for those targets.

  • CMakeLists.txt:
10:07 AM Changeset in webkit [270633] by Lauro Moura
  • 2 edits in trunk/Tools

[Flapak SDK] Add envvar to enable verbose mode
https://bugs.webkit.org/show_bug.cgi?id=219744

Reviewed by Adrian Perez de Castro.

While webkit-flatpak has the --verbose option, some scripts like
run-minibrowser, run-gtk-tests etc might not expose it to the user.

This change checks for WEBKIT_SDK_VERBOSE in order to be able to
control it regardless of command line options.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.load_from_args):

10:06 AM Changeset in webkit [270632] by Chris Dumez
  • 9 edits in trunk/Source

Unreviewed, reverting r270542.

Seems to have regressed perf benchmarks

Reverted changeset:

"[iOS] Stop leaking an XPC boost message to XPC services"
https://bugs.webkit.org/show_bug.cgi?id=219453
https://trac.webkit.org/changeset/270542

10:05 AM Changeset in webkit [270631] by ddkilzer@apple.com
  • 4 edits in trunk/Tools

prepare-ChangeLog won't parse rdar://nnnnnnnn URLs in fetchRadarURLFromBugXMLData()
<https://webkit.org/b/219645>
<rdar://problem/72182806>

Reviewed by Darin Adler.

Relax the format for rdar:// URLs not to require angle brackets
(<>) or the "problem/" pseudo-path.

Include drive-by fixes for global variables in prepare-ChangeLog
that cause warnings when running tests:

Variable "$var" is not available

  • Scripts/prepare-ChangeLog:

(main):

  • Move %attributeCache from global scope into this subroutine, then pass to generateFileList() to fix a variable warning.

(fetchRadarURLFromBugXMLData):

  • Update regex that parses rdar:// URLs. This fixes the bug.

(attributeCommand):

  • Add argument for $attributeCache hash ref since it is no longer a global variable.
  • Move definition of $devNull here to fix a variable warning.

(generateFileList):

  • Add argument for $attributeCache hash ref to pass through to attributeCommand().
  • Scripts/webkitperl/prepare-ChangeLog_unittest/fetchRadarURLFromBugXMLData.pl:
  • Add tests for newly supported rdar:// URL formats.
  • Scripts/webkitperl/prepare-ChangeLog_unittest/filenameWithParentheses.pl:
  • Update to pass $attributeCache to attributeCommand().
9:57 AM Changeset in webkit [270630] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Introduce InlineTextItem::isWordSeparator
https://bugs.webkit.org/show_bug.cgi?id=219695

Reviewed by Antti Koivisto.

This is in preparation for using it to make space for word-spacing.

  • layout/inlineformatting/InlineItem.cpp:
  • layout/inlineformatting/InlineItem.h:
  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::createAndAppendTextItems):

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::isWordSeparator const):
(WebCore::Layout::InlineTextItem::createWhitespaceItem):
(WebCore::Layout::InlineTextItem::createNonWhitespaceItem):
(WebCore::Layout::InlineTextItem::InlineTextItem):
(WebCore::Layout::InlineTextItem::left const):
(WebCore::Layout::InlineTextItem::right const):

9:44 AM Changeset in webkit [270629] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Line available width computation should be based on the content logical right.
https://bugs.webkit.org/show_bug.cgi?id=219693

Reviewed by Antti Koivisto.

This is in preparation for adding proper support for negative word spacing values where the negative value
pulls the content on the line to the logical left direction making more space for subsequent content.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendInlineBoxStart):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendLineBreak):
(WebCore::Layout::Line::appendWordBreakOpportunity):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::contentLogicalRight const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::handleInlineContent):
(WebCore::Layout::LineBuilder::rebuildLine):
(WebCore::Layout::LineBuilder::rebuildLineForTrailingSoftHyphen):

9:16 AM Changeset in webkit [270628] by Chris Dumez
  • 2 edits in trunk/Tools

[iOS] TestWebKitAPI.GPUProcess.WebProcessTerminationAfterTooManyGPUProcessCrashes is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=219719
<rdar://problem/72158303>

Reviewed by Darin Adler.

We currently have an issue where the audio track gets removed after the GPUProcess
crashes. This is what is causing GPUProcess.WebProcessTerminationAfterTooManyGPUProcessCrashes
to be flaky on iOS. For the same reason, GPUProcess.CrashWhilePlayingVideo was flaky on
iOS until we temporarily disabled the checks in r270328. For now, do the same thing as in r270328
for WebProcessTerminationAfterTooManyGPUProcessCrashes since I have not found the reason why
we lose audio on iOS after a GPU process crash yet and we don't want to keep a flaky test on
the bots.

  • TestWebKitAPI/Tests/WebKitCocoa/GPUProcess.mm:

(TEST):

8:10 AM Changeset in webkit [270627] by youenn@apple.com
  • 11 edits
    2 adds in trunk

Gate VP9 exposure in MediaCapabilities on VP9DecoderEnabled preference
https://bugs.webkit.org/show_bug.cgi?id=219640

Reviewed by Eric Carlson.

Source/WebCore:

Add a boolean to enable/disable VP9 exposure.
Set it according to page settings.
Update scripts to correctly generate setVPXX setters.
Expose VP9DecoderEnabled value through internals API.

Test: media/mediacapabilities/vp9.html

  • Modules/mediacapabilities/MediaCapabilities.cpp:

(WebCore::MediaCapabilities::decodingInfo):

  • Scripts/GenerateSettings.rb:
  • platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:

(WebCore::createMediaPlayerDecodingConfigurationCocoa):

  • platform/mediacapabilities/MediaDecodingConfiguration.h:

(WebCore::MediaDecodingConfiguration::encode const):
(WebCore::MediaDecodingConfiguration::decode):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::vp9DecoderEnabled const):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

  • media/mediacapabilities/vp9-expected.txt: Added.
  • media/mediacapabilities/vp9.html: Added.
7:37 AM Changeset in webkit [270626] by youenn@apple.com
  • 15 edits
    2 adds in trunk/Source

ICE does not resolve for turns relay candidates rooted in LetsEncrypt CA
https://bugs.webkit.org/show_bug.cgi?id=219274

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:

Source/WebCore:

Introduce a new runtime flag that is used to control whether using the new webrtc socket code path or not.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::webRTCPlatformSocketsEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCPlatformSocketsEnabled):

Source/WebKit:

Use NWConnection for client TCP sockets.
This allows piggy-backing on this API for things such as proxies or certificate validation.
Implementation does opening a TCP socket with TLS using NWConnection:

  • If the socket is created for STUN/TURN, it is sending packets as is. For receiving data, the socket

will make sure to split received data in meaningful messages that WebProcess will process.

  • If the socket is TCP for data, sent data is prefixed with the size of the data. For received data,

the length of the message is read and we wait to receive the whole message data to send it to WebProcess.

We enable that new code path based on an experimental feature.
Tested manually with TURNS servers and TCP-only connections.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::createClientTCPSocket):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:

(WebKit::NetworkRTCProvider::setPlatformSocketsEnabled):

  • NetworkProcess/webrtc/NetworkRTCProvider.messages.in:
  • NetworkProcess/webrtc/NetworkRTCSocketSocketCocoa.h: Added.
  • NetworkProcess/webrtc/NetworkRTCSocketSocketCocoa.mm: Added.

(WebKit::socketQueue):
(WebKit::NetworkRTCSocketSocketCocoa::createClientTCPSocket):
(WebKit::isStunMessage):
(WebKit::getSTUNOrTURNMessageLength):
(WebKit::extractSTUNOrTURNMessages):
(WebKit::extractMessages):
(WebKit::processMessage):
(WebKit::NetworkRTCSocketSocketCocoa::NetworkRTCSocketSocketCocoa):
(WebKit::NetworkRTCSocketSocketCocoa::close):
(WebKit::NetworkRTCSocketSocketCocoa::setOption):
(WebKit::dataFromVector):
(WebKit::NetworkRTCSocketSocketCocoa::sendTo):

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:

(WebKit::LibWebRTCSocketFactory::setConnection):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
7:12 AM Changeset in webkit [270625] by Aditya Keerthi
  • 9 edits
    13 adds in trunk

[iOS][FCR] Add new look for input type=range
https://bugs.webkit.org/show_bug.cgi?id=219698
<rdar://problem/72144727>

Reviewed by Wenson Hsieh.

Source/WebCore:

The new appearance matches the appearance of UIKit's UISlider.

Tests: fast/forms/ios/form-control-refresh/range/background-color.html

fast/forms/ios/form-control-refresh/range/border.html
fast/forms/ios/form-control-refresh/range/datalist.html
fast/forms/ios/form-control-refresh/range/style-height.html
fast/forms/ios/form-control-refresh/range/style-width.html
fast/forms/ios/form-control-refresh/range/value.html

  • css/formControlsIOS.css:

(input[type="range"]::-webkit-slider-thumb, input[type="range"]::-webkit-slider-thumb:active):

The pressed appearance of slider thumbs on iOS is the same as the
unpressed appearance.

  • rendering/RenderSlider.cpp:

(WebCore::RenderSlider::valueRatio const):

  • rendering/RenderSlider.h:

Added the valueRatio() method so that the appropriate portion of the
slider can be filled when the value is non-zero.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::adjustStyle):

Consult supportsBoxShadow() rather than unconditionally dropping the
box shadow for native controls.

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::supportsBoxShadow const):

Preserve the default behavior of dropping box shadows for native controls.

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

(WebCore::RenderThemeIOS::paintSliderTrack):
(WebCore::RenderThemeIOS::paintSliderThumbDecorations):
(WebCore::RenderThemeIOS::paintProgressBar):
(WebCore::RenderThemeIOS::supportsBoxShadow const):

Slider thumbs rely on box shadows for their appearance. Other controls
may also be able to support box shadows; more investigation is
needed, which is outside the scope of this patch.

(WebCore::RenderThemeIOS::paintProgressBarWithFormControlRefresh):

Removed acronym to follow style guidelines.

(WebCore::RenderThemeIOS::paintSliderTrackWithFormControlRefresh):

LayoutTests:

Added tests to verify the stylability of inputs with the new appearance.

  • fast/forms/ios/form-control-refresh/range/background-color-expected.html: Added.
  • fast/forms/ios/form-control-refresh/range/background-color.html: Added.
  • fast/forms/ios/form-control-refresh/range/border-expected.html: Added.
  • fast/forms/ios/form-control-refresh/range/border.html: Added.
  • fast/forms/ios/form-control-refresh/range/datalist-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/range/datalist.html: Added.
  • fast/forms/ios/form-control-refresh/range/style-height-expected.html: Added.
  • fast/forms/ios/form-control-refresh/range/style-height.html: Added.
  • fast/forms/ios/form-control-refresh/range/style-width-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/range/style-width.html: Added.
  • fast/forms/ios/form-control-refresh/range/value-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/range/value.html: Added.
7:02 AM Changeset in webkit [270624] by Lauro Moura
  • 2 edits in trunk/Tools

[GTK] Fix EventSender wheel phase names
https://bugs.webkit.org/show_bug.cgi?id=219726

Reviewed by Carlos Garcia Campos.

It was causing the events to be sent with 0 phase as the momentum
phase switch overwrote it.

  • WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:

(WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases):

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

[LFC][IFC] Remove redundant Line::lineLogicalLeft
https://bugs.webkit.org/show_bug.cgi?id=219704

Reviewed by Antti Koivisto.

Now that the line builder tracks the left offset, the line does not need to have this bit anymore.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendInlineBoxEnd):
(WebCore::Layout::Line::moveLogicalLeft): Deleted.

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::contentLogicalRight const): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::handleFloatContent):

6:27 AM Changeset in webkit [270622] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Remove old SLL logic of not letting the measured width to be < 0
https://bugs.webkit.org/show_bug.cgi?id=219724

Reviewed by Antti Koivisto.

This is in preparation for adding proper negative letter spacing support (similar to negative word spacing).
While negative widths seem a bit odd, the line builder will use this information to position
the runs properly (offset the run using the negative value and size it to 0.)

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::fixedPitchWidth):

5:28 AM Changeset in webkit [270621] by graouts@webkit.org
  • 4 edits in trunk/Source/WebKit

Unified WebKit build fails
https://bugs.webkit.org/show_bug.cgi?id=219734

Reviewed by Tim Horton.

  • UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.h:
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h:
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp:
4:49 AM Changeset in webkit [270620] by youenn@apple.com
  • 9 edits in trunk

Expose RTCRtpSFrameTransform as SFrameTransform
https://bugs.webkit.org/show_bug.cgi?id=219675

Reviewed by Eric Carlson.

Source/WebCore:

Covered by updated tests.

  • Modules/mediastream/RTCRtpSFrameTransform.idl:
  • bindings/js/WebCoreBuiltinNames.h:

LayoutTests:

  • http/wpt/webrtc/sframe-transform-expected.txt:
  • http/wpt/webrtc/sframe-transform.html:
  • webrtc/audio-sframe.html:
  • webrtc/sframe-keys.html:
  • webrtc/video-sframe.html:
3:26 AM Changeset in webkit [270619] by jiewen_tan@apple.com
  • 11 edits in trunk

Unreviewed, build fix after r270616

Source/WebKit:

Adds a platform have flag.

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:
  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.h:
  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.mm:
  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:

(WebKit::AuthenticatorPresenterCoordinator::AuthenticatorPresenterCoordinator):

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

Source/WTF:

Adds a platform have flag.

  • wtf/PlatformHave.h:

LayoutTests:

Turns the modern WebAuthn feature off for this test.

  • http/wpt/webauthn/public-key-credential-create-failure-local-silent.https.html:
2:09 AM Changeset in webkit [270618] by commit-queue@webkit.org
  • 5 edits in trunk

Support aspect-ratio on replaced elements
https://bugs.webkit.org/show_bug.cgi?id=219200

Patch by Rob Buis <rbuis@igalia.com> on 2020-12-10
Reviewed by Darin Adler.

Source/WebCore:

Take CSS aspect-ratio into account when calculating replaced element dimensions.

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::computeAspectRatioInformationForRenderBox const): override
the context renderer aspect ratio with the replaced element aspect ratio.
(WebCore::RenderReplaced::computeIntrinsicRatioInformation const): compute
intrinsicRatio using CSS aspect-ratio information if it is provided.

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::computeIntrinsicRatioInformation const): compute
intrinsicRatio using CSS aspect-ratio for SVG root elements.

LayoutTests:

Enable some tests that pass now.

1:21 AM Changeset in webkit [270617] by svillar@igalia.com
  • 6 edits in trunk

[css-flex] RenderFlexibleBox::computeMainSizeFromAspectRatioUsing() must obbey box-sizing
https://bugs.webkit.org/show_bug.cgi?id=219690

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/flex-aspect-ratio-img-row-005-expected.txt: Replaced one FAIL by PASS expectation.
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-007-expected.txt: Ditto.
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-007v-expected.txt: Ditto.

Source/WebCore:

The method was not handling the cases in which box-sizing was border-box and thus it was incorrectly using
border and padding to compute sizes based on aspect ratios (the aspect ratio must be applied to content box).

This fixes 3 subtests from the WPT test suite.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeMainSizeFromAspectRatioUsing const): Use a lambda to substract border and
padding extent when box-sizing is border-box.
(WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild): Do not substract border and padding because
computeMainSizeFromAspectRatioUsing now always returns the content box size.

12:41 AM Changeset in webkit [270616] by jiewen_tan@apple.com
  • 10 edits
    7 adds in trunk

[WebAuthn] Adopt new UI for the Security Key makeCredential flow
https://bugs.webkit.org/show_bug.cgi?id=219708
<rdar://problem/72154735>

Reviewed by Brent Fulgham.

Source/WebKit:

This patch adopts the new AuthenticationServices' UI. The idea is to use AuthenticatorPresenterCoordinator
as the middle layer to connect to the new UI while keeping the existing interfaces the same in the AuthenticatorManager
to handle the interactions between UI and authenticators.

Covered by manual tests.

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h: Added.

SPI for the new UI.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
  • Scripts/process-entitlements.sh:

Added new sandbox rules for Remote SpringBoard services which are used by the new UI.

  • SourcesCocoa.txt:

Paperwork.

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::handleRequest):
(WebKit::AuthenticatorManager::cancel):
(WebKit::AuthenticatorManager::enableModernWebAuthentication):
(WebKit::AuthenticatorManager::clearState):
(WebKit::AuthenticatorManager::serviceStatusUpdated):
(WebKit::AuthenticatorManager::authenticatorStatusUpdated):
(WebKit::AuthenticatorManager::requestPin):
(WebKit::AuthenticatorManager::selectAssertionResponse):
(WebKit::AuthenticatorManager::startDiscovery):
(WebKit::AuthenticatorManager::runPanel):
(WebKit::AuthenticatorManager::runPresenter):
(WebKit::AuthenticatorManager::invokePendingCompletionHandler):

  • UIProcess/WebAuthentication/AuthenticatorManager.h:

Teached AuthenticatorManager to use the new UI's presenter when it is available. Otherwise, it falls back to the old UI.

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

(WebKit::AuthenticatorPresenterCoordinator::AuthenticatorPresenterCoordinator):
(WebKit::AuthenticatorPresenterCoordinator::updatePresenter):
(WebKit::AuthenticatorPresenterCoordinator::requestPin):
(WebKit::AuthenticatorPresenterCoordinator::selectAssertionResponse):
(WebKit::AuthenticatorPresenterCoordinator::dimissPresenter):

  • UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.h: Added.
  • UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.mm: Added.

(-[WKASCAuthorizationPresenterDelegate initWithCoordinator:]):
(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:credentialRequestedForLoginChoice:authenticatedContext:completionHandler:]):
(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:validateUserEnteredPIN:completionHandler:]):
Introduced the AuthenticatorPresenterCoordinator to handle the new UI.

  • WebAuthnProcess/WebAuthnProcess.cpp:

(WebKit::WebAuthnProcess::WebAuthnProcess):
(WebKit::WebAuthnProcess::setMockWebAuthenticationConfiguration):
Teached WebAuthnProcess to inform AuthenticatorManager about its existence.

  • WebKit.xcodeproj/project.pbxproj:

Paperwork.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):
Adjusted to the new behavior.

Dec 9, 2020:

11:51 PM Changeset in webkit [270615] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Fix redundant assert
https://bugs.webkit.org/show_bug.cgi?id=219725

Patch by Dmitry Bezhetskov <dbezhetskov> on 2020-12-09
Reviewed by Ross Kirsling.

  • runtime/JSArrayBufferPrototype.cpp:

(JSC::arrayBufferSlice):

11:23 PM Changeset in webkit [270614] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Remove com.apple.PowerManagement.control from WebContent sandbox
https://bugs.webkit.org/show_bug.cgi?id=219685
<rdar://problem/70497033>

Reviewed by Darin Adler.

Remove com.apple.PowerManagement.control from WebContent sandbox on macOS, since there are no reports of this being in use.

No new tests, since the result will depend on macOS version.

  • WebProcess/com.apple.WebProcess.sb.in:
10:39 PM Changeset in webkit [270613] by cathiechen
  • 39 edits
    4 adds in trunk

Support overscroll-behavior parsing
https://bugs.webkit.org/show_bug.cgi?id=219305

Reviewed by Simon Fraser.

Based on Frédéric Wang's patch.

LayoutTests/imported/w3c:

Update expectations for overscroll-behavior parsing tests.

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/css-overscroll-behavior/inheritance-expected.txt:
  • web-platform-tests/css/css-overscroll-behavior/overscroll-behavior-logical-expected.txt:
  • web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-computed-expected.txt:
  • web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-valid-expected.txt:
  • web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Source/WebCore:

Support parsing CSS properties: overscroll-behavior, overscroll-behavior-x and overscroll-behavior-y.

Tests: fast/css/overscroll-behavior-invalidate-if-disabled.html

fast/css/overscroll-behavior-validate-if-enable.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::CSSComputedStyleDeclaration::settings const):
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSComputedStyleDeclaration.h:
  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator OverscrollBehavior const):

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

(WebCore::CSSStyleDeclaration::settings const):
(WebCore::CSSStyleDeclaration::namedItem):
(WebCore::CSSStyleDeclaration::setNamedItem):
(WebCore::CSSStyleDeclaration::supportedPropertyNames const):

  • css/CSSStyleDeclaration.h:
  • css/CSSValueKeywords.in:
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const):
(WebCore::StyleProperties::asText const):

  • css/parser/CSSParserContext.cpp:

(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):

  • css/parser/CSSParserContext.h:

(WebCore::CSSParserContextHash::hash):

  • css/parser/CSSParserFastPaths.cpp:

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

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeOverscrollBehavior):
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::consumeOverscrollBehaviorShorthand):
(WebCore::CSSPropertyParser::parseShorthand):

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

(WebCore::RenderStyle::overscrollBehaviorX const):
(WebCore::RenderStyle::overscrollBehaviorY const):
(WebCore::RenderStyle::setOverscrollBehaviorX):
(WebCore::RenderStyle::setOverscrollBehaviorY):
(WebCore::RenderStyle::initialOverscrollBehaviorX):
(WebCore::RenderStyle::initialOverscrollBehaviorY):

  • rendering/style/StyleRareNonInheritedData.cpp:

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

  • rendering/style/StyleRareNonInheritedData.h:

Source/WebKitLegacy/win:

Add an experimental feature flag for overscroll-behavior.

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::overscrollBehaviorEnabled):
(WebPreferences::setOverscrollBehaviorEnabled):

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Source/WTF:

Add an experimental feature flag for overscroll-behavior.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

Tools:

Add support for testing overscroll-behavior parsing.

  • DumpRenderTree/TestOptions.cpp:

(WTR::TestOptions::defaults):

LayoutTests:

Test overscrollBehavior's validation when enable or disable OverscrollBehaviorEnabled.

  • fast/css/overscroll-behavior-invalidate-if-disabled-expected.txt: Added.
  • fast/css/overscroll-behavior-invalidate-if-disabled.html: Added.
  • fast/css/overscroll-behavior-validate-if-enable-expected.txt: Added.
  • fast/css/overscroll-behavior-validate-if-enable.html: Added.
  • platform/ios-13/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
9:04 PM Changeset in webkit [270612] by Peng Liu
  • 49 edits in trunk/Source

[Media in GPU Process][MSE] Implement basic video playback
https://bugs.webkit.org/show_bug.cgi?id=219402

Reviewed by Jer Noble.

Source/WebCore:

Implement the video playback support when the MSE media player runs in the GPU process.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::setPrivateAndOpen): Propagate the time fudge factor to
MediaSourcePrivate so that SourceBufferPrivate can use it.
(WebCore::MediaSource::setDurationInternal): Propagate the duration information
to MediaSourcePrivate so that SourceBufferPrivate can use it.
(WebCore::MediaSource::streamEndedWithError): Mark the stream is end in MediaSourcePrivate.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::SourceBuffer):
(WebCore::SourceBuffer::~SourceBuffer):
(WebCore::SourceBuffer::buffered const):
(WebCore::SourceBuffer::sourceBufferPrivateAppendComplete): Move the code to update
buffered to SourceBufferPrivate to make sure the buffered attribute is updated timely.
(WebCore::SourceBuffer::maximumBufferSize const):
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment): Add a completionHandler
parameter to notify the caller (SourceBufferParser) that the track buffer manager (SourceBufferPrivate)
has handled the initialization segment and is ready to receive media samples.
(WebCore::SourceBuffer::extraMemoryCost const):
(WebCore::SourceBuffer::reportExtraMemoryAllocated):
(WebCore::SourceBuffer::setMaximumQueueDepthForTrackID):
(WebCore::SourceBuffer::sourceBufferPrivateBufferedDirtyChanged):
(WebCore::SourceBuffer::sourceBufferPrivateBufferedRangesChanged):
(WebCore::SourceBuffer::isBufferedDirty const):
(WebCore::SourceBuffer::setBufferedDirty):
(WebCore::SourceBuffer::sourceBufferPrivateHasAudio const): Deleted.
(WebCore::SourceBuffer::sourceBufferPrivateHasVideo const): Deleted.

  • Modules/mediasource/SourceBuffer.h:

Some parameters and return values are changed from size_t to uint64_t because they
need to pass with IPC messages when we run the MSE media player in the GPU process.

  • platform/graphics/MediaSourcePrivate.h:

(WebCore::MediaSourcePrivate::setTimeFudgeFactor):
(WebCore::MediaSourcePrivate::timeFudgeFactor const):

  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::setBufferedDirty):
(WebCore::SourceBufferPrivate::setBufferedRanges):
(WebCore::SourceBufferPrivate::updateBufferedFromTrackBuffers):
(WebCore::SourceBufferPrivate::appendCompleted):
(WebCore::SourceBufferPrivate::bufferedSamplesForTrackID):
(WebCore::SourceBufferPrivate::provideMediaData):
(WebCore::SourceBufferPrivate::reenqueueMediaForTime):
(WebCore::SourceBufferPrivate::reenqueueMediaIfNeeded):
(WebCore::removeSamplesFromTrackBuffer):
(WebCore::SourceBufferPrivate::evictCodedFrames):
(WebCore::SourceBufferPrivate::totalTrackBufferSizeInBytes const):
(WebCore::SourceBufferPrivate::addTrackBuffer):
(WebCore::SourceBufferPrivate::didReceiveInitializationSegment):
(WebCore::SourceBufferPrivate::didReceiveSample):

  • platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::hasAudio const):
(WebCore::SourceBufferPrivate::hasVideo const):
(WebCore::SourceBufferPrivate::startChangingType):
(WebCore::SourceBufferPrivate::setMaximumQueueDepthForTrackID):
(WebCore::SourceBufferPrivate::timeFudgeFactor const):
(WebCore::SourceBufferPrivate::setActive): Deleted.
(WebCore::SourceBufferPrivate::setCurrentTimeFudgeFactor): Deleted.
(WebCore::SourceBufferPrivate::buffered const): Deleted.
(WebCore::SourceBufferPrivate::isBufferedDirty const): Deleted.
(WebCore::SourceBufferPrivate::setBufferedDirty): Deleted.

  • platform/graphics/SourceBufferPrivateClient.h:

SourceBufferPrivate can figure out the values of hasAudio and hasVideo because
it manages the track buffers, so the functions sourceBufferPrivateHasAudio() and
sourceBufferPrivateHasVideo() can be removed.

  • platform/graphics/VideoTrackPrivate.h:
  • platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:

(WebCore::MediaSourcePrivateAVFObjC::MediaSourcePrivateAVFObjC):
(WebCore::MediaSourcePrivateAVFObjC::durationChanged):

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

(WebCore::SourceBufferParserAVFObjC::didParseStreamDataAsAsset):
Use a semaphore to hold the parser thread until the track buffer manager has handled
the initialization segment.

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

(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::didParseInitializationData):
(WebCore::SourceBufferPrivateAVFObjC::appendCompleted):
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
(WebCore::SourceBufferPrivateAVFObjC::timeFudgeFactor const):
(WebCore::SourceBufferPrivateAVFObjC::hasVideo const): Deleted.
(WebCore::SourceBufferPrivateAVFObjC::hasAudio const): Deleted.

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

(WebCore::SourceBufferParserWebM::OnClusterBegin):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

The same as SourceBufferPrivateAVFObjC.

  • platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.cpp:

(WebCore::MediaSourcePrivateGStreamer::durationChanged):
(WebCore::MediaSourcePrivateGStreamer::markEndOfStream):
(WebCore::MediaSourcePrivateGStreamer::unmarkEndOfStream):

  • platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h:
  • platform/mock/mediasource/MockMediaSourcePrivate.cpp:

(WebCore::MockMediaSourcePrivate::durationChanged):

  • platform/mock/mediasource/MockMediaSourcePrivate.h:
  • platform/mock/mediasource/MockSourceBufferPrivate.cpp:

(WebCore::MockSourceBufferPrivate::append):
(WebCore::MockSourceBufferPrivate::didReceiveInitializationSegment):
(WebCore::MockSourceBufferPrivate::setMaximumQueueDepthForTrackID):
(WebCore::MockSourceBufferPrivate::hasVideo const): Deleted.
(WebCore::MockSourceBufferPrivate::hasAudio const): Deleted.

  • platform/mock/mediasource/MockSourceBufferPrivate.h:

Source/WebKit:

Implement the necessary functions with IPC to support media playback.

  • GPUProcess/media/RemoteAudioTrackProxy.cpp:

(WebKit::RemoteAudioTrackProxy::configuration): Rename identifier to trackId
because it is easy to confuse with TrackPrivateRemoteIdentifier.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::loadMediaSource):
(WebKit::RemoteMediaPlayerProxy::updateCachedState): For MSE media player, SourceBuffer
provides the buffered ranges, so RemoteMediaPlayerProxy does not need to report this
information to the MediaPlayer object in the Web process.

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/RemoteMediaSourceProxy.cpp:

(WebKit::RemoteMediaSourceProxy::duration const):
(WebKit::RemoteMediaSourceProxy::buffered const):
(WebKit::RemoteMediaSourceProxy::durationChanged):
(WebKit::RemoteMediaSourceProxy::setReadyState):

  • GPUProcess/media/RemoteMediaSourceProxy.h:
  • GPUProcess/media/RemoteMediaSourceProxy.messages.in:
  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::RemoteSourceBufferProxy):
(WebKit::RemoteSourceBufferProxy::~RemoteSourceBufferProxy):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveInitializationSegment):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDurationChanged):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidParseSample):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateAppendComplete):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveRenderingError):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateBufferedDirtyChanged):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateBufferedRangesChanged):
(WebKit::RemoteSourceBufferProxy::setActive):
(WebKit::RemoteSourceBufferProxy::setReadyState):
(WebKit::RemoteSourceBufferProxy::updateBufferedFromTrackBuffers):
(WebKit::RemoteSourceBufferProxy::evictCodedFrames):
(WebKit::RemoteSourceBufferProxy::addTrackBuffer):
(WebKit::RemoteSourceBufferProxy::reenqueueMediaIfNeeded):
(WebKit::RemoteSourceBufferProxy::trySignalAllSamplesInTrackEnqueued):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateHasAudio const): Deleted.
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateHasVideo const): Deleted.

  • GPUProcess/media/RemoteSourceBufferProxy.h:
  • GPUProcess/media/RemoteSourceBufferProxy.messages.in:
  • GPUProcess/media/RemoteTextTrackProxy.cpp:

(WebKit::RemoteTextTrackProxy::configuration):

  • GPUProcess/media/RemoteVideoTrackProxy.cpp:

(WebKit::RemoteVideoTrackProxy::configuration):

  • GPUProcess/media/TextTrackPrivateRemoteConfiguration.h:

(WebKit::TextTrackPrivateRemoteConfiguration::encode const):
(WebKit::TextTrackPrivateRemoteConfiguration::decode):

  • GPUProcess/media/TrackPrivateRemoteConfiguration.h:

(WebKit::TrackPrivateRemoteConfiguration::encode const):
(WebKit::TrackPrivateRemoteConfiguration::decode):

  • WebProcess/GPU/media/AudioTrackPrivateRemote.cpp:

(WebKit::AudioTrackPrivateRemote::updateConfiguration):

  • WebProcess/GPU/media/AudioTrackPrivateRemote.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::load):

  • WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:

(WebKit::MediaSourcePrivateRemote::durationChanged):
(WebKit::MediaSourcePrivateRemote::isEnded const):
(WebKit::MediaSourcePrivateRemote::setReadyState):

  • WebProcess/GPU/media/MediaSourcePrivateRemote.h:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::setReadyState):
(WebKit::SourceBufferPrivateRemote::flush):
(WebKit::SourceBufferPrivateRemote::setActive):
(WebKit::SourceBufferPrivateRemote::updateBufferedFromTrackBuffers):
(WebKit::SourceBufferPrivateRemote::evictCodedFrames):
(WebKit::SourceBufferPrivateRemote::addTrackBuffer):
(WebKit::SourceBufferPrivateRemote::reenqueueMediaIfNeeded):
(WebKit::SourceBufferPrivateRemote::trySignalAllSamplesInTrackEnqueued):
(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateDidReceiveInitializationSegment):
(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateDurationChanged):
(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateDidParseSample):
(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateBufferedDirtyChanged):
(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateBufferedRangesChanged):
(WebKit::SourceBufferPrivateRemote::enqueueSample): Deleted.

  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in:
  • WebProcess/GPU/media/TextTrackPrivateRemote.cpp:

(WebKit::TextTrackPrivateRemote::updateConfiguration):

  • WebProcess/GPU/media/VideoTrackPrivateRemote.cpp:

(WebKit::VideoTrackPrivateRemote::updateConfiguration):

5:12 PM Changeset in webkit [270611] by Wenson Hsieh
  • 12 edits in trunk/Source/WebCore

[GPU Process] Allow form controls to be painted when iOS form control refresh is enabled
https://bugs.webkit.org/show_bug.cgi?id=219718

Reviewed by Tim Horton.

Ensures that form controls show up when using the GPU process, when the iOS form control refresh setting is
enabled. All form controls post-refresh are implemented in such a way that they're compatible with graphics
contexts in the web process that are not backed by platform graphics context objects. See below for more
details.

This was added as a temporary workaround to avoid crashing when enabling GPU process in r199037.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::paint):

  • rendering/RenderTheme.h:

Makes RenderTheme::canPaint true by default on the base RenderTheme class, so that all platforms don't need
to individually override it and return true. Additionally plumbs a WebCore::Settings object through this
method, so that we can consult it on iOS.

(WebCore::RenderTheme::canPaint const):

  • rendering/RenderThemeAdwaita.h:
  • rendering/RenderThemeCocoa.h:
  • rendering/RenderThemeCocoa.mm:

(WebCore::RenderThemeCocoa::canPaint const): Deleted.

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

(WebCore::RenderThemeIOS::canPaint const):

When iOS form control refresh is enabled, return true; otherwise, return true only if there is a platform
CGContextRef.

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::canPaint const):

Preserve existing behavior by returning true here if (and only if) there is a platform CGContextRef.

  • rendering/RenderThemePlayStation.h:
  • rendering/RenderThemeWin.h:
4:35 PM Changeset in webkit [270610] by ggaren@apple.com
  • 2 edits in trunk/LayoutTests

Marked some WPT worklet tests as flaky
https://bugs.webkit.org/show_bug.cgi?id=219717

Reviewed by Chris Dumez.

imported/w3c/web-platform-tests/worklets/animation-worklet-csp.https.html
imported/w3c/web-platform-tests/worklets/animation-worklet-referrer.https.html
imported/w3c/web-platform-tests/worklets/layout-worklet-referrer.https.html

These tests flake a little on Apple platforms, e.g.:

https://build.webkit.org/builders/Apple-Mojave-Release-WK1-Tests/builds/19881
https://build.webkit.org/builders/Apple-Mojave-Release-WK1-Tests/builds/19880
https://build.webkit.org/builders/Apple-Mojave-Release-WK1-Tests/builds/19830

...and a lot on WPE platforms.

Also, animation and layout worklets are not supported features yet.

4:35 PM Changeset in webkit [270609] by Andres Gonzalez
  • 11 edits in trunk/Source/WebCore

Fix for focus tracking in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=219662

Reviewed by Chris Fleizach.

Covered by existing tests.

  • AXIsolatedTree::setFocusedNodeID and applyPendingChanges now properly

handle the focused node ID update when the focused object changes.

  • AccessibilityObject::setFocused sets focus and activates the

corresponding view. This was done in the wrapper baseAccessibilitySetFocus
method, but this is a more appropriate place for this core functionality.

  • Some code cleanup, ASSERT checks of appropriate thread, and additional

logging.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::setFocused):

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

(WebCore::AccessibilityRenderObject::setFocused):

  • accessibility/AccessibilityScrollView.cpp:

(WebCore::AccessibilityScrollView::setFocused):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilitySetFocus:]):

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::page const):
(WebCore::AXIsolatedObject::document const):
(WebCore::AXIsolatedObject::documentFrameView const):

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::setFocusedNodeID):
(WebCore::AXIsolatedTree::applyPendingChanges):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase baseAccessibilitySetFocus:]):
Deleted, not needed since core functionality is now in AccessibilityObject::setFocused.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):

4:23 PM Changeset in webkit [270608] by commit-queue@webkit.org
  • 9 edits in trunk/JSTests

stress/intl-datetimeformat-formatrange.js and stress/intl-datetimeformat-formatrange-relevant-extensions.js fail with ICU 65.1
https://bugs.webkit.org/show_bug.cgi?id=218763
<rdar://problem/71257288>

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-12-09
Reviewed by Yusuke Suzuki.

There are strange differences between the output of similar ICU versions on macOS compared
to Linux, for reasons unknown. Make these tests more robust to different output by stripping
all "thin space" characters from the actual results and replacing them with regular spaces.
The thin space characters are only used by older versions of ICU, but it seems that the
versions in which it is used either differ between macOS and Linux, or else change within a
particular major version, so it's hard to use ICU version checks for this.

  • stress/intl-datetimeformat-formatrange-relevant-extensions-ja.js:

(shouldBe):

  • stress/intl-datetimeformat-formatrange-relevant-extensions.js:

(shouldBe):

  • stress/intl-datetimeformat-formatrange-should-not-handle-gregorian-change-date.js:
  • stress/intl-datetimeformat-formatrange.js:

(shouldBe):
(test):

  • stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js:

(shouldBe):

  • stress/intl-datetimeformat-formatrangetoparts-relevant-extensions.js:

(shouldBe):

  • stress/intl-datetimeformat-formatrangetoparts-should-not-handle-gregorian-change-date.js:
  • stress/intl-datetimeformat-formatrangetoparts.js:

(shouldBe):

3:13 PM Changeset in webkit [270607] by Dewei Zhu
  • 7 edits
    1 add in trunk/Websites/perf.webkit.org

Add max age for a root to be reused.
https://bugs.webkit.org/show_bug.cgi?id=219628

Reviewed by Ryosuke Niwa.

In order to prevent reusing a stale root, we should set a limit on the age of a root to be reused.

  • public/include/manifest-generator.php: Added 'maxRootReuseAgeInDays' to manifest.
  • public/v3/models/build-request.js: Added root age check.

(BuildRequest.prototype.async findBuildRequestWithSameRoots):

  • public/v3/models/commit-set.js: Extended 'areAllRootsAvailable' with root age check.

(CommitSet.prototype.areAllRootsAvailable):

  • public/v3/models/manifest.js:

(Manifest.fetch): Made it async.
(Manifest.async fetchRawResponse): Extract fetching raw manifest out so that 'maxRootReuseAgeInDays'
can be read without resetting other data models. Also added code to only fetch from API if requesting
/data/manifest.json returns 404.
(Manifest._didFetchManifest):

  • server-tests/api-manifest-tests.js: Updated unit tests.
  • unit-tests/build-request-tests.js: Updated unit tests and add new tests.
  • unit-tests/manifest-test.js: Added unit tests.
3:08 PM Changeset in webkit [270606] by BJ Burg
  • 24 edits
    4 copies in trunk/Source

[Cocoa] Web Inspector: add support for creating extension tabs in WebInspectorUI via _WKInspectorExtension
https://bugs.webkit.org/show_bug.cgi?id=219380

Reviewed by Devin Rousso and Timothy Hatcher.

Source/WebInspectorUI:

  • UserInterface/Controllers/WebInspectorExtensionController.js:

(WI.WebInspectorExtensionController):
(WI.WebInspectorExtensionController.prototype._makeNextExtensionTabID):
(WI.WebInspectorExtensionController.prototype.unregisterExtension):
(WI.WebInspectorExtensionController.prototype.createTabForExtension):

  • UserInterface/Main.html:
  • UserInterface/Protocol/InspectorFrontendAPI.js:

(InspectorFrontendAPI.createTabForExtension):

  • UserInterface/Views/GeneralTabBarItem.js:

(WI.GeneralTabBarItem.fromTabContentView):
(WI.GeneralTabBarItem.get displayName): Deleted.

  • UserInterface/Views/PinnedTabBarItem.js:

(WI.PinnedTabBarItem.fromTabContentView):
(WI.PinnedTabBarItem):

  • UserInterface/Views/TabContentView.js:

(WI.TabContentView.prototype.get tabBarItem):
(WI.TabContentView.prototype.tabInfo):
(WI.TabContentView.prototype.get managesNavigationSidebarPanel): Deleted.
(WI.TabContentView.prototype.attached): Deleted.

  • UserInterface/Views/WebInspectorExtensionTabContentView.css: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.h.

(.content-view.web-inspector-extension-tab > iframe):

  • UserInterface/Views/WebInspectorExtensionTabContentView.js: Copied from Source/WebKit/UIProcess/API/APIInspectorExtension.h.

(WI.WebInspectorExtensionTabContentView):
(WI.WebInspectorExtensionTabContentView.prototype.tabInfo):
(WI.WebInspectorExtensionTabContentView.prototype.get type):
(WI.WebInspectorExtensionTabContentView.prototype.get supportsSplitContentBrowser):
(WI.WebInspectorExtensionTabContentView.prototype.get extensionTabID):
(WI.WebInspectorExtensionTabContentView.prototype.initialLayout):

Source/WebKit:

Add a new method to _WKInspectorExtension for creating an extension tab in WebInpectorUI.
This can be used to implement browser.devtools.panels.create() as provided by the Web Extensions API.

  • Platform/Logging.h: Add Inspector channel for error logging.
  • Shared/InspectorExtensionTypes.h: Add a missing EnumTraits case.
  • WebKit.xcodeproj/project.pbxproj:
  • Sources.txt: Add files.
  • UIProcess/API/APIInspectorExtension.h:
  • UIProcess/API/APIInspectorExtension.cpp:

(API::InspectorExtension::InspectorExtension):
(API::InspectorExtension::create):
(API::InspectorExtension::createTab):
Inspector extensions need to be able to invoke commands in the WebProcess-side
extension proxy controller, so keep a WeakRef to the extension controller that
created the extension object. Also, implement the new API by forwarding it on.

  • UIProcess/API/Cocoa/_WKInspector.mm:

(-[_WKInspector registerExtensionWithID:displayName:completionHandler:]):
Adapt to the new constructor as explained above.

  • UIProcess/API/Cocoa/_WKInspectorExtensionInternal.h:

Expose member m_remoteInspectorPorxy for use in the API::InspectorExtension constructor.

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

(-[_WKInspectorExtension initWithIdentifier:]): Deleted.

(-[_WKInspectorExtension createTabWithName:tabIconURL:sourceURL:completionHandler:]):
Implement new API.

  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewControllerInternal.h: Added.

Make the RefPtr<RemoteWebInspectorProxy> member variable accessible to the API object constructor.

  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:

(-[_WKRemoteWebInspectorViewController registerExtensionWithID:displayName:completionHandler:]):
Adapt to new constructor as explained above.

  • UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:
  • UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:

(WebKit::WebInspectorUIExtensionControllerProxy::createTabForExtension):
Forward the request to the inspector frontend WebProcess.

  • WebProcess/Inspector/WebInspectorUIExtensionController.messages.in:

Add a new async IPC command for creating a new inspector extension tab.

  • WebProcess/Inspector/WebInspectorUIExtensionController.h:
  • WebProcess/Inspector/WebInspectorUIExtensionController.cpp:

(WebKit::WebInspectorUIExtensionController::unwrapEvaluationResultAsObject):
Added. Pull out the code needed for error-handling this common operation.

(WebKit::WebInspectorUIExtensionController::createTabForExtension):
Added. Call into InspectorFrontendAPI to request a new tab. Turn the result
into an InspectorExtensionError or InspectorExtensionTabID and send the IPC reply.

  • UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.h:

Fix unified sources fallout.

3:01 PM Changeset in webkit [270605] by Said Abou-Hallawa
  • 7 edits in trunk/Source

[GPU Process]: Recording an in-process ImageBuffer drawing has to convert it to a NativeImage first
https://bugs.webkit.org/show_bug.cgi?id=219705

Reviewed by Wenson Hsieh.

Source/WebCore:

We will allow GraphicsContext::drawImageBuffer() to proceed with the
painting code path if the ImageBuffer is not a RemoteImageBuffer. In this
case ImageBuffer::draw() extracts a NativeImage from the ImageBuffer and
calls GraphicsContext::drawNativeImage() which will send the NativeImage
to GPUP.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawImageBuffer):

  • platform/graphics/GraphicsContextImpl.h:

(WebCore::GraphicsContextImpl::canDrawImageBuffer const):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::canDrawImageBuffer const):

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::Delegate::isCachedImageBuffer const):

Source/WebKit:

Override the virtual method isCachedImageBuffer() which in this case
answers the question: is this a remote ImageBuffer or not?

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
2:33 PM Changeset in webkit [270604] by Devin Rousso
  • 45 edits
    1 copy
    7 adds
    8 deletes in trunk

Web Inspector: add UI for request interception
https://bugs.webkit.org/show_bug.cgi?id=217032
<rdar://problem/69925768>

Reviewed by Brian Burg.

Source/WebInspectorUI:

  • UserInterface/Models/LocalResourceOverride.js:

(WI.LocalResourceOverride):
(WI.LocalResourceOverride.create):
(WI.LocalResourceOverride.displayNameForType): Added.
(WI.LocalResourceOverride.fromJSON):
(WI.LocalResourceOverride.prototype.toJSON):
(WI.LocalResourceOverride.prototype.get url):
(WI.LocalResourceOverride.prototype.get urlComponents): Added.
(WI.LocalResourceOverride.prototype.get displayName): Added.
(WI.LocalResourceOverride.prototype.displayURL): Added.
(WI.LocalResourceOverride.prototype.matches):
(WI.LocalResourceOverride.prototype.equals): Added.
(WI.LocalResourceOverride.prototype.saveIdentityToCookie):
Add a WI.LocalResourceOverride.InterceptType.Request and pass through request information
to the WI.LocalResource.

  • UserInterface/Models/SourceCode.js:

(WI.SourceCode.prototype.get localResourceOverride): Added.

  • UserInterface/Models/Resource.js:

(WI.Resource.classNamesForResource):
(WI.Resource.prototype.get supportsScriptBlackboxing):
(WI.Resource.prototype.async createLocalResourceOverride):
(WI.Resource.prototype.updateLocalResourceOverrideRequestData):
(WI.Resource.prototype.get isLocalResourceOverride): Deleted.

  • UserInterface/Models/LocalResource.js:

(WI.LocalResource.prototype.toJSON):
(WI.LocalResource.prototype.get localResourceOverride): Added.
(WI.LocalResource.prototype.get isLocalResourceOverride): Deleted.
Replace get isLocalResourceOverride with get localResourceOverride (on WI.SourceCode
so that non-WI.Resource also can call it) by having the related WI.LocalResourceOverride
set _localResourceOverride.

  • UserInterface/Controllers/NetworkManager.js:

(WI.NetworkManager.supportsOverridingRequests): Added.
(WI.NetworkManager.prototype.get localResourceOverrides):
(WI.NetworkManager.prototype.addLocalResourceOverride):
(WI.NetworkManager.prototype.removeLocalResourceOverride):
(WI.NetworkManager.prototype.localResourceOverridesForURL): Added.
(WI.NetworkManager.prototype.canBeOverridden):
(WI.NetworkManager.prototype.requestIntercepted):
(WI.NetworkManager.prototype.responseIntercepted):
(WI.NetworkManager.prototype._handleResourceContentChangedForLocalResourceOverride): Added.
(WI.NetworkManager.prototype.localResourceOverrideForURL): Deleted.
(WI.NetworkManager.prototype._handleResourceContentDidChange): Deleted.
Provide all WI.LocalResourceOverride that match the given URL sorted by how close/exact
the WI.LocalResourceOverride is to the given URL (i.e. exact < case-insensitive < regex).
Add logic to invoke Network.interceptWithRequest when the WI.LocalResourceOverride is
WI.LocalResourceOverride.InterceptType.Request.

  • UserInterface/Views/LocalResourceOverridePopover.js:

(WI.LocalResourceOverridePopover):
(WI.LocalResourceOverridePopover.prototype.get serializedData):
(WI.LocalResourceOverridePopover.prototype.show):

  • UserInterface/Views/LocalResourceOverridePopover.css:

(.popover .local-resource-override-popover-content.request .editor:is(.url, .redirect)): Added.
(.popover .local-resource-override-popover-content.response .editor.url): Added.
(.popover .local-resource-override-popover-content .data-grid): Added.
(.popover .local-resource-override-popover-content .reference-page-link-container): Added.
(body[dir=ltr] .popover .local-resource-override-popover-content .reference-page-link-container):
(body[dir=rtl] .popover .local-resource-override-popover-content .reference-page-link-container):
(.popover .local-resource-override-popover-content .editor.url): Deleted.
(.popover .local-resource-override-popover-content .add-header): Deleted.
(.popover .local-resource-override-popover-content .add-header + .reference-page-link-container): Deleted.
Replace the MIME type, status code, and status text inputs with redirect and method inputs
when editing a request override. For brand new overrides, show a type dropdown that allows
for dynamically updating what inputs are shown (only until the popover is dismissed, at
which point the type is set forever).

  • UserInterface/Views/LocalResourceOverrideRequestContentView.js: Added.

(WI.LocalResourceOverrideRequestContentView):
(WI.LocalResourceOverrideRequestContentView.prototype.get navigationItems):
(WI.LocalResourceOverrideRequestContentView.prototype.get saveData):
(WI.LocalResourceOverrideRequestContentView.prototype.initialLayout):
(WI.LocalResourceOverrideRequestContentView.prototype._handleRemoveLocalResourceOverride):
(WI.LocalResourceOverrideRequestContentView.prototype._handleTextEditorContentDidChange):

  • UserInterface/Views/LocalResourceOverrideRequestContentView.css: Added.

(.content-view.text.local-resource-override-request):
(.content-view.text.local-resource-override-request > .text-editor):
(.content-view.text.local-resource-override-request > .message-text-view):

  • UserInterface/Views/ContentView.js:

(WI.ContentView.createFromRepresentedObject):
(WI.ContentView.resolvedRepresentedObjectForRepresentedObject):
Create a special WI.TextContentView for showing WI.LocalResourceOverride request data.
Only allow it to be edited if the current method allows for request data.

  • UserInterface/Views/ResourceContentView.js:

(WI.ResourceContentView):
(WI.ResourceContentView.prototype.get resource):
(WI.ResourceContentView.prototype.requestLocalResourceOverrideInitialContent):
(WI.ResourceContentView.prototype.async _createAndShowLocalResourceOverride):
(WI.ResourceContentView.prototype._populateCreateLocalResourceOverrideContextMenu):
(WI.ResourceContentView.prototype._handleCreateLocalResourceOverride):
(WI.ResourceContentView.prototype._handleImportLocalResourceOverride):
(WI.ResourceContentView.prototype.async _handleRemoveLocalResourceOverride): Added.
(WI.ResourceContentView.prototype._handleLocalResourceOverrideChanged): Added.
(WI.ResourceContentView.prototype.get showingLocalResourceOverride): Deleted.
Show a contextmenu when clicking on the create override navigation item with items for
creating either a request override or a response override.

  • UserInterface/Controllers/CSSManager.js:

(WI.CSSManager.prototype._resourceContentDidChange):

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForSourceCode):

  • UserInterface/Views/FontResourceContentView.js:

(WI.FontResourceContentView.prototype.contentAvailable):
(WI.FontResourceContentView.prototype.dropZoneShouldAppearForDragEvent):
(WI.FontResourceContentView.prototype.dropZoneHandleDragEnter):
(WI.FontResourceContentView.prototype.dropZoneHandleDrop):

  • UserInterface/Views/ImageResourceContentView.js:

(WI.ImageResourceContentView.prototype.contentAvailable):
(WI.ImageResourceContentView.prototype.dropZoneShouldAppearForDragEvent):
(WI.ImageResourceContentView.prototype.dropZoneHandleDragEnter):
(WI.ImageResourceContentView.prototype.dropZoneHandleDrop):

  • UserInterface/Views/LocalResourceOverrideLabelView.js:

(WI.LocalResourceOverrideLabelView):
(WI.LocalResourceOverrideLabelView.prototype.initialLayout):

  • UserInterface/Views/LocalResourceOverrideTreeElement.js:

(WI.LocalResourceOverrideTreeElement):
(WI.LocalResourceOverrideTreeElement.prototype.get mainTitleText):
(WI.LocalResourceOverrideTreeElement.prototype.willDismissPopover):

  • UserInterface/Views/LocalResourceOverrideWarningView.js:

(WI.LocalResourceOverrideWarningView):
(WI.LocalResourceOverrideWarningView.prototype.initialLayout):
(WI.LocalResourceOverrideWarningView.prototype._updateContent):
(WI.LocalResourceOverrideWarningView.prototype._handleLocalResourceOverrideAddedOrRemoved):

  • UserInterface/Views/NavigationSidebarPanel.js:

(WI.NavigationSidebarPanel.prototype.pruneStaleResourceTreeElements):

  • UserInterface/Views/OpenResourceDialog.js:

(WI.OpenResourceDialog.prototype._populateResourceTreeOutline):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WI.SourceCodeTextEditor.prototype.get _supportsDebugging):

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel.prototype._willDismissLocalOverridePopover):
(WI.SourcesNavigationSidebarPanel.prototype._closeContentViewsFilter):
(WI.SourcesNavigationSidebarPanel.prototype._addLocalOverride):
(WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange):

  • UserInterface/Views/ResourceTreeElement.js:

(WI.ResourceTreeElement.prototype.get mainTitleText):
(WI.ResourceTreeElement.prototype._updateTitles):
(WI.ResourceTreeElement.prototype._updateIcon):

  • UserInterface/Views/TextResourceContentView.js:

(WI.TextResourceContentView):
(WI.TextResourceContentView.prototype.get navigationItems):
(WI.TextResourceContentView.prototype.requestLocalResourceOverrideInitialContent):
(WI.TextResourceContentView.prototype._shouldBeEditable):
Replace usage of get isLocalResourceOverride with get localResourceOverride.

  • UserInterface/Base/HTTPUtilities.js:

Add constants for known request methods.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:
  • UserInterface/Test.html:
  • UserInterface/Images/DocumentIcons.svg:
  • UserInterface/Base/ReferencePage.js:

Add url for local overrides page.

LayoutTests:

  • inspector/network/intercept-aborted-request.html: Renamed from LayoutTests/http/tests/inspector/network/intercept-aborted-request.html.
  • inspector/network/intercept-aborted-request-expected.txt: Renamed from LayoutTests/http/tests/inspector/network/intercept-aborted-request-expected.txt.
  • inspector/network/interceptContinue.html: Renamed from LayoutTests/http/tests/inspector/network/intercept-request-continue.html.
  • inspector/network/interceptContinue-expected.txt: Renamed from LayoutTests/http/tests/inspector/network/intercept-request-continue.html.
  • inspector/network/interceptRequestWithError.html: Renamed from LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html.
  • inspector/network/interceptRequestWithError-expected.txt: Renamed from LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html.
  • http/tests/inspector/network/intercept-request-fragment.html:
  • http/tests/inspector/network/intercept-request-main-resource.html:
  • http/tests/inspector/network/intercept-request-main-resource-with-response.html:
  • http/tests/inspector/network/intercept-request-properties.html:
  • http/tests/inspector/network/intercept-request-properties-expected.txt:
  • http/tests/inspector/network/intercept-request-subresource.html:
  • http/tests/inspector/network/intercept-request-subresource-with-response.html:
  • http/tests/inspector/network/intercept-request-with-response.html:
  • http/tests/inspector/network/intercept-request-with-response-expected.txt:
  • http/tests/inspector/network/local-resource-override-basic.html:
  • http/tests/inspector/network/local-resource-override-basic-expected.txt:
  • http/tests/inspector/network/local-resource-override-main-resource.html:
  • http/tests/inspector/network/local-resource-override-script-tag.html:
  • http/tests/inspector/network/resource-response-inspector-override.html:
  • inspector/network/local-resource-override-continue-response.html: Removed.
  • inspector/network/local-resource-override-continue-response-expected.txt: Removed.

Merged into LayoutTests/inspector/network/interceptContinue.html.

  • platform/mac-wk1/TestExpectations:
2:22 PM Changeset in webkit [270603] by Alan Coon
  • 1 copy in tags/Safari-610.3.7.1.10

Tag Safari-610.3.7.1.10.

2:20 PM Changeset in webkit [270602] by Alan Coon
  • 8 edits in branches/safari-610.3.7.1-branch/Source

Versioning.

WebKit-7610.3.7.1.10

2:15 PM Changeset in webkit [270601] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Allow mach-lookup of com.apple.relatived.tempest in WebKit GPU process
https://bugs.webkit.org/show_bug.cgi?id=219701
<rdar://problem/71980348>

Reviewed by Darin Adler.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
1:42 PM Changeset in webkit [270600] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Turn on HAVE(SYSTEM_FEATURE_FLAGS) on WatchOS and TvOS
https://bugs.webkit.org/show_bug.cgi?id=219703

Reviewed by Darin Adler.

Turn on HAVE(SYSTEM_FEATURE_FLAGS) on WatchOS and TvOS. This should fix the build
after r270542.

  • wtf/PlatformHave.h:
1:38 PM Changeset in webkit [270599] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Some WebGL tests crash in WebKit::RemoteRenderingBackendProxy::willAppendItem(WebCore::RenderingResourceIdentifier)
https://bugs.webkit.org/show_bug.cgi?id=219700

Reviewed by Tim Horton.

Fixes these assertions by resetting the identifier of the "most recently appended" image buffer
(m_currentDestinationImageBufferIdentifier) when the image buffer is released in the rendering
backend. We keep track of this so that we can append MetaCommandChangeDestinationImageBuffer
items when painting into multiple image buffers; the code to do this in willAppendItem is
actually robust against the case where m_currentDestinationImageBufferIdentifier is unknown,
but still debug asserts.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::releaseRemoteResource):

1:24 PM Changeset in webkit [270598] by wilander@apple.com
  • 7 edits in trunk

PCM: Make JSON key names use underscores according to the W3C conversation
https://bugs.webkit.org/show_bug.cgi?id=219696
<rdar://problem/72143642>

Reviewed by Brent Fulgham.

Further discussion in https://github.com/privacycg/private-click-measurement/issues/30
concluded that the JSON report should use underscores in its keys instead of dashes.
This patch makes that change and shortens the "report_version" key to just "version".

Source/WebCore:

Existing tests updated.

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::json const):

Tools:

  • TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp:

(TestWebKitAPI::TEST):

LayoutTests:

  • http/tests/privateClickMeasurement/expired-attribution-report-gets-sent-on-session-start-expected.txt:
  • http/tests/privateClickMeasurement/send-attribution-conversion-request-expected.txt:
12:55 PM Changeset in webkit [270597] by graouts@webkit.org
  • 5 edits in trunk

text-decoration-color animation should not be discrete
https://bugs.webkit.org/show_bug.cgi?id=219691
<rdar://problem/72138361>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-transitions/properties-value-003-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

We mistakenly added animation support for text-decoration-color in r269812 as a discrete property.
We now correctly make it a property that supports interpolation of the color type.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

12:40 PM Changeset in webkit [270596] by Russell Epstein
  • 1 copy in tags/Safari-611.1.7.2

Tag Safari-611.1.7.2.

12:35 PM Changeset in webkit [270595] by Russell Epstein
  • 8 edits in branches/safari-611.1.7-branch/Source

Versioning.

WebKit-7611.1.7.2

12:12 PM Changeset in webkit [270594] by Ryan Haddad
  • 7 edits in trunk/Source/WebCore

Unreviewed, reverting r270544 and r270569.

Caused two editing tests to consistently crash on iOS

Reverted changesets:

"[LFC][Integration] Invalidate line layout path for children
of inlines"
https://bugs.webkit.org/show_bug.cgi?id=219639
https://trac.webkit.org/changeset/270544

"Unreviewed. Add missing LFC guards around LineLayout usage
from r270544"
https://trac.webkit.org/changeset/270569

11:58 AM Changeset in webkit [270593] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Fix clicking on links in PDFs on Big Sur after r266654
https://bugs.webkit.org/show_bug.cgi?id=219665
<rdar://problem/72080683>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-09
Reviewed by Tim Horton.

mouseUp: was being called by AppKit on the WKPDFHUDView instead of the WKWebView, causing the event to not make it to the PDFPlugin,
which meant PDFKit wasn't being told it was clicked on, which means it wasn't telling WebKit to change the frame's location.
Overriding hitTest to forward all mouse events to the WKWebView solves this problem.

Covered by the WebKit.PDFLinkReferrer API test, which was failing on Big Sur, where ENABLE(UI_PROCESS_PDF_HUD) is true.

  • UIProcess/PDF/WKPDFHUDView.mm:

(-[WKPDFHUDView hitTest:]):

11:53 AM Changeset in webkit [270592] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Make PDFHUD.MoveIFrame API test more robust
https://bugs.webkit.org/show_bug.cgi?id=219667
<rdar://problem/68639688>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-09
Reviewed by Geoffrey Garen.

This test would time out if the place where the TestWKWebView is obscured, which happens frequently on the bots.
Make the test pass if this is the case. It's unfortunate to skip it often, but it still runs sometimes,
and I think this is better than having no test.

  • TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:

(TEST):

11:50 AM Changeset in webkit [270591] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit

[Concurrent display lists] Support playback of display list items with cached resources
https://bugs.webkit.org/show_bug.cgi?id=218614
<rdar://problem/71326662>

Reviewed by Tim Horton.

Teaches the GPU process to resume playback of display list items that were previously unable to be played back
due to missing cached resources. See below for more details.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::createImageBuffer):

See if the newly created image buffer's ID matches that of the pending wakeup message; if so, immediately kick
off the wakeup loop.

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):
(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayList):

In the case where the next destination image buffer is unknown, bail early and resume when we eventually learn
about the image buffer in the GPU process. This can happen if a MetaCommandChangeDestinationImageBuffer item is
added that references a newly created image buffer.

(WebKit::RemoteRenderingBackend::setNextItemBufferToRead):
(WebKit::RemoteRenderingBackend::cacheNativeImage):

See if the newly cached image's ID matches that of the pending wakeup message; if so, immediately kick off the
wakeup loop.

(WebKit::RemoteRenderingBackend::didCreateSharedDisplayListHandle):

  • GPUProcess/graphics/RemoteRenderingBackend.h:

Add a private PendingWakeupInformation struct that encapsulates all the information needed to remember that
we stopped display list processing, and resume processing in the future. Currently, this contains a set of
wakeup message arguments, and (optionally) the identifier of the missing resource that we need to receive in
order to continue.

We also use this in place of storing GPUProcessWakeupMessageArguments on RemoteRenderingBackend.

(WebKit::RemoteRenderingBackend::PendingWakeupInformation::shouldPerformWakeup const):

11:30 AM Changeset in webkit [270590] by Antti Koivisto
  • 6 edits in trunk

Font loads are triggered too late
https://bugs.webkit.org/show_bug.cgi?id=219678

Reviewed by Geoffrey Garen.

Source/WebCore:

CSSFontSelector triggers font loads on zero duration timer after style resolution.
This can get delayed substantially and all sorts of less important loads (for example
CSS images triggered during render tree building) may go out first.

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::beginLoadingFontSoon):
(WebCore::CSSFontSelector::loadPendingFonts):

Factor the actual load triggering into a function.

(WebCore::CSSFontSelector::fontLoadingTimerFired):

Timer still takes care of the checkLoadComplete.

(WebCore::CSSFontSelector::suspend):
(WebCore::CSSFontSelector::resume):

  • css/CSSFontSelector.h:
  • dom/Document.cpp:

(WebCore::Document::resolveStyle):

Trigger font loads right after style resolution, before render tree building.

LayoutTests:

  • fast/text/web-font-load-fallback-during-loading-no-multiple-expected.txt:
10:50 AM Changeset in webkit [270589] by graouts@webkit.org
  • 6 edits in trunk

REGRESSION (r269812): Amazon Prime: thumbnail fails to expand properly
https://bugs.webkit.org/show_bug.cgi?id=219692
<rdar://problem/71878636>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Correctly fail tests where the "position" property is expected to start a transition
and correctly pass tests some other "position" tests.

  • web-platform-tests/css/css-logical/animations/float-interpolation-expected.txt:
  • web-platform-tests/css/css-position/animations/position-interpolation-expected.txt:
  • web-platform-tests/css/css-transitions/properties-value-003-expected.txt:

Source/WebCore:

We regressed hovering over titles on the main page of Amazon Prime Video since those hover effects
change "position" from "static" to "absolute" and have "transition-property" set to "all".

The CSS Transitions specification defines the following in its "Starting of transitions" section
(https://drafts.csswg.org/css-transitions/#starting):

"When comparing the before-change style and after-change style for a given property, the property
values are transitionable if they have an animation type that is neither not animatable nor discrete."

AnimationTimeline::updateCSSTransitionsForStyleableAndProperty(), which implements the specification
text of the "Starting of transitions" section, relies on CSSPropertyAnimation::canPropertyBeInterpolated()
to determine whether a property can be interpolated. This function, in turn, uses the AnimationPropertyWrapperBase
method canInterpolate() to determine support for interpolation.

When adding support for discrete properties, we neglected to make DiscretePropertyWrapper implement this method
and return false, which we correct in this patch.

Fixing this uncovered two issues. First, the WPT test css/css-transitions/properties-value-003.html incorrectly
thinks that the "position" property can be interpolated and start transitions. The WPT issue #26822 deals with
this issue.

Second, text-decoration-color is mistakenly marked as discrete in our implementation. This will be dealt with
in bug 219691.

  • animation/CSSPropertyAnimation.cpp:
10:37 AM Changeset in webkit [270588] by Jonathan Bedard
  • 3 edits in trunk/Tools

[webkitcorepy] Specify TLS configuration of autoinstaller
https://bugs.webkit.org/show_bug.cgi?id=219694
<rdar://problem/72139146>

Reviewed by Stephanie Lewis.

  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py:

(AutoInstall._request): Encountered an issue where the default TLS configuration
was too restrictive in Python 2.7.18.

10:32 AM Changeset in webkit [270587] by commit-queue@webkit.org
  • 50 edits
    2 copies
    14 adds in trunk

Source/WebCore:
Implement RemoteGraphicsContextGL
https://bugs.webkit.org/show_bug.cgi?id=217216
<rdar://problem/69876258>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-12-09
Reviewed by Simon Fraser.

Implements a beginning of a remote version of GraphicsContextGL for GPU
process. Current implementation is using WebKit IPC.

Implemented with a generator script implementing the IPC to pass the
GraphicsContextGL member function calls from web process to the GPU
process. The script is run during development time and the results are
committed to the repo for ease of review.

Extracts an interface GraphicsContextGLIOSurfaceSwapChain which is
used to submit IOSurfaces from GraphicsContextGLOpenGL. For
web process WebGL, these go to WebGLLayer. For GPU process WebGL,
the IOSurfaces go to the prepareForDisplay caller, e.g. the
RemoteGraphicsContextGL, which then return the IOSurfaces back
to Web process side. RemoteGraphicsContextGLProxy will send
them to WebGLLayer.

No new tests, tested by existing webgl tests once the implementation works.

  • PlatformMac.cmake:
  • Sources.txt:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getBufferSubData):
(WebCore::WebGL2RenderingContext::vertexAttribI4uiv):
(WebCore::WebGL2RenderingContext::getQueryParameter):
(WebCore::WebGL2RenderingContext::bindSampler):
(WebCore::WebGL2RenderingContext::getSamplerParameter):
(WebCore::WebGL2RenderingContext::clientWaitSync):
(WebCore::WebGL2RenderingContext::deleteTransformFeedback):
(WebCore::WebGL2RenderingContext::beginTransformFeedback):
(WebCore::WebGL2RenderingContext::endTransformFeedback):
(WebCore::WebGL2RenderingContext::transformFeedbackVaryings):
(WebCore::WebGL2RenderingContext::getActiveUniforms):
(WebCore::WebGL2RenderingContext::readPixels):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):
(WebCore::WebGLRenderingContextBase::readPixels):

  • html/canvas/WebGLSync.cpp:

(WebCore::WebGLSync::updateCache):

  • page/Chrome.cpp:

(WebCore::Chrome::createGraphicsContextGL const):
(WebCore::Chrome::windowScreenDidChange):

  • page/Chrome.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::createGraphicsContextGL const):

  • platform/HostWindow.h:
  • platform/RuntimeApplicationChecks.h:

(WebCore::isInGPUProcess):

  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::isInGPUProcess):

  • platform/graphics/ExtensionsGL.h:
  • platform/graphics/GraphicsContextGL.cpp:

(WebCore::GraphicsContextGL::create):

  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/GraphicsTypesGL.h:

(GCGLSpan::GCGLSpan):
(GCGLSpan<GCGLvoid>::GCGLSpan):

  • platform/graphics/RemoteGraphicsContextGLProxyBase.cpp: Added.

(WebCore::RemoteGraphicsContextGLProxyBase::RemoteGraphicsContextGLProxyBase):
(WebCore::RemoteGraphicsContextGLProxyBase::platformGraphicsContextGL const):
(WebCore::RemoteGraphicsContextGLProxyBase::platformTexture const):
(WebCore::RemoteGraphicsContextGLProxyBase::getExtensions):
(WebCore::RemoteGraphicsContextGLProxyBase::setContextVisibility):
(WebCore::RemoteGraphicsContextGLProxyBase::powerPreferenceUsedForCreation const):
(WebCore::RemoteGraphicsContextGLProxyBase::isGLES2Compliant const):
(WebCore::RemoteGraphicsContextGLProxyBase::markContextChanged):
(WebCore::RemoteGraphicsContextGLProxyBase::markLayerComposited):
(WebCore::RemoteGraphicsContextGLProxyBase::layerComposited const):
(WebCore::RemoteGraphicsContextGLProxyBase::setBuffersToAutoClear):
(WebCore::RemoteGraphicsContextGLProxyBase::getBuffersToAutoClear const):
(WebCore::RemoteGraphicsContextGLProxyBase::paintCompositedResultsToCanvas):
(WebCore::RemoteGraphicsContextGLProxyBase::enablePreserveDrawingBuffer):
(WebCore::RemoteGraphicsContextGLProxyBase::supports):
(WebCore::RemoteGraphicsContextGLProxyBase::ensureEnabled):
(WebCore::RemoteGraphicsContextGLProxyBase::isEnabled):
(WebCore::RemoteGraphicsContextGLProxyBase::initialize):
(WebCore::RemoteGraphicsContextGLProxyBase::platformInitialize):
(WebCore::RemoteGraphicsContextGLProxyBase::platformLayer const):

  • platform/graphics/RemoteGraphicsContextGLProxyBase.h: Added.
  • platform/graphics/angle/ExtensionsGLANGLE.cpp:

(WebCore::ExtensionsGLANGLE::ExtensionsGLANGLE):
(WebCore::ExtensionsGLANGLE::getGraphicsResetStatusARB):
(WebCore::ExtensionsGLANGLE::getTranslatedShaderSourceANGLE):
(WebCore::ExtensionsGLANGLE::blitFramebufferANGLE):
(WebCore::ExtensionsGLANGLE::renderbufferStorageMultisampleANGLE):
(WebCore::ExtensionsGLANGLE::drawArraysInstancedANGLE):
(WebCore::ExtensionsGLANGLE::drawElementsInstancedANGLE):
(WebCore::ExtensionsGLANGLE::vertexAttribDivisorANGLE):
(WebCore::ExtensionsGLANGLE::getUniformuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexLevelParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexLevelParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformuivRobustANGLE):

  • platform/graphics/angle/ExtensionsGLANGLE.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::readnPixels):
(WebCore::GraphicsContextGLOpenGL::readnPixelsImpl):
(WebCore::GraphicsContextGLOpenGL::getBufferSubData):
(WebCore::GraphicsContextGLOpenGL::getActiveUniforms):
(WebCore::GraphicsContextGLOpenGL::getQueryObjectui):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameterf):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameteri):
(WebCore::GraphicsContextGLOpenGL::getSynci):

  • platform/graphics/cocoa/GraphicsContextGLIOSurfaceSwapChain.cpp: Added.
  • platform/graphics/cocoa/GraphicsContextGLIOSurfaceSwapChain.h: Copied from Source/WebCore/platform/graphics/cocoa/WebGLLayer.h.
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::InitializeEGLDisplay):
(WebCore::GraphicsContextGLOpenGL::create):
(WebCore::GraphicsContextGLOpenGL::createShared):
(WebCore::GraphicsContextGLOpenGL::createForGPUProcess):
(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::reshapeDisplayBufferBacking):
(WebCore::GraphicsContextGLOpenGL::allocateAndBindDisplayBufferBacking):
(WebCore::GraphicsContextGLOpenGL::allowOfflineRenderers const):
(WebCore::GraphicsContextGLOpenGL::prepareForDisplay):

  • platform/graphics/cocoa/RemoteGraphicsContextGLProxyBaseCocoa.mm: Added.

(WebCore::RemoteGraphicsContextGLProxyBase::platformInitialize):
(WebCore::RemoteGraphicsContextGLProxyBase::platformLayer const):
(WebCore::RemoteGraphicsContextGLProxyBase::asCV):
(WebCore::RemoteGraphicsContextGLProxyBase::platformSwapChain):

  • platform/graphics/cocoa/WebGLLayer.h:
  • platform/graphics/cocoa/WebGLLayer.mm:

(-[WebGLLayer initWithDevicePixelRatio:contentsOpaque:]):
(-[WebGLLayer swapChain]):
(-[WebGLLayer prepareForDisplay]):
(-[WebGLLayer display]):
(WebGLLayerSwapChain::present):

  • platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:
  • platform/graphics/opengl/ExtensionsGLOpenGL.cpp:

(WebCore::ExtensionsGLOpenGL::blitFramebufferANGLE):
(WebCore::ExtensionsGLOpenGL::renderbufferStorageMultisampleANGLE):
(WebCore::ExtensionsGLOpenGL::drawArraysInstancedANGLE):
(WebCore::ExtensionsGLOpenGL::drawElementsInstancedANGLE):
(WebCore::ExtensionsGLOpenGL::vertexAttribDivisorANGLE):

  • platform/graphics/opengl/ExtensionsGLOpenGL.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:

(WebCore::ExtensionsGLOpenGLCommon::readnPixelsRobustANGLE):

  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLES.cpp:

(WebCore::ExtensionsGLOpenGLES::blitFramebufferANGLE):
(WebCore::ExtensionsGLOpenGLES::renderbufferStorageMultisampleANGLE):
(WebCore::ExtensionsGLOpenGLES::drawArraysInstancedANGLE):
(WebCore::ExtensionsGLOpenGLES::drawElementsInstancedANGLE):
(WebCore::ExtensionsGLOpenGLES::vertexAttribDivisorANGLE):

  • platform/graphics/opengl/ExtensionsGLOpenGLES.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::drawArraysInstanced):
(WebCore::GraphicsContextGLOpenGL::drawElementsInstanced):
(WebCore::GraphicsContextGLOpenGL::vertexAttribDivisor):
(WebCore::GraphicsContextGLOpenGL::getBufferSubData):
(WebCore::GraphicsContextGLOpenGL::getQueryObjectui):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameterf):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameteri):
(WebCore::GraphicsContextGLOpenGL::getSynci):
(WebCore::GraphicsContextGLOpenGL::getActiveUniforms):

  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:

(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):

Source/WebKit:
Implement RemoteWebGLBackend
https://bugs.webkit.org/show_bug.cgi?id=217216
<rdar://problem/69876258>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-12-09
Reviewed by Simon Fraser.

Implements a beginning of a remote version of GraphicsContextGL for GPU
process. Current implementation is using WebKit IPC.

Implemented with a generator script implementing the IPC to pass the
GraphicsContextGL member function calls from web process to the GPU
process. The script is run during development time and the results are
committed to the repo for ease of review.

Implement the RemoteGraphicsContextGL in WebKit side. This class will
forward calls received via IPC to the GraphicsContextGLOpenGL. At the
moment RemoteGraphicsContextGL instance is a direct child of
GPUConnectionToWebProcess.

Compositing is implemented only for PLATFORM(COCOA).

Missing:

  • Simulated context loss
  • Simulated context change
  • Paint WebGL contents to 2D canvas
  • Upload video to WebGL
  • Upload canvas to WebGL
  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::createGraphicsContextGL):
(WebKit::GPUConnectionToWebProcess::releaseGraphicsContextGL):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp: Added.

(WebKit::RemoteGraphicsContextGL::create):
(WebKit::RemoteGraphicsContextGL::RemoteGraphicsContextGL):
(WebKit::RemoteGraphicsContextGL::~RemoteGraphicsContextGL):
(WebKit::RemoteGraphicsContextGL::gpuConnectionToWebProcess const):
(WebKit::RemoteGraphicsContextGL::messageSenderConnection const):
(WebKit::RemoteGraphicsContextGL::messageSenderDestinationID const):
(WebKit::RemoteGraphicsContextGL::didComposite):
(WebKit::RemoteGraphicsContextGL::forceContextLost):
(WebKit::RemoteGraphicsContextGL::recycleContext):
(WebKit::RemoteGraphicsContextGL::dispatchContextChangedNotification):
(WebKit::RemoteGraphicsContextGL::recycleBuffer):
(WebKit::RemoteGraphicsContextGL::present):
(WebKit::RemoteGraphicsContextGL::detachClient):
(WebKit::RemoteGraphicsContextGL::reshape):
(WebKit::RemoteGraphicsContextGL::prepareForDisplay):
(WebKit::RemoteGraphicsContextGL::ensureExtensionEnabled):
(WebKit::RemoteGraphicsContextGL::notifyMarkContextChanged):

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

(setFailNextGPUStatusCheck):
(synthesizeGLError):
(moveErrorsToSyntheticErrorList):
(activeTexture):
(attachShader):
(bindAttribLocation):
(bindBuffer):
(bindFramebuffer):
(bindRenderbuffer):
(bindTexture):
(blendColor):
(blendEquation):
(blendEquationSeparate):
(blendFunc):
(blendFuncSeparate):
(checkFramebufferStatus):
(clear):
(clearColor):
(clearDepth):
(clearStencil):
(colorMask):
(compileShader):
(copyTexImage2D):
(copyTexSubImage2D):
(createBuffer):
(createFramebuffer):
(createProgram):
(createRenderbuffer):
(createShader):
(createTexture):
(cullFace):
(deleteBuffer):
(deleteFramebuffer):
(deleteProgram):
(deleteRenderbuffer):
(deleteShader):
(deleteTexture):
(depthFunc):
(depthMask):
(depthRange):
(detachShader):
(disable):
(disableVertexAttribArray):
(drawArrays):
(drawElements):
(enable):
(enableVertexAttribArray):
(finish):
(flush):
(framebufferRenderbuffer):
(framebufferTexture2D):
(frontFace):
(generateMipmap):
(getActiveAttrib):
(getActiveUniform):
(getAttribLocation):
(getBufferParameteri):
(getString):
(getFloatv):
(getIntegerv):
(getInteger64):
(getInteger64i):
(getProgrami):
(getBooleanv):
(getError):
(getFramebufferAttachmentParameteri):
(getProgramInfoLog):
(getRenderbufferParameteri):
(getShaderi):
(getShaderInfoLog):
(getShaderPrecisionFormat):
(getShaderSource):
(getTexParameterf):
(getTexParameteri):
(getUniformfv):
(getUniformiv):
(getUniformuiv):
(getUniformLocation):
(getVertexAttribOffset):
(hint):
(isBuffer):
(isEnabled):
(isFramebuffer):
(isProgram):
(isRenderbuffer):
(isShader):
(isTexture):
(lineWidth):
(linkProgram):
(pixelStorei):
(polygonOffset):
(renderbufferStorage):
(sampleCoverage):
(scissor):
(shaderSource):
(stencilFunc):
(stencilFuncSeparate):
(stencilMask):
(stencilMaskSeparate):
(stencilOp):
(stencilOpSeparate):
(texParameterf):
(texParameteri):
(uniform1f):
(uniform1fv):
(uniform1i):
(uniform1iv):
(uniform2f):
(uniform2fv):
(uniform2i):
(uniform2iv):
(uniform3f):
(uniform3fv):
(uniform3i):
(uniform3iv):
(uniform4f):
(uniform4fv):
(uniform4i):
(uniform4iv):
(uniformMatrix2fv):
(uniformMatrix3fv):
(uniformMatrix4fv):
(useProgram):
(validateProgram):
(vertexAttrib1f):
(vertexAttrib1fv):
(vertexAttrib2f):
(vertexAttrib2fv):
(vertexAttrib3f):
(vertexAttrib3fv):
(vertexAttrib4f):
(vertexAttrib4fv):
(vertexAttribPointer):
(viewport):
(bufferData0):
(bufferData1):
(bufferSubData):
(readnPixels0):
(readnPixels1):
(texImage2D0):
(texImage2D1):
(texSubImage2D0):
(texSubImage2D1):
(compressedTexImage2D0):
(compressedTexImage2D1):
(compressedTexSubImage2D0):
(compressedTexSubImage2D1):
(drawArraysInstanced):
(drawElementsInstanced):
(vertexAttribDivisor):
(createVertexArray):
(deleteVertexArray):
(isVertexArray):
(bindVertexArray):
(copyBufferSubData):
(getBufferSubData):
(blitFramebuffer):
(framebufferTextureLayer):
(invalidateFramebuffer):
(invalidateSubFramebuffer):
(readBuffer):
(renderbufferStorageMultisample):
(texStorage2D):
(texStorage3D):
(texImage3D0):
(texImage3D1):
(texSubImage3D0):
(texSubImage3D1):
(copyTexSubImage3D):
(compressedTexImage3D0):
(compressedTexImage3D1):
(compressedTexSubImage3D0):
(compressedTexSubImage3D1):
(getFragDataLocation):
(uniform1ui):
(uniform2ui):
(uniform3ui):
(uniform4ui):
(uniform1uiv):
(uniform2uiv):
(uniform3uiv):
(uniform4uiv):
(uniformMatrix2x3fv):
(uniformMatrix3x2fv):
(uniformMatrix2x4fv):
(uniformMatrix4x2fv):
(uniformMatrix3x4fv):
(uniformMatrix4x3fv):
(vertexAttribI4i):
(vertexAttribI4iv):
(vertexAttribI4ui):
(vertexAttribI4uiv):
(vertexAttribIPointer):
(drawRangeElements):
(drawBuffers):
(clearBufferiv):
(clearBufferuiv):
(clearBufferfv):
(clearBufferfi):
(createQuery):
(deleteQuery):
(isQuery):
(beginQuery):
(endQuery):
(getQuery):
(getQueryObjectui):
(createSampler):
(deleteSampler):
(isSampler):
(bindSampler):
(samplerParameteri):
(samplerParameterf):
(getSamplerParameterf):
(getSamplerParameteri):
(fenceSync):
(isSync):
(deleteSync):
(clientWaitSync):
(waitSync):
(getSynci):
(createTransformFeedback):
(deleteTransformFeedback):
(isTransformFeedback):
(bindTransformFeedback):
(beginTransformFeedback):
(endTransformFeedback):
(transformFeedbackVaryings):
(getTransformFeedbackVarying):
(pauseTransformFeedback):
(resumeTransformFeedback):
(bindBufferBase):
(bindBufferRange):
(getUniformIndices):
(getActiveUniforms):
(getUniformBlockIndex):
(getActiveUniformBlockName):
(uniformBlockBinding):
(getActiveUniformBlockiv):
(getGraphicsResetStatusARB):
(blitFramebufferANGLE):
(renderbufferStorageMultisampleANGLE):
(createVertexArrayOES):
(deleteVertexArrayOES):
(isVertexArrayOES):
(bindVertexArrayOES):
(getTranslatedShaderSourceANGLE):
(insertEventMarkerEXT):
(pushGroupMarkerEXT):
(popGroupMarkerEXT):
(drawBuffersEXT):
(drawArraysInstancedANGLE):
(drawElementsInstancedANGLE):
(vertexAttribDivisorANGLE):

  • GPUProcess/mac/GPUProcessMac.mm:

(WebKit::GPUProcess::initializeProcess):

  • GPUProcess/media/RemoteLegacyCDMProxy.h:
  • GPUProcess/media/RemoteLegacyCDMSessionProxy.cpp:
  • GPUProcess/media/RemoteMediaResourceManager.cpp:
  • GPUProcess/media/RemoteMediaResourceManager.h:
  • GPUProcess/media/RemoteMediaSourceProxy.h:
  • GPUProcess/media/RemoteSourceBufferProxy.cpp:
  • GPUProcess/media/RemoteSourceBufferProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
  • NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h:
  • NetworkProcess/Downloads/Download.cpp:
  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:
  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/NetworkSocketChannel.cpp:
  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/NetworkSocketStream.cpp:
  • NetworkProcess/NetworkSocketStream.h:
  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:
  • NetworkProcess/WebSocketTask.h:
  • NetworkProcess/cocoa/WebSocketTaskCocoa.h:
  • NetworkProcess/cocoa/WebSocketTaskCocoa.mm:
  • NetworkProcess/soup/WebSocketTaskSoup.cpp:
  • NetworkProcess/soup/WebSocketTaskSoup.h:
  • Platform/IPC/ArgumentCoders.h:
  • Platform/IPC/ArrayReference.h: Copied from Source/WebKit/Platform/IPC/DataReference.h.

(IPC::ArrayReference::ArrayReference):
(IPC::ArrayReference::isEmpty const):
(IPC::ArrayReference::size const):
(IPC::ArrayReference::data const):
(IPC::ArrayReference::vector const):

  • Platform/IPC/Connection.h:

(IPC::Connection::sendSync):

  • Platform/IPC/DataReference.h:
  • Platform/IPC/Decoder.cpp:

(IPC::Decoder::decodeFixedLengthReference):

  • Platform/IPC/Decoder.h:
  • Platform/IPC/Encoder.cpp:

(IPC::Encoder::wrapForTesting):

  • Platform/IPC/Encoder.h:
  • Platform/IPC/HandleMessage.h:
  • Platform/IPC/MessageSender.h:

(IPC::MessageSender::sendSync):

  • Platform/IPC/SharedBufferCopy.cpp:

(IPC::SharedBufferCopy::decode):

  • Platform/IPC/SharedBufferDataReference.cpp:
  • Platform/IPC/StringReference.cpp:
  • PluginProcess/PluginControllerProxy.cpp:
  • PluginProcess/PluginControllerProxy.h:
  • Scripts/webkit/messages.py:
  • Shared/API/APIData.cpp:
  • Shared/AuxiliaryProcess.h:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<WebCore::GraphicsContextGLAttributes>::encode):
(IPC::ArgumentCoder<WebCore::GraphicsContextGLAttributes>::decode):
(IPC::ArgumentCoder<WebCore::GraphicsContextGL::ActiveInfo>::encode):
(IPC::ArgumentCoder<WebCore::GraphicsContextGL::ActiveInfo>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • Shared/cf/ArgumentCodersCF.cpp:
  • Shared/soup/WebCoreArgumentCodersSoup.cpp:

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

  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/API/APIIconLoadingClient.h:
  • UIProcess/AuxiliaryProcessProxy.h:

(WebKit::AuxiliaryProcessProxy::sendSync):

  • UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.h:
  • UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h:
  • UIProcess/PageClient.h:
  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:
  • UIProcess/UserContent/WebUserContentControllerProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebURLSchemeHandler.h:
  • UIProcess/WebURLSchemeTask.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/ApplePay/WebPaymentCoordinator.h:
  • WebProcess/GPU/GPUProcessConnection.h:
  • WebProcess/GPU/graphics/GraphicsContextGLIdentifier.h: Renamed from Source/WebKit/Platform/IPC/DataReference.cpp.
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp: Added.

(WebKit::RemoteGraphicsContextGLProxy::create):
(WebKit::RemoteGraphicsContextGLProxy::RemoteGraphicsContextGLProxy):
(WebKit::RemoteGraphicsContextGLProxy::~RemoteGraphicsContextGLProxy):
(WebKit::RemoteGraphicsContextGLProxy::messageSenderConnection const):
(WebKit::RemoteGraphicsContextGLProxy::messageSenderDestinationID const):
(WebKit::RemoteGraphicsContextGLProxy::reshape):
(WebKit::RemoteGraphicsContextGLProxy::prepareForDisplay):
(WebKit::RemoteGraphicsContextGLProxy::ensureExtensionEnabled):
(WebKit::RemoteGraphicsContextGLProxy::notifyMarkContextChanged):
(WebKit::RemoteGraphicsContextGLProxy::simulateContextChanged):
(WebKit::RemoteGraphicsContextGLProxy::paintRenderingResultsToCanvas):
(WebKit::RemoteGraphicsContextGLProxy::paintRenderingResultsToImageData):
(WebKit::RemoteGraphicsContextGLProxy::wasCreated):
(WebKit::RemoteGraphicsContextGLProxy::wasLost):
(WebKit::RemoteGraphicsContextGLProxy::wasChanged):
(WebKit::RemoteGraphicsContextGLProxy::waitUntilInitialized):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h: Added.
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.messages.in: Copied from Source/WebKit/GPUProcess/GPUConnectionToWebProcess.messages.in.
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp: Added.

(WebKit::RemoteGraphicsContextGLProxy::setFailNextGPUStatusCheck):
(WebKit::RemoteGraphicsContextGLProxy::synthesizeGLError):
(WebKit::RemoteGraphicsContextGLProxy::moveErrorsToSyntheticErrorList):
(WebKit::RemoteGraphicsContextGLProxy::activeTexture):
(WebKit::RemoteGraphicsContextGLProxy::attachShader):
(WebKit::RemoteGraphicsContextGLProxy::bindAttribLocation):
(WebKit::RemoteGraphicsContextGLProxy::bindBuffer):
(WebKit::RemoteGraphicsContextGLProxy::bindFramebuffer):
(WebKit::RemoteGraphicsContextGLProxy::bindRenderbuffer):
(WebKit::RemoteGraphicsContextGLProxy::bindTexture):
(WebKit::RemoteGraphicsContextGLProxy::blendColor):
(WebKit::RemoteGraphicsContextGLProxy::blendEquation):
(WebKit::RemoteGraphicsContextGLProxy::blendEquationSeparate):
(WebKit::RemoteGraphicsContextGLProxy::blendFunc):
(WebKit::RemoteGraphicsContextGLProxy::blendFuncSeparate):
(WebKit::RemoteGraphicsContextGLProxy::checkFramebufferStatus):
(WebKit::RemoteGraphicsContextGLProxy::clear):
(WebKit::RemoteGraphicsContextGLProxy::clearColor):
(WebKit::RemoteGraphicsContextGLProxy::clearDepth):
(WebKit::RemoteGraphicsContextGLProxy::clearStencil):
(WebKit::RemoteGraphicsContextGLProxy::colorMask):
(WebKit::RemoteGraphicsContextGLProxy::compileShader):
(WebKit::RemoteGraphicsContextGLProxy::copyTexImage2D):
(WebKit::RemoteGraphicsContextGLProxy::copyTexSubImage2D):
(WebKit::RemoteGraphicsContextGLProxy::createBuffer):
(WebKit::RemoteGraphicsContextGLProxy::createFramebuffer):
(WebKit::RemoteGraphicsContextGLProxy::createProgram):
(WebKit::RemoteGraphicsContextGLProxy::createRenderbuffer):
(WebKit::RemoteGraphicsContextGLProxy::createShader):
(WebKit::RemoteGraphicsContextGLProxy::createTexture):
(WebKit::RemoteGraphicsContextGLProxy::cullFace):
(WebKit::RemoteGraphicsContextGLProxy::deleteBuffer):
(WebKit::RemoteGraphicsContextGLProxy::deleteFramebuffer):
(WebKit::RemoteGraphicsContextGLProxy::deleteProgram):
(WebKit::RemoteGraphicsContextGLProxy::deleteRenderbuffer):
(WebKit::RemoteGraphicsContextGLProxy::deleteShader):
(WebKit::RemoteGraphicsContextGLProxy::deleteTexture):
(WebKit::RemoteGraphicsContextGLProxy::depthFunc):
(WebKit::RemoteGraphicsContextGLProxy::depthMask):
(WebKit::RemoteGraphicsContextGLProxy::depthRange):
(WebKit::RemoteGraphicsContextGLProxy::detachShader):
(WebKit::RemoteGraphicsContextGLProxy::disable):
(WebKit::RemoteGraphicsContextGLProxy::disableVertexAttribArray):
(WebKit::RemoteGraphicsContextGLProxy::drawArrays):
(WebKit::RemoteGraphicsContextGLProxy::drawElements):
(WebKit::RemoteGraphicsContextGLProxy::enable):
(WebKit::RemoteGraphicsContextGLProxy::enableVertexAttribArray):
(WebKit::RemoteGraphicsContextGLProxy::finish):
(WebKit::RemoteGraphicsContextGLProxy::flush):
(WebKit::RemoteGraphicsContextGLProxy::framebufferRenderbuffer):
(WebKit::RemoteGraphicsContextGLProxy::framebufferTexture2D):
(WebKit::RemoteGraphicsContextGLProxy::frontFace):
(WebKit::RemoteGraphicsContextGLProxy::generateMipmap):
(WebKit::RemoteGraphicsContextGLProxy::getActiveAttrib):
(WebKit::RemoteGraphicsContextGLProxy::getActiveUniform):
(WebKit::RemoteGraphicsContextGLProxy::getAttribLocation):
(WebKit::RemoteGraphicsContextGLProxy::getBufferParameteri):
(WebKit::RemoteGraphicsContextGLProxy::getString):
(WebKit::RemoteGraphicsContextGLProxy::getFloatv):
(WebKit::RemoteGraphicsContextGLProxy::getIntegerv):
(WebKit::RemoteGraphicsContextGLProxy::getInteger64):
(WebKit::RemoteGraphicsContextGLProxy::getInteger64i):
(WebKit::RemoteGraphicsContextGLProxy::getProgrami):
(WebKit::RemoteGraphicsContextGLProxy::getBooleanv):
(WebKit::RemoteGraphicsContextGLProxy::getError):
(WebKit::RemoteGraphicsContextGLProxy::getFramebufferAttachmentParameteri):
(WebKit::RemoteGraphicsContextGLProxy::getProgramInfoLog):
(WebKit::RemoteGraphicsContextGLProxy::getRenderbufferParameteri):
(WebKit::RemoteGraphicsContextGLProxy::getShaderi):
(WebKit::RemoteGraphicsContextGLProxy::getShaderInfoLog):
(WebKit::RemoteGraphicsContextGLProxy::getShaderPrecisionFormat):
(WebKit::RemoteGraphicsContextGLProxy::getShaderSource):
(WebKit::RemoteGraphicsContextGLProxy::getTexParameterf):
(WebKit::RemoteGraphicsContextGLProxy::getTexParameteri):
(WebKit::RemoteGraphicsContextGLProxy::getUniformfv):
(WebKit::RemoteGraphicsContextGLProxy::getUniformiv):
(WebKit::RemoteGraphicsContextGLProxy::getUniformuiv):
(WebKit::RemoteGraphicsContextGLProxy::getUniformLocation):
(WebKit::RemoteGraphicsContextGLProxy::getVertexAttribOffset):
(WebKit::RemoteGraphicsContextGLProxy::hint):
(WebKit::RemoteGraphicsContextGLProxy::isBuffer):
(WebKit::RemoteGraphicsContextGLProxy::isEnabled):
(WebKit::RemoteGraphicsContextGLProxy::isFramebuffer):
(WebKit::RemoteGraphicsContextGLProxy::isProgram):
(WebKit::RemoteGraphicsContextGLProxy::isRenderbuffer):
(WebKit::RemoteGraphicsContextGLProxy::isShader):
(WebKit::RemoteGraphicsContextGLProxy::isTexture):
(WebKit::RemoteGraphicsContextGLProxy::lineWidth):
(WebKit::RemoteGraphicsContextGLProxy::linkProgram):
(WebKit::RemoteGraphicsContextGLProxy::pixelStorei):
(WebKit::RemoteGraphicsContextGLProxy::polygonOffset):
(WebKit::RemoteGraphicsContextGLProxy::renderbufferStorage):
(WebKit::RemoteGraphicsContextGLProxy::sampleCoverage):
(WebKit::RemoteGraphicsContextGLProxy::scissor):
(WebKit::RemoteGraphicsContextGLProxy::shaderSource):
(WebKit::RemoteGraphicsContextGLProxy::stencilFunc):
(WebKit::RemoteGraphicsContextGLProxy::stencilFuncSeparate):
(WebKit::RemoteGraphicsContextGLProxy::stencilMask):
(WebKit::RemoteGraphicsContextGLProxy::stencilMaskSeparate):
(WebKit::RemoteGraphicsContextGLProxy::stencilOp):
(WebKit::RemoteGraphicsContextGLProxy::stencilOpSeparate):
(WebKit::RemoteGraphicsContextGLProxy::texParameterf):
(WebKit::RemoteGraphicsContextGLProxy::texParameteri):
(WebKit::RemoteGraphicsContextGLProxy::uniform1f):
(WebKit::RemoteGraphicsContextGLProxy::uniform1fv):
(WebKit::RemoteGraphicsContextGLProxy::uniform1i):
(WebKit::RemoteGraphicsContextGLProxy::uniform1iv):
(WebKit::RemoteGraphicsContextGLProxy::uniform2f):
(WebKit::RemoteGraphicsContextGLProxy::uniform2fv):
(WebKit::RemoteGraphicsContextGLProxy::uniform2i):
(WebKit::RemoteGraphicsContextGLProxy::uniform2iv):
(WebKit::RemoteGraphicsContextGLProxy::uniform3f):
(WebKit::RemoteGraphicsContextGLProxy::uniform3fv):
(WebKit::RemoteGraphicsContextGLProxy::uniform3i):
(WebKit::RemoteGraphicsContextGLProxy::uniform3iv):
(WebKit::RemoteGraphicsContextGLProxy::uniform4f):
(WebKit::RemoteGraphicsContextGLProxy::uniform4fv):
(WebKit::RemoteGraphicsContextGLProxy::uniform4i):
(WebKit::RemoteGraphicsContextGLProxy::uniform4iv):
(WebKit::RemoteGraphicsContextGLProxy::uniformMatrix2fv):
(WebKit::RemoteGraphicsContextGLProxy::uniformMatrix3fv):
(WebKit::RemoteGraphicsContextGLProxy::uniformMatrix4fv):
(WebKit::RemoteGraphicsContextGLProxy::useProgram):
(WebKit::RemoteGraphicsContextGLProxy::validateProgram):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttrib1f):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttrib1fv):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttrib2f):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttrib2fv):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttrib3f):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttrib3fv):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttrib4f):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttrib4fv):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttribPointer):
(WebKit::RemoteGraphicsContextGLProxy::viewport):
(WebKit::RemoteGraphicsContextGLProxy::bufferData):
(WebKit::RemoteGraphicsContextGLProxy::bufferSubData):
(WebKit::RemoteGraphicsContextGLProxy::readnPixels):
(WebKit::RemoteGraphicsContextGLProxy::texImage2D):
(WebKit::RemoteGraphicsContextGLProxy::texSubImage2D):
(WebKit::RemoteGraphicsContextGLProxy::compressedTexImage2D):
(WebKit::RemoteGraphicsContextGLProxy::compressedTexSubImage2D):
(WebKit::RemoteGraphicsContextGLProxy::drawArraysInstanced):
(WebKit::RemoteGraphicsContextGLProxy::drawElementsInstanced):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttribDivisor):
(WebKit::RemoteGraphicsContextGLProxy::createVertexArray):
(WebKit::RemoteGraphicsContextGLProxy::deleteVertexArray):
(WebKit::RemoteGraphicsContextGLProxy::isVertexArray):
(WebKit::RemoteGraphicsContextGLProxy::bindVertexArray):
(WebKit::RemoteGraphicsContextGLProxy::copyBufferSubData):
(WebKit::RemoteGraphicsContextGLProxy::getBufferSubData):
(WebKit::RemoteGraphicsContextGLProxy::blitFramebuffer):
(WebKit::RemoteGraphicsContextGLProxy::framebufferTextureLayer):
(WebKit::RemoteGraphicsContextGLProxy::invalidateFramebuffer):
(WebKit::RemoteGraphicsContextGLProxy::invalidateSubFramebuffer):
(WebKit::RemoteGraphicsContextGLProxy::readBuffer):
(WebKit::RemoteGraphicsContextGLProxy::renderbufferStorageMultisample):
(WebKit::RemoteGraphicsContextGLProxy::texStorage2D):
(WebKit::RemoteGraphicsContextGLProxy::texStorage3D):
(WebKit::RemoteGraphicsContextGLProxy::texImage3D):
(WebKit::RemoteGraphicsContextGLProxy::texSubImage3D):
(WebKit::RemoteGraphicsContextGLProxy::copyTexSubImage3D):
(WebKit::RemoteGraphicsContextGLProxy::compressedTexImage3D):
(WebKit::RemoteGraphicsContextGLProxy::compressedTexSubImage3D):
(WebKit::RemoteGraphicsContextGLProxy::getFragDataLocation):
(WebKit::RemoteGraphicsContextGLProxy::uniform1ui):
(WebKit::RemoteGraphicsContextGLProxy::uniform2ui):
(WebKit::RemoteGraphicsContextGLProxy::uniform3ui):
(WebKit::RemoteGraphicsContextGLProxy::uniform4ui):
(WebKit::RemoteGraphicsContextGLProxy::uniform1uiv):
(WebKit::RemoteGraphicsContextGLProxy::uniform2uiv):
(WebKit::RemoteGraphicsContextGLProxy::uniform3uiv):
(WebKit::RemoteGraphicsContextGLProxy::uniform4uiv):
(WebKit::RemoteGraphicsContextGLProxy::uniformMatrix2x3fv):
(WebKit::RemoteGraphicsContextGLProxy::uniformMatrix3x2fv):
(WebKit::RemoteGraphicsContextGLProxy::uniformMatrix2x4fv):
(WebKit::RemoteGraphicsContextGLProxy::uniformMatrix4x2fv):
(WebKit::RemoteGraphicsContextGLProxy::uniformMatrix3x4fv):
(WebKit::RemoteGraphicsContextGLProxy::uniformMatrix4x3fv):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttribI4i):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttribI4iv):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttribI4ui):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttribI4uiv):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttribIPointer):
(WebKit::RemoteGraphicsContextGLProxy::drawRangeElements):
(WebKit::RemoteGraphicsContextGLProxy::drawBuffers):
(WebKit::RemoteGraphicsContextGLProxy::clearBufferiv):
(WebKit::RemoteGraphicsContextGLProxy::clearBufferuiv):
(WebKit::RemoteGraphicsContextGLProxy::clearBufferfv):
(WebKit::RemoteGraphicsContextGLProxy::clearBufferfi):
(WebKit::RemoteGraphicsContextGLProxy::createQuery):
(WebKit::RemoteGraphicsContextGLProxy::deleteQuery):
(WebKit::RemoteGraphicsContextGLProxy::isQuery):
(WebKit::RemoteGraphicsContextGLProxy::beginQuery):
(WebKit::RemoteGraphicsContextGLProxy::endQuery):
(WebKit::RemoteGraphicsContextGLProxy::getQuery):
(WebKit::RemoteGraphicsContextGLProxy::getQueryObjectui):
(WebKit::RemoteGraphicsContextGLProxy::createSampler):
(WebKit::RemoteGraphicsContextGLProxy::deleteSampler):
(WebKit::RemoteGraphicsContextGLProxy::isSampler):
(WebKit::RemoteGraphicsContextGLProxy::bindSampler):
(WebKit::RemoteGraphicsContextGLProxy::samplerParameteri):
(WebKit::RemoteGraphicsContextGLProxy::samplerParameterf):
(WebKit::RemoteGraphicsContextGLProxy::getSamplerParameterf):
(WebKit::RemoteGraphicsContextGLProxy::getSamplerParameteri):
(WebKit::RemoteGraphicsContextGLProxy::fenceSync):
(WebKit::RemoteGraphicsContextGLProxy::isSync):
(WebKit::RemoteGraphicsContextGLProxy::deleteSync):
(WebKit::RemoteGraphicsContextGLProxy::clientWaitSync):
(WebKit::RemoteGraphicsContextGLProxy::waitSync):
(WebKit::RemoteGraphicsContextGLProxy::getSynci):
(WebKit::RemoteGraphicsContextGLProxy::createTransformFeedback):
(WebKit::RemoteGraphicsContextGLProxy::deleteTransformFeedback):
(WebKit::RemoteGraphicsContextGLProxy::isTransformFeedback):
(WebKit::RemoteGraphicsContextGLProxy::bindTransformFeedback):
(WebKit::RemoteGraphicsContextGLProxy::beginTransformFeedback):
(WebKit::RemoteGraphicsContextGLProxy::endTransformFeedback):
(WebKit::RemoteGraphicsContextGLProxy::transformFeedbackVaryings):
(WebKit::RemoteGraphicsContextGLProxy::getTransformFeedbackVarying):
(WebKit::RemoteGraphicsContextGLProxy::pauseTransformFeedback):
(WebKit::RemoteGraphicsContextGLProxy::resumeTransformFeedback):
(WebKit::RemoteGraphicsContextGLProxy::bindBufferBase):
(WebKit::RemoteGraphicsContextGLProxy::bindBufferRange):
(WebKit::RemoteGraphicsContextGLProxy::getUniformIndices):
(WebKit::RemoteGraphicsContextGLProxy::getActiveUniforms):
(WebKit::RemoteGraphicsContextGLProxy::getUniformBlockIndex):
(WebKit::RemoteGraphicsContextGLProxy::getActiveUniformBlockName):
(WebKit::RemoteGraphicsContextGLProxy::uniformBlockBinding):
(WebKit::RemoteGraphicsContextGLProxy::getActiveUniformBlockiv):
(WebKit::RemoteGraphicsContextGLProxy::getGraphicsResetStatusARB):
(WebKit::RemoteGraphicsContextGLProxy::blitFramebufferANGLE):
(WebKit::RemoteGraphicsContextGLProxy::renderbufferStorageMultisampleANGLE):
(WebKit::RemoteGraphicsContextGLProxy::createVertexArrayOES):
(WebKit::RemoteGraphicsContextGLProxy::deleteVertexArrayOES):
(WebKit::RemoteGraphicsContextGLProxy::isVertexArrayOES):
(WebKit::RemoteGraphicsContextGLProxy::bindVertexArrayOES):
(WebKit::RemoteGraphicsContextGLProxy::getTranslatedShaderSourceANGLE):
(WebKit::RemoteGraphicsContextGLProxy::insertEventMarkerEXT):
(WebKit::RemoteGraphicsContextGLProxy::pushGroupMarkerEXT):
(WebKit::RemoteGraphicsContextGLProxy::popGroupMarkerEXT):
(WebKit::RemoteGraphicsContextGLProxy::drawBuffersEXT):
(WebKit::RemoteGraphicsContextGLProxy::drawArraysInstancedANGLE):
(WebKit::RemoteGraphicsContextGLProxy::drawElementsInstancedANGLE):
(WebKit::RemoteGraphicsContextGLProxy::vertexAttribDivisorANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getInternalformativ):
(WebKit::RemoteGraphicsContextGLProxy::readPixelsRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::texParameterfvRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::texParameterivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getQueryivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getQueryObjectuivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getBufferPointervRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getInternalformativRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getVertexAttribIivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getVertexAttribIuivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getUniformuivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getBufferParameteri64vRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::samplerParameterivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::samplerParameterfvRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getSamplerParameterivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getSamplerParameterfvRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getFramebufferParameterivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getProgramInterfaceivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getBooleani_vRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getMultisamplefvRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getTexLevelParameterivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getTexLevelParameterfvRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getPointervRobustANGLERobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getnUniformfvRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getnUniformivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getnUniformuivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::texParameterIivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::texParameterIuivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getTexParameterIivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getTexParameterIuivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::samplerParameterIivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::samplerParameterIuivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getSamplerParameterIivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getSamplerParameterIuivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getQueryObjectivRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getQueryObjecti64vRobustANGLE):
(WebKit::RemoteGraphicsContextGLProxy::getQueryObjectui64vRobustANGLE):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::copyVideoTextureToPlatformTexture):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::connectToGPUProcess):

  • WebProcess/GPU/media/RemoteAudioSession.cpp:
  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp:
  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.h:
  • WebProcess/GPU/media/RemoteLegacyCDMSession.cpp:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:
  • WebProcess/GPU/media/TextTrackPrivateRemote.h:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/Network/NetworkProcessConnection.h:
  • WebProcess/Network/WebResourceLoader.cpp:
  • WebProcess/Network/WebResourceLoader.h:
  • WebProcess/Network/WebSocketChannel.cpp:
  • WebProcess/Network/WebSocketChannel.h:
  • WebProcess/Network/WebSocketStream.cpp:
  • WebProcess/Network/WebSocketStream.h:
  • WebProcess/Network/webrtc/LibWebRTCSocket.h:
  • WebProcess/Plugins/PDF/PDFPlugin.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createGraphicsContextGL const):

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

(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPage::updatePreferences):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::sendSyncWithDelayedReply):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleEditingKeyboardEvent):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setUseGPUProcessForWebGL):
(WebKit::WebProcess::shouldUseRemoteRenderingForWebGL const):

  • WebProcess/WebProcess.h:

Tools:
Implement RemoteGraphicsContextGL
https://bugs.webkit.org/show_bug.cgi?id=217216
<rdar://problem/69876258>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-12-09
Reviewed by Simon Fraser.

Implements a remote version of GraphicsContextGL for GPU process.
Current implementation is using WebKit IPC and is incomplete.

Add the code generator to generate the implementation. Currently
the generator generates a WebKit IPC implementation.

The input definition to the generator is the proxy implementation
header files.
The output of the generator is

  • WebKit IPC message definition file
  • Message sender code
  • Message receiver and payload invocation code

The generator converts GraphicsContextGL GCGL -prefixed types to
sized IPC types.

The generator is invoked during development time and the results are
stored in the repository.

  • Scripts/generate-gpup-webgl: Added.

LayoutTests:
Implement RemoteGraphicsContextGL
https://bugs.webkit.org/show_bug.cgi?id=217216
<rdar://problem/69876258>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-12-09
Reviewed by Simon Fraser.

Implements a beginning of a remote version of GraphicsContextGL for GPU
process. Current implementation is using WebKit IPC.

Adds test expectations for the missing functionality. Does not yet
enable the tests that actually pass but which were skipped before the
implementation.

  • gpu-process/TestExpectations:
10:22 AM Changeset in webkit [270586] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

[GPUProcess] Video does not resume if the GPU Process crashes while in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=219660

Reviewed by Darin Adler.

When the GPU process was crashing while a video was playing in full screen (very common on iOS),
we would attempt to resume playback but video rendering was broken. It looks like this should
be recoverable in some way since changing the orientation of the device makes the video render
again. However, the full screen logic lives in the UIProcess and I could not figure out how to
recover nicely. As a result, this patch simply exits fullscreen when the GPU process crashes.
I have verified that the video renders properly if the user re-enter full screen after a crash.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::reloadAndResumePlaybackIfNeeded):

9:37 AM Changeset in webkit [270585] by Megan Gardner
  • 3 edits in trunk/Source/WebCore

Allow App Highlight without turning on Experimental Feature Flag
https://bugs.webkit.org/show_bug.cgi?id=219668

Reviewed by Wenson Hsieh.

The same painting infrastructure is used to paint app highlights as well as JavaScript highlights, but the
both were gated on the experimental feature flag for the JavaScript highlights when painting text. The app
highlights should not have such a barrier. Conversely, painting the JavaScript highlights was not gated when
painting images. That should be behind the feature flag check.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::collectMarkedTextsForHighlights const):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::calculateHighlightColor const):

9:35 AM Changeset in webkit [270584] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

REGRESSION(r269647) [Cocoa] Consume GPU sandbox extensions early in Web page creation flow
https://bugs.webkit.org/show_bug.cgi?id=219659
<rdar://problem/72058396>

Reviewed by Jer Noble.

We need to consume GPU sandbox extensions earlier in the Web page creation flow so that API calls to things like
muting video have the relevant mach connections available.

This change corrects a regression introduced in Bug 218708 (r269647).

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage): Move extension consumption earlier in the constructor.

9:11 AM Changeset in webkit [270583] by commit-queue@webkit.org
  • 2 edits
    1 move in trunk/Tools

check-for-global-bss-symbols-in-webkigtk-libs is misspelled
https://bugs.webkit.org/show_bug.cgi?id=219686

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-12-09
Reviewed by Carlos Garcia Campos.

  • Scripts/check-for-global-bss-symbols-in-webkitgtk-libs: Renamed from Tools/Scripts/check-for-global-bss-symbols-in-webkigtk-libs.

(bss_symbols):

  • Scripts/make-dist:

(Distcheck.check_symbols):

9:03 AM Changeset in webkit [270582] by commit-queue@webkit.org
  • 41 edits
    4 adds in trunk

WebDriver: add support for pen pointer events
https://bugs.webkit.org/show_bug.cgi?id=219024

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-12-09
Reviewed by Brian Burg.

LayoutTests/imported/w3c:

Handle pen pointer events in testdriver.

  • web-platform-tests/resources/testdriver-vendor.js:

(window.test_driver_internal.action_sequence):

Source/WebCore:

  • Headers.cmake:
  • dom/Element.cpp:

(WebCore::dispatchPointerEventIfNeeded): Pass pointer ID and pointer type to pointerEventForMouseEvent().

  • dom/PointerEvent.cpp:

(WebCore::PointerEvent::create): Add pointer ID and pointer type parameters.
(WebCore::PointerEvent::PointerEvent): Ditto.

  • dom/PointerEvent.h:
  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::pointerEventForMouseEvent): Do not assume the pointer type is always
mouse. We might not have a capturing data yet for other pointer types.
(WebCore::PointerCaptureController::pointerEventWillBeDispatched): Explicilty check it's not touch pointer event.

  • page/PointerCaptureController.h:
  • platform/PlatformMouseEvent.h:

(WebCore::PlatformMouseEvent::pointerType const):

Source/WebDriver:

Pass the actual pointer type to the automation as a different input source.

  • Session.cpp:

(WebDriver::automationSourceType):
(WebDriver::Session::performActions):

Source/WebKit:

Make it possible to synthesize pointer events for any pointer type. Add pen input source to automation and
handle it when dispatching actions.

  • Shared/NativeWebMouseEvent.h:
  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):

  • Shared/WebMouseEvent.cpp:

(WebKit::WebMouseEvent::WebMouseEvent):
(WebKit::WebMouseEvent::encode const):
(WebKit::WebMouseEvent::decode):

  • Shared/WebMouseEvent.h:

(WebKit::WebMouseEvent::pointerId const):
(WebKit::WebMouseEvent::pointerType const):

  • Shared/gtk/NativeWebMouseEventGtk.cpp:

(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(primaryPointerForType):
(webkitWebViewBaseSynthesizeMouseEvent):

  • UIProcess/API/gtk/WebKitWebViewBaseInternal.h:
  • UIProcess/Automation/Automation.json:
  • UIProcess/Automation/SimulatedInputDispatcher.cpp:

(WebKit::SimulatedInputSourceState::emptyStateForSourceType):
(WebKit::SimulatedInputDispatcher::transitionInputSourceToState):

  • UIProcess/Automation/SimulatedInputDispatcher.h:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::simulateMouseInteraction):
(WebKit::WebAutomationSession::performMouseInteraction):
(WebKit::simulatedInputSourceTypeFromProtocolSourceType):
(WebKit::WebAutomationSession::performInteractionSequence):

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:

(WebKit::WebAutomationSession::platformSimulateMouseInteraction):

  • UIProcess/Automation/mac/WebAutomationSessionMac.mm:

(WebKit::WebAutomationSession::platformSimulateMouseInteraction):

  • UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp:

(WebKit::WebAutomationSession::platformSimulateMouseInteraction):

  • UIProcess/gtk/PointerLockManager.cpp:

(WebKit::PointerLockManager::handleMotion):

Tools:

Add optional pointerType parameter to EventSenderProxy mouseDown(), mouseUp() and mouseMoveTo() methods.

  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::createMouseMessageBody):
(WTR::EventSendingController::mouseDown):
(WTR::EventSendingController::mouseUp):
(WTR::EventSendingController::mouseMoveTo):
(WTR::EventSendingController::scheduleAsynchronousClick):

  • WebKitTestRunner/InjectedBundle/EventSendingController.h:
  • WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm:

(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::didReceiveMessageFromInjectedBundle):
(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:

(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):

  • WebKitTestRunner/win/EventSenderProxyWin.cpp:

(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):

  • WebKitTestRunner/wpe/EventSenderProxyWPE.cpp:

(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):

LayoutTests:

Update expectations of
imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_hoverable_pointers.html. The test is now
timing out, but because tesdriver doesn't correctly handle the iframe element.

  • platform/gtk/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_hoverable_pointers-expected.txt: Added.
  • platform/mac-wk2/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_hoverable_pointers-expected.txt: Added.
8:30 AM Changeset in webkit [270581] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Build error after r270457
https://bugs.webkit.org/show_bug.cgi?id=219676

Unreviewed, fix ARM NEON build after r270457.

  • platform/audio/SincResampler.cpp:

(WebCore::SincResampler::convolve):

8:15 AM Changeset in webkit [270580] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

Multicolumn children becoming in-flow elements should be inserted into the multicolumn flow
https://bugs.webkit.org/show_bug.cgi?id=218503

Reviewed by Zalan Bujtas.

Out of flow children of a multicolumn container are not really part of the multicolumn flow. Making them in-flow (i.e. setting "position: static;")
should trigger the code that inserts them into the MultiColumnFlowThread object of the multicolumn container. RenderTreeBuilder was handling this
in-flow <-> out-of-flow changes just for the cases in which the inline status of an element was affecting the parent.

  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::normalizeTreeAfterStyleChange): Insert renderer in the multicolumn flow thread whenever it becames in flow.

8:05 AM Changeset in webkit [270579] by stephan.szabo@sony.com
  • 2 edits in trunk/Source/WebKit

[PlayStation] Fix PlayStation GPU process code after r270563
https://bugs.webkit.org/show_bug.cgi?id=219682

Unreviewed build fix.

Remove mediaPlayerRenderingModeChanged from playstation specific
RemoteMediaPlayerProxyPlayStation file similar to the removals from
other versions in r270563.

  • GPUProcess/media/playstation/RemoteMediaPlayerProxyPlayStation.cpp:
7:40 AM Changeset in webkit [270578] by svillar@igalia.com
  • 11 edits in trunk

[css-flex] Implement 9.8.1 Definite and Indefinite Sizes
https://bugs.webkit.org/show_bug.cgi?id=219538

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/flex-aspect-ratio-img-row-013-expected.txt: Replaced FAIL by PASS expectations.
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-003-expected.txt: Ditto.
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-003v-expected.txt: Ditto.
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-004-expected.txt: Ditto.
  • web-platform-tests/css/css-flexbox/image-as-flexitem-size-004v-expected.txt: Ditto.
  • web-platform-tests/css/css-sizing/percentage-height-in-flexbox.html: Updated expectation. Still failing.

Source/WebCore:

If a single-line flex container has a definite cross size, the automatic preferred outer cross size
of any stretched flex items is the flex container's inner cross size (clamped to the flex item's
min and max cross size) and is considered definite. Before that we were considering all automatic
sizes as indefinite.

This patch does not consider all the cases where the container cross size is definite but just when
that size is fixed. Support for additional cases should be added in followup patches.

This fixes 3 full tests plus 24 subtests in some other flexbox aspect ratio tests from the WPT suite.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeMainSizeFromAspectRatioUsing const): Use the container's cross size
as the item's cross size.
(WebCore::RenderFlexibleBox::childCrossSizeIsDefinite const): Consider automatic cross size inside a
single line container with definite cross size as definite.

LayoutTests:

5:47 AM Changeset in webkit [270577] by pvollan@apple.com
  • 14 edits
    2 adds in trunk/Source

[macOS] Change Universal Access zoom in the UI process
https://bugs.webkit.org/show_bug.cgi?id=219635

Reviewed by Darin Adler.

Source/WebCore:

Currently, the API UAZoomChangeFocus is called in the WebContent process when Universal Access zoom is enabled.
To enable us to block the HI service com.apple.hiservices-xpcservice in the WebContent process, this call should
be performed in the UI process. This patch implements this by having the page chrome client send a message to
the UI process, which will change the zoom.

No new tests, since enabling Universal Access zoom is required to test this.

  • WebCore.xcodeproj/project.pbxproj:
  • editing/mac/FrameSelectionMac.mm:

(WebCore::FrameSelection::notifyAccessibilityForSelectionChange):

  • editing/mac/UniversalAccessZoom.h: Added.
  • editing/mac/UniversalAccessZoom.mm: Added.

(WebCore::changeUniversalAccessZoomFocus):

  • page/ChromeClient.h:

(WebCore::ChromeClient::changeUniversalAccessZoomFocus):

  • platform/PlatformScreen.h:

Source/WebKit:

Implement the method changeUniversalAccessZoomFocus in the WebProcess' chrome client, which will send a message
to the UI process, where the Universal Access zoom will be changed.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::changeUniversalAccessZoomFocus):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::changeUniversalAccessZoomFocus):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Source/WebKitLegacy/mac:

Implement the method changeUniversalAccessZoomFocus in the WebKit legacy chrome client by changing
the Universal Access zoom in-process.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::changeUniversalAccessZoomFocus):

1:43 AM Changeset in webkit [270576] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebKit

iOS build fix after r270573.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handlePreventableTouchEvent):

12:58 AM Changeset in webkit [270575] by pvollan@apple.com
  • 5 edits in trunk/Source/WebKit

Remove access to com.apple.audio.toolbox.reporting.service
https://bugs.webkit.org/show_bug.cgi?id=219638
<rdar://problem/71638615>

Reviewed by Darin Adler.

Remove access to com.apple.audio.toolbox.reporting.service for WebKit processes, since this is a logging service which is not needed for correctness.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • UIProcess/WebPageProxy.cpp:

(WebKit::mediaRelatedMachServices):

  • WebProcess/com.apple.WebProcess.sb.in:
12:28 AM Changeset in webkit [270574] by sihui_liu@apple.com
  • 26 edits
    12 adds in trunk

Implement audio capture for SpeechRecognition on iOS
https://bugs.webkit.org/show_bug.cgi?id=219371
<rdar://problem/71824049>

Reviewed by Youenn Fablet.

Source/WebCore:

Add a way to set RealtimeMediaSource member of SpeechRecognitionCaptureSourceImpl.

Test: fast/speechrecognition/ios/audio-capture.html

  • Headers.cmake:
  • Modules/speech/SpeechRecognitionCaptureSource.cpp:

(WebCore::SpeechRecognitionCaptureSource::findCaptureDevice):
(WebCore::SpeechRecognitionCaptureSource::createRealtimeMediaSource):
(WebCore::SpeechRecognitionCaptureSource::SpeechRecognitionCaptureSource):

  • Modules/speech/SpeechRecognitionCaptureSource.h:
  • Modules/speech/SpeechRecognizer.cpp:

(WebCore::SpeechRecognizer::reset):
(WebCore::SpeechRecognizer::start):
(WebCore::SpeechRecognizer::setSource):
(WebCore::SpeechRecognizer::startInternal): Deleted.

  • Modules/speech/SpeechRecognizer.h:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

On iOS, audio capture is done in web process. For speech recognition, recognizer is in UI process. Therefore,
UI process needs to ask web process to capture audio and send back data. To implement this, this patch added:

  • SpeechRecognitionRemoteRealtimeMediaSource: subclass WebCore::RealtimeMediaSource and connect to a remote

WebCore::RealtimeMediaSource (owned by SpeechRecognitionRealtimeMediaSourceManager::Source) in web process.

  • SpeechRecognitionRemoteRealtimeMediaSourceManager: manage all RemoteRealtimeMediaSources.
  • SpeechRecognitionRealtimeMediaSourceManager: manage all SpeechRecognitionRemoteRealtimeMediaSource.
  • SpeechRecognitionRealtimeMediaSourceManager::Source: own and monitor a local WebCore::RealtimeMediaSource.

This structure is very similar to how we implement media capture on macOS (RemoteRealtimeMediaSource,
UserMediaCaptureManager and UserMediaCaptureManagerProxy), where we send data from UI process to web process
instead. We should unify the architecture if possible.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp: Added.

(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::create):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::SpeechRecognitionRemoteRealtimeMediaSource):
(WebKit::m_ringBuffer):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::~SpeechRecognitionRemoteRealtimeMediaSource):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::startProducingData):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::stopProducingData):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::setStorage):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::remoteAudioSamplesAvailable):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::remoteCaptureFailed):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::remoteSourceStopped):

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h: Added.

(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::identifier const):

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp: Added.

(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::SpeechRecognitionRemoteRealtimeMediaSourceManager):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::addSource):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::removeSource):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::remoteAudioSamplesAvailable):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::remoteCaptureFailed):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::remoteSourceStopped):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::messageSenderConnection const):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::messageSenderDestinationID const):
(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::setStorage):

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.h: Added.
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.messages.in: Added.
  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::SpeechRecognitionServer):
(WebKit::SpeechRecognitionServer::handleRequest):

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

(WebKit::WebPageProxy::createRealtimeMediaSourceForSpeechRecognition):

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

(WebKit::WebProcessProxy::createSpeechRecognitionServer):
(WebKit::WebProcessProxy::ensureSpeechRecognitionRemoteRealtimeMediaSourceManager):

  • UIProcess/WebProcessProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp: Added.

(WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::Source):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::~Source):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::start):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::stop):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::storage):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::SpeechRecognitionRealtimeMediaSourceManager):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::~SpeechRecognitionRealtimeMediaSourceManager):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::grantSandboxExtensions):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::revokeSandboxExtensions):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::createSource):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::deleteSource):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::start):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::stop):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::messageSenderConnection const):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::messageSenderDestinationID const):

  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.h: Added.
  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.messages.in: Added.
  • WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.cpp:

(WebKit::WebSpeechRecognitionConnection::WebSpeechRecognitionConnection):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureSpeechRecognitionRealtimeMediaSourceManager):

  • WebProcess/WebProcess.h:

LayoutTests:

  • TestExpectations:
  • fast/speechrecognition/ios/audio-capture-expected.txt: Added.
  • fast/speechrecognition/ios/audio-capture.html: Added.
  • platform/ios-wk2/TestExpectations:

Dec 8, 2020:

11:51 PM Changeset in webkit [270573] by commit-queue@webkit.org
  • 83 edits
    1 copy
    1 delete in trunk/Source/WebKit

IPC should support non-byte aligned data references
https://bugs.webkit.org/show_bug.cgi?id=219487

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-12-08
Reviewed by Chris Dumez.

Add a templated version of IPC::DataReference: ArrayReference<type, number of elements>.
The number of elements can be omitted, in which case the ArrayReference
size is determined at run-time.

This way pointers of typed arrays such as float arrays can be transferred directly
from the IPC message data store to the target. This is useful when implementing
IPC for WebGL in GPU process.

Changes IPC to support passing data references, i.e.
DataReference or ArrayReference, as a synchronous IPC call return value.
The caller must hold the Connection::syncSend() result (Decoder object)
for the duration of using the data values.

Makes DataReference an alias of uint8_t dynamic array reference.
Unfortunately this makes the forward declaring DataReference hard.
Due to this, changes use declaration sites to #include instead of
using forward declarations. Removes forward declarations for headers
where the type is not used.

Adds various #includes to fix errors hidden by the unified build.

Adds some WebCore:: namespace qualifications to fix errors hidden
by the unified build.

  • GPUProcess/media/RemoteAudioSessionProxy.cpp:
  • GPUProcess/media/RemoteLegacyCDMProxy.cpp:
  • GPUProcess/media/RemoteLegacyCDMProxy.h:
  • GPUProcess/media/RemoteLegacyCDMSessionProxy.cpp:
  • GPUProcess/media/RemoteMediaResourceManager.cpp:
  • GPUProcess/media/RemoteMediaResourceManager.h:
  • GPUProcess/media/RemoteMediaSourceProxy.h:
  • GPUProcess/media/RemoteSourceBufferProxy.cpp:
  • GPUProcess/media/RemoteSourceBufferProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
  • NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h:
  • NetworkProcess/Downloads/Download.cpp:
  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:
  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/NetworkSocketChannel.cpp:
  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/NetworkSocketStream.cpp:
  • NetworkProcess/NetworkSocketStream.h:
  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:
  • NetworkProcess/WebSocketTask.h:
  • NetworkProcess/cocoa/WebSocketTaskCocoa.h:
  • NetworkProcess/cocoa/WebSocketTaskCocoa.mm:
  • NetworkProcess/soup/WebSocketTaskSoup.cpp:
  • NetworkProcess/soup/WebSocketTaskSoup.h:
  • Platform/IPC/ArgumentCoders.h:
  • Platform/IPC/ArrayReference.h: Copied from Source/WebKit/Platform/IPC/DataReference.h.

(IPC::ArrayReference::ArrayReference):
(IPC::ArrayReference::isEmpty const):
(IPC::ArrayReference::size const):
(IPC::ArrayReference::data const):
(IPC::ArrayReference::vector const):

  • Platform/IPC/Connection.h:

(IPC::Connection::sendSync):

  • Platform/IPC/DataReference.cpp: Removed.
  • Platform/IPC/DataReference.h:
  • Platform/IPC/Decoder.cpp:

(IPC::Decoder::decodeFixedLengthReference):

  • Platform/IPC/Decoder.h:
  • Platform/IPC/Encoder.cpp:

(IPC::Encoder::wrapForTesting):

  • Platform/IPC/Encoder.h:
  • Platform/IPC/HandleMessage.h:
  • Platform/IPC/MessageSender.h:

(IPC::MessageSender::sendSync):

  • Platform/IPC/SharedBufferCopy.cpp:

(IPC::SharedBufferCopy::decode):

  • Platform/IPC/SharedBufferDataReference.cpp:
  • Platform/IPC/StringReference.cpp:
  • PluginProcess/PluginControllerProxy.cpp:
  • PluginProcess/PluginControllerProxy.h:
  • Scripts/webkit/messages.py:
  • Shared/API/APIData.cpp:
  • Shared/cf/ArgumentCodersCF.cpp:
  • Shared/soup/WebCoreArgumentCodersSoup.cpp:

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

  • Sources.txt:
  • UIProcess/API/APIIconLoadingClient.h:
  • UIProcess/AuxiliaryProcessProxy.h:

(WebKit::AuxiliaryProcessProxy::sendSync):

  • UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.h:
  • UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h:
  • UIProcess/PageClient.h:
  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:
  • UIProcess/UserContent/WebUserContentControllerProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebURLSchemeHandler.h:
  • UIProcess/WebURLSchemeTask.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/ApplePay/WebPaymentCoordinator.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::copyVideoTextureToPlatformTexture):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::connectToGPUProcess):

  • WebProcess/GPU/media/RemoteAudioSourceProvider.cpp:
  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp:
  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.h:
  • WebProcess/GPU/media/RemoteLegacyCDMSession.cpp:
  • WebProcess/GPU/media/TextTrackPrivateRemote.h:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/Inspector/WebInspectorUIExtensionController.cpp:

(WebKit::WebInspectorUIExtensionController::WebInspectorUIExtensionController):
(WebKit::WebInspectorUIExtensionController::registerExtension):
(WebKit::WebInspectorUIExtensionController::unregisterExtension):

  • WebProcess/Network/NetworkProcessConnection.h:
  • WebProcess/Network/WebResourceLoader.cpp:
  • WebProcess/Network/WebResourceLoader.h:
  • WebProcess/Network/WebSocketChannel.cpp:
  • WebProcess/Network/WebSocketChannel.h:
  • WebProcess/Network/WebSocketStream.cpp:
  • WebProcess/Network/WebSocketStream.h:
  • WebProcess/Network/webrtc/LibWebRTCSocket.h:
  • WebProcess/Plugins/PDF/PDFPlugin.h:
  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::sendSyncWithDelayedReply):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleEditingKeyboardEvent):

11:24 PM Changeset in webkit [270572] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Dirty line boxes when RenderMenuList text changes
https://bugs.webkit.org/show_bug.cgi?id=218488

Patch by Rob Buis <rbuis@igalia.com> on 2020-12-08
Reviewed by Darin Adler.

Dirty line boxes when RenderMenuList selection text
changes and we have an existing m_buttonText, in order
to ensure its content gets laid out properly.

  • rendering/RenderMenuList.cpp:

(RenderMenuList::setText):

11:17 PM Changeset in webkit [270571] by Ross Kirsling
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed debug test fix following r270552.

  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::constructCustomArrayBufferIfNeeded):
(JSC::constructGenericTypedArrayViewWithArguments):
Add missing exception check (and rearrange slightly).

11:07 PM Changeset in webkit [270570] by Diego Pino Garcia
  • 4 edits in trunk

[GLIB] REGRESSION(r270526): Several URL related tests are failing
https://bugs.webkit.org/show_bug.cgi?id=219664

Reviewed by Alex Christensen.

Source/WebCore:

r270526 changed the behaviour of shouldRemoveFragmentIdentifier for
non-Apple ports. It should return true.

  • platform/network/DataURLDecoder.cpp:

(WebCore::DataURLDecoder::shouldRemoveFragmentIdentifier):

LayoutTests:

  • platform/glib/TestExpectations: Skip fast/url/data-url-mediatype.html as it depends on non-supported feature.
10:00 PM Changeset in webkit [270569] by Lauro Moura
  • 3 edits in trunk/Source/WebCore

Unreviewed. Add missing LFC guards around LineLayout usage from r270544

Fix build when LFC is disabled, like in Ubuntu LTS/Debian Stable bots.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::insertedIntoTree):
(WebCore::RenderObject::willBeRemovedFromTree):

  • rendering/RenderText.cpp:

(WebCore::RenderText::setText):

8:25 PM Changeset in webkit [270568] by commit-queue@webkit.org
  • 7 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-* and move-back-* are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=219655

Patch by Sam Sneddon <Sam Sneddon> on 2020-12-08
Reviewed by Alexey Proskuryakov.

  • TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wpe/TestExpectations:
7:57 PM Changeset in webkit [270567] by commit-queue@webkit.org
  • 4 edits in trunk

Increase maximum size of WKContentRuleList
https://bugs.webkit.org/show_bug.cgi?id=219626
Source/WebCore:

<rdar://problem/69175732>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-08
Reviewed by Geoffrey Garen.

The process that compiles WKContentRuleLists has a soft memory limit of 150MB.
We can go over it slightly, but doing so dramatically increases our chance of being jetsammed and never succeeding, which we want to avoid.

When originally developing WKContentRuleLists, we had to tune 2 limiting factors to prevent memory use from exponential growth: maxNFASize and maxRuleCount.
We have received the most complaints about maxRuleCount being only 50000, so I decided to see if we could increase it.

In r270414 I did a technical improvement that could allow us to increase maxRuleCount.
I just completed some iOS device measurements to determine what the new limit will be. They were done by taking some popular content blockers from the app
store that separate their rules into several rule lists and combining them into one list to see what will happen in practice when we increase the limits.
Then, I measured the peak memory use spike. Here is my data:

Revision, Rule list length, Max Memory Use
r270413 64779 134MB
r270413 122475 361MB
r270414 64779 119MB
r270414 122475 146MB

Given this data and the fact that it is a soft memory limit, I am changing maxRuleCount to 150000. It is also comforting to see the measurement of r270414
actually decreasing maximum memory use, especially with the longest rule lists.

I also measured the effect of changing maxNFASize after r270414:

Rule list length, maxNFASize, Max Memory Use, NFA count in compileToBytecode
64779 75000 119MB 1105
64779 250000 318MB 1102
64779 1000000 405MB 1101
122475 75000 146MB 1129
122475 250000 335MB 1127
122475 1000000 340MB 1127

Lower NFA counts means fewer passes on each URL loaded, which increases performance of WebKit with content blockers. Given that increasing maxNFASize
greatly increases the max memory use without significantly decreasing the NFA count, I decided to leave that parameter tuned to where it was already, 75000 nodes.
The number of NFAs is still uncomfortably high, but the cause is not maxNFASize. We should investigate the splitting of the NFAs in the compiler and consider
ways to split into fewer NFAs if we can, but that should be done at another time.

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::loadEncodedRules):

Tools:

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-08
Reviewed by Geoffrey Garen.

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::TEST_F):

5:27 PM Changeset in webkit [270566] by Fujii Hironori
  • 10 edits
    1 copy in trunk/Source/WebCore

Add ANGLEHeaders.h to include all ANGLE headers for WebGL
https://bugs.webkit.org/show_bug.cgi?id=219629

Reviewed by Kenneth Russell.

There were the similar #include and #define code in some files.
Add a new header to include all ANGLE headers required for
USE_ANGLE build configuration.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/ANGLEWebKitBridge.h:
  • platform/graphics/angle/ANGLEHeaders.h: Added.
  • platform/graphics/angle/ExtensionsGLANGLE.cpp:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:
  • platform/graphics/angle/GraphicsContextGLANGLEUtilities.h:
  • platform/graphics/angle/TemporaryANGLESetting.cpp:
  • platform/graphics/cv/GraphicsContextGLCVANGLE.cpp:
  • platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.cpp:
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:
5:15 PM Changeset in webkit [270565] by Devin Rousso
  • 8 edits in trunk

[macCatalyst] Enable context menus for WKWebView
https://bugs.webkit.org/show_bug.cgi?id=219617
<rdar://problem/53770300>

Reviewed by Tim Horton.

Source/WTF:

  • wtf/PlatformEnableCocoa.h:
  • wtf/PlatformHave.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm:
  • TestWebKitAPI/cocoa/TestContextMenuDriver.h:
  • TestWebKitAPI/cocoa/TestContextMenuDriver.mm:
  • TestWebKitAPI/ios/UIKitSPI.h:

Note that none of these tests actually work right now because of <rdar://problem/59610140>.

5:14 PM Changeset in webkit [270564] by Wenson Hsieh
  • 8 edits
    1 add in trunk/Source/WebKit

[Concurrent Display Lists] Add a new type to represent a set of GPU process wakeup arguments
https://bugs.webkit.org/show_bug.cgi?id=219657

Reviewed by Tim Horton.

Pull the initial item buffer identifier, offset, and destination image buffer identifier used to wake the GPU
process out into a separate struct, in GPUProcessWakeupMessageArguments.h, and refactor both the web and GPU
process-side rendering backends to use this new struct.

This will greatly simplify future logic that will be added to address <webkit.org/b/218614>, which requires us
to defer calling into the GPU process wakeup loop in more scenarios. No change in behavior.

  • GPUProcess/graphics/RemoteImageBuffer.h:
  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):
(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayList):
(WebKit::RemoteRenderingBackend::setNextItemBufferToRead):
(WebKit::RemoteRenderingBackend::didCreateSharedDisplayListHandle):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Shared/GPUProcessWakeupMessageArguments.h: Added.

(WebKit::GPUProcessWakeupMessageArguments::encode const):
(WebKit::GPUProcessWakeupMessageArguments::decode):

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

(WebKit::RemoteRenderingBackendProxy::sendWakeupMessage):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
4:56 PM Changeset in webkit [270563] by Peng Liu
  • 9 edits in trunk/Source/WebKit

[Media in GPU Process][MSE] The GPU Process may crash in the destructor of MediaPlayerPrivateMediaSourceAVFObjC
https://bugs.webkit.org/show_bug.cgi?id=219622

Reviewed by Eric Carlson.

The purpose of mediaPlayerRenderingModeChanged() callback is to notify the media element
that the player's rendering mode is changed, including the case that the layer is destroyed.
So we should not operate on the layer in this function.

With this patch, RemoteMediaPlayerProxy forwards the callback from the GPU process to
the Web process. This patch also cleans up RemoteMediaPlayerProxy.h.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerRenderingModeChanged):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerRenderingModeChanged): Deleted.

  • GPUProcess/media/gstreamer/RemoteMediaPlayerProxyGStreamer.cpp:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerRenderingModeChanged): Deleted.

  • GPUProcess/media/win/RemoteMediaPlayerProxyWin.cpp:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerRenderingModeChanged): Deleted.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::renderingModeChanged):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in:
4:10 PM Changeset in webkit [270562] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebCore

REGRESSION(r254841): Possible null pointer reference in BitmapImage::preTransformedNativeImageForCurrentFrame()
https://bugs.webkit.org/show_bug.cgi?id=219651

Reviewed by Tim Horton.

preTransformedNativeImageForCurrentFrame() was added in r254841 under the
name nativeImageForCurrentFrameRespectingOrientation() without checking
whether the resulted image of nativeImageForCurrentFrame() is null or not.
If the ImageSource is corrupted, the decoder might return a null
PlatformImagePtr for the current frame. And if this happens most likely
ImageSource::densityCorrectedSize() will return WTF::nullopt also. In this
case, we end up calling GraphicsContext::drawPlatformImage() with a null
PlatformImagePtr.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::preTransformedNativeImageForCurrentFrame):

4:03 PM Changeset in webkit [270561] by ggaren@apple.com
  • 5 edits in trunk

TextManipulationController sometimes fails to notify its delegate of new text (if an element has been removed)
https://bugs.webkit.org/show_bug.cgi?id=219656

Reviewed by Wenson Hsieh.

Source/WebCore:

Sihui Liu <sihui_liu@apple.com> diagnosed this; I typed the fix.

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::scheduleObservationUpdate):

Ignore disconnected nodes. They are irrelevent to text manipulation in
the document (since they are not in the document); and including them
causes the common acenstor algorithm to fail.

Use an explicit boolean instead of a series of set checks to track
whether an update has already been scheduled. The set checks confused
me while debugging; also, checking a weak hash set for empty is
needlessly costly at O(n).

(WebCore::TextManipulationController::flushPendingItemsForCallback):
Ignore flushes when the list of pending items is empty. Otherwise, our
delegate will get a confusing 0-item callback.

  • editing/TextManipulationController.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST): Added a test that removes lots of elements. The
bug in this case depended on finding a removed element after an inserted
element in set iteration order. Using lots of removed elements gives us
a reasonable chance to trigger the relevant order.

3:54 PM Changeset in webkit [270560] by Chris Dumez
  • 5 edits in trunk

Unreviewed, reverting r269983.

Seems to have regressed PLT5

Reverted changeset:

"[iOS] beforeunload event does not fire in MobileSafari"
https://bugs.webkit.org/show_bug.cgi?id=219102
https://trac.webkit.org/changeset/269983

3:45 PM Changeset in webkit [270559] by Chris Dumez
  • 6 edits in trunk

Potential crash under [WKRemoteObjectEncoder encodeObject:forKey:] when the object graph contains a cycle
https://bugs.webkit.org/show_bug.cgi?id=219620
Source/WebKit:

<rdar://71551776>

Reviewed by Geoffrey Garen.

Update WKRemoteObjectEncoder to detect cycles when encoding objects. When a cycle is detected, we
first attempt to encode a default-initialized object of the same type instead. If that fails, we
raise a NSInvalidArgumentException.

Based on crashes in the wild, we have evidence that such cycles are occuring and I suspect this is
caused by Norton Safe Web extension somehow.

  • Shared/API/Cocoa/WKRemoteObjectCoder.mm:

(-[WKRemoteObjectEncoder init]):
(encodeObject):

Tools:

Reviewed by Geoffrey Garen.

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h:
  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm:

(-[RemoteObjectRegistryPlugIn takeDictionary:completionHandler:]):

3:23 PM Changeset in webkit [270558] by Jonathan Bedard
  • 3 edits in trunk/Tools

[webkitcorepy] Defer pypi index check until usage
https://bugs.webkit.org/show_bug.cgi?id=219271
<rdar://problem/71748250>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py:

(Package.Archive.download): Verify our index before using it.
(Package.archives): Ditto.
(AutoInstall): Provide variables to cache information needed for pypi index verification.
(AutoInstall._verify_index): Verify the current index is reachable if a fallback index exists.
(AutoInstall.set_index): Defer checking the provided index by default.

2:57 PM Changeset in webkit [270557] by Simon Fraser
  • 29 edits in trunk/Source

Make ScrollingPerformanceLoggingEnabled an internal debug preference
https://bugs.webkit.org/show_bug.cgi?id=219647

Reviewed by Sam Weinig.

Source/WebCore:

ScrollingPerformanceLoggingEnabled is used by a Safari performance test, so it needs to be
easily toggleable from a script. That's easier if it's an Internal Debug preference.

Testing also sets ForceUpdateScrollbarsOnMainThreadForPerformanceTesting but we can just use
the ScrollingPerformanceLoggingEnabled flag, but it makes more sense to rename
ScrollingPerformanceLoggingEnabled to ScrollingPerformanceTestingEnabled when we do that.

Also fix how we propagate ScrollingPerformanceTestingEnabled to the scrolling tree;
do so via ScrollingStateFrameScrollingNode as we do for the other tree-wide settings,
removing code in TiledCoreAnimationDrawingArea::updatePreferences() that did this.

  • page/FrameView.cpp:

(WebCore::FrameView::forceUpdateScrollbarsOnMainThreadForPerformanceTesting const):
(WebCore::FrameView::setScrollingPerformanceTestingEnabled):
(WebCore::FrameView::setScrollingPerformanceLoggingEnabled): Deleted.

  • page/FrameView.h:
  • page/SettingsBase.cpp:

(WebCore::SettingsBase::scrollingPerformanceTestingEnabledChanged):
(WebCore::SettingsBase::scrollingPerformanceLoggingEnabledChanged): Deleted.

  • page/SettingsBase.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::setFrameScrollingNodeState):
(WebCore::AsyncScrollingCoordinator::asyncFrameOrOverflowScrollingEnabled const): Deleted.
(WebCore::AsyncScrollingCoordinator::wheelEventGesturesBecomeNonBlocking const): Deleted.

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
(WebCore::ScrollingStateFrameScrollingNode::applicableProperties const):
(WebCore::ScrollingStateFrameScrollingNode::setScrollingPerformanceTestingEnabled):

  • page/scrolling/ScrollingStateFrameScrollingNode.h:
  • page/scrolling/ScrollingStateNode.h:
  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::commitTreeState):
(WebCore::ScrollingTree::setScrollingPerformanceLoggingEnabled): Deleted.
(WebCore::ScrollingTree::scrollingPerformanceLoggingEnabled): Deleted.

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::scrollingPerformanceTestingEnabled const):
(WebCore::ScrollingTree::setScrollingPerformanceTestingEnabled):

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged):

  • platform/graphics/TiledBacking.h:
  • platform/graphics/ca/TileController.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::platformCALayerPaintContents):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::forceUpdateScrollbarsOnMainThreadForPerformanceTesting const):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::RenderLayerBacking):

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::forceUpdateScrollbarsOnMainThreadForPerformanceTesting const):

Source/WebKit:

ScrollingPerformanceLoggingEnabled is used by a Safari performance test, so it needs to be
easily toggleable from a script. That's easier if it's an Internal Debug preference.

Testing also sets ForceUpdateScrollbarsOnMainThreadForPerformanceTesting but we can just use
the ScrollingPerformanceLoggingEnabled flag, but it makes more sense to rename
ScrollingPerformanceLoggingEnabled to ScrollingPerformanceTestingEnabled when we do that.

Also fix how we propagate ScrollingPerformanceTestingEnabled to the scrolling tree;
do so via ScrollingStateFrameScrollingNode as we do for the other tree-wide settings,
removing code in TiledCoreAnimationDrawingArea::updatePreferences() that did this.

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
(ArgumentCoder<ScrollingStateFrameScrollingNode>::decode):

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetScrollingPerformanceLoggingEnabled):
(WKPreferencesGetScrollingPerformanceLoggingEnabled):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::forceUpdateScrollbarsOnMainThreadForPerformanceTesting const):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::updatePreferences):

Source/WTF:

Rename ScrollingPerformanceLoggingEnabled to ScrollingPerformanceTestingEnabled and make
it an Internal Debug preference.

Remove ForceUpdateScrollbarsOnMainThreadForPerformanceTesting.

  • Scripts/Preferences/WebPreferences.yaml:
  • Scripts/Preferences/WebPreferencesInternal.yaml:
2:30 PM Changeset in webkit [270556] by Wenson Hsieh
  • 5 edits in trunk

[Concurrent Display Lists] Add a way for display list clients to get missing cached resource identifiers
https://bugs.webkit.org/show_bug.cgi?id=219652

Reviewed by Tim Horton.

Source/WebCore:

Refactor some code so that we plumb the RenderingResourceIdentifier of the missing cached resource from
applyImageBufferItem and applyNativeImageItem to the ReplayResult.

Test: DisplayListTests.ReplayWithMissingResource

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

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

  • platform/graphics/displaylists/DisplayListReplayer.h:

Tools:

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

(TestWebKitAPI::TEST):

1:24 PM Changeset in webkit [270555] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Deny mach-lookup to the service 'com.apple.assertiond.processassertionconnection' in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=219637
<rdar://problem/69019269>

Reviewed by Darin Adler.

Deny mach-lookup to the service 'com.apple.assertiond.processassertionconnection' in the WebContent process on macOS,
since there are no reports of this service being used.

No new tests, since the result will depend on macOS version.

  • WebProcess/com.apple.WebProcess.sb.in:
1:19 PM Changeset in webkit [270554] by Ross Kirsling
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed non-unified build fix following r270552.

  • runtime/JSArrayBufferPrototypeInlines.h:
1:10 PM Changeset in webkit [270553] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Remove NSString overrelease in _WKUserContentExtensionStore
https://bugs.webkit.org/show_bug.cgi?id=219621

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-08
Reviewed by Darin Adler.

Gasp!

  • UIProcess/API/Cocoa/WKContentRuleListStore.mm:

(-[WKContentRuleListStore compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:]):
(-[WKContentRuleListStore _compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:]):

1:02 PM Changeset in webkit [270552] by Ross Kirsling
  • 11 edits
    1 add in trunk

Align %TypedArray% constructor behavior with spec
https://bugs.webkit.org/show_bug.cgi?id=219527

Reviewed by Yusuke Suzuki.

JSTests:

  • test262/expectations.yaml:

Mark 40 test cases as passing.

  • wasm/fuzz/memory.js:
  • wasm/js-api/test_Data.js:

Fix non-conforming typed array usage.

Source/JavaScriptCore:

These should be the last JSC-side corrections for typed array behavior:
namely, fixes for the constructor itself.

Broadly speaking, there are three fixes here:

  1. ArrayBuffer argument (https://tc39.es/ecma262/#sec-initializetypedarrayfromarraybuffer): We need to throw if the input buffer gets detached.
  1. Array-like argument (https://tc39.es/ecma262/#sec-initializetypedarrayfromarraylike): length needs toLength, not toUInt32.
  1. Typed array argument (https://tc39.es/ecma262/#sec-initializetypedarrayfromtypedarray): We need to support the case where the input typed array uses a custom ArrayBuffer. This case is *extremely* strange -- we still create the same type of typed array with a normal ArrayBuffer, but we override the prototype of that ArrayBuffer to inputTypedArray.buffer.constructor[@@species].prototype.
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • runtime/JSArrayBufferConstructor.cpp:
  • runtime/JSArrayBufferPrototype.cpp:

(JSC::arrayBufferSpeciesConstructorSlow): Added.
(JSC::speciesWatchpointIsValid): Moved.

  • runtime/JSArrayBufferPrototype.h:
  • runtime/JSArrayBufferPrototypeInlines.h: Added.
  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::constructCustomArrayBufferIfNeeded): Added.
(JSC::constructGenericTypedArrayViewWithArguments):

  • runtime/JSGlobalObject.h:
12:29 PM Changeset in webkit [270551] by commit-queue@webkit.org
  • 8 edits in trunk

Support aspect-ratio on non-replaced elements
https://bugs.webkit.org/show_bug.cgi?id=218794

Patch by Rob Buis <rbuis@igalia.com> on 2020-12-08
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Adapt test expectation.

  • web-platform-tests/css/css-sizing/aspect-ratio/quirks-mode-002-expected.txt:

Source/WebCore:

Compute logical width/height for non-replaced elements
taking aspect ratio into account. This is very basic
support and does not consider things like transferred min/max
block size.

  • rendering/RenderBox.cpp:

(WebCore::inlineSizeFromAspectRatio): Helper to compute inline size given box-sizing mode, margins/borders,
block size and logical aspect ratio.
(WebCore::RenderBox::computeLogicalWidthInFragment const):
(WebCore::blockSizeFromAspectRatio): Helper to compute block size given box-sizing mode, margins/borders,
inline size and logical aspect ratio.
(WebCore::RenderBox::computeLogicalHeight const):
(WebCore::RenderBox::shouldComputeLogicalHeightFromAspectRatio const):

  • rendering/RenderBox.h:
  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::logicalAspectRatio const): Return aspect ratio taking direction into account.
(WebCore::RenderStyle::hasAspectRatio const): Return true if aspect-ratio property has <ratio> set.

LayoutTests:

Unskip some tests that pass now.

12:15 PM Changeset in webkit [270550] by ysuzuki@apple.com
  • 8 edits in trunk

[JSC] Enable "at" methods
https://bugs.webkit.org/show_bug.cgi?id=219631

Reviewed by Ross Kirsling.

Source/JavaScriptCore:

This patch enables "at" methods in Array, String, and %TypedArray% by flipping runtime flag.

  • runtime/OptionsList.h:

LayoutTests:

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/array-unscopables-properties-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
  • js/script-tests/array-unscopables-properties.js:
12:14 PM Changeset in webkit [270549] by Russell Epstein
  • 1 copy in tags/Safari-611.1.7.1

Tag Safari-611.1.7.1.

12:04 PM Changeset in webkit [270548] by Alan Coon
  • 5 edits in branches/safari-610-branch/Source

Cherry-pick r270052. rdar://problem/72099688

Use os_thread_self_restrict_rwx_is_supported instead of pthread_jit_write_protect_supported_np on Apple Internal SDK builds
https://bugs.webkit.org/show_bug.cgi?id=219099
<rdar://problem/71547048>

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • assembler/FastJITPermissions.h: (useFastJITPermissions): (threadSelfRestrictRWXToRW): (threadSelfRestrictRWXToRX):

Source/WTF:

  • wtf/PlatformHave.h:
  • wtf/PlatformUse.h:

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

12:01 PM Changeset in webkit [270547] by Alan Coon
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.4.3

11:56 AM Changeset in webkit [270546] by Russell Epstein
  • 8 edits in branches/safari-611.1.7-branch/Source

Versioning.

WebKit-7611.1.7.1

11:20 AM Changeset in webkit [270545] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS] Create sandbox extension for audio service when Media in GPU process is not enabled
https://bugs.webkit.org/show_bug.cgi?id=219540
<rdar://problem/71978050>

Reviewed by Brent Fulgham.

Create sandbox extension for com.apple.audio.SandboxHelper when Media in GPU process is not enabled.

  • UIProcess/WebPageProxy.cpp:

(WebKit::mediaRelatedMachServices):

  • WebProcess/com.apple.WebProcess.sb.in:
10:25 AM Changeset in webkit [270544] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Invalidate line layout path for children of inlines
https://bugs.webkit.org/show_bug.cgi?id=219639

Reviewed by Zalan Bujtas.

We currently assume you can just invalidate the direct parent.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::blockContainer):
(WebCore::LayoutIntegration::LineLayout::containing):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • rendering/RenderObject.cpp:

(WebCore::RenderObject::insertedIntoTree):
(WebCore::RenderObject::willBeRemovedFromTree):

Invalidate here.

  • rendering/RenderText.cpp:

(WebCore::RenderText::setText):

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attachToRenderElementInternal):

  • rendering/updating/RenderTreeBuilderBlock.cpp:

(WebCore::RenderTreeBuilder::Block::attachIgnoringContinuation):
(WebCore::RenderTreeBuilder::Block::detach):

9:47 AM Changeset in webkit [270543] by Russell Epstein
  • 2 edits in branches/safari-611.1.8-branch/Source/WebKit

Cherry-pick r270536. rdar://problem/72096496

Add target to create /usr/local to work around XBS Bug <rdar://problem/20388650>
https://bugs.webkit.org/show_bug.cgi?id=219618
rdar://72064576

Patch by Ryan Hostetler <rhost@apple.com> on 2020-12-08
Reviewed by Jonathan Bedard.

  • WebKit.xcodeproj/project.pbxproj: Add a build target EmptyDSTROOT with script to create an empty folder "/usr/local". This allows WebKit to retain a unified XBS project name across different train configurations.

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

9:39 AM Changeset in webkit [270542] by Chris Dumez
  • 9 edits in trunk/Source

[iOS] Stop leaking an XPC boost message to XPC services
https://bugs.webkit.org/show_bug.cgi?id=219453

Reviewed by Geoffrey Garen.

Source/WebKit:

Stop leaking an XPC boost message to XPC services on builds where RunningBoard is able to give the right
priorities to our XPC services based on the type of RunningBoard assertion is being held. There is no
behavior change for the Network/WebContent processes since those were blocklisted in RunningBoard (Turning
on the RB_full_manage_WK_jetsam feature flag gives us the default RunningBoard behavior without
blocklisting). However, this allows the new GPUProcess to move to IDLE jetsam band when homing out of
MobileSafari, which makes the GPUProcess eligible for the freezer. Previously, the leaked boost message
would keep the GPUProcess in a higher jetsam band.

  • FeatureFlags/WebKit.plist:

Add RB_full_manage_WK_jetsam feature flag and turn it on. On recent enough builds of RunningBoard, this
disables the blocklisting of the WebContent/Network processes in RunningBoard so that RunningBoard can now
set the priority of those processes (instead of us boosting our priority via boost messages).

  • GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist:
  • NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-iOS.plist:
  • WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnService/Info-iOS.plist:
  • WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist:

Set _ProcessType=App so that RunningBoard is able to set the priority of our XPC services on iOS. Without
this change, we get a permission denied when RunningBoard attempts to set the priority of our XPC services.

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::shouldLeakBoost):
Stop leaking a boost message on iOS when RUNNINGBOARD_WEBKIT_PRIORITY_SUPPORT compile-time flag is enabled
and when the RB_full_manage_WK_jetsam feature flag is enabled.

Source/WTF:

Add new RUNNINGBOARD_WEBKIT_PRIORITY_SUPPORT build time flag since we need a recent
enough build of RunningBoard to do this.

  • wtf/PlatformHave.h:
9:21 AM Changeset in webkit [270541] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Make TextRun::subRun stricter
https://bugs.webkit.org/show_bug.cgi?id=219615

Patch by Rob Buis <rbuis@igalia.com> on 2020-12-08
Reviewed by Darin Adler.

Make TextRun::subRun stricter, besides the start offset being less than the run
length, the sub run start offset plus sub run length should not exceed the
overall run length.

  • platform/graphics/TextRun.h:

(WebCore::TextRun::subRun const):

9:13 AM Changeset in webkit [270540] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitcorepy] Fix case where cached=True with other arguments
https://bugs.webkit.org/show_bug.cgi?id=219644
<rdar://problem/72092851>

Reviewed by Stephanie Lewis.

  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/decorators.py:

(Memoize.call.decorator): Use keyargs instead of args.

  • Scripts/libraries/webkitcorepy/webkitcorepy/tests/decorators_unittest.py:

(TestMemoize):
(TestMemoize.increment_with_arg): Added.
(TestMemoize.test_override):

8:01 AM Changeset in webkit [270539] by Antti Koivisto
  • 9 edits in trunk/Source/WebCore

[LFC][Integration] Don't assume ensureLineBoxes can be called on direct parent
https://bugs.webkit.org/show_bug.cgi?id=219633

Reviewed by Zalan Bujtas.

This is no longer true with inlines.

  • dom/DocumentMarkerController.cpp:

(WebCore::DocumentMarkerController::addMarker):

  • layout/integration/LayoutIntegrationLineLayout.h:

(WebCore::LayoutIntegration::LineLayout::flow):

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::setSelectionState):
(WebCore::RenderLineBreak::ensureLineBoxes): Deleted.

  • rendering/RenderLineBreak.h:
  • rendering/RenderObject.cpp:

(WebCore::RenderObject::setSelectionState):

Move to the base class and use LineLayout::containing.

  • rendering/RenderObject.h:

(WebCore::RenderObject::setSelectionState): Deleted.

  • rendering/RenderText.cpp:

(WebCore::RenderText::setSelectionState):
(WebCore::RenderText::ensureLineBoxes): Deleted.

  • rendering/RenderText.h:
7:18 AM Changeset in webkit [270538] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] commit-queue should use only the first email from contributors.json to validate committers and reviewers
https://bugs.webkit.org/show_bug.cgi?id=219608

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(ValidateCommiterAndReviewer.load_contributors): Use only first email for validating commiters and reviewers.

  • Scripts/webkitpy/common/config/contributors.json: Correct Antoine Quint's and Justin Michaud's active accounts.
6:51 AM Changeset in webkit [270537] by Caio Lima
  • 2 edits in trunk/Source/JavaScriptCore

[ESNext] op_put_private_name is wrong
https://bugs.webkit.org/show_bug.cgi?id=219616

Reviewed by Tadeu Zagallo.

Since m_property is a JSCell pointer, we need to use both loadp
and bpneq on op_put_private_name.

  • llint/LowLevelInterpreter64.asm:
6:37 AM Changeset in webkit [270536] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Add target to create /usr/local to work around XBS Bug <rdar://problem/20388650>
https://bugs.webkit.org/show_bug.cgi?id=219618
rdar://72064576

Patch by Ryan Hostetler <rhost@apple.com> on 2020-12-08
Reviewed by Jonathan Bedard.

  • WebKit.xcodeproj/project.pbxproj:

Add a build target EmptyDSTROOT with script to create an empty folder "/usr/local".
This allows WebKit to retain a unified XBS project name across different train configurations.

6:24 AM Changeset in webkit [270535] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Trimmable content can include <wbr>
https://bugs.webkit.org/show_bug.cgi?id=219613

Reviewed by Antti Koivisto.

Trailing <wbr> can be part of the trimmable trailing content.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::TrimmableTrailingContent::remove):

6:11 AM Changeset in webkit [270534] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Do not keep the inline box "start" inline item on the current line when its content does not fit anymore
https://bugs.webkit.org/show_bug.cgi?id=219627

Reviewed by Antti Koivisto.

This is a simple case when the <span>'s content does not fit the line anymore and we end up wrapping the content right after
the <span> (e.g <span>this_does_not_fit</span>. Let's move the <span> over to the next line as well.

This fixes imported/w3c/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-011.html

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processOverflowingTextContent const):

6:08 AM Changeset in webkit [270533] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Set hyphen on the last text run
https://bugs.webkit.org/show_bug.cgi?id=219619

Reviewed by Antti Koivisto.

Line::addTrailingHyphen should set the hyphen flag on the last _text_ run.
(e.g. <span>last run is not always a text run</span> <- inline box end is the last run here)

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::addTrailingHyphen):

2:36 AM Changeset in webkit [270532] by youenn@apple.com
  • 9 edits
    2 adds in trunk

Allow RTCRtpSFrameTransform to handle multiple keys
https://bugs.webkit.org/show_bug.cgi?id=219598

Reviewed by Eric Carlson.

Source/WebCore:

Keep a map of ID to Key material when setEncryptionKey is called.
Use that map on decryption side to get key material from key ID.
Add internals API to validate key retrieval is done correctly.
If setEncryptionKey key ID is not set, we use the map size which allows to use 0, 1, 2 and so on...

Test: webrtc/sframe-keys.html

  • Modules/mediastream/RTCRtpSFrameTransform.cpp:

(WebCore::RTCRtpSFrameTransform::keyIdForTesting const):

  • Modules/mediastream/RTCRtpSFrameTransform.h:
  • Modules/mediastream/RTCRtpSFrameTransformer.cpp:

(WebCore::RTCRtpSFrameTransformer::setEncryptionKey):
(WebCore::RTCRtpSFrameTransformer::updateEncryptionKey):
(WebCore::RTCRtpSFrameTransformer::decryptFrame):

  • Modules/mediastream/RTCRtpSFrameTransformer.h:

(WebCore::RTCRtpSFrameTransformer::keyId const):

  • testing/Internals.cpp:

(WebCore::Internals::sframeKeyId):

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

LayoutTests:

  • webrtc/sframe-keys-expected.txt: Added.
  • webrtc/sframe-keys.html: Added.
1:49 AM Changeset in webkit [270531] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Remove the build warning below since r270526.
warning: unused parameter ‘mediaType’ [-Wunused-parameter]

No new tests, no new behaviors.

  • platform/network/DataURLDecoder.cpp:

(WebCore::DataURLDecoder::shouldRemoveFragmentIdentifier):

Note: See TracTimeline for information about the timeline view.