Timeline



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):

Dec 7, 2020:

11:50 PM Changeset in webkit [270530] by Fujii Hironori
  • 5 edits in trunk

Unreviewed sort-Xcode-project-file

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:

Tools:

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • jsc-cli/jsc-cli.xcodeproj/project.pbxproj:
8:14 PM Changeset in webkit [270529] by Said Abou-Hallawa
  • 6 edits in trunk/Source

[GPU Process] Ensure the backend of ImageBuffer is created before getting its handle
https://bugs.webkit.org/show_bug.cgi?id=219623

Reviewed by Tim Horton.

Source/WebCore:

Remove the ImageBuffer::backend() method and move ensureBackendCreated()
from ConcreteImageBuffer to ImageBuffer. Clients should ensure the backend
is created before accessing its method. ensureBackendCreated() is only
overridden by RemoteImageBufferProxy.

  • platform/graphics/ConcreteImageBuffer.h:

(WebCore::ConcreteImageBuffer::ensureBackendCreated const): Deleted.

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::backend const): Deleted.

Source/WebKit:

In r270458 and in RemoteLayerBackingStore::encode(), casting the ImageBuffer
and calling the overriding createImageBufferBackendHandle() of the superclass
was replaced by casting the backend and calling its createImageBufferBackendHandle()
directly.

This may lead to crash if the backend was not created when calling its
createImageBufferBackendHandle(). The createImageBufferBackendHandle()
of the ImageBuffer superclass calls ensureBackendCreated() before calling
createImageBufferBackendHandle() of the backend.

So we need to replace to call backend() to ensureBackendCreated().

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::encode const):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
5:09 PM Changeset in webkit [270528] by Ryan Haddad
  • 2 edits in trunk/Tools

Unreviewed API test gardening, disable failing tests on Big Sur.

  • TestWebKitAPI/Tests/WebKit/PreferenceChanges.mm:

(TEST):

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

REGRESSION (r269359): [ Mac ] http/tests/inspector/dom/disconnect-dom-tree-after-main-frame-navigation.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=219225

unreviewed test gardening.

  • platform/mac/TestExpectations:
3:43 PM Changeset in webkit [270526] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Parse content after # in data URLs with HLS mime types
https://bugs.webkit.org/show_bug.cgi?id=219612
<rdar://problem/71039282>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-12-07
Reviewed by Darin Adler.

Source/WebCore:

r267995 made us conform to the behavior of Chrome and Firefox by removing fragments from data URLs before parsing.
While this is desirable, there is content in Safari-specific HLS data URLs that needs the content including and after #.
So, to fix this, wait until after we know the mime type and remove the fragment if it's not HLS.

Test: fast/url/data-url-mediatype.html

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::loadDataURL):
(WebCore::shouldStripFragmentIdentifier): Deleted.

  • platform/network/DataURLDecoder.cpp:

(WebCore::DataURLDecoder::shouldRemoveFragmentIdentifier):
(WebCore::DataURLDecoder::DecodeTask::DecodeTask):
(WebCore::DataURLDecoder::DecodeTask::process):
(WebCore::DataURLDecoder::createDecodeTask):

LayoutTests:

  • fast/url/data-url-mediatype-expected.txt: Added.
  • fast/url/data-url-mediatype.html: Added.
3:33 PM Changeset in webkit [270525] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Check if RenderInline style is supported
https://bugs.webkit.org/show_bug.cgi?id=219611

Reviewed by Antti Koivisto.

At this point it's insufficient to check for block style only. Inline boxes may have unsupported styles as well.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForChild):

2:26 PM Changeset in webkit [270524] by commit-queue@webkit.org
  • 22 edits
    1 add in trunk

[WASM-References] Add support for table.copy
https://bugs.webkit.org/show_bug.cgi?id=219427

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

Add support for table.copy from reference types proposal:
https://webassembly.github.io/reference-types/core/syntax/instructions.html#table-instructions.
JSTests:

Add the tests from above spec.

  • wasm/references-spec-tests/table_copy.js: Added.

(hostref):
(is_hostref):
(is_funcref):
(eq_ref):
(let.handler.get target):
(register):
(module):
(instance):
(call):
(get instance):
(exports):
(run):
(assert_malformed):
(assert_invalid):
(assert_unlinkable):
(assert_uninstantiable):
(assert_trap):
(try.f):
(catch):
(assert_exhaustion):
(assert_return):
(assert_return_canonical_nan):
(assert_return_arithmetic_nan):
(assert_return_ref):
(assert_return_func):

  • wasm/references/element_parsing.js:
  • wasm/wasm.json:

Source/JavaScriptCore:

The table.copy instruction accepts three stack arguments (destination
offset, source offset, length) and two immediates for table indexes
and copies items from one wasm table to another.

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

(JSC::Wasm::AirIRGenerator::addTableFill):
(JSC::Wasm::AirIRGenerator::addTableCopy):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addTableFill):
(JSC::Wasm::B3IRGenerator::addTableCopy):

  • wasm/WasmFunctionParser.h:

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

  • wasm/WasmInstance.cpp:

(JSC::Wasm::Instance::tableCopy):

  • wasm/WasmInstance.h:
  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::addTableCopy):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::isSumOverflow):
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

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

(JSC::Wasm::SectionParser::parseElement):

  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::WASM_SLOW_PATH_DECL):

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

(JSC::Wasm::Table::copy):
(JSC::Wasm::FuncRefTable::copyFunction):

  • wasm/WasmTable.h:
  • wasm/wasm.json:
1:59 PM Changeset in webkit [270523] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

Add check to ensure that the size of the result of AXTextMarkerGetBytePtr is equal to the size of TextMarkerData.
https://bugs.webkit.org/show_bug.cgi?id=219601

Reviewed by Simon Fraser.

Covered by existing tests.

This is a follow up change to the patch for
https://bugs.webkit.org/show_bug.cgi?id=219491
per Simon Fraser's comment.

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::getBytesFromAXTextMarker):
Added a check to ensure that the memory block returned by AXTextMarkerGetBytePtr
is the same size as TextMarkerData. This doesn't guaranty that the
underlying binary structures are the same, but it is a sanity check that
may catch flagrant discrepancies.

1:55 PM Changeset in webkit [270522] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

Add sandbox telemetry for likely unused features
https://bugs.webkit.org/show_bug.cgi?id=219544
<rdar://71985678>

Reviewed by Per Arne Vollan.

Add telemetry to confirm the results of our manual review of the sandbox. Add 'hw.memsize' to
the allowed sysctl's for the Network process on macOS, since it is needed by CFNetwork, and is
already permitted on iOS.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in: Allow the 'hw.memsize' sysctl,

which is needed by CFNetwork, and is already allowed on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: Add logging to confirm we

do not need file-read-metadata for syslog.

  • WebProcess/com.apple.WebProcess.sb.in: Add logging to confirm BluetoothServices is not

needed.

1:29 PM Changeset in webkit [270521] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] Skip remaining sframe tests

Unreviewed test gardening.

  • platform/glib/TestExpectations:
