Timeline
Jan 6, 2021:
- 11:52 PM Changeset in webkit [271226] by
-
- 2 edits in trunk/Source/JavaScriptCore
Fix a dataMemoryTempRegister use violation in FTLLowerDFGToB3's compileLoopHint().
https://bugs.webkit.org/show_bug.cgi?id=220399
Reviewed by Yusuke Suzuki.
This was tripping an assertion failure on the invalid use of the dataMemoryTempRegister
during a Debug build JSC stress test run with DoesGC validation enabled.
- ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileLoopHint):
- 10:28 PM Changeset in webkit [271225] by
-
- 14 edits16 adds1 delete in trunk/JSTests
[JSC] Update test262
https://bugs.webkit.org/show_bug.cgi?id=220398
Reviewed by Mark Lam.
- test262/expectations.yaml:
- test262/harness/testIntl.js:
- test262/latest-changes-summary.txt:
- test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-false-for-zero.js: Added.
(testWithBigIntTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-true-for-undefined.js: Added.
(testWithBigIntTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-false-for-zero.js: Added.
(testWithTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-true-for-undefined.js: Added.
(testWithTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js: Removed.
- test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
(testWithBigIntTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
(testWithBigIntTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
(testWithTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
(testWithTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer-during-fromIndex-returns-single-comma.js: Added.
(testWithBigIntTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer.js:
(let.obj.toString):
(testWithBigIntTypedArrayConstructors):
(obj.toString): Deleted.
- test262/test/built-ins/TypedArray/prototype/join/detached-buffer-during-fromIndex-returns-single-comma.js: Added.
(testWithTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/join/detached-buffer.js:
(let.obj.toString):
(testWithTypedArrayConstructors):
(obj.toString): Deleted.
- test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
(testWithBigIntTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
(testWithBigIntTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
(testWithTypedArrayConstructors):
- test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
(testWithTypedArrayConstructors):
- test262/test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js:
(testWithBigIntTypedArrayConstructors):
- test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js:
(testWithTypedArrayConstructors):
- test262/test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js: Added.
- test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js: Added.
(zip):
(compare):
- test262/test/intl402/Intl/getCanonicalLocales/canonicalized-tags.js:
- test262/test/intl402/Intl/getCanonicalLocales/preferred-grandfathered.js:
- test262/test/intl402/Intl/getCanonicalLocales/preferred-variant.js:
- test262/test/intl402/Locale/extensions-grandfathered.js:
- test262/test/intl402/Locale/likely-subtags-grandfathered.js:
(of.regularGrandfathered.const.extra.of.extras.i.test):
- test262/test262-Revision.txt:
- 10:11 PM Changeset in webkit [271224] by
-
- 3 edits2 adds in trunk
[JSC] DateTimeFormat#formatRange should generate the same output to DateTimeFormat#format if startDate and endDate are "practically-equal"
https://bugs.webkit.org/show_bug.cgi?id=220395
Reviewed by Ross Kirsling.
JSTests:
Imported some test262 tests. Updated, fixed some issues (
formatToParts
test was usingformat
, we should upstream it to test262), and added more tests.
- stress/intl-datetimeformat-format-range-should-check-practically-equal.js: Added.
(shouldBe):
(vm.icuVersion):
- stress/intl-datetimeformat-format-range-to-parts-should-check-practically-equal.js: Added.
(shouldBe):
(zip):
(compare):
(vm.icuVersion):
Source/JavaScriptCore:
Intl.DateTimeFormat.formatRange(startDate, endDate) also needs to generate the same formatted string to the Intl.DateTimeFormat.format
if startDate and endDate are *practically-equal* (spec term). However, due to CLDR, just using udtitvfmt_format generates different
formatted string to udat_format's result even though startDate and endDate are the same.
new Intl.DateTimeFormat("en", { dateStyle: "long", timeStyle: "short" }).format(new Date())
"December 12, 2019 at 11:48 AM"
new Intl.DateTimeFormat("en", { dateStyle: "long", timeStyle: "short" }).formatRange(new Date(), new Date())
"December 12, 2019, 11:48 AM"
In Intl.DateTimeFormat#formatRangeToParts, we deploys *practically-equal* checking to avoid this issue. The same thing should be done in
Intl.DateTimeFormat#formatRange too.
In this patch, we stop using udtitvfmt_format if ICU version is 64 or later to perform *practically-equal* checking.
[1]: https://github.com/tc39/proposal-intl-DateTimeFormat-formatRange/issues/19
- runtime/IntlDateTimeFormat.cpp:
(JSC::formattedValueFromDateRange):
(JSC::dateFieldsPracticallyEqual):
(JSC::IntlDateTimeFormat::formatRange):
(JSC::IntlDateTimeFormat::formatRangeToParts):
(JSC::definitelyAfterGregorianCalendarChangeDate): Deleted.
- 10:11 PM Changeset in webkit [271223] by
-
- 4 edits in trunk
Fix aspect ratio handling in RenderBox::computeLogicalWidthInFragment
https://bugs.webkit.org/show_bug.cgi?id=220138
Patch by Rob Buis <rbuis@igalia.com> on 2021-01-06
Reviewed by Simon Fraser.
Source/WebCore:
The existing code does not respect min/max-height in the logical height
calculation, the computeLogicalWidthFromAspectRatio helper does, so use
it.
- rendering/RenderBox.cpp:
(WebCore::RenderBox::computeLogicalWidthInFragment const):
LayoutTests:
Enable some tests that pass now.
- 6:56 PM Changeset in webkit [271222] by
-
- 2 edits in trunk
Make svn status ignore Python 3 pycache directories.
Unreviewed.
Python 2 *.pyc files are still inconsistently handled via svn:ignore on each
directory, but it is not worth cleaning up before GitHub move.
- Tools: Added property svn:global-ignores.
- 5:50 PM Changeset in webkit [271221] by
-
- 10 edits in trunk/Source/WebKit
[WebAuthn] Adopt new UI for the Client PIN and dismiss flow
https://bugs.webkit.org/show_bug.cgi?id=219712
<rdar://problem/72154935>
Reviewed by Brent Fulgham.
Covered by manual tests.
This patch does the following few things:
- It tweaks the WebAuthn process as a UI view service to be able to run NearField in the background.
- It adopts new SPI for security keys' client pin support.
- It adopts new SPI to dismiss the UI when necessary.
- Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:
(NS_ERROR_ENUM):
Adds new SPI.
- Scripts/process-entitlements.sh:
Tweaks WebAuthn process for NFC.
- UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.h:
- UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.mm:
Paperwork.
- UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.h:
- UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:
(WebKit::AuthenticatorPresenterCoordinator::~AuthenticatorPresenterCoordinator):
(WebKit::AuthenticatorPresenterCoordinator::updatePresenter):
(WebKit::AuthenticatorPresenterCoordinator::requestPin):
(WebKit::AuthenticatorPresenterCoordinator::dimissPresenter):
(WebKit::AuthenticatorPresenterCoordinator::setPin):
Adopts new SPIs.
- UIProcess/WebAuthentication/Cocoa/NfcService.mm:
(WebKit::NfcService::platformStartDiscovery):
Tweaks NFC.
- UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.mm:
(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:credentialRequestedForLoginChoice:authenticatedContext:completionHandler:]):
(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:validateUserEnteredPIN:completionHandler:]):
Adopts new SPIs.
- 4:49 PM Changeset in webkit [271220] by
-
- 4 edits in trunk
[GTK][CMake] Add a build switch USE_OPENGL_OR_ES to be able to disable OpenGL and ES
https://bugs.webkit.org/show_bug.cgi?id=220183
Reviewed by Kenneth Russell.
.:
r270477 removed ENABLE_GRAPHICS_CONTEXT_GL macro and build switch,
but GTK port still needs the build switch. Revert r270477
partially to restore the build switch and rename it to
USE_OPENGL_OR_ES.
- Source/cmake/OptionsGTK.cmake:
Source/WebCore:
- platform/graphics/x11/PlatformDisplayX11.cpp: Include <X11/Xutil.h> for XGetVisualInfo.
- 4:16 PM Changeset in webkit [271219] by
-
- 29 edits in trunk/Source
[Cocoa] Revert audioTimePitchAlgorithm to "TimeDomain" from "Spectral"
https://bugs.webkit.org/show_bug.cgi?id=220341
Reviewed by Youenn Fablet.
Source/WebCore:
The "Spectral" pitch correction algorithm has notable deficiencies when applied to spoken
content; notably, transient propagation is missing, and the resulting audio sounds "robotic".
Revert to "TimeDomain", which is both more computationally inexpensive, and both propogates
transients and is optimized for non-harmonic content like speech.
Add a setting to allow clients to customize this behavior, e.g., if those clients would prefer
optimizing for music over speech.
Drive-by fix: re-apply the pitch algorithm after the AVPlayerItem reaches the "readyToPlay"
status to work around an AVFoundation bug.
- html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::loadResource):
- page/Settings.yaml:
- page/SettingsBase.h:
- platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::setPitchCorrectionAlgorithm):
- platform/graphics/MediaPlayer.h:
- platform/graphics/MediaPlayerEnums.h:
- platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::setPitchCorrectionAlgorithm):
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::audioTimePitchAlgorithmForMediaPlayerPitchCorrectionAlgorithm):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setPreservesPitch):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setPitchCorrectionAlgorithm):
(WebCore::MediaPlayerPrivateAVFoundationObjC::playerItemStatusDidChange):
Source/WebCore/PAL:
- pal/cocoa/AVFoundationSoftLink.h:
- pal/cocoa/AVFoundationSoftLink.mm:
Source/WebKit:
Add a private preference to control what pitch correction algorithm will be used by MediaPlayer.
- GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::setPitchCorrectionAlgorithm):
- GPUProcess/media/RemoteMediaPlayerProxy.h:
- GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
- UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _pitchCorrectionAlgorithm]):
(-[WKPreferences _setPitchCorrectionAlgorithm:]):
- UIProcess/API/Cocoa/WKPreferencesPrivate.h:
- WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::setPitchCorrectionAlgorithm):
- WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
Source/WebKitLegacy/mac:
Add a private preference to control what pitch correction algorithm will be used by MediaPlayer.
- WebView/WebPreferenceKeysPrivate.h:
- WebView/WebPreferences.mm:
(-[WebPreferences _pitchCorrectionAlgorithm]):
(-[WebPreferences _setPitchCorrectionAlgorithm:]):
- WebView/WebPreferencesPrivate.h:
- WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Source/WTF:
Add a private preference to control what pitch correction algorithm will be used by MediaPlayer.
- Scripts/Preferences/WebPreferences.yaml:
- 3:45 PM Changeset in webkit [271218] by
-
- 3 edits2 adds in trunk
[macOS] Text inside form controls is off center on burton.com
https://bugs.webkit.org/show_bug.cgi?id=220376
<rdar://problem/72833977>
Reviewed by Devin Rousso.
Source/WebCore:
<select> elements on burton.com specify an empty size attribute. This
results in the "select:matches([size], [multiple]), select[size][multiple]"
ruleset being applied, which adds the rule "align-items: flex-start". That
rules causes the text within the element to be aligned to the top.
This rule is necessary for <select multiple> and <select> elements with
a size attribute greater than or equal to 2, which both have a listbox
appearance (a popup menu is not shown when clicking the element).
However, <select> elements with a size attribute less than or equal to 1
have a menulist appearance and display a popup when clicked.
<select size> also displays a popup when clicked, and like other browsers
it should have vertically centered text. WebKit already has an additional
ruleset for size="0" and size="1" to preserve the menulist appearance.
Consequently, we can augment the ruleset to include size="", removing the
"align-items: flex-start" rule for <select size> and ensuring the text is
vertically centered.
Test: fast/forms/select-empty-size.html
- css/html.css:
(select:is([size], [multiple]), select[size][multiple]):
Update ruleset to use :is(), instead of the obsolete :matches().
(select:is([size=""], [size="0"], [size="1"])):
Add [size=""] to the list of matching attributes, since <select size>
should not have a listbox appearance. The new appearance matches
Chrome and Firefox.
LayoutTests:
Added a test to verify that the appearance of a <select> element with
an empty size attribute is the same as one without a size attribute.
- fast/forms/select-empty-size-expected.html: Added.
- fast/forms/select-empty-size.html: Added.
- 3:39 PM Changeset in webkit [271217] by
-
- 5 edits in trunk/Source
[JSC] Replace JSBigInt::toUint64 with JSBigInt::toBigUInt64
https://bugs.webkit.org/show_bug.cgi?id=220378
Reviewed by Darin Adler.
Source/JavaScriptCore:
This patch replaces JSBigInt::toUint64 with JSBigInt::toBigUInt64.
Rough purposes of these functions are the same, and JSBigInt::toBigUInt64
has the semantics defined in the ECMA262 spec. While the behavior is
slightly different[1], this difference does not matter for the clients of
JSBigInt::toUint64.
[1]: JSBigInt::toUint64 fails conversion if JSBigInt is out of range of uint64_t,
while JSBigInt::toBigUInt64 always generates uint64_t by computing mod UINT64_MAX.
- runtime/JSBigInt.cpp:
(JSC::JSBigInt::toUint64Heap): Deleted.
- runtime/JSBigInt.h:
Source/WebKit:
- WebProcess/WebPage/IPCTestingAPI.cpp:
(WebKit::IPCTestingAPI::convertToUint64):
(WebKit::IPCTestingAPI::encodeNumericType):
- 3:28 PM Changeset in webkit [271216] by
-
- 2 edits in trunk/Source/WebCore
[iOS] REGRESSION(r265088): "pointerdown" doesn't fire using a trackpad after double-tapping
https://bugs.webkit.org/show_bug.cgi?id=220072
Reviewed by Antoine Quint.
r265088 made it such that pointer events are not created for mouse events if there is an
existing entry for any touch event inm_activePointerIdsToCapturingData
. Unfortunately,
entries only appear to be removed fromm_activePointerIdsToCapturingData
from three places:
- when the single tap gesture recognizer resets (
-[WKContentView _singleTapDidReset:]
) - if a potential tap cannot be committed (
-[WKContentView _commitPotentialTapFailed]
) - after a synthetic click (
-[WKContentView _didCompleteSyntheticClick]
)
AFAICT (and seeing how there's a gesture recognizer for double-tap, long press, etc.), this
does not include other situations like the second tap of a double-tap. In order to fix this:
- eagerly
touchWithIdentifierWasRemoved
when dispatching"pointerup"
for a touch event - (just in case) don't prevent the pointer event for mouse events if the existing touch event has been cancelled or is not currently pressed
- page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):
(WebCore::PointerCaptureController::pointerEventForMouseEvent):
- 3:11 PM Changeset in webkit [271215] by
-
- 2 edits in trunk/Tools
Storage access prompt does not appear on MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=220379
<rdar://problem/72861088>
Reviewed by Darin Adler.
ITP should be on-by-default in MiniBrowser.
- MiniBrowser/mac/SettingsController.m:
(-[SettingsController initWithMenu:]):
- 2:36 PM Changeset in webkit [271214] by
-
- 24 edits in trunk/Source
[Mac] Replace most uses of HAVE(MT_PLUGIN_FORMAT_READER) with ENABLE(WEBM_FORMAT_READER)
https://bugs.webkit.org/show_bug.cgi?id=220374
<rdar://problem/72600426>
Reviewed by Eric Carlson.
Source/WebCore:
- page/RuntimeEnabledFeatures.h:
- platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::webMFormatReaderEnabled):
(WebCore::PlatformMediaSessionManager::setWebMFormatReaderEnabled):
- platform/audio/PlatformMediaSessionManager.h:
- platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:
(WebCore::AVAssetMIMETypeCache::canDecodeExtendedType):
(WebCore::AVAssetMIMETypeCache::initializeCache):
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::registerFormatReaderIfNecessary):
(WebCore::willUseWebMFormatReaderForType):
- platform/graphics/cocoa/SourceBufferParserWebM.cpp:
(WebCore::canLoadFormatReader):
Source/WebKit:
- Shared/API/c/mac/WKFormatReader.cpp:
(WKFormatReaderCreate):
(WKFormatReaderStartOnMainThread):
- Shared/WebPreferencesDefaultValues.cpp:
- Shared/WebPreferencesDefaultValues.h:
- Shared/mac/MediaFormatReader/CoreMediaWrapped.cpp:
- Shared/mac/MediaFormatReader/CoreMediaWrapped.h:
- Shared/mac/MediaFormatReader/FormatReader.cpp:
- Shared/mac/MediaFormatReader/FormatReader.h:
- Shared/mac/MediaFormatReader/SampleCursor.cpp:
- Shared/mac/MediaFormatReader/SampleCursor.h:
- Shared/mac/MediaFormatReader/TrackReader.cpp:
- Shared/mac/MediaFormatReader/TrackReader.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
- WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
Source/WTF:
- Scripts/Preferences/WebPreferencesExperimental.yaml:
- wtf/PlatformEnableCocoa.h:
- 1:08 PM Changeset in webkit [271213] by
-
- 3 edits in trunk/Source/WebKit
[GPUProcess] RemoteAudioSourceProviderManager should be a WorkQueueMessageReceiver
https://bugs.webkit.org/show_bug.cgi?id=220371
Reviewed by Youenn Fablet.
RemoteAudioSourceProviderManager should be a WorkQueueMessageReceiver (not a ThreadMessageReceiver),
since it uses a WorkQueue (not a WTF::Thread). This simplifies the code a bit.
- WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp:
(WebKit::RemoteAudioSourceProviderManager::setConnection):
(WebKit::RemoteAudioSourceProviderManager::addProvider):
(WebKit::RemoteAudioSourceProviderManager::removeProvider):
- WebProcess/GPU/media/RemoteAudioSourceProviderManager.h:
- 12:35 PM Changeset in webkit [271212] by
-
- 13 edits1 copy in trunk/Source/WebKit
[Concurrent Display Lists] GPU process should not immediately sleep after reading all available display list items
https://bugs.webkit.org/show_bug.cgi?id=219586
<rdar://problem/72275412>
Reviewed by Chris Dumez.
This patch adds a mechanism for the GPU process to wait for a short duration (~30 microseconds) after it has
finished reading all available data in its shared item buffer; if the web process writes additional data to the
item buffer (thereby bumping the unread bytes counter) during this time, we immediately resume processing the
new display list items in the GPU process, rather than wait for a new wakeup message.
This allows us to avoid the cost of going to sleep just to immediately wake up in the GPU process, in the case
where the web process is writing display list items at a very fast rate and the GPU process just happens to
catch up (i.e. advanceunreadBytes()
to 0).
See below for more details.
- GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::createRenderingBackend):
Refactor the rendering backend creation message from the web process to the GPU process, so that the rendering
backend creation arguments are encapsulated in a single struct, RemoteRenderingBackendCreationParameters. This
struct contains the rendering backend identifier and, on Cocoa platforms, a mach send right that can be used to
construct the corresponding display list wakeup semaphore in the GPU process.
- GPUProcess/GPUConnectionToWebProcess.h:
- GPUProcess/GPUConnectionToWebProcess.messages.in:
- GPUProcess/graphics/DisplayListReaderHandle.h:
(WebKit::DisplayListReaderHandle::startWaiting):
(WebKit::DisplayListReaderHandle::stopWaiting):
Add helper methods for the GPU process to start and stop waiting for new items. See the call site in
RemoteRenderingBackend for more detail, as well as the comments in SharedDisplayListHandle below.
- GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::create):
(WebKit::RemoteRenderingBackend::RemoteRenderingBackend):
Refactor this codepath to take RemoteRenderingBackendCreationParameters instead of just an identifier.
(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):
In the case where we received the wakeup message due to exceeding the display list item count hysteresis, wait
for a short duration using the semaphore after we hit an unread count of 0. This allows the web process to write
more items and signal the semaphore, so that we can resume reading in the GPU process.
(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayList):
(WebKit::RemoteRenderingBackend::setNextItemBufferToRead):
- GPUProcess/graphics/RemoteRenderingBackend.h:
- Shared/GPUProcessWakeupMessageArguments.h:
(WebKit::GPUProcessWakeupMessageArguments::encode const):
(WebKit::GPUProcessWakeupMessageArguments::decode):
Plumb a GPUProcessWakeupReason enum flag over to the GPU process, via wake-up arguments. This flag is used by
the GPU process to determine whether we should expect additional items to eventually enter the stream, and
whether we should eagerly go to sleep after processing all known items. In other words, if the wakeup message is
being sent as a result of flushing the image buffer, we don't want to unnecessarily wait for more items;
however, if the wakeup message is being sent as a result of exceeding the (currently) 512-item hysteresis, then
we can probably expect more items to stream in, so it's more optimal to wait after finishing all known display
list items.
- Shared/RemoteRenderingBackendCreationParameters.h: Copied from Source/WebKit/Shared/GPUProcessWakeupMessageArguments.h.
(WebKit::RemoteRenderingBackendCreationParameters::encode const):
(WebKit::RemoteRenderingBackendCreationParameters::decode):
See above for more details.
- Shared/SharedDisplayListHandle.h:
(WebKit::SharedDisplayListHandle::header const):
Adds a new WaitingStatus enum type internal to SharedDisplayListHandle and its subclasses, which is used to
coordinate the act of waiting for new item data in the GPU process. A shared display list handle now contains
an atomicwaitingStatus
flag indicating whether the GPU process is in the process of waiting for more items,
and also whether the web process has acknowledged the fact that the GPU process is waiting (thereby putting the
GPU process in a state where it is waiting to resume processing). Along with this enum, we also add two new
8-byte values to the header section: an offset to begin reading item data after resuming, and 8 bytes for an
identifier indicating the new destination (for the purposes of display list rendering, this is a
RenderingResourceIdentifier, though this will be different for WebGL).
+--> NotWaiting <--+
| | |
| | | [3a]
| [3b] | [1] |
| | |
Resuming +----> Waiting
|
| [2] |
+------------------+
There are three main ways in which this state machine may transition, numbered [1]-[3] in the above diagram.
[1] When the GPU process finishes processing available items, it enters Waiting state, indicating that it is now
waiting for additional item data. This corresponds to the call to
DisplayListReaderHandle::startWaiting
.
[2] When the web process bumps the unread count of an item buffer, if it has a pending wakeup message or would
otherwise need to schedule a pending wakeup message, see if we can instead simply tell the GPU process to
resume processing, instead of sending a wakeup message. This corresponds to a call to the helper method
DisplayListWriterHandle::tryToResume
.
[3] If the maximum wait duration (~30 microseconds) has passed (i.e. scenario 3a) or if the web process has
transitioned us from Waiting to Resuming state (i.e. scenario 3b), then transition back to NotWaiting. In
both scenarios, this corresponds to a call toDisplayListReaderHandle::stopWaiting
. In the case where we
transitioned from Resuming state, we can immediately continue processing display list items.
In the case where we successfully resume, we're essentially "re-waking" the GPU process without the overhead of
an additional IPC message, using the same shared display list handle. Since this would've otherwise been a
separate wakeup message, we need to be careful that we continue processing display list items from the correct
offset into the shared display list handle, and using the correct destination image buffer. This is because the
writable offset of the item buffer may have been reset in the middle of waiting by the web process, or the
destination image buffer may have changed while waiting. To handle these scenarios, we introduce the
ResumeReadingInformation
struct, which contains both of these pieces of information. An instance of this
struct exists in the shared memory header section; this is written by the web process immediately prior to
transitioning to Resuming state, and read by the GPU process when transitioning from Resuming to NotWaiting.
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/GPU/graphics/DisplayListWriterHandle.h:
(WebKit::DisplayListWriterHandle::tryToResume):
Add a helper method for the web process to try and notify the GPU process that it should try and resume
display list processing. See the call site in RemoteRenderingBackendProxy for more detail, as well as the
comments in SharedDisplayListHandle above.
- WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::connectToGPUProcess):
(WebKit::RemoteRenderingBackendProxy::didAppendData):
Rather than always schedule (or send) a wakeup message here in the case where the unread count is 0, see if we
can instead tell the GPU process to stop waiting and resume display list processing. To do this, we use the new
DisplayListWriterHandle::tryToResume method, giving it the new offset to begin reading items from as well as the
destination image buffer to which we should apply display list items. If we successfully tell the GPU process to
resume reading, then we can clear out (or avoid storing) wakeup message arguments and avoid sending an IPC
wakeup message.
- WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
- 12:31 PM Changeset in webkit [271211] by
-
- 2 edits in trunk/Tools
Assorted fixes for bisect-builds
https://bugs.webkit.org/show_bug.cgi?id=220158
Reviewed by Jonathan Bedard.
Switched to Python 3.
Many trivial Python style changes.
Simplified arguments, and cleaned up output.
Switched from run-safari to run-minibrowser on macOS, as run-safari currently
doesn't work on regular macOS installations.
- Scripts/bisect-builds:
(QueueDescriptor): New class that holds a description of a queue, or a "platform",
as coming from a string like mac-catalina or mac-catalina-x86_64-release. Used for
matching arguments to an existing archive directory on the server.
(trac_link): Added. The tool now prints a trac link for seeing where the regression
was introduced.
(bisect_builds): Fixed arithmetic mistakes. Got rid of an unnecessary while-true loop,
as the function was already recursive.
(host_platform_name): The script now defaults to current platform, so -p argument
is mostly to select simulator.
(main): Moved code from "if name == 'main'" block into main function for
consistency.
- 12:10 PM Changeset in webkit [271210] by
-
- 2 edits in trunk/Source/WebCore
[LFC][IFC] "display: -webkit-inline-box" generates an inline level box
https://bugs.webkit.org/show_bug.cgi?id=220373.
<rdar://problem/72138270>
Reviewed by David Kilzer.
- layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::isInlineLevelBox const):
- 12:08 PM Changeset in webkit [271209] by
-
- 3 edits in trunk/LayoutTests
[Mac] inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-frames.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=218725
Unreviewed test gardening.
This isn't specific to Rosetta, so move the expectation to mac-wk2.
- platform/mac-wk2/TestExpectations:
- platform/mac/TestExpectationsRosetta:
- 12:02 PM Changeset in webkit [271208] by
-
- 3 edits in trunk/LayoutTests
REGRESSION (2020-10-23): webanimations/accelerated-animation-with-easing.html is flaky on Mac Debug
https://bugs.webkit.org/show_bug.cgi?id=220187
<rdar://problem/72796329>
Reviewed by Dean Jackson.
Ensure there were two stable presentation updates prior to starting animations and two after that to ensure
they are visually running accelerated.
- platform/mac/TestExpectations:
- webanimations/accelerated-animation-with-easing.html:
- 11:35 AM Changeset in webkit [271207] by
-
- 8 edits1 copy in trunk
Add SPI to determine whether a regex is supported in WKContentRuleList
https://bugs.webkit.org/show_bug.cgi?id=220095
Source/WebKit:
<rdar://problem/72058626>
Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-06
Reviewed by Tim Horton.
This is a more efficient way than making a little rule list and seeing if it compiles.
Here, we don't need access to the disk, and we don't need to hop to another thread and back.
Covered by API tests.
- UIProcess/API/APIContentRuleList.cpp:
(API::ContentRuleList::supportsRegularExpression):
- UIProcess/API/APIContentRuleList.h:
- UIProcess/API/Cocoa/WKContentRuleList.mm:
(+[WKContentRuleList _supportsRegularExpression:]):
- UIProcess/API/Cocoa/WKContentRuleListInternal.h:
- UIProcess/API/Cocoa/WKContentRuleListPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListInternal.h.
- WebKit.xcodeproj/project.pbxproj:
Tools:
Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-06
Reviewed by Tim Horton.
- TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:
(TEST):
- 11:31 AM Changeset in webkit [271206] by
-
- 7 edits in trunk/Source/WebKit
Modernize WebContextMenu
https://bugs.webkit.org/show_bug.cgi?id=219969
Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-06
Reviewed by Tim Horton.
This is old code, complete with a raw pointer.
Use references instead of pointers where possible,
and WeakPtr instead of a raw pointer.
- WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageClickMenuItem):
(WKBundlePageCopyContextMenuItems):
- WebProcess/WebCoreSupport/WebContextMenuClient.cpp:
(WebKit::WebContextMenuClient::showContextMenu):
- WebProcess/WebPage/WebContextMenu.cpp:
(WebKit::WebContextMenu::WebContextMenu):
- WebProcess/WebPage/WebContextMenu.h:
(WebKit::WebContextMenu::create):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::contextMenu):
(WebKit::WebPage::contextMenuAtPointInWindow):
(WebKit::handleContextMenuEvent):
(WebKit::WebPage::contextMenuForKeyEvent):
- 11:22 AM Changeset in webkit [271205] by
-
- 10 edits in trunk
Stop speech recognition if page becomes invisible
https://bugs.webkit.org/show_bug.cgi?id=220073
<rdar://problem/72710704>
Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-06
Reviewed by Youenn Fablet.
Source/WebKit:
We should not allow speech recognition on page invisible to user, because page may get content of captured audio
without user's notice. To do this, we should:
- deny speech recognition request on invisibile page
- abort ongoing speech recognition if page becomes invisible
API test: WebKit2.SpeechRecognitionPageBecomesInvisible
- UIProcess/SpeechRecognitionPermissionManager.cpp:
(WebKit::SpeechRecognitionPermissionManager::continueProcessingRequest):
- UIProcess/SpeechRecognitionServer.cpp:
(WebKit::SpeechRecognitionServer::abortForPageIsBecomingInvisible):
- UIProcess/SpeechRecognitionServer.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::dispatchActivityStateChange):
- UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::pageIsBecomingInvisible):
- UIProcess/WebProcessProxy.h:
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm: updated
WebKit2.SpeechRecognitionErrorWhenStartingAudioCaptureOnDifferentPage for updated behavior.
(TestWebKitAPI::TEST):
- TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[TestWKWebView _setUpTestWindow:]): set the origin of host window to be the origin of frame of TestWKWebView.
- 11:19 AM Changeset in webkit [271204] by
-
- 2 edits in trunk/LayoutTests
Unreviewed, reverting r271165.
Caused the test to fail on bots
Reverted changeset:
- 10:14 AM Changeset in webkit [271203] by
-
- 3 edits in trunk/Tools
[webkitscmpy] Add command to canonicalize unpushed commits (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=219982
<rdar://problem/72427536>
Reviewed by Aakash Jain.
- Scripts/libraries/webkitscmpy/webkitscmpy/canonicalize/init.py:
(Canonicalize.main): git filter-branch requires the repository root.
- 9:49 AM Changeset in webkit [271202] by
-
- 2 edits in trunk/LayoutTests
[GPU process] Add Layout tests failures to LayoutTests/gpu-process/TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=220070
Patch by Rini Patel <rini_patel@apple.com> on 2021-01-06
Reviewed by Darin Adler.
- gpu-process/TestExpectations:
- 9:32 AM Changeset in webkit [271201] by
-
- 8 edits in trunk/Source/WebKit
Use sendWithAsyncReply instead of iOS-specific GenericCallbacks
https://bugs.webkit.org/show_bug.cgi?id=220346
Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-06
Reviewed by Darin Adler.
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _accessibilityRetrieveRectsEnclosingSelectionOffset:withGranularity:]):
(-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]):
(selectionChangedWithGesture):
(selectionChangedWithTouch):
(-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
(-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:withFlags:]):
(-[WKContentView changeSelectionWithTouchesFrom:to:withGesture:withState:]):
(-[WKContentView updateCurrentFocusedElementInformation:]):
- UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::requestFocusedElementInformation):
(WebKit::WebPageProxy::selectWithGesture):
(WebKit::WebPageProxy::updateSelectionWithTouches):
(WebKit::WebPageProxy::selectWithTwoTouches):
(WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset):
(WebKit::WebPageProxy::requestRectsAtSelectionOffsetWithText):
(WebKit::WebPageProxy::gestureCallback): Deleted.
(WebKit::WebPageProxy::touchesCallback): Deleted.
(WebKit::WebPageProxy::selectionRectsCallback): Deleted.
(WebKit::WebPageProxy::focusedElementInformationCallback): Deleted.
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::requestFocusedElementInformation):
(WebKit::WebPage::selectWithGesture):
(WebKit::WebPage::updateSelectionWithTouches):
(WebKit::WebPage::selectWithTwoTouches):
(WebKit::WebPage::getRectsForGranularityWithSelectionOffset):
(WebKit::WebPage::getRectsAtSelectionOffsetWithText):
- 6:50 AM Changeset in webkit [271200] by
-
- 2 edits in trunk/Source/WebCore
Remove the unused RenderStyle::setHasPseudoStyle()
https://bugs.webkit.org/show_bug.cgi?id=219893
Reviewed by Darin Adler.
This function no longer has any call sites.
- rendering/style/RenderStyle.h:
(WebCore::RenderStyle::NonInheritedFlags::setHasPseudoStyle): Deleted.
(WebCore::RenderStyle::setHasPseudoStyle): Deleted.
- 5:45 AM Changeset in webkit [271199] by
-
- 2 edits in trunk/Tools
[Flatpak SDK] coredumpctl invocation when using a local SDK repo fallbacks to the remote repo
https://bugs.webkit.org/show_bug.cgi?id=219934
Reviewed by Philippe Normand.
Some commands run in flatpak may end up calling other commands on the
host through flatpak-spawn that would enter the flatpak environment
again. One such command happens when getting crash logs, which invokes
webkit-flatpak with --gdb-stack-trace.
Before this commit, the WEBKIT_FLATPAK_USER_DIR is not forwarded,
making flatpakutils.py to download the regular UserFlatpak SDK instead
of using the one in the mentioned variable.
- Scripts/webkitpy/port/linux_get_crash_log.py:
(GDBCrashLogGenerator._get_trace_from_flatpak):
- 2:37 AM Changeset in webkit [271198] by
-
- 2 edits in trunk/Source/WebKit
[iOS] Silence selected sandbox violation reports
https://bugs.webkit.org/show_bug.cgi?id=220320
Reviewed by Darin Adler.
For performance reasons, benign sandbox violations in the WebContent process can be silenced on iOS.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
- 1:56 AM Changeset in webkit [271197] by
-
- 7 edits in trunk/Source/WebCore
REGRESSION[r270947][GStreamer]: Deadlocks audio rendering
https://bugs.webkit.org/show_bug.cgi?id=220112
Reviewed by Chris Dumez.
This patch fixes the mentioned regression by making the webaudiosrc element wait on the
dispatch condition only if it wasn't done synchronously. Additionally several race
conditions are now fixed in the AudioDestination, by ensuring the start and stop completion
handlers are invoked only after the corresponding pipeline state has been reached. Also the
AudioDestination now correctly notifies its parent node of is-playing changes.
- platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):
(WebCore::AudioDestinationGStreamer::~AudioDestinationGStreamer):
(WebCore::AudioDestinationGStreamer::handleMessage):
(WebCore::AudioDestinationGStreamer::start):
(WebCore::AudioDestinationGStreamer::startRendering):
(WebCore::AudioDestinationGStreamer::stop):
(WebCore::AudioDestinationGStreamer::stopRendering):
(WebCore::AudioDestinationGStreamer::notifyStartupResult):
(WebCore::AudioDestinationGStreamer::notifyStopResult):
(WebCore::AudioDestinationGStreamer::notifyIsPlaying):
- platform/audio/gstreamer/AudioDestinationGStreamer.h:
- platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
(webkit_web_audio_src_class_init):
(webKitWebAudioSrcConstructed):
(webKitWebAudioSrcSetProperty):
(webKitWebAudioSrcGetProperty):
(webKitWebAudioSrcAllocateBuffers):
(webKitWebAudioSrcRenderAndPushFrames):
(webKitWebAudioSrcRenderIteration):
(webKitWebAudioSrcChangeState):
(webkitWebAudioSourceSetDispatchToRenderThreadFunction):
- platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.h:
- platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::webkitGstSetElementStateSynchronously):
- platform/graphics/gstreamer/GStreamerCommon.h:
(WebCore::webkitGstSetElementStateSynchronously):
- 1:12 AM Changeset in webkit [271196] by
-
- 5 edits in trunk/LayoutTests
REGRESSION (r267227): imported/w3c/web-platform-tests/xhr/event-timeout.any.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=216961
<rdar://problem/69548545>
Reviewed by Darin Adler.
LayoutTests/imported/w3c:
- web-platform-tests/xhr/event-timeout.any.js:
(test.step):
Increase the timeout to 1 second since 10ms might be too small to get consistent results now that we are doing an IPC message to network process to check load is not yet finished.
LayoutTests:
- platform/glib/TestExpectations:
- platform/ios-simulator-wk2/TestExpectations:
- 12:16 AM Changeset in webkit [271195] by
-
- 2 edits in trunk/Source/WebKit
[iOS] Add missing endpoint in sandbox message filter
https://bugs.webkit.org/show_bug.cgi?id=219731
<rdar://problem/71566760>
Reviewed by Darin Adler.
Add missing endpoint in the WebContent process' sandbox message filter on iOS.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
Jan 5, 2021:
- 11:26 PM Changeset in webkit [271194] by
-
- 20 edits in trunk/Source
[Cocoa] WebM format reader doesn't work with a url in a <source> element
https://bugs.webkit.org/show_bug.cgi?id=219961
<rdar://problem/72399014>
Reviewed by Andy Estes.
Source/WebCore:
Work around a CoreMedia bug that makes the format reader fail to load when the
AVURLAssetOutOfBandMIMETypeKeyis included in the AVURLAsset options dictionary.
Also include some cleanup:
- Move the code to check for WebM MIME types from MediaPlayerPrivateAVFoundationObjC to AVAssetMIMETypeCache.
- Don't use RuntimeEnabledFeatures in MediaPlayerPrivateAVFoundationObjC.
- Register the WebM format reader when creating an AVURLAsset for a WebM url instead of when checking the MIME type.
- Cleanup WebM "codecs" parameter parsing.
- It is a layering violation to use RuntimeSettings from inside of /platform.
- platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::webMFormatReaderEnabled):
(WebCore::PlatformMediaSessionManager::setWebMFormatReaderEnabled):
(WebCore::PlatformMediaSessionManager::vorbisDecoderEnabled):
(WebCore::PlatformMediaSessionManager::setVorbisDecoderEnabled):
- platform/audio/PlatformMediaSessionManager.h:
- platform/graphics/TrackPrivateBase.cpp:
(WebCore::TrackPrivateBase::defaultEnabled const):
- platform/graphics/TrackPrivateBase.h:
- platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:
(WebCore::AVAssetMIMETypeCache::canDecodeExtendedType):
(WebCore::AVAssetMIMETypeCache::initializeCache):
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::registerFormatReaderIfNecessary):
(WebCore::willUseWebMFormatReaderForType):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
(WebCore::MediaPlayerPrivateAVFoundationObjC::supportsTypeAndCodecs):
(WebCore::ensureFormatReaderIsRegistered): Deleted.
(WebCore::isFormatReaderAvailable): Deleted.
- platform/graphics/cocoa/AudioTrackPrivateWebM.cpp:
(WebCore::AudioTrackPrivateWebM::defaultEnabled const):
- platform/graphics/cocoa/AudioTrackPrivateWebM.h:
- platform/graphics/cocoa/SourceBufferParserWebM.cpp:
(WebCore::SourceBufferParserWebM::webmMIMETypes):
(WebCore::canLoadFormatReader):
(WebCore::SourceBufferParserWebM::isWebMFormatReaderAvailable):
(WebCore::SourceBufferParserWebM::isContentTypeSupported):
- platform/graphics/cocoa/SourceBufferParserWebM.h:
- platform/graphics/cocoa/VideoTrackPrivateWebM.cpp:
(WebCore::VideoTrackPrivateWebM::defaultEnabled const):
- platform/graphics/cocoa/VideoTrackPrivateWebM.h:
- platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm:
(WebCore::isVorbisDecoderAvailable):
Source/WebKit:
Only enable a WebM track when the it has FlagEnabled element, or when we see that
it has media samples. This is necessary because there are WebM files with empty tracks,
and CoreMedia won't play a file if any enabled track doesn't have samples.
- Shared/mac/MediaFormatReader/FormatReader.cpp:
(WebKit::FormatReader::didParseTracks):
- Shared/mac/MediaFormatReader/TrackReader.cpp:
(WebKit::TrackReader::create):
(WebKit::TrackReader::TrackReader):
(WebKit::TrackReader::finishParsing):
(WebKit::TrackReader::isEnabled const):
(WebKit::TrackReader::copyProperty):
- Shared/mac/MediaFormatReader/TrackReader.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
- WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
- 9:59 PM Changeset in webkit [271193] by
-
- 9 edits in trunk/Source/WebKit
Refactor some logic around touch event deferring gesture recognizers
https://bugs.webkit.org/show_bug.cgi?id=220345
Reviewed by Tim Horton.
Rename
_deferringGestureRecognizerForFoo
to_touchStartDeferringGestureRecognizerForFoo
, to make it clear
that these deferring gestures are only intended to defer native gestures until the "touchstart" event has been
handled.
This distinction becomes important once I introduce deferring gesture recognizers that defer the "touchend"
event, and prevent gestures that activate upon touch end (i.e. various types of tap gesture recognizers).
See below for more details.
- UIProcess/PageClient.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::handlePreventableTouchEvent):
- UIProcess/ios/PageClientImplIOS.h:
- UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::doneDeferringTouchStart):
(WebKit::PageClientImpl::doneDeferringNativeGestures): Deleted.
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setUpInteraction]):
(-[WKContentView cleanUpInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView _webTouchEventsRecognized:]):
(-[WKContentView _touchStartDeferringGestures]):
(-[WKContentView _doneDeferringTouchStart:]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):
(-[WKContentView _deferringGestureRecognizers]): Deleted.
(-[WKContentView _doneDeferringNativeGestures:]): Deleted.
Rename this to
-_doneDeferringTouchStart:
.
(-[WKContentView deferringGestureRecognizer:shouldDeferGesturesAfterEndingTouchesWithEvent:]):
Deleted. This logic has been moved to WKContentView (see below).
- UIProcess/ios/WKDeferringGestureRecognizer.h:
- UIProcess/ios/WKDeferringGestureRecognizer.mm:
(-[WKDeferringGestureRecognizer touchesEnded:withEvent:]): Deleted.
Additionally refactor this code so that this fallback logic for lifting the gesture gate exists inside
WKContentView
(after ending all touches), rather than inside the deferring gesture recognizer. While this
doesn't affect the extant touch start deferring gestures, it will ensure that touch end deferring gestures won't
get reset prematurely due to the web touch events gesture recognizer ending before the touch end deferring
gesture.
- 9:29 PM Changeset in webkit [271192] by
-
- 4 edits in trunk/Source
NSCrossWebsiteTrackingUsageDescription is not working on Mac, ITP is always enabled
https://bugs.webkit.org/show_bug.cgi?id=220190
<rdar://problem/72744909>
Reviewed by Brent Fulgham.
Source/WebKit:
Consider the presence of the NSCrossWebsiteTrackingUsageDescription
key as an indication to disable ITP for WKWebView until we implement
a mechanism for disabling it in WKWebView like we do for iOS to avoid
compatibility bugs.
- Shared/Cocoa/DefaultWebBrowserChecks.mm:
(WebKit::determineITPStateInternal):
Source/WTF:
- wtf/PlatformUse.h:
- 7:55 PM Changeset in webkit [271191] by
-
- 3 edits2 adds in trunk
REGRESSION: animated iframe painted blank
https://bugs.webkit.org/show_bug.cgi?id=220231
Source/WebCore:
<rdar://problem/72793724>
Reviewed by Zalan Bujtas.
When an <iframe> on a fractional pixel boundary, on a non-Retina display, with
composited contents had its visibility toggled from 'hidden' to 'visible' we could
fail to parent the iframe content compositing layers, resulting in missing iframe
content.
This happened when the iframe's GraphicsLayer had a m_contentsClippingLayer (which
acts as the parent for the content layers) due to the fractional pixel offset.
When GraphicsLayerCA::setContentsVisible(true) was called, it would fail to call
noteSublayersChanged() because the iframe host layer has no m_contentsLayer,
but we do need to rebuild sublayers in this case.
Test: compositing/iframes/content-visibility-with-clipping.html
- platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::setContentsVisible):
LayoutTests:
Reviewed by Zalan Bujtas.
- compositing/iframes/content-visibility-with-clipping-expected.html: Added.
- compositing/iframes/content-visibility-with-clipping.html: Added.
- 7:27 PM Changeset in webkit [271190] by
-
- 10 edits1 add in trunk
REGRESSION (r261157): Crash in WKSelectPopover when running as iPhone app on iPad
https://bugs.webkit.org/show_bug.cgi?id=220065
<rdar://problem/71932792>
Reviewed by Darin Adler.
Source/WebKit:
r261157 changed how WebKit determined the user interface idiom for
WKWebViews that were created in daemons. Since daemons do not create
UIApplications, WebKit cannot use UIDevice in these instances. Instead,
the user interface idiom determination logic was updated to include
a check for device hardware, using MobileGestalt, in cases where no
UIApplication was created.
Since WebKit only determines the user interface idiom once (then
storing the obtained value), the added determination logic breaks
down for iPhone apps on iPad. Consider the following sequence of
events, eventually leading to a crash when interacting with a
<select> element:
- A WKWebView is created prior to UIApplication initialization. This can be achieved by creating one in another class's "load" method.
- Since the app is physically running on an iPad, WebKit determines the user interface idiom to be "iPad" and saves this information.
- Once the app actually launches, UIApplication is initialized. Since this is an iPhone app on iPad, the actual user interface idiom is "iPhone". However, WebKit does not know this, since it uses the saved user interface idiom from (2).
- When tapping a <select> element, WebKit checks its saved idiom, an attempts to present a UIPopoverController (the standard behavior under the iPad idiom).
- However, since the actual idiom is iPhone, UIKit throws an NSInvalidArgumentException, since UIPopoverController should not be used when running under the iPhone idiom.
A simple fix for the crash would be to call into UIKit to check the
idiom each time it is required, rather than relying on the saved bit.
However, this does not address the more general issue, which is that
WebKit's saved idiom and the actual idiom can be out of sync.
Consequently, the approach taken is to update the saved idiom when
it changes. This should only occur when a UIApplication is initialized.
Hence, we listen for UIApplicationDidFinishLaunchingNotification,
and if the actual idiom is different from our saved idiom, we update the
saved idiom and also notify the WebProcess.
- Shared/UserInterfaceIdiom.h:
- Shared/UserInterfaceIdiom.mm:
(WebKit::updateCurrentUserInterfaceIdiom):
This method checks the actual idiom and updates the saved idiom if
they differ. Returns true only if the idiom was updated.
- UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::registerNotificationObservers):
Listen for UIApplicationDidFinishLaunchingNotification if the idiom
can change (UIApplication is uninitialized). Then, if the actual
and saved idiom differ, notify all WebProcesses of the change.
(WebKit::WebProcessPool::unregisterNotificationObservers):
- UIProcess/WebProcessPool.h:
- WebProcess/WebProcess.h:
- WebProcess/WebProcess.messages.in:
- WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::userInterfaceIdiomDidChange):
Update the saved idiom using the information from the UIProcess.
Tools:
Added an API test to exercise the previously crashing, and now fixed,
codepath. Note that the test will trivially pass on iPhones, since the
crash only occurs on iPads. See below for an explanation of how the
test functions on iPads.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/ios/UserInterfaceIdiomUpdate.mm: Added.
(TestWebKitAPI::TEST):
Since TestWebKitAPI is not an application, [UIApplication sharedApplication]
is nil when the test creates a WKWebView. Consequently, when the WKWebView
is created, WebKit uses the device hardware information to determine the user
interface idiom (iPad). Now, before the test interacts with the WKWebView,
the user interface idiom is changed to an iPhone and the UIApplication is
initialized. Note that the UIApplicationDidFinishLaunchingNotification
is manually posted, since there is no UIApplicationDelegate.
Without the changes in this patch, the test will crash, since the user
interface idiom maintained by WebKit would not be updated, and would
remain iPad rather than iPhone. Hence, when focusing a select element, the test
would attempt to present a UIPopoverController. However, since the idiom
is actually iPhone, UIKit will throw an NSInvalidArgumentException.
After the changes in this patch, the test does crash, as the change to the
user interface idiom after UIApplication creation is recognized by WebKit,
and the attempt to present a UIPopoverController under the iPhone idiom
does not occur.
- 7:24 PM Changeset in webkit [271189] by
-
- 9 edits in trunk/Source
[iOS] Add a feature flag to stop leaking an XPC boost message to XPC services
https://bugs.webkit.org/show_bug.cgi?id=219453
<rdar://72834999>
Reviewed by Geoff Garen.
Source/WebKit:
Add a feature flag to stop leaking an XPC boost message to XPC services on builds where RunningBoard is
able to give the right priorities to our XPC services based on the type of RunningBoard assertion is being
held. There is no behavior change for the Network/WebContent processes since those were blocklisted in
RunningBoard (Turning on the RB_full_manage_WK_jetsam feature flag gives us the default RunningBoard
behavior without blocklisting). However, this allows the new GPUProcess to move to IDLE jetsam band when
homing out of MobileSafari, which makes the GPUProcess eligible for the freezer. Previously, the leaked
boost message would keep the GPUProcess in a higher jetsam band.
For now, the feature flag is off by default. I will turn it on later on.
- FeatureFlags/WebKit.plist:
Add RB_full_manage_WK_jetsam feature flag but keep it off for now. On recent enough builds of RunningBoard, this
flag disables the blocklisting of the WebContent/Network processes in RunningBoard so that RunningBoard can now
set the priority of those processes (instead of us boosting our priority via boost messages).
- GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist:
- NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-iOS.plist:
- WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnService/Info-iOS.plist:
- WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist:
Set _ProcessType=App so that RunningBoard is able to set the priority of our XPC services on iOS. Without
this change, we get a permission denied when RunningBoard attempts to set the priority of our XPC services.
- UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::shouldLeakBoost):
Stop leaking a boost message on iOS when RUNNINGBOARD_WEBKIT_PRIORITY_SUPPORT compile-time flag is enabled
and when the RB_full_manage_WK_jetsam feature flag is enabled.
Source/WTF:
Add new RUNNINGBOARD_WEBKIT_PRIORITY_SUPPORT build time flag since we need a recent
enough build of RunningBoard to do this.
- wtf/PlatformHave.h:
- 7:11 PM Changeset in webkit [271188] by
-
- 2 edits in trunk/Source/WebCore
Copy Localizable.strings file into the correct directory
https://bugs.webkit.org/show_bug.cgi?id=220029
Reviewed by Tim Horton.
After the changes in r269865, r269873, r269915, r269932, r269937 the localizable.strings
was not showing up in the right place in the production build to allow it to be correctly
localized. This skips the step of putting it in DerivedSources and just puts the
concatenated file in the final correct directory so we do not have to relay on Xcode build
doing the correct thing for us.
- WebCore.xcodeproj/project.pbxproj:
- 7:03 PM Changeset in webkit [271187] by
-
- 8 edits in trunk/Source/WebKit
Use sendWithAsyncReply instead of AttributedStringForCharacterRangeCallback and FontAtSelectionCallback
https://bugs.webkit.org/show_bug.cgi?id=220344
Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-05
Reviewed by Geoffrey Garen.
- UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::updateFontManagerIfNeeded):
(WebKit::WebViewImpl::attributedSubstringForProposedRange):
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync):
(WebKit::WebPageProxy::fontAtSelection):
(WebKit::WebPageProxy::attributedStringForCharacterRangeCallback): Deleted.
(WebKit::WebPageProxy::fontAtSelectionCallback): Deleted.
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::attributedSubstringForCharacterRangeAsync):
(WebKit::WebPage::fontAtSelection):
- 7:03 PM Changeset in webkit [271186] by
-
- 12 edits in trunk
[JSC] DFG/FTL DirectCall need to respect Wasm IC
https://bugs.webkit.org/show_bug.cgi?id=220339
Reviewed by Saam Barati.
We found that Wasm IC for fast calls are not used in several places.
- LLInt calls
- DFG/FTL DirectCall
- Virtual calls
We noticed this because of r271112. r271112 made wasm function loading from exports constant-folded in DFG/FTL.
And it emits DirectCall instead of Call in DFG/FTL. Then, we missed Wasm IC and get large performance regression
in JetStream2 richard-wasm.
In this patch, we use Wasm IC as much as possible. The key thing of this wasm IC is that it relies on callee.
So, if the place is just checking Executable, then we should not go to that IC. Fortunately, the above three checks
callee before using code pointer obtained for Wasm IC.
- LLInt call fast path first checks callee.
- DFG/FTL DirectCall requires callee is constant for wasm functions.
- Virtual calls are not storing generated codePtr.
- dfg/DFGOperations.cpp:
(JSC::DFG::JSC_DEFINE_JIT_OPERATION):
- jit/JITOperations.cpp:
(JSC::virtualForWithFunction):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::setUpCall):
- 6:27 PM Changeset in webkit [271185] by
-
- 8 edits in branches/safari-611.1.9-branch/Source
Versioning.
WebKit-7611.1.9.4
- 5:08 PM Changeset in webkit [271184] by
-
- 4 edits in trunk/Source/WebKit
PCM: Experimental debug mode stops working after initial use
https://bugs.webkit.org/show_bug.cgi?id=220336
<rdar://problem/72398086>
Reviewed by Brent Fulgham.
The existing experimental PCM debug mode uses
RuntimeEnabledFeatures::sharedFeatures().privateClickMeasurementDebugModeEnabled()
which is not correct in the network process. This makes the flag to lose its
state after navigations in new tabs.
This patch moves the flag to be alongside the PCM feature flag in
WebKit::NetworkProcess.
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::setPrivateClickMeasurementDebugMode):
(WebKit::NetworkProcess::privateClickMeasurementDebugModeEnabled const):
- NetworkProcess/NetworkProcess.h:
- NetworkProcess/PrivateClickMeasurementManager.cpp:
(WebKit::PrivateClickMeasurementManager::debugModeEnabled const):
- 4:44 PM Changeset in webkit [271183] by
-
- 5 edits10 moves8 adds5 deletes in trunk/Source/WebKit
WebKit IPC generator tests have duplicate receiver names, limiting the implementation
https://bugs.webkit.org/show_bug.cgi?id=220236
Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-01-05
Reviewed by Chris Dumez.
IPC test message receivers defined multiple receivers with same name.
Rename the test message receivers based on what feature they test. No
change in the non-test code.
The IPC works with message identifier defined by the MessageName type.
Having multiple clashing receiver names is problematic because a MessageName
is defined by pair <receiver name, message name>. Since different receivers
might have different kinds of messages with same message name, these might end
up mapping to two conflicting message kinds.
The rename of test classes makes the tests conform to the already used contract
that the MessageName is globally unique to each individual conceptual message
because the receiver names are unique.
This enables further implementations that make decisions based on the
message name. Example is to decide whether a message is synchronous or
not. This cannot be implemented generally if there is multiple different kinds of
messages with same name.
Rename the test message receiver files based on the receiver name. This is
more consistent with the existing convention used in the actual code.
Move the script test results from the Scripts/ directory to a tests/ subdirectory
of the tool. This is to not fill the Scripts/ directory with Scripts/webkit/ related
test result data.
Adds previously missing test result file MessageArgumentDescriptions.cpp, which was not added
when the feature was implemented.
Tested by existing tests and new model_unittest.py.
- Scripts/Makefile: Removed.
- Scripts/MessageNames.cpp: Removed.
- Scripts/MessageNames.h: Removed.
- Scripts/generate-message-receiver.py:
(main):
- Scripts/test-legacyMessageReceiver.cpp: Removed.
- Scripts/testMessageReceiver.cpp: Removed.
- Scripts/webkit/messages.py:
- Scripts/webkit/messages_unittest.py:
(ParsingTest.test_receiver):
(GeneratedFileContentsTest.assertGeneratedFileContentsEqual):
- Scripts/webkit/model.py:
(Parameter.has_attribute):
(check_global_model):
- Scripts/webkit/model_unittest.py: Added.
(ModelCheckTest):
(ModelCheckTest.test_duplicate_receivers):
(test_mismatch_message_attribute_sync):
- Scripts/webkit/tests/Makefile: Added.
- Scripts/webkit/tests/MessageArgumentDescriptions.cpp: Added.
(IPC::jsValueForArguments):
(IPC::jsValueForReplyArguments):
(IPC::messageArgumentDescriptions):
(IPC::messageReplyArgumentDescriptions):
(IPC::messageIsSync):
- Scripts/webkit/tests/MessageNames.cpp: Added.
(IPC::description):
(IPC::receiverName):
(IPC::isValidMessageName):
- Scripts/webkit/tests/MessageNames.h: Added.
(WTF::isValidEnum):
- Scripts/webkit/tests/TestWithLegacyReceiver.messages.in: Renamed from Source/WebKit/Scripts/webkit/test-legacy.messages.in.
- Scripts/webkit/tests/TestWithLegacyReceiverMessageReceiver.cpp: Added.
(Messages::TestWithLegacyReceiver::GetPluginProcessConnection::send):
(Messages::TestWithLegacyReceiver::TestMultipleAttributes::send):
(WebKit::TestWithLegacyReceiver::didReceiveTestWithLegacyReceiverMessage):
(WebKit::TestWithLegacyReceiver::didReceiveSyncTestWithLegacyReceiverMessage):
- Scripts/webkit/tests/TestWithLegacyReceiverMessages.h: Renamed from Source/WebKit/Scripts/test-legacyMessages.h.
(Messages::TestWithLegacyReceiver::messageReceiverName):
(Messages::TestWithLegacyReceiver::LoadURL::name):
(Messages::TestWithLegacyReceiver::LoadSomething::name):
(Messages::TestWithLegacyReceiver::TouchEvent::name):
(Messages::TestWithLegacyReceiver::AddEvent::name):
(Messages::TestWithLegacyReceiver::LoadSomethingElse::name):
(Messages::TestWithLegacyReceiver::DidReceivePolicyDecision::name):
(Messages::TestWithLegacyReceiver::Close::name):
(Messages::TestWithLegacyReceiver::PreferencesDidChange::name):
(Messages::TestWithLegacyReceiver::SendDoubleAndFloat::name):
(Messages::TestWithLegacyReceiver::SendInts::name):
(Messages::TestWithLegacyReceiver::CreatePlugin::name):
(Messages::TestWithLegacyReceiver::RunJavaScriptAlert::name):
(Messages::TestWithLegacyReceiver::GetPlugins::name):
(Messages::TestWithLegacyReceiver::GetPluginProcessConnection::name):
(Messages::TestWithLegacyReceiver::TestMultipleAttributes::name):
(Messages::TestWithLegacyReceiver::TestParameterAttributes::name):
(Messages::TestWithLegacyReceiver::TemplateTest::name):
(Messages::TestWithLegacyReceiver::SetVideoLayerID::name):
(Messages::TestWithLegacyReceiver::DidCreateWebProcessConnection::name):
(Messages::TestWithLegacyReceiver::InterpretKeyEvent::name):
(Messages::TestWithLegacyReceiver::DeprecatedOperation::name):
(Messages::TestWithLegacyReceiver::ExperimentalOperation::name):
- Scripts/webkit/tests/TestWithLegacyReceiverMessagesReplies.h: Renamed from Source/WebKit/Scripts/testMessagesReplies.h.
- Scripts/webkit/tests/TestWithSuperclass.messages.in: Renamed from Source/WebKit/Scripts/webkit/test-superclass.messages.in.
- Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp: Renamed from Source/WebKit/Scripts/test-superclassMessageReceiver.cpp.
(WebKit::TestWithSuperclass::didReceiveMessage):
(WebKit::TestWithSuperclass::didReceiveSyncMessage):
- Scripts/webkit/tests/TestWithSuperclassMessages.h: Renamed from Source/WebKit/Scripts/test-superclassMessages.h.
(Messages::TestWithSuperclass::messageReceiverName):
(Messages::TestWithSuperclass::LoadURL::name):
(Messages::TestWithSuperclass::TestAsyncMessage::name):
(Messages::TestWithSuperclass::TestAsyncMessage::asyncMessageReplyName):
(Messages::TestWithSuperclass::TestAsyncMessageWithNoArguments::name):
(Messages::TestWithSuperclass::TestAsyncMessageWithNoArguments::asyncMessageReplyName):
(Messages::TestWithSuperclass::TestAsyncMessageWithMultipleArguments::name):
(Messages::TestWithSuperclass::TestAsyncMessageWithMultipleArguments::asyncMessageReplyName):
(Messages::TestWithSuperclass::TestAsyncMessageWithConnection::name):
(Messages::TestWithSuperclass::TestAsyncMessageWithConnection::asyncMessageReplyName):
(Messages::TestWithSuperclass::TestSyncMessage::name):
(Messages::TestWithSuperclass::TestSynchronousMessage::name):
- Scripts/webkit/tests/TestWithSuperclassMessagesReplies.h: Renamed from Source/WebKit/Scripts/test-superclassMessagesReplies.h.
- Scripts/webkit/tests/TestWithoutAttributes.messages.in: Renamed from Source/WebKit/Scripts/webkit/test.messages.in.
- Scripts/webkit/tests/TestWithoutAttributesMessageReceiver.cpp: Added.
(Messages::TestWithoutAttributes::GetPluginProcessConnection::send):
(Messages::TestWithoutAttributes::TestMultipleAttributes::send):
(WebKit::TestWithoutAttributes::didReceiveMessage):
(WebKit::TestWithoutAttributes::didReceiveSyncMessage):
- Scripts/webkit/tests/TestWithoutAttributesMessages.h: Renamed from Source/WebKit/Scripts/testMessages.h.
(Messages::TestWithoutAttributes::messageReceiverName):
(Messages::TestWithoutAttributes::LoadURL::name):
(Messages::TestWithoutAttributes::LoadSomething::name):
(Messages::TestWithoutAttributes::TouchEvent::name):
(Messages::TestWithoutAttributes::AddEvent::name):
(Messages::TestWithoutAttributes::LoadSomethingElse::name):
(Messages::TestWithoutAttributes::DidReceivePolicyDecision::name):
(Messages::TestWithoutAttributes::Close::name):
(Messages::TestWithoutAttributes::PreferencesDidChange::name):
(Messages::TestWithoutAttributes::SendDoubleAndFloat::name):
(Messages::TestWithoutAttributes::SendInts::name):
(Messages::TestWithoutAttributes::CreatePlugin::name):
(Messages::TestWithoutAttributes::RunJavaScriptAlert::name):
(Messages::TestWithoutAttributes::GetPlugins::name):
(Messages::TestWithoutAttributes::GetPluginProcessConnection::name):
(Messages::TestWithoutAttributes::TestMultipleAttributes::name):
(Messages::TestWithoutAttributes::TestParameterAttributes::name):
(Messages::TestWithoutAttributes::TemplateTest::name):
(Messages::TestWithoutAttributes::SetVideoLayerID::name):
(Messages::TestWithoutAttributes::DidCreateWebProcessConnection::name):
(Messages::TestWithoutAttributes::InterpretKeyEvent::name):
(Messages::TestWithoutAttributes::DeprecatedOperation::name):
(Messages::TestWithoutAttributes::ExperimentalOperation::name):
- Scripts/webkit/tests/TestWithoutAttributesMessagesReplies.h: Renamed from Source/WebKit/Scripts/test-legacyMessagesReplies.h.
- 4:35 PM Changeset in webkit [271182] by
-
- 7 edits5 adds in trunk/Tools
[webkitscmpy] Add command to canonicalize unpushed commits
https://bugs.webkit.org/show_bug.cgi?id=219982
<rdar://problem/72427536>
Reviewed by Dewei Zhu.
- Scripts/git-webkit: Specify web-service for canonical identifier translation.
- Scripts/libraries/webkitscmpy/setup.py: Add canonicalize directory to package.
- Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
- Scripts/libraries/webkitscmpy/webkitscmpy/canonicalize: Added.
- Scripts/libraries/webkitscmpy/webkitscmpy/canonicalize/init.py: Added.
(Canonicalize): Command to edit history of unpushed commits on a branch.
(Canonicalize.parser):
(Canonicalize.main): Callgit filter-branch
to edit commit message and authorship
of unpushed commits.
- Scripts/libraries/webkitscmpy/webkitscmpy/canonicalize/committer.py: Added.
(canonicalize): Given a name, email and a contributor mapping, return a canonical name
and email for the given author or committer.
(main): Print out the canonical author and committer to be parsed bygit filter-branch
.
- Scripts/libraries/webkitscmpy/webkitscmpy/canonicalize/message.py: Added.
(main): Add the canonical identifier to a commit message.
- Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:
(Contributor): Add unknown author regex.
(Contributor.from_scm_log):
- Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:
(Git.init): Add
git filter-branch
mock. Note that this mock makes an effort to test
message.py and contributor.py, but not the shell script passed to the command.
- Scripts/libraries/webkitscmpy/webkitscmpy/program.py:
(Command.main): Accept arbitrary kwargs.
(Find.main): Ditto.
(Checkout.main): Ditto.
(main): Allow caller to specify a string template for canonical identifiers in commit messages.
- Scripts/libraries/webkitscmpy/webkitscmpy/test/canonicalize_unittest.py: Added.
(TestCanonicalize):
(TestCanonicalize.test_invalid):
(TestCanonicalize.test_no_commits):
(TestCanonicalize.test_formated_identifier):
(TestCanonicalize.test_git_svn):
(TestCanonicalize.test_branch_commits):
- 4:33 PM Changeset in webkit [271181] by
-
- 3 edits in trunk/LayoutTests
media-source-webm.html: Handle frame size in HAVE_METADATA
https://bugs.webkit.org/show_bug.cgi?id=220046
Reviewed by Daniel Bates.
A follow-up patch to fix a failure on Big Sur. A 'resize' event can be fired before or
after the 'update' event. The test needs to support both cases.
- media/media-source/media-source-webm-expected.txt:
- media/media-source/media-source-webm.html:
- 4:22 PM Changeset in webkit [271180] by
-
- 2 edits in trunk/Source/WebKit
SourcesCocoa.txt should not be installed in the Web Content service bundle
https://bugs.webkit.org/show_bug.cgi?id=220338
Reviewed by Wenson Hsieh.
- WebKit.xcodeproj/project.pbxproj:
Remove SourcesCocoa.txt from the target.
- 3:24 PM WikiStart edited by
- Added November 2020 Meeting page link (diff)
- 3:22 PM November 2020 Meeting edited by
- (diff)
- 3:21 PM IgaliaPrioritiesfor2021 created by
- 3:20 PM GPUProcess created by
- 3:17 PM WhatsChangingwithscrollingonmacOS created by
- 3:15 PM November 2020 Meeting edited by
- (diff)
- 3:14 PM Changeset in webkit [271179] by
-
- 3 edits in trunk/Tools
[JSC] allow stress tests to opt out of parallel execution
https://bugs.webkit.org/show_bug.cgi?id=213373
Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2021-01-05
Reviewed by Yusuke Suzuki.
On memory-limited devices, some JSC stress tests may intermittently OOM when
they get scheduled along with another heavy JSC stress test. However, the tests
might be able to complete if run on their own.
This patch adds a serial! directive that causes a JSC stress test to only ever
be scheduled to run by itself. It's currently unused and needs to be enabled on
a test-by-test basis.
- Scripts/run-jsc-stress-tests:
- Scripts/webkitruby/jsc-stress-test-writer-default.rb:
- 3:13 PM SonyWebKit2020Retrospective created by
- 3:10 PM MovingWebKittoGit edited by
- (diff)
- 3:10 PM November 2020 Meeting edited by
- (diff)
- 3:09 PM MovingWebKittoGit edited by
- (diff)
- 3:08 PM MovingWebKittoGit created by
- 3:05 PM November 2020 Meeting edited by
- (diff)
- 3:04 PM CollaborationonStandardsinJSCACross-OrganizationalUpdate created by
- 3:03 PM November 2020 Meeting edited by
- (diff)
- 3:02 PM Changeset in webkit [271178] by
-
- 12 edits in trunk
[Media in GPU Process][MSE] SourceBuffer fires update and updateend events before the coded frames are removed
https://bugs.webkit.org/show_bug.cgi?id=220334
Reviewed by Eric Carlson.
Source/WebCore:
Add a completion handler parameter to SourceBufferPrivate::removeCodedFrames(),
and the caller (SourceBuffer) will fireupdate
andupdateend
events when
the completion handler is called.
No new tests. Fix failures of the following tests:
- imported/w3c/web-platform-tests/media-source/mediasource-config-change-webm-v-framesize.html
- imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-av-audio-bitrate.html
- imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-av-video-bitrate.html
- Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::removeTimerFired):
- platform/graphics/SourceBufferPrivate.cpp:
(WebCore::SourceBufferPrivate::removeCodedFrames):
- platform/graphics/SourceBufferPrivate.h:
(WebCore::SourceBufferPrivate::removeCodedFrames):
Source/WebKit:
Update the IPC message RemoteSourceBufferProxy::RemoveCodedFrames to implement
SourceBufferPrivateRemote::removeCodedFrames().
- GPUProcess/media/RemoteSourceBufferProxy.cpp:
(WebKit::RemoteSourceBufferProxy::removeCodedFrames):
- GPUProcess/media/RemoteSourceBufferProxy.h:
- GPUProcess/media/RemoteSourceBufferProxy.messages.in:
- WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:
(WebKit::SourceBufferPrivateRemote::removeCodedFrames):
- WebProcess/GPU/media/SourceBufferPrivateRemote.h:
LayoutTests:
- gpu-process/TestExpectations:
- 3:02 PM WebKitStandardsPositions edited by
- (diff)
- 2:54 PM WebKitStandardsPositions created by
- 2:45 PM AngleforWebGL edited by
- (diff)
- 2:42 PM Changeset in webkit [271177] by
-
- 1 edit1 add in trunk/Websites/webkit.org
Limit failed login attempts on webkit.org blog
https://bugs.webkit.org/show_bug.cgi?id=220032
Reviewed by Timothy Hatcher.
- wp-content/plugins/limit-logins.php: Added.
- 2:40 PM Changeset in webkit [271176] by
-
- 1 edit1 add in trunk/Websites/webkit.org
Disable public APIs on webkit.org blog
https://bugs.webkit.org/show_bug.cgi?id=220028
Reviewed by Timothy Hatcher.
- wp-content/plugins/disable-public-apis.php: Added.
- 2:39 PM FuzzingaWKWebView-basedBrowserSession created by
- 2:37 PM Changeset in webkit [271175] by
-
- 1 edit1 add in trunk/Websites/webkit.org
Enforce strong password changes on webkit.org blog
https://bugs.webkit.org/show_bug.cgi?id=220027
Reviewed by Timothy Hatcher.
- wp-content/plugins/strong-passwords.php: Added.
- 2:36 PM November 2020 Meeting edited by
- (diff)
- 2:36 PM November 2020 Meeting edited by
- (diff)
- 2:36 PM November 2020 Meeting edited by
- (diff)
- 2:35 PM AngleforWebGL created by
- 2:30 PM Changeset in webkit [271174] by
-
- 9 edits in trunk
Unreviewed, reverting r271169.
Caused
TestWebKitAPI.WebKit2.SpeechRecognitionErrorWhenStartingAudioCaptureOnDifferentPage
to time out on macOS.
Reverted changeset:
"Stop speech recognition if page becomes invisible"
https://bugs.webkit.org/show_bug.cgi?id=220073
https://trac.webkit.org/changeset/271169
- 2:28 PM AppleWebKitGoalsfor2021 created by
- 1:08 PM Changeset in webkit [271173] by
-
- 2 edits in trunk/Tools
Unreviewed, revert part of r271158 to fix builtins generator tests.
- Scripts/webkitpy/codegen/main.py:
(BuiltinsGeneratorTests.wrappers_builtin_test):
- 12:57 PM Changeset in webkit [271172] by
-
- 4 edits in trunk/Websites/browserbench.org
Remove non-inclusive language from copy of JetStream 2.0 in Websites/
https://bugs.webkit.org/show_bug.cgi?id=220257
Reviewed by Darin Adler.
- JetStream2.0/code-load/inspector-payload.js:
(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.styleFormatter):
(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isAllowlistedProperty):
(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isWhitelistedProperty): Deleted.
- JetStream2.0/web-tooling-benchmark/browser.js:
- JetStream2.0/web-tooling-benchmark/cli.js:
- 12:37 PM Changeset in webkit [271171] by
-
- 22 edits in trunk/Source/WebKit
Make WebPage::ForceRepaint use CompletionHandler instead of VoidCallback
https://bugs.webkit.org/show_bug.cgi?id=212269
Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-05
Reviewed by Chris Dumez.
Fix a few unsafe pointer uses along the way.
No change in behavior.
- UIProcess/API/C/WKPage.cpp:
(WKPageForceRepaint):
- UIProcess/ViewGestureController.cpp:
(WebKit::ViewGestureController::forceRepaintIfNeeded):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::forceRepaint):
- UIProcess/WebPageProxy.h:
- UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController _completedExitFullScreen]):
- UIProcess/mac/WKFullScreenWindowController.h:
- UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController dealloc]):
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
(-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]):
- WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
(WebKit::DrawingAreaCoordinatedGraphics::forceRepaintAsync):
- WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h:
- WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
(WebKit::LayerTreeHost::layerFlushTimerFired):
(WebKit::LayerTreeHost::forceRepaintAsync):
(WebKit::LayerTreeHost::renderNextFrame):
- WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:
(WebKit::LayerTreeHost::forceRepaintAsync):
- WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::forceRepaintAsync):
- WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::forceRepaint):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
- WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::forceRepaintAsync):
- 12:33 PM Changeset in webkit [271170] by
-
- 7 edits in trunk
[WinCairo][curl] Enable CURLSSLOPT_NATIVE_CA flag to use system's CA certs instead of cacert.pem
https://bugs.webkit.org/show_bug.cgi?id=220258
Reviewed by Don Olmstead.
.:
Libcurl 7.71 added a new flag CURLSSLOPT_NATIVE_CA to use the
operating system's native CA store only for Windows. Use the flag
for WinCairo port.
- Source/cmake/OptionsWinCairo.cmake: Bumped the minimum Curl version.
Source/WebCore:
- PlatformFTW.cmake: Removed the code copying pem file.
- PlatformWin.cmake: Ditto.
- platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::enableSSLForHost):
(WebCore::CurlHandle::enableHttp): Set CURLOPT_SSL_OPTIONS with CURLSSLOPT_NATIVE_CA.
- platform/network/win/CurlSSLHandleWin.cpp:
(WebCore::CurlSSLHandle::platformInitialize):
(WebCore::getCACertPathEnv): Deleted.
- 12:24 PM Changeset in webkit [271169] by
-
- 9 edits in trunk
Stop speech recognition if page becomes invisible
https://bugs.webkit.org/show_bug.cgi?id=220073
<rdar://problem/72710704>
Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-05
Reviewed by Youenn Fablet.
Source/WebKit:
We should not allow speech recognition on page invisible to user, because page may get content of captured audio
without user's notice. To do this, we should:
- deny speech recognition request on invisibile page
- abort ongoing speech recognition if page becomes invisible
API test: WebKit2.SpeechRecognitionPageBecomesInvisible
- UIProcess/SpeechRecognitionPermissionManager.cpp:
(WebKit::SpeechRecognitionPermissionManager::continueProcessingRequest):
- UIProcess/SpeechRecognitionServer.cpp:
(WebKit::SpeechRecognitionServer::abortForPageIsBecomingInvisible):
- UIProcess/SpeechRecognitionServer.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::dispatchActivityStateChange):
- UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::pageIsBecomingInvisible):
- UIProcess/WebProcessProxy.h:
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:
(TestWebKitAPI::TEST):
- 12:13 PM Changeset in webkit [271168] by
-
- 41 edits1 move3 adds in trunk
[WASM] [BigInt] Add I64 to BigInt conversion
https://bugs.webkit.org/show_bug.cgi?id=213528
Reviewed by Michael Saboff.
JSTests:
- wasm/function-tests/function-import-return-value.js:
(assert.truthy):
(assert.throws):
(assert.eq):
- wasm/function-tests/i64-conversion.js: Renamed from JSTests/wasm/function-tests/i64-from-js-exceptions.js.
(assert.eq.instance.exports.foo.valueOf):
- wasm/js-api/global-error.js:
- wasm/stress/i64-call.js: Added.
(async test):
- wasm/stress/i64-extract.js: Added.
(testI64):
- wasm/stress/immutable-globals.js:
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq):
- wasm/stress/multi-value-i64.js: Added.
(async test):
- wasm/stress/mutable-globals.js:
LayoutTests/imported/w3c:
- web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any-expected.txt:
- web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt:
- web-platform-tests/wasm/jsapi/constructor/instantiate.any-expected.txt:
- web-platform-tests/wasm/jsapi/constructor/instantiate.any.worker-expected.txt:
- web-platform-tests/wasm/jsapi/global/constructor.any-expected.txt:
- web-platform-tests/wasm/jsapi/global/constructor.any.worker-expected.txt:
- web-platform-tests/wasm/jsapi/global/value-get-set.any-expected.txt:
- web-platform-tests/wasm/jsapi/global/value-get-set.any.worker-expected.txt:
- web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any-expected.txt:
- web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt:
- web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt:
- web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt:
- web-platform-tests/wasm/webapi/instantiateStreaming-bad-imports.any-expected.txt:
- web-platform-tests/wasm/webapi/instantiateStreaming-bad-imports.any.worker-expected.txt:
- web-platform-tests/wasm/webapi/instantiateStreaming.any-expected.txt:
- web-platform-tests/wasm/webapi/instantiateStreaming.any.worker-expected.txt:
Source/JavaScriptCore:
This patch implements i64 to BigInt / BigInt to i64 support in WebAssembly to expose i64 features to JS.
- Arguments of exposed wasm functions can have i64.
- Returned values of exposed wasm functions can have i64.
- WebAssembly.Global can expose i64 value to JS.
Currently, we do not support fast JS->Wasm IC for wasm functions including i64 arguments. But this should be supported later
in https://bugs.webkit.org/show_bug.cgi?id=220053.
- jsc.cpp:
(JSC_DEFINE_HOST_FUNCTION):
- runtime/BigIntConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::toBigInt): Deleted.
- runtime/BigIntConstructor.h:
- runtime/JSBigInt.cpp:
(JSC::JSBigInt::toBigUInt64Heap):
- runtime/JSBigInt.h:
- runtime/JSCJSValue.cpp:
(JSC::JSValue::toBigInt const):
(JSC::JSValue::toBigInt64 const):
(JSC::JSValue::toBigUInt64 const):
- runtime/JSCJSValue.h:
- wasm/WasmExceptionType.h:
- wasm/WasmGlobal.cpp:
(JSC::Wasm::Global::get const):
(JSC::Wasm::Global::set):
- wasm/WasmGlobal.h:
- wasm/WasmOperations.cpp:
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
- wasm/WasmOperations.h:
- wasm/js/JSToWasm.cpp:
(JSC::Wasm::marshallJSResult):
(JSC::Wasm::createJSToWasmWrapper):
(JSC::Wasm::boxWasmResult): Deleted.
- wasm/js/WasmToJS.cpp:
(JSC::Wasm::wasmToJS):
(JSC::Wasm::handleBadI64Use): Deleted.
- wasm/js/WebAssemblyFunction.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::WebAssemblyFunction::jsCallEntrypointSlow):
- wasm/js/WebAssemblyGlobalConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
- wasm/js/WebAssemblyGlobalPrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
- wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::link):
- 12:09 PM Changeset in webkit [271167] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed, reverting r271025.
Breaks internal builds
Reverted changeset:
"Copy Localizable.strings file into the correct directory"
https://bugs.webkit.org/show_bug.cgi?id=220029
https://trac.webkit.org/changeset/271025
- 12:00 PM Changeset in webkit [271166] by
-
- 3 edits2 adds in trunk
AX: aria-orientation is ignored on input[type="range"]
https://bugs.webkit.org/show_bug.cgi?id=220222
<rdar://problem/72765547>
Reviewed by Zalan Bujtas.
Source/WebCore:
Check aria-orientation on range sliders.
Test: accessibility/mac/range-orientation.html
- accessibility/AccessibilitySlider.cpp:
(WebCore::AccessibilitySlider::orientation const):
LayoutTests:
- accessibility/mac/range-orientation.html: Added.
- 12:00 PM Changeset in webkit [271165] by
-
- 1 edit in trunk/LayoutTests/platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt
Rebaseline test now that WebXR is enabled.
rdar://72565503
- platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
- 11:53 AM Changeset in webkit [271164] by
-
- 3 edits3 adds in trunk
We should have a DFG intrinsic for the construct case of the Object constructor
https://bugs.webkit.org/show_bug.cgi?id=155591
Reviewed by Yusuke Suzuki.
JSTests:
- microbenchmarks/new-object-no-expected-function.js: Added.
- stress/call-object-constructor-with-new.js: Added.
- stress/dfg-builtin-constructor-cross-realm.js: Added.
Source/JavaScriptCore:
Given that a) ObjectConstructor behaves identically for Call and Construct with itself
as NewTarget [1] and b) handleConstantInternalFunction() returns early if NewTarget is altered,
this patch simply removes CodeForCall guard.
While
new Object()
is already optimized via BytecodeGenerator::emitExpectedFunctionSnippet(),
this change is a 4x speedup for rather rare usages likenew window.Object()
.
[1]: https://tc39.es/ecma262/#sec-object-value (step 1)
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleConstantInternalFunction):
- 11:17 AM Changeset in webkit [271163] by
-
- 3 edits in trunk/Source/WebCore
[GStreamer] Use Ref<> in AudioTrackPrivateGStreamer::create()
https://bugs.webkit.org/show_bug.cgi?id=220324
Reviewed by Philippe Normand.
create() should return Ref<> when the return value can't be null.
This is a cleanup with no functional changes.
- platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h:
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio):
- 10:44 AM Changeset in webkit [271162] by
-
- 13 edits in trunk/Source/WebKit
Use sendWithAsyncReply instead of ValidateCommandCallback
https://bugs.webkit.org/show_bug.cgi?id=220124
Reviewed by Chris Dumez.
- UIProcess/API/C/WKPage.cpp:
(WKPageValidateCommand):
- UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::validateUserInterfaceItem):
- UIProcess/WebCookieManagerProxy.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::validateCommand):
(WebKit::WebPageProxy::validateCommandCallback): Deleted.
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::~WebProcessPool):
- UIProcess/WebProcessPool.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::validateCommand):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- 10:43 AM Changeset in webkit [271161] by
-
- 2 edits in trunk/Tools
Revert part of https://trac.webkit.org/r271158
Update root level scripts in Tools/Scripts to Python 3
- Scripts/make-dist: This also needed print_function.
- 10:41 AM Changeset in webkit [271160] by
-
- 8 edits in trunk/Source/WebKit
Use sendWithAsyncReply instead of FontAttributesCallback
https://bugs.webkit.org/show_bug.cgi?id=220123
Reviewed by Chris Dumez.
- UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::typingAttributesWithCompletionHandler):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestFontAttributesAtSelectionStart):
(WebKit::WebPageProxy::fontAttributesCallback): Deleted.
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::requestFontAttributesAtSelectionStart):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- 10:38 AM Changeset in webkit [271159] by
-
- 2 edits in trunk/Tools
Revert part of https://trac.webkit.org/r271158
Update root level scripts in Tools/Scripts to Python 3
- Scripts/extract-dependencies-from-makefile: This print_function import
was necessary, the build is broken without it.
- 10:33 AM Changeset in webkit [271158] by
-
- 50 edits in trunk/Tools
Remove some unused variables from webkitpy
https://bugs.webkit.org/show_bug.cgi?id=220180
Reviewed by Aakash Jain, Sam Weinig and Jonathan Bedard.
- Scripts/webkitpy/benchmark_runner/webdriver_benchmark_runner.py:
- Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py:
- Scripts/webkitpy/codegen/main.py:
- Scripts/webkitpy/common/checkout/changelog.py:
- Scripts/webkitpy/common/checkout/checkout.py:
- Scripts/webkitpy/common/checkout/scm/git.py:
- Scripts/webkitpy/common/checkout/scm/svn.py:
- Scripts/webkitpy/common/config/committers.py:
- Scripts/webkitpy/common/config/contributionareas.py:
- Scripts/webkitpy/common/message_pool.py:
- Scripts/webkitpy/common/net/buildbot/buildbot.py:
- Scripts/webkitpy/common/net/credentials.py:
- Scripts/webkitpy/common/system/crashlogs.py:
- Scripts/webkitpy/common/system/executive.py:
- Scripts/webkitpy/common/system/profiler.py:
- Scripts/webkitpy/common/system/user.py:
- Scripts/webkitpy/generate_xcfilelists_lib/application.py:
- Scripts/webkitpy/generate_xcfilelists_lib/generators.py:
- Scripts/webkitpy/layout_tests/controllers/manager.py:
- Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- Scripts/webkitpy/layout_tests/servers/http_server.py:
- Scripts/webkitpy/layout_tests/views/buildbot_results.py:
- Scripts/webkitpy/layout_tests/views/metered_stream.py:
- Scripts/webkitpy/performance_tests/perftest.py:
- Scripts/webkitpy/port/device_port.py:
- Scripts/webkitpy/port/factory.py:
- Scripts/webkitpy/port/leakdetector_valgrind.py:
- Scripts/webkitpy/port/server_process.py:
- Scripts/webkitpy/style/checkers/js.py:
- Scripts/webkitpy/tool/bot/layouttestresultsreader.py:
- Scripts/webkitpy/tool/bot/patchanalysistask.py:
- Scripts/webkitpy/tool/bot/queueengine.py:
- Scripts/webkitpy/tool/commands/download.py:
- Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- Scripts/webkitpy/tool/commands/queues.py:
- Scripts/webkitpy/tool/commands/suggestnominations.py:
- Scripts/webkitpy/tool/commands/upload.py:
- Scripts/webkitpy/tool/multicommandtool.py:
- Scripts/webkitpy/tool/servers/rebaselineserver.py:
- Scripts/webkitpy/tool/steps/commit.py:
- Scripts/webkitpy/tool/steps/confirmdiff.py:
- Scripts/webkitpy/tool/steps/haslanded.py:
- Scripts/webkitpy/tool/steps/preparechangelog.py:
- Scripts/webkitpy/tool/steps/promptforbugortitle.py:
- Scripts/webkitpy/tool/steps/sortxcodeprojectfiles.py:
- Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py:
- Scripts/webkitpy/w3c/test_exporter.py:
- Scripts/webkitpy/xcode/simulated_device.py:
- 10:18 AM Changeset in webkit [271157] by
-
- 2 edits in trunk/LayoutTests
[ Big Sur ] fast/images/webp-as-image.html is failing
https://bugs.webkit.org/show_bug.cgi?id=220330
unreviewed test gardening.
- platform/mac/TestExpectations:
- 10:17 AM Changeset in webkit [271156] by
-
- 8 edits in trunk/Source/WebKit
Use sendWithAsyncReply instead of RectForCharacterRangeCallback
https://bugs.webkit.org/show_bug.cgi?id=220125
Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-05
Reviewed by Chris Dumez.
- UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::firstRectForCharacterRange):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::firstRectForCharacterRangeAsync):
(WebKit::WebPageProxy::rectForCharacterRangeCallback): Deleted.
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::firstRectForCharacterRangeAsync):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- 10:16 AM Changeset in webkit [271155] by
-
- 2 edits in trunk/LayoutTests
[ Big Sur ] fast/images/webp-as-image.html is failing
https://bugs.webkit.org/show_bug.cgi?id=220330
unreviewed test gardening.
- platform/mac/TestExpectations:
- 10:16 AM Changeset in webkit [271154] by
-
- 18 edits1 add in trunk
Fail speech recognition when page is muted for audio capture
https://bugs.webkit.org/show_bug.cgi?id=220133
<rdar://problem/72745232>
Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-05
Reviewed by Youenn Fablet.
Source/WebCore:
API test: WebKit2.SpeechRecognitionErrorWhenStartingAudioCaptureOnDifferentPage
- Modules/speech/SpeechRecognitionCaptureSource.cpp:
(WebCore::SpeechRecognitionCaptureSource::mute):
- Modules/speech/SpeechRecognitionCaptureSource.h:
- Modules/speech/SpeechRecognitionCaptureSourceImpl.cpp:
(WebCore::SpeechRecognitionCaptureSourceImpl::mute):
- Modules/speech/SpeechRecognitionCaptureSourceImpl.h:
- Modules/speech/SpeechRecognizer.h:
(WebCore::SpeechRecognizer::source):
Source/WebKit:
We currently only allow one page to capture media at a time and we did this by muting (stop capture in) other
pages. To make speech recognition work with this behavior, two changes are made:
- when page is muted, mute audio capture source used for speech recognition on the page. This will
ultimately fail recognition.
- when speech recognition is about to start, make sure other pages are muted for capture.
- UIProcess/SpeechRecognitionPermissionManager.h:
(WebKit::SpeechRecognitionPermissionManager::page):
- UIProcess/SpeechRecognitionServer.cpp:
(WebKit::SpeechRecognitionServer::handleRequest):
(WebKit::SpeechRecognitionServer::mute):
- UIProcess/SpeechRecognitionServer.h:
- UIProcess/UserMediaProcessManager.cpp:
(WebKit::UserMediaProcessManager::muteCaptureMediaStreamsExceptIn): Deleted.
- UIProcess/UserMediaProcessManager.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::activateMediaStreamCaptureInPage):
(WebKit::WebPageProxy::setMuted):
- UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::muteCaptureInPagesExcept):
(WebKit::WebProcessProxy::pageMutedStateChanged):
- UIProcess/WebProcessProxy.h:
Tools:
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:
(-[SpeechRecognitionPermissionUIDelegate _webView:requestMediaCaptureAuthorization:decisionHandler:]):
(-[SpeechRecognitionPermissionUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
(TestWebKitAPI::TEST):
- TestWebKitAPI/Tests/WebKitCocoa/speechrecognition-basic.html: Added.
- 10:15 AM Changeset in webkit [271153] by
-
- 17 edits in trunk/Source
Use WeakHashSet<Page> instead of HashSet<Page*>
https://bugs.webkit.org/show_bug.cgi?id=220102
Reviewed by Darin Adler.
Source/WebCore:
The former is more resistent to using a raw pointer after the object has been freed.
- inspector/PageDebugger.cpp:
(WebCore::PageDebugger::setJavaScriptPaused):
- page/CaptionUserPreferences.cpp:
(WebCore::CaptionUserPreferences::currentPage const):
(WebCore::CaptionUserPreferences::userPrefersCaptions const):
(WebCore::CaptionUserPreferences::setUserPrefersCaptions):
(WebCore::CaptionUserPreferences::userPrefersSubtitles const):
(WebCore::CaptionUserPreferences::setUserPrefersSubtitles):
(WebCore::CaptionUserPreferences::userPrefersTextDescriptions const):
(WebCore::CaptionUserPreferences::setUserPrefersTextDescriptions):
(WebCore::CaptionUserPreferences::updateCaptionStyleSheetOverride):
- page/FrameTree.cpp:
(WebCore::FrameTree::find const):
- page/PageGroup.cpp:
(WebCore::PageGroup::addPage):
(WebCore::PageGroup::removePage):
(WebCore::PageGroup::captionPreferencesChanged):
- page/PageGroup.h:
(WebCore::PageGroup::pages const):
(WebCore::PageGroup:: const): Deleted.
- page/PageGroupLoadDeferrer.cpp:
(WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer):
- page/UserContentProvider.cpp:
(WebCore::UserContentProvider::~UserContentProvider):
(WebCore::UserContentProvider::addPage):
(WebCore::UserContentProvider::removePage):
(WebCore::UserContentProvider::registerForUserMessageHandlerInvalidation):
(WebCore::UserContentProvider::unregisterForUserMessageHandlerInvalidation):
(WebCore::UserContentProvider::invalidateAllRegisteredUserMessageHandlerInvalidationClients):
(WebCore::UserContentProvider::invalidateInjectedStyleSheetCacheInAllFramesInAllPages):
- page/UserContentProvider.h:
- page/VisitedLinkStore.cpp:
(WebCore::VisitedLinkStore::~VisitedLinkStore):
(WebCore::VisitedLinkStore::addPage):
(WebCore::VisitedLinkStore::removePage):
(WebCore::VisitedLinkStore::invalidateStylesForAllLinks):
(WebCore::VisitedLinkStore::invalidateStylesForLink):
- page/VisitedLinkStore.h:
- plugins/PluginInfoProvider.cpp:
(WebCore::PluginInfoProvider::~PluginInfoProvider):
(WebCore::PluginInfoProvider::clearPagesPluginData):
(WebCore::PluginInfoProvider::refresh):
(WebCore::PluginInfoProvider::addPage):
(WebCore::PluginInfoProvider::removePage):
- plugins/PluginInfoProvider.h:
- storage/StorageEventDispatcher.cpp:
(WebCore::StorageEventDispatcher::dispatchLocalStorageEvents):
(WebCore::StorageEventDispatcher::dispatchLocalStorageEventsToFrames):
Source/WebKit:
- WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::setAsynchronousSpellCheckingEnabled):
(WebKit::InjectedBundle::setUserStyleSheetLocation):
(WebKit::InjectedBundle::liveDocumentURLs):
- WebProcess/WebStorage/StorageAreaMap.cpp:
(WebKit::StorageAreaMap::dispatchLocalStorageEvent):
- 10:08 AM Changeset in webkit [271152] by
-
- 2 edits in trunk/LayoutTests
REGRESSION: http/tests/inspector/network/resource-timing.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=220127
Reviewed by Alex Christensen.
- http/tests/inspector/network/resource-timing.html: Ignore an
internal inspector error as was done in r270137.
- 9:59 AM Changeset in webkit [271151] by
-
- 29 edits in trunk/Tools
Update root level scripts in Tools/Scripts to Python 3
https://bugs.webkit.org/show_bug.cgi?id=220200
Reviewed by Darin Adler and Jonathan Bedard.
Mostly 2to3 inspired.
- Scripts/check-for-global-bss-symbols-in-webkitgtk-libs:
- Scripts/check-for-invalid-symbols-in-version-script:
- Scripts/check-for-platform-layering-violations:
- Scripts/clean-webkit:
- Scripts/compare-results:
- Scripts/compare-webkit-configurations:
- Scripts/download-github-release.py:
- Scripts/dump-webkit-tests-run:
- Scripts/export-w3c-performance-wg-tests:
- Scripts/extract-dependencies-from-makefile:
- Scripts/extract-localizable-strings:
- Scripts/find-duplicate-files:
- Scripts/ic-stats.py:
- Scripts/import-w3c-performance-wg-tests:
- Scripts/make-dist:
- Scripts/malloc-tree:
- Scripts/mark-jsc-stress-test:
- Scripts/open-layout-test:
- Scripts/read-checksum-from-png:
- Scripts/rebase-patch-after-webkit-move:
- Scripts/run-gtk-tests:
- Scripts/run-webdriver-tests:
- Scripts/run-wpe-tests:
- Scripts/sampstat:
- Scripts/sync-feature-defines:
- Scripts/sync-master-with-upstream:
- Scripts/update-wasm-gcc-torture.py:
- Scripts/validate-committer-lists:
- 9:55 AM Changeset in webkit [271150] by
-
- 3 edits7 deletes in trunk/Source/ThirdParty/libwebrtc
Remove non-inclusive language from libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=220101
<rdar://problem/72727968>
Reviewed by Beth Dakin.
- Source/webrtc/build_overrides: Removed.
- Source/webrtc/modules/audio_device/android: Removed.
- Source/webrtc/rtc_base/win: Removed.
- Source/webrtc/sdk/android: Removed.
- Source/webrtc/tools_webrtc/msan: Removed.
- Source/webrtc/tools_webrtc/ubsan: Removed.
- Source/webrtc/tools_webrtc/vim: Removed.
- 9:47 AM Changeset in webkit [271149] by
-
- 8 edits in trunk/Source/WebKit
Use sendWithAsyncReply instead of SelectionContextCallback
https://bugs.webkit.org/show_bug.cgi?id=220121
Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-05
Reviewed by Chris Dumez.
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _lookupForWebView:]):
(-[WKContentView requestDictationContext:]):
- UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::requestDictationContext):
(WebKit::WebPageProxy::getSelectionContext):
(WebKit::WebPageProxy::selectionContextCallback): Deleted.
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getSelectionContext):
(WebKit::WebPage::requestDictationContext):
- 9:33 AM Changeset in webkit [271148] by
-
- 2 edits in trunk/Source/WebCore
AXIsolatedObject::doAXStringForRange must return an isolatedCopy.
https://bugs.webkit.org/show_bug.cgi?id=220327
Reviewed by Chris Fleizach.
Fix oversight in doAXStringForRange that needs to return an isolatedCopy
from the main thread.
Ssame fix for caching the documentURI and documentEncoding in the
initialization of AXIsolatedObjects.
- accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::doAXStringForRange const):
- 9:15 AM Changeset in webkit [271147] by
-
- 6 edits in trunk
Enable WebRTC codecs in GPU process only for --use-gpu-process option
https://bugs.webkit.org/show_bug.cgi?id=220316
Reviewed by Alexey Proskuryakov.
Source/WebKit:
ADD C SPI used by TestController.
Manually tested.
- UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetWebRTCPlatformCodecsInGPUProcessEnabled):
(WKPreferencesGetWebRTCPlatformCodecsInGPUProcessEnabled):
- UIProcess/API/C/WKPreferencesRefPrivate.h:
Tools:
- Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args):
Enable WebRTC codecs in GPU process experimental feature in gpu process mode.
- WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
By default, disable WebRTC codecs in GPU process experimental feature.
- 5:39 AM Changeset in webkit [271146] by
-
- 8 edits2 adds in trunk
[selectors] :focus should match inside the focus event
https://bugs.webkit.org/show_bug.cgi?id=220243
Reviewed by Frédéric Wang.
LayoutTests/imported/w3c:
Import focus-in-focus-event-001.html test from WPT.
Rebaseline 2 tests:
- focus-autofocus.html now passes after fixing this bug.
- focus-visible-005.html now fails, but it was passing because it was not checking anything due to this bug.
- web-platform-tests/css/selectors/focus-in-focus-event-001-expected.txt: Added.
- web-platform-tests/css/selectors/focus-in-focus-event-001.html: Added.
- web-platform-tests/css/selectors/focus-visible-005-expected.txt: Rebaseline.
- web-platform-tests/css/selectors/w3c-import.log:
- web-platform-tests/html/semantics/selectors/pseudo-classes/focus-autofocus-expected.txt: Rebaesline.
Source/WebCore:
Before this patch this was working different in WebKit than Chromium and Firefox.
The specs are clear about the expected behavior for this:
- From https://drafts.csswg.org/selectors-4/#the-focus-pseudo: "The :focus pseudo-class applies while an element has the focus"
- From https://w3c.github.io/uievents/#event-type-focus: "The focus MUST be given to the element before the dispatch of this event type"
A similar fix has been done on Blink in r201118 by <kochi@chromium.org>
(https://chromium.googlesource.com/chromium/src/+/cc49a6966f5ae6d89e86fbd3f53e4deea4e066ca).
Test: imported/w3c/web-platform-tests/css/selectors/focus-in-focus-event-001.html
- dom/Document.cpp:
(WebCore::Document::setFocusedElement): Just moved the call to m_focusedElement->setFocus(true)
right before dispatching the events.
LayoutTests:
- TestExpectations: Skip some :focus-visible tests as current failure results
depend on the platform.
This issue has been fixed upstream in https://github.com/web-platform-tests/wpt/pull/27041
and these tests will be re-imported and unskipped in a follow-up patch.
- 2:17 AM Changeset in webkit [271145] by
-
- 5 edits1 add in trunk
[WASM-References] Added few unreached-invalid tests
https://bugs.webkit.org/show_bug.cgi?id=220311
Patch by Dmitry Bezhetskov <dbezhetskov> on 2021-01-05
Reviewed by Yusuke Suzuki.
JSTests:
Added unreached-invalid tests and fix error messages in existing tests.
- wasm.yaml:
- wasm/js-api/global-error.js:
- wasm/references-spec-tests/unreached-invalid.wast.js: Added.
Source/JavaScriptCore:
Add semantic checks for parsing unreachable for the following intructions:
local.get/set.tee, global.get/set, br/br_if and call.
- wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseIndexForLocal):
(JSC::Wasm::FunctionParser<Context>::parseIndexForGlobal):
(JSC::Wasm::FunctionParser<Context>::parseFunctionIndex):
(JSC::Wasm::FunctionParser<Context>::parseBranchTarget):
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):
Jan 4, 2021:
- 11:23 PM Changeset in webkit [271144] by
-
- 2 edits in trunk/Source/JavaScriptCore
propertyNameEnumerator must check it can still take the fast path after getGenericPropertyNames
https://bugs.webkit.org/show_bug.cgi?id=219957
<rdar://71156284>
Reviewed by Yusuke Suzuki.
We need to check if we still
canAccessPropertiesQuicklyForEnumeration
on
structureAfterGettingPropertyNames
, since we might call out out to a proxy's
getPrototypeOf
callback throughgetGenericPropertyNames
.
- runtime/JSPropertyNameEnumerator.h:
(JSC::propertyNameEnumerator):
- 11:19 PM Changeset in webkit [271143] by
-
- 5 edits in trunk/Source/JavaScriptCore
Validate every instruction in AssemblerBuffer
https://bugs.webkit.org/show_bug.cgi?id=218104
<rdar://problem/69433094>
Reviewed by Saam Barati.
- assembler/AssemblerBuffer.cpp:
(JSC::threadSpecificAssemblerHashes):
- assembler/AssemblerBuffer.h:
(JSC::AssemblerBuffer::AssemblerBuffer):
(JSC::AssemblerBuffer::~AssemblerBuffer):
(JSC::AssemblerBuffer::releaseAssemblerData):
(JSC::AssemblerBuffer::releaseAssemblerHashes):
(JSC::AssemblerBuffer::putIntegralUnchecked):
(JSC::AssemblerBuffer::grow):
(JSC::AssemblerBuffer::outOfLineGrow):
(JSC::ARM64EHash::update): Deleted.
(JSC::ARM64EHash::finalHash const): Deleted.
(): Deleted.
(JSC::AssemblerBuffer::hash const): Deleted.
- assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
- assembler/LinkBuffer.h:
- 11:11 PM Changeset in webkit [271142] by
-
- 9 edits1 add in trunk/LayoutTests
Add missing support/refresh.sub.html
https://bugs.webkit.org/show_bug.cgi?id=220230
Patch by Rob Buis <rbuis@igalia.com> on 2021-01-04
Reviewed by Sam Weinig.
LayoutTests/imported/w3c:
Change r249886 removed support/refresh.sub.html, but it is needed for some tests to pass.
- web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing-expected.txt:
- web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/remove-from-document-expected.txt:
- web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/refresh.sub.html: Added.
LayoutTests:
Unskip test that passes now.
- TestExpectations:
- platform/gtk/TestExpectations:
- platform/ios/TestExpectations:
- platform/mac/TestExpectations:
- platform/wpe/TestExpectations:
- 9:01 PM Changeset in webkit [271141] by
-
- 4 edits11 adds in trunk
[WASM-References] Fix data section parsing and add more tests from ref-types
https://bugs.webkit.org/show_bug.cgi?id=220235
Patch by Dmitry Bezhetskov <dbezhetskov> on 2021-01-04
Reviewed by Yusuke Suzuki.
JSTests:
Add more tests from ref-types spec.
- wasm.yaml:
- wasm/references-spec-tests/binary-leb128.wast.js: Added.
- wasm/references-spec-tests/binary.wast.js: Added.
- wasm/references-spec-tests/br_table.wast.js: Added.
- wasm/references-spec-tests/call_indirect.wast.js: Added.
- wasm/references-spec-tests/custom.wast.js: Added.
- wasm/references-spec-tests/data.wast.js: Added.
- wasm/references-spec-tests/exports.wast.js: Added.
- wasm/references-spec-tests/global.wast.js: Added.
- wasm/references-spec-tests/imports.wast.js: Added.
- wasm/references-spec-tests/memory_grow.wast.js: Added.
- wasm/references-spec-tests/table.wast.js: Added.
Source/JavaScriptCore:
We should read leb128 unsigned integer instead of just one byte for
Data entry flag.
- wasm/WasmSectionParser.cpp:
(JSC::Wasm::SectionParser::parseData):
- 4:48 PM Changeset in webkit [271140] by
-
- 6 edits in trunk/LayoutTests
[WinCairo] Unreviewed test gardening
- platform/wincairo/TestExpectations:
- platform/wincairo/css1/text_properties/vertical_align-expected.txt:
- platform/wincairo/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
- platform/wincairo/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:
- platform/wincairo/fast/dom/HTMLProgressElement/progress-element-expected.txt:
- 3:17 PM Changeset in webkit [271139] by
-
- 2 edits in trunk/Source/ThirdParty/ANGLE
[WinCairo][CMake][MSBuild][ANGLE] entry_points_*.h was generated twice both in LibGLESv2EntryPointsHeaders and GLESv2 projects
https://bugs.webkit.org/show_bug.cgi?id=220251
Reviewed by Kenneth Russell.
WinCairo port is supporting both CMake Visual Studio generator and
Ninja generator. However, CMake Visual Studio builds was failing
as the following error.
ANGLE\Headers\ANGLE/entry_points_egl.h(13,10): fatal error C1083: Cannot open include file: 'export.h': No such file or directory (compiling source file ...\texmap\ANGLEContext.cpp)
entry_points_egl.h was generated twice both in
LibGLESv2EntryPointsHeaders and GLESv2 projects. However, the
post-process script adjust-angle-include-paths.py was invoked only
in LibGLESv2EntryPointsHeaders project.
GLESv2 target needs to have a direct or indirect dependency to
LibGLESv2EntryPointsHeaders target for CMake Visual Studio
generator to eliminate duplicated custom commands.
- CMakeLists.txt: Added add_dependencies(GLESv2 LibGLESv2EntryPointsHeaders) only if WIN32.
- 2:54 PM Changeset in webkit [271138] by
-
- 5 edits in trunk
[WebXR][WPE] Build fails without openxr installed
https://bugs.webkit.org/show_bug.cgi?id=220250
Reviewed by Carlos Alberto Lopez Perez.
.:
- Source/cmake/FindOpenXR.cmake: Fix some names and export
OPENXR_FOUND var.
- Source/cmake/OptionsWPE.cmake: Fail config is WebXR is enabled but
couldn't find OpenXR.
Tools:
- jhbuild/jhbuild-minimal.modules: Add openxr to wpe's minimal
moduleset.
- 12:14 PM BuildingCairoOnWindows edited by
- (diff)
- 12:01 PM Changeset in webkit [271137] by
-
- 10 edits1 add in trunk/Source/WebCore
[WebIDL] Remove [LegacyCaller] extended attribute
https://bugs.webkit.org/show_bug.cgi?id=220246
Reviewed by Sam Weinig.
Before this change, [LegacyCaller] implementation was very complex yet versatile, handling
overloads and multiple callers via operation cloning.
This patch removes [LegacyCaller], instead of simplifying it, and leverages [CustomGetCallData]
to implement HTMLAllCollection's Call method for a few reasons:
- Legacy callers were removed from the WebIDL spec [1], with
document.all
being the only use case; callable objects won't ever be introduced. - To closely match the HTML spec [2] by returning early rather than passing nullish AtomString.
- To make getCallData() override more obvious to a reader unfamiliar with legacy callers.
- To maximize the amount of code removed from the generator.
No new tests, no behavior change.
[1] https://github.com/heycam/webidl/pull/412
[2] https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#HTMLAllCollection-call
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- bindings/js/JSHTMLAllCollectionCustom.cpp: Added.
(WebCore::JSC_DEFINE_HOST_FUNCTION):
(WebCore::JSHTMLAllCollection::getCallData):
- bindings/scripts/CodeGeneratorJS.pm:
(GenerateInterface):
(GenerateGetCallData):
(InstanceOverridesGetCallData):
(AddLegacyCallerOperationIfNeeded): Deleted.
(GeneratePluginCall): Deleted.
(GenerateLegacyCallerDefinitions): Deleted.
(GenerateLegacyCallerDefinition): Deleted.
- bindings/scripts/IDLAttributes.json:
- bindings/scripts/IDLParser.pm:
(cloneArgument): Deleted.
(cloneOperation): Deleted.
- bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjDOMConstructor::construct):
(WebCore::callJSTestObj1): Deleted.
(WebCore::callJSTestObj2): Deleted.
(WebCore::callJSTestObj3): Deleted.
(WebCore::JSTestObj::getCallData): Deleted.
(WebCore::jsTestObjPrototypeFunction_legacyCallerNamedBody): Deleted.
- bindings/scripts/test/JS/JSTestObj.h:
- bindings/scripts/test/TestObj.idl:
- html/HTMLAllCollection.idl:
- 11:12 AM Changeset in webkit [271136] by
-
- 2 edits in trunk/LayoutTests
[GStreamer][MSE] Unreviewed micro-gardening (remove spurious -expected.txt references)
https://bugs.webkit.org/show_bug.cgi?id=220244
- platform/glib/TestExpectations:
- 10:13 AM Changeset in webkit [271135] by
-
- 9 edits in trunk/Source/WebCore
[LFC Display] Hook up very basic repaint in the display tree
https://bugs.webkit.org/show_bug.cgi?id=220212
Reviewed by Zalan Bujtas.
Plumb setNeedsDisplay() from a Display::Box via the Tree to the View, and from there
just repaint the entire root layer. This is very preliminary.
- display/DisplayTree.cpp:
(WebCore::Display::Tree::setBoxNeedsDisplay const):
- display/DisplayTree.h:
- display/DisplayView.cpp:
(WebCore::Display::View::prepareForDisplay):
(WebCore::Display::View::setNeedsDisplay):
- display/DisplayView.h:
- display/compositing/DisplayLayerController.cpp:
(WebCore::Display::LayerController::setNeedsDisplay):
- display/compositing/DisplayLayerController.h:
- display/css/DisplayBox.cpp:
(WebCore::Display::Box::Box):
(WebCore::Display::Box::setNeedsDisplay):
- display/css/DisplayBox.h:
- 10:13 AM Changeset in webkit [271134] by
-
- 3 edits in trunk/Source/WebCore
[LFC Display] Give display boxes a parent pointer
https://bugs.webkit.org/show_bug.cgi?id=220210
Reviewed by Zalan Bujtas.
Future code will need to be able to do ancestor tree walks ("find enclosing"),
so give Display::Box a pointer to its parent ContainerBox.
- display/DisplayTreeBuilder.cpp:
(WebCore::Display::TreeBuilder::insert const):
- display/css/DisplayBox.h:
(WebCore::Display::Box::parent const):
(WebCore::Display::Box::setParent):
- 10:13 AM Changeset in webkit [271133] by
-
- 19 edits in trunk/Source/WebCore
[LFC Display] Give display boxes a back reference to the tree
https://bugs.webkit.org/show_bug.cgi?id=220205
Reviewed by Zalan Bujtas.
Display box code will need a back pointer to the display tree for things
like paint invalidation. Pass a Tree& to box constructors, which requires
that the Tree has been constructed before we make any boxes.
- display/DisplayTree.cpp:
(WebCore::Display::Tree::setRootStackingItem):
(WebCore::Display::Tree::Tree): Deleted.
- display/DisplayTree.h:
(WebCore::Display::Tree::view const):
(WebCore::Display::Tree::setView):
- display/DisplayTreeBuilder.cpp:
(WebCore::Display::TreeBuilder::TreeBuilder):
(WebCore::Display::TreeBuilder::build):
- display/DisplayTreeBuilder.h:
(WebCore::Display::TreeBuilder::tree const):
- display/css/DisplayBox.cpp:
(WebCore::Display::Box::Box):
- display/css/DisplayBox.h:
(WebCore::Display::Box::Box):
- display/css/DisplayBoxFactory.cpp:
(WebCore::Display::BoxFactory::BoxFactory):
(WebCore::Display::BoxFactory::displayBoxForRootBox const):
(WebCore::Display::BoxFactory::displayBoxForLayoutBox const):
(WebCore::Display::BoxFactory::displayBoxForTextRun const):
- display/css/DisplayBoxFactory.h:
- display/css/DisplayBoxModelBox.cpp:
(WebCore::Display::BoxModelBox::BoxModelBox):
- display/css/DisplayBoxModelBox.h:
(WebCore::Display::BoxModelBox::BoxModelBox):
- display/css/DisplayContainerBox.cpp:
(WebCore::Display::ContainerBox::ContainerBox):
- display/css/DisplayContainerBox.h:
- display/css/DisplayImageBox.cpp:
(WebCore::Display::ImageBox::ImageBox):
- display/css/DisplayImageBox.h:
- display/css/DisplayReplacedBox.cpp:
(WebCore::Display::ReplacedBox::ReplacedBox):
- display/css/DisplayReplacedBox.h:
- display/css/DisplayTextBox.cpp:
(WebCore::Display::TextBox::TextBox):
- display/css/DisplayTextBox.h:
- 9:42 AM Changeset in webkit [271132] by
-
- 3 edits in trunk/LayoutTests
[GStreamer][MSE] Unreviewed micro-gardening
https://bugs.webkit.org/show_bug.cgi?id=220244
- platform/glib/TestExpectations:
- platform/gtk/TestExpectations:
- 8:32 AM Changeset in webkit [271131] by
-
- 21 edits in trunk
Update user-visible copyright strings to include 2021
https://bugs.webkit.org/show_bug.cgi?id=219901
Reviewed by Anders Carlsson.
.:
- Source/cmake/tools/scripts/COPYRIGHT-END-YEAR:
Source/JavaScriptCore:
- Info.plist:
Source/WebCore:
- Info.plist:
Source/WebKit:
- GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-OSX.plist:
- GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist:
- Info.plist:
- NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-OSX.plist:
- NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-iOS.plist:
- PluginProcess/EntryPoint/Cocoa/XPCService/PluginService.Info.plist:
- WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnService/Info-OSX.plist:
- WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnService/Info-iOS.plist:
- WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-OSX.plist:
- WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist:
Source/WebKitLegacy/mac:
- Info.plist:
WebKitLibraries:
- win/tools/scripts/COPYRIGHT-END-YEAR:
- 4:56 AM Changeset in webkit [271130] by
-
- 2 edits in trunk/Source/WebCore
[css-multicol] Do not attach <legend> to <fieldset> multicolumn containers
https://bugs.webkit.org/show_bug.cgi?id=218500
Reviewed by Zalan Bujtas.
Whenever a <fieldset> is a multicolumn container, any <legend> child must be directly attached
to the <fieldset> renderer instead of the RenderMultiColumnFlow created by the latter. That was
not happening when the renderer of the DOM node for the <legend> was deleted and then recreated.
The problem was that in those situations the parent and beforeChild arguments for
RenderTreeBuilder::Block::attachIgnoringContinuation() call were not properly selected. This
lead to a scenario were that method was wrongly using the special code path for tables.
- rendering/updating/RenderTreeBuilderBlockFlow.cpp:
(WebCore::RenderTreeBuilder::BlockFlow::attach): Add a special case for attaching a <legend> to
a <fieldset>.
- 3:27 AM Changeset in webkit [271129] by
-
- 4 edits in trunk
Intrinsic size not correctly stored for SVG images
https://bugs.webkit.org/show_bug.cgi?id=219981
Reviewed by Darin Adler.
Source/WebCore:
Intrinsic sizes were only stored in case the replaced element had an intrinsic size for both height and width.
However it's pretty common for SVG images to only specify one of them and an aspect ratio. We should store it
in those cases too as it'd be useful for some layout systems like flexbox.
- rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::computeAspectRatioInformationForRenderBox const): Replace isEmpty() by isZero() calls to allow
incomplete intrinsic sizes to be stored.
LayoutTests:
- TestExpectations: Removed two flexbox aspect ratio tests that are now passing.
- 2:34 AM Changeset in webkit [271128] by
-
- 6 edits in trunk/Source/WebCore
[GStreamer] More robust video size handling
https://bugs.webkit.org/show_bug.cgi?id=220103
Reviewed by Philippe Normand.
This patch improves the handling of how video size is detected and
reported to WebKit, fixing several issues:
a) The value returned by calling MediaPlayerPrivateGStreamer
::naturalSize() should not change during a given main thread tick,
since this can potentially be read several times from the rendering
code. This caused the elusive racy crash on `ASSERTION FAILED:
!intrinsicSizeChanged !view().frameView().layoutContext().isInRenderTreeLayout()` that has been appearing randomly in many layout tests for a very long time.
b) Video rotation used to be handled via bus messages, but this is
also racy, since the handling of bus messages in the main thread is
run on a different priority than other callbacks. This caused a flaky
failure on media/video-orientation.html.
c) In MSE, appending a second initialization segment with a different
video size triggered a video resize on append, before any frames with
the new size has been played.
This patch fixes these three issues: Only the first initialization
segment will trigger a video resize (this is done so we have a video
size on HAVE_METADATA, as the MSE spec expects), but otherwise video
size is emitted on caps changes on the sink. In the case of regular
playback this is delayed until the first frame arrives so that we have
a guarantee that any rotation tag events have traversed the pipeline
(the data flow through a GStreamer pipeline is done in this order:
CAPS event, optional TAG events and then buffers). Video size changes
are done by posting a task to the main thread, which ensures the value
doesn't change during a main thread tick.
The patch also relinquishes usage of MainThreadNotifier so that
successions of quick video size changes (e.g. in a test case) still
trigger the expected events instead of being potentially coalesced.
Since this patch for the most part fixes race conditions that are not
covered in TestExpectations, it doesn't introduce changes in
TestExpectations.
Note: This patch is not enough to fix imported/w3c/web-platform-tests/media-source/mediasource-config-change-*-framesize tests.
That requires further non-trivial fixes regarding how MSE flushes are
handled.
Note: This patch does not fix framesize WebRTC tests. These seem to be
a consequence of notifying the user too early of the frame size and/or
ready state, before any frame is readable, which is a problem
unrelated to these fixes.
- platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::getVideoSizeAndFormatFromCaps):
- platform/graphics/gstreamer/GStreamerCommon.h:
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::videoSinkCapsChanged):
(WebCore::MediaPlayerPrivateGStreamer::naturalSize const):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::getVideoOrientation):
(WebCore::MediaPlayerPrivateGStreamer::updateVideoSizeAndOrientationFromCaps):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
- platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::trackDetected):
Jan 3, 2021:
- 11:25 AM Changeset in webkit [271127] by
-
- 9 edits in trunk
Use UTF-8 encoding for empty main resource loads
https://bugs.webkit.org/show_bug.cgi?id=220227
Patch by Rob Buis <rbuis@igalia.com> on 2021-01-03
Reviewed by Sam Weinig.
LayoutTests/imported/w3c:
Update improved test results.
- web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01-expected.txt:
- web-platform-tests/html/browsers/windows/browsing-context-expected.txt:
Source/WebCore:
Unless specified otherwise, documents have UTF-8 encoding [1]. Since [2]
does not mention encoding, use UTF-8 encoding explicitly for empty main
loads.
[1] https://dom.spec.whatwg.org/#concept-document-type
[2] https://html.spec.whatwg.org/#initialise-the-document-object (Step 7)
Tests: imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html
imported/w3c/web-platform-tests/html/browsers/windows/browsing-context.html
http/wpt/html/browsers/windows/browsing-context.html
Behavior matches Chrome and Firefox.
- loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::maybeLoadEmpty):
LayoutTests:
Update improved test results.
- http/wpt/html/browsers/windows/browsing-context-expected.txt:
- platform/mac/webarchive/archive-empty-frame-source-expected.png:
- webarchive/archive-empty-frame-source-expected.webarchive:
- 10:43 AM Changeset in webkit [271126] by
-
- 4 edits in trunk/PerformanceTests
Remove non-inclusive language from JetStream 2.0
https://bugs.webkit.org/show_bug.cgi?id=220109
Reviewed by Anders Carlsson.
- JetStream2/code-load/inspector-payload.js:
(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.styleFormatter):
(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isAllowlistedProperty):
(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isWhitelistedProperty): Deleted.
- JetStream2/web-tooling-benchmark/cli.js:
- 5:47 AM Changeset in webkit [271125] by
-
- 4 edits in trunk/Source/WebCore
Share meta refresh logic
https://bugs.webkit.org/show_bug.cgi?id=220179
Patch by Rob Buis <rbuis@igalia.com> on 2021-01-03
Reviewed by Darin Adler.
Share meta refresh logic between Document and FrameLoader.
- dom/Document.cpp:
(WebCore::Document::processHttpEquiv):
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::receivedFirstData):
(WebCore::FrameLoader::scheduleRefreshIfNeeded):
- loader/FrameLoader.h:
Jan 2, 2021:
- 11:18 PM Changeset in webkit [271124] by
-
- 14 edits in trunk/Source
Remove some FrameLoader::changeLocation parameters
https://bugs.webkit.org/show_bug.cgi?id=220186
Patch by Rob Buis <rbuis@igalia.com> on 2021-01-02
Reviewed by Darin Adler.
Source/WebCore:
In all cases changeLocation is called with the default
values for LockHistory and LockBackForwardList, so we
do not need to have these parameters.
- html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::handleClick):
- html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::handleClick):
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::changeLocation):
- loader/FrameLoader.h:
- loader/NavigationScheduler.cpp:
- mathml/MathMLElement.cpp:
(WebCore::MathMLElement::defaultEventHandler):
- svg/SVGAElement.cpp:
(WebCore::SVGAElement::defaultEventHandler):
Source/WebKit:
Adapt to API change.
- WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::clickedLink):
- WebProcess/WebCoreSupport/WebContextMenuClient.cpp:
(WebKit::WebContextMenuClient::searchWithGoogle):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):
Source/WebKitLegacy/win:
Adapt to API change.
- WebCoreSupport/WebContextMenuClient.cpp:
(WebContextMenuClient::searchWithGoogle):
- 5:56 PM Changeset in webkit [271123] by
-
- 11 edits in trunk/Source/WebCore
[LFC Display] Rename Box::Flags to Box::TypeFlags
https://bugs.webkit.org/show_bug.cgi?id=220223
Reviewed by Sam Weinig.
I'll be adding a separate OptionSet<> of flags that can change dynamically
on a Display::Box, so rename the existing flags to TypeFlags, and make the member
const. They will never change after construction.
- display/css/DisplayBox.cpp:
(WebCore::Display::Box::Box):
- display/css/DisplayBox.h:
(WebCore::Display::Box::Box):
(WebCore::Display::Box::isBoxModelBox const):
(WebCore::Display::Box::isContainerBox const):
(WebCore::Display::Box::isImageBox const):
(WebCore::Display::Box::isReplacedBox const):
(WebCore::Display::Box::isTextBox const):
(WebCore::Display::Box::isLineBreakBox const):
- display/css/DisplayBoxFactory.cpp:
(WebCore::Display::BoxFactory::displayBoxForLayoutBox const):
- display/css/DisplayBoxModelBox.cpp:
(WebCore::Display::BoxModelBox::BoxModelBox):
- display/css/DisplayBoxModelBox.h:
(WebCore::Display::BoxModelBox::BoxModelBox):
- display/css/DisplayContainerBox.cpp:
(WebCore::Display::ContainerBox::ContainerBox):
- display/css/DisplayImageBox.cpp:
(WebCore::Display::ImageBox::ImageBox):
- display/css/DisplayReplacedBox.cpp:
(WebCore::Display::ReplacedBox::ReplacedBox):
- display/css/DisplayReplacedBox.h:
- display/css/DisplayTextBox.cpp:
(WebCore::Display::TextBox::TextBox):
- 1:11 PM Changeset in webkit [271122] by
-
- 2 edits in trunk/Source/WebKitLegacy/win
[Win][DumpRenderTree] Some JS tests are timing out only in Debug builds since r269157
https://bugs.webkit.org/show_bug.cgi?id=220145
<rdar://problem/72756207>
Reviewed by Sam Weinig.
r269157 added new WebKit1 APIs to set a preference, and
DumpRenderTree uses them to reset all preferences after each
testing. However, it was too slow for large pages because the API
is causing resolveStyle for every preference. Some JS tests failed
as timeout in debug builds because they are generating large
pages.
- WebPreferences.cpp:
(stringValueForPreferencesValue): Added.
(WebPreferences::setBoolPreferenceForTesting):
(WebPreferences::setUInt32PreferenceForTesting):
(WebPreferences::setDoublePreferenceForTesting):
(WebPreferences::setStringPreferenceForTesting):
Do nothing if the new preference value is same with the current
value.
- 12:46 PM Changeset in webkit [271121] by
-
- 4 edits1 add in trunk
[JSC] Remove unnecessary mov bytecodes when performing simple object pattern destructuring to variables
https://bugs.webkit.org/show_bug.cgi?id=220219
Reviewed by Alexey Shvayka.
JSTests:
- stress/object-pattern-simple-fast-path.js: Added.
(shouldBe):
(shouldThrow):
(test1):
Source/JavaScriptCore:
Currently, we are first puts object pattern's expression into temporary variable, and then, we store it into local variable register.
The following code
({ data } = object);
emits this kind of bytecode.
get_by_id dst:loc10, base:loc9, property:0
mov dst:loc6, src:loc10
However, this should be
get_by_id dst:loc6, base:loc9, property:0
We are emitting many unnecessary movs since this destructuring pattern is common. Increasing amount of mov (1) discourages inlining unnecessarily and (2) simply makes
bytecode memory large. Since this is very common pattern, we should carefully optimize it to remove such unnecessary movs.
This patch looks into pattern when performing object pattern destructuring. And avoid emitting mov when it is possible. There are some cases we cannot remove movs, so
this patch's writableDirectBindingIfPossible looks into whether this is possible (& profitable).
- bytecompiler/NodesCodegen.cpp:
(JSC::ObjectPatternNode::bindValue const):
(JSC::BindingNode::writableDirectBindingIfPossible const):
(JSC::BindingNode::finishDirectBindingAssignment const):
(JSC::AssignmentElementNode::writableDirectBindingIfPossible const):
(JSC::AssignmentElementNode::finishDirectBindingAssignment const):
- parser/Nodes.h:
(JSC::DestructuringPatternNode::writableDirectBindingIfPossible const):
(JSC::DestructuringPatternNode::finishDirectBindingAssignment const):
- 11:27 AM Changeset in webkit [271120] by
-
- 21 edits in trunk
Improve error message for uninitialized |this| in derived constructor
https://bugs.webkit.org/show_bug.cgi?id=220221
Reviewed by Yusuke Suzuki.
JSTests:
- stress/async-arrow-functions-lexical-binding-in-class.js:
- stress/async-arrow-functions-lexical-super-binding.js:
- stress/class-derived-from-null.js:
- stress/generator-eval-this.js:
- stress/super-property-access-tdz.js:
LayoutTests/imported/w3c:
- web-platform-tests/custom-elements/parser/parser-fallsback-to-unknown-element-expected.txt:
Source/JavaScriptCore:
Since class constructors perform
return this;
by default, and derived
constructors requiresuper()
to be called before |this| access, regular
TDZ error message is quite confusing, given the following code:
new (class extends Object { constructor() { } });
Considering that currently op_check_tdz is called on thisRegister() only
in derived constructors, this patch modifies its slow path to throw a
helpful error message that covers |this| access and non-object returns.
V8 and SpiderMonkey have similar error messages, mentioning
super()
.
slow_path_throw_tdz_error is merged into slow_path_check_tdz, which is
invoked from baseline JIT, so we can reliably acquire the bytecode and
avoid code duplication.
- llint/LowLevelInterpreter32_64.asm:
- llint/LowLevelInterpreter64.asm:
- runtime/CommonSlowPaths.cpp:
(JSC::JSC_DEFINE_COMMON_SLOW_PATH):
- runtime/CommonSlowPaths.h:
LayoutTests:
- js/arrowfunction-supercall-expected.txt:
- js/arrowfunction-superproperty-expected.txt:
- js/class-syntax-extends-expected.txt:
- js/class-syntax-super-expected.txt:
- js/script-tests/arrowfunction-supercall.js:
- js/script-tests/arrowfunction-superproperty.js:
- js/script-tests/class-syntax-super.js:
- 10:41 AM Changeset in webkit [271119] by
-
- 9 edits1 add5 deletes in trunk
Don't throw if
function.caller
is a non-strict / generator / async function
https://bugs.webkit.org/show_bug.cgi?id=220216
Reviewed by Yusuke Suzuki.
JSTests:
- stress/function-caller-async-arrow-function-body.js: Removed.
- stress/function-caller-async-function-body.js: Removed.
- stress/function-caller-async-generator-body.js: Removed.
- stress/function-caller-generator-body.js: Removed.
- stress/function-caller-generator-method-body.js: Removed.
- stress/function-hidden-as-caller.js: Added.
- stress/polymorphic-access-exception-handler-should-not-clobber-used-register.js:
- stress/tail-call-recognize.js:
- test262/expectations.yaml: Mark 45 test cases as passing.
Source/JavaScriptCore:
The spec forbids [1] ES6+ and strict mode functions from having their own "caller"
property. r230662 went even further, throwing TypeError iffunction.caller
attempts
to return non-strict / generator / async function, which doesn't contradict ECMA-262,
but diverges from V8 and SpiderMonkey (they just return the caller).
Since throwing TypeError causes quite a lot test262 failures and is a bit dangerous
(legacy library which usesfunction.caller
is called from ES6 code), this patch
replaces it withnull
return.
Given that r230662 appears to be web-compatible, this change preserves its intent
to limitfunction.caller
API as much as possible by returningnull
for all ES6+
functions, including methods, accessors, and arrow functions.
[1]: https://tc39.es/ecma262/#sec-forbidden-extensions (paragraphs 1-2)
- runtime/JSFunction.cpp:
(JSC::JSC_DEFINE_CUSTOM_GETTER):
LayoutTests:
- js/caller-property-expected.txt:
- js/script-tests/caller-property.js:
- 12:09 AM Changeset in webkit [271118] by
-
- 3 edits in trunk/Source/ThirdParty/ANGLE
Enable some ANGLE workarounds on iOS
https://bugs.webkit.org/show_bug.cgi?id=220203
Reviewed by Kenneth Russell.
Running ANGLE's unit tests on iOS upstream exposed the need to enable a couple of existing
workaround flags. https://crrev.com/c/2601106 and https://crrev.com/c/2606657 are the
upstream changes corresponding to these fixes.
- src/libANGLE/renderer/gl/FramebufferGL.cpp:
(rx::FramebufferGL::blit):
- src/libANGLE/renderer/gl/renderergl_utils.cpp:
(rx::nativegl_gl::InitializeFeatures):