Timeline



Jul 28, 2021:

10:30 PM Changeset in webkit [280417] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WebXR] Require GL_OES_EGL_image extension for xrCompatible GL context
https://bugs.webkit.org/show_bug.cgi?id=228575

Patch by Ada Chan <ada.chan@apple.com> on 2021-07-28
Reviewed by Dean Jackson.

Without this extension, EGLImageTargetTexture2DOES() will fail
in GraphicsContextGLOpenGL::attachIOSurfaceToSharedTexture().

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):

9:18 PM Changeset in webkit [280416] by Jean-Yves Avenard
  • 43 edits
    4 adds in trunk

[WebAudio] Add webm/opus container support
https://bugs.webkit.org/show_bug.cgi?id=227110
<rdar://problem/79437067>

Reviewed by Jer Noble.

Source/WebCore:

Add support for webm in Web Audio.
As decoding needs to be performed in the web content process we
need to ensure that the decoders are available there. For security
reasons, com.apple.audio.AudioComponentRegistrar mach calls are blocked
which prevents registering a new audio component.
We instead register it in the UI process so that AudioComponentFetchServerRegistrations
SPI can forward the registration in the web process.
Unfortunately, for unknown reasons, this fails for Vorbis audio codec (bug 228139).

To demux the webm content, we use the existing SourceBufferParserWebM to extract all
audio packets. We then iterate over all CM Samples and decode them into PCM, performing
resampling as needed on the fly.
There are things left to fix.

  • Opus and Vorbis encoder delay isn't handled (bug 228140) which leaves audible

silence at the beginning of the destination buffer.

  • We can only decode mono and stereo content. Opus and Vorbis let you define a

custom channel ordering, this is particularly used with ambisonic audio (with opus 255 mode).
CoreMedia doesn't easily deal with such re-ordering as it appears to be essentially
designed for audible content. With more than 2 channels, decoding will either fail
or produce channels in the wrong order.

Test: webaudio/decode-audio-data-webm-opus.html

  • Headers.cmake: Export header so that we can register the decoder in the UI process.
  • WebCore.xcodeproj/project.pbxproj: same as above.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::canPlayType const): Make canPlayType(webm/audio; codecs=opus)
work if features is set.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setWebMWebAudioEnabled):
(WebCore::RuntimeEnabledFeatures::webMWebAudioEnabled const):

  • platform/MediaSample.h: Fly-by fix: remove unnecessary WEBCORE_EXPORT
  • platform/audio/AudioBus.cpp:

(WebCore::AudioBus::setLength):

  • platform/audio/AudioBus.h: Add setLength method. Will change the reported length

without touching the underlying storage.

  • platform/audio/AudioChannel.h: Add setLength method. Will change the reported

length without touching the underlying storage.

  • platform/audio/cocoa/AudioFileReaderCocoa.cpp:

(WebCore::tryCreateAudioBufferList): Fix checkedInt use to catch potential overflow
(WebCore::AudioBufferListHolder::AudioBufferListHolder): Add convenience class that
free wrapped AudioBufferList object on exit.
(WebCore::AudioBufferListHolder::~AudioBufferListHolder):
(WebCore::AudioBufferListHolder::operator bool const):
(WebCore::AudioBufferListHolder::operator-> const):
(WebCore::AudioBufferListHolder::operator* const):
(WebCore::AudioBufferListHolder::isValid const):
(WebCore::AudioFileReader::AudioFileReader):
(WebCore::AudioFileReader::isMaybeWebM const): Method to check if the buffer
contains WebM data.
(WebCore::passthroughInputDataCallback): Required for AudioConverterFillComplexBuffer.
Will feed the decoder the data to decode, splitting the multiple packets found
in the CMSampleBuffer.
(WebCore::AudioFileReader::numberOfFrames const): Return the total number of
decoded frames in the packets.
(WebCore::AudioFileReader::fileDataFormat const): Create AudioStreamBasicDescription
related to the demuxed audio track. nullopt if unsupported content.
(WebCore::AudioFileReader::clientDataFormat const):
(WebCore::AudioFileReader::createBus):
(WebCore::AudioFileReader::logChannel const):

  • platform/audio/cocoa/AudioFileReaderCocoa.h:
  • platform/audio/cocoa/AudioSampleDataSource.h: Remove unused typedef.
  • platform/audio/cocoa/AudioSampleDataSource.mm:

(WebCore::AudioSampleDataSource::~AudioSampleDataSource): Fly-by fix, make it use
PAL softlinks
(WebCore::AudioSampleDataSource::setupConverter): Fly-by fix, make it use PAL
softlinks

  • platform/gamepad/mac/HIDGamepadProvider.mm: Fly-by fix, add missing header.
  • platform/graphics/TrackPrivateBase.cpp: Fly-by fix, add missing header.
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:

Fly-by fix required by webkit-prepare : don't tag the whole class as WEBCORE_EXPORT.
Move constructor and destructor function definitions out-of-line to prevent
linkage errors.

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

(WebCore::MediaSampleAVFObjC::MediaSampleAVFObjC): Move code

  • platform/graphics/cocoa/WebCoreDecompressionSession.mm: Fly-by fix, add missing header.
  • platform/graphics/cocoa/WebMAudioUtilitiesCocoa.h: Export some symbols, add new

method definitions.

  • platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm:

(WebCore::registerDecoderFactory): Instead of attempting to register the decoder
by dl-opening the required library, first attempting to see if the decoder is
already available. Calling AudioComponentRegister in the web content process
when the GPU process is enabled will fail due to sandbox settings. Which would
incorrectly report the codec to not be available when it was.
(WebCore::createAudioFormatDescriptionForFormat):
(WebCore::isOpusDecoderAvailable): Fly-by fix, should the method be called
on non-mac platform it would have return the unitialized value of the available
static variable.
(WebCore::registerOpusDecoderIfNeeded): Added
(WebCore::isVorbisDecoderAvailable): Same as isOpusDecoderAvailable
(WebCore::registerVorbisDecoderIfNeeded): Added

Source/WebCore/PAL:

Add various AVFoundation (AVAudioConverter) related methods and
CoreMedia to access required CMSampleBuffer related methods.

  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h:
  • pal/cocoa/AVFoundationSoftLink.h:
  • pal/cocoa/AVFoundationSoftLink.mm:

Source/WebKit:

Add default value for webm_webaudio feature flag for the different platforms.
Disabled by default on all platforms.
Fly-by fix: don't make webm parser dependent on VP9 support.

  • FeatureFlags/WebKit-appletvos.plist:
  • FeatureFlags/WebKit-ios.plist:
  • FeatureFlags/WebKit-macos.plist:
  • FeatureFlags/WebKit-watchos.plist:
  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultWebMWebAudioEnabled):

  • Shared/WebPreferencesDefaultValues.h:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::sendAudioComponentRegistrations):

Source/WTF:

Add WebMWebAudioEnabled preference to make canPlayType return probably for mimetype:
"audio/webm; codecs=opus"
Disabled by default.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

  • platform/mac/TestExpectations: Only enable test on macOS Monterey
  • webaudio/decode-audio-data-basic.html: fix whitespace
  • webaudio/decode-audio-data-webm-opus-expected.txt: Added.
  • webaudio/decode-audio-data-webm-opus.html: Added.
  • webaudio/resources/media/opus.webm: Added.
  • webaudio/resources/media/vorbis.webm: Added.
9:04 PM Changeset in webkit [280415] by sihui_liu@apple.com
  • 25 edits
    7 adds in trunk

Implement IDBTransaction.durability
https://bugs.webkit.org/show_bug.cgi?id=228289

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/IndexedDB/idlharness.any-expected.txt:
  • web-platform-tests/IndexedDB/idlharness.any.worker-expected.txt:
  • web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any-expected.txt:
  • web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.worker-expected.txt:

Source/WebCore:

Spec: https://www.w3.org/TR/IndexedDB/#dom-idbtransaction-durability

https://www.w3.org/TR/IndexedDB/#dictdef-idbtransactionoptions

IDBTransaction.durability gives a hint about durability of a transaction. If it's strict, backend would try
syncing data to database file after transaction commit, which enforces durability. If it's relaxed, it means
data may stay in the OS buffer some time after transaction commit, which gives better performance. Firefox and
Chrome already implemented durability. They have different ways of setting durability, and we choose to use
TransactionOptions as spec.

Rebaselined existing tests.
New tests: storage/indexeddb/idbtransaction-durability-private.html

storage/indexeddb/idbtransaction-durability.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Headers.cmake:
  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::transaction):

  • Modules/indexeddb/IDBDatabase.h:
  • Modules/indexeddb/IDBDatabase.idl:
  • Modules/indexeddb/IDBTransaction.h:
  • Modules/indexeddb/IDBTransaction.idl:
  • Modules/indexeddb/IDBTransactionDurability.h: Added.
  • Modules/indexeddb/IDBTransactionDurability.idl: Added.
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::commitTransaction):

  • Modules/indexeddb/server/SQLiteIDBTransaction.h:

(WebCore::IDBServer::SQLiteIDBTransaction::durability const):

  • Modules/indexeddb/shared/IDBTransactionInfo.cpp:

(WebCore::IDBTransactionInfo::clientTransaction):
(WebCore::IDBTransactionInfo::IDBTransactionInfo):
(WebCore::IDBTransactionInfo::isolatedCopy):

  • Modules/indexeddb/shared/IDBTransactionInfo.h:

(WebCore::IDBTransactionInfo::durability const):
(WebCore::IDBTransactionInfo::encode const):
(WebCore::IDBTransactionInfo::decode):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/sql/SQLiteDatabase.cpp:

(WebCore::checkpointModeValue):
(WebCore::SQLiteDatabase::checkpoint):
(WebCore::SQLiteDatabase::useWALJournalMode):

  • platform/sql/SQLiteDatabase.h:

LayoutTests:

  • storage/indexeddb/idbtransaction-durability-expected.txt: Added.
  • storage/indexeddb/idbtransaction-durability-private-expected.txt: Added.
  • storage/indexeddb/idbtransaction-durability-private.html: Added.
  • storage/indexeddb/idbtransaction-durability.html: Added.
  • storage/indexeddb/resources/idbtransaction-durability.js: Added.

(onOpenUpgradeNeeded):
(onOpenSuccess):
(onTransactionComplete):

7:33 PM Changeset in webkit [280414] by rniwa@webkit.org
  • 4 edits in trunk

makeWeakPtr should support Ref and RefPtr as the argument
https://bugs.webkit.org/show_bug.cgi?id=228574

Reviewed by Wenson Hsieh.

Source/WTF:

This patch adds variants of makeWeakPtr<T> which take Ref<T> and RefPtr<T>.

Tests: TestWebKitAPI.WTF_WeakPtr.MakeWeakPtrTakesRef

TestWebKitAPI.WTF_WeakPtr.MakeWeakPtrTakesRefPtr

  • wtf/WeakPtr.h:

(WTF::makeWeakPtr):

Tools:

Added unit tests for makeWeakPtr<T> on Ref<T> and RefPtr<T>.

  • TestWebKitAPI/Tests/WTF/WeakPtr.cpp:

(TestWebKitAPI::BaseObjectWithRefAndWeakPtr): Added.
(TestWebKitAPI::BaseObjectWithRefAndWeakPtr::create): Added.
(TestWebKitAPI::BaseObjectWithRefAndWeakPtr::someFunction):
(TestWebKitAPI::DerivedObjectWithRefAndWeakPtr): Added.
(TestWebKitAPI::DerivedObjectWithRefAndWeakPtr::create):
(WTF_WeakPtr.MakeWeakPtrTakesRef): Added.
(WTF_WeakPtr.MakeWeakPtrTakesRefPtr): Added.

7:31 PM Changeset in webkit [280413] by Jonathan Bedard
  • 5 edits in trunk/Tools

[webkitcorepy] Add hybridmethod decorator
https://bugs.webkit.org/show_bug.cgi?id=225991
<rdar://problem/78230701>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/decorators.py:

(hybridmethod): Similar to the "classmethod" decorator, except this decorator allows the
decorated functions to differentiate between being called by the class and an instance
of the class.

  • Scripts/libraries/webkitcorepy/webkitcorepy/tests/decorators_unittest.py:

(TestHybrid):
(TestHybrid.is_type):
(TestHybrid.test_type):
(TestHybrid.test_instance):

6:48 PM Changeset in webkit [280412] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitcorepy] Fix race condition in TaskPool unittests (follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=227455
<rdar://problem/79873003>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py:

(TaskPoolUnittest.test_invalid_shutdown): Deleted.

5:09 PM Changeset in webkit [280411] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iPad ] platform/ipad/media/modern-media-controls/media-documents/media-document-audio-ios-sizing.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=228570#c0

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
4:35 PM Changeset in webkit [280410] by sihui_liu@apple.com
  • 11 edits
    5 adds in trunk

IDBFactory.databases should not return databases with invalid version
https://bugs.webkit.org/show_bug.cgi?id=228554

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/IndexedDB/get-databases.any-expected.txt:
  • web-platform-tests/IndexedDB/get-databases.any.worker-expected.txt:

Source/WebCore:

To get database information, we used to open all database files and read from them. To avoid opening new
connection to databases that are already opened, and to ensure we get the latest information, for database that
is already opened, we should get its information from UniqueIDBDatabase directly. If database is not opened, we
open its file and read. By doing this, we also fix the issue that no databases are returned in private browsing
(since there is no file created).

Also, version 0 means the database is just created and has not finished version change transaction (version 1
is the first valid version according to spec), so we should not return databases with version 0.

Tests: storage/indexeddb/getdatabases-private.html

storage/indexeddb/getdatabases.html

  • Modules/indexeddb/server/IDBBackingStore.h:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::getDatabaseNameAndVersionFromOriginDirectory):
(WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions):

  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::filePath const):
(WebCore::IDBServer::UniqueIDBDatabase::nameAndVersion const):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

LayoutTests:

  • storage/indexeddb/getdatabases-expected.txt: Added.
  • storage/indexeddb/getdatabases-private-expected.txt: Added.
  • storage/indexeddb/getdatabases-private.html: Added.
  • storage/indexeddb/getdatabases.html: Added.
  • storage/indexeddb/resources/getdatabases.js: Added.

(test):

4:33 PM Changeset in webkit [280409] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iPad ] platform/ipad/media/modern-media-controls/media-documents/media-document-audio-ios-sizing.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=228570#c0

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
4:11 PM Changeset in webkit [280408] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

fast/dom/webtiming-document-open.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228571.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:03 PM Changeset in webkit [280407] by Ayumi Kojima
  • 1 edit
    2 adds in trunk/LayoutTests

[ iPad ] Rebaseline 2 imported/w3c/web-platform-tests/html tests.
https://bugs.webkit.org/show_bug.cgi?id=228568

Unreviewed test gardening.

  • platform/ipad/imported/w3c/web-platform-tests/html/browsers/the-window-object/dialog-form-submission-expected.txt: Added.
  • platform/ipad/imported/w3c/web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-sizing.window-expected.txt: Added.
3:33 PM Changeset in webkit [280406] by Russell Epstein
  • 8 edits in branches/safari-612.1.24.11-branch/Source

Versioning.

WebKit-7612.1.24.11.7

3:02 PM Changeset in webkit [280405] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, Rebaseline imported/w3c/web-platform-tests/html/dom/idlharness.https.html on iPad.

  • platform/ipad/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
2:58 PM Changeset in webkit [280404] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests/imported/w3c

Unreviewed, reverting r280402.

Wrong baseline set.

Reverted changeset:

"[ iPad ] Rebaseline 2 imported/w3c/web-platform-tests/html
tests."
https://bugs.webkit.org/show_bug.cgi?id=228568
https://commits.webkit.org/r280402

2:51 PM Changeset in webkit [280403] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

