Timeline
Apr 26, 2021:
- 11:19 PM Changeset in webkit [276629] by
-
- 3 edits2 adds in trunk
Remove rounding logic in RenderGeometryMap::mapContainer
https://bugs.webkit.org/show_bug.cgi?id=218577
Patch by Rob Buis <rbuis@igalia.com> on 2021-04-26
Reviewed by Simon Fraser.
Source/WebCore:
Remove rounding logic in RenderGeometryMap::mapContainer and
add the LayoutSize to FloatPoint using FloatPoint::move() to
match what is done in TransformState::translateMappedCoordinates.
Test: fast/layers/geometry-map-accumulated-offset-assert.html
- platform/graphics/transforms/TransformState.cpp:
(WebCore::TransformState::translateMappedCoordinates):
- rendering/RenderGeometryMap.cpp:
(WebCore::RenderGeometryMap::mapToContainer const):
LayoutTests:
Add test for this.
- fast/layers/geometry-map-accumulated-offset-assert-expected.txt: Added.
- fast/layers/geometry-map-accumulated-offset-assert.html: Added.
- 10:44 PM Changeset in webkit [276628] by
-
- 13 edits2 adds in trunk
REGRESSION (r276264): Reproducible crash in WebCore::UserActionElementSet::clearFlags
https://bugs.webkit.org/show_bug.cgi?id=224957
Reviewed by Ryosuke Niwa.
Source/WebCore:
The crash was due to a problem with the focus and focus-visible flags getting out of sync.
The problem was related to how we deal we script focus in Element::focus(),
we were setting the focus-visible flag before doing focus,
and if the element was moved to a different document in that process,
we were resetting the flag for the same element, but pointing to the new document.
So the old document still kept information about the element and the flag, and it shouldn't.
This patch is based on a patch by Ryosuke Niwa <rniwa@webkit.org>.
The approach to solve the issue is to consolidate the timing for both focus and focus-visible flags
so they don't get out of sync.
For that we add a new FocusVisibility enum to FocusOptions, and we pass it to Element::setFocus()
and use it to pass a different value to Element::setHasFocusVisible().
Test: fast/selectors/focus-visible-crash.html
- dom/Document.cpp:
(WebCore::Document::setFocusedElement):
- dom/Element.cpp:
(WebCore::Element::setFocus):
(WebCore::Element::focus):
- dom/Element.h:
- dom/FocusOptions.h:
- html/HTMLAreaElement.cpp:
(WebCore::HTMLAreaElement::setFocus):
- html/HTMLAreaElement.h:
- html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::setFocus):
- html/HTMLFrameElementBase.h:
- page/EventHandler.cpp:
(WebCore::EventHandler::internalKeyEvent):
- page/FocusController.cpp:
(WebCore::FocusController::advanceFocusInDocumentOrder):
- page/FrameView.cpp:
(WebCore::FrameView::scrollToFragmentInternal):
LayoutTests:
- fast/selectors/focus-visible-crash-expected.txt: Added.
- fast/selectors/focus-visible-crash.html: Added.
- 10:31 PM Changeset in webkit [276627] by
-
- 8 edits2 adds in trunk
Create a containing block when relevant properties are set in the current element will-change
https://bugs.webkit.org/show_bug.cgi?id=167868
Patch by Tim Nguyen <ntim@apple.com> on 2021-04-26
Reviewed by Alan Bujtas.
Per spec, any CSS property that is susceptible to create a containing block should create one when put on the
current element's will-change.
Relevant WPT are enabled.
Test: fast/css/will-change/will-change-creates-containing-block.html
LayoutTests/imported/w3c:
- web-platform-tests/css/css-box/parsing/padding-computed-expected.txt:
Source/WebCore:
- rendering/RenderElement.h:
(WebCore::RenderElement::canContainFixedPositionObjects const):
(WebCore::RenderElement::canContainAbsolutelyPositionedObjects const):
- rendering/style/WillChangeData.cpp:
(WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const):
- rendering/style/WillChangeData.h:
LayoutTests:
- TestExpectations:
- fast/css/will-change/will-change-creates-containing-block-expected.html: Added.
- fast/css/will-change/will-change-creates-containing-block.html: Added.
- 7:59 PM Changeset in webkit [276626] by
-
- 30 edits in trunk
Subdivide image overlay text into one or more elements per line
https://bugs.webkit.org/show_bug.cgi?id=225038
rdar://75505043
Reviewed by Tim Horton and Devin Rousso.
Source/WebCore:
Refactor some image extraction and image overlay code to allow for multiple elements containing text per line.
See comments below for more details.
Changes covered by augmenting existing layout tests.
- html/HTMLElement.cpp:
(WebCore::HTMLElement::updateWithImageExtractionResult):
The crux of this change is in this method. Currently, an image overlay has one or more
divelements underneath
the root container element, each of which represents a single line (i.e. contains a text node and a line break).
Instead, we make each of these line containerdivs contain one or moredivelements that represent further
subdivided text within each line.
See the corresponding additions patch for more details.
- html/shadow/imageOverlay.css:
(div#image-overlay):
(div.image-overlay-line, .image-overlay-text):
(.image-overlay-text::selection):
Adjust UA stylesheet to account for the changes in
updateWithImageExtractionResult.
(div.image-overlay-text): Deleted.
(div.image-overlay-text::selection): Deleted.
- platform/ImageExtractionResult.h:
(WebCore::ImageExtractionTextData::ImageExtractionTextData):
(WebCore::ImageExtractionLineData::ImageExtractionLineData):
(WebCore::ImageExtractionLineData::encode const):
(WebCore::ImageExtractionLineData::decode):
Refactor this data structure, by splitting it into
ImageExtractionLineDataandImageExtractionTextData.
(WebCore::ImageExtractionResult::isEmpty const):
(WebCore::ImageExtractionResult::encode const):
(WebCore::ImageExtractionResult::decode):
- platform/graphics/FloatPoint.h:
(WebCore::FloatPoint::rotate):
Add a helper method to rotate a 2D
FloatPointby a given angle, about a given point.
- platform/graphics/GeometryUtilities.cpp:
(WebCore::rotatedBoundingRectWithMinimumAngleOfRotation):
(WebCore::rotatedBoundingRect): Deleted.
- platform/graphics/GeometryUtilities.h:
- testing/Internals.cpp:
(WebCore::getQuad):
(WebCore::makeDataForLine):
(WebCore::Internals::installImageOverlay):
- testing/Internals.h:
- testing/Internals.idl:
Adjust this internal testing hook to accept a list of
ImageOverlayLinedictionaries, each of which contains a
list ofImageOverlayTextdictionaries.
Tools:
Adjust several existing layout tests after changing
internals.installImageOverlay. See WebCore ChangeLog for
more details. Additionally, rename a WebCore geometry helper method.
- TestWebKitAPI/Tests/WebCore/FloatQuadTests.cpp:
(TestWebKitAPI::TEST):
- TestWebKitAPI/Tests/WebKit/simple-image-overlay.html:
LayoutTests:
Adjust several existing layout tests after changing
internals.installImageOverlay. See WebCore ChangeLog for
more details.
- fast/images/image-extraction/basic-image-overlay.html:
- fast/images/image-extraction/click-link-with-image-overlay.html:
- fast/images/image-extraction/image-overlay-creation-is-idempotent.html:
- fast/images/image-extraction/image-overlay-in-image-with-zero-font-size.html:
- fast/images/image-extraction/image-overlay-with-selection-styles-expected.html:
- fast/images/image-extraction/image-overlay-with-selection-styles.html:
- fast/images/image-extraction/ios/reselect-word-in-image-overlay.html:
- fast/images/image-extraction/ios/select-word-in-image-overlay-inside-link.html:
- fast/images/image-extraction/ios/select-word-in-image-overlay.html:
- fast/images/image-extraction/ios/selection-rects-in-image-overlay.html:
- fast/images/image-extraction/mac/copy-image-overlay-text-with-context-menu.html:
- fast/images/image-extraction/mac/select-image-overlay-in-link-with-mouse-drag.html:
- fast/images/image-extraction/mac/select-image-overlay-with-mouse-drag-does-not-fire-click.html:
- fast/images/image-extraction/mac/select-image-overlay-with-mouse-drag.html:
- fast/images/image-extraction/mac/select-word-in-draggable-image-overlay.html:
- fast/images/image-extraction/mac/select-word-in-transparent-image-overlay.html:
- 6:09 PM Changeset in webkit [276625] by
-
- 3 edits in trunk/Source/JavaScriptCore
UnlinkedCodeBlock should have better accounting for extra memory
https://bugs.webkit.org/show_bug.cgi?id=225080
Reviewed by Mark Lam.
Right now we aren't telling the JS GC about the extra memory
attached to UnlinkedCodeBlocks. It looks like on at least some sites this
can be a fairly large percentage of the total memory retained by
the JS object graph. This is very similar to the change we made for
CodeBlocks in r276610.
- bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::visitChildrenImpl):
(JSC::UnlinkedCodeBlock::RareData::sizeInBytes const):
- bytecode/UnlinkedCodeBlock.h:
- 5:34 PM Changeset in webkit [276624] by
-
- 2 edits in trunk/LayoutTests
Enable AVIF tests for glib platforms
https://bugs.webkit.org/show_bug.cgi?id=225039
Reviewed by Philippe Normand.
This change enables avif tests for glib based platforms.
- platform/glib/TestExpectations:
- 5:23 PM Changeset in webkit [276623] by
-
- 6 edits in trunk/Source/WebKit
Add more eager OOB checks when creating DisplayListReaderHandle & DisplayListWriterHandle.
https://bugs.webkit.org/show_bug.cgi?id=225055
<rdar://71896663>
Patch by Tim Nguyen <ntim@apple.com> on 2021-04-26
Reviewed by Wenson Hsieh.
There were already some OOB checks for both classes, this revision adds checks at creation-time.
Also add a comment on top of SharedDisplayListHandle.h to mention that only subclasses use it.
- GPUProcess/graphics/DisplayListReaderHandle.h:
(WebKit::DisplayListReaderHandle::create):
- GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::didCreateSharedDisplayListHandle):
- Shared/SharedDisplayListHandle.h:
(WebKit::SharedDisplayListHandle::SharedDisplayListHandle):
- WebProcess/GPU/graphics/DisplayListWriterHandle.h:
(WebKit::DisplayListWriterHandle::create):
- WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::createItemBuffer):
- 5:20 PM Changeset in webkit [276622] by
-
- 8 edits in branches/safari-612.1.11-branch/Source
Versioning.
WebKit-7612.1.11.7
- 5:04 PM Changeset in webkit [276621] by
-
- 58 edits in trunk/Source
Consistently include headers with <Framework/Header.h>
https://bugs.webkit.org/show_bug.cgi?id=225067
Reviewed by Alexey Proskuryakov.
Source/WebCore:
When building with CMake, if a header is included as <Framework/Header.h> in some files
and "Header.h" in others, when compiling a cpp file in the same directory as Header.h,
there doesn't seem to be a way to tell it to include from the Framework directory before
searching the same directory as the cpp file. To solve this, we use consistent include style
for each header.
- editing/cocoa/DictionaryLookup.mm:
- platform/graphics/avfoundation/objc/AVOutputDeviceMenuControllerTargetPicker.mm:
- platform/graphics/avfoundation/objc/AVRoutePickerViewTargetPicker.mm:
- platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
- platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:
- platform/graphics/cocoa/IOSurface.mm:
- platform/mac/PlatformScreenMac.mm:
- testing/Internals.cpp:
Source/WebKit:
- Shared/API/Cocoa/_WKRenderingProgressEventsInternal.h:
- Shared/API/Cocoa/_WKSameDocumentNavigationTypeInternal.h:
- UIProcess/API/Cocoa/NSAttributedString.mm:
- UIProcess/API/Cocoa/WKBrowsingContextGroupInternal.h:
- UIProcess/API/Cocoa/WKConnectionInternal.h:
- UIProcess/API/Cocoa/WKNavigationDataInternal.h:
- UIProcess/API/Cocoa/WKScriptMessage.mm:
- UIProcess/API/Cocoa/WKSecurityOriginInternal.h:
- UIProcess/API/Cocoa/WKWebView.mm:
- UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
- UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:
- UIProcess/API/Cocoa/WKWebViewInternal.h:
- UIProcess/API/Cocoa/WKWebpagePreferences.mm:
- UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h:
- UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h:
- UIProcess/API/Cocoa/_WKAttachment.mm:
- UIProcess/API/Cocoa/_WKAttachmentInternal.h:
- UIProcess/API/Cocoa/_WKAuthenticatorResponseInternal.h:
- UIProcess/API/Cocoa/_WKInspectorConfiguration.mm:
- UIProcess/API/Cocoa/_WKThumbnailView.mm:
- UIProcess/API/Cocoa/_WKUserContentFilterInternal.h:
- UIProcess/API/Cocoa/_WKWebAuthenticationPanelForTesting.h:
- UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h:
- UIProcess/API/mac/WKWebViewMac.h:
- UIProcess/API/mac/WKWebViewMac.mm:
- UIProcess/Cocoa/MediaUtilities.h:
- UIProcess/Cocoa/PageClientImplCocoa.mm:
- UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.mm:
- UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:
- UIProcess/Cocoa/UIDelegate.mm:
- UIProcess/Cocoa/WKContactPicker.mm:
- UIProcess/Cocoa/WKShareSheet.mm:
- UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
- UIProcess/Cocoa/WebViewImpl.h:
- UIProcess/Cocoa/WebViewImpl.mm:
- UIProcess/Inspector/mac/RemoteWebInspectorUIProxyMac.mm:
- UIProcess/Inspector/mac/WKInspectorViewController.mm:
- UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/mac/HighPerformanceGPUManager.mm:
- WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h:
- WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h:
- WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
- WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
- WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandleInternal.h:
- WebProcess/InjectedBundle/API/mac/WKDOMInternals.h:
- WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm:
- 4:42 PM Changeset in webkit [276620] by
-
- 8 edits1 add in trunk
ResourceLoadStatisticsDatabaseStore::aggregatedThirdPartyData() hangs for a long time
https://bugs.webkit.org/show_bug.cgi?id=225063
<rdar://problem/76248557>
Reviewed by Brent Fulgham.
Source/WebKit:
Unique index values speed up sqlite database queries, and prevent
repeated entries in tables without primary keys. Its possible to
get into a state where some tables in the ITP database do not have index
values. We should check on open if the database has index values, and
create them if not. This may require migrating existing data and
removing repeated entries.
- NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
Remove semi-colons in CREATE UNIQUE INDEX queries. They aren't needed
and if we remove them we can use these constexpr values to check for
the correct stored index later on.
(WebKit::stripIndexQueryToMatchStoredValue):
We use CREATE UNIQUE INDEX IF NOT EXISTS to avoid an error if the
unique index already exists, but the value is stored in the database
without the "IF NOT EXISTS" portion. In order to check for correct
values we need to strip this out.
(WebKit::expectedTableAndIndexQueries):
(WebKit::ResourceLoadStatisticsDatabaseStore::checkForMissingTablesInSchema):
(WebKit::ResourceLoadStatisticsDatabaseStore::currentTableAndIndexQueries):
Return the schema and index for a given table. If the index is empty
that means SQLite created an automatic index and we should return
WTF::nullopt.
(WebKit::ResourceLoadStatisticsDatabaseStore::needsUpdatedPrivateClickMeasurementSchema):
(WebKit::ResourceLoadStatisticsDatabaseStore::missingUniqueIndices):
(WebKit::ResourceLoadStatisticsDatabaseStore::missingReferenceToObservedDomains):
(WebKit::ResourceLoadStatisticsDatabaseStore::needsUpdatedSchema):
(WebKit::insertDistinctValuesInTableQuery):
Since unique indices prevent repeat entries, tables without them might
have repeated entries. We need to select only one of each entry to
migrate to the new tables. This picks the one with the most recent
lastUpdated time.
(WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToNewTablesIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::addMissingTablesIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::createUniqueIndices):
This fix revealed an index that is never created. I added it here.
(WebKit::ResourceLoadStatisticsDatabaseStore::isCorrectSubStatisticsCount):
- NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
- UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _isRelationshipOnlyInDatabaseOnce:thirdParty:completionHandler:]):
- UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
Convert SPI previously only used for layout tests to be used for an
API test where we can load a database with repeated values to ensure
the migration is correct after my change.
Tools:
Test coverage. Currently API testing is the only way to test data
migration and schema changes in the ITP database because we can load
a pre-seeded database and check the correct values after migration.
We should add some ability for unit testing in the future.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:
(TEST):
- 4:42 PM Changeset in webkit [276619] by
-
- 5 edits in trunk/Source
Reduce memory footprint for background tabs
https://bugs.webkit.org/show_bug.cgi?id=225007
Reviewed by Chris Dumez.
When a WebContent process contains only non-visible pages (e.g. if it is a background tab),
we should attempt to reduce our memory footprint after some time interval to help relieve
system-wide memory pressure. This is enabled only on Mac because iOS already does something
similar just before WebContent suspends.
Source/WebKit:
- WebProcess/WebProcess.cpp:
(WebKit::WebProcess::pageDidEnterWindow):
(WebKit::WebProcess::pageWillLeaveWindow):
(WebKit::WebProcess::nonVisibleProcessGraphicsCleanupTimerFired):
(WebKit::WebProcess::nonVisibleProcessMemoryCleanupTimerFired):
(WebKit::WebProcess::nonVisibleProcessCleanupTimerFired): Deleted.
- WebProcess/WebProcess.h:
Source/WTF:
- wtf/PlatformEnableCocoa.h:
- 4:04 PM Changeset in webkit [276618] by
-
- 2 edits in trunk/Source/WebKit
Handle warning-level memory notifications more aggressively
https://bugs.webkit.org/show_bug.cgi?id=225008
Reviewed by Chris Dumez.
We've found that in some workloads, the critical-level memory pressure handler releases
significantly more memory than the warning-level memory pressure handler. On Macs, it is
likely that the memory pressure coincides with swapping. So when we get even a warning-level
notification from the OS, we should err on the side of releasing more memory to help relieve
the swapping state. To do this, treat warning level notifications the same as critical level
notifications on Mac if the WebProcess is in the background.
- WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
- 3:37 PM Changeset in webkit [276617] by
-
- 2 edits in trunk/LayoutTests
[ Win ] fast/text/line-break-with-locale.html is failing on Windows
https://bugs.webkit.org/show_bug.cgi?id=225074
<rdar://problem/77174542>
Unreviewed test gardening.
- platform/win/TestExpectations:
- 2:54 PM Changeset in webkit [276616] by
-
- 5 edits in trunk/Source/WebInspectorUI
Web Inspector: Audit Tab: Edits are not committed when leaving edit mode unless you first click into another text field
https://bugs.webkit.org/show_bug.cgi?id=224318
<rdar://problem/76382755>
Reviewed by Devin Rousso.
Save test and setup code when pressing "Done" button. Don't rely on the blur event because it doesn't fire on
the focused element when it's removed from the DOM.
- UserInterface/Models/AuditTestBase.js:
(WI.AuditTestBase.prototype.set setup):
- UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.prototype.set test):
Allow settingtestandsetupafter editing is finished.
- UserInterface/Views/AuditTestCaseContentView.js:
(WI.AuditTestCaseContentView.prototype.layout):
(WI.AuditTestCaseContentView.prototype.saveEditedData):
- UserInterface/Views/AuditTestContentView.js:
(WI.AuditTestContentView.prototype.detached):
Saving test ondetachedsaves it when selecting a different test in the navigation sidebar.
(WI.AuditTestContentView.prototype.saveEditedData):
(WI.AuditTestContentView.prototype._createSetupEditor):
(WI.AuditTestContentView.prototype._handleEditingChanged):
(WI.AuditTestContentView):
- 2:44 PM Changeset in webkit [276615] by
-
- 4 edits1 add in trunk/Source/WebCore/PAL
Add missing SPI declarations
https://bugs.webkit.org/show_bug.cgi?id=225061
Reviewed by Alexey Proskuryakov.
- PAL.xcodeproj/project.pbxproj:
- pal/cocoa/CryptoKitCBridgingSoftLink.h:
- pal/spi/cocoa/CryptoKitCBridgingSPI.h: Added.
- pal/spi/mac/DataDetectorsSPI.h:
- 2:37 PM Changeset in webkit [276614] by
-
- 17 edits in trunk
Update Mac-specific CMake files
https://bugs.webkit.org/show_bug.cgi?id=225064
Rubber-stamped by Tim Horton.
.:
- Source/cmake/OptionsMac.cmake:
- Source/cmake/WebKitCommon.cmake:
Source/JavaScriptCore:
- PlatformMac.cmake:
Source/ThirdParty/ANGLE:
- PlatformMac.cmake:
Source/WebCore:
- PlatformMac.cmake:
Source/WebCore/PAL:
- pal/PlatformMac.cmake:
Source/WebKit:
- PlatformMac.cmake:
Source/WebKitLegacy:
- PlatformMac.cmake:
Tools:
- MiniBrowser/mac/CMakeLists.txt:
- 2:31 PM Changeset in webkit [276613] by
-
- 2 edits in trunk/Tools
[ews-app] Status bubble should only display important messages in pop-over - part 4
https://bugs.webkit.org/show_bug.cgi?id=225076
Reviewed by Jonathan Bedard.
- CISupport/ews-app/ews/views/statusbubble.py:
(StatusBubble):
- 2:03 PM Changeset in webkit [276612] by
-
- 3 edits1 add in trunk
%TypedArray%.prototype.sort() should not use a regular array as a temp buffer.
https://bugs.webkit.org/show_bug.cgi?id=225062
rdar://77021547
Reviewed by Yusuke Suzuki.
JSTests:
- stress/typedarray-sort-should-not-use-a-regular-array-as-temp-buffer.js: Added.
Source/JavaScriptCore:
%TypedArray%.prototype.sort() should not be affected by property changes in
Array.prototype.
References:
[1] https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort
[2] https://tc39.es/ecma262/#sec-array.prototype.sort
[3] https://tc39.es/ecma262/#sec-sortcompare
- builtins/TypedArrayPrototype.js:
(globalPrivate.typedArrayMergeSort):
- 2:01 PM Changeset in webkit [276611] by
-
- 2 edits in trunk/Source/WebCore
Remove redundant frameDetached() from the SVGImage destructor
https://bugs.webkit.org/show_bug.cgi?id=221616
<rdar://problem/74149106>
Reviewed by Chris Dumez.
SVGImage was originally written such that it has two separate objects:
a page and a frame; see https://trac.webkit.org/r18470. So it made sense
at that time to clean up the page and the frame separately. The Frame
was cleaned up by telling the frame's loader that the frameDetached().
This code is not necessary right now since the page owns the main frame.
And its destructor recursively detaches itself from all the frames.
- svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::~SVGImage):
- 1:22 PM Changeset in webkit [276610] by
-
- 6 edits in trunk/Source
CodeBlock should do a better job accounting for extra memory it allocates.
https://bugs.webkit.org/show_bug.cgi?id=225068
Reviewed by Mark Lam.
Source/JavaScriptCore:
Right now we aren't telling the JS GC about the extra memory
attached to CodeBlocks. It looks like on at least some sites this
can be a fairly large percentage of the total memory retained by
the JS object graph.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::visitChildren):
(JSC::CodeBlock::JITData::size const):
- bytecode/CodeBlock.h:
- jit/JITCodeMap.h:
(JSC::JITCodeMap::memorySize const):
Source/WTF:
Small convenience function to help compute the memory used by a Bag for JS GC
accounting.
- wtf/Bag.h:
- 1:20 PM Changeset in webkit [276609] by
-
- 19 edits in trunk/Source/JavaScriptCore
numCalleeLocals, numParameters, and numVars should be unsigned
https://bugs.webkit.org/show_bug.cgi?id=224995
Reviewed by Mark Lam.
All of the various CodeBlock classes currently have the
numCalleeLocals and numVars marked as ints. I believe this is just
a historical artifact or because VirtualRegister's offset is an
int to make handling constants easier. Regardless, it's a bit
strange to not handle the sign conversion at the point of
comparison between a VirtualRegister offset and the local/var
count. This doesn't completely fix every place we use ints for
these values but starts on the right track. Lastly, I also added
some Check<unsigned>s to the wasm parser for sanity checking.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::setNumParameters):
(JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeIndexSlow):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::numParameters const):
(JSC::CodeBlock::numberOfArgumentsToSkip const):
(JSC::CodeBlock::numCalleeLocals const):
(JSC::CodeBlock::numVars const):
(JSC::CodeBlock::numTmps const):
(JSC::CodeBlock::addressOfNumParameters):
(JSC::CodeBlock::isTemporaryRegister):
- bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedCodeBlock::numCalleeLocals const):
(JSC::UnlinkedCodeBlock::numVars const):
- bytecode/UnlinkedCodeBlockGenerator.h:
(JSC::UnlinkedCodeBlockGenerator::numCalleeLocals const):
(JSC::UnlinkedCodeBlockGenerator::numVars const):
(JSC::UnlinkedCodeBlockGenerator::setNumCalleeLocals):
(JSC::UnlinkedCodeBlockGenerator::setNumVars):
(JSC::UnlinkedCodeBlockGenerator::setNumParameters):
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::emitPushFunctionNameScope):
- bytecompiler/BytecodeGeneratorBaseInlines.h:
(JSC::BytecodeGeneratorBase<Traits>::newRegister):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleRecursiveTailCall):
(JSC::DFG::ByteCodeParser::inliningCost):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGOSREntrypointCreationPhase.cpp:
(JSC::DFG::OSREntrypointCreationPhase::run):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::checkArgumentTypes):
- ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::lower):
- ftl/FTLOSREntry.cpp:
(JSC::FTL::prepareOSREntry):
- interpreter/CallFrameClosure.h:
- interpreter/ProtoCallFrameInlines.h:
(JSC::ProtoCallFrame::init):
- jit/JIT.cpp:
(JSC::JIT::compileWithoutLinking):
- runtime/CommonSlowPaths.h:
(JSC::CommonSlowPaths::numberOfStackPaddingSlots):
(JSC::CommonSlowPaths::numberOfStackPaddingSlotsWithExtraSlots):
- wasm/WasmFunctionCodeBlock.h:
(JSC::Wasm::FunctionCodeBlock::numVars const):
(JSC::Wasm::FunctionCodeBlock::numCalleeLocals const):
(JSC::Wasm::FunctionCodeBlock::setNumVars):
(JSC::Wasm::FunctionCodeBlock::setNumCalleeLocals):
- wasm/WasmLLIntGenerator.cpp:
(JSC::Wasm::LLIntGenerator::push):
(JSC::Wasm::LLIntGenerator::getDropKeepCount):
(JSC::Wasm::LLIntGenerator::walkExpressionStack):
(JSC::Wasm::LLIntGenerator::checkConsistency):
(JSC::Wasm::LLIntGenerator::materializeConstantsAndLocals):
(JSC::Wasm::LLIntGenerator::splitStack):
(JSC::Wasm::LLIntGenerator::finalize):
(JSC::Wasm::LLIntGenerator::callInformationForCaller):
(JSC::Wasm::LLIntGenerator::addLoop):
(JSC::Wasm::LLIntGenerator::addTopLevel):
(JSC::Wasm::LLIntGenerator::addBlock):
(JSC::Wasm::LLIntGenerator::addIf):
(JSC::Wasm::LLIntGenerator::addElseToUnreachable):
- 1:03 PM Changeset in webkit [276608] by
-
- 1 copy in tags/Safari-612.1.11.6
Tag Safari-612.1.11.6.
- 12:46 PM Changeset in webkit [276607] by
-
- 2 edits in trunk/Source/WebCore
REGRESSION(r272379) [Win] Some emojis are painted with a blank square on the right side of it
https://bugs.webkit.org/show_bug.cgi?id=225047
Reviewed by Don Olmstead.
imported/w3c/web-platform-tests/mathml/relations/css-styling tests cover this change.
- platform/graphics/WidthIterator.cpp:
(WebCore::WidthIterator::advanceInternal): Don't add the 0 glyphs for Windows too.
- 11:44 AM Changeset in webkit [276606] by
-
- 1 copy in tags/Safari-607.3.12
Tag Safari-607.3.12.
- 11:42 AM Changeset in webkit [276605] by
-
- 3 edits5 adds in branches/safari-607-branch
Cherry-pick r271368. rdar://problem/77160704
Keep newly created IDBIndex objects in deleted map when IDBTransaction is aborted
https://bugs.webkit.org/show_bug.cgi?id=220489
<rdar://problem/70498831>
Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-11
Reviewed by Youenn Fablet.
Source/WebCore:
When an upgrade transaction is aborted, we move objects from m_deletedIndexes to m_referencedIndexes to revert
the index deletion operation. When updating m_referencedIndexes, we did not check whether key already exists.
Therefore, some indexes in m_referencedIndexes would be replaced and destroyed (since m_referencedIndexes holds
unique pointers) when the index is still referenced by JS.
Tests: storage/indexeddb/modern/abort-index-info-private.html
storage/indexeddb/modern/abort-index-info.html
- Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::rollbackForVersionChangeAbort):
LayoutTests:
- storage/indexeddb/modern/abort-index-info-expected.txt: Added.
- storage/indexeddb/modern/abort-index-info-private-expected.txt: Added.
- storage/indexeddb/modern/abort-index-info-private.html: Added.
- storage/indexeddb/modern/abort-index-info.html: Added.
- storage/indexeddb/modern/resources/abort-index-info.js: Added. (prepareDatabase): (versionChangeSuccessCallback.secondRequest.onerror): (versionChangeSuccessCallback): (secondUpgradeNeeded): (checkState):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@271368 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 11:12 AM Changeset in webkit [276604] by
-
- 3 edits in trunk/LayoutTests
REGRESSION: fast/forms/ios/ipad/open-picker-using-keyboard.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=225053
<rdar://problem/77042251>
Reviewed by Wenson Hsieh.
Update the test to account for the fact that <select> elements now
present a context menu rather than a popover.
- fast/forms/ios/ipad/open-picker-using-keyboard-expected.txt:
- fast/forms/ios/ipad/open-picker-using-keyboard.html:
- 11:08 AM Changeset in webkit [276603] by
-
- 4 edits in trunk/Source/WebInspectorUI
Web Inspector: Audit: Uncaught Exception: Failed to execute 'delete' on 'IDBObjectStore': The parameter is not a valid key range.
https://bugs.webkit.org/show_bug.cgi?id=224993
Reviewed by BJ Burg.
- UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.async processJSON):
(WI.AuditManager.prototype.async addTest):
- UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype.willDismissPopover):
- UserInterface/Views/AuditTreeElement.js:
(WI.AuditTreeElement.prototype.populateContextMenu):
Make sure to save any newly created audits not already inWI.objectStores.auditsimmediately
so that if the developer tries to delete it before exiting Edit mode (which is normally when
everything is saved) an exception isn't thrown about it not being inWI.objectStores.audits.
- 10:45 AM Changeset in webkit [276602] by
-
- 87 edits8 adds13 deletes in trunk/LayoutTests
[LayoutTests] Convert http/tests/resources convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=224622
<rdar://problem/76727052>
Reviewed by Jonathan Bedard.
- http/tests/appcache/fallback.html:
- http/tests/appcache/main-resource-fallback-for-network-error-crash.html:
- http/tests/appcache/main-resource-hash.html:
- http/tests/appcache/main-resource-redirect.html:
- http/tests/appcache/multi-fallback.html:
- http/tests/appcache/non-html.xhtml:
- http/tests/appcache/offline-access.html:
- http/tests/appcache/remove-cache.html:
- http/tests/appcache/resources/fail-on-update-2.py:
- http/tests/appcache/resources/fail-on-update.py:
- http/tests/appcache/resources/fallback.manifest:
- http/tests/appcache/resources/main-resource-redirect-frame.py:
- http/tests/appcache/resources/main-resource-redirect.manifest:
- http/tests/appcache/resources/multi-fallback.manifest:
- http/tests/appcache/resources/non-html.manifest:
- http/tests/appcache/resources/offline-access-frame.html:
- http/tests/appcache/resources/offline-access.js:
(test):
- http/tests/appcache/resources/offline-access.manifest:
- http/tests/appcache/resources/remove-cache.py:
- http/tests/cache/network-error-during-revalidation.html:
- http/tests/cache/resources/network-error-during-revalidation-frame.html:
- http/tests/cache/subresource-fragment-identifier.html:
- http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page.html:
- http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html:
- http/tests/cookies/same-site/fetch-in-cross-origin-iframe.html:
- http/tests/css/border-image-loading.html:
- http/tests/css/css-image-loading.html:
- http/tests/css/css-image-valued-shape.html:
- http/tests/css/font-face-src-loading.html:
- http/tests/css/mask-image-loading.html:
- http/tests/css/reflection-mask-image-loading.html:
- http/tests/css/resources/request-logging.js:
(ResourceLogging.CallCommand):
- http/tests/css/vertical-align-baseline-after-image-load-2-expected.html:
- http/tests/css/vertical-align-baseline-after-image-load-2.html:
- http/tests/css/vertical-align-baseline-after-image-load-3-expected.html:
- http/tests/css/vertical-align-baseline-after-image-load-3.html:
- http/tests/css/vertical-align-baseline-after-image-load-expected.html:
- http/tests/css/vertical-align-baseline-after-image-load.html:
- http/tests/fetch/clone-response-body.html:
- http/tests/fetch/closing-while-fetching.html:
- http/tests/fetch/fetch-cors-with-referrer.html:
- http/tests/fetch/fetching-same-resource-with-different-options-expected.txt:
- http/tests/fetch/fetching-same-resource-with-different-options.html:
- http/tests/fetch/get-response-body-while-loading.html:
- http/tests/images/decode-slow-load-static-image.html:
- http/tests/images/draw-pattern-slow-load-large-image.html:
- http/tests/images/gif-progressive-load.html:
- http/tests/images/image-supports-video.html:
- http/tests/images/jpeg-partial-load.html:
- http/tests/images/loading-image-border.html:
- http/tests/images/loading-image-no-border.html:
- http/tests/images/mp4-partial-load.html:
- http/tests/images/png-partial-load-no-alpha.html:
- http/tests/images/png-partial-load.html:
- http/tests/images/png-progressive-load.html:
- http/tests/images/webp-partial-load.html:
- http/tests/images/webp-progressive-load.html:
- http/tests/loading/preload-img-test.html:
- http/tests/local/fileapi/file-last-modified-using-open-panel.html:
- http/tests/local/fileapi/file-last-modified.html:
- http/tests/local/fileapi/resources/temp-file-utils.js:
(createTempFile):
(touchTempFile):
(removeTempFile):
- http/tests/local/link-stylesheet-load-order-preload.html:
- http/tests/local/link-stylesheet-load-order.html:
- http/tests/media/track/track-webvtt-slow-loading-2.html:
- http/tests/media/track/track-webvtt-slow-loading.html:
- http/tests/misc/repeat-open-cancel.html:
- http/tests/navigation/pending-location-change-assert.html:
- http/tests/preload/delaying_onload_link_preload_after_discovery_image.html:
- http/tests/preload/dynamic_remove_preload_href.html:
- http/tests/preload/not_delaying_window_onload_before_discovery.html:
- http/tests/preload/not_evicting_preload_at_onload.html:
- http/tests/resources/basic-auth.php: Removed.
- http/tests/resources/digest-auth: Removed.
- http/tests/resources/download-json-with-delay.php: Removed.
- http/tests/resources/download-json-with-delay.py: Added.
- http/tests/resources/echo-iframe-src.php: Removed.
- http/tests/resources/echo-iframe-src.py: Added.
- http/tests/resources/file-last-modified.php: Removed.
- http/tests/resources/file-last-modified.py: Added.
- http/tests/resources/load-and-stall.php: Removed.
- http/tests/resources/load-and-stall.py: Added.
- http/tests/resources/network-simulator.php: Removed.
- http/tests/resources/network-simulator.py: Added.
(temp_path_base):
(generate_no_cache_http_header):
(content_type):
(generate_response):
(handle_increate_resource_count_command):
(handle_reset_resource_count_command):
(handle_get_resource_count_command):
(handle_start_resource_requests_log):
(handle_get_resource_requests_log):
(handle_log_resource_request):
- http/tests/resources/portabilityLayer.py:
(set_state):
- http/tests/resources/redirect-to-video-if-accepted.php: Removed.
- http/tests/resources/redirect-to-video-if-accepted.py: Added.
- http/tests/resources/reset-temp-file.php: Removed.
- http/tests/resources/reset-temp-file.py:
- http/tests/resources/slow-image.php: Removed.
- http/tests/resources/slow-image.py: Added.
- http/tests/resources/slow-notify-done.php: Removed.
- http/tests/resources/slow-notify-done.py: Added.
- http/tests/resources/touch-temp-file.php: Removed.
- http/tests/resources/touch-temp-file.py:
- http/tests/resources/write-temp-file.php: Removed.
- http/tests/resources/write-temp-file.py:
- http/tests/security/XFrameOptions/x-frame-options-ancestors-same-origin-allow.html:
- http/tests/security/resources/allow-if-origin.py:
- http/tests/swipe/swipe-back-with-outstanding-load-cancellation.html:
- http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-invalidation.py:
- http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-timeout.py:
- http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache.py:
- http/tests/xmlhttprequest/resources/access-control-preflight-denied-xsrf.py:
- http/tests/xmlhttprequest/resources/no-custom-header.py:
- http/tests/xmlhttprequest/resources/redirect-cross-origin-tripmine.py:
- http/tests/xmlhttprequest/resources/remember-bad-password/count-failures.py:
- http/tests/xmlhttprequest/state-after-network-error.html:
- 10:38 AM Changeset in webkit [276601] by
-
- 2 edits in branches/safari-607-branch/Source/JavaScriptCore
Cherry-pick r276527. rdar://problem/77160646
[YARR Interpreter] Improper backtrack of parentheses with non-zero based greedy quantifiers
https://bugs.webkit.org/show_bug.cgi?id=224983
Reviewed by Mark Lam.
When we backtrack a parentheses with a greedy non zero based quantifier,
we don't properly restore for the case where we hadn't reached the minimum count.
We now save the input position on entry and restore it when we backtrack for
this case. We also properly release the allocated ParenthesesDisjunctionContext's.
- yarr/YarrInterpreter.cpp: (JSC::Yarr::Interpreter::matchParentheses): (JSC::Yarr::Interpreter::backtrackParentheses):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@276527 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 10:38 AM Changeset in webkit [276600] by
-
- 2 edits in branches/safari-607-branch/Source/JavaScriptCore
Cherry-pick r276524. rdar://problem/77160578
Fix B3 strength reduction for shl.
https://bugs.webkit.org/show_bug.cgi?id=224913
rdar://76978874
Reviewed by Michael Saboff.
If the operation can potentially either underflow or overflow, then the result
can be any value.
- b3/B3ReduceStrength.cpp:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@276524 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 10:36 AM Changeset in webkit [276599] by
-
- 8 edits in branches/safari-612.1.11-branch/Source
Versioning.
WebKit-7612.1.11.6
- 10:35 AM Changeset in webkit [276598] by
-
- 4 edits in trunk
REGRESSION (r271861): [iOS] Accessory bar navigation to elements outside the viewport fails
https://bugs.webkit.org/show_bug.cgi?id=224980
<rdar://problem/77042311>
Reviewed by Wenson Hsieh.
Source/WebKit:
r271861 introduced logic to prevent obscured elements from being
focusable using the accessory bar, using hit testing. However, it also
prevented elements outside the viewport from participating in accessory
bar navigation.
To fix, include HitTestRequest::IgnoreClipping in the hit test request
options. This ensures that hit test requests are not clipped to the
viewport.
Note that this behavior is covered by an existing test, but the test
only failed on smaller devices.
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::isObscuredElement):
LayoutTests:
- fast/forms/ios/accessory-bar-navigation.html:
Increase the space between input elements, so that the second input is
positioned out of the viewport on larger devices.
- 10:32 AM Changeset in webkit [276597] by
-
- 3 edits in trunk/Tools
[CMake] Modernize WebKit GLib testing
https://bugs.webkit.org/show_bug.cgi?id=225052
Reviewed by Adrian Perez de Castro.
Set values on targets directly rather than the older add_definitions and
include_directories style. Clean up the code and format it properly.
A NO_GTEST_USAGE definition is used to prevent gtest from being included when an alternate
testing framework is used.
- TestWebKitAPI/config.h:
- TestWebKitAPI/glib/CMakeLists.txt:
- 10:26 AM Changeset in webkit [276596] by
-
- 2 edits in trunk
[PlayStation] Fix build break after r276368
https://bugs.webkit.org/show_bug.cgi?id=225056
Reviewed by Ross Kirsling.
Ensure that the OpenGL::GLES target is created.
- Source/cmake/OptionsPlayStation.cmake:
- 9:33 AM Changeset in webkit [276595] by
-
- 7 edits in branches/safari-607-branch/Source
Versioning.
WebKit-7607.3.12
- 9:30 AM Changeset in webkit [276594] by
-
- 3 edits in trunk/Source/WebCore
[WebIDL] Remove [CallNamedSetterOnlyForSupportedProperties] extended attribute
https://bugs.webkit.org/show_bug.cgi?id=225049
Reviewed by Sam Weinig.
It was part of the old CSSStyleDeclaration named getter implementation,
which was removed in r275808.
No new tests, no behavior change.
- bindings/scripts/CodeGeneratorJS.pm:
(GenerateInvokeNamedPropertySetter):
(GeneratePut):
(GeneratePutByIndex):
(GenerateDefineOwnProperty):
- bindings/scripts/IDLAttributes.json:
- 9:14 AM Changeset in webkit [276593] by
-
- 10 edits in trunk
Fix includes for some GTK/GLib headers
https://bugs.webkit.org/show_bug.cgi?id=225020
Reviewed by Adrian Perez de Castro.
Source/WebKit:
An include was assuming Source/WebKit as its root.
- UIProcess/API/glib/WebKitInitialize.cpp:
Tools:
Update include paths to use their correct <> path.
- TestWebKitAPI/Tests/WebKitGLib/TestInputMethodContext.cpp:
- TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:
- TestWebKitAPI/Tests/WebKitGLib/WebProcessTest.cpp:
- TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:
- TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:
- TestWebKitAPI/gtk/PlatformWebViewGtk.cpp:
- WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
- 8:21 AM Changeset in webkit [276592] by
-
- 102 edits15 adds in trunk
[JSC] OrdinarySet should invoke custom Set methods
https://bugs.webkit.org/show_bug.cgi?id=217916
Reviewed by Yusuke Suzuki.
JSTests:
- microbenchmarks/put-slow-no-cache-array.js: Added.
- microbenchmarks/put-slow-no-cache-function.js: Added.
- microbenchmarks/put-slow-no-cache-js-proxy.js: Added.
- microbenchmarks/put-slow-no-cache-long-prototype-chain.js: Added.
- microbenchmarks/put-slow-no-cache.js: Added.
- microbenchmarks/reflect-set-with-receiver.js: Added.
- stress/custom-get-set-proto-chain-put.js:
- stress/module-namespace-access-set-fails.js: Added.
- stress/put-non-reified-static-accessor-or-custom.js: Added.
- stress/put-non-reified-static-function-or-custom.js: Added.
- stress/put-to-primitive-non-reified-static-custom.js: Added.
- stress/put-to-primitive.js: Added.
- stress/put-to-proto-chain-overrides-put.js: Added.
- stress/typed-array-canonical-numeric-index-string-set.js: Added.
LayoutTests/imported/w3c:
- web-platform-tests/WebIDL/ecmascript-binding/interface-object-set-receiver-expected.txt: Added.
- web-platform-tests/WebIDL/ecmascript-binding/interface-object-set-receiver.html: Added.
- web-platform-tests/WebIDL/ecmascript-binding/interface-prototype-constructor-set-receiver-expected.txt:
- web-platform-tests/WebIDL/ecmascript-binding/interface-prototype-constructor-set-receiver.html:
Source/JavaScriptCore:
This patch fixes putInlineSlow() to handle special properties (like JSFunction's "name"
and JSArray's "length") in prototype chain. When such property is encountered, prototype
chain traversal is stopped; if it's read-only, a TypeError is thrown in strict mode.
This change adds OverridesPut out of line type info flag, and utilizes it in putInlineSlow()
to invoke overriden methods. While this approach requires put() methods to be aware of
altered receivers, it renders several benefits:
- put() method can be used for both "real" Set overrides and special properties,
with its return value remaining
bool; - it is simpler, faster, and more predictable than calling GetOwnProperty in putInlineSlow() or adding defineOwnPropertyViaPut() to the method table.
Removes ordinarySetSlow() for non-index properties, which didn't invoke some Set
methods as well. Instead, definePropertyOnReceiver() is introduced for altered receivers,
which performs correctly when reached because:
- all special properties were already handled (unless it's Reflect.set);
- performing putDirectInternal() is unobservable (unless ProxyObject was seen);
- putDirectInternal() now fully implements property definition of OrdinarySet [1];
- put() override is required if a spec defines custom DefineOwnProperty.
Since indexed puts handle overrides / altered receivers quite differently, they will
be fixed in a follow-up, completely removing ordinarySetSlow().
Also, by merging putEntry() / putToPrimitive() into putInlineSlow() and introducing
putInlineFastReplacingStaticPropertyIfNeeded() helper, this patch fixes a few bugs:
- Direct Set to non-reified static property now preserves its attributes when replacing Value.
- Prototype chain Set to non-reified static property now throws if receiver is non-extensible.
- Non-reified static writable property now shadows read-only one that is further in prototype chain.
- Non-reified static properties in prototype chain of a primitive are now considered.
Fixes a few issues that were previously unobservable:
- PropertyAttribute::CustomValue is now unset when a setter-less property is reassigned.
- uint64_t putByIndexInline() now calls put() via method table like uint32_t counterpart.
Other notable refactors:
- Inlines callCustomSetter(), dropping weird TriState return value.
- Simplifies initialization of StringPrototype.
- Simplifies isThisValueAltered() to pointer comparisons at non-JSProxy call sites.
- Removes doPutPropertySecurityCheck() methods as the same checks are performed by put() methods.
- Removes prototypeChainMayInterceptStoreTo(), which pretty much duplicated canPerformFastPutInline().
- Removes dummy JSArrayBufferView::put() method.
- Removes now unused lookupPut().
Aligns JSC with V8 and SpiderMonkey.
This patch carefully preserves the current behavior of Reflect.set with CustomValue
and prototype chain Set to a JSCallbackObject / legacy platform object.
This change is performance-neutral on /put/ microbenchmarks as it doesn't affect
caching, only the slow path. Reflect.set with JSFinalObject receiver is 130% faster.
putInlineSlow() microbenchmarks progress by 4-18%.
[1]: https://tc39.es/ecma262/#sec-ordinarysetwithowndescriptor (step 3)
- API/JSCallbackObject.h:
- API/JSCallbackObjectFunctions.h:
(JSC::JSCallbackObject<Parent>::put):
- API/tests/testapiScripts/testapi.js:
- debugger/DebuggerScope.h:
- runtime/ClassInfo.h:
- runtime/ClonedArguments.h:
- runtime/CustomGetterSetter.cpp:
(JSC::callCustomSetter): Deleted.
- runtime/CustomGetterSetter.h:
- runtime/ErrorConstructor.h:
- runtime/ErrorInstance.h:
- runtime/GenericArguments.h:
- runtime/GenericArgumentsInlines.h:
(JSC::GenericArguments<Type>::put):
- runtime/GetterSetter.h:
- runtime/JSArray.cpp:
(JSC::JSArray::put):
- runtime/JSArray.h:
- runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::put): Deleted.
- runtime/JSArrayBufferView.h:
- runtime/JSCJSValue.cpp:
(JSC::JSValue::putToPrimitive):
- runtime/JSCell.cpp:
(JSC::JSCell::doPutPropertySecurityCheck): Deleted.
- runtime/JSCell.h:
- runtime/JSFunction.cpp:
(JSC::JSFunction::put):
- runtime/JSFunction.h:
- runtime/JSGenericTypedArrayView.h:
- runtime/JSGlobalLexicalEnvironment.h:
- runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::put):
- runtime/JSGlobalObject.h:
- runtime/JSLexicalEnvironment.h:
- runtime/JSModuleEnvironment.h:
- runtime/JSModuleNamespaceObject.h:
- runtime/JSObject.cpp:
(JSC::JSObject::getOwnPropertySlot):
(JSC::JSObject::putInlineSlow):
(JSC::definePropertyOnReceiverSlow):
(JSC::JSObject::definePropertyOnReceiver):
(JSC::JSObject::putInlineFastReplacingStaticPropertyIfNeeded):
(JSC::JSObject::doPutPropertySecurityCheck): Deleted.
(JSC::JSObject::prototypeChainMayInterceptStoreTo): Deleted.
- runtime/JSObject.h:
(JSC::JSObject::putByIndexInline):
(JSC::JSObject::hasNonReifiedStaticProperties):
(JSC::JSObject::getOwnPropertySlot):
(JSC::JSObject::putDirect):
(JSC::JSObject::doPutPropertySecurityCheck): Deleted.
- runtime/JSObjectInlines.h:
(JSC::JSObject::canPerformFastPutInlineExcludingProto):
(JSC::JSObject::putInlineForJSObject):
(JSC::JSObject::putInlineFast):
(JSC::JSObject::putDirectInternal):
- runtime/JSProxy.h:
- runtime/JSTypeInfo.h:
(JSC::TypeInfo::hasStaticPropertyTable const):
(JSC::TypeInfo::overridesPut const):
(JSC::TypeInfo::getOwnPropertySlotMayBeWrongAboutDontEnum const):
(JSC::TypeInfo::hasPutPropertySecurityCheck const): Deleted.
- runtime/Lookup.h:
(JSC::putEntry): Deleted.
(JSC::lookupPut): Deleted.
- runtime/PropertySlot.h:
- runtime/ProxyObject.cpp:
(JSC::ProxyObject::put):
- runtime/ProxyObject.h:
- runtime/PutPropertySlot.h:
(JSC::PutPropertySlot::PutPropertySlot):
(JSC::PutPropertySlot::context const):
(JSC::PutPropertySlot::isTaintedByOpaqueObject const):
(JSC::PutPropertySlot::setIsTaintedByOpaqueObject):
- runtime/ReflectObject.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
- runtime/RegExpObject.cpp:
(JSC::RegExpObject::put):
- runtime/RegExpObject.h:
- runtime/StringObject.cpp:
(JSC::StringObject::put):
- runtime/StringObject.h:
- runtime/StringPrototype.cpp:
(JSC::StringPrototype::finishCreation):
(JSC::StringPrototype::create):
- runtime/StringPrototype.h:
- runtime/Structure.cpp:
(JSC::Structure::validateFlags):
- runtime/Structure.h:
(JSC::Structure::hasNonReifiedStaticProperties const):
- tools/JSDollarVM.cpp:
Source/WebCore:
Fixes:
- Legacy platform object's Set now guards against altered receiver [1]. (aligns with Blink).
- Direct Set to window.%Interface% constructor now preserves DontEnum attribute [2]. (aligns with Blink and Gecko).
- Cross-origin non-index put() now throws SecurityError instead of silently failing [3]. (aligns with Blink and Gecko).
Refactors:
- Simplifies cross-origin JSDOMWindow::put(), aligning it with JSLocation::put().
- Replaces lookupPut() with direct setter call in JSRemoteDOMWindow::put().
- Removes now unused doPutPropertySecurityCheck() methods.
Tests: js/dom/script-tests/reflect-set-onto-dom.js
imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/interface-object-set-receiver.html
http/tests/security/cross-frame-access-object-getPrototypeOf-in-put.html
[1] https://heycam.github.io/webidl/#legacy-platform-object-set (step 1)
[2] https://heycam.github.io/webidl/#define-the-global-property-references (step 3.1.3)
[3] https://html.spec.whatwg.org/multipage/browsers.html#crossoriginset-(-o,-p,-v,-receiver-) (step 4)
- bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::put):
(WebCore::JSDOMWindow::doPutPropertySecurityCheck): Deleted.
- bindings/js/JSLocationCustom.cpp:
(WebCore::JSLocation::doPutPropertySecurityCheck): Deleted.
- bindings/js/JSRemoteDOMWindowCustom.cpp:
(WebCore::JSRemoteDOMWindow::put):
- bindings/scripts/CodeGeneratorJS.pm:
(GeneratePut):
(GenerateHeader):
- bindings/scripts/test/JS/*: Updated.
- bridge/objc/objc_runtime.h:
- bridge/runtime_array.h:
- bridge/runtime_object.h:
Source/WebKit:
- WebProcess/Plugins/Netscape/JSNPObject.h:
LayoutTests:
- http/tests/security/cross-frame-access-object-getPrototypeOf-in-put-expected.txt:
- http/tests/security/cross-frame-access-object-getPrototypeOf-in-put.html:
- js/dom/reflect-set-onto-dom-expected.txt:
- js/dom/script-tests/reflect-set-onto-dom.js:
- 8:04 AM Changeset in webkit [276591] by
-
- 2 edits in trunk/Source/WebCore
ANGLE X11 build fixes
https://bugs.webkit.org/show_bug.cgi?id=225003
Reviewed by Kenneth Russell.
X11 headers define a bunch of macros with common terms, interfering with WebCore and WTF
enum values. As a workaround, we explicitly undef them.
This is the same fix as the one to GLContext.h in r274869 but applied to the ANGLE headers
that are including X11.
- platform/graphics/angle/ANGLEHeaders.h:
- 7:28 AM Changeset in webkit [276590] by
-
- 2 edits in trunk/Source/WebKit
[iOS] Update sandbox message filter syntax
https://bugs.webkit.org/show_bug.cgi?id=223384
Reviewed by Brent Fulgham.
Update sandbox message filter syntax on iOS. The previous syntax should also still be supported.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
- 7:22 AM Changeset in webkit [276589] by
-
- 1 edit2 adds in trunk/LayoutTests
[GLIB] Unreviewed test gardening. Emit new GLIB baselines after r276584.
- platform/glib/imported/w3c/web-platform-tests/shadow-dom/event-on-pseudo-element-crash-expected.txt: Added.
- platform/glib/imported/w3c/web-platform-tests/shadow-dom/imperative-slot-api-crash-expected.txt: Added.
- 6:17 AM Changeset in webkit [276588] by
-
- 10 edits in trunk/Source/WebCore
Refcount Style::Resolver
https://bugs.webkit.org/show_bug.cgi?id=225048
Reviewed by Ryosuke Niwa.
For safety, and to allow more sharing in the future.
- css/DOMCSSRegisterCustomProperty.cpp:
(WebCore::DOMCSSRegisterCustomProperty::registerProperty):
- dom/Document.cpp:
(WebCore::Document::userAgentShadowTreeStyleResolver):
- dom/Document.h:
- style/StyleResolver.cpp:
Also make the Resolver ISO-allocated.
(WebCore::Style::Resolver::create):
- style/StyleResolver.h:
- style/StyleScope.cpp:
(WebCore::Style::Scope::resolver):
- style/StyleScope.h:
- style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::Scope::Scope):
(WebCore::Style::TreeResolver::Scope::~Scope):
(WebCore::Style::TreeResolver::styleForStyleable):
(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::TreeResolver::resolvePseudoStyle):
(WebCore::Style::TreeResolver::resolve):
- style/StyleTreeResolver.h:
- 5:27 AM Changeset in webkit [276587] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: REGRESSION(r270134) Elements Tab: Details Sidebar toggle is unexpectedly disabled after switching from Timelines tab
https://bugs.webkit.org/show_bug.cgi?id=224772
<rdar://73470211>
Reviewed by Devin Rousso.
Ensure the logic for identifying and showing the represented object for the selected
DOMNode
is not run unless the Elements Tab is visible. This guards agains the partial setting of state
when the Elements Tab is not the default tab while opening Web Inspector.
- UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
(WI.ElementsTabContentView.prototype.showRepresentedObject):
(WI.ElementsTabContentView.prototype.attached):
(WI.ElementsTabContentView.prototype.detached):
(WI.ElementsTabContentView.prototype._showDOMTreeContentViewIfNeeded):
(WI.ElementsTabContentView.prototype._mainFrameDidChange):
(WI.ElementsTabContentView.prototype._mainResourceDidChange):
- 4:59 AM Changeset in webkit [276586] by
-
- 10 edits2 deletes in trunk
[GStreamer] media/track/in-band/ layout tests introduced in r154908 are failing
https://bugs.webkit.org/show_bug.cgi?id=120665
Reviewed by Philippe Normand.
Source/WebCore:
Solved a deadlock when processing samples from a text track while the main thread is starting to play.
In those circumstances, the text sink is set by Playbin as non-async, so the main thread calling
MediaPlayerPrivateGStreamer::play() is blocked waiting for the preroll to finish. While prerolling,
a text sample is detected in a non-main thread and sent to the main thread for processing. The current
code waits in the non-main thread for the processing to finish, but that won't ever happen because
the main thread is busy in play() waiting for the preroll to complete. Since the non-main thread
doesn't need any result from the main thread, a simple change to avoid the wait is enough to solve the
deadlock.
There was also a bug preventing all the languages of the text tracks being detected on time. Sometimes
the tag event specifying the track language emitted by the demuxer arrives too late to the
webkittextcombiner sink pad (up to several seconds since sent!) and the language remains unset when
the test checks for it. As a result, the test fails because the second track isn't reported to be in
French language ("fr"). The solution to this is to find an earlier (more upstream) pad and listen
there for the (sticky) tag events. There can be multiple tag events, so all of them are checked until
one having the GST_TAG_LANGUAGE_CODE tag is found.
Covered by existing tests (now unskipped).
- platform/graphics/gstreamer/TextSinkGStreamer.cpp:
(webkitTextSinkHandleSample): Don't wait for handleTextSample() to be completed in the main thread. This avoids the deadlock.
- platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
(WebCore::findBestUpstreamPad): Find a pad more upstream than the current one.
(WebCore::TrackPrivateBaseGStreamer::TrackPrivateBaseGStreamer): Call setPad() instead of setting it by hand here.
(WebCore::TrackPrivateBaseGStreamer::setPad): Also manage m_bestUpstreamPad in parallel to m_pad. Add a probe to listen to the tag events instead of checking the "tags" property (the property wasn't present in the best upstream pad).
(WebCore::TrackPrivateBaseGStreamer::disconnect): Remove the probe from m_bestUpstreamPad, instead of removing the old notify::tags listener from m_pad.
(WebCore::TrackPrivateBaseGStreamer::tagsChanged): Check the sticky tag events until the language one is found (or the last event if no language event is available).
- platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h: Added m_bestUpstreamPad and m_eventProbe. Moved setPad() implementation to the cpp file.
Tools:
Fix media/track/in-band/tests
Add libkate as dependency, so gst-plugins-bad detects it and can build the GstKateDec element.
This isn't actually needed when using Flatpak (the dependency has been added there), but is still
useful when using jhbuild and is also coherent with the need of other multimedia dependencies
such as libvpx.
- gtk/install-dependencies:
- wpe/install-dependencies:
LayoutTests:
Removed track-in-band-mpegts-metadata.html because it relies on private streams on mpegts
and those won't ever be exposed by tsdemux. Made testCuesAddedOnce() test more robust
when finding text tracks.
- media/content/user-private-streams.ts: Removed.
- media/in-band-tracks.js:
(pollProgress): Make sure that the function repeated at intervals is properly stopped in all the cases.
(canplaythrough): More robust track detection.
(testCuesAddedOnce): Ditto.
- media/track/in-band/track-in-band-mpegts-metadata.html: Removed.
- platform/glib/TestExpectations: Unskip media/track/in-band tests.
- 3:56 AM Changeset in webkit [276585] by
-
- 4 edits in trunk
Implement ShadowRoot.prototype.delegatesFocus attribute
https://bugs.webkit.org/show_bug.cgi?id=224805
Reviewed by Antti Koivisto.
LayoutTests/imported/w3c:
Rebaselined now that test casses are passing.
- web-platform-tests/shadow-dom/focus/ShadowRoot-delegatesFocus-expected.txt:
Source/WebCore:
Added the IDL attribute. Chrome had supported this IDL attribute for ages.
Test: imported/w3c/web-platform-tests/shadow-dom/focus/ShadowRoot-delegatesFocus.html
- dom/ShadowRoot.idl:
- 2:25 AM Changeset in webkit [276584] by
-
- 16 edits24 adds7 deletes in trunk/LayoutTests
Resync WPT shadow DOM tests as of 02f0cc10
https://bugs.webkit.org/show_bug.cgi?id=225042
Reviewed by Antti Koivisto.
LayoutTests/imported/w3c:
Resync'ed shadow DOM tests as of 02f0cc10c4e92627ccfd8b30ce03e04278af5224.
- resources/resource-files.json:
- web-platform-tests/shadow-dom/accesskey.tentative-expected.txt: Added.
- web-platform-tests/shadow-dom/accesskey.tentative.html: Added.
- web-platform-tests/shadow-dom/declarative/declarative-after-attachshadow.tentative.html:
- web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-attachment.tentative.html:
- web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-basic.tentative.html:
- web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-opt-in.tentative.html:
- web-platform-tests/shadow-dom/declarative/declarative-with-disabled-shadow.tentative-expected.txt: Added.
- web-platform-tests/shadow-dom/declarative/declarative-with-disabled-shadow.tentative.html: Added.
- web-platform-tests/shadow-dom/declarative/getinnerhtml.tentative.html:
- web-platform-tests/shadow-dom/declarative/innerhtml-before-closing-tag.tentative-expected.txt: Added.
- web-platform-tests/shadow-dom/declarative/innerhtml-before-closing-tag.tentative.html: Renamed from innerhtml-before-closing-tag.html.
- web-platform-tests/shadow-dom/declarative/innerhtml-on-ordinary-template.tentative-expected.txt: Added.
- web-platform-tests/shadow-dom/declarative/innerhtml-on-ordinary-template.tentative.html: Renamed from innerhtml-on-ordinary-template.html.
- web-platform-tests/shadow-dom/declarative/move-template-before-closing-tag.tentative-expected.txt: Added.
- web-platform-tests/shadow-dom/declarative/move-template-before-closing-tag.tentative.html: Renamed from move-template-before-closing-tag.html.
- web-platform-tests/shadow-dom/declarative/script-access.tentative.html:
- web-platform-tests/shadow-dom/declarative/w3c-import.log:
- web-platform-tests/shadow-dom/event-on-pseudo-element-crash.html: Added.
- web-platform-tests/shadow-dom/focus/ShadowRoot-delegatesFocus-expected.txt: Added.
- web-platform-tests/shadow-dom/focus/ShadowRoot-delegatesFocus.html: Added.
- web-platform-tests/shadow-dom/focus/focus-selector-delegatesFocus.html:
- web-platform-tests/shadow-dom/focus/w3c-import.log:
- web-platform-tests/shadow-dom/imperative-slot-api-crash-expected.txt: Added.
- web-platform-tests/shadow-dom/imperative-slot-api-crash.html: Added.
- web-platform-tests/shadow-dom/imperative-slot-api-expected.txt: Added.
- web-platform-tests/shadow-dom/imperative-slot-api-slotchange-expected.txt: Renamed from slots-imperative-api-slotchange.tentative-expected.txt.
- web-platform-tests/shadow-dom/imperative-slot-api-slotchange.html: Renamed from slots-imperative-api-slotchange.tentative.html.
- web-platform-tests/shadow-dom/imperative-slot-api.html: Renamed from slots-imperative-slot-api.tentative.html.
- web-platform-tests/shadow-dom/nested-slot-remove-crash-expected.txt:
- web-platform-tests/shadow-dom/nested-slot-remove-crash.html:
- web-platform-tests/shadow-dom/w3c-import.log:
LayoutTests:
Rebaselined the test and added platform specific results for the crash tests.
- platform/ios/imported/w3c/web-platform-tests/shadow-dom/imperative-slot-api-crash-expected.txt: Added.
- platform/ios/imported/w3c/web-platform-tests/shadow-dom/event-on-pseudo-element-crash-expected.txt: Added.
- platform/mac/imported/w3c/web-platform-tests/shadow-dom/event-on-pseudo-element-crash-expected.txt: Added.
- platform/glib/imported/w3c/web-platform-tests/shadow-dom/nested-slot-remove-crash-expected.txt: Rebaselined.
- 2:04 AM Changeset in webkit [276583] by
-
- 2 edits in trunk/Source/WTF
Bump CeilingOnPageSize to 16KB on MIPS
https://bugs.webkit.org/show_bug.cgi?id=225030
Reviewed by Michael Catanzaro.
- wtf/PageBlock.h:
- 1:21 AM Changeset in webkit [276582] by
-
- 3 edits2 adds in trunk
embed element with the src attribute set prevents WebKitTestRunner from exiting
https://bugs.webkit.org/show_bug.cgi?id=223791
Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-04-26
Reviewed by Ryosuke Niwa.
Source/WebCore:
The problem is that the load never finishes, so WTR keeps waiting for the final message from injected bundle
that happens when the page is loaded. When the src attribute is changed,
HTMLPlugInImageElement::updateImageLoaderWithNewURLSoon() is called. That calls
HTMLPlugInImageElement::scheduleUpdateForAfterStyleResolution() that increases the document load event delay
count and queues a style post resolution callback. The document load event delay count is decreased in
HTMLPlugInImageElement::updateAfterStyleResolution(), called by the style post resolution callback. But the
callback is never called because the embed element is not in tree, and it's never added, keeping the document
load event delay unbalanced. We should not call scheduleUpdateForAfterStyleResolution() when the element
is not in render tree, since we know Node::invalidateStyle() will return early and style post resolution
callbacks will not be called. If the element is added to the tree eventually,
scheduleUpdateForAfterStyleResolution() will be called by didRecalcStyle, so the image will be loaded.
Test: fast/images/embed-image-onload-src-change.html
- html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::updateImageLoaderWithNewURLSoon):
LayoutTests:
Add new test.
- fast/images/embed-image-onload-src-change-expected.txt: Added.
- fast/images/embed-image-onload-src-change.html: Added.
Apr 25, 2021:
- 10:51 PM Changeset in webkit [276581] by
-
- 2 edits in trunk/Tools
Add an option to not enable all experimental features in DumpRenderTree
https://bugs.webkit.org/show_bug.cgi?id=225041
Reviewed by Wenson Hsieh.
Added --no-enable-all-experimental-features to DumpRenderTree as we did
for WebKitTestRunner in r276559.
- DumpRenderTree/mac/DumpRenderTree.mm:
(setWebPreferencesForTestOptions):
(initializeGlobalsFromCommandLineOptions):
- 10:24 PM Changeset in webkit [276580] by
-
- 4 edits in trunk/LayoutTests
Unreviewesd EWS fixes.
Skip http/tests/security/referrer-policy-header-multipart.html on WebKit1
after r276526 split it out of http/tests/security/referrer-policy-header.html
- platform/mac-wk1/TestExpectations:
- platform/win/TestExpectations:
- platform/wincairo/TestExpectations:
- 7:05 PM Changeset in webkit [276579] by
-
- 2 edits in trunk/LayoutTests
[WinCairo] Unreviewed test gardening
- platform/wincairo/TestExpectations:
- 6:03 PM Changeset in webkit [276578] by
-
- 6 edits2 adds in trunk
Fix a crash caused by AVIF decoding failure
https://bugs.webkit.org/show_bug.cgi?id=223843
<rdar://problem/76205084>
Reviewed by Philippe Normand.
Source/WebCore:
A crash happens when the image count is accessed in AVIFImageDecoder::tryDecodeSize.
This is because an instance of AVIFImageReader is destroyed by setFailed()
in AVIFImageReader::parseHeader. Deciding a failure was hasty because
parsing can fail when necessary data is not received yet. To fix this,
we call setFailed in AVIFImageReader::parseHeader only when all data is received.
Test: http/tests/images/avif-partial-load-crash.html
- platform/image-decoders/avif/AVIFImageDecoder.cpp:
(WebCore::AVIFImageDecoder::tryDecodeSize):
- platform/image-decoders/avif/AVIFImageReader.cpp:
(WebCore::AVIFImageReader::parseHeader):
(WebCore::AVIFImageReader::repetitionCount const):
- platform/image-decoders/avif/AVIFImageReader.h:
LayoutTests:
Check if partial load of avif images crashes.
- TestExpectations: Skip the test for non-gtk platforms.
- http/tests/images/avif-partial-load-crash-expected.txt: Added.
- http/tests/images/avif-partial-load-crash.html: Added.
- 3:59 PM Changeset in webkit [276577] by
-
- 6 edits in trunk
Fix handling of overflow of /= and *= operators with double over Checked<uint64_t> and other 64-bit types.
https://bugs.webkit.org/show_bug.cgi?id=224835
Reviewed by Chris Dumez.
Source/WebCore:
- platform/graphics/gpu/cocoa/GPUBindGroupAllocatorMetal.mm:
(WebCore::GPUBindGroupAllocator::reallocate): Use integer math instead of floating point math to increase
the size by 25% each time through the loop, staying within the capabilities of our checked integer class.
Source/WTF:
- wtf/CheckedArithmetic.h: Since it is quite difficult to write correct implementations of the
operations where we multiply or divide a checked integer by a floating point number, deleted
those functions, which were barely used. Also corrected return types of various member functions,
which were unconventional "const Type", replacing them with the conventional "Type" for functions
that return a distinct value, "Type&" for assignment operators, and bool for relational operators.
Tools:
- TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:
Removed tests of the "/=" operator with floating point arguments, no longer supported.
- 3:53 PM Changeset in webkit [276576] by
-
- 5 edits in trunk/Source/WebCore
Remove templated operator<<(TextStream&, T*) that interferes with raw pointer formatting.
https://bugs.webkit.org/show_bug.cgi?id=224962
Reviewed by Darin Adler.
We can end up calling into this one (which unhelpfully casts its
argument to intptr_t) instead of theconst void*one in
TextStream.h.
Removing this means we can drop static_cast<const void*>(...) in
various places in debugging output code.
- rendering/RenderLayer.cpp:
(WebCore::outputPaintOrderTreeRecursive):
- rendering/RenderTreeAsText.cpp:
(WebCore::RenderTreeAsText::writeRenderObject):
- rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::writeStandardPrefix):
- rendering/svg/SVGRenderTreeAsText.h:
- 3:06 PM Changeset in webkit [276575] by
-
- 24 edits1 delete in trunk/Source/WebCore
Make more IndexedDB objects iso-heap'ed
https://bugs.webkit.org/show_bug.cgi?id=225029
Reviewed by Darin Adler.
Deployed IsoHeap on more IndexedDB objects.
- Modules/indexeddb/IDBFactory.cpp:
- Modules/indexeddb/IDBFactory.h:
- Modules/indexeddb/IDBGetAllResult.cpp:
- Modules/indexeddb/IDBGetAllResult.h:
- Modules/indexeddb/IDBGetResult.cpp:
- Modules/indexeddb/IDBGetResult.h:
- Modules/indexeddb/IDBIndex.cpp:
- Modules/indexeddb/IDBIndex.h:
- Modules/indexeddb/IDBKey.cpp:
- Modules/indexeddb/IDBKey.h:
- Modules/indexeddb/IDBObjectStore.cpp:
- Modules/indexeddb/IDBObjectStore.h:
- Modules/indexeddb/IDBRecordIdentifier.h: Removed since it's not used anywhere.
- Modules/indexeddb/IDBRequest.cpp:
- Modules/indexeddb/IDBRequest.h:
- Modules/indexeddb/client/IDBConnectionProxy.cpp:
- Modules/indexeddb/client/IDBConnectionProxy.h:
- Modules/indexeddb/client/IDBConnectionToServer.cpp:
- Modules/indexeddb/client/IDBConnectionToServer.h:
- Modules/indexeddb/client/TransactionOperation.cpp:
- Modules/indexeddb/client/TransactionOperation.h:
- Modules/indexeddb/shared/IDBDatabaseInfo.cpp:
- Modules/indexeddb/shared/IDBDatabaseInfo.h:
- WebCore.xcodeproj/project.pbxproj:
- 2:45 PM Changeset in webkit [276574] by
-
- 9 edits1 delete in trunk/Source
Add
ALWAYS_LOG_WITH_STREAMmacro for easier development/debugging
https://bugs.webkit.org/show_bug.cgi?id=224959
Reviewed by Darin Adler.
It's often very helpful to use existing
operator<<defined on objects, but annoying to
have to copypaste the boilerplate code that creates aWTF::TextStreamand uses it in a
WTFLogAlwaysor wait for a debug build to enable existingLOG_WITH_STREAM.
Source/WebCore:
- platform/Logging.h:
Move contents of
pal/LogMacros.htowtf/Assertions.h.
Source/WebCore/PAL:
- pal/LogMacros.h: Removed.
- PAL.xcodeproj/project.pbxproj:
- pal/CMakeLists.txt:
Move contents of
pal/LogMacros.htowtf/Assertions.h.
Source/WebKit:
- Platform/Logging.h:
Move contents of
pal/LogMacros.htowtf/Assertions.h.
Source/WTF:
- wtf/Assertions.h:
(LOG_WITH_STREAM): Moved from
Source/WebCore/pal/LogMacros.h.
(ALWAYS_LOG_WITH_STREAM): Added.
AddALWAYS_LOG_WITH_STREAMso that one change existingLOGwhen debugging with minimal
friction. As an example, many times I've wished I could've just changed
`
LOG_WITH_STREAM(Channel, stream << node);
`
to something like
`
ALWAYS_LOG_WITH_STREAM(stream << node);
`
and avoid having to modify the surrounding code too much.
- 2:09 PM Changeset in webkit [276573] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: Audit: REGRESSION(?): creating a new test in Edit mode causes the Results folder to appear
https://bugs.webkit.org/show_bug.cgi?id=224994
Reviewed by Darin Adler.
- UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype._addTest):
- 2:00 PM Changeset in webkit [276572] by
-
- 8 edits1 add in trunk
[css-flexbox] Table layout disregards overriding width
https://bugs.webkit.org/show_bug.cgi?id=224934
Patch by Felipe Erias <Felipe Erias> on 2021-04-25
Reviewed by Darin Adler.
LayoutTests/imported/w3c:
Update expectations.
- web-platform-tests/css/css-flexbox/table-with-percent-intrinsic-width-expected.txt: This test now passes.
Source/WebCore:
If a table's parent has set an overriding width on it, that value will get preference over the one from
the table's "width" property. This fixes several tests where the width assigned by the flexbox algorithm
did not match the width of the table after layout.
- rendering/AutoTableLayout.cpp:
(WebCore::AutoTableLayout::applyPreferredLogicalWidthQuirks const): Give precedence to the element's
overriding width if it has been set.
- rendering/RenderTable.cpp:
(WebCore::RenderTable::updateLogicalWidth): Give precedence to the element's overriding width if it
has been set, instead of discarding it if it is smaller than the style width.
(WebCore::RenderTable::computePreferredLogicalWidths): Take the overriding width into account when
computing the preferred min/max values for the element.
LayoutTests:
- TestExpectations: Remove three WPT tests that now pass.
- platform/glib/TestExpectations: Remove one WPT test that now passes.
- platform/gtk/imported/w3c/web-platform-tests/css/css-flexbox/flex-item-contains-strict-expected.txt: Added.
- 1:38 PM Changeset in webkit [276571] by
-
- 5 edits in trunk/Source/WebKit
[GPUP] REGRESSION: Selecting play/pause on Spotify.com causes page to reload
https://bugs.webkit.org/show_bug.cgi?id=225023
<rdar://76985997>
Reviewed by Darin Adler.
A zero ObjectIdentifier is apparently invalid, which causes a debug ASSERT on the sending
side and a SIGKILL on the receiving side. Replace the zero ObjectIdentifier message when
clearing a LegacyCDMSession with an Optional<ObjectIdentifier>, and send an explicit
WTF::nullopt when clearing.
- GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::mediaPlayerCachedKeyForKeyId const):
(WebKit::RemoteMediaPlayerProxy::setLegacyCDMSession):
- GPUProcess/media/RemoteMediaPlayerProxy.h:
- GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
- WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::setCDMSession):
- 1:32 PM Changeset in webkit [276570] by
-
- 5 edits in trunk/Source/WebKit
[GPUP][iOS] Silent video playback can interrupt system audio
https://bugs.webkit.org/show_bug.cgi?id=225031
<rdar://76652073>
Reviewed by Eric Carlson.
When the WebContent process asks the GPU Process to set the AVAudioSession audio session
category, the GPU Process as an optimization returns early if the session category being
requested is the same as has already been set. However, the default value of the category
is "None" (which translates to AVAudioSessionCategoryAmbient), and setting the category
to "None" becomes a no-op due to this default. As such, the GPUP never sets the underlying
AVAudioSession's category away from the default, which is AVAudioSessionCategorySoloAmbient,
and thus will interrupt other audio during playback.
Additionally, there's a subtle logic error where the audio session category is not changed
when a given WebContent process (and it's RemoteAudioSession & Proxy) goes away.
The fix for both of these issues is to re-calculate the correct audio session category
when a RemoteAudioSessionProxy is added or removed from RemoteAudioSessionProxyManager.
Since "None" is the default value for a RemoteAudioSessionProxy, the mere act of adding
a new RemoteAudioSessionProxy (which is created when a WebContent process is created)
will cause the audio session category to be set to AVAudioSessionCategoryAmbient.
- GPUProcess/media/RemoteAudioSessionProxy.cpp:
(WebKit::RemoteAudioSessionProxy::setCategory):
- GPUProcess/media/RemoteAudioSessionProxy.h:
- GPUProcess/media/RemoteAudioSessionProxyManager.cpp:
(WebKit::RemoteAudioSessionProxyManager::addProxy):
(WebKit::RemoteAudioSessionProxyManager::removeProxy):
(WebKit::RemoteAudioSessionProxyManager::updateCategory):
(WebKit::RemoteAudioSessionProxyManager::setCategoryForProcess): Deleted.
- GPUProcess/media/RemoteAudioSessionProxyManager.h:
- 12:17 PM Changeset in webkit [276569] by
-
- 7 edits in trunk/Source/ThirdParty/ANGLE
[Metal ANGLE] support primitive restart behavior with simple data types
https://bugs.webkit.org/show_bug.cgi?id=225011
Primitive restart behavior for simple data types is not defined in Metal. Add a pre-draw pass to
create a set of restart indices, rather than re-write the index buffer. This pass avoids
storing more copies of the index buffer: instead, we cache the location of restart indices, and
use them to build draw lists.
Patch by Kyle Piddington <Kyle Piddington> on 2021-04-25
Reviewed by Dean Jackson.
- src/libANGLE/renderer/metal/BufferMtl.h:
- src/libANGLE/renderer/metal/BufferMtl.mm:
(rx::IndexConversionBufferMtl::IndexConversionBufferMtl):
(rx::BufferMtl::markConversionBuffersDirty):
(rx::calculateRestartRanges):
(rx::BufferMtl::getRestartIndices):
- src/libANGLE/renderer/metal/ContextMtl.h:
- src/libANGLE/renderer/metal/ContextMtl.mm:
(rx::ContextMtl::drawLineLoopElements):
(rx::ContextMtl::drawElementsImpl):
(rx::ContextMtl::drawElementsSimpleTypesPrimitiveRestart): Deleted.
- src/libANGLE/renderer/metal/VertexArrayMtl.h:
- src/libANGLE/renderer/metal/VertexArrayMtl.mm:
(rx::VertexArrayMtl::getIndexBuffer):
(rx::VertexArrayMtl::getDrawIndices):
(rx::VertexArrayMtl::convertIndexBuffer):
(rx::VertexArrayMtl::streamIndexBufferFromClient):
- 12:16 PM Changeset in webkit [276568] by
-
- 2 edits in trunk/Source/ThirdParty/ANGLE
[Metal ANGLE] Temporarily remove AST validation even for debug builds
https://bugs.webkit.org/show_bug.cgi?id=224991
rdar://76299178
Patch by John Cunningham <johncunningham@apple.com> on 2021-04-25
Reviewed by Kenneth Russell.
- src/libANGLE/renderer/metal/ShaderMtl.mm:
(rx::ShaderMtl::compileImplMtl):
- 12:06 PM Changeset in webkit [276567] by
-
- 3 edits in trunk/Source/ThirdParty/ANGLE
[Metal ANGLE] Select proper IOSurface backing format for WebGL environment
https://bugs.webkit.org/show_bug.cgi?id=224948
<rdar://76284889>
Depending on the architecture, WebCore expects different
IOSurface texture targets for the main buffer. When running catalyst on
Arm64 devices, Metal-ANGLE needs to select the TEXTURE_2D texture target for our
IOSurface/Pbuffer bind point, rather than TEXTURE_RECTANGLE.
Reviewed by Dean Jackson.
Patch by Kyle Piddington <Kyle Piddington> on 2021-04-25
- src/libANGLE/renderer/metal/DisplayMtl.h:
- src/libANGLE/renderer/metal/DisplayMtl.mm:
(rx::needsEAGLOnMac):
(rx::DisplayMtl::EGLDrawingBufferTextureTarget):
(rx::DisplayMtl::generateConfigs):
- 11:35 AM Changeset in webkit [276566] by
-
- 2 edits in trunk/Source/WebKit
[WebXR] Should be enabled when WEBXR_INTERNALS is true
https://bugs.webkit.org/show_bug.cgi?id=225026
<rdar://problem/77111380>
Reviewed by Sam Weinig.
- Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultWebXREnabled): Return true when HAVE(WEBXR_INTERNALS).
- 10:43 AM Changeset in webkit [276565] by
-
- 2 edits in trunk/Source/WebCore
css-contain category missing from CSSProperties.json
https://bugs.webkit.org/show_bug.cgi?id=224990
Patch by Tyler Wilcock <Tyler Wilcock> on 2021-04-25
Reviewed by Darin Adler.
- css/CSSProperties.json:
Add missing css-contain category to avoid style lint errors. Example
error:
ERROR: Source/WebCore/css/CSSProperties.json:0: property "contain" has category "css-contain" which is not in the set of categories. [json/syntax] [5]
- 10:39 AM Changeset in webkit [276564] by
-
- 2 edits in trunk/Tools
jsonchecker.py validate_string uses Python 2 basestring type instead of Python 2/3 str type
https://bugs.webkit.org/show_bug.cgi?id=224978
Patch by Tyler Wilcock <Tyler Wilcock> on 2021-04-25
Reviewed by Darin Adler.
validate_string uses the Python 2 basestring type instead of the Python 2/3
str type. This causes the check to exit early the first time it validates
a string with this error:
name 'basestring' is not defined
This resulted in jsonchecker not checking the file beyond the first
string validation.
I believe this caused jsonchecker to miss a bug in one of my previous
patches in which I put the "settings-flag" property in the wrong
place:
https://bugs.webkit.org/show_bug.cgi?id=224718#c20
- Scripts/webkitpy/style/checkers/jsonchecker.py:
(JSONCSSPropertiesChecker.validate_string):
validate_string with Python 2 / 3 str type instead of Python 2
basestring.