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.
Apr 24, 2021:
- 10:59 PM Changeset in webkit [276563] by
-
- 4 edits in trunk/Source/WebCore
Deploy Ref/RefPtr in DeleteSelectionCommand
https://bugs.webkit.org/show_bug.cgi?id=225028
Reviewed by Wenson Hsieh.
Deployed smart pointers in DeleteSelectionCommand.
Also deployed ScriptDisallowedScope around the code which accesses the render tree.
No new tests since there should be no observable behavioral differences.
- editing/DeleteSelectionCommand.cpp:
(WebCore::isTableRowEmpty):
(WebCore::isSpecialHTMLElement): Moved from Editing.cpp.
(WebCore::firstInSpecialElement): Ditto.
(WebCore::lastInSpecialElement): Ditto.
(WebCore::positionBeforeContainingSpecialElement): Ditto. Now returns a pair instead of returning
Position and "returning" the special element via an out argument.
(WebCore::positionAfterContainingSpecialElement): Ditto.
(WebCore::DeleteSelectionCommand::initializeStartEnd):
(WebCore::DeleteSelectionCommand::initializePositionData):
(WebCore::DeleteSelectionCommand::handleSpecialCaseBRDelete):
(WebCore::firstEditablePositionInNode):
(WebCore::DeleteSelectionCommand::insertBlockPlaceholderForTableCellIfNeeded):
(WebCore::DeleteSelectionCommand::removeNode):
(WebCore::DeleteSelectionCommand::handleGeneralDelete):
(WebCore::DeleteSelectionCommand::mergeParagraphs):
(WebCore::DeleteSelectionCommand::removePreviouslySelectedEmptyTableRows):
(WebCore::DeleteSelectionCommand::originalStringForAutocorrectionAtBeginningOfSelection):
(WebCore::DeleteSelectionCommand::doApply):
- editing/Editing.cpp:
(WebCore::isRenderedTable): Return false when the node is not a HTMLElement for consistency.
(WebCore::isSpecialHTMLElement): Moved to DeleteSelectionCommand.cpp.
(WebCore::firstInSpecialElement): Ditto.
(WebCore::lastInSpecialElement): Ditto.
(WebCore::positionBeforeContainingSpecialElement): Ditto.
(WebCore::positionAfterContainingSpecialElement): Ditto.
- editing/Editing.h:
- 7:12 PM Changeset in webkit [276562] by
-
- 15 edits5 adds in trunk
Changing the source of a model element with clipping applied does not update the model
https://bugs.webkit.org/show_bug.cgi?id=224917
Reviewed by Simon Fraser.
Source/WebCore:
Tests: model-element/model-element-contents-layer-updates-with-clipping.html
model-element/model-element-contents-layer-updates.html
Previously, a <model> with a contents clipping layer (e.g. border-radius)
would not reparent its contents layer in the right place when setContentsToModel
was called again (because the source changed), leaving the old model
contents layer in place.
- platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateSublayerList):
Ensure that updateSublayerList always parents contentsLayer in one of its two homes:
under contentsClippingLayer, if it exists; otherwise, directly under the primary layer.
(WebCore::GraphicsLayerCA::setContentsToModel):
Drive-by fix a bug revealed by the tests for this patch: when swapping out the
contents layer in setContentsToModel, we also need to mark ContentsRectsChanged,
or the new contents layer will not get its bounds set during the subsequent flush.
(WebCore::GraphicsLayerCA::setContentsToPlatformLayer):
Remove special-case code that was added to fix this bug just for setContentsToPlatformLayer;
this case is now correctly handled for all contents layers by updateSublayerList.
(WebCore::GraphicsLayerCA::dumpInnerLayer const):
- platform/graphics/GraphicsLayerClient.h:
- platform/graphics/ca/PlatformCALayer.cpp:
(WebCore::PlatformCALayer::dumpAdditionalProperties):
- platform/graphics/ca/PlatformCALayer.h:
- testing/Internals.cpp:
(WebCore::toPlatformLayerTreeFlags):
- testing/Internals.h:
- testing/Internals.idl:
Add a bit to platformLayerTreeAsText() that makes PlatformCALayerRemoteModelHosting
dump the size of the model that it is hosting, which is used in the test for this bug.
Remove the IncludeOpacity bit since we can just always log opacity if it's not the default.
Source/WebKit:
- WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteModelHosting.h:
- WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteModelHosting.mm:
(WebKit::PlatformCALayerRemoteModelHosting::dumpAdditionalProperties):
Add a bit to platformLayerTreeAsText() that makes PlatformCALayerRemoteModelHosting
dump the size of the model that it is hosting, which is used in the test for this bug.
LayoutTests:
- model-element/model-element-contents-layer-updates-expected.txt: Added.
- model-element/model-element-contents-layer-updates-with-clipping-expected.txt: Added.
- model-element/model-element-contents-layer-updates-with-clipping.html: Added.
- model-element/model-element-contents-layer-updates.html: Added.
- model-element/resources/cube.usdz: Added.
- platform/ios-wk2/TestExpectations:
- platform/mac/TestExpectations:
Add tests that ensure that adding a <model> with one source, then changing
it to another, correctly updates the content layer. Test this both
with and without clipping (the without-clipping case passed before this change,
with-clipping failed).
These tests only work on Cocoa ports with UI-side compositing enabled
because they depend on the PlatformCALayer subclass holding on to the model
data (and logging its size) in order to distinguish between the two models.
- 5:50 PM Changeset in webkit [276561] by
-
- 2 edits in trunk/Tools
Rename slave to worker in webkitpy - part 2
https://bugs.webkit.org/show_bug.cgi?id=224988
Reviewed by Jonathan Bedard.
- Scripts/webkitpy/common/system/crashlogs_unittest.py:
- 5:47 PM Changeset in webkit [276560] by
-
- 1 copy in tags/Safari-611.2.5
Tag Safari-611.2.5.
- 5:39 PM Changeset in webkit [276559] by
-
- 8 edits in trunk/Tools
Add an option to not enable all experimental features in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=224958
Reviewed by Tim Horton.
Added --no-enable-all-experimental-features to run-webkit-tests and WebKitTestRunner.
It causes a crash in DumpRenderTree for now. We should rectify this in the future
when we align the behaviors of WebKitTestRunner and DumpRenderTree.
- Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args): Added --no-enable-all-experimental-features.
- Scripts/webkitpy/port/driver.py:
(Driver.cmd_line): Pass along the option to WebKitTestRunner.
- WebKitTestRunner/Options.cpp:
(WTR::handleOptionNoEnableAllExperimentalFeatures): Added.
(WTR::OptionsHandler::OptionsHandler): Added --no-enable-all-experimental-features.
- WebKitTestRunner/Options.h:
- WebKitTestRunner/TestController.cpp:
(WTR::TestController::initialize):
(WTR::TestController::resetPreferencesToConsistentValues):
- WebKitTestRunner/TestController.h:
- 3:31 PM Changeset in webkit [276558] by
-
- 4 edits2 adds in trunk
Crash in BreakBlockquoteCommand::doApply()
https://bugs.webkit.org/show_bug.cgi?id=224941
Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2021-04-24
Reviewed by Ryosuke Niwa.
Source/WebCore:
Despite assertions to the contrary, it is possible for there not to be any node
to move into the new blockquote in BreakBlockquoteCommand::doApply() as a result
of layout updates, so remove the assertions and handle this case.
Test: editing/pasteboard/paste-as-quotation-then-paste-crash.html
- editing/BreakBlockquoteCommand.cpp:
(WebCore::BreakBlockquoteCommand::doApply):
LayoutTests:
Add test for this crash, running only on Release for now.
Thanks to Tuomas Karkkainen for its basic structure.
- TestExpectations:
- editing/pasteboard/paste-as-quotation-then-paste-crash-expected.txt: Added.
- editing/pasteboard/paste-as-quotation-then-paste-crash.html: Added.
- 2:29 PM Changeset in webkit [276557] by
-
- 8 edits in branches/safari-611-branch/Source
Versioning.
WebKit-7611.2.5
- 2:21 PM Changeset in webkit [276556] by
-
- 8 edits in branches/safari-611-branch/Source/WebKit
Reland r275846 with Unreviewed crash fix. rdar://77106929
Corrects crash due to bad merge.
- 2:14 PM Changeset in webkit [276555] by
-
- 8 edits in branches/safari-611-branch/Source/WebKit
Revert "Re-land Cherry-pick r275846. rdar://problem/76727548"
This reverts commit r276398.
- 12:36 PM Changeset in webkit [276554] by
-
- 11 edits in trunk
Improve parsing and computed style of the rotate CSS property
https://bugs.webkit.org/show_bug.cgi?id=225019
Reviewed by Dean Jackson.
LayoutTests/imported/w3c:
Mark 2 WPT progressions and add some new parsing WPT tests for rotate.
- web-platform-tests/css/css-transforms/animation/rotate-composition-expected.txt: We don't support additive interpolation,
the FAIL result is most likely a test that passed without proper support for the feature which now fails due to lack of
support for this feature.
- web-platform-tests/css/css-transforms/parsing/rotate-parsing-valid-expected.txt:
- web-platform-tests/css/css-transforms/parsing/rotate-parsing-valid.html:
- web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:
Source/WebCore:
There were a few issues with how we parsed the rotate CSS property and how we dealt with it
when resolving the computed style.
When parsing, we required individual vector coordinates to be 1 when others were 0 for a vector
to be considered parallel with the x, y or z axis. We now support any positive value. Then, as
we create the TransformOperation from the CSSValue, we must set the type to ROTATE_3D instead
of ROTATE_Z if the z axis was specified through the CSS value. Indeed, ROTATE_Z is equivalent
to ROTATE and without setting this type to ROTATE_3D, TransformOperation::is3DOperation() would
return false.
This is important because when figuring out the computed style, we should only return an angle
without a rotation vector if TransformOperation::is3DOperation() is false. For the case where
the operation was specified in 3D, we now use the same rule used when parsing to determine
whether the rotation vector is parallel with the x, y or z axis to use the matching keywords.
- css/CSSComputedStyleDeclaration.cpp:
(WebCore::computedRotate):
- css/TransformFunctions.cpp:
(WebCore::rotateForValue):
- css/parser/CSSPropertyParser.cpp:
(WebCore::consumeRotate):
- 12:35 PM Changeset in webkit [276553] by
-
- 6 edits in trunk
Support interpolation of the background-repeat shorthand
https://bugs.webkit.org/show_bug.cgi?id=225016
Reviewed by Dean Jackson.
LayoutTests/imported/w3c:
Mark 10 WPT progressions.
- web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:
Source/WebCore:
- animation/CSSPropertyAnimation.cpp:
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
- 12:33 PM Changeset in webkit [276552] by
-
- 7 edits in trunk
Fix interpolation of the clip CSS property
https://bugs.webkit.org/show_bug.cgi?id=225017
Reviewed by Dean Jackson.
LayoutTests/imported/w3c:
Mark 13 WPT progressions.
- web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:
- web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt:
Source/WebCore:
While we interpolated the clip value correctly, we wouldn't set the RenderStyle bit that
indicates that there is a non-auto value in the first place. With a new dedicated wrapper,
we can ensure we set the bit correctly as we blend, and that we use discrete interpolation
if both the from and to values aren't auto.
- animation/CSSPropertyAnimation.cpp:
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
- 12:32 PM Changeset in webkit [276551] by
-
- 5 edits in trunk
Computed style for the translate CSS property should use px for the z value
https://bugs.webkit.org/show_bug.cgi?id=225018
Reviewed by Dean Jackson.
LayoutTests/imported/w3c:
Mark a single WPT progression.
- web-platform-tests/css/css-transforms/animation/translate-composition-expected.txt:
- web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:
Source/WebCore:
- css/CSSComputedStyleDeclaration.cpp:
(WebCore::computedTranslate):
- 9:02 AM Changeset in webkit [276550] by
-
- 16 edits in trunk
Refactor ValueRange from enum to enum class
https://bugs.webkit.org/show_bug.cgi?id=224981
Patch by Tyler Wilcock <Tyler Wilcock> on 2021-04-24
Reviewed by Sam Weinig.
Source/WebCore:
Refactor ValueRange from:
enum ValueRange {
ValueRangeAll,
ValueRangeNonNegative
}
to:
enum ValueRange : uint8_t {
All,
NonNegative
}
making it smaller (one byte versus four) and harder to misuse (no
auto-coercion to number types).
- animation/CSSPropertyAnimation.cpp:
(WebCore::blendFunc):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- css/CSSCalculationValue.cpp:
(WebCore::CSSCalcValue::create):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- css/CSSCalculationValue.h:
(WebCore::CSSCalcValue::createCalculationValue const):
(WebCore::CSSCalcValue::setPermittedValueRange):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- css/MediaQueryExpression.cpp:
(WebCore::consumeFirstValue):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::consumeTransformOrigin):
(WebCore::consumeLetterSpacing):
(WebCore::consumeWordSpacing):
(WebCore::consumeTabSize):
(WebCore::consumeTextSizeAdjust):
(WebCore::consumeFontSize):
(WebCore::consumeLineHeight):
(WebCore::consumeSize):
(WebCore::consumeTextIndent):
(WebCore::consumeScrollPadding):
(WebCore::consumeMaxWidthOrHeight):
(WebCore::consumeWidthOrHeight):
(WebCore::consumeMarginOrOffset):
(WebCore::consumeClipComponent):
(WebCore::consumeLineClamp):
(WebCore::consumeHyphenateLimit):
(WebCore::consumeColumnWidth):
(WebCore::consumeGapLength):
(WebCore::consumeZoom):
(WebCore::consumeAnimationIterationCount):
(WebCore::consumeAnimationValue):
(WebCore::consumeLineWidth):
(WebCore::consumeTranslate3d):
(WebCore::consumeNumbers):
(WebCore::consumePerspective):
(WebCore::consumeTransformValue):
(WebCore::consumeTranslate):
(WebCore::consumeScale):
(WebCore::consumeRotate):
(WebCore::consumePositionLonghand):
(WebCore::consumeFlexBasis):
(WebCore::consumeKerning):
(WebCore::consumeStrokeDasharray):
(WebCore::consumeBaselineShift):
(WebCore::consumeRxOrRy):
(WebCore::consumeBorderRadiusCorner):
(WebCore::consumeTextUnderlineOffset):
(WebCore::consumeTextDecorationThickness):
(WebCore::consumeVerticalAlign):
(WebCore::consumeShapeRadius):
(WebCore::consumeBasicShapePolygon):
(WebCore::consumeRadii):
(WebCore::consumeBasicShapeInset):
(WebCore::consumeBorderImageSlice):
(WebCore::consumeBorderImageOutset):
(WebCore::consumeBorderImageWidth):
(WebCore::consumeReflect):
(WebCore::consumeBackgroundSize):
(WebCore::consumeFitContent):
(WebCore::consumeGridBreadth):
(WebCore::consumeInitialLetter):
(WebCore::consumeWebkitMarqueeIncrement):
(WebCore::consumeWebkitMarqueeRepetition):
(WebCore::consumeWebkitMarqueeSpeed):
(WebCore::consumeAspectRatio):
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::consumeBorderSpacing):
(WebCore::CSSPropertyParser::consumeFlex):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::consumeNumberOrPercentDividedBy100Raw):
(WebCore::CSSPropertyParserHelpers::CalcParser::CalcParser):
(WebCore::CSSPropertyParserHelpers::consumeNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeFontWeightNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeLengthRaw):
(WebCore::CSSPropertyParserHelpers::consumePercentRaw):
(WebCore::CSSPropertyParserHelpers::consumeAngleRaw):
(WebCore::CSSPropertyParserHelpers::consumeAngleWorkerSafe):
(WebCore::CSSPropertyParserHelpers::consumeTime):
(WebCore::CSSPropertyParserHelpers::consumePositionComponent):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradientPoint):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradient):
(WebCore::CSSPropertyParserHelpers::consumeGradientColorStops):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedRadialGradient):
(WebCore::CSSPropertyParserHelpers::consumeRadialGradient):
(WebCore::CSSPropertyParserHelpers::consumeFilterFunction):
(WebCore::CSSPropertyParserHelpers::consumeSingleShadow):
(WebCore::CSSPropertyParserHelpers::consumeFontSizeRaw):
(WebCore::CSSPropertyParserHelpers::consumeLineHeightRaw):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- css/parser/CSSPropertyParserHelpers.h:
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- css/parser/CSSPropertyParserWorkerSafe.cpp:
(WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontStretch):
(WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontStretchRange):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- page/IntersectionObserver.cpp:
(WebCore::parseRootMargin):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- platform/CalculationValue.h:
(WebCore::CalculationValue::CalculationValue):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- platform/Length.cpp:
(WebCore::convertTo100PercentMinusLength):
(WebCore::blendMixedTypes):
(WebCore::blend):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- platform/Length.h:
Refactor enum ValueRange to enum class ValueRange.
- style/StyleBuilderConverter.h:
(WebCore::Style::BuilderConverter::convertTo100PercentMinusLength):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
Tools:
ValueRange has been refactored from enum to enum class : uint8_t to
make it smaller and harder to misuse.
- TestWebKitAPI/Tests/WebCore/CalculationValue.cpp:
(TestWebKitAPI::createTestValue):
Refactor ValueRangeAll and ValueRangeNonNegative to ValueRange::All
and ValueRange::NonNegative.
- 6:42 AM Changeset in webkit [276549] by
-
- 3 edits2 adds in trunk
[RenderTreeBuilder] Subtree moving should clear the floats on all the descendants
https://bugs.webkit.org/show_bug.cgi?id=224996
<rdar://76837320>
Reviewed by Antti Koivisto.
Source/WebCore:
While moving a subtree, we invalidate the floating object list so that we don't end up with incorrectly placed floats (they'll get regenerated during the subsequent layout).
A float can be "assigned" to more than one RenderBlockFlow (e.g intruding floats). It's very common that a set of descendant RenderBlockFlow
renderers "see" the same set of floats (each RenderBlockFlow has its own list of floating objects).
Now the invalidation is based on ancestor-to-descendant direction starting with finding the outer most containing block for a particular float (see outermostBlockContainingFloatingObject)
The invalidation logic also expects no gaps in the ancestor chain e.g.
RenderBlockFlow (A) -> float X
RenderBlockFlow (B) -> float X
RenderBlockFlow (C) -> float X
if float X is assigned to both A and C, then it must be assigned to B as well.
RenderBlockFlow::removeFloatingObjects() simply removes the float from the renderer. It does not invalidate the ancestor/descendant chain.
e.g. calling B.removeFloatingObjects() would just remove float X from RenderBlockFlow (B)
RenderBlockFlow (A) -> float X
RenderBlockFlow (B)
RenderBlockFlow (C) -> float X
and any subsequent invalidation attempt would fail to clear up A or C (depending on whether it is initiated on A or C).
Test: fast/multicol/floating-boxes-moved-under-multi-column.html
- rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::moveChildren):
LayoutTests:
- fast/multicol/floating-boxes-moved-under-multi-column-expected.txt: Added.
- fast/multicol/floating-boxes-moved-under-multi-column.html: Added.
- 6:10 AM Changeset in webkit [276548] by
-
- 2 edits in trunk/Source/WebCore
[LFC] Ignore content height and width when 'contain: size' is present
https://bugs.webkit.org/show_bug.cgi?id=225013
Reviewed by Antti Koivisto.
Enable size containment for "shrink to fit width" and for "height: auto" formatting context roots.
https://www.w3.org/TR/css-contain-2/#size-containment.
- layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
- 12:41 AM Changeset in webkit [276547] by
-
- 4 edits2 adds in trunk
Move selectedOptions cache invalidation timing
https://bugs.webkit.org/show_bug.cgi?id=224894
Patch by Rob Buis <rbuis@igalia.com> on 2021-04-24
Reviewed by Ryosuke Niwa.
Source/WebCore:
Move selectedOptions cache invalidation timing out
of setSelectedState, having it in setSelectedState
can cause selectedOptions cache invalidation while
determining the cache.
Test: fast/dom/HTMLSelectElement/selected-options-item-crash.html
- html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::setSelectedState):
- html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::updateListBoxSelection):
(WebCore::HTMLSelectElement::selectOption):
(WebCore::HTMLSelectElement::deselectItemsWithoutValidation):
(WebCore::HTMLSelectElement::restoreFormControlState):
(WebCore::HTMLSelectElement::reset):
(WebCore::HTMLSelectElement::updateSelectedState):
LayoutTests:
Add test for this.
- fast/dom/HTMLSelectElement/selected-options-item-crash-expected.txt: Added.
- fast/dom/HTMLSelectElement/selected-options-item-crash.html: Added.
Apr 23, 2021:
- 11:11 PM Changeset in webkit [276546] by
-
- 2 edits in trunk/Source/WebCore
Crash in IndentOutdentCommand::outdentParagraph attempting to move a paragraph
https://bugs.webkit.org/show_bug.cgi?id=224909
Patch by Ian Gilbert <iang@apple.com> on 2021-04-23
Reviewed by Ryosuke Niwa.
Added check inside IndentOutdentCommand::outdentParagraph to ensure that inserting a
HTMLBRElement was successful before attempting to move a paragraph to that node.
- editing/IndentOutdentCommand.cpp:
(WebCore::IndentOutdentCommand::outdentParagraph):
- 5:47 PM Changeset in webkit [276545] by
-
- 2 edits in trunk/Source/WebKit
PCM: debug mode should send the second report on a 10 second delay after the first
https://bugs.webkit.org/show_bug.cgi?id=225010
<rdar://problem/77092303>
Reviewed by John Wilander.
Fix a bug in PCM debug mode where we don't set the timer for 10_s
after sending the first report for an attribution.
No new tests, this is debug mode only. Non-debug mode behavior is
covered by existing tests, and I tested debug mode manually.
- NetworkProcess/PrivateClickMeasurementManager.cpp:
(WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests):
If the attribution has been sent to only one endpoint, indicated by
a non-null laterTimeToSend value, we should set the timer to be 10
seconds if debug mode is enabled.
Also, change the interval time from 1 minute to 10 seconds, because
there was no good reason that it was 1 minute and we should be
consistent. Also 1 minute is a long time to wait during a test.
- 5:40 PM Changeset in webkit [276544] by
-
- 1 copy in tags/Safari-611.2.4
Tag Safari-611.2.4.
- 5:36 PM Changeset in webkit [276543] by
-
- 1 copy in tags/Safari-611.1.21.2.6
Tag Safari-611.1.21.2.6.
- 5:26 PM Changeset in webkit [276542] by
-
- 2 edits in branches/safari-611.1.21.2-branch/Source/JavaScriptCore
Cherry-pick r276527. rdar://problem/77092686
[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
- 5:26 PM Changeset in webkit [276541] by
-
- 8 edits in branches/safari-611.1.21.2-branch/Source
Versioning.
WebKit-7611.1.21.2.6
- 5:25 PM Changeset in webkit [276540] by
-
- 1 edit2 deletes in trunk/Tools
Delete unused buildbot.css and default.css
https://bugs.webkit.org/show_bug.cgi?id=224997
Reviewed by Alexey Proskuryakov.
- CISupport/build-webkit-org/public_html/buildbot.css: Removed.
- CISupport/build-webkit-org/public_html/default.css: Removed.
- 5:22 PM Changeset in webkit [276539] by
-
- 1 copy in tags/Safari-611.1.21.161.6
Tag Safari-611.1.21.161.6.
- 5:21 PM Changeset in webkit [276538] by
-
- 2 edits in branches/safari-611.1.21.161-branch/Source/JavaScriptCore
Cherry-pick r276527. rdar://problem/77092673
[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
- 5:21 PM Changeset in webkit [276537] by
-
- 2 edits in branches/safari-611.1.21.161-branch/Source/JavaScriptCore
Cherry-pick r276524. rdar://problem/77092702
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
- 5:18 PM Changeset in webkit [276536] by
-
- 1 edit2 copies1 add1 delete in trunk/Websites/bugs.webkit.org
Bugzilla needs to linkify identifiers (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=224312
<rdar://problem/75845629>
Reviewed by Dewei Zhu.
- extensions/Commits: Moved from Trac.
- extensions/Commits/Config.pm: Changed Plugin name.
- extensions/Commits/Extension.pm: Ditto.
(_replace_revision): Use commit.webkit.org instead of trac.
- extensions/Trac: Moved to Commits.
- 5:18 PM Changeset in webkit [276535] by
-
- 8 edits in branches/safari-611.1.21.161-branch/Source
Versioning.
WebKit-7611.1.21.161.6
- 5:16 PM Changeset in webkit [276534] by
-
- 1 copy in tags/Safari-611.1.21.0.14
Tag Safari-611.1.21.0.14.
- 5:13 PM Changeset in webkit [276533] by
-
- 2 edits in branches/safari-611.1.21.0-branch/Source/JavaScriptCore
Cherry-pick r276527. rdar://problem/77092655
[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
- 5:13 PM Changeset in webkit [276532] by
-
- 2 edits in branches/safari-611.1.21.0-branch/Source/JavaScriptCore
Cherry-pick r276524. rdar://problem/77092695
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
- 5:08 PM Changeset in webkit [276531] by
-
- 8 edits in branches/safari-611.1.21.0-branch/Source
Versioning.
WebKit-7611.1.21.0.14
- 4:45 PM Changeset in webkit [276530] by
-
- 2 edits in trunk/Source/WebCore
Crash in constructCustomElementSynchronously
https://bugs.webkit.org/show_bug.cgi?id=224992
<rdar://66988026>
Reviewed by Tadeu Zagallo.
Exit early when the global object is nullptr although this shouldn't happen.
No new tests since we have no reproductions.
- bindings/js/JSCustomElementInterface.cpp:
(WebCore::JSCustomElementInterface::tryToConstructCustomElement): Added a null check.
- 4:38 PM Changeset in webkit [276529] by
-
- 2 edits in branches/safari-611-branch/Source/JavaScriptCore
Cherry-pick r276527. rdar://problem/77091667
[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
- 4:21 PM Changeset in webkit [276528] by
-
- 3 edits in trunk/Source/WebCore
Add additional guards around USE_ANGLE
https://bugs.webkit.org/show_bug.cgi?id=225001
Reviewed by Fujii Hironori.
When USE(ANGLE) initializeOpenGLShims isn't used or available.
When USE(ANGLE) the ANGLE shader compiler isn't needed.
- platform/graphics/GLContext.cpp:
(WebCore::initializeOpenGLShimsIfNeeded):
- platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:
- 4:06 PM Changeset in webkit [276527] by
-
- 2 edits in trunk/Source/JavaScriptCore
[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):
- 4:01 PM Changeset in webkit [276526] by
-
- 5 edits1 copy2 adds in trunk/LayoutTests
http/tests/security/referrer-policy-header.html is slow
https://bugs.webkit.org/show_bug.cgi?id=224998
Reviewed by Geoffrey Garen.
The test is a flaky timeout on the bots because it is slow. On my machine, it takes 17 seconds to run
it with a debug build. To speed things up, I am now running the subtests in parallel instead of
sequentially. I also split the test in 2 (regular response vs multipart response). Each tests now takes
about ~5 seconds to run on my machine.
- http/tests/security/referrer-policy-header-expected.txt:
- http/tests/security/referrer-policy-header-multipart-expected.txt: Added.
- http/tests/security/referrer-policy-header-multipart.html: Added.
- http/tests/security/referrer-policy-header-test.js: Copied from LayoutTests/http/tests/security/referrer-policy-header.html.
(printResults):
(onmessage):
(runTests):
- http/tests/security/referrer-policy-header.html:
- http/tests/security/resources/postReferrer.py:
- http/tests/security/resources/serve-referrer-policy-and-test.py:
- 3:46 PM Changeset in webkit [276525] by
-
- 2 edits in branches/safari-611-branch/Source/JavaScriptCore
Cherry-pick r276524. rdar://problem/77089783
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
- 3:14 PM Changeset in webkit [276524] by
-
- 2 edits in trunk/Source/JavaScriptCore
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:
- 3:06 PM Changeset in webkit [276523] by
-
- 8 edits in trunk/Source/WebKit
Unreviewed, reverting r275562.
https://bugs.webkit.org/show_bug.cgi?id=225002
Causes issues in iOS contextmenu animations and interactions
with other popovers
Reverted changeset:
"[iOS] contextmenu hints can be clipped by the WKWebView"
https://bugs.webkit.org/show_bug.cgi?id=224204
https://trac.webkit.org/changeset/275562
- 3:04 PM Changeset in webkit [276522] by
-
- 2 edits in trunk/Source/WebKit
REGRESSION (r273154): fast/forms/ios/repeatedly-focus-offscreen-select.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=224985
<rdar://problem/77042177>
Reviewed by Wenson Hsieh.
The test is failing after r273154, which made <select> elements present
a UIMenu rather than a popover. The old logic ensured popovers were not
presented when the <select> element was offscreen (see r265117 for more
information on why that behavior was necessary), but the new
presentation omitted that logic.
To achieve the correct behavior, and fix the failing test, <select>
menus should not be presented when the element is offscreen.
- UIProcess/ios/forms/WKFormSelectPicker.mm:
(-[WKSelectPicker controlBeginEditing]):
- 3:00 PM Changeset in webkit [276521] by
-
- 7 edits in trunk
Not computing image aspect ratios from width and height attributes for lazy loaded images
https://bugs.webkit.org/show_bug.cgi?id=224197
Reviewed by Darin Adler.
LayoutTests/imported/w3c:
The test cases for error images and images without src in img-aspect-ratio.html are passed. This patch
doesn't change the behavior of the original aspect ratio case, so it's failed like before.
- web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio-expected.txt:
Source/WebCore:
This patch supports error images and lazy loaded images (without src attribute) to compute
implicit aspect ratios from width and height attributes. Refactor the code a bit. Added
intrinsicAspectRatioFromWidthHeight() to compute aspect ratio from width and height attributes when
the object is allowed to which is decided by canMapWidthHeightToAspectRatio().
Remove!downcast<RenderImage>(*this).cachedImage()constraint, so that images without src attributes
is allowed. As to error images, compute the aspect ratio when the image shouldDisplayBrokenImageIcon().
- rendering/RenderImage.cpp:
(WebCore::RenderImage::canMapWidthHeightToAspectRatio const): To indicate that the object is allowed
to compute aspect ratio from width and height attributes.
(WebCore::RenderImage::computeIntrinsicRatioInformation const): When shouldDisplayBrokenImageIcon(),
try to compute the aspect ratio from attributes width and height.
- rendering/RenderImage.h:
- rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::intrinsicAspectRatioFromWidthHeight const): Compute the aspect ratio from attributes width and height.
(WebCore::RenderReplaced::computeIntrinsicRatioInformation const):
- rendering/RenderReplaced.h:
(WebCore::RenderReplaced::canMapWidthHeightToAspectRatio const): Ditto.
- 2:53 PM Changeset in webkit [276520] by
-
- 3 edits in trunk/LayoutTests
imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test.html is a flakey crash and failure
https://bugs.webkit.org/show_bug.cgi?id=222750
Unreviewed test gardening.
Move expectation to a more general location, this isn't limited to macOS.
- TestExpectations:
- platform/mac/TestExpectations:
- 2:38 PM Changeset in webkit [276519] by
-
- 2 edits in trunk/Source/WebKit
Unreviewed, reverting r276451.
https://bugs.webkit.org/show_bug.cgi?id=224999
Broke perf testing
Reverted changeset:
"[iOS] Update sandbox message filter syntax"
https://bugs.webkit.org/show_bug.cgi?id=223384
https://trac.webkit.org/changeset/276451
- 2:32 PM Changeset in webkit [276518] by
-
- 1 edit in branches/safari-611-branch/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp
Unreviewed build fix. rdar://problem/76963040
WebKit2/UIProcess/AuxiliaryProcessProxy.cpp:163:10: error: use of undeclared identifier 'isMainRunLoop'
- 2:29 PM Changeset in webkit [276517] by
-
- 13 edits in branches/safari-611-branch/Source
Cherry-pick r276324. rdar://problem/77086404
FullGCActivityCallback should use the percentage of pages uncompressed in RAM to determine deferral.
https://bugs.webkit.org/show_bug.cgi?id=224817
Reviewed by Filip Pizlo.
Source/JavaScriptCore:
Right now we try to determine if too many pages are paged out by
dereferencing them and bailing out of the GC if we go over a
deadline. While this works if the only goal is to avoid causing
extensive thrashing on spinny disks (HDD), it doesn't prevent
thrashing when access to disk is fast (e.g. SSD). This is because
on fast disks the proportional time to load the memory from disk
is much lower. Additionally, on SSDs in particular we don't want
to load the pages into RAM then bail as that will force a
different page onto disk, increasing wear.
This patch switches to asking the OS if each MarkedBlock is paged
out. Then if we are over a threshold we wait until we would have
GC'd anyway. This patch uses the (maxVMGrowthFactor - 1) as the
percentage of "slow" pages (paged out or compressed) needed to
defer the GC. The idea behind that threshold is that if we add
that many pages then the same number of pages would be forced
out of RAM for us to do a GC anyway (in the limit).
- heap/BlockDirectory.cpp: (JSC::BlockDirectory::updatePercentageOfPagedOutPages): (JSC::BlockDirectory::isPagedOut): Deleted.
- heap/BlockDirectory.h:
- heap/FullGCActivityCallback.cpp: (JSC::FullGCActivityCallback::doCollection):
- heap/Heap.cpp: (JSC::Heap::isPagedOut):
- heap/Heap.h:
- heap/MarkedSpace.cpp: (JSC::MarkedSpace::isPagedOut):
- heap/MarkedSpace.h:
- runtime/OptionsList.h:
Source/WebKit:
Add mincore to the acceptable syscall list.
- WebProcess/com.apple.WebProcess.sb.in:
Source/WTF:
Add a noexcept flavor of FunctionTraits. On Linux mincore (and probably other syscalls) are marked noexcept so the existing overloads don't work.
- wtf/FunctionTraits.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@276324 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 2:01 PM Changeset in webkit [276516] by
-
- 2 edits in trunk/Source/JavaScriptCore
[JSC][Win] callOperationNoExceptionCheck() also needs to support operations that return SlowPathReturnType
https://bugs.webkit.org/show_bug.cgi?id=224964
Reviewed by Yusuke Suzuki.
r229989 (Bug 183655) added the x64 Windows support only for
callOperation(), but for callOperationNoExceptionCheck().
callOperationNoExceptionCheck() also needs the x64 Windows
support.
This change is a preparation for Bug 224920 that is going to use
callOperationNoExceptionCheck instead of callOperation.
- jit/JIT.h:
(callOperation): Rewrote by using 'if constexpr' instead of SFINAE.
(callOperationNoExceptionCheck): Added a new implementation for
x64 Windows based on callOperation.
- 1:11 PM Changeset in webkit [276515] by
-
- 3 edits in trunk/Source/WebKit
[iOS] GPU Process sandbox lacks IOMobileFramebufferUserClient method filter
https://bugs.webkit.org/show_bug.cgi?id=224956
<rdar://problem/68227590>
Reviewed by Per Arne Vollan.
This patch updates the GPU process sandbox to match the method filter used in the WebContent process
so that we will retain consistent protections when activating the GPU Process. These are the same rules
governing access to this resource when the GPU process is disabled, so should not create a change in behavior.
We also remove unneeded telemetry to reduce messaging burden and avoid performance issues.
- Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
- 12:53 PM Changeset in webkit [276514] by
-
- 2 edits in trunk/Source/WebKit
Web Inspector: [Cocoa] WKInspectorResourceURLSchemeHandler needs to serialize cleanup actions
https://bugs.webkit.org/show_bug.cgi?id=224986
<rdar://76768454>
Reviewed by Devin Rousso.
- UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:
(-[WKInspectorResourceURLSchemeHandler webView:startURLSchemeTask:]):
Do cleanup on the main queue so that it can be serialized with reads.
(-[WKInspectorResourceURLSchemeHandler webView:stopURLSchemeTask:]):
Ensure that all removals from the map are processed before doing a lookup.
- 12:51 PM Changeset in webkit [276513] by
-
- 6 edits in trunk/Source/WebCore
Remove virtual function calls in GraphicsLayer destructors
https://bugs.webkit.org/show_bug.cgi?id=180232
Reviewed by Adrian Perez de Castro.
I notice that ~CoordinatedGraphicsLayer makes a virtual function call to
GraphicsLayer::willBeDestroyed, which makes a virtual function call to
CoordinatedGraphicsLayer::removeFromParent. I think that the functions are being called as
intended, because ~CoordinatedGraphicsLayer has not yet been fully destroyed. However, I'm
reminded of Effective C++ item #9: Never call virtual functions during construction or
destruction ("because such calls will never go to a more derived class than that of the
currently executing constructor or destructor"). This code is almost certain to break if
anyone tries in the future to subclass any of the existing subclasses of GraphicsLayer, so
let's refactor it a bit. This doesn't fix anything, but my hope is that it will make the
code a bit harder to break, and not the opposite.
The main risk here is that some reordering of operations is necessary. The derived class
portion of removeFromParent must now be executed before willBeDestroyed. It can't happen
after, because parent would already be unset by that point. It's hard to be certain that
this won't break anything, but I think it should be fine.
- platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::willBeDestroyed):
(WebCore::GraphicsLayer::removeFromParentInternal):
(WebCore::GraphicsLayer::removeFromParent):
- platform/graphics/GraphicsLayer.h:
- platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::~GraphicsLayerCA):
(WebCore::GraphicsLayerCA::willBeDestroyed): Deleted.
- platform/graphics/ca/GraphicsLayerCA.h:
- platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
- 12:34 PM Changeset in webkit [276512] by
-
- 4 edits2 adds in trunk/Tools
Add a conftest.py to run existing webkitpy tests in pytest
https://bugs.webkit.org/show_bug.cgi?id=224687
Reviewed by Jonathan Bedard.
- Scripts/webkitpy/common/system/executive_unittest.py:
(ExecutiveTest.serial_test_run_in_parallel): Deal with the fact that pytest
running the tests might be not be the same version as the autoinstalled version,
and not API compatible.
- Scripts/webkitpy/conftest.py: Added.
(pytest_configure): Define the markers the plugins in conftest use
(pytest_addoption): Add --run-integration to allow them to be disabled by default.
(pytest_pycollect_makeitem): Rename serial/integration tests so pytest finds them.
(pytest_collection_modifyitems): Mark tests as skipped when needed per the above.
- Scripts/webkitpy/pytest.ini: Added.
- Scripts/webkitpy/test/main_unittest.py:
(TestStubs): Stop these from being picked up by pytest as tests.
- Scripts/webkitpy/test/markers.py: Fix this so pytest is technically optional,
even though it is always present because of the autoinstalled copy.
- 12:21 PM Changeset in webkit [276511] by
-
- 1 edit in branches/safari-611-branch/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
Unreviewed build fix.
WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:127:17: error: use of undeclared identifier 'defaultProcess'
- 12:06 PM Changeset in webkit [276510] by
-
- 10 edits in trunk/Source
Remove decoder memory allocations based on untrusted data (sizes) in the stream; related changes
https://bugs.webkit.org/show_bug.cgi?id=224984
Reviewed by Sam Weinig.
Source/WebCore:
- platform/network/cf/CertificateInfoCFNet.cpp:
(WTF::Persistence::decodeCFData): Removed unneeded check for zero size. Removed code that
locally allocates a vector before bufferIsLargeEnoughToContain is called. Instead use
bufferPointerForDirectRead, which makes does the buffer size check, and pass the pointer
directly to CFDataCreate.
Source/WebKit:
- Platform/IPC/ArgumentCoders.h: Remove the calls to
HashMap::reserveInitialCapacity and HashSet::reserveInitialCapacity, based
on number read in from the decoder. This means there will be more wasted
memory in these HashMap and HashSet objects, so we have to test to make
sure this does not create a performance problem. But without this check,
we are trying to allocate memory based on an unstrusted size.
- Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<RefPtr<ApplePayError>>::encode): Removed the coder
for a Vector of these RefPtr, replaced it with a coder for an individual one,
allowing the Vector ArgumentCoder template to handle vector size and construction.
One benefit is that this adds in a shrinkToFit and prevents us from making any
separate mistake about pre-sizing the Vector here since we use shared code.
(IPC::ArgumentCoder<RefPtr<ApplePayError>>::decode): Ditto.
- Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<RefPtr<SecurityOrigin>>::encode): Ditto.
(IPC::ArgumentCoder<RefPtr<SecurityOrigin>>::decode): Ditto.
(IPC::ArgumentCoder<WebCore::CDMInstanceSession::KeyStatusVector>::encode):
(IPC::ArgumentCoder<WebCore::CDMInstanceSession::KeyStatusVector>::decode):
Removed unnecessary specialization for the KeyStatusVector. There is already
an ArgumentCoder for Vector, for std::pair, for Ref<SharedBuffer>, and for
enumerations like CDMKeyStatus, so there's no need to have a specialized
coder for this. This function that we are removing had a call to
reserveInitialCapacity, but the Vector ArgumentCoder template does not.
- Shared/WebCoreArgumentCoders.h: Replaced the
ArgumentCoder<Vector<RefPtr<WebCore::ApplePayError>>> specialization with
ArgumentCoder<RefPtr<WebCore::ApplePayError>>. Removed the
ArgumentCoder<WebCore::CDMInstanceSession::KeyStatusVector> specialization.
Source/WTF:
- wtf/persistence/PersistentDecoder.cpp:
(WTF::Persistence::Decoder::bufferPointerForDirectRead): Added.
(WTF::Persistence::Decoder::decodeFixedLengthData): Refactor to use bufferPointerForDirectRead.
- wtf/persistence/PersistentDecoder.h: Added bufferPointerForDirectRead function for use in the
rare cases where we want to read directly out of the decoder buffer, rather than writing to a
passed-in pointer. Also did a small refactoring of bufferIsLargeEnoughToContain to use &&
rather than an if statement.
- 11:57 AM Changeset in webkit [276509] by
-
- 2 edits in trunk/Source/WebKit
Set proper network logging level for full web browsers
https://bugs.webkit.org/show_bug.cgi?id=224982
<rdar://problem/76903650>
Reviewed by Brent Fulgham.
Full web browsers have different low-level network logging requirements
for ephemeral sessions.
No new tests. There's no automated way to test if network level logs
show up. I tested that logging is correct for web browser and non web
browser apps manually.
- NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::configurationForSessionID):
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
- 11:54 AM Changeset in webkit [276508] by
-
- 2 edits in trunk/LayoutTests
[macOS] imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test.html is a flakey crash and failure
https://bugs.webkit.org/show_bug.cgi?id=222750
Unreviewed test gardening.
- platform/mac/TestExpectations:
- 11:15 AM Changeset in webkit [276507] by
-
- 3 edits in trunk/Source/ThirdParty/ANGLE
Unreviewed, reverting r276190.
broke a test internally.
Reverted changeset:
"Metal-ANGLE: Shared memory texture tests failing in iOS
Simulator"
https://bugs.webkit.org/show_bug.cgi?id=222685
https://commits.webkit.org/r276190
- 10:44 AM Changeset in webkit [276506] by
-
- 4 edits in trunk/Source
Disable GPUProcess on shipping iOS
https://bugs.webkit.org/show_bug.cgi?id=224897
Reviewed by Eric Carlson.
Source/WebKit:
- Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultUseGPUProcessForCanvasRenderingEnabled):
(WebKit::defaultUseGPUProcessForDOMRenderingEnabled):
(WebKit::defaultUseGPUProcessForMediaEnabled):
(WebKit::defaultUseGPUProcessForWebGLEnabled):
(WebKit::defaultCaptureAudioInGPUProcessEnabled):
(WebKit::defaultCaptureVideoInGPUProcessEnabled):
(WebKit::defaultWebRTCCodecsInGPUProcess):
Source/WTF:
- wtf/PlatformEnableCocoa.h:
- 10:31 AM Changeset in webkit [276505] by
-
- 2 edits in trunk/Tools
Make report-non-inclusive-language ignore .db files
https://bugs.webkit.org/show_bug.cgi?id=224979
Reviewed by Darin Adler.
- Scripts/report-non-inclusive-language:
- 10:21 AM Changeset in webkit [276504] by
-
- 7 edits in trunk
Fix KVO for camera/microphone capture state WKWebView API
https://bugs.webkit.org/show_bug.cgi?id=224922
<rdar://problem/77008199>
Reviewed by Eric Carlson.
Source/WebKit:
Add missing willChange observer call and migrate keys to API keys.
Covered by API test.
- UIProcess/Cocoa/PageClientImplCocoa.h:
- UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::microphoneCaptureWillChange):
(WebKit::PageClientImplCocoa::cameraCaptureWillChange):
(WebKit::PageClientImplCocoa::microphoneCaptureChanged):
(WebKit::PageClientImplCocoa::cameraCaptureChanged):
- UIProcess/PageClient.h:
(WebKit::PageClient::microphoneCaptureWillChange):
(WebKit::PageClient::cameraCaptureWillChange):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateReportedMediaCaptureState):
Tools:
Add tests for capture state API.
- TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:
(-[MediaCaptureObserver observeValueForKeyPath:ofObject:change:context:]):
(TestWebKitAPI::waitUntilCameraState):
(TestWebKitAPI::waitUntilMicrophoneState):
(TestWebKitAPI::TEST):
- 10:04 AM Changeset in webkit [276503] by
-
- 1 edit in branches/safari-611-branch/Source/WebCore/layout/inlineformatting/InlineContentBreaker.cpp
Apply patch. rdar://problem/76963029
- 10:00 AM WebKitGTK/2.32.x edited by
- (diff)
- 9:55 AM Changeset in webkit [276502] by
-
- 25 edits in trunk/Source
Improve our constructDeletedValue() template specializations
https://bugs.webkit.org/show_bug.cgi?id=224889
Reviewed by Darin Adler.
Source/WebCore:
Improve our constructDeletedValue() template specializations and make them more consistent:
- Use placement-new instead of object assignment since we don't want/need to destroy the existing object (since it is uninitialized).
- Do as little initialization as possible for performance reasons.
- Modules/indexeddb/IDBKeyData.cpp:
(WebCore::IDBKeyData::deletedValue): Deleted.
- Modules/indexeddb/IDBKeyData.h:
(WebCore::IDBKeyDataHashTraits::constructDeletedValue):
(WebCore::IDBKeyDataHashTraits::isDeletedValue):
(WebCore::IDBKeyData::isDeletedValue const): Deleted.
- Modules/indexeddb/shared/IDBResourceIdentifier.cpp:
(WebCore::IDBResourceIdentifier::deletedValue): Deleted.
(WebCore::IDBResourceIdentifier::isHashTableDeletedValue const): Deleted.
- Modules/indexeddb/shared/IDBResourceIdentifier.h:
(WebCore::IDBResourceIdentifierHashTraits::constructDeletedValue):
(WebCore::IDBResourceIdentifierHashTraits::isDeletedValue):
- dom/MessagePortIdentifier.h:
(WTF::HashTraits<WebCore::MessagePortIdentifier>::constructDeletedValue):
(WTF::HashTraits<WebCore::MessagePortIdentifier>::isDeletedValue):
- history/BackForwardItemIdentifier.h:
(WTF::HashTraits<WebCore::BackForwardItemIdentifier>::constructDeletedValue):
(WTF::HashTraits<WebCore::BackForwardItemIdentifier>::isDeletedValue):
- layout/LayoutUnits.h:
(WTF::HashTraits<WebCore::Layout::SlotPosition>::constructDeletedValue):
(WTF::HashTraits<WebCore::Layout::SlotPosition>::isDeletedValue):
- loader/PrivateClickMeasurement.h:
(WebCore::PrivateClickMeasurement::AttributionDestinationSite::matches const):
(WTF::HashTraits<WebCore::PrivateClickMeasurement::SourceSite>::constructDeletedValue):
(WTF::HashTraits<WebCore::PrivateClickMeasurement::SourceSite>::isDeletedValue):
(WTF::HashTraits<WebCore::PrivateClickMeasurement::AttributionDestinationSite>::constructDeletedValue):
(WTF::HashTraits<WebCore::PrivateClickMeasurement::AttributionDestinationSite>::isDeletedValue):
(WebCore::PrivateClickMeasurement::SourceSite::isHashTableDeletedValue const): Deleted.
(WebCore::PrivateClickMeasurement::SourceSite::deletedValue): Deleted.
(WebCore::PrivateClickMeasurement::SourceSite::constructDeletedValue): Deleted.
(WebCore::PrivateClickMeasurement::SourceSite::deleteValue): Deleted.
(WebCore::PrivateClickMeasurement::SourceSite::isDeletedValue const): Deleted.
(WebCore::PrivateClickMeasurement::AttributionDestinationSite::isHashTableDeletedValue const): Deleted.
(WebCore::PrivateClickMeasurement::AttributionDestinationSite::deletedValue): Deleted.
(WebCore::PrivateClickMeasurement::AttributionDestinationSite::constructDeletedValue): Deleted.
(WebCore::PrivateClickMeasurement::AttributionDestinationSite::deleteValue): Deleted.
(WebCore::PrivateClickMeasurement::AttributionDestinationSite::isDeletedValue const): Deleted.
- page/ClientOrigin.h:
(WTF::HashTraits<WebCore::ClientOrigin>::constructDeletedValue):
- page/GlobalWindowIdentifier.h:
(WTF::HashTraits<WebCore::GlobalWindowIdentifier>::constructDeletedValue):
(WTF::HashTraits<WebCore::GlobalWindowIdentifier>::isDeletedValue):
- platform/Cookie.h:
(WTF::HashTraits<WebCore::Cookie>::constructDeletedValue):
(WebCore::Cookie::Cookie): Deleted.
- platform/graphics/FontCache.cpp:
(WebCore::FontPlatformDataCacheKeyHashTraits::constructDeletedValue):
- platform/graphics/FontCache.h:
(WebCore::FontCascadeCacheKeyHashTraits::constructDeletedValue):
- platform/graphics/IntPointHash.h:
(WTF::HashTraits<WebCore::IntPoint>::constructDeletedValue):
(WTF::HashTraits<WebCore::IntPoint>::isDeletedValue):
- rendering/CSSValueKey.h:
(WTF::HashTraits<WebCore::CSSValueKey>::constructDeletedValue):
- workers/service/ServiceWorkerClientIdentifier.h:
(WTF::HashTraits<WebCore::ServiceWorkerClientIdentifier>::constructDeletedValue):
(WTF::HashTraits<WebCore::ServiceWorkerClientIdentifier>::isDeletedValue):
Source/WebCore/PAL:
- pal/SessionID.h:
(WTF::HashTraits<PAL::SessionID>::constructDeletedValue):
Source/WebKit:
Improve our constructDeletedValue() template specializations and make them more consistent:
- Use placement-new instead of object assignment since we don't want/need to destroy the existing object (since it is uninitialized).
- Do as little initialization as possible for performance reasons.
- NetworkProcess/cache/NetworkCache.h:
(WTF::HashTraits<WebKit::NetworkCache::GlobalFrameID>::constructDeletedValue):
(WTF::HashTraits<WebKit::NetworkCache::GlobalFrameID>::isDeletedValue):
- Platform/IPC/StringReference.h:
(WTF::HashTraits<IPC::StringReference>::constructDeletedValue):
- Shared/CallbackID.h:
(WTF::HashTraits<WebKit::CallbackID>::constructDeletedValue):
(WTF::HashTraits<WebKit::CallbackID>::isDeletedValue):
Source/WebKitLegacy/mac:
Improve our constructDeletedValue() template specializations and make them more consistent:
- Use placement-new instead of object assignment since we don't want/need to destroy the existing object (since it is uninitialized).
- Do as little initialization as possible for performance reasons.
- History/BinaryPropertyList.cpp:
(IntegerArray::integers const):
(IntegerArray::size const):
(IntegerArrayHashTraits::constructDeletedValue):
(IntegerArrayHashTraits::isDeletedValue):
(IntegerArray::markDeleted): Deleted.
(IntegerArray::isDeletedValue const): Deleted.
(IntegerArray::deletedValueSize): Deleted.
- 9:53 AM Changeset in webkit [276501] by
-
- 2 edits in branches/safari-611-branch/Source/WebKit
Cherry-pick r276482. rdar://problem/77074513
[Mac] CMBaseClass object pointers can become unaligned on x86
https://bugs.webkit.org/show_bug.cgi?id=224950
<rdar://77020922>
Reviewed by Eric Carlson.
CMBaseClass has a 4-byte version member before its 8-byte pointers on x86. Deal with this
the same way we do with other pointer-bearing, static, CM-type objects: enforce a 4-byte
packing, and prepend the struct with another 4-byte object in order to force the pointers
into 8-byte alignment.
- Shared/mac/MediaFormatReader/CoreMediaWrapped.h: (WebKit::CoreMediaWrapped<Wrapped>::vTable):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@276482 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 9:31 AM Changeset in webkit [276500] by
-
- 2 edits in trunk/Source/WebCore
[GStreamer][EME] cbcs fixes
https://bugs.webkit.org/show_bug.cgi?id=224976
Reviewed by Philippe Normand.
In cbcs you can get from qtdemux buffers without an iv_size
because it had constant_iv_size. We need to check that.
When decryption bails out because of the buffer being unencrypted,
we should TRACE so.
cbcs buffers could not include the subsample_count, we consider 0
as default.
- platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(transformInPlace):
- 9:15 AM WebKitGTK/2.32.x edited by
- (diff)
- 9:14 AM WebKitGTK/2.32.x edited by
- (diff)
- 9:12 AM WebKitGTK/2.32.x edited by
- (diff)
- 8:40 AM Changeset in webkit [276499] by
-
- 2 edits in trunk/Source/WebCore
Improve HashTableDeletedValue of ServiceWorkerRegistrationKey
https://bugs.webkit.org/show_bug.cgi?id=224975
Patch by Michael Catanzaro <Michael Catanzaro> on 2021-04-23
Reviewed by Chris Dumez.
We construct only the SecurityOriginData, no need to construct a full
ServiceWorkerRegistrationKey or URL. No behavior changes.
- workers/service/ServiceWorkerRegistrationKey.h:
(WTF::HashTraits<WebCore::ServiceWorkerRegistrationKey>::constructDeletedValue):
(WTF::HashTraits<WebCore::ServiceWorkerRegistrationKey>::isDeletedValue):
(WebCore::ServiceWorkerRegistrationKey::isHashTableDeletedValue const): Deleted.
(WebCore::ServiceWorkerRegistrationKey::ServiceWorkerRegistrationKey): Deleted.
- 8:16 AM Changeset in webkit [276498] by
-
- 8 edits in trunk/LayoutTests/imported/w3c
Import the update to "mapping attribute width and height to aspect ratio" tests from WPT
https://bugs.webkit.org/show_bug.cgi?id=224911
Reviewed by Rob Buis.
Import the update to "mapping attribute width and height to aspect ratio" tests from WPT commit 0ae0bb7cab. Split up the test cases, to make sure
each image has its own test case and won't affect testing other images.
- web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio-expected.txt:
- web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio-expected.txt:
- web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html:
- web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/picture-aspect-ratio-expected.txt:
- web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/picture-aspect-ratio.html:
- web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/resources/aspect-ratio.js:
(test_computed_style_aspect_ratio):
- web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio-expected.txt:
- 7:32 AM Changeset in webkit [276497] by
-
- 5 edits in trunk/Source
Handle rotation correctly in WebRTC GPUProcess rendering pipeline
https://bugs.webkit.org/show_bug.cgi?id=224927
<rdar://76915991>
Reviewed by Eric Carlson.
Source/WebCore:
Add a routine to update the affine transformn of the root layer.
Manually tested.
- platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.h:
- platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:
(WebCore::LocalSampleBufferDisplayLayer::updateRootLayerAffineTransform):
Source/WebKit:
Instead of updating the inner layer, update the root layer.
- GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp:
(WebKit::RemoteSampleBufferDisplayLayer::updateAffineTransform):
- 7:07 AM Changeset in webkit [276496] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed, reverting r276486.
https://bugs.webkit.org/show_bug.cgi?id=224973
broke windows build
Reverted changeset:
"[JSC][Win] callOperationNoExceptionCheck() also needs to
support operations that return SlowPathReturnType"
https://bugs.webkit.org/show_bug.cgi?id=224964
https://trac.webkit.org/changeset/276486
- 6:29 AM Changeset in webkit [276495] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed, GStreamer follow-up after r276493
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Remove spurious adoptGRef call, as
this is not transfer-full.
- 6:17 AM Changeset in webkit [276494] by
-
- 2 edits in trunk/LayoutTests
Unreviewed, GTK gardening
- platform/gtk/TestExpectations: Remove test expectation for
imported/w3c/web-platform-tests/mediacapture-fromelement/capture.html which is tracked in
the main TestExpectations already.
- 2:46 AM Changeset in webkit [276493] by
-
- 7 edits in trunk/Source/WebCore
[Media] Allow access to MediaElement id from MediaPlayerPrivate
https://bugs.webkit.org/show_bug.cgi?id=224818
Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-23
Reviewed by Xabier Rodriguez-Calvar.
A new method is added in the MediaPlayer allowing to query the client media element for its
identifier. That could be useful for accurate naming of the internal player/pipeline in the
MediaPlayerPrivate. If no specific id was set on the media element then the id is empty
string and the MediaPlayerPrivate needs to handle that by forging a unique id.
This also lead me to simplify pipeline-related code in the GStreamer player. The player can
handle only one pipeline in its entire life-time so the code handling pipeline "re-loading"
was actually never hit.
- html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::parseAttribute):
- html/HTMLMediaElement.h:
- platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::elementId const):
- platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerElementId const):
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::load):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::loadFull): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::setPipeline): Deleted.
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
- 2:43 AM Changeset in webkit [276492] by
-
- 2 edits in trunk/Source/WebCore
Do not set synchronous scrolling for layers without relevant scrolling scopes
https://bugs.webkit.org/show_bug.cgi?id=221383
Reviewed by Simon Fraser.
Fixed backgrounds could force the layer compositor to set synchronous scrolling because they're slow
to repaint. However that cannot be done if the layer's boxScrollingScope hasn't been previously updated
in RenderLayer::updateLayerPosition.
- rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateSynchronousScrollingNodes): Do not call
setSynchronousScrollingReasons() if there is no scrollingScope.
- 2:23 AM Changeset in webkit [276491] by
-
- 12 edits4 adds in trunk
[LibWebRTC][WPE][GTK] Enable vp9 and NO_MAIN_THREAD_WRAPPING
https://bugs.webkit.org/show_bug.cgi?id=222795
Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-23
Reviewed by Xabier Rodriguez-Calvar.
Source/ThirdParty/libwebrtc:
- CMakeLists.txt: Enable NO_MAIN_THREAD_WRAPPING as in the XCode build and harmonize options
between Apple and non-Apple ports.
- Source/webrtc/common_video/h265/h265_pps_parser.h:
Source/WebCore:
Add VP9 encoding and decoding support in the WPE/GTK LibWebRTC backend. The underlying
encoding support is based on LibWebRTC's internal VP9 support. The GStreamer VPx encoders
lack simulcast and high profile support, so can't really be used anyway. The
GStreamerVP8Encoder was removed for this reason as well.
- platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
(WebCore::VP9Decoder::VP9Decoder):
(WebCore::VP9Decoder::Create):
(WebCore::GStreamerVideoDecoderFactory::CreateVideoDecoder):
(WebCore::GStreamerVideoDecoderFactory::GStreamerVideoDecoderFactory):
(WebCore::GStreamerVideoDecoderFactory::GetSupportedFormats const):
- platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.h:
- platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:
- platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerVideoEncoder::makeElement):
(WebCore::GStreamerVideoEncoder::createEncoder):
(WebCore::GStreamerVideoEncoder::SetRestrictionCaps):
(WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder):
(WebCore::GStreamerVideoEncoderFactory::GStreamerVideoEncoderFactory):
(WebCore::GStreamerVideoEncoderFactory::GetSupportedFormats const):
- platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.h:
- platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.cpp:
(WebCore::LibWebRTCProviderGStreamer::createDecoderFactory):
(WebCore::LibWebRTCProviderGStreamer::createEncoderFactory):
LayoutTests:
Update GLIB baselines for webrtc tests.
- platform/glib/TestExpectations:
- platform/glib/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded-expected.txt: Added.
- platform/glib/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-restartIce.https-expected.txt: Added.
- platform/glib/imported/w3c/web-platform-tests/webrtc/RTCRtpTransceiver-setCodecPreferences-expected.txt: Added.
- 12:16 AM Changeset in webkit [276490] by
-
- 15 edits in trunk/Source/WebKit
[GTK] Implement PageClient::makeViewBlank()
https://bugs.webkit.org/show_bug.cgi?id=224236
Reviewed by Chris Dumez.
Make most of the changes in r275485 cross platform and implement PageClient::makeViewBlank() for the GTK port.
- UIProcess/API/glib/WebKitUIClient.cpp:
- UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::makeViewBlank):
- UIProcess/API/gtk/PageClientImpl.h:
- UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseSnapshot):
(webkitWebViewBaseDraw):
(webkitWebViewBaseMakeBlank):
- UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didUpdateRenderingAfterCommittingLoad):
(WebKit::WebPageProxy::stopMakingViewBlankDueToLackOfRenderingUpdate):
(WebKit::WebPageProxy::makeViewBlankIfUnpaintedSinceLastLoadCommit):
(WebKit::WebPageProxy::didCommitLoadForFrame):
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::didUpdateRenderingAfterCommittingLoad): Deleted.
- WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::flushPendingLayerChanges):
- WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
(WebKit::DrawingAreaCoordinatedGraphics::updateBackingStoreState):
(WebKit::DrawingAreaCoordinatedGraphics::display):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didUpdateRendering):
(WebKit::WebPage::didCommitLoad):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::didUpdateRendering): Deleted.