Update test expectations for inspector/canvas/recording-html-2d.html and inspector/canvas/updateShader-webgpu.html.
https://bugs.webkit.org/show_bug.cgi?id=227881.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
2:50 PM Changeset in webkit [280402] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests/imported/w3c

[ iPad ] Rebaseline 2 imported/w3c/web-platform-tests/html tests.
https://bugs.webkit.org/show_bug.cgi?id=228568

Unreviewed test gardening.

  • web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-sizing.window-expected.txt:
2:46 PM Changeset in webkit [280401] by mmaxfield@apple.com
  • 8 edits in trunk/Source

[GPU Process] Start tracking resource uses for ImageBuffers
https://bugs.webkit.org/show_bug.cgi?id=228225

Reviewed by Said Abou-Hallawa.

Source/WebCore:

This is part 4 of https://bugs.webkit.org/show_bug.cgi?id=228216.

This works the same way as NativeImages/Fonts (https://bugs.webkit.org/show_bug.cgi?id=228224).
The only real difference to how ImageBuffers work today is that RemoteImageBufferProxy's destructor
doesn't directly tell the RemoteRenderingBackendProxy to release its RenderingResourceIdentifier,
but instead this codepath goes through the RemoteResourceCacheProxy which is tracking the number of
uses of the resource. This is so the RemoteResourceCacheProxy can inject the use count into the
ReleaseRemoteResource command.

Covered by existing tests.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

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

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::Delegate::recordImageBufferUse):

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::applyImageBufferItem):
(WebCore::DisplayList::Replayer::applyItem):

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::~RemoteImageBufferProxy):

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::cacheImageBuffer):
(WebKit::RemoteResourceCacheProxy::cachedImageBuffer):
(WebKit::RemoteResourceCacheProxy::releaseImageBuffer):
(WebKit::RemoteResourceCacheProxy::recordImageBufferUse):
(WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed):

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
2:43 PM Changeset in webkit [280400] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

[iOS] Ignore extra route change notifications
https://bugs.webkit.org/show_bug.cgi?id=228565

Reviewed by Jer Noble.

Tested manually, this only reproduces on iOS hardware.

  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h:
  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:

(WebCore::AVAudioSessionCaptureDeviceManager::scheduleUpdateCaptureDevices): Do
nothing if m_recomputeDevices is true.
(WebCore::AVAudioSessionCaptureDeviceManager::computeCaptureDevices): Don't rebuilding
device list unless m_recomputeDevices is set. Clear m_recomputeDevices after after
rebuilding list.

2:36 PM Changeset in webkit [280399] by Jonathan Bedard
  • 5 edits in trunk/Tools

[ews-build.webkit.org] Verify GitHub integrity in commit queue
https://bugs.webkit.org/show_bug.cgi?id=228563
<rdar://problem/81230685>

Reviewed by Aakash Jain.

  • CISupport/ews-build/factories.py:

(CommitQueueFactory.init): Add VerifyGitHubIntegrity.

  • CISupport/ews-build/factories_unittest.py:

(TestCommitQueueFactory.test_commit_queue_factory):

  • CISupport/ews-build/steps.py:

(CheckPatchStatusOnEWSQueues.start):
(VerifyGitHubIntegrity):
(VerifyGitHubIntegrity.init):
(VerifyGitHubIntegrity.getResultSummary):

  • Scripts/check-github-mirror-integrity: Import webkitscmpy from webkitpy.
1:21 PM Changeset in webkit [280398] by Aditya Keerthi
  • 12 edits
    2 adds in trunk

[iOS] <select> picker value committed to incorrect element after programmatic focus change
https://bugs.webkit.org/show_bug.cgi?id=228556
rdar://81222952

Reviewed by Wenson Hsieh.

Source/WebKit:

The old <select> picker is a UIPickerView that only commits any value
changes to the WebProcess once the user dismisses the picker, or focus
is lost programmatically. Currently, the value change is committed by
sending a message to the WebProcess, telling it to update the value of
the currently focused element. However, when focus is changed
programmatically, the focused element in the WebProcess is updated
before the commit, and the incorrect element's value can be changed.

To fix, update all methods which commit value changes to the focused
element to take an ElementContext parameter representing the element
that needs its value modified. Then, in the WebProcess, rather than
commit the value change to the currently focused element, retrieve the
element from the ElementContext, ensuring the correct element is
updated.

Note that this bug only surfaces in the old <select> picker, on apps
linked before iOS 13, since the new picker commits value changes
immediately and dismisses itself.

Test: fast/forms/ios/select-picker-change-and-focus-another-select-programmatically.html

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

(-[WKContentView accessoryClear]):
(-[WKContentView updateFocusedElementValueAsNumber:]):
(-[WKContentView updateFocusedElementValue:]):
(-[WKContentView updateFocusedElementValueAsColor:]):
(-[WKContentView updateFocusedElementSelectedIndex:allowsMultipleSelection:]):
(-[WKContentView insertTextSuggestion:]):
(-[WKContentView selectMenu:didSelectItemAtIndex:]):
(-[WKContentView selectMenu:didCheckItemAtIndex:checked:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::setFocusedElementValue):
(WebKit::WebPageProxy::setFocusedElementValueAsNumber):
(WebKit::WebPageProxy::setFocusedElementSelectedIndex):

  • UIProcess/ios/forms/WKDateTimeInputControl.mm:

(-[WKDateTimePicker reset:]):

  • UIProcess/ios/forms/WKFormSelectPicker.mm:

(-[WKMultipleSelectPicker pickerView:row:column:checked:]):
(-[WKSelectSinglePicker controlEndEditing]):
(-[WKSelectPicker didSelectOptionIndex:]):
(-[WKSelectPickerTableViewController tableView:didSelectRowAtIndexPath:]):

  • UIProcess/ios/forms/WKFormSelectPopover.mm:

(-[WKSelectTableViewController tableView:didSelectRowAtIndexPath:]):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::setFocusedElementValue):
(WebKit::WebPage::setFocusedElementValueAsNumber):
(WebKit::WebPage::setFocusedElementSelectedIndex):

LayoutTests:

Added a test to verify that changing focus programmatically, while changes
in the <select> picker have not been committed, updates the value of the
correct element.

  • fast/forms/ios/select-picker-change-and-focus-another-select-programmatically-expected.txt: Added.
  • fast/forms/ios/select-picker-change-and-focus-another-select-programmatically.html: Added.
1:07 PM Changeset in webkit [280397] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

iOS Simulator doesn't have any WebKit system feature flags
https://bugs.webkit.org/show_bug.cgi?id=228557
rdar://80991854

Reviewed by Darin Adler.

  • Scripts/generate-feature-flags-plist.sh:

Install iOS feature flags for the simulator (and watchOS and tvOS for their respective simulators).
This was causing on-by-default features like GPUP to be disabled in the simulator.

12:31 PM Changeset in webkit [280396] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

AppHighlightStorage should not inherit privately from RefCounted
https://bugs.webkit.org/show_bug.cgi?id=228562

Reviewed by Wenson Hsieh.

AppHighlightStorage is only stored with unique_ptr. There is no reason for this class
to *privately* inherit from RefCounted.

  • Modules/highlight/AppHighlightStorage.h:
12:26 PM Changeset in webkit [280395] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

http/tests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-live-broadcast.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=228561.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
12:10 PM Changeset in webkit [280394] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Deploy more use of smart pointers in Document.cpp
https://bugs.webkit.org/show_bug.cgi?id=228544

A partial revert of r280390 to fix builds. AppHighlightStorage isn't really ref-counted.

  • dom/Document.cpp:

(WebCore::Document::finishedParsing):

11:57 AM Changeset in webkit [280393] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

storage/indexeddb/detached-iframe.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207844

Unreviewed test gardening.

  • platform/ios-14/TestExpectations:
  • platform/ios-wk2/TestExpectations:
11:57 AM Changeset in webkit [280392] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WTF

[Cocoa] macOS Monterey and parallel OSes no longer need r280103
https://bugs.webkit.org/show_bug.cgi?id=228539

Reviewed by Alan Bujtas.

Core Text's behavior changed on these OSes.

  • wtf/PlatformUse.h:
11:49 AM Changeset in webkit [280391] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] load/store with BaseIndex is inefficient in ARM64
https://bugs.webkit.org/show_bug.cgi?id=228543

Reviewed by Mark Lam.

While we are frequently using load + BaseIndex (with offset) in RegExp code,
we emit 3 instructions in ARM64. This can be represented in 2 instructions.
This patch adds that path to make generated code tight in ARM64 RegExp.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load64):
(JSC::MacroAssemblerARM64::load32):
(JSC::MacroAssemblerARM64::load16):
(JSC::MacroAssemblerARM64::load16SignedExtendTo32):
(JSC::MacroAssemblerARM64::load8):
(JSC::MacroAssemblerARM64::load8SignedExtendTo32):
(JSC::MacroAssemblerARM64::store64):
(JSC::MacroAssemblerARM64::store32):
(JSC::MacroAssemblerARM64::store16):
(JSC::MacroAssemblerARM64::store8):
(JSC::MacroAssemblerARM64::loadDouble):
(JSC::MacroAssemblerARM64::loadFloat):
(JSC::MacroAssemblerARM64::storeDouble):
(JSC::MacroAssemblerARM64::storeFloat):
(JSC::MacroAssemblerARM64::tryFoldBaseAndOffsetPart):

  • assembler/testmasm.cpp:

(JSC::testLoadBaseIndex):
(JSC::testStoreBaseIndex):

10:53 AM Changeset in webkit [280390] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Deploy more use of smart pointers in Document.cpp
https://bugs.webkit.org/show_bug.cgi?id=228544

Reviewed by Darin Adler.

Deployed RefPtr in more places in Document.cpp

  • dom/Document.cpp:

(WebCore::acceptsEditingFocus):
(WebCore::canAccessAncestor):
(WebCore::createHTMLElementWithNameValidation):
(WebCore::Document::adoptNode):
(WebCore::createFallbackHTMLElement):
(WebCore::Document::setVisualUpdatesAllowed):
(WebCore::Document::setTitle):
(WebCore::Document::resolveStyle):
(WebCore::Document::updateLayout):
(WebCore::Document::updateLayoutIfDimensionsOutOfDate):
(WebCore::Document::frameDestroyed):
(WebCore::Document::removeAllEventListeners):
(WebCore::Document::setBodyOrFrameset):
(WebCore::Document::implicitClose):
(WebCore::Document::isNavigationBlockedByThirdPartyIFrameRedirectBlocking):
(WebCore::Document::didRemoveAllPendingStylesheet):
(WebCore::Document::processHttpEquiv):
(WebCore::Document::processColorScheme):
(WebCore::Document::prepareMouseEvent):
(WebCore::Document::updateViewportUnitsOnResize):
(WebCore::Document::runResizeSteps):
(WebCore::Document::runScrollSteps):
(WebCore::Document::invalidateScrollbars):
(WebCore::Document::adjustFocusedNodeOnNodeRemoval):
(WebCore::Document::invalidateEventRegionsForFrame):
(WebCore::Document::invalidateRenderingDependentRegions):
(WebCore::Document::setFocusedElement):
(WebCore::Document::setBackForwardCacheState):
(WebCore::Document::documentWillBecomeInactive):
(WebCore::Document::setDesignMode):
(WebCore::Document::finishedParsing):
(WebCore::Document::initSecurityContext):
(WebCore::Document::initContentSecurityPolicy):
(WebCore::Document::updateURLForPushOrReplaceState):
(WebCore::Document::getCSSCanvasContext):
(WebCore::Document::loadEventDelayTimerFired):
(WebCore::Document::checkCompleted):
(WebCore::Document::wheelEventHandlersChanged):
(WebCore::Document::didAddWheelEventHandler):
(WebCore::Document::didRemoveWheelEventHandler):
(WebCore::Document::didAddTouchEventHandler):
(WebCore::Document::didRemoveTouchEventHandler):
(WebCore::Document::absoluteEventRegionForNode):
(WebCore::Document::absoluteRegionForEventTargets):
(WebCore::Document::updateLastHandledUserGestureTimestamp):
(WebCore::DocumentParserYieldToken::DocumentParserYieldToken):
(WebCore::DocumentParserYieldToken::~DocumentParserYieldToken):
(WebCore::Document::updateHoverActiveState):
(WebCore::Document::updateIntersectionObservations):
(WebCore::Document::bgColor const):
(WebCore::Document::setBgColor):
(WebCore::Document::fgColor const):
(WebCore::Document::setFgColor):
(WebCore::Document::alinkColor const):
(WebCore::Document::setAlinkColor):
(WebCore::Document::linkColorForBindings const):
(WebCore::Document::setLinkColorForBindings):
(WebCore::Document::vlinkColor const):
(WebCore::Document::setVlinkColor):
(WebCore::Document::dispatchSystemPreviewActionEvent):

9:31 AM Changeset in webkit [280389] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

REGRESSION (r264117): [ Mac iOS ] imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/blob.https.html.
https://bugs.webkit.org/show_bug.cgi?id=214155

Unreviewed test gardening.

  • platform/ios/TestExpectations:
9:12 AM Changeset in webkit [280388] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-events.html is crashing in debug.
https://bugs.webkit.org/show_bug.cgi?id=227501

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
9:03 AM Changeset in webkit [280387] by Alan Coon
  • 1 copy in tags/Safari-612.1.25.1

Tag Safari-612.1.25.1.

9:02 AM Changeset in webkit [280386] by Alan Coon
  • 2 edits in branches/safari-612.1.25-branch/Source/WebCore/PAL

Cherry-pick r280384. rdar://problem/81218821

Fix build with SDKs containing new CFNetwork SPI declaration
https://bugs.webkit.org/show_bug.cgi?id=228553
<rdar://81202574>

Reviewed by Brady Eidson.

CFNSURLConnection.h also has "@interface NSURLSessionConfiguration ()"
ObjC doesn't like it if you have the exact same thing in the parentheses and a duplicate declaration.
I reproduced the build failure with a modified SDK and verified this fixes it.

  • pal/spi/cf/CFNetworkSPI.h:

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

8:57 AM Changeset in webkit [280385] by commit-queue@webkit.org
  • 5 edits in trunk

WebSocket: Safari on iOS 15 beta 3 is sending invalid close frame
https://bugs.webkit.org/show_bug.cgi?id=228329

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

Source/WebKit:

Our NSURLSession WebSocket implementation had two bugs:

  1. It was sending 1005 as the close code if none was specified. It now sends no close code, which matches Chrome and Firefox.
  2. It was not sending a close code before the close reason when a WebSocket is closed due to navigation. It now sends the close code in 2 bytes before the reason, which matches Chrome and Firefox. Side note: our CFReadStream/CFWriteStream implementation sent neither the code nor the reason in this case, which matches no other browser.

Covered by an API test.

  • NetworkProcess/cocoa/WebSocketTaskCocoa.mm:

(WebKit::WebSocketTask::close):

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::fail):
(WebKit::WebSocketChannel::disconnect):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebSocket.mm:

(TestWebKitAPI::TEST):

8:55 AM Changeset in webkit [280384] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

Fix build with SDKs containing new CFNetwork SPI declaration
https://bugs.webkit.org/show_bug.cgi?id=228553
<rdar://81202574>

Reviewed by Brady Eidson.

CFNSURLConnection.h also has "@interface NSURLSessionConfiguration ()"
ObjC doesn't like it if you have the exact same thing in the parentheses and a duplicate declaration.
I reproduced the build failure with a modified SDK and verified this fixes it.

  • pal/spi/cf/CFNetworkSPI.h:
8:33 AM Changeset in webkit [280383] by Alan Coon
  • 8 edits in branches/safari-612.1.25-branch/Source

Versioning.

WebKit-7612.1.25.1

8:01 AM Changeset in webkit [280382] by commit-queue@webkit.org
  • 15 edits
    2 adds in trunk