1:12 PM Changeset in webkit [270520] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Ensure that DisplayListSharedMemoryHeader is never explicitly created or destroyed at compile-time
https://bugs.webkit.org/show_bug.cgi?id=219609

Reviewed by Tim Horton.

Make sure that a DisplayListSharedMemoryHeader is never created or destroyed by marking the constructor and
destructor as deleted. A DisplayListSharedMemoryHeader should only ever be reinterpret_cast-ed from the
first few bytes of a shared display list handle.

  • Shared/SharedDisplayListHandle.h:
12:56 PM Changeset in webkit [270519] by Adrian Perez de Castro
  • 7 edits in trunk/Source/WebCore

Non-unified build fixes, early December 2020 edition (bis)
https://bugs.webkit.org/show_bug.cgi?id=219607

Unreviewed non-unified build fixes.

  • contentextensions/ImmutableNFA.h:
  • contentextensions/SerializedNFA.cpp:
  • contentextensions/SerializedNFA.h:
  • loader/DocumentLoader.cpp:
  • platform/audio/MultiChannelResampler.h:
  • platform/audio/SincResampler.h:
12:48 PM Changeset in webkit [270518] by Ryan Haddad
  • 9 edits
    2 deletes in trunk

Unreviewed, reverting r270507.

Caused some WebRTC tests to assert

Reverted changeset:

"Allow RTCRtpSFrameTransform to handle multiple keys"
https://bugs.webkit.org/show_bug.cgi?id=219598
https://trac.webkit.org/changeset/270507

12:43 PM Changeset in webkit [270517] by pvollan@apple.com
  • 7 edits in trunk

[macOS] Deny mach-lookup to the service 'com.apple.audio.SystemSoundServer-OSX' in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=219590
<rdar://problem/69019399>

Reviewed by Brent Fulgham.

Source/WebKit:

After r269593, mach-lookup to the service 'com.apple.audio.SystemSoundServer-OSX' in the WebContent process can be denied.

Test: fast/sandbox/mac/sandbox-mach-lookup.html

  • WebProcess/com.apple.WebProcess.sb.in:

LayoutTests:

  • fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
  • fast/sandbox/mac/sandbox-mach-lookup.html:
  • platform/mac-catalina/fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
  • platform/mac-mojave/fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
12:27 PM Changeset in webkit [270516] by don.olmstead@sony.com
  • 17 edits in trunk

[CMake] Remove WEBKIT_WRAP_SOURCELIST
https://bugs.webkit.org/show_bug.cgi?id=196916

Reviewed by Michael Catanzaro.

.:

WEBKIT_WRAP_SOURCELIST macro is used only to adjust source groups in Visual Studio
projects without any impact on build process. Its references variable specific to
particular targets (WebCore) which contradicts our goal of having target-oriented
CMake project. It can be reintroduced later in a more clean way, in case anyone needs
to have such grouping.

  • Source/cmake/WebKitMacros.cmake:

PerformanceTests:

  • MallocBench/MallocBench/CMakeLists.txt:

Source/bmalloc:

  • CMakeLists.txt:

Source/JavaScriptCore:

  • CMakeLists.txt:

Source/WebCore:

  • CMakeLists.txt:

Source/WebCore/PAL:

  • pal/CMakeLists.txt:

Source/WebKit:

  • PlatformFTW.cmake:
  • PlatformWin.cmake:

Source/WTF:

  • wtf/CMakeLists.txt:
12:20 PM Changeset in webkit [270515] by Russell Epstein
  • 8 edits in trunk/Source

Versioning.

WebKit-7611.1.9

12:19 PM Changeset in webkit [270514] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][IFC] Overflowing text content should not break at inline box boundary
https://bugs.webkit.org/show_bug.cgi?id=219605

Reviewed by Antti Koivisto.

Source/WebCore:

Wrap the overflowing content on the inline box boundary when possible.
<span>fits</span><span>overflows</span>
When the text "overflows" completely overflows, let's wrap the content after '</span>'.

Test: fast/layoutformattingcontext/overflow-at-inline-box-boundary-simple.html

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processOverflowingTextContent const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::commitPartialContent):

LayoutTests:

  • fast/layoutformattingcontext/overflow-at-inline-box-boundary-simple-expected.html: Added.
  • fast/layoutformattingcontext/overflow-at-inline-box-boundary-simple.html: Added.
12:14 PM Changeset in webkit [270513] by Russell Epstein
  • 1 copy in branches/safari-611.1.8-branch

New branch.

12:02 PM Changeset in webkit [270512] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit

Fix incorrect capitalization of ClearWheelEventTestMonitor IPC message name
https://bugs.webkit.org/show_bug.cgi?id=219606

Reviewed by Wenson Hsieh.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::clearWheelEventTestMonitor):

  • WebProcess/WebPage/WebPage.messages.in:
10:53 AM Changeset in webkit [270511] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

[iOS] Add basic GPUProcess crash recovery logic to RemoteMediaSessionHelper
https://bugs.webkit.org/show_bug.cgi?id=219494

Reviewed by Eric Carlson.

  • WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp:

(WebKit::RemoteMediaSessionHelper::RemoteMediaSessionHelper):
(WebKit::RemoteMediaSessionHelper::connectToGPUProcess):
(WebKit::RemoteMediaSessionHelper::gpuProcessConnectionDidClose):

  • WebProcess/GPU/media/ios/RemoteMediaSessionHelper.h:
10:44 AM Changeset in webkit [270510] by Ryan Haddad
  • 4 edits in trunk/Tools

Unreviewed API test gardening, disable failing tests on Big Sur.

  • TestWebKitAPI/Tests/WebKit/PreferenceChanges.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/PDFLinkReferrer.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:
10:36 AM Changeset in webkit [270509] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GStreamer] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html is flaky failing

Unreviewed test gardening.

  • platform/glib/TestExpectations:
9:50 AM Changeset in webkit [270508] by don.olmstead@sony.com
  • 9 edits in trunk/Source/WebCore

Non-unified build fixes, early December 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=219552

Unreviewed non-unified build fixes.

  • display/css/DisplayBoxModelBox.cpp:
  • display/css/DisplayStackingItem.cpp:
  • display/css/DisplayStackingItem.h:
  • html/HTMLIFrameElement.cpp:
  • layout/inlineformatting/InlineLineBox.cpp:
  • loader/DocumentLoader.cpp:
  • platform/mediacapabilities/ColorGamut.h:
  • platform/mediacapabilities/HdrMetadataType.h:
9:22 AM Changeset in webkit [270507] 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.
8:59 AM Changeset in webkit [270506] by youenn@apple.com
  • 14 edits
    1 copy
    3 adds in trunk

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

Reviewed by Eric Carlson.

Source/WebCore:

Add an SFrame compatibility mode for H.264.
To do so, the encryptor generates an SFrame and prefixes it with either a delta frame prefix or a key frame prefix.
The SFrame content is escaped so that it is considered as one big IDR or Slice nalu.
The decoder on the other hand, unescapes the content, removes the prefix and decrypts the SFrame content.

Test: webrtc/video-sframe.html

  • Modules/mediastream/H264Utils.cpp: Added.

(WebCore::isSliceNALU):
(WebCore::isSPSNALU):
(WebCore::isPPSNALU):
(WebCore::isIDRNALU):
(WebCore::findNalus):
(WebCore::computePrefixOffset):
(WebCore::needsRbspUnescaping):
(WebCore::fromRbsp):
(WebCore::computePrefixBuffer):
(WebCore::findEscapeRbspPatterns):
(WebCore::toRbsp):

  • Modules/mediastream/H264Utils.h: Added.
  • Modules/mediastream/MediaStreamTrack.cpp:
  • Modules/mediastream/RTCRtpSFrameTransform.cpp:

(WebCore::RTCRtpSFrameTransform::RTCRtpSFrameTransform):

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

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

  • Modules/mediastream/RTCRtpSFrameTransformer.h:
  • Modules/mediastream/RTCRtpScriptTransformer.cpp:
  • Modules/mediastream/RTCRtpScriptTransformer.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/Tests/WebCore/RTCRtpSFrameTransformerTests.cpp:

(TestWebKitAPI::TEST):

LayoutTests:

  • webrtc/video-sframe-expected.txt: Added.
  • webrtc/video-sframe.html: Added.
8:29 AM Changeset in webkit [270505] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Reduce memory copying in MultiChannelResampler::provideInputForChannel()
https://bugs.webkit.org/show_bug.cgi?id=219561

Reviewed by Eric Carlson.

Reduce memory copying in MultiChannelResampler::provideInputForChannel() by using
the passed-in buffer as memory for the first channel in the AudioBus.
This way we avoid having to memcpy() the data for the first channel.

Chromium's MultiChannelResampler has the same optimization.

  • platform/audio/MultiChannelResampler.cpp:

(WebCore::MultiChannelResampler::MultiChannelResampler):
(WebCore::MultiChannelResampler::provideInputForChannel):

  • platform/audio/MultiChannelResampler.h:
8:14 AM Changeset in webkit [270504] by Simon Fraser
  • 8 edits in trunk/Source/WebCore

[LFC Display] Keep track of the painted bounds of StackingItems
https://bugs.webkit.org/show_bug.cgi?id=219583

Reviewed by Zalan Bujtas.

Display::StackingItems will need to know their painted bounds for various reasons like
transparency layer extent, composited layer bounds, repaint etc. We can compute this cheaply
at tree building time. In fact, two bounds are useful: first, the bounds of the in-flow
content of that stacking item, and second the bounds of that stacking item and all its
stacking descendants.

We don't have a good way to know the painted extent of a Display::Box yet, so just use its
bounds as a proxy. BoxModelBox extends this by looking at box-shadow style.

While building the display tree, keep track of two extents rectangles:

  • currentStackingItemPaintedContentExtent starts with the bounds of the stack item's box,

and is unioned with the bounds of all the in-flow content for that stacking item as we
build the tree downwards.

  • currentStackingItemPaintingExtent starts empty, and accumulates the union of all

the descendant stacking items' painting extent in post-order traversal as we pop
stacking items off the currentState stack.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::BuildingState::inFlowContainingBlockBox const):
(WebCore::Display::TreeBuilder::build):
(WebCore::Display::TreeBuilder::pushStateForBoxDescendants):
(WebCore::Display::TreeBuilder::popState):
(WebCore::Display::TreeBuilder::accountForBoxPaintingExtent):
(WebCore::Display::TreeBuilder::currentState):
(WebCore::Display::TreeBuilder::positioningContext):
(WebCore::Display::TreeBuilder::insertIntoTree):
(WebCore::Display::TreeBuilder::buildInlineDisplayTree):
(WebCore::Display::outputStackingTree):
(WebCore::Display::TreeBuilder::currentState const): Deleted.
(WebCore::Display::TreeBuilder::positioningContext const): Deleted.

  • display/DisplayTreeBuilder.h:
  • display/css/DisplayBox.h:

(WebCore::Display::Box::absolutePaintingExtent const):

  • display/css/DisplayBoxModelBox.cpp:

(WebCore::Display::BoxModelBox::absolutePaintingExtent const):

  • display/css/DisplayBoxModelBox.h:
  • display/css/DisplayCSSPainter.cpp:

(WebCore::Display::applyEffects):
(WebCore::Display::CSSPainter::paintAtomicallyPaintedBox):

  • display/css/DisplayStackingItem.h:

(WebCore::Display::StackingItem::paintedContentBounds const):
(WebCore::Display::StackingItem::paintedBoundsIncludingDescendantItems const):
(WebCore::Display::StackingItem::setPaintedContentBounds):
(WebCore::Display::StackingItem::setPaintedBoundsIncludingDescendantItems):

6:49 AM Changeset in webkit [270503] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Check if RenderInline's text children are supported
https://bugs.webkit.org/show_bug.cgi?id=219585

Reviewed by Antti Koivisto.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForFontAndText):
(WebCore::LayoutIntegration::canUseForChild):

5:45 AM Changeset in webkit [270502] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Automatically delete old buildbot logs
https://bugs.webkit.org/show_bug.cgi?id=218817

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/master_buildbot2.cfg: Configured JanitorConfigurator to delete logs older than six months, and

configured to run every morning.

3:29 AM Changeset in webkit [270501] by Chris Lord
  • 2 edits in trunk/Source/WebCore

[GTK][WPE] Overflow/iframe scrolling with async scrolling enabled sometimes doesn't work
https://bugs.webkit.org/show_bug.cgi?id=219594

Reviewed by Žan Doberšek.

Scrollable layers can occur outside of the bounds of ancestor layers,
so remove bounds checking early-exit in nicosia
collectDescendantLayersAtPoint().

  • page/scrolling/nicosia/ScrollingTreeNicosia.cpp:

(WebCore::collectDescendantLayersAtPoint):

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

Unreviewed, reverting r270498.
https://bugs.webkit.org/show_bug.cgi?id=219596

Broke the build as it landed simultaneously with a more
complete fix

Reverted changeset:

"Unreviewed. Add the switch case handling missed out from
r270415."
https://trac.webkit.org/changeset/270498

2:13 AM Changeset in webkit [270499] by Lauro Moura
  • 3 edits in trunk/Source/WebKit

Fix warnings when GPUProcess is disabled
https://bugs.webkit.org/show_bug.cgi?id=219587

Reviewed by Žan Doberšek.

  • UIProcess/API/glib/WebKitNavigationClient.cpp: Handle new enum value

in switch after r270415.

  • WebProcess/WebPage/DrawingArea.cpp:

(WebKit::DrawingArea::supportsGPUProcessRendering): Default returning
false when GPUProcess is disabled.

2:09 AM Changeset in webkit [270498] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebKit

Unreviewed. Add the switch case handling missed out from r270415.

This change removes the build warning below.
warning: enumeration value ‘RequestedByGPUProcess’ not handled in switch [-Wswitch]

No new tests, no new behaviors.

  • UIProcess/API/glib/WebKitNavigationClient.cpp:
1:38 AM Changeset in webkit [270497] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

[JSC] Bundle non-native libs in run-jsc-stress-tests
https://bugs.webkit.org/show_bug.cgi?id=219485

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2020-12-07
Reviewed by Carlos Alberto Lopez Perez.