[WPE][GTK] SVN_REVISION drifting away if bots don't re-run cmake
https://bugs.webkit.org/show_bug.cgi?id=228290

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

.:

The CMake configure_file() is now used only tarball builds for files requiring information
about the build revision. For developer builds a custom target now takes care of keeping
those files up-to-date.

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:

Source/JavaScriptCore:

  • PlatformGTK.cmake: Expand ${BUILD_REVISION} with apply-build-revision-to-files.py for

non-tarball builds, or let CMake do it for tarball builds.

  • javascriptcoregtk.pc.in: Switch revision var to ${} format, so that we can choose to

either let CMake expand it or do it ourselves.

Source/WebKit:

  • PlatformGTK.cmake: Expand ${BUILD_REVISION} with apply-build-revision-to-files.py for

non-tarball builds, or let CMake do it for tarball builds.

  • PlatformWPE.cmake: Ditto.
  • UIProcess/API/glib/WebKitProtocolHandler.cpp:

(WebKit::WebKitProtocolHandler::handleGPU): Use generated BuildRevision.h header

  • gtk/webkit2gtk-web-extension.pc.in: Switch revision var to ${} format, so that we can choose to

either let CMake expand it or do it ourselves.

  • gtk/webkit2gtk.pc.in: Ditto.

Tools:

  • MiniBrowser/gtk/main.c:

(main): Use generated BuildRevision.h header.

  • glib/apply-build-revision-to-files.py: Added.

(main):

7:01 AM Changeset in webkit [280381] by commit-queue@webkit.org
  • 3 edits
    4 adds in trunk

Crash in ApplyStyleCommand::applyRelativeFontStyleChange
https://bugs.webkit.org/show_bug.cgi?id=226926

Patch by Frédéric Wang <fwang@igalia.com> on 2021-07-28
Reviewed by Ryosuke Niwa.

Source/WebCore:

In r179944 and r180050, special handling was added for display: grid/flex nodes in
Position::isCandidate in order to make them editable but the same logic was not added in
PositionIterator::isCandidate. This patch fixes that inconsistency as well as the
corresponding debug ASSERT and release nullptr dereference.

Tests: fast/editing/apply-relative-font-style-change-crash-001.html

fast/editing/apply-relative-font-style-change-crash-002.html

  • dom/PositionIterator.cpp:

(WebCore::PositionIterator::isCandidate const): Handle flexbox and grid.

LayoutTests:

Add regression tests.

  • fast/editing/apply-relative-font-style-change-crash-001-expected.txt: Added.
  • fast/editing/apply-relative-font-style-change-crash-001-expected.txt: Added.
  • fast/editing/apply-relative-font-style-change-crash-002.html: Added.
  • fast/editing/apply-relative-font-style-change-crash-002.html: Added.
1:34 AM Changeset in webkit [280380] by commit-queue@webkit.org
  • 18 edits
    1 add
    3 deletes in trunk/Tools/buildstream

[Flatpak SDK] Dependencies update - July 2021 round
https://bugs.webkit.org/show_bug.cgi?id=228275

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

  • elements/freedesktop-sdk.bst: Update to latest 20.08 junction version.
  • elements/qt5/qtbase.bst: Switch to KDE 5.15 branch.
  • elements/qt5/qtdeclarative.bst: Ditto.
  • elements/qt5/qtquickcontrols.bst: Ditto.
  • elements/qt5/qtquickcontrols2.bst: Ditto.
  • elements/qt5/qtwayland.bst: Ditto.
  • elements/qt5/qtx11extras.bst: Ditto.
  • elements/sdk-build-depends/rapidjson.bst: Update to latest git snapshot.
  • elements/sdk-platform.bst: Add virtualenv, needed for WPT tests.
  • elements/sdk/ccls.bst: Update to latest release.
  • elements/sdk/clangd.bst: Bump to version 12.
  • elements/sdk/ffmpeg.bst: Bump to version 4.4.
  • elements/sdk/openjpeg.bst: Bump to version 2.4.
  • elements/sdk/rr.bst: Update to latest git snapshot.
  • elements/sdk/x264.bst: Ditto. Snapshot tarballs were discontinued years ago.
  • patches/qtbase-make-sure-to-correctly-construct-base-platform-theme.patch: Removed.
  • patches/qtbase-revert-correct-handling-for-xdg-runtime-dir.patch: Removed.
  • patches/qtbase-revert-qstandardpaths-dont-change-permissions-on-xdg-runtime-dir.patch: Added.
  • patches/qtdeclarative-use-python3.patch: Removed.
  • project.conf:
1:29 AM Changeset in webkit [280379] by Diego Pino Garcia
  • 4 edits in trunk/Tools

[WPE] Add missing required dependencies to build WPE
https://bugs.webkit.org/show_bug.cgi?id=228530

Reviewed by Adrian Perez de Castro.

Script Tools/wpe/install-dependencies was not installing all the required
package dependencies necessary to build WPE. There were several
packages missing or other ones which were only present in the
WebKitGTK list of package dependencies (moved to GLIB).

  • glib/dependencies/apt:
  • gtk/dependencies/apt:
  • wpe/dependencies/apt:
12:19 AM Changeset in webkit [280378] by Fujii Hironori
  • 2 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo/TestExpectations:

Jul 27, 2021:

11:19 PM Changeset in webkit [280377] by Robert Jenner
  • 1 edit
    1 delete in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/fullscreen resources
https://bugs.webkit.org/show_bug.cgi?id=226831

Reviewed by Alex Christensen.

Removing un-used resoruces after php tests were converted to Python.

  • fullscreen/resources/not-allowed.html: Removed.
10:55 PM Changeset in webkit [280376] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

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

No new tests, no new behaviors.

  • html/DOMFormData.cpp:

(WebCore::DOMFormData::create):

9:35 PM Changeset in webkit [280375] by sihui_liu@apple.com
  • 8 edits in trunk/LayoutTests

Update platform specific TestExpectations for imported IndexedDB tests
https://bugs.webkit.org/show_bug.cgi?id=228241

Reviewed by Alex Christensen.

Update LayoutTests/TestExpectations based on latest test results as we have fixed some existing issues, and
these tests should not fail now.

  • platform/ios-device/TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
8:56 PM Changeset in webkit [280374] by Devin Rousso
  • 19 edits
    2 adds in trunk

[Modern Media Controls] [macOS] Overflow button still shows as on even after contextmenu is dismissed
https://bugs.webkit.org/show_bug.cgi?id=228310
<rdar://problem/81124786>

Reviewed by Wenson Hsieh.

Source/WebCore:

Test: media/modern-media-controls/overflow-support/button-state.html

  • page/ContextMenuController.h:
  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::didDismissContextMenu): Added.

  • page/ContextMenuProvider.h:

(WebCore::ContextMenuProvider::didDismissContextMenu): Added.
Add plumbing from WebKit to the ContextMenuProvider for when the contextmenu is dismissed.

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsContextMenuProvider::didDismissContextMenu): Added.
When the contextmenu is dismissed, invoke the callback provided to MediaControlsHost::showMediaControlsContextMenu
as that's the signal to the MediaController that the contextmenu interaction is over,
which adjusts the on state of the Button.

Source/WebKit:

Pipe along the -[NSMenuDelegate menuDidClose:] signal to the WebProcess so the WebCore::ContextMenuProvider
can handle it if needed.

  • UIProcess/WebContextMenuProxy.cpp:

(WebKit::WebContextMenuProxy::useContextMenuItems):

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(-[WKMenuDelegate menuWillOpen:]):
(-[WKMenuDelegate menuDidClose:]):

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

(WebKit::WebPageProxy::showContextMenu):
(WebKit::WebPageProxy::didShowContextMenu):
(WebKit::WebPageProxy::didDismissContextMenu): Added.

  • WebProcess/WebPage/WebContextMenu.cpp:

(WebKit::WebContextMenu::show):

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

(WebKit::WebPage::startWaitingForContextMenuToShow): Added.
(WebKit::WebPage::contextMenuShowing): Deleted.
(WebKit::WebPage::contextMenuHidden): Deleted.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didShowContextMenu): Added.
(WebKit::WebPage::didDismissContextMenu): Added.
(WebKit::WebPage::mouseEvent):
Drive-by: Rename m_contextMenuShowing to m_waitingForContextMenuToShow for clarity.

Tools:

  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView dismissActiveMenu]):
(-[TestRunnerWKWebView immediatelyDismissContextMenuIfNeeded]):
(-[TestRunnerWKWebView _dismissAllContextMenuInteractions]): Added.

LayoutTests:

  • media/modern-media-controls/overflow-support/button-state.html: Added.
  • media/modern-media-controls/overflow-support/button-state-expected.txt: Added.
  • media/modern-media-controls/overflow-support/playback-speed.html:
  • media/modern-media-controls/tracks-support/click-track-in-contextmenu.html:

Adjust how these tests wait for and dismiss the contextmenu.

8:02 PM Changeset in webkit [280373] by Russell Epstein
  • 1 copy in tags/Safari-612.1.24.11.6

Tag Safari-612.1.24.11.6.

8:01 PM Changeset in webkit [280372] by Russell Epstein
  • 2 edits in branches/safari-612.1.24.11-branch/Source/WebKit

Cherry-pick r280351. rdar://problem/81196087

The bundle path of downlevel Safari is wrong
https://bugs.webkit.org/show_bug.cgi?id=228339

Reviewed by Jer Noble.

Fix the bundle path. The correct path is "/Library/Apple/System/Library/StagedFrameworks/Safari".

  • Shared/Cocoa/WebPreferencesDefaultValuesCocoa.mm: (WebKit::isFeatureFlagEnabled):

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

7:58 PM Changeset in webkit [280371] by Russell Epstein
  • 8 edits in branches/safari-612.1.24.11-branch/Source

Versioning.

WebKit-7612.1.24.11.6

7:32 PM Changeset in webkit [280370] by Patrick Angle
  • 2 edits in trunk/Source/JavaScriptCore

Web Inspector: [Cocoa] "RemoteInspector XPC connection to relay failed." messages are confusing in StdErr
https://bugs.webkit.org/show_bug.cgi?id=228303

Reviewed by Darin Adler.

Remove overly verbose and confusing WTFLogAlways messages added in r278413, which can confuse applications
listening to stderr of a process using JavaScriptCore.

  • inspector/remote/cocoa/RemoteInspectorCocoa.mm:

(Inspector::RemoteInspector::xpcConnectionFailed):

7:20 PM Changeset in webkit [280369] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

[macOS] Stop away unpaired surrogate pair in findNextWordFromIndex:forward:
https://bugs.webkit.org/show_bug.cgi?id=228496

Reviewed by Darin Adler.

Replace unpaired surrogate pairs with the replacement character before calling findNextWordFromIndex:forward:

  • platform/text/mac/TextBoundaries.mm:

(WebCore::findNextWordFromIndex):

6:38 PM Changeset in webkit [280368] by Amir Mark Jr.
  • 1 edit
    3 deletes in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/inspector resources
https://bugs.webkit.org/show_bug.cgi?id=226800

Reviewed by Jonathan Bedard.

  • inspector/console/resources/errors.css: Removed.
  • inspector/dom/resources/highlight-iframe.html: Removed.
  • inspector/network/resources/data-intercepted.json: Removed.
6:25 PM Changeset in webkit [280367] by Robert Jenner
  • 1 edit
    2 deletes in trunk/LayoutTests

Revert "Batch add test expectations for Monterey and iOS on Open Source"

This reverts commit 0b351bd1e35436f327b82ef38626748dba4b6bb6.

5:55 PM Changeset in webkit [280366] by Diego Pino Garcia
  • 7 edits in trunk/Tools

[GTK][WPE] Fix wrong path to GLIB dependencies introduced in r280354.

Unreviewed follow-up fix.

  • gtk/dependencies/apt:
  • gtk/dependencies/dnf:
  • gtk/dependencies/pacman:
  • wpe/dependencies/apt:
  • wpe/dependencies/dnf:
  • wpe/dependencies/pacman:
5:47 PM Changeset in webkit [280365] by Jonathan Bedard
  • 2 edits in trunk/Tools

[build.webkit.org] Simulator temp files filling up disk
https://bugs.webkit.org/show_bug.cgi?id=228335
<rdar://problem/81171840>

Reviewed by Aakash Jain.

  • CISupport/kill-old-processes:

(main): Delete stale simulator files.

5:21 PM Changeset in webkit [280364] by Alexey Shvayka
  • 5 edits in trunk

ProxyObject callees should be skipped during Function.prototype.caller resolution
https://bugs.webkit.org/show_bug.cgi?id=228341

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

Just like a bound function, a Proxy with nullish "apply" handler merely forwards
Call to its target [1], without pushing onto the execution context stack.
This fact is also noted in Function.prototype.{caller,arguments} reflection proposal [2].

This patch aligns JSC with V8 and SpiderMonkey if Proxy's "apply" handler is userland
or nullish. However, since JSC implements proper tail calls, Function.prototype.caller
result is divergent from other engines if the handler is Reflect.apply, which performs
a tail call that gets optimized away [2] (unless called by another Proxy).

[1]: https://tc39.es/ecma262/#sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist (step 8)
[2]: https://github.com/claudepache/es-legacy-function-reflection/blob/master/spec.md#get-functionprototypecaller (see notes)

  • runtime/FunctionPrototype.cpp:

(JSC::RetrieveCallerFunctionFunctor::operator() const):

LayoutTests:

  • js/caller-property-expected.txt:
  • js/script-tests/caller-property.js:
5:12 PM Changeset in webkit [280363] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[BigSur wk2 Debug arm64] fast/text/emoji-overlap.html is a flaky image-only failure.
https://bugs.webkit.org/show_bug.cgi?id=228528.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:59 PM Changeset in webkit [280362] by aakash_jain@apple.com
  • 1 edit
    1 add in trunk/Tools

Add .gitignore file for CISupport
https://bugs.webkit.org/show_bug.cgi?id=228113

Reviewed by Jonathan Bedard.

  • CISupport/.gitignore: Added.
4:48 PM Changeset in webkit [280361] by mmaxfield@apple.com
  • 7 edits in trunk/Source

[GPU Process] Code cleanup after r280356
https://bugs.webkit.org/show_bug.cgi?id=228495

Reviewed by Wenson Hsieh.

Source/WebCore:

3 things:

  1. Rename cacheNativeImage()/cacheFont() to recordNativeImageUse()/recordFontUse() since it does more

than caching now

  1. Mark overridden functions as final in RemoteImageBufferProxy because no class inherits from it
  2. Remove unnecessary WebCore:: where it isn't necessary

No new tests because there is no behavior change.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::putPixelBuffer):
(WebCore::DisplayList::Recorder::recordNativeImageUse):
(WebCore::DisplayList::Recorder::appendStateChangeItem):
(WebCore::DisplayList::Recorder::appendDrawGlyphsItemWithCachedFont):
(WebCore::DisplayList::Recorder::drawImageBuffer):
(WebCore::DisplayList::Recorder::drawNativeImage):
(WebCore::DisplayList::Recorder::drawPattern):
(WebCore::DisplayList::Recorder::cacheNativeImage): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::Delegate::recordNativeImageUse):
(WebCore::DisplayList::Recorder::Delegate::recordFontUse):
(WebCore::DisplayList::Recorder::Delegate::cacheNativeImage): Deleted.
(WebCore::DisplayList::Recorder::Delegate::cacheFont): Deleted.

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::putPixelBuffer):

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::recordNativeImageUse):
(WebKit::RemoteResourceCacheProxy::recordFontUse):
(WebKit::RemoteResourceCacheProxy::cacheNativeImage): Deleted.
(WebKit::RemoteResourceCacheProxy::cacheFont): Deleted.

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
4:45 PM Changeset in webkit [280360] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Batch add test expectations for Monterey and iOS on Open Source
https://bugs.webkit.org/show_bug.cgi?id=228200