run-jsc-stress-tests already tries to bundle library dependencies
(on linux) when using the --remote functionality; this ensures
that we don't need to depend on the remote environment exactly
matching the build environment. However, this breaks when
cross-building; run-jsc-stress-tests uses ldd, which relies on
code execution to get the shared object paths.

This patch extends generate-bundle to be able to handle the output
from a cross ldd (specifically, xldd from crosstool-NG) and
changes run-jsc-stress-tests to use generate-bundle for bundling
the libraries for the remotes.

  • Scripts/generate-bundle:
  • Scripts/run-javascriptcore-tests:

(runJSCStressTests):

  • Scripts/run-jsc-stress-tests:
1:19 AM Changeset in webkit [270496] by commit-queue@webkit.org
  • 5 edits in trunk

[GLib] Leaked RunLoop objects on worker threads
https://bugs.webkit.org/show_bug.cgi?id=219232
<rdar://problem/71772277>

Patch by Zan Dobersek <zdobersek@igalia.com> on 2020-12-07
Reviewed by Geoffrey Garen.

Source/WTF:

During the thread-local RunLoop::Holder destruction, explicitly clear out
the iteration Deque objects on the held RunLoop, destroying any Function
objects that never got to execute on this thread. Generally, this allows
for any RunLoop reference stored in these objects to be released.

Specifically, this would allow for destruction of the RunLoop::Timer
object that's queued up in the JSRunLoopTimer::Manager::PerVMData
destructor but never gets dispatched because the thread (a JS worker) is
shut down before that happens. Destruction of the timer will release the
reference of the RunLoop that's held by the RunLoop::Holder, finally
enabling the RunLoop object itself be destroyed once the RunLoop::Holder
reference is let go.

  • wtf/RunLoop.cpp:

(WTF::RunLoop::Holder::~Holder):
(WTF::RunLoop::threadWillExit):

  • wtf/RunLoop.h:

Tools:

Add a unit test covering proper RunLoop teardown upon thread destruction
even if RunLoop references are stored in the dispatch queues.

  • TestWebKitAPI/Tests/WTF/RunLoop.cpp:

(TestWebKitAPI::TEST):

Dec 6, 2020:

9:43 PM Changeset in webkit [270495] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Follow-up r270469, media-source timeouts.

Also gardened flaky failure in imported/w3c/web-platform-tests/xhr/event-timeout.any.html.

  • platform/glib/TestExpectations:
  • platform/wpe/TestExpectations:
8:54 PM Changeset in webkit [270494] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

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

No new tests, no new behaviors.

  • contentextensions/NFAToDFA.cpp:

(WebCore::ContentExtensions::NFAToDFA::convert):

8:31 PM Changeset in webkit [270493] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Remove the build warnings below since r270400.
warning: unused parameter ‘foo’ [-Wunused-parameter]

No new tests, no new behaviors.

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::getActiveUniforms):

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

[GLIB] Gardening wheel and webgl failures

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
4:49 PM Changeset in webkit [270491] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Use WTF_MAKE_FAST_ALLOCATED for some scrolling-related objects
https://bugs.webkit.org/show_bug.cgi?id=219567

Reviewed by Tim Horton.

Make ScrollingCoordinator, ScrollingTree and ScrollingTreeNode be fast-allocated.

  • page/scrolling/ScrollingCoordinator.h:
  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeNode.h:
4:35 PM Changeset in webkit [270490] by Simon Fraser
  • 5 edits
    2 moves
    1 add in trunk/Source/WebCore

[LFC Display] Move DisplayLayerController to display/compositing
https://bugs.webkit.org/show_bug.cgi?id=219584

Reviewed by Anders Carlsson.

Make a display/compositing directory and move DisplayLayerController.* into it.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/compositing/DisplayLayerController.cpp: Renamed from Source/WebCore/display/DisplayLayerController.cpp.
  • display/compositing/DisplayLayerController.h: Renamed from Source/WebCore/display/DisplayLayerController.h.
1:42 PM Changeset in webkit [270489] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[WebKit] Fix use of std::max_align_t
https://bugs.webkit.org/show_bug.cgi?id=219579

Patch by Samuel Thibault <samuel.thibault@ens-lyon.org> on 2020-12-06
Reviewed by Fujii Hironori.

Standard says that it's alignof(std::max_align_t) that should be used,
not its size, e.g.
https://en.cppreference.com/w/cpp/types/max_align_t
and indeed at least with gcc 10's stddef.h, max_align_t is a structure
containing a long long, a long double, and a float18, thus not a power
of two.

  • Shared/SharedDisplayListHandle.h:

(WebKit::SharedDisplayListHandle::headerSize): Use
alignof(std::max_align_t) instead of sizeof(std::max_align_t).

1:31 PM Changeset in webkit [270488] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

[WTF] Add Unix-generic way of determining the available RAM
https://bugs.webkit.org/show_bug.cgi?id=219570
sysconf(_SC_PHYS_PAGES) and sysconf(_SC_PAGE_SIZE) are a very generic way to get

Patch by Samuel Thibault <samuel.thibault@ens-lyon.org> on 2020-12-06
Reviewed by Fujii Hironori.

  • wtf/RAMSize.cpp:

(WTF::computeRAMSize): Fallback to sysconf to determine RAM size.

12:41 PM Changeset in webkit [270487] by ysuzuki@apple.com
  • 4 edits
    2 adds in trunk

[JSC] get / set for object literal and class should not be escaped
https://bugs.webkit.org/show_bug.cgi?id=219576

Reviewed by Alexey Shvayka.

JSTests:

  • stress/escaped-getter-setter-in-class.js: Added.

(testSyntaxError):
(testSyntaxError.String.raw.A.prototype.u0067.u0065.u0074.m):
(testSyntaxError.String.raw.A):
(testSyntaxError.String.raw.A.prototype.u0073.u0065.u0074.m):

  • stress/escaped-getter-setter-in-object.js: Added.

(testSyntaxError):
(testSyntaxError.String.raw.u0067.u0065.u0074.m):
(testSyntaxError.String.raw.u0073.u0065.u0074.m):

  • test262/expectations.yaml:

Source/JavaScriptCore:

"get" and "set" for getter and setter should not be escaped one.
Terminal symbols of the lexical grammars are shown in fixed width font [1],
and are to appear in a script exactly as written.

[1]: https://tc39.es/ecma262/#sec-method-definitions

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseProperty):

11:21 AM Changeset in webkit [270486] by youenn@apple.com
  • 14 edits in trunk

Add support for RTCRtpSender::setStreams
https://bugs.webkit.org/show_bug.cgi?id=219542

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback-expected.txt:
  • web-platform-tests/webrtc/RTCRtpSender-setStreams.https-expected.txt:

Source/WebCore:

Pipe stream IDs from WebCore sender to libqebrtc backend sender.
A follow-up patch should handle creation of remote streams in case of renegotiation.
Covered by updated and rebased tests.

  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::create):
(WebCore::RTCRtpSender::RTCRtpSender):
(WebCore::RTCRtpSender::setStreams):
(WebCore::RTCRtpSender::setMediaStreamIds):

  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpSenderBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiverFromTrackOrKind):