Unreviewed test gardening.

  • platform/mac/platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt:
4:30 PM Changeset in webkit [280359] by Aditya Keerthi
  • 5 edits
    2 adds in trunk

[iOS] REGRESSION: Tapping a <select> element does not show a menu on many websites
https://bugs.webkit.org/show_bug.cgi?id=228340
rdar://77137768

Reviewed by Wenson Hsieh.

Source/WebKit:

Many sites add a touchend event listener to their select elements, that
is responsible for focusing the element. With the introduction of
asynchronous touch events, the single tap gesture recognizer can be
deferred to the point it occurs after the UIProcess is notified that an
element has been focused. This is problematic, since the UIProcess
creates and displays inputs peripherals in response to element focus,
but the gesture recognizer can dismiss presented peripherals via
-[WKFormPeripheral endEditing]. Consequently, many sites immediately
display and dismiss the input peripheral.

To fix, only call -[WKFormPeripheral endEditing] if the peripheral
was already being displayed once the tap gesture began. This ensures we
do not immediately display and dismiss peripherals.

Note that with the redesigned form controls, the call to endEditing is
unnecessary, as the presented views handle their own dismissal. However,
the logic is still needed for the old select control (using a keyboard
input view), to commit value changes. The old control is displayed on
apps linked against iOS 13 or earlier. This behavior is tested in
fast/forms/ios/select-picker-change-and-focus-another-select.html.

Test: fast/forms/ios/form-control-refresh/select/focus-select-in-touchend.html

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _singleTapIdentified:]):
(-[WKContentView _singleTapRecognized:]):

  • UIProcess/ios/forms/WKFormPeripheral.h:
  • UIProcess/ios/forms/WKFormPeripheralBase.h:

LayoutTests:

Added a test to verify that tapping a select element, that focuses itself
inside a touchend listener, displays a menu.

  • fast/forms/ios/form-control-refresh/select/focus-select-in-touchend-expected.txt: Added.
  • fast/forms/ios/form-control-refresh/select/focus-select-in-touchend.html: Added.
4:19 PM Changeset in webkit [280358] by Peng Liu
  • 2 edits in trunk/Source/WebKit

Safari hangs when entering PiP from (element) fullscreen
https://bugs.webkit.org/show_bug.cgi?id=228332

Reviewed by Eric Carlson.

When a video element's ancestor element is in fullscreen and the video element
is entering picture-in-picture, WKFullScreenWindowController in the UI process
will notify the WebContent process that the ancestor element needs to exit fullscreen.
However, some sites call document.webkitExitFullscreen() to request the ancestor
element to exit fullscreen proactively. Both WebContent process and UI process will
try to do the same thing and may lead to a race condition.

That was not an issue before r274460 because WebFullScreenManager::requestExitFullScreen()
will ignore the request from the UI process if the WebContent process has already
started the steps to exit fullscreen.

This patch stops the UI process sending the exit fullscreen request if a WebContent
process has started the steps to exit fullscreen.

Manually tested.

  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController didEnterPictureInPicture]):

4:17 PM Changeset in webkit [280357] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] media/track/track-in-band-duplicate-tracks-when-source-changes.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=228364

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
3:52 PM Changeset in webkit [280356] by mmaxfield@apple.com
  • 5 edits in trunk/Source

[GPU Process] Start tracking resource uses for NativeImages and Fonts
https://bugs.webkit.org/show_bug.cgi?id=228224

Reviewed by Said Abou-Hallawa.

Source/WebCore:

This is part 3 of https://bugs.webkit.org/show_bug.cgi?id=228216.

This patch triggers the infrastructure added in https://bugs.webkit.org/show_bug.cgi?id=228222 by tracking
resource use counts in the web process. RemoteResourceCacheProxy already is notified whenever a resource
is used, so it records how many of these notifications it receives, and sends that count to the GPU process
with the release message. When the GPU process replays the display lists, it also keeps track of how many
uses it encountered for the resource, via calling through the Replayer::Delegate.

Covered by existing tests.

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::applyNativeImageItem):
(WebCore::DisplayList::applySetStateItem):
(WebCore::DisplayList::applyFontItem):
(WebCore::DisplayList::Replayer::applyItem):

Source/WebKit:

This patch extends the existing resource tracking HashMaps used in RemoteResourceCacheProxy to continue
to record what they were recording before, but also include this new resource use count information.

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::~RemoteResourceCacheProxy):
(WebKit::RemoteResourceCacheProxy::cacheNativeImage):
(WebKit::RemoteResourceCacheProxy::cacheFont):
(WebKit::RemoteResourceCacheProxy::releaseNativeImage):
(WebKit::RemoteResourceCacheProxy::clearFontMap):
(WebKit::RemoteResourceCacheProxy::finalizeRenderingUpdateForFonts):

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
3:52 PM Changeset in webkit [280355] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Batch add test expectations for Monterey and iOS on Open Source
https://bugs.webkit.org/show_bug.cgi?id=228200

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
3:51 PM Changeset in webkit [280354] by Diego Pino Garcia
  • 7 edits
    3 copies
    1 add in trunk/Tools

[GTK][WPE] Move WebKitGTK and WPE dependency packages to a common GLIB list
https://bugs.webkit.org/show_bug.cgi?id=228326

Reviewed by Adrian Perez de Castro.

WebKitGTK and WPE share many dependency packages. Until now each port
maintained its own list of dependencies. It was a common mistake to
add a new package dependency to one of the ports but not to the other
one.

This patch adds a common GLIB for dependency packages, which can help
prevent mistakes like the one described above.

  • glib/dependencies/apt: Copied from Tools/wpe/dependencies/apt.
  • glib/dependencies/dnf: Copied from Tools/wpe/dependencies/dnf.
  • glib/dependencies/pacman: Copied from Tools/wpe/dependencies/pacman.
  • gtk/dependencies/apt:
  • gtk/dependencies/dnf:
  • gtk/dependencies/pacman:
  • wpe/dependencies/apt:
  • wpe/dependencies/dnf:
  • wpe/dependencies/pacman:
3:42 PM Changeset in webkit [280353] by Robert Jenner
  • 1 edit
    4 adds in trunk/LayoutTests

Batch add test expectations for Monterey and iOS on Open Source
https://bugs.webkit.org/show_bug.cgi?id=228200

Uneviewed test gardening.

  • platform/ios-14-wk2/imported/w3c/web-platform-tests/css/cssom/css-style-attr-decl-block-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/css-style-attr-decl-block-expected.txt: Added.
3:33 PM Changeset in webkit [280352] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS Release ] imported/w3c/web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.https.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228462

RUnreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
3:15 PM Changeset in webkit [280351] by Peng Liu
  • 2 edits in trunk/Source/WebKit

The bundle path of downlevel Safari is wrong
https://bugs.webkit.org/show_bug.cgi?id=228339

Reviewed by Jer Noble.

Fix the bundle path. The correct path is "/Library/Apple/System/Library/StagedFrameworks/Safari".

  • Shared/Cocoa/WebPreferencesDefaultValuesCocoa.mm:

(WebKit::isFeatureFlagEnabled):

2:44 PM Changeset in webkit [280350] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ BigSur Release arm64 ] fast/speechsynthesis/speech-synthesis-speak-empty-string.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228396.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:36 PM Changeset in webkit [280349] by dino@apple.com
  • 5 edits in trunk/Source/ThirdParty/ANGLE

3.5 MB system-wide footprint impact due to thread-locals in libANGLE
https://bugs.webkit.org/show_bug.cgi?id=228240
rdar://79504783

Reviewed by Ken Russell and Geoff Garen.

Apple's dyld has a bug where thread_local variables are dirtied on
process launch, causing a memory regression. Work around this
temporarily in ANGLE by using pthread thread local storage.

I don't expect this to be upstreamed to ANGLE unless they
want it. If it isn't, this patch will have to be applied until
the dyld bug is fixed.

  • src/libANGLE/Context.cpp: Implement some methods to get/set what was

the global variable gCurrentValidContext.
(gl::GetCurrentValidContextTLSIndex):
(gl::GetCurrentValidContextTLS):
(gl::SetCurrentValidContextTLS):
(gl::Context::setContextLost):

  • src/libANGLE/Context.h:
  • src/libGLESv2/global_state.cpp: Ditto, but for gCurrentThread.

(egl::GetCurrentThreadTLSIndex):
(egl::GetCurrentThreadTLS):
(egl::SetCurrentThreadTLS):
(egl::GetCurrentThread):
(egl::SetContextCurrent):

  • src/libGLESv2/global_state.h:

(gl::GetGlobalContext):
(gl::GetValidGlobalContext):

11:55 AM Changeset in webkit [280348] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] media/track/track-forced-subtitles-in-band.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=228334

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:52 AM Changeset in webkit [280347] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[results.webkit.org] Tooltips should remain visible when hovering over commit representations
https://bugs.webkit.org/show_bug.cgi?id=228330

Patch by Kevin Neal <kevin_neal@apple.com> on 2021-07-27
Reviewed by Jonathan Bedard.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/timeline.js:

(xAxisFromScale):

11:45 AM Changeset in webkit [280346] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[BigSur wk2 Release arm64] fast/selectors/selection-window-inactive-stroke-color.html is a flaky image-only failure.
https://bugs.webkit.org/show_bug.cgi?id=228337.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:14 AM Changeset in webkit [280345] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Fix WebProcess sandbox profile when ENABLE_SANDBOX_MESSAGE_FILTER is disabled
https://bugs.webkit.org/show_bug.cgi?id=228220

Patch by Saagar Jha <saagar@saagarjha.com> on 2021-07-27
Reviewed by Per Arne Vollan.

A couple of new filters turn into empty lists when ENABLE_SANDBOX_MESSAGE_FILTER is NO;
we shouldn't be evaluating them at all, so we need to move the check out.

  • WebProcess/com.apple.WebProcess.sb.in: Factor the conditional check out of the filters.
11:00 AM Changeset in webkit [280344] by Truitt Savell
  • 1 edit
    33 adds in trunk/LayoutTests

Additional new baselines for Monterey
https://bugs.webkit.org/show_bug.cgi?id=228090

Unreviewed test gardening.

  • platform/mac-bigsur-wk2/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Added.
  • platform/mac-bigsur-wk2/http/tests/websocket/tests/hybi/close-code-and-reason-expected.txt: Added.
  • platform/mac-bigsur-wk2/http/tests/websocket/tests/hybi/handshake-fail-by-no-cr-expected.txt: Added.
  • platform/mac-bigsur-wk2/http/tests/websocket/tests/hybi/handshake-fail-by-null-char-in-status-expected.txt: Added.
  • platform/mac-bigsur-wk2/http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1-expected.txt: Added.
  • platform/mac-bigsur-wk2/http/tests/websocket/tests/hybi/send-object-tostring-check-expected.txt: Added.
  • platform/mac-bigsur-wk2/http/tests/websocket/tests/hybi/workers/close-code-and-reason-expected.txt: Added.
  • platform/mac-catalina-wk2/http/tests/websocket/tests/hybi/send-object-tostring-check-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/alert-in-event-handler-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/client-close-2-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/client-close-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/close-code-and-reason-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/handshake-fail-by-no-cr-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/handshake-fail-by-null-char-in-status-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/invalid-encode-length-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/receive-arraybuffer-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/send-object-tostring-check-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/workers/close-code-and-reason-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/workers/receive-arraybuffer-expected.txt: Added.
  • platform/mac-wk2/http/tests/websocket/tests/hybi/zero-length-text-expected.txt: Added.
10:25 AM Changeset in webkit [280343] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[iOS Release] 2 imported/w3c/web-platform-tests/worklets tests are flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=228327

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:20 AM Changeset in webkit [280342] by commit-queue@webkit.org
  • 5 edits in trunk

document.referrer value is missing trailing slash
https://bugs.webkit.org/show_bug.cgi?id=215080

Patch by Alex Christensen <achristensen@webkit.org> on 2021-07-27
Reviewed by John Wilander.

Source/WebCore:

This matches the behavior of Chrome and Firefox.
The solution is similar to that of bug 227795.
Covered by a few layout tests.

  • dom/Document.cpp:

(WebCore::Document::referrer):

LayoutTests:

  • http/tests/resourceLoadStatistics/downgrade-document-referrer-nested-third-party-iframe-expected.txt:
  • http/tests/resourceLoadStatistics/downgrade-document-referrer-third-party-iframe-expected.txt:
9:34 AM Changeset in webkit [280341] by commit-queue@webkit.org
  • 3 edits in trunk

[CMake] Add WTF_CPU_RISCV64
https://bugs.webkit.org/show_bug.cgi?id=228322

Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-07-27
Reviewed by Adrian Perez de Castro.

Define the WTF_CPU_RISCV64 CMake macro when the specified system
processor name begins with 'riscv64'. This should also cover potential
RISC-V processor names ingrained with specific ISA extensions that are
then detectable at compile-time through specified C macros.

For WTF_CPU_RISCV64, default to disabling JIT and FTL features at the
CMake level until they are properly supported. Defaulting to system
malloc can already be avoided, but CLoop is necessary for now.

  • Source/cmake/WebKitCommon.cmake:
  • Source/cmake/WebKitFeatures.cmake:
9:23 AM Changeset in webkit [280340] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[iOS Release] imported/w3c/web-platform-tests/worklets/audio-worklet-service-worker-interception.https.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=228327

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:57 AM Changeset in webkit [280339] by Diego Pino Garcia
  • 3 edits
    9 adds in trunk/Tools

[GTK][WPE] Organize list of package dependencies into separated files
https://bugs.webkit.org/show_bug.cgi?id=228276

Reviewed by Adrian Perez de Castro.

When deploying a new bot from scratch for Ubuntu LTS, which builds
using system libraries, I realized the list of package dependencies
for WPE is not exhaustive.

This patch refactorizes the package dependencies list putting each
group of dependencies on its own file depending on platform (apt, dnf,
pacman and brew).

On a follow-up step I plan to put in common the WebKitGTK and WPE
dependencies plus add the missing WPE package dependencies. Also I'll
remove the duplicated packages that are currently happening in the
dependencies list of several platforms.

  • gtk/dependencies/apt: Added.
  • gtk/dependencies/brew: Added.
  • gtk/dependencies/dnf: Added.
  • gtk/dependencies/pacman: Added.
  • gtk/install-dependencies:
  • wpe/dependencies/apt: Added.
  • wpe/dependencies/dnf: Added.
  • wpe/dependencies/pacman: Added.
  • wpe/install-dependencies:
2:44 AM Changeset in webkit [280338] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Unskip some css-flexbox WPT tests that pass
https://bugs.webkit.org/show_bug.cgi?id=228320

Patch by Rob Buis <rbuis@igalia.com> on 2021-07-27
Reviewed by Manuel Rego Casasnovas.

Unskip some css-flexbox WPT tests that pass.

Jul 26, 2021:

9:42 PM Changeset in webkit [280337] by Said Abou-Hallawa
  • 20 edits
    1 copy
    1 add in trunk/Source

Regulate the WebPage RenderingUpdates from the WebProcess to the GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=227791
<rdar://78430639>

Reviewed by Simon Fraser.

Source/WebCore:

Make ChromeClient decide whether a RenderingUpdate can be triggered or
should be rescheduled. Keep track of how many times RenderingUpdate was
rescheduled to ensure RenderingUpdate will be triggered anyway after a
certain number of reschedules.

  • page/ChromeClient.h:

(WebCore::ChromeClient::canTriggerRenderingUpdate const):

  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::displayRefreshFired):

  • page/RenderingUpdateScheduler.h:

Source/WebKit:

This is the workflow to regulate the WebPage RenderingUpdates:

-- WebPage::finalizeRenderingUpdate() calls RemoteRenderingBackendProxy::

finalizeRenderingUpdate().

-- RemoteRenderingBackendProxy::finalizeRenderingUpdate() sends its

renderingUpdateID to GPUPProcess and asks it to process all the
pending DisplayList items.

-- RemoteRenderingBackend::finalizeRenderingUpdate) processes all the

pending items and sends the received renderingUpdateID back to the
WebProcess.

-- RemoteRenderingBackendProxy::didFinalizeRenderingUpdate() stores the

received didRenderingUpdateID.

-- RemoteRenderingBackendProxy::delayedRenderingUpdateCount() returns

'renderingUpdateID - didRenderingUpdateID' which is the number of
un-processed finalizeRenderingUpdate by GPUP.

-- WebPage::canTriggerRenderingUpdate() uses delayedRenderingUpdateCount()

to decides whether the current RenderingUpdate can be triggered or
should be rescheduled.

-- RenderingUpdateScheduler::displayRefreshFired() calls

WebPage::canTriggerRenderingUpdate() through the page chrome client.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::submit):
(WebKit::RemoteRenderingBackend::finalizeRenderingUpdate):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • Shared/MonotonicObjectIdentifier.h: Copied from Source/WebKit/Shared/TransactionID.h.

(WebKit::MonotonicObjectIdentifier::MonotonicObjectIdentifier):
(WebKit::MonotonicObjectIdentifier::isHashTableDeletedValue const):
(WebKit::MonotonicObjectIdentifier::encode const):
(WebKit::MonotonicObjectIdentifier::decode):
(WebKit::MonotonicObjectIdentifier::operator== const):
(WebKit::MonotonicObjectIdentifier::operator> const):
(WebKit::MonotonicObjectIdentifier::operator>= const):
(WebKit::MonotonicObjectIdentifier::operator< const):
(WebKit::MonotonicObjectIdentifier::operator<= const):
(WebKit::MonotonicObjectIdentifier::operator!= const):
(WebKit::MonotonicObjectIdentifier::increment):
(WebKit::MonotonicObjectIdentifier::next const):
(WebKit::MonotonicObjectIdentifier::toUInt64 const):
(WebKit::MonotonicObjectIdentifier::operator bool const):
(WebKit::MonotonicObjectIdentifier::loggingString const):
(WebKit::MonotonicObjectIdentifier::hashTableDeletedValue):
(WebKit::MonotonicObjectIdentifier::isValidIdentifier):
(WebKit::operator<<):

  • Shared/RenderingUpdateID.h: Added.
  • Shared/TransactionID.h:

(WebKit::MonotonicObjectIdentifier::MonotonicObjectIdentifier): Deleted.
(WebKit::MonotonicObjectIdentifier::isHashTableDeletedValue const): Deleted.
(WebKit::MonotonicObjectIdentifier::encode const): Deleted.
(WebKit::MonotonicObjectIdentifier::decode): Deleted.
(WebKit::MonotonicObjectIdentifier::operator== const): Deleted.
(WebKit::MonotonicObjectIdentifier::operator> const): Deleted.
(WebKit::MonotonicObjectIdentifier::operator>= const): Deleted.
(WebKit::MonotonicObjectIdentifier::operator< const): Deleted.
(WebKit::MonotonicObjectIdentifier::operator<= const): Deleted.
(WebKit::MonotonicObjectIdentifier::operator!= const): Deleted.
(WebKit::MonotonicObjectIdentifier::increment): Deleted.
(WebKit::MonotonicObjectIdentifier::next const): Deleted.
(WebKit::MonotonicObjectIdentifier::toUInt64 const): Deleted.
(WebKit::MonotonicObjectIdentifier::operator bool const): Deleted.
(WebKit::MonotonicObjectIdentifier::loggingString const): Deleted.
(WebKit::MonotonicObjectIdentifier::hashTableDeletedValue): Deleted.
(WebKit::MonotonicObjectIdentifier::isValidIdentifier): Deleted.
(WebKit::operator<<): Deleted.

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

(WebKit::RemoteRenderingBackendProxy::gpuProcessConnectionDidClose):
(WebKit::RemoteRenderingBackendProxy::finalizeRenderingUpdate):
(WebKit::RemoteRenderingBackendProxy::didFinalizeRenderingUpdate):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:

(WebKit::RemoteRenderingBackendProxy::renderingUpdateID const):
(WebKit::RemoteRenderingBackendProxy::delayedRenderingUpdateCount const):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:
  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::cacheFont):
(WebKit::RemoteResourceCacheProxy::prepareForNextRenderingUpdate):
(WebKit::RemoteResourceCacheProxy::clearFontMap):
(WebKit::RemoteResourceCacheProxy::finalizeRenderingUpdateForFonts):
(WebKit::RemoteResourceCacheProxy::finalizeRenderingUpdate):
(WebKit::RemoteResourceCacheProxy::didFinalizeRenderingUpdate): Deleted.

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::canTriggerRenderingUpdate const):

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

(WebKit::WebPage::canTriggerRenderingUpdate const):
(WebKit::WebPage::finalizeRenderingUpdate):

  • WebProcess/WebPage/WebPage.h:
7:21 PM Changeset in webkit [280336] by Wenson Hsieh
  • 10 edits
    1 add in trunk

[macOS Monterey] Pressing Fn+E should present the emoji picker when editing
https://bugs.webkit.org/show_bug.cgi?id=228300
rdar://77558672

Reviewed by Tim Horton.

Source/WebCore/PAL:

Add a new SPI declaration on NSMenu. See WebKit and WebKitLegacy changes for more information.

  • pal/spi/mac/NSMenuSPI.h:

Source/WebKit:

In macOS Monterey, the system-wide Fn+E key command presents the Emoji & Symbols UI as a popover. However, this
new key command currently does not work in editable contexts in both WebKit1 and WebKit2 views on macOS, where
we end up just inserting the character "e".

This is because, on both ports, we attempt to interpret NSEvents by calling back into AppKit to handle the
event, recording the selectors that *would've* been performed, and then using this information to build up a
list of WebCore::KeyCommand for the event (which are later converted into editing commands). In WebKit2, we
call into -[NSTextInputContext handleEventByKeyboardLayout:] to handle the event, and capture the resulting
calls back into WKWebView by storing entries in m_collectedKeypressCommands (something similar happens in
WebKit1). In the case of these new Fn commands, they are handled by the system before entering
NSTextInputContext, so NSTextInputContext ends up handling them as regular text insertion.

As an aside, the reason the meta (⌘) key doesn't encounter this problem is because meta, option, control and
shift are considered valid key bindings in NSKeyBindingManager, whereas the function key mask is specifically
excluded from this list for compability reasons. NSTextInputContext consults NSKeyBindingManager in order to
check whether the given NSEvent is a known key binding in -handleEventByKeyboardLayout:, so it fails to
acknowledge Fn+E as a key binding.

To work around this, we adopt new AppKit SPI added in rdar://81123724 to determine whether an NSEvent maps to
any main menu items and avoid handling "Fn-*" key events as text insertion if they already map to items in the
main menu.

Test: KeyboardEventTests.FunctionKeyCommand

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::collectKeyboardLayoutCommandsForEvent):

Source/WebKitLegacy/mac:

Apply a similar fix, this time for WebKit1 on macOS.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView insertText:]):

Only append "insertText:" for a corresponding NSEvent with the Function key held down if it doesn't also map
to a item in the main menu.

Tools:

Add a new API test that simulates a keypress for "Fn+E" with a main menu that contains a system menu item for
that key binding; the test then verifies that text was not inserted into the page as a result.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/KeyboardEventTests.mm: Added.

(-[KeyboardTestMenu _containsItemMatchingEvent:includingDisabledItems:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView typeCharacter:]):
(-[TestWKWebView typeCharacter:modifiers:]):

6:43 PM Changeset in webkit [280335] by ysuzuki@apple.com
  • 17 edits in trunk

Unreviewed, speculative revert of r280193
https://bugs.webkit.org/show_bug.cgi?id=228142

Source/WebCore:

  • html/parser/HTMLConstructionSite.cpp:

(WebCore::HTMLConstructionSite::insertTextNode):

  • html/parser/HTMLConstructionSite.h:
  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::pumpTokenizerLoop):

  • html/parser/HTMLMetaCharsetParser.cpp:

(WebCore::HTMLMetaCharsetParser::checkForMetaCharset):

  • html/parser/HTMLPreloadScanner.cpp:

(WebCore::HTMLPreloadScanner::scan):

  • html/parser/HTMLToken.h:

(WebCore::HTMLToken::clear):
(WebCore::HTMLToken::beginStartTag):
(WebCore::HTMLToken::beginEndTag):
(WebCore::HTMLToken::shrinkToBestFit): Deleted.

  • html/parser/HTMLTokenizer.h:

(WebCore::HTMLTokenizer::shrinkToBestFit): Deleted.

  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::HTMLTreeBuilder::ExternalCharacterTokenBuffer::characterPredicate):
(WebCore::HTMLTreeBuilder::processFakeCharacters):
(WebCore::HTMLTreeBuilder::insertPhoneNumberLink):
(WebCore::HTMLTreeBuilder::linkifyPhoneNumbers):
(WebCore::HTMLTreeBuilder::processCharacterBuffer):
(WebCore::HTMLTreeBuilder::processCharacterBufferForInBody):
(WebCore::HTMLTreeBuilder::defaultForInTableText):
(WebCore::HTMLTreeBuilder::processTokenInForeignContent):

  • html/parser/HTMLTreeBuilder.h:

Source/WTF:

  • wtf/Vector.h:

(WTF::Malloc>::shrinkCapacity):
(WTF::Malloc>::shrinkToBestFit): Deleted.

  • wtf/text/AtomStringImpl.cpp:

(WTF::UCharBufferTranslator::equal):
(WTF::LCharBufferTranslator::equal):
(WTF::BufferFromStaticDataTranslator::equal):

  • wtf/text/StringView.h:

(WTF::StringView::stripLeadingMatchedCharacters): Deleted.

Tools:

  • TestWebKitAPI/Tests/WTF/StringView.cpp:
  • TestWebKitAPI/Tests/WTF/Vector.cpp:
6:40 PM Changeset in webkit [280334] by mmaxfield@apple.com
  • 12 edits in trunk/Source

[GPU Process] Add resource use counter infrastructure to RemoteResourceCache
https://bugs.webkit.org/show_bug.cgi?id=228222

Reviewed by Said Abou-Hallawa.

Source/WebCore:

This is part 2 of https://bugs.webkit.org/show_bug.cgi?id=228216.

No new tests because there is no behavior change yet. This patch is just adding infrastructure. For now, all these
use counts sent by the web process are 0 - I'll implement that part in 3 follow-up patches.

  • platform/graphics/displaylists/DisplayListReplayer.h:

(WebCore::DisplayList::Replayer::Delegate::recordResourceUse):

Source/WebKit:

This patch adds the infrastructure for associating a counter with each resource in the RemoteResourceCache.
As the web process uses a resource during display list recording, it increments a counter, and as the GPU
process uses a resource, it increments a counter in the RemoteResourceCache. When the web process is done
with a resource, it sends a release message to the GPU process which crucially includes the web process's
counter. The GPU process has to then wait to actually delete the resource until its own use counter matches
the one it received from the web process. This patch implements this deferred deletion infrastructure
in the GPU process.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::ReplayerDelegate::recordResourceUse):
(WebKit::RemoteRenderingBackend::releaseRemoteResource): Pass the use count to the RemoteResourceCache.

  • GPUProcess/graphics/RemoteRenderingBackend.h: Add the use count field.
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in: Ditto.
  • GPUProcess/graphics/RemoteResourceCache.cpp:

(WebKit::RemoteResourceCache::cacheImageBuffer): It's actually okay if there's already an resource cached.
That just means that the web process started using a resource again before the GPU process consumed all
commands that used it the first time. All we need to do is increment the open count.
(WebKit::RemoteResourceCache::cacheNativeImage): Ditto.
(WebKit::RemoteResourceCache::cacheFont): Ditto.
(WebKit::RemoteResourceCache::ensureResourceUseCounter):
(WebKit::RemoteResourceCache::maybeRemoveResource): This is called whenever it's possible for us to be in
situation where we should be removing a resource (aka whenever the use count increments). It checks to see
if we can remove the resource, and if it can, does so.
(WebKit::RemoteResourceCache::recordResourceUse): The callback that runs for each resource use during
replaying. It can't actually delete any resources, so instead it just records which resources had their
use counts incremented, and waits for prune() to actually call maybeRemoveResource().
(WebKit::RemoteResourceCache::prune): After the replay is complete, call maybeRemoveResource() on all the
resources which had their use counters touched.
(WebKit::RemoteResourceCache::releaseRemoteResource): Put the relevant resource into the state where we
are waiting for the use counters to match before we can delete the resource. Also, call maybeRemoveResource()
so it can be deleted immediately if the counters already match.

  • GPUProcess/graphics/RemoteResourceCache.h: Add a new data structure to hold the use counters. There's

a big comment in here that describes what these fields mean.

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::~RemoteImageBufferProxy): Send a dummy use count for now. This will be
implemented in a follow-up patch.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::releaseRemoteResource): Add the useCount parameter.

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

(WebKit::RemoteResourceCacheProxy::releaseNativeImage): Send a dummy use count for now. This will be
implemented in a follow-up patch.
(WebKit::RemoteResourceCacheProxy::clearFontMap): Ditto.
(WebKit::RemoteResourceCacheProxy::finalizeRenderingUpdateForFonts): Ditto.

6:07 PM Changeset in webkit [280333] by Chris Dumez
  • 13 edits
    2 adds in trunk

Location.href setter uses wrong window to resolve relative URLs
https://bugs.webkit.org/show_bug.cgi?id=228287

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline a few WPT tests now that more checks are passing.

  • web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/083-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/084-expected.txt:
  • web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-with-cross-frame-event-listeners-1-expected.txt:
  • web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-with-cross-frame-event-listeners-2-expected.txt:

Source/WebCore:

Location::setLocation() is using "firstWindow" to resolve any input relative URL.
We rely on JSC::VM::deprecatedVMEntryGlobalObject() to get the first/entry window.
However, the test I wrote shows that we were using the wrong window as "first window"
in some cases (since this test would pass in other browsers but not in WebKit).

It turns out that JSEventListener::handleEvent() had a VMEntryScope internally that
would impact the global object being returned by JSC::VM::deprecatedVMEntryGlobalObject().
We were incorrectly using the scriptExecutionContext passed as parameter when constructing
the VMEntryScope instead of using the global object of the function we're about to call.
This bug addresses this.

Credits to Geoff Garen for identifying the issue in JSEventListener::handleEvent().

Test: http/tests/dom/window-location-set-href-relative-url.html

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • page/Location.cpp:

(WebCore::Location::setLocation):

LayoutTests:

Add layout test coverage. This test is passing in Chome and Firefox but was failing with
WebKit.

  • http/tests/dom/window-location-set-href-relative-url-expected.txt: Added.
  • http/tests/dom/window-location-set-href-relative-url.html: Added.
5:37 PM Changeset in webkit [280332] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

This is responding to feedback on r280310.
https://bugs.webkit.org/show_bug.cgi?id=227718

Patch by Johnson Zhou <qiaosong_zhou@apple.com> on 2021-07-26
Reviewed by Alex Christensen.

  • dom/FormDataEvent.h:

(WebCore::FormDataEvent::formData const):

  • html/DOMFormData.cpp:

(WebCore::DOMFormData::create):
(WebCore::DOMFormData::clone const):
(WebCore::DOMFormData::clone): Deleted.

  • html/DOMFormData.h:
5:34 PM Changeset in webkit [280331] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/css/css-scoping/css-scoping-shadow-dynamic-remove-style-detached.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228311.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:25 PM Changeset in webkit [280330] by Jean-Yves Avenard
  • 4 edits
    2 adds in trunk

Video pauses after scrubbing with Touch Bar
https://bugs.webkit.org/show_bug.cgi?id=228277
rdar://80606886

Reviewed by Jer Noble.

Source/WebCore:

In https://trac.webkit.org/r206487 ; in order to ensure that the playback state
was properly reflected following a seek using the touch bar, the element was paused.
It's unclear if that workaround is still required, but for now we will record if the
element was playing before the seek and if so, resume playback once the seek completes.
Now that the touch bar and Now Playing are hooked to the Media Session action handlers
the behaviour change will occur for all those components.

Test: media/media-session/play-after-seek.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement): Initialize new member in constructor.
(WebCore::HTMLMediaElement::clearSeeking):
(WebCore::HTMLMediaElement::finishSeek): Call play() once seek completes if the element
was playing before.
(WebCore::HTMLMediaElement::pause): Ensure that if pause() is called before the seek
completes, the element stays paused.
(WebCore::HTMLMediaElement::handleSeekToPlaybackPosition): Record playing state before
pausing the element.

  • html/HTMLMediaElement.h: Add new boolean member.

LayoutTests:

  • media/media-session/play-after-seek-expected.txt: Added.
  • media/media-session/play-after-seek.html: Added.
5:15 PM Changeset in webkit [280329] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

Update test expectations for inspector/canvas/recording-bitmaprenderer-memoryLimit.html.
https://bugs.webkit.org/show_bug.cgi?id=227881.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
5:06 PM Changeset in webkit [280328] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

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

Reviewed by Chris Dumez.

Remove RemoteAudioHardwareListener from the GPUProcessConnection messageMap when the connection closes.

  • WebProcess/GPU/media/RemoteAudioHardwareListener.cpp:

(WebKit::RemoteAudioHardwareListener::gpuProcessConnectionDidClose):

5:06 PM Changeset in webkit [280327] by jer.noble@apple.com
  • 6 edits in trunk/Source

[Cocoa] WebKit is making GroupActivities API calls for all WebKit clients
https://bugs.webkit.org/show_bug.cgi?id=228299
<rdar://80802982>

Reviewed by Eric Carlson.

Source/WebKit:

Tie registering for GroupActivities notifications to the MediaSessionCoordinatorEnabled
WebPreference, and make the default value for that preference depend on having the
"com.apple.developer.group-session.urlactivity" entitlement. All WebKit clients with
that entitlement will have the preference enabled by default; all other clients will
have that preference disabled by default.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultMediaSessionCoordinatorEnabled):

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

(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPageProxy::~WebPageProxy):
(WebKit::WebPageProxy::didCommitLoadForFrame):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
5:02 PM Changeset in webkit [280326] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION: [iOS] ASSERTION FAILED: !m_useCount in WebKit::SandboxExtension::~SandboxExtension()
https://bugs.webkit.org/show_bug.cgi?id=228171
<rdar://problem/80926509>

Reviewed by Eric Carlson.

SandboxExtension expects to be revoked before it is destroyed, something that is done by
RemoteMediaPlayerProxy::invalidate(). However, invalidate() won't be called if the
RemoteMediaPlayerManagerProxy is destroyed before all its proxies are invalidated.

Ensure every RemoteMediaPlayerProxy contained by the RemoteMediaPlayerManagerProxy is
invalidated in RemoteMediaPlayerManagerProxy's destructor.

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:

(WebKit::RemoteMediaPlayerManagerProxy::~RemoteMediaPlayerManagerProxy):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
4:58 PM Changeset in webkit [280325] by commit-queue@webkit.org
  • 4 edits in trunk

WKUserContentController.removeAllScriptMessageHandlers() doesn't release the message handlers
https://bugs.webkit.org/show_bug.cgi?id=228271

Patch by Alex Christensen <achristensen@webkit.org> on 2021-07-26
Reviewed by Sihui Liu.

Source/WebKit:

Covered by an API test.

  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/UserContentController.mm:

(TEST):

4:55 PM Changeset in webkit [280324] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS Debug ] http/tests/xmlhttprequest/access-control-preflight-credential-sync.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=228305

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:54 PM Changeset in webkit [280323] by rniwa@webkit.org
  • 4 edits in trunk/Source/WebCore

Deploy smart pointers in ApplyBlockElementCommand, IndentOutdentCommand and InsertListCommand
https://bugs.webkit.org/show_bug.cgi?id=228304

Reviewed by Chris Dumez.

Use RefPtr in more places instead of raw pointers.

  • editing/ApplyBlockElementCommand.cpp:

(WebCore::ApplyBlockElementCommand::formatSelection):
(WebCore::isNewLineAtPosition):
(WebCore::ApplyBlockElementCommand::rangeForParagraphSplittingTextNodesIfNeeded):
(WebCore::ApplyBlockElementCommand::endOfNextParagraphSplittingTextNodesIfNeeded):

  • editing/IndentOutdentCommand.cpp:

(WebCore::IndentOutdentCommand::tryIndentingAsListItem):
(WebCore::IndentOutdentCommand::indentIntoBlockquote):
(WebCore::IndentOutdentCommand::outdentParagraph):

  • editing/InsertListCommand.cpp:

(WebCore::InsertListCommand::mergeWithNeighboringLists):
(WebCore::InsertListCommand::unlistifyParagraph):
(WebCore::adjacentEnclosingList):
(WebCore::InsertListCommand::listifyParagraph):

4:51 PM Changeset in webkit [280322] by Alan Coon
  • 1 copy in tags/Safari-611.3.10.1.6

Tag Safari-611.3.10.1.6.

4:37 PM Changeset in webkit [280321] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina+ Debug wk2 ] inspector/model/remote-object/iterator-large.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=228210.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:27 PM Changeset in webkit [280320] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

Updated test expectations for fullscreen/full-screen-remove-children.html.
https://bugs.webkit.org/show_bug.cgi?id=227874.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:09 PM Changeset in webkit [280319] by Kate Cheney
  • 5 edits in trunk

ServiceWorkerRegistration.unregister method fails in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=227524
<rdar://problem/80264108>

Reviewed by Youenn Fablet.

Source/WebCore:

We should only check the app-bound domain list when registering a new
worker. Unregistering or updating an existing registration is fine because
we know that every registration has already gone through this check.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::addRegistrationFromStore):
(WebCore::SWServer::validateRegistrationDomain):
(WebCore::SWServer::scheduleJob):

  • workers/service/server/SWServer.h:

Tools:

API test coverage. Drive-by fix to remove unnecessary WKWebView
configuration flags from tests that don't need them.

Note this will also fix https://bugs.webkit.org/show_bug.cgi?id=227531
where updating an existing worker fails after registering 3 domains,
but writing a test for that would require registering service workers
on 3 domains that are not localhost or a loopback IP address, which
we currently do not have infrastructure for.

Testing unregister was only possible because the script URL passed in
during the unregister job is null, so it does not get caught in the
localhost/loopback IP address check, unlike the update case.

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:

(TEST):
(-[SWInAppBrowserPrivacyMessageHandler userContentController:didReceiveScriptMessage:]):

3:07 PM Changeset in webkit [280318] by pvollan@apple.com
  • 6 edits in trunk

The layout test fast/images/heic-as-background-image.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=228195
<rdar://80334724>

Reviewed by Said Abou-Hallawa.

Source/WebKit:

Call correct system function for required initialization.

No new tests, covered by existing test.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

Source/WTF:

Add HAVE macro for the system function CMPhotoIsTileDecoderAvailable.

  • wtf/PlatformHave.h:

LayoutTests:

Update test expectations.

  • platform/mac/TestExpectations:
2:59 PM Changeset in webkit [280317] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

Attribution context causes some performance regressions
https://bugs.webkit.org/show_bug.cgi?id=228294

Unreviewed followup to address Darin's comment regarding unnecessary
semi-colons.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(processPCMRequest):
(overrideAttributionContext):

2:39 PM Changeset in webkit [280316] by Cameron McCormack
  • 4 edits in trunk/Source/WebCore

Don't allow descriptors to be set to CSS-wide keywords
https://bugs.webkit.org/show_bug.cgi?id=228218
<rdar://80675715>

Reviewed by Simon Fraser.

And store the parent rule type directly on
StyleRuleCSSStyleDeclaration so that we can still check it after
m_parentRule has been cleared.

  • css/PropertySetCSSStyleDeclaration.cpp:

(WebCore::StyleRuleCSSStyleDeclaration::StyleRuleCSSStyleDeclaration):
(WebCore::StyleRuleCSSStyleDeclaration::cssParserContext const):

  • css/PropertySetCSSStyleDeclaration.h:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::parseKeywordValue):

2:26 PM Changeset in webkit [280315] by Russell Epstein
  • 1 copy in tags/Safari-612.1.25

Tag Safari-612.1.25.

2:26 PM Changeset in webkit [280314] by Russell Epstein
  • 1 delete in tags/Safari-612.1.25

Delete tag.

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

Rename activeWindow to incumbentWindow in the Location class
https://bugs.webkit.org/show_bug.cgi?id=228295

Reviewed by Darin Adler.

Rename activeWindow to incumbentWindow in the Location class, since this is the naming used
both in the HTML specification and Location.idl.

  • page/Location.cpp:

(WebCore::Location::setHref):
(WebCore::Location::setProtocol):
(WebCore::Location::setHost):
(WebCore::Location::setHostname):
(WebCore::Location::setPort):
(WebCore::Location::setPathname):
(WebCore::Location::setSearch):
(WebCore::Location::setHash):
(WebCore::Location::assign):
(WebCore::Location::replace):
(WebCore::Location::reload):
(WebCore::Location::setLocation):

  • page/Location.h:
1:47 PM Changeset in webkit [280312] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Crash in InsertParagraphSeparatorCommand::doApply
https://bugs.webkit.org/show_bug.cgi?id=224977

Patch by Frédéric Wang <fwang@igalia.com> on 2021-07-26
Reviewed by Ryosuke Niwa.

Source/WebCore:

Because <html> elements are handled specially in Position::isCandidate() (a) and
PositionIterator::isCandidate() (b), the function InsertParagraphSeparatorCommand::doApply()
may end up in a edge case where the startBlock is a sibling of the visible position per (a)
but isFirstInBlock,isLastInBlock is true,false per (b). This leads to hitting the debug
assertion ASSERT(startBlock->firstChild()) and dereferencing a nullptr pointer in release.
This patch fixes that by exiting early if the visible position is not a descendant of the
start block.

Test: editing/inserting/insert-paragraph-separator-with-html-elements-crash.html

  • editing/InsertParagraphSeparatorCommand.cpp:

(WebCore::InsertParagraphSeparatorCommand::doApply):

LayoutTests:

Add regression test.

  • editing/inserting/insert-paragraph-separator-with-html-elements-crash-expected.txt: Added.
  • editing/inserting/insert-paragraph-separator-with-html-elements-crash.html: Added.
1:40 PM Changeset in webkit [280311] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

Attribution context causes some performance regressions
https://bugs.webkit.org/show_bug.cgi?id=228294
<rdar://problem/76663528>

Reviewed by Per Arne Vollan.

Attribution context is used by the networking stack for a variety of
purposes, but is not always needed and can negatively affect
performance. For these reasons, we should override it in some cases.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(overrideAttributionContext):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

1:15 PM Changeset in webkit [280310] by commit-queue@webkit.org
  • 37 edits
    3 adds in trunk

LayoutTests/imported/w3c:
Added FormDataEvent support.
https://bugs.webkit.org/show_bug.cgi?id=227718

Patch by Johnson Zhou <qiaosong_zhou@apple.com> on 2021-07-26
Reviewed by Chris Dumez.

  • web-platform-tests/html/semantics/forms/form-submission-0/FormDataEvent.window-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-0/constructing-form-data-set-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-0/text-plain.window-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-0/urlencoded2.window-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt:
  • web-platform-tests/xhr/formdata-expected.txt:

Source/WebCore:
FormDataEvent added, and dispatched upon creation of DOMFormData or submission of HTMLFormElement.
https://bugs.webkit.org/show_bug.cgi?id=227718

Patch by Johnson Zhou <qiaosong_zhou@apple.com> on 2021-07-26
Reviewed by Chris Dumez.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/EventNames.h:
  • dom/EventNames.in:
  • dom/FormDataEvent.cpp: Added.

(WebCore::FormDataEvent::create):
(WebCore::FormDataEvent::FormDataEvent):
(WebCore::FormDataEvent::eventInterface const):

  • dom/FormDataEvent.h: Added.

(WebCore::FormDataEvent::formData const):

  • dom/FormDataEvent.idl: Added.
  • dom/GlobalEventHandlers.idl:
  • html/DOMFormData.cpp:

(WebCore::DOMFormData::DOMFormData):
(WebCore::DOMFormData::create):
(WebCore::DOMFormData::clone):

  • html/DOMFormData.h:

(WebCore::DOMFormData::create): Deleted.

  • html/HTMLAttributeNames.in:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::createEventHandlerNameMap):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::submitIfPossible):
(WebCore::HTMLFormElement::submit):
(WebCore::HTMLFormElement::constructEntryList):

  • html/HTMLFormElement.h:
  • loader/FormSubmission.cpp:

(WebCore::FormSubmission::create):

  • loader/FormSubmission.h:
  • platform/network/FormData.cpp:

(WebCore::FormData::appendNonMultiPartKeyValuePairItems):

Source/WebInspectorUI:
FormDataEvent added.
https://bugs.webkit.org/show_bug.cgi?id=227718

Patch by Qiaosong Zhou <qiaosong_zhou@apple.com> on 2021-07-26
Reviewed by Chris Dumez.

  • UserInterface/Models/ScriptTimelineRecord.js:

(WI.ScriptTimelineRecord.EventType.displayName):

LayoutTests:
Added support for FormDataEvent. Rebaselined.
https://bugs.webkit.org/show_bug.cgi?id=227718

Patch by Johnson Zhou <qiaosong_zhou@apple.com> on 2021-07-26
Reviewed by Chris Dumez.

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
12:39 PM Changeset in webkit [280309] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add Temporal to features.json
https://bugs.webkit.org/show_bug.cgi?id=228292

Reviewed by Myles C. Maxfield.

  • features.json:
12:36 PM Changeset in webkit [280308] by jer.noble@apple.com
  • 16 edits
    2 adds in trunk

[Cocoa] Playback stalls on bilibili.com
https://bugs.webkit.org/show_bug.cgi?id=228239
<rdar://80419477>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-effectiveplaybackrate.html

bilibili.com will attempt to detect playback stalls by detecting when video.currentTime
returns the same value while video.paused is false. When the GPU process is enabled, we use
a heuristic to provide the answer to currentTime to avoid making synchronous calls to the
GPU process. This heuristic uses the reported playback rate of the MediaPlayerPrivate to
derive the currentTime. However, MediaPlayerPrivateAVFoundationObjC does not override the
default implementation of rate(), and so always returns a reported rate of zero.

To make the call less ambiguous, add a MediaPlayer and MediaPlayerPrivate effectiveRate()
method, which by default will just return rate(), as some ports only report the
requested rate and not the effective rate. Then add overrides for both rate() and
effectiveRate() on both MediaPlayerPrivateAVFoundationObjC and
MediaPlayerPrivateMediaSourceAVFObjC.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::updatePlaybackRate):
(WebCore::HTMLMediaElement::mediaPlayerRateChanged):

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::effectiveRate const):

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::effectiveRate const):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::rate const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::effectiveRate const):

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::rate const):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::effectiveRate const):

  • testing/Internals.cpp:

(WebCore::Internals::isMediaElementHidden):
(WebCore::Internals::elementEffectivePlaybackRate):

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

Source/WebKit:

Replace rate() -> effectiveRate().

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerRateChanged):

LayoutTests:

  • media/media-source/media-source-effectiveplaybackrate-expected.txt: Added.
  • media/media-source/media-source-effectiveplaybackrate.html: Added.
12:22 PM Changeset in webkit [280307] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WebXR] WebXRSession::m_visibilityState is uninitialized
https://bugs.webkit.org/show_bug.cgi?id=228286

Patch by Ada Chan <ada.chan@apple.com> on 2021-07-26
Reviewed by Tim Horton.

WebXRSession::m_visibilityState should be initialized to XRVisibilityState::Visible.

  • Modules/webxr/WebXRSession.h:
12:18 PM Changeset in webkit [280306] by Aditya Keerthi
  • 7 edits
    2 adds in trunk

[iOS] Page background color does not update after UIUserInterfaceLevel change
https://bugs.webkit.org/show_bug.cgi?id=228282
rdar://80490391

Reviewed by Wenson Hsieh.

Source/WebCore:

The default background color of the root element is a semantic color
that adapts to changes in user interface style (light/dark mode) and
user interface level (base/elevated).

Currently, the default background color is correctly recalculated
after a change to the user interface style. However, the existing
logic does not update the color unless there is a change to the user
interface style. This behavior is incorrect, since a change to the
user interface level, without a change to the user interface style,
is ignored.

A common scenario in which a user interface level change is not
accompanied by a user interface style change, is when a WKWebView is
created and then presented as a page sheet, form sheet, or popover.
In this scenario, the default background color is currently incorrect.

To fix, ensure that the background color is recalculated if any of the
traits that affect semantic colors is changed.

Test: fast/css/ios/update-user-interface-level.html

  • page/FrameView.cpp:

(WebCore::FrameView::recalculateBaseBackgroundColor):

Recalculate the background color if any of the traits that affect
semantic colors is changed, not just a change in user interface
style (light/dark mode).

  • page/FrameView.h:
  • testing/InternalSettings.cpp:

Added a testing hook to change the current user interface level.

(WebCore::InternalSettings::resetToConsistentState):
(WebCore::InternalSettings::setUseDarkAppearance):
(WebCore::InternalSettings::setUseElevatedUserInterfaceLevel):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

LayoutTests:

Added a test to verify that a change in user interface level correctly
updates the page's background color.

  • fast/css/ios/update-user-interface-level-expected.txt: Added.
  • fast/css/ios/update-user-interface-level.html: Added.
12:01 PM Changeset in webkit [280305] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS Debug] 3 editing/pasteboard/smart-paste-paragraph tests are flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=228285

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
11:54 AM Changeset in webkit [280304] by Russell Epstein
  • 1 copy in tags/Safari-612.1.24.11.5

Tag Safari-612.1.24.11.5.

11:52 AM Changeset in webkit [280303] by Russell Epstein
  • 8 edits in branches/safari-612.1.24.11-branch/Source

Versioning.

WebKit-7612.1.24.11.5

11:45 AM Changeset in webkit [280302] by Eric Hutchison
  • 3 edits in trunk/LayoutTests

REGRESSION (r279427): [ Mac wk1 and iOS ] imported/w3c/web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-valid.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=227762.

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
11:43 AM Changeset in webkit [280301] by Russell Epstein
  • 8 edits in branches/safari-611.3.10.1-branch/Source

Versioning.

WebKit-7611.3.10.1.6

11:42 AM Changeset in webkit [280300] by Chris Dumez
  • 3 edits
    2 adds in trunk

XML documents end up with a unique origin in WebKit only
https://bugs.webkit.org/show_bug.cgi?id=228254

Reviewed by Darin Adler.

Source/WebCore:

XML documents end up with a unique origin in WebKit only. They have a regular origin in Blink and Firefox.
This patch is aligning our behavior with other browsers.

Test: http/tests/misc/xml-document-origin.html

  • xml/XMLTreeViewer.cpp:

(WebCore::XMLTreeViewer::transformDocumentToTreeView):

LayoutTests:

Add layout test coverage.

  • http/tests/misc/xml-document-origin-expected.txt: Added.
  • http/tests/misc/xml-document-origin.html: Added.
10:53 AM Changeset in webkit [280299] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Make sure the ProcessAssertion gets destroyed on the main thread
https://bugs.webkit.org/show_bug.cgi?id=228281
<rdar://81048308>

Reviewed by Geoffrey Garen.

Follow-up to r279877 to make sure that the ProcessAssertion gets destroyed on the main thread in
ProcessAssertion::acquireAsync(), even if the completionHandler is null.

  • UIProcess/ios/ProcessAssertionIOS.mm:

(WebKit::ProcessAssertion::acquireAsync):

10:51 AM Changeset in webkit [280298] by jer.noble@apple.com
  • 12 edits
    2 adds in trunk

[iOS] All home screen web apps resume when any home screen web app is foregrounded
https://bugs.webkit.org/show_bug.cgi?id=228246
<rdar://72949281>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-page-visibility-restriction.html

On iOS, home screen web apps all run from the same UIProcess, SafariViewService. So when
one Web App is foregrounded, the SafariViewService itself is foregrounded, and all WKWebViews
(one for each Web App) are foregrounded as well, allowing all Web Apps to resume audio
playback. This is not ideal; ideally, all Web Apps will be allowed to continue to play
audio in the background. But until we can fix that bug, the current behavior of pausing
audio from Web App A when A is backgrounded, and resuming audio from A when Web App B is
foregrounded feels super broken.

Add a new WKPreference/WebPreference/Setting and matching MediaElementSession restriction
that will block playback of audible media elements when the media element's page is not
visible. When adopted by SafariViewService, this would keep multiple Web Apps (and indeed
SafariViewController pages) from starting playback when any other is foregrounded.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::initializeMediaSession):
(WebCore::HTMLMediaElement::visibilityStateChanged):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::visibilityChanged):
(WebCore::MediaElementSession::playbackStateChangePermitted const):

  • html/MediaElementSession.h:
  • platform/audio/PlatformMediaSession.h:
  • testing/Internals.cpp:

(WebCore::Internals::setMediaElementRestrictions):

Source/WebKit:

Add a private WKPreference for setting the new WebPreference.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _requiresPageVisibilityToPlayAudio]):
(-[WKPreferences _setRequiresPageVisibilityToPlayAudio:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Source/WTF:

  • Scripts/Preferences/WebPreferences.yaml:

LayoutTests:

  • media/video-page-visibility-restriction-expected.txt: Added.
  • media/video-page-visibility-restriction.html: Added.
10:24 AM Changeset in webkit [280297] by Kocsen Chung
  • 1 copy in tags/Safari-612.1.24.11.4

Tag Safari-612.1.24.11.4.

10:15 AM Changeset in webkit [280296] by Russell Epstein
  • 8 edits
    2 adds in branches/safari-612.1.25-branch

Cherry-pick r280271. rdar://problem/81117003

REGRESSION (r279751): WebContent process often crashes when hovering over content on apple.com
https://bugs.webkit.org/show_bug.cgi?id=228247
rdar://81010093

Reviewed by Tim Horton.

Source/WebCore:

Add an internal testing hook that can be used to trigger text recognition for the given element. While we should
eventually combine this with another testing hook to simulate VisionKit text recognition results, the new test
using this internal hook shouldn't make its way into VisionKit anyways, so this isn't necessary for now.

See WebKit ChangeLog for more details.

Test: fast/images/text-recognition/text-recognition-in-transparent-video.html

  • testing/Internals.cpp: (WebCore::Internals::requestTextRecognition):
  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

After r279751, the snapshot fallback codepath I added in createShareableBitmap to handle the edge case of
fully transparent images causes us to now take snapshots when hovering over fully transparent video elements,
and attempt to recognize text in them. This is because RenderVideo is a RenderImage subclass without a cached
image, so we'll end up going down the transparent renderer codepath instead of bailing with a null bitmap.

However, since CachedImages are null for video elements, before we even get to VisionKit, we end up crashing
with a nullptr-deref inside WebPage::requestTextRecognition, which assumes that RenderImage::cachedImage()
is non-null.

To address this, we make two minor adjustments (see below).

  • WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp: (WebKit::createShareableBitmap):

Limit the snapshotting fallback to non-media images (i.e. non-RenderMedia).

  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::requestTextRecognition):

Make this robust in the case where CachedImage is null, to avoid the possibility for similar crashes in the
future.

LayoutTests:

  • fast/images/text-recognition/text-recognition-in-transparent-video-expected.txt: Added.
  • fast/images/text-recognition/text-recognition-in-transparent-video.html: Added.

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

10:15 AM Changeset in webkit [280295] by Kocsen Chung
  • 8 edits in branches/safari-612.1.24.11-branch/Source

Versioning.

WebKit-7612.1.24.11.4

5:10 AM Changeset in webkit [280294] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.32.3

WPE WebKit 2.32.3

5:10 AM Changeset in webkit [280293] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.32

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.32.3 release

.:

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

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.32.3
2:50 AM Changeset in webkit [280292] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[Pipewire] Muting the display capture closes the Portal session
https://bugs.webkit.org/show_bug.cgi?id=228265

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

The session should not be closed in that case, because setting the capture state to active
again would have no effect. This patch also removes useless CRLFs from WTFLogAlways() calls
and increases the session Close call timeout to 100ms, 10ms was too low, at least for my
setup.

  • platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:

(WebCore::GStreamerDisplayCaptureDeviceManager::createDisplayCaptureSource):
(WebCore::GStreamerDisplayCaptureDeviceManager::stopSource):

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:

(WebCore::GStreamerVideoCaptureSource::~GStreamerVideoCaptureSource):
(WebCore::GStreamerVideoCaptureSource::stopProducingData):

12:48 AM Changeset in webkit [280291] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

[GTK] MiniBrowser crashes when closed while capturing desktop
https://bugs.webkit.org/show_bug.cgi?id=228232

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

Disconnect the WebView from the WebPageProxy just before the final GObject dispose call, in
order to avoid UIClient notifications on the being-disposed WebView.

  • UIProcess/API/glib/WebKitUIClient.cpp:

(detachUIClientFromView):

  • UIProcess/API/glib/WebKitUIClient.h:
  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewDispose):

12:42 AM Changeset in webkit [280290] by Ziran Sun
  • 4 edits in trunk

[css-grid] svg image as grid items should use the overriding logical width/height when defined to compute the logical height/width
https://bugs.webkit.org/show_bug.cgi?id=228105

Source/WebCore:

As discussed at https://github.com/w3c/csswg-drafts/issues/6286#issuecomment-866986544, degenerate
aspect ratios derived from SVG width/height attributes fall back to viewbox aspect ratio
(whether due to negative values or zero values).

When computing the logical height/width using an intrinsic aspect ratio, RenderReplaced uses the
overridingLogicalWidth/overridingLogicalHeight whenever defined as long as the flex or
grid item has an intrinsic size. For an SVG graphic though, it's common to have an intrinsic aspect
ratio but not to have an intrinsic width or height. For this special case, we still should use
overridingLogicalWidth/overridingLogicalHeight for logical height/width calculations.

Reviewed by Javier Fernandez.

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::computeReplacedLogicalWidth const):
(WebCore::RenderReplaced::computeReplacedLogicalHeight const):

LayoutTests:

Reviewed by Javier Fernandez.

Update TestExpectations as 4 failed grid WPT tests are now passing.

Jul 25, 2021:

3:32 PM Changeset in webkit [280289] by Alexey Shvayka
  • 36 edits
    2 adds in trunk

Partly implement Function.prototype.{caller,arguments} reflection proposal
https://bugs.webkit.org/show_bug.cgi?id=158116

Reviewed by Yusuke Suzuki.

JSTests:

  • ChakraCore/test/strict/19.function.baseline:
  • ChakraCore/test/strict/22.callerCalleeArguments.baseline-jsc:
  • microbenchmarks/function-prototype-get.js: Added.
  • microbenchmarks/reflect-own-keys-function.js: Added.
  • stress/for-in-shadow-non-enumerable.js:
  • stress/function-hidden-as-caller.js:
  • stress/has-own-property-arguments.js:
  • stress/object-assign-fast-path.js:
  • stress/put-to-proto-chain-overrides-put.js:
  • stress/reflect-set.js:
  • test262/config.yaml: Skip 3 test cases that are now incorrect.
  • test262/expectations.yaml: Mark 2 test cases as passing.

Source/JavaScriptCore:

To ensure web-compatibility, only the safe subset of Function.prototype.{caller,arguments}
reflection proposal [1] is implemented, which is currently shipped in SpiderMonkey.

Complete list of differences from the proposed spec:

  1. Cross-realm receiver function is allowed instead of throwing a TypeError.

Throwing is likely safe to ship, but #225997 needs to be fixed first for
custom properties to receive correct global object.

  1. Cross-realm caller function is returned instead of null.

Hiding cross-realm caller may break things: we currently have a test for
the opposite behavior.

  1. Defines "caller" and "arguments" setters that throw for disallowed receivers, instead failing silently in sloppy mode.

This is actually more restrictive than the spec, which is preferable,
and aligns with V8 and SM.

Most importantly, this patch removes own "caller" and "arguments" properties from
sloppy mode ES5 functions. They were non-configurable, making it harder to use
their holder as a ProxyTarget. They were also non-writable, with a constantly
changing Value, which violated the invariants of internal methods [2].

As a result, JSFunction methods are greatly simplified, especially defineOwnProperty()
and getOwnSpecialPropertyNames(). The latter is now 2.1x faster according to the
provided microbenchmark. Also, removes double "prototype" lookup from Get,
which is a 10% progression.

[1]: https://github.com/claudepache/es-legacy-function-reflection
[2]: https://tc39.es/ecma262/#sec-invariants-of-the-essential-internal-methods

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::getOwnPropertySlot):
(JSC::ClonedArguments::materializeSpecials):

  • runtime/FunctionExecutable.h:
  • runtime/FunctionPrototype.cpp:

(JSC::FunctionPrototype::addFunctionProperties):
(JSC::isAllowedReceiverFunctionForCallerAndArguments):
(JSC::RetrieveArgumentsFunctor::RetrieveArgumentsFunctor):
(JSC::RetrieveArgumentsFunctor::result const):
(JSC::RetrieveArgumentsFunctor::operator() const):
(JSC::retrieveArguments):
(JSC::JSC_DEFINE_CUSTOM_GETTER):
(JSC::RetrieveCallerFunctionFunctor::RetrieveCallerFunctionFunctor):
(JSC::RetrieveCallerFunctionFunctor::result const):
(JSC::RetrieveCallerFunctionFunctor::operator() const):
(JSC::retrieveCallerFunction):
(JSC::JSC_DEFINE_CUSTOM_SETTER):
(JSC::FunctionPrototype::initRestrictedProperties): Deleted.

  • runtime/FunctionPrototype.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::getOwnPropertySlot):
(JSC::JSFunction::getOwnSpecialPropertyNames):
(JSC::JSFunction::put):
(JSC::JSFunction::deleteProperty):
(JSC::JSFunction::defineOwnProperty):
(JSC::RetrieveArgumentsFunctor::RetrieveArgumentsFunctor): Deleted.
(JSC::RetrieveArgumentsFunctor::result const): Deleted.
(JSC::RetrieveArgumentsFunctor::operator() const): Deleted.
(JSC::retrieveArguments): Deleted.
(JSC::JSC_DEFINE_CUSTOM_GETTER): Deleted.
(JSC::RetrieveCallerFunctionFunctor::RetrieveCallerFunctionFunctor): Deleted.
(JSC::RetrieveCallerFunctionFunctor::result const): Deleted.
(JSC::RetrieveCallerFunctionFunctor::operator() const): Deleted.
(JSC::retrieveCallerFunction): Deleted.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildrenImpl):

  • runtime/JSGlobalObject.h:

Remove unused m_throwTypeErrorGetterSetter and make ThrowTypeError lazily-created.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

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

(JSC::JSObject::putDirectCustomGetterSetterWithoutTransition):

  • runtime/JSObject.h:

LayoutTests:

  • inspector/model/remote-object-get-properties-expected.txt:
  • inspector/runtime/getDisplayableProperties-expected.txt:
  • inspector/runtime/getProperties-expected.txt:
  • js/Object-getOwnPropertyNames-expected.txt:
  • js/basic-strict-mode-expected.txt:
  • js/kde/function_arguments-expected.txt:
  • js/kde/script-tests/function_arguments.js:
  • js/non-strict-function-properties-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
  • js/script-tests/basic-strict-mode.js:
  • js/script-tests/non-strict-function-properties.js:
  • js/script-tests/throw-type-error-is-unique.js:
12:40 PM Changeset in webkit [280288] by Wenson Hsieh
  • 20 edits
    2 adds in trunk

[iOS] Unified field is unselected after focusing URL bar if text was selected in a fixed position container
https://bugs.webkit.org/show_bug.cgi?id=228269
rdar://80556392

Reviewed by Tim Horton.

Source/WebKit:

In Safari on iOS 15, if the selection (either ranged or caret) is inside a fixed position container when the
user taps on the unified field, we'll immediately clear the text selection inside the unified field upon
bringing up the keyboard. This happens because the tab pill in iOS 15 is lowered as the URL bar is focused,
which causes the web view to scroll slightly. This, in turn, induces a brief unstable scrolling tree state,
which then causes us to temporarily hide and show selection views while scrolling in unstable state (see
r209931) by calling -deactivateSelection and then -activateSelection on the text interaction assistant.
Calling -[UIWKTextInteractionAssistant activateSelection] then causes UIKit to dispatch a
UITextSelectionViewActivatedNotification; In the unified field, which is a UITextField subclass, UIKit code then
listens for this notification and responds to it by clearing the selection if the newly activated selection's
host view (WKContentView) is different than itself, thereby causing the bug.

To fix this, we simply make two (minor) adjustments to the logic for temporarily hiding and showing the
selection while performing an unstable scroll. See below for more details.

Test: editing/selection/ios/scrolling-with-fixed-selection-does-not-unselect-native-text-field.html

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView shouldHideSelectionWhenScrolling]):

Only hide and (later) restore the selection in non-editable text if the selection is ranged. This is because
caret selections in non-editable content are not user-visible anyways, so there's no need to temporarily
suppress the selection.

(-[WKContentView _updateChangedSelection:]):

Only attempt to show the selection views again if doing so doesn't cause us to steal first responder status away
from the existing first responder; otherwise, we'll wait until we -becomeFirstResponder to -activateSelection.

(-[WKContentView selectionInteractionAssistant]): Deleted.

Tools:

We already have some very basic support for installing and removing native text fields in the view hierarchy,
through TestRunner::(add|remove)ChromeInputField(). In order to support the new layout test, we additionally
implement the ability to:

  • Set text inside the native chrome input field that was installed using addChromeInputField().
  • Select all text inside the chrome input field.
  • Query the chrome input field for the currently selected text.

We only support iOS for the time being, with stubs on other platforms, since the new test that uses this
functionality is iOS-specific; if needed in the future for a similar test on other platforms, we can implement
the stubbed testing hooks on TestRunner and PlatformWebView as well.

  • DumpRenderTree/TestRunner.h:
  • DumpRenderTree/mac/TestRunnerMac.mm:

(TestRunner::setTextInChromeInputField):
(TestRunner::selectChromeInputField):
(TestRunner::getSelectedTextInChromeInputField):

  • DumpRenderTree/win/TestRunnerWin.cpp:

(TestRunner::setTextInChromeInputField):
(TestRunner::selectChromeInputField):
(TestRunner::getSelectedTextInChromeInputField):

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

(WTR::InjectedBundle::didReceiveMessageToPage):
(WTR::InjectedBundle::postSetTextInChromeInputField):
(WTR::InjectedBundle::postSelectChromeInputField):
(WTR::InjectedBundle::postGetSelectedTextInChromeInputField):

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

(WTR::TestRunner::setTextInChromeInputField):
(WTR::TestRunner::selectChromeInputField):
(WTR::TestRunner::getSelectedTextInChromeInputField):
(WTR::TestRunner::callSetTextInChromeInputFieldCallback):
(WTR::TestRunner::callSelectChromeInputFieldCallback):
(WTR::TestRunner::callGetSelectedTextInChromeInputFieldCallback):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/PlatformWebView.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

  • WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:

(WTR::PlatformWebView::setTextInChromeInputField):
(WTR::PlatformWebView::selectChromeInputField):
(WTR::PlatformWebView::getSelectedTextInChromeInputField):

  • WebKitTestRunner/ios/PlatformWebViewIOS.mm:

(WTR::chromeInputField):

Additionally do some light refactoring by pulling out logic for grabbing the chrome input field (i.e. a view
with a tag of 1 under the window) out into a separate helper method. Use this helper in a few places below.

(WTR::PlatformWebView::addChromeInputField):
(WTR::PlatformWebView::setTextInChromeInputField):
(WTR::PlatformWebView::selectChromeInputField):
(WTR::PlatformWebView::getSelectedTextInChromeInputField):
(WTR::PlatformWebView::removeChromeInputField):

  • WebKitTestRunner/mac/PlatformWebViewMac.mm:

(WTR::PlatformWebView::setTextInChromeInputField):
(WTR::PlatformWebView::selectChromeInputField):
(WTR::PlatformWebView::getSelectedTextInChromeInputField):

  • WebKitTestRunner/win/PlatformWebViewWin.cpp:

(WTR::PlatformWebView::setTextInChromeInputField):
(WTR::PlatformWebView::selectChromeInputField):
(WTR::PlatformWebView::getSelectedTextInChromeInputField):

  • WebKitTestRunner/wpe/PlatformWebViewWPE.cpp:

(WTR::PlatformWebView::setTextInChromeInputField):
(WTR::PlatformWebView::selectChromeInputField):
(WTR::PlatformWebView::getSelectedTextInChromeInputField):

LayoutTests:

Add a new layout test that installs, focuses, and selects text inside a native UITextField (simulating Safari's
URL field) while the DOM selection is inside a fixed position container, and then scrolls the web view a bit to
temporarily induce an unstable scrolling tree state. After this, we verify that the text selection inside the
native text field has not been cleared.

See Tools/ changes for more details.

  • editing/selection/ios/scrolling-with-fixed-selection-does-not-unselect-native-text-field-expected.txt: Added.
  • editing/selection/ios/scrolling-with-fixed-selection-does-not-unselect-native-text-field.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.addChromeInputField):
(window.UIHelper.removeChromeInputField):
(window.UIHelper.setTextInChromeInputField):
(window.UIHelper.selectChromeInputField):
(window.UIHelper.getSelectedTextInChromeInputField):
(window.UIHelper):

11:55 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
11:29 AM Changeset in webkit [280287] by commit-queue@webkit.org
  • 2 edits in trunk

[GTK] USE_OPENGL_OR_ES should not be an automagic feature
https://bugs.webkit.org/show_bug.cgi?id=228266

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-07-25
Reviewed by Fujii Hironori.

The USE_OPENGL_OR_ES feature flag added in r271220 is currently automagic: that is, if
neither OpenGL nor OpenGL ES is available at build time, it gets silently disabled. This is
not OK because it makes it easy for distributors to accidentally fail to enable OpenGL
support. We should require manually disabling the feature with -DUSE_OPENGL_OR_ES=OFF in
order to build with OpenGL disabled.

  • Source/cmake/OptionsGTK.cmake:
6:00 AM Changeset in webkit [280286] by cathiechen
  • 1 edit
    1 add in trunk/PerformanceTests

[Performance test][css-contain] Add test to contain: size layout
https://bugs.webkit.org/show_bug.cgi?id=227948

Reviewed by Ryosuke Niwa.

This test emulates the scenario that a small part of the page is changed. If it's applied contain: size layout,
the performance should be improved. This test is a transform of the test [1] in blink.

[1] third_party/blink/perf_tests/layout/css-contain-change-text.html

  • Layout/css-contain-change-size.html: Added.

Jul 24, 2021:

1:11 PM Changeset in webkit [280285] by ysuzuki@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

[JSC] Change most of enum in Yarr to enum-class
https://bugs.webkit.org/show_bug.cgi?id=228264

Reviewed by Mark Lam.

This patch simply changes most of enum to enum-class in Yarr.
We also remove YarrJIT YarrGenerator's template parameter since
it is not worth doubling code. We can just hold Yarr::JITCompileMode as m_compileMode.

  • runtime/RegExp.cpp:

(JSC::RegExp::compile):
(JSC::RegExp::matchConcurrently):
(JSC::RegExp::compileMatchOnly):

  • runtime/RegExp.h:
  • runtime/RegExpInlines.h:

(JSC::RegExp::hasCodeFor):
(JSC::RegExp::compileIfNecessary):
(JSC::RegExp::matchInline):
(JSC::RegExp::hasMatchOnlyCodeFor):
(JSC::RegExp::compileIfNecessaryMatchOnly):

  • yarr/Yarr.h:

(): Deleted.

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::backtrackPatternCharacter):
(JSC::Yarr::Interpreter::backtrackPatternCasedCharacter):
(JSC::Yarr::Interpreter::matchCharacterClass):
(JSC::Yarr::Interpreter::backtrackCharacterClass):
(JSC::Yarr::Interpreter::matchBackReference):
(JSC::Yarr::Interpreter::backtrackBackReference):
(JSC::Yarr::Interpreter::parenthesesDoBacktrack):
(JSC::Yarr::Interpreter::matchParenthesesOnceBegin):
(JSC::Yarr::Interpreter::matchParenthesesOnceEnd):
(JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin):
(JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
(JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
(JSC::Yarr::Interpreter::matchParenthesesTerminalEnd):
(JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
(JSC::Yarr::Interpreter::matchParentheticalAssertionBegin):
(JSC::Yarr::Interpreter::matchParentheticalAssertionEnd):
(JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin):
(JSC::Yarr::Interpreter::backtrackParentheticalAssertionEnd):
(JSC::Yarr::Interpreter::matchParentheses):
(JSC::Yarr::Interpreter::backtrackParentheses):
(JSC::Yarr::Interpreter::matchDisjunction):
(JSC::Yarr::Interpreter::matchNonZeroDisjunction):
(JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin):
(JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin):
(JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
(JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
(JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
(JSC::Yarr::ByteCompiler::closeAlternative):
(JSC::Yarr::ByteCompiler::closeBodyAlternative):
(JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
(JSC::Yarr::ByteCompiler::emitDisjunction):
(JSC::Yarr::ByteCompiler::dumpDisjunction):

  • yarr/YarrInterpreter.h:

(JSC::Yarr::ByteTerm::ByteTerm):
(JSC::Yarr::ByteTerm::BOL):
(JSC::Yarr::ByteTerm::CheckInput):
(JSC::Yarr::ByteTerm::UncheckInput):
(JSC::Yarr::ByteTerm::EOL):
(JSC::Yarr::ByteTerm::WordBoundary):
(JSC::Yarr::ByteTerm::BackReference):
(JSC::Yarr::ByteTerm::BodyAlternativeBegin):
(JSC::Yarr::ByteTerm::BodyAlternativeDisjunction):
(JSC::Yarr::ByteTerm::BodyAlternativeEnd):
(JSC::Yarr::ByteTerm::AlternativeBegin):
(JSC::Yarr::ByteTerm::AlternativeDisjunction):
(JSC::Yarr::ByteTerm::AlternativeEnd):
(JSC::Yarr::ByteTerm::SubpatternBegin):
(JSC::Yarr::ByteTerm::SubpatternEnd):
(JSC::Yarr::ByteTerm::DotStarEnclosure):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::jitCompile):

  • yarr/YarrJIT.h:
  • yarr/YarrParser.h:

(JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate):
(JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter):
(JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass):
(JSC::Yarr::Parser::CharacterClassParserDelegate::end):

  • yarr/YarrPattern.cpp:

(JSC::Yarr::YarrPatternConstructor::atomParenthesesSubpatternBegin):
(JSC::Yarr::YarrPatternConstructor::atomParentheticalAssertionBegin):
(JSC::Yarr::YarrPatternConstructor::atomBackReference):
(JSC::Yarr::YarrPatternConstructor::copyTerm):
(JSC::Yarr::YarrPatternConstructor::quantifyAtom):
(JSC::Yarr::YarrPatternConstructor::checkForTerminalParentheses):
(JSC::Yarr::YarrPatternConstructor::containsCapturingTerms):
(JSC::Yarr::YarrPatternConstructor::optimizeDotStarWrappedExpressions):
(JSC::Yarr::PatternTerm::dumpQuantifier):
(JSC::Yarr::PatternTerm::dump):

  • yarr/YarrPattern.h:

(JSC::Yarr::PatternTerm::PatternTerm):
(JSC::Yarr::PatternTerm::ForwardReference):
(JSC::Yarr::PatternTerm::BOL):
(JSC::Yarr::PatternTerm::EOL):
(JSC::Yarr::PatternTerm::WordBoundary):
(JSC::Yarr::PatternTerm::isFixedWidthCharacterClass const):
(JSC::Yarr::PatternTerm::containsAnyCaptures):
(JSC::Yarr::PatternTerm::quantify):

1:23 AM Changeset in webkit [280284] by Devin Rousso
  • 8 edits
    2 copies
    4 adds in trunk

[Apple Pay] Do not add coupon code ApplePayErrorCode values for systems that do not support it
https://bugs.webkit.org/show_bug.cgi?id=228243

Reviewed by Wenson Hsieh.

Source/WebCore:

Test: http/tests/ssl/applepay/ApplePayError.html

  • Modules/applepay/ApplePayErrorCode.idl:
  • Modules/applepay/ApplePayErrorCode.h:

Source/WebKit:

  • Platform/cocoa/PaymentAuthorizationPresenter.mm:

(WebKit::toPKPaymentErrorCode):

LayoutTests:

  • http/tests/ssl/applepay/ApplePayError.html:
  • http/tests/ssl/applepay/ApplePayError-expected.txt:
  • platform/ios-14-wk2/http/tests/ssl/applepay/ApplePayError-expected.txt: Added.
  • platform/mac-bigsur-wk2/http/tests/ssl/applepay/ApplePayError-expected.txt: Added.
1:20 AM Changeset in webkit [280283] by Devin Rousso
  • 4 edits in trunk

[iOS] REGRESSION(r277505): -[WKWebView underPageBackgroundColor] also changes the scroll bar color
https://bugs.webkit.org/show_bug.cgi?id=228259
<rdar://problem/80116822>

Reviewed by Tim Horton.

Source/WebKit:

If an application overrides the -underPageBackgroundColor with a dark color on a page that
has a light background color, the scroll bar will appear light to match the overridden value
of -underPageBackgroundColor instead of dark to match the page's background color.

Test: WKWebViewUnderPageBackgroundColor.MatchesScrollView

  • UIProcess/API/ios/WKWebViewIOS.mm:

(baseScrollViewBackgroundColor):
(scrollViewBackgroundColor):
(-[WKWebView _updateScrollViewBackground]):
Add a flag to indicate whether the underPageBackgroundColor (which can be overridden by
API) or pageExtendedBackgroundColor should be used when calculating the value provided to
-[UIScrollView setBackgroundColor:] and -[UIScrollView setIndicatorStyle:]. The former
uses the underPageBackgroundColor since that is why that API exists and the latter uses
the pageExtendedBackgroundColor` since it is based on what is shown in the page, which is
what the scroll bar is drawn on top of.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewUnderPageBackgroundColor.mm:

(TEST.WKWebViewUnderPageBackgroundColor.MatchesScrollView):

Note: See TracTimeline for information about the timeline view.