(WebCore::LibWebRTCPeerConnectionBackend::newRemoteTransceiver):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::setMediaStreamIds):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:

LayoutTests:

  • webrtc/video.html:
10:58 AM Changeset in webkit [270485] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] BoxGeometry should provide an enclosing rect for multiline inline boxes
https://bugs.webkit.org/show_bug.cgi?id=219574

Reviewed by Antti Koivisto.

This patch add support for multiline inline box geometry (e.g. <span>first<br>second</span>)
In such cases we turn the content box into the enclosing rect (border and padding do not make too much sense in multiline case)
This is not to be confused with Element.getClientRects() which returns a list of rects where border and padding start making sense.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):
set the box geometry depending on whether this is the first line where the inline box shows or we are processing an in-between or end line.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::enclosingBorderBoxRectFor const):

  • layout/layouttree/LayoutGeometryRect.h:

(WebCore::Layout::Rect::moveBy):
(WebCore::Layout::Rect::expandToContain):

10:47 AM Changeset in webkit [270484] by Simon Fraser
  • 10 edits in trunk/Source/WebCore

[LFC Display] Move border radii to BoxRareGeometry
https://bugs.webkit.org/show_bug.cgi?id=219581

Reviewed by Zalan Bujtas.

Border radius is not a box decoration, since it affects rendering (e.g. clipping)
when there are no decorations, so move it to BoxRareGeometry.

  • display/css/DisplayBoxDecorationData.cpp:

(WebCore::Display::roundedRectWithIncludedRadii): Deleted.
(WebCore::Display::roundedInsetBorderForRect): Deleted.
(WebCore::Display::BoxDecorationData::hasBorderRadius const): Deleted.

  • display/css/DisplayBoxDecorationData.h:

(WebCore::Display::BoxDecorationData::borderRadii const): Deleted.
(WebCore::Display::BoxDecorationData::setBorderRadii): Deleted.

  • display/css/DisplayBoxDecorationPainter.cpp:

(WebCore::Display::BoxDecorationPainter::BoxDecorationPainter):
(WebCore::Display::BoxDecorationPainter::paintBoxShadow const):
(WebCore::Display::BoxDecorationPainter::paintBackground const):
(WebCore::Display::BoxDecorationPainter::determineBackgroundBleedAvoidance):
(WebCore::Display::BoxDecorationPainter::computeBorderRect): Deleted.

  • display/css/DisplayBoxDecorationPainter.h:
  • display/css/DisplayBoxFactory.cpp:

(WebCore::Display::BoxFactory::constructBoxDecorationData const):
(WebCore::Display::BoxFactory::constructBoxRareGeometry const):

  • display/css/DisplayBoxModelBox.cpp:

(WebCore::Display::BoxModelBox::hasBorderRadius const):
(WebCore::Display::BoxModelBox::borderRoundedRect const):
(WebCore::Display::BoxModelBox::innerBorderRoundedRect const):
(WebCore::Display::BoxModelBox::clipForDescendants const):

  • display/css/DisplayBoxModelBox.h:
  • display/css/DisplayBoxRareGeometry.cpp:

(WebCore::Display::BoxRareGeometry::hasBorderRadius const):
(WebCore::Display::roundedRectWithIncludedRadii):
(WebCore::Display::roundedInsetBorderForRect):

  • display/css/DisplayBoxRareGeometry.h:

(WebCore::Display::BoxRareGeometry::borderRadii const):
(WebCore::Display::BoxRareGeometry::setBorderRadii):

6:53 AM Changeset in webkit [270483] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Disable RenderCounter content
https://bugs.webkit.org/show_bug.cgi?id=219573

Reviewed by Antti Koivisto.

RenderCounters are not supported yet.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForChild):

5:38 AM Changeset in webkit [270482] by Lauro Moura
  • 3 edits in trunk/Source/WebKit

Unreviewed. Add missing GPU_PROCESS guards around RemoteMediaEngineConfigurationFactory after r270462
https://bugs.webkit.org/show_bug.cgi?id=219578

Was breaking the Ubuntu LTS/Debian builds.

  • WebProcess/GPU/media/RemoteMediaEngineConfigurationFactory.cpp:
  • WebProcess/WebProcess.cpp:
12:41 AM Changeset in webkit [270481] by ysuzuki@apple.com
  • 8 edits
    1 add in trunk

[JSC] Accept escaped keywords for class and object property names
https://bugs.webkit.org/show_bug.cgi?id=219575

Reviewed by Alexey Shvayka.

JSTests:

  • stress/syntax-error-if-escaped-keyword-used-as-target-object-pattern.js: Added.

(testSyntaxError):

  • test262/expectations.yaml:

Source/JavaScriptCore:

In this patch, we accept escaped keywords for class, object, and object pattern property names.

var object = {

bre\u0061k: 42

};

When escaped keyword appears, we produce ESCAPED_KEYWORD with CanBeErrorTokenFlag. Now CanBeErrorTokenFlag
represents "when this token appears in an error condition, possibly this is error token and special message will appear",
instead of saying this token is definitely an error. So we can just use ESCAPED_KEYWORD token to handle this case.

  • parser/Lexer.cpp:

(JSC::Lexer<CharacterType>::parseIdentifierSlowCase):
(JSC::Lexer<T>::lexWithoutClearingLineTerminator):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::printUnexpectedTokenText):

  • parser/Parser.h:

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

  • parser/ParserTokens.h:

Dec 5, 2020:

6:47 PM Changeset in webkit [270480] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

REGRESSION (r268075): Animations at the top of https://browserbench.org/JetStream/ are very slow
https://bugs.webkit.org/show_bug.cgi?id=219447
<rdar://problem/71905123>

Reviewed by Sam Weinig.

SVG images have their own Page, and when they request rendering updates, they have to go through
ChromeClient, but that was missing for the Page::renderingUpdateCompleted() code path.
Make scheduleRenderingUpdateInternal() and call it from the two relevant places.

I tried making both a ref test and a test using internals.renderingUpdateCount(), but neither
were reliable. There's no way to get a signal out from the <img src="*.svg"> to say that
the animation has started, requiring tests to have flakey setTimeouts.

  • page/Page.cpp:

(WebCore::Page::scheduleRenderingUpdate):
(WebCore::Page::scheduleRenderingUpdateInternal):
(WebCore::Page::renderingUpdateCompleted):

  • page/Page.h:
4:22 PM Changeset in webkit [270479] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebCore

REGRESSION(r270458): Crash loading https://browserbench.org/JetStream/
https://bugs.webkit.org/show_bug.cgi?id=219568

Reviewed by Tim Horton.

Get the backendSize before sinking it into a NativeImage.

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::drawConsuming):

2:17 PM Changeset in webkit [270478] by Wenson Hsieh
  • 25 edits in trunk

[Concurrent display lists] Synchronize display list rendering across remote image buffers
https://bugs.webkit.org/show_bug.cgi?id=219091
<rdar://problem/71747695>

Reviewed by Geoff Garen.

Source/WebCore:

See Source/WebKit/ChangeLog for more details.

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/displaylists/DisplayList.cpp:

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

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::copyTo const):
(WebCore::DisplayList::ItemBuffer::swapWritableBufferIfNeeded):

Add plumbing so that didAppendData can inform the client whether the data was appended after switching to a
new buffer. In WebKit2's remote image buffer, we use this information to determine whether or not we need to
send a wakeup message to the GPU process. Namely, in the case of DidChangeItemBuffer::Yes, we don't need to
wake up the GPU process even though the unread bytes count was 0 before we advanced, since the GPU process will
automatically progress to this item buffer when it's done processing items in the previous item buffer.

See WebKit changes (in RemoteImageBufferProxy) for more details.

(WebCore::DisplayList::ItemBuffer::append):
(WebCore::DisplayList::ItemBuffer::didAppendData):
(WebCore::DisplayList::ItemBuffer::appendEncodedData): Deleted.

  • platform/graphics/displaylists/DisplayListItemBuffer.h:

Add a new ItemBufferWritingClient method to inform clients when new bytes are appended to an item buffer,
given the additional number of bytes added and the item buffer handle.

(WebCore::DisplayList::ItemBuffer::append):
(WebCore::DisplayList::ItemBuffer::uncheckedAppend):

  • platform/graphics/displaylists/DisplayListItemType.cpp:

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

Remove MetaCommandEnd. I introduced this item type because I was going to make the GPU process always sleep for
more display list item data, but I've since changed the approach so that the GPU process goes to sleep naturally
when it's done processing all unread bytes.

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

(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:
  • platform/graphics/displaylists/DisplayListRecorder.h:

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

Add a new helper method to append a FlushContext item via the display list recorder, to ensure that the
appropriate recorder delegate methods are invoked when appending a "flush context" item.

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::replay):

  • platform/graphics/displaylists/DisplayListReplayer.h:

Source/WebKit:

Refactors the existing concurrent display list processing mechanism, such that we no longer update the unread
bytes count every 512 items (or when flushing the drawing context), and instead update it every time we append
display list item data. In order to achieve this without making it impossible for multiple display-list backed
image buffers to render simultaneously, we also add support for synchronizing display list items across
different image buffers by using the new meta command items added in bug #219262. As detailed in the ChangeLog
for that bug, a stream of display list data written by the web process and consumed by the GPU process is now
structured like so:

Wakeup message initiates display list processing with Image Buffer A and Item Buffer 1

|
| MetaCommandChangeDestinationImageBuffer(B)
| |
| | MetaCommandChangeItemBuffer(2)
| | |
| | |
v v v
+-----------------------+--------------------------------++
| +--------------------+ +------------------------------+ |
| | Destination | | Destination | | Item Buffer 1
| | Image Buffer A | | Image Buffer B | |
| +--------------------+ +------------------------------+ |
+---------------------------------------------------------+

+---------------------------------------------------------+
| +--------------+ +-----------------------+ |
| | Dst. Image | | Destination Image | Unused | Item Buffer 2
| | Buffer B | | Buffer A | Capacity |
| +--------------+ +-----------------------+ |
+-----------------+-------------------------+-------------+


|
|

MetaCommandChangeDestinationImageBuffer(A)

(Note that the MetaCommandEnd item has been omitted, since we no longer need to explicitly tell the GPU
process to go to sleep with the latest iteration of this patch).

In order to write display list data conforming to this format, we add a mechanism to the web process that keeps
track of the "current destination image buffer" (i.e. the image buffer that has most recently
appended a display list item). Right before this destination is about to change, we append a new
MetaCommandChangeDestinationImageBuffer item before proceeding to append display list items for the new
current destination.

Since we now bump the unread count every time, we need to do some additional work to avoid an excessive number
of wakeups and sleeps in the GPU process, which would otherwise cause a massive regression. To do this, we
introduce an item count hysteresis in the web process, such that we will wait for 512 items to be written before
attempting to send the wakeup message. This allows the web process to get a small head start over the GPU
process, and thus allows the GPU process to be more consistently busy over the course of a single frame.

On the reader (GPU process) side, we make some minor adjustments so that the main display list processing loop
of the GPU process is capable of changing destination image buffers while processing a stream of display list
items.

See below for more details.

  • GPUProcess/graphics/DisplayListReaderHandle.cpp:

(WebKit::DisplayListReaderHandle::advance):

Update advance so that it just performs a single 8-byte atomic exchangeSub rather than grabbing a spinlock.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::submit):
(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):

Rename applyDisplayListsFromHandle to nextDestinationImageBufferAfterApplyingDisplayLists, and make it
return the current image buffer to use as the destination for replaying display list commands. This helper is
still responsible for replaying a display list item buffer until it has no more data (that is, until we
encounter a MetaCommandChangeItemBuffer item informing us of the next item buffer to consume).

(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayList):

Adjust this to call nextDestinationImageBufferAfterApplyingDisplayLists.

(WebKit::RemoteRenderingBackend::decodeItem):
(WebKit::RemoteRenderingBackend::applyDisplayListsFromHandle): Deleted.

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • Shared/SharedDisplayListHandle.h:

Remove SharedDisplayListHandle::Lock altogether, now that we just have a single atomic uint64_t counter to
represent the number of unread bytes.

(WebKit::SharedDisplayListHandle::unreadBytes):
(WebKit::SharedDisplayListHandle::Lock::Lock): Deleted.
(WebKit::SharedDisplayListHandle::Lock::~Lock): Deleted.

  • WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:

(WebKit::DisplayListWriterHandle::advance):

Make this use the single atomic counter, instead of grabbing a spinlock.

(WebKit::DisplayListWriterHandle::moveWritableOffsetToStartIfPossible):
(WebKit::DisplayListWriterHandle::resetWritableOffsetIfPossible): Deleted.

Rename resetWritableOffsetIfPossible to the more accurate moveWritableOffsetToStartIfPossible.

  • WebProcess/GPU/graphics/DisplayListWriterHandle.h:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::changeDestinationImageBuffer):

Add a helper method to append a MetaCommandChangeDestinationImageBuffer item to the display list, given the
identifier of this next item buffer.

(WebKit::RemoteImageBufferProxy::clearDisplayList):

Add a helper method to clear the display list, such that the RemoteImageBufferProxy will be asked for a new
buffer handle the next time we append an item.

(WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout):

Make this hit the maximum waitForAndDispatchImmediately attempt count and "fail" only if the call to
waitForAndDispatchImmediately actually times out. This change is necessary to ensure that the scenario of
multiple image buffers simultaneously appending display list items works when all image buffers perform (non-
blocking) flushes simultaneously, followed by a sync-wait (blocking) flush. In this situation, the web process
may receive more than three DidFlush messages in rapid succession, causing it to hit this maximum limit of 3
instantly and avoid waiting for the expected DidFlush message to arrive.

(WebKit::RemoteImageBufferProxy::submitDisplayList): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::gpuProcessConnectionDidClose):

Reset state when the GPU process is terminated.

(WebKit::RemoteRenderingBackendProxy::willAppendItem):

Update the current destination image buffer (m_currentDestinationImageBufferIdentifier). If this identifier
changed, then we append a MetaCommandChangeDestinationImageBuffer item to the previous destination before
setting the new destination image buffer. We also need to clear the new destination image buffer's display list
before writing new items, to prevent it from overwriting shared display list item data.

(WebKit::RemoteRenderingBackendProxy::sendWakeupMessage):
(WebKit::RemoteRenderingBackendProxy::sendDeferredWakeupMessageIfNeeded):
(WebKit::RemoteRenderingBackendProxy::didAppendData):

Implement a new ItemBufferWritingClient hook by advancing the corresponding item buffer's unread count.
Additionally, schedule a wakeup message in the case where the unread count was zero when we advanced, and the
item buffer we've appended to is not "connected" to a previous item buffer by way of an item buffer change item.

Additionally, in the case where we don't schedule a new wakeup message, check whether or not there is a deferred
wakeup message; if there is, then decrement the remaining item count before we send the wakeup message, and send
the message if the count reaches 0.

(WebKit::RemoteRenderingBackendProxy::findReusableDisplayListHandle):

Pull logic to find a shared display list handle suitable for reuse into a separate helper method, and adjust it
so that if the most recently used display list handle has run out of available capacity, we move it to the end
of the reuse queue and only reuse the new first shared handle in the queue if its writable offset can be reset.
This ensures that the GPU process can always continue reading display list item data from the start of new item
buffers -- i.e., we don't end up with the web process writing out a stream of display list data like:

(Start) Bytes (16, 65520) in ItemBuffer[1]

Bytes (16, 65536) in ItemBuffer[2]
Bytes (65520, 65536) in ItemBuffer[1]

(WebKit::RemoteRenderingBackendProxy::createItemBuffer):
(WebKit::RemoteRenderingBackendProxy::submitDisplayList): Deleted.
(WebKit::RemoteRenderingBackendProxy::updateReusableHandles): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:

(TestWebKitAPI::TEST):

1:28 PM Changeset in webkit [270477] by Fujii Hironori
  • 62 edits in trunk

Remove ENABLE_GRAPHICS_CONTEXT_GL by replacing it with ENABLE(WEBGL)
https://bugs.webkit.org/show_bug.cgi?id=219551

Reviewed by Kenneth Russell.

.:

  • Source/CMakeLists.txt:
  • Source/cmake/GStreamerDependencies.cmake:
  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/OptionsPlayStation.cmake:
  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

GraphicsContextGL is a module only for WebGL. ENABLE_WEBGL should
be removed if all ports enable it.

  • CMakeLists.txt:
  • page/Chrome.cpp:

(WebCore::Chrome::windowScreenDidChange):

  • platform/graphics/ANGLEWebKitBridge.cpp:
  • platform/graphics/ANGLEWebKitBridge.h:
  • platform/graphics/FormatConverter.cpp:
  • platform/graphics/FormatConverter.h:
  • platform/graphics/GLContext.cpp:
  • platform/graphics/GLContext.h:
  • platform/graphics/GraphicsContextGL.cpp:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/GraphicsContextGLAttributes.h:
  • platform/graphics/GraphicsContextGLImageExtractor.cpp:
  • platform/graphics/GraphicsContextGLImageExtractor.h:
  • platform/graphics/OpenGLShims.cpp:
  • platform/graphics/angle/ExtensionsGLANGLE.cpp:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:
  • platform/graphics/angle/GraphicsContextGLANGLEUtilities.h:
  • platform/graphics/angle/TemporaryANGLESetting.cpp:
  • platform/graphics/cairo/GraphicsContextGLCairo.cpp:
  • platform/graphics/cg/GraphicsContextGLCG.cpp:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:
  • platform/graphics/cv/GraphicsContextGLCV.h:
  • platform/graphics/cv/GraphicsContextGLCVANGLE.cpp:
  • platform/graphics/cv/GraphicsContextGLCVANGLE.h:
  • platform/graphics/egl/GLContextEGL.cpp:
  • platform/graphics/egl/GLContextEGL.h:
  • platform/graphics/glx/GLContextGLX.cpp:
  • platform/graphics/glx/GLContextGLX.h:
  • platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.h:
  • platform/graphics/opengl/ExtensionsGLOpenGL.cpp:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:
  • platform/graphics/opengl/ExtensionsGLOpenGLES.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLPrivate.cpp:
  • platform/graphics/opengl/TemporaryOpenGLSetting.cpp:
  • platform/graphics/opengl/TemporaryOpenGLSetting.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:
  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:
  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.h:
  • platform/graphics/win/GraphicsContextGLDirect2D.cpp:

Source/WebKit:

  • CMakeLists.txt:
  • UIProcess/API/glib/WebKitProtocolHandler.cpp:

(WebKit::WebKitProtocolHandler::handleGPU):

  • UIProcess/gtk/HardwareAccelerationManager.cpp:

(WebKit::HardwareAccelerationManager::HardwareAccelerationManager):

Source/WTF:

  • wtf/Platform.h:
  • wtf/PlatformEnable.h:
1:25 PM Changeset in webkit [270476] by Andres Gonzalez
  • 4 edits in trunk/Source/WebCore

Prelininary refactoring of TextMarker and TextMarkerRange.
https://bugs.webkit.org/show_bug.cgi?id=219491

Reviewed by Chris Fleizach.

Covered by existing tests.

TextMarker and TextMarkerRange should become classes on their own right.
As a first step in that direction, this patch moves all the static
functions in WebAccessibilityObjectWrapperMac.mm to make conversions
between TextMarkers and TextMarkerRanges to and from other types to
AXObjectCacheMac.mm.
In addition, removed all ObjectiveC wrappers to these functions and
instead call the functions directly where needed. This is relevant now
with the arrival of isolated tree mode because it saves a non-trivial
call to the wrapper's axBackingObject getter. Furthermore, all the
conversion functions are doing now the appropriate thread check, since
they all need to run on the main thread.
Fixed the handling of the NSAccessibilityMisspellingTextMarkerRangeParameterizedAttribute
request that was calling accessibilityMisspellingSearchCriteriaForParameterizedAttribute
off of the main thread.

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
(WebCore::AXTextMarkerRange):
(WebCore::textMarkerRangeFromMarkers):
(WebCore::AXTextMarkerRangeStart):
(WebCore::AXTextMarkerRangeEnd):
(WebCore::getBytesFromAXTextMarker):
(WebCore::accessibilityObjectForTextMarker):
(WebCore::textMarkerForVisiblePosition):
(WebCore::visiblePositionForTextMarker):
(WebCore::textMarkerRangeFromVisiblePositions):
(WebCore::visiblePositionRangeForTextMarkerRange):
(WebCore::textMarkerForCharacterOffset):
(WebCore::characterOffsetForTextMarker):
(WebCore::startOrEndTextMarkerForRange):
(WebCore::textMarkerRangeFromRange):
(WebCore::rangeForTextMarkerRange):

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

(accessibilityTextOperationForParameterizedAttribute):
(accessibilityMisspellingSearchCriteriaForParameterizedAttribute):
(-[WebAccessibilityObjectWrapper textMarkerForVisiblePosition:]):
(-[WebAccessibilityObjectWrapper textMarkerForFirstPositionInTextControl:]):
(-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:spellCheck:]):
(-[WebAccessibilityObjectWrapper textMarkerRangeFromVisiblePositions:endPosition:]):
(-[WebAccessibilityObjectWrapper textMarkerRangeForSelection]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):
(-[WebAccessibilityObjectWrapper _indexForTextMarker:]):
(-[WebAccessibilityObjectWrapper _textMarkerForIndex:]):
(-[WebAccessibilityObjectWrapper debugDescriptionForTextMarker:]):
(-[WebAccessibilityObjectWrapper debugDescriptionForTextMarkerRange:]):
(-[WebAccessibilityObjectWrapper showNodeForTextMarker:]):
(-[WebAccessibilityObjectWrapper showNodeTreeForTextMarker:]):
(-[WebAccessibilityObjectWrapper textMarkerRangeAtTextMarker:forUnit:]):
(-[WebAccessibilityObjectWrapper lineTextMarkerRangeForTextMarker:forUnit:]):
(-[WebAccessibilityObjectWrapper textMarkerForTextMarker:atUnit:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
(AXTextMarkerRangeStart): MOved to AXObjectCacheMac.mm.
(AXTextMarkerRangeEnd): MOved to AXObjectCacheMac.mm.
(getBytesFromAXTextMarker): MOved to AXObjectCacheMac.mm.
(isTextMarkerIgnored): Deleted.
(-[WebAccessibilityObjectWrapper accessibilityObjectForTextMarker:]): Deleted.
(accessibilityObjectForTextMarker): MOved to AXObjectCacheMac.mm.
(-[WebAccessibilityObjectWrapper textMarkerForCharacterOffset:]): Deleted.
(textMarkerForCharacterOffset): MOved to AXObjectCacheMac.mm.
(-[WebAccessibilityObjectWrapper rangeForTextMarkerRange:]): Deleted.
(characterOffsetForTextMarker): MOved to AXObjectCacheMac.mm.
(-[WebAccessibilityObjectWrapper characterOffsetForTextMarker:]): Deleted.
(visiblePositionForTextMarker): MOved to AXObjectCacheMac.mm.
(visiblePositionRangeForTextMarkerRange): MOved to AXObjectCacheMac.mm.
(-[WebAccessibilityObjectWrapper visiblePositionForTextMarker:]): Deleted.
(-[WebAccessibilityObjectWrapper visiblePositionRangeForTextMarkerRange:]): Deleted.

1:18 PM Changeset in webkit [270475] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Add ScrollAnimation files to the Xcode project
https://bugs.webkit.org/show_bug.cgi?id=219566

Reviewed by Yusuke Suzuki.

ScrollAnimation* files were added to Sources.txt but not the Xcode project.

  • WebCore.xcodeproj/project.pbxproj:
10:53 AM Changeset in webkit [270474] by Simon Fraser
  • 14 edits
    2 copies in trunk/Source/WebCore

[LFC Display] Store the display tree as a tree of stacking items
https://bugs.webkit.org/show_bug.cgi?id=219315

Reviewed by Zalan Bujtas.

Currently the display tree is a full tree, crossing stacking context boundaries, and the
z-order lists are built at paint time.

Change to a tree of StackingItems, where a StackingItem exists for each box that
participates in the z-order sorting algorithm (i.e. boxes that are positioned, or have
styles that create stacking context). Each StackingItem owns the subtree of Display::Boxes
that it paints, and those subtrees are not otherwise connected.

The Display::Tree owns the root StackingItem, and each StackingItem owns its child
StackingItems. The StackingItem tree is built at display tree building time by storing state
in the BuildingState stack. StackingItems are added to the z-order lists of their parent
item at creation time; when done processing boxes for a StackingItem, we then sort its
z-order lists.

Add Box::participatesInZOrderSorting() and a LineBreakBox flag, and call that function
instead of the version on Display::Style to work around webkit.org/b/219335 for now.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/DisplayLayerController.cpp:
  • display/DisplayTree.cpp:

(WebCore::Display::Tree::Tree):
(WebCore::Display::Tree::rootBox const):

  • display/DisplayTree.h:

(WebCore::Display::Tree::rootStackingItem const):
(WebCore::Display::Tree::rootBox const): Deleted.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::build):
(WebCore::Display::TreeBuilder::pushStateForBoxDescendants):
(WebCore::Display::TreeBuilder::popState):
(WebCore::Display::TreeBuilder::insertIntoTree):
(WebCore::Display::TreeBuilder::buildInlineDisplayTree):
(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree):
(WebCore::Display::outputDisplayBox):
(WebCore::Display::outputDisplayTree):
(WebCore::Display::displayTreeAsText):
(WebCore::Display::outputStackingTree):
(WebCore::Display::showDisplayTree):

  • display/DisplayTreeBuilder.h:
  • display/css/DisplayBox.cpp:

(WebCore::Display::Box::participatesInZOrderSorting const):

  • display/css/DisplayBox.h:

(WebCore::Display::Box::isLineBreakBox const):

  • display/css/DisplayBoxFactory.cpp:

(WebCore::Display::BoxFactory::displayBoxForRootBox const):
(WebCore::Display::BoxFactory::displayBoxForLayoutBox const):
(WebCore::Display::BoxFactory::setupBoxModelBox const):

  • display/css/DisplayBoxFactory.h:
  • display/css/DisplayCSSPainter.cpp:

(WebCore::Display::CSSPainter::recursivePaintDescendantsForPhase):
(WebCore::Display::CSSPainter::paintAtomicallyPaintedBox):
(WebCore::Display::CSSPainter::paintStackingContext):
(WebCore::Display::CSSPainter::paintTree):
(WebCore::Display::CSSPainter::isStackingContextPaintingBoundary): Deleted.
(WebCore::Display::CSSPainter::participatesInZOrderSorting): Deleted.
(WebCore::Display::CSSPainter::collectStackingContextDescendants): Deleted.
(WebCore::Display::CSSPainter::recursiveCollectLayers): Deleted.

  • display/css/DisplayCSSPainter.h:
6:23 AM Changeset in webkit [270473] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Create an inline box for </span> when it's the first box on the line
https://bugs.webkit.org/show_bug.cgi?id=219556

Reviewed by Antti Koivisto.

When the line starts with inline-box-end (</span>), we need to create an inline box for that box itself
and for its ancestors as well.

This fixes css1/units/rounding.html with ALLOW_INLINES enabled.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

6:21 AM Changeset in webkit [270472] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Do not construct a new layout box for every inline box end (InlineWalker)
https://bugs.webkit.org/show_bug.cgi?id=219557

Reviewed by Antti Koivisto.

We use the InlineWalker to walk the inline part of the render tree to build the corresponding layout (sub)tree.

With content e.g <span>text</span>, InlineWalker visits

  1. <span> (RenderInline)
  2. text (RenderText)
  3. </span> (RenderInline)

This patch ensures that we don't create yet another layout box for step #3.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

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

[GTK] Unreviewed test gardening. Gardened more media-source timeouts.

  • platform/gtk/TestExpectations:
Note: See TracTimeline for information about the timeline view.