| 2022-03-03 Michael Saboff <msaboff@apple.com> |
| |
| Copy WebKit frameworks and XPC processes to Secondary Path |
| https://bugs.webkit.org/show_bug.cgi?id=237394 |
| |
| Reviewed by Saam Barati. |
| |
| Added build configuration variables and scripts to copy the built Framework to the SYSTEM_SECONDARY_CONTENT_PATH |
| when it is set. |
| |
| * Configurations/WebCore.xcconfig: |
| * Scripts/copy-frameworks-to-secondary-path.sh: Added. |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2022-03-03 Dan Glastonbury <djg@apple.com> |
| |
| Allow [SecureContext] extended attribute on namespaces. |
| https://bugs.webkit.org/show_bug.cgi?id=237401 |
| |
| Reviewed by Alexey Shvayka. |
| |
| * bindings/scripts/IDLAttributes.json: |
| Enable SecureContext as a valid extended attribute on namespace. |
| * bindings/scripts/test/BindingTestGlobalConstructors.idl: |
| * bindings/scripts/test/JS/*: Updated |
| * bindings/scripts/test/TestNamespaceObject.idl: |
| Added [SecureContext] to namespace |
| |
| 2022-03-03 Simon Fraser <simon.fraser@apple.com> |
| |
| nasa.gov page with fixed backgrounds paints incorrectly on scroll |
| https://bugs.webkit.org/show_bug.cgi?id=237405 |
| <rdar://66568551> |
| |
| Reviewed by Antti Koivisto. |
| |
| https://www.nasa.gov/specials/artemis/ shows an issue where elements with background-attachment:fixed |
| don't repaint on scroll. This page has scrollable <html> and <body>, and the elements with fixed |
| backgrounds are composited, so this reveals that we fail to repaint composited children |
| of an overflow scroll in this case. |
| |
| Fix by having RenderLayerScrollableArea::scrollTo() do repaints on slow repaint objects |
| which are scrolled by the current scroller. |
| |
| Do some unrelated cleanup in code that I was going to use in this patch but turned out |
| not to need: rename hasFixedBackgroundImage() to hasAnyFixedBackground() for clarity, |
| and share the implementation with hasAnyLocalBackground(). |
| |
| Test: fast/repaint/background-attachment-fixed-in-composited-scroll.html |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::styleWillChange): |
| (WebCore::RenderElement::willBeDestroyed): |
| * rendering/RenderLayer.cpp: |
| * rendering/RenderLayerScrollableArea.cpp: |
| (WebCore::RenderLayerScrollableArea::scrollTo): |
| * rendering/style/FillLayer.cpp: |
| (WebCore::FillLayer::hasImageWithAttachment const): |
| (WebCore::FillLayer::hasFixedImage const): Deleted. |
| * rendering/style/FillLayer.h: |
| * rendering/style/RenderStyle.cpp: |
| (WebCore::RenderStyle::hasAnyLocalBackground const): Deleted. |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::hasBackgroundImage const): |
| (WebCore::RenderStyle::hasAnyFixedBackground const): |
| (WebCore::RenderStyle::hasAnyLocalBackground const): |
| (WebCore::RenderStyle::hasFixedBackgroundImage const): Deleted. |
| |
| 2022-03-03 Alan Bujtas <zalan@apple.com> |
| |
| A text node longer than 65,535 characters following another text node is invisible in a scrolling context |
| https://bugs.webkit.org/show_bug.cgi?id=237330 |
| <rdar://problem/89645522> |
| |
| Reviewed by Antti Koivisto. |
| |
| 1. We split text content at 65536 characters (see Text::createWithLengthLimit) |
| 2. InlineTextBox can only hold up to 65534 (max short unsigned) characters (unsigned short m_len { 0 };) |
| |
| Arithmetic overflow produces 0 length inline text boxes and they get removed at |
| LegacyLineLayout::computeBlockDirectionPositionsForLine as redundant boxes. |
| |
| Test: fast/text/text-overflow-over-64k.html |
| |
| * rendering/LegacyInlineTextBox.h: Let's just use unsigned. At this point we don't have that many |
| legacy inline text boxes anyway. |
| |
| 2022-03-03 Dan Glastonbury <djg@apple.com> |
| |
| Update IDLParser to support trailing commas in enums. |
| https://bugs.webkit.org/show_bug.cgi?id=232607 |
| <rdar://problem/85189036> |
| |
| Reviewed by Sam Weinig. |
| |
| Now compatible with the grammar specified by [1]. |
| |
| [1] https://webidl.spec.whatwg.org/#prod-EnumValueListComma |
| |
| * bindings/scripts/IDLParser.pm: |
| (parseEnumValues): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::convertEnumerationToString): |
| (WebCore::convertEnumerationToJS): |
| (WebCore::parseEnumeration<TestObj::EnumTrailingComma>): |
| (WebCore::expectedEnumerationValues<TestObj::EnumTrailingComma>): |
| * bindings/scripts/test/JS/JSTestObj.h: |
| * bindings/scripts/test/TestObj.idl: |
| |
| 2022-03-03 Antti Koivisto <antti@apple.com> |
| |
| Simplify pseudo element resolution |
| https://bugs.webkit.org/show_bug.cgi?id=237413 |
| |
| Reviewed by Antoine Quint. |
| |
| Remove ElementUpdates struct with a map that contains pseudo element updates. |
| Instead use a single ElementUpdate struct and pass the pseudo element styles |
| as cached pseudo styles of the element RenderStyle. Previously RenderTreeUpdater |
| would move them there. |
| |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::Parent::Parent): |
| (WebCore::RenderTreeUpdater::updateRenderTree): |
| (WebCore::RenderTreeUpdater::pushParent): |
| (WebCore::RenderTreeUpdater::popParent): |
| (WebCore::RenderTreeUpdater::updateBeforeDescendants): |
| (WebCore::RenderTreeUpdater::updateAfterDescendants): |
| (WebCore::RenderTreeUpdater::updateElementRenderer): |
| * rendering/updating/RenderTreeUpdater.h: |
| * rendering/updating/RenderTreeUpdaterGeneratedContent.cpp: |
| (WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement): |
| (WebCore::RenderTreeUpdater::GeneratedContent::needsPseudoElement): |
| * rendering/updating/RenderTreeUpdaterGeneratedContent.h: |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::TreeResolver::computeDescendantsToResolve): |
| (WebCore::Style::TreeResolver::resolveElement): |
| (WebCore::Style::TreeResolver::shouldResolveElement): |
| (WebCore::Style::TreeResolver::resetDescendantStyleRelations): |
| (WebCore::Style::TreeResolver::resolveComposedTree): |
| (WebCore::Style::computeDescendantsToResolve): Deleted. |
| (WebCore::Style::shouldResolveElement): Deleted. |
| (WebCore::Style::resetDescendantStyleRelations): Deleted. |
| * style/StyleTreeResolver.h: |
| * style/StyleUpdate.cpp: |
| (WebCore::Style::Update::elementUpdate const): |
| (WebCore::Style::Update::elementUpdate): |
| (WebCore::Style::Update::elementStyle const): |
| (WebCore::Style::Update::elementStyle): |
| (WebCore::Style::Update::addElement): |
| (WebCore::Style::Update::elementUpdates const): Deleted. |
| (WebCore::Style::Update::elementUpdates): Deleted. |
| * style/StyleUpdate.h: |
| |
| 2022-03-03 Youenn Fablet <youenn@apple.com> |
| |
| macOS Safari 15.2 Audio Echo Issue after camera pause/unpause |
| https://bugs.webkit.org/show_bug.cgi?id=235544 |
| <rdar://problem/88297045> |
| |
| Reviewed by Eric Carlson. |
| |
| After https://commits.webkit.org/r275600, the muted state of MediaPlayer would be set to the page muted state |
| without taking into consideration HTMLMediaElement.muted. |
| Update the call site to use effectiveMuted instead. |
| Add internals API to write a corresponding layout test. |
| |
| Test: fast/mediastream/mediastreamtrack-audiovideo-mutepage.html |
| |
| * html/HTMLMediaElement.cpp: |
| * testing/Internals.cpp: |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2022-03-03 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION(r290356-r290351?): [ iOS EWS ] 3 imported/w3c/web-platform-tests/service-workers/service-worker/* tests are constant text failures. |
| https://bugs.webkit.org/show_bug.cgi?id=237160 |
| <rdar://problem/89440067> |
| |
| Reviewed by Youenn Fablet. |
| |
| In r290352, I made a change so that the service worker is more likely to launch in the WebContent |
| process that caused it to launch. This is beneficial for performance and memory usage. |
| |
| The partitioned-service-worker*.html service worker tests are relying on an ID variable that is |
| randomly generated inside the service worker and they expect this ID to not change during the |
| duration of the test. This means that if the service worker exits / relaunches, those tests start |
| failing because the ID changes. |
| |
| The issue is that we have logic in WebProcessProxy::didStartProvisionalLoadForMainFrame() that |
| terminates the service workers running inside the WebProcess if a new eTLD+1 page is loaded inside |
| the process. We do so to try and achieve better process isolation between different sites. The |
| issue is that those tests launch a service worker and then open a new cross-site popup. When the |
| cross-site popup loads inside the same process, we'd make the decision to terminate the service |
| workers in this process and relaunch them in a new clean one, causing the tests to fail. |
| |
| While it is true per the specification that service workers can be terminated / relaunched at |
| almost any point, there are exceptions. In particular, we should keep a service worker running |
| if it still has pending extendable events. For this reason, the tests rely on FetchEvent.waitUntil() |
| to keep the service worker running. Sadly, we would not obey that in this case. |
| |
| To address the issue, we no longer unconditionally close the service worker context connection |
| when a WebProcess loads a new eTLD+1. Instead, we tell the network process to close that connection |
| as soon as possible. When the network process receives this IPC, it terminates the context |
| connection ONLY if the service workers using the connection have no pending events. If we cannot |
| close the context connection right away, we set a flag on the context connection to indicate that |
| we should close it as soon as possible. Currently, this flag is only used to close the connection |
| right away (no 10 second delay) once the connection no longer has any clients. I think that, ideally, |
| we'd close the connection as soon as the service workers no longer have pending events. However, |
| this adds complexity and is error-prone so I didn't implement it in this patch and merely added a |
| FIXME comment. As it stands, my patch STILL relaunches service workers in origin-clean processes |
| in the common case. It only fails to do so in the case where there are pending service worker |
| events which is a case where we had the correctness bug anyway. |
| |
| No new tests, unskipped existing tests. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::forEachServiceWorker const): |
| (WebCore::SWServer::terminateContextConnectionWhenPossible): |
| (WebCore::SWServer::unregisterServiceWorkerClient): |
| * workers/service/server/SWServer.h: |
| * workers/service/server/SWServerToContextConnection.cpp: |
| (WebCore::SWServerToContextConnection::SWServerToContextConnection): |
| (WebCore::SWServerToContextConnection::server const): |
| (WebCore::SWServerToContextConnection::terminateWhenPossible): |
| * workers/service/server/SWServerToContextConnection.h: |
| (WebCore::SWServerToContextConnection::shouldTerminateWhenPossible const): |
| |
| 2022-03-03 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Non-unified build fixes, early March 2022 edition |
| https://bugs.webkit.org/show_bug.cgi?id=237420 |
| |
| Unreviewed non-unified build fixes. |
| |
| * inspector/agents/InspectorDOMDebuggerAgent.h: Add forward declaration for ScriptExecutionContext. |
| |
| 2022-03-03 Alan Bujtas <zalan@apple.com> |
| |
| REGRESSION (r290512): imported/blink/fast/table/crash-output-element-as-column-group.html asserts sometimes |
| https://bugs.webkit.org/show_bug.cgi?id=237393 |
| |
| Reviewed by Simon Fraser. |
| |
| Merging https://chromium.googlesource.com/chromium/src/+/1cfc9b9c37f43567529b09a9824d6d3a7bd9abb6%5E%21/#F2 |
| The reason why crash-output-element-as-column-group.html crashes after r290512 is because |
| now we allow colgroup after the table content (thead, tbody) -prior to r290512, this test was pretty much a no-op. |
| |
| * rendering/RenderTableCol.cpp: |
| (WebCore::RenderTableCol::updateFromElement): |
| |
| 2022-03-03 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r290756. |
| https://bugs.webkit.org/show_bug.cgi?id=237412 |
| |
| Speedometer2 |
| |
| Reverted changeset: |
| |
| "[css] Implement 'text-decoration' as a shorthand." |
| https://bugs.webkit.org/show_bug.cgi?id=237175 |
| https://commits.webkit.org/r290756 |
| |
| 2022-03-02 Rob Buis <rbuis@igalia.com> |
| |
| Treat empty intersection correctly in RenderLayer::getRectToExpose |
| https://bugs.webkit.org/show_bug.cgi?id=237189 |
| |
| Reviewed by Simon Fraser. |
| |
| The case where the target rect to reveal had zero height and was outside of the visible rect, the |
| classification was wrongly that the target was visible, fix this to classify as hidden instead. |
| |
| Test: imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-050.html |
| |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::getRectToExpose const): |
| |
| 2022-03-02 Andres Gonzalez <andresg_22@apple.com> |
| |
| ITM: Checkbox state change is not updated in isolated tree |
| https://bugs.webkit.org/show_bug.cgi?id=237381 |
| rdar://89529486 |
| |
| Reviewed by Chris Fleizach. |
| |
| Fixes the following test in isolated tree mode: |
| accessibility/mac/checked-status-tree-items.html |
| accessibility/aria-switch-checked.html |
| |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::initializeAttributeData): |
| Properly initializes the properties SupportsCheckedState, IsChecked and |
| ButtonState. |
| (WebCore::AXIsolatedObject::getOrRetrievePropertyValue): |
| Uses the new template method propertyValue(PropertyName). |
| * accessibility/isolatedtree/AXIsolatedObject.h: |
| (WebCore::AXIsolatedObject::propertyValue const): |
| * accessibility/isolatedtree/AXIsolatedTree.cpp: |
| (WebCore::AXIsolatedTree::updateNodeProperty): |
| Updates both IsChecked and ButtonState. |
| * accessibility/isolatedtree/AXIsolatedTree.h: |
| |
| 2022-03-02 Dan Glastonbury <djg@apple.com> |
| |
| [WebGPU] Implement GPUDeviceDescriptor.requiredLimits |
| https://bugs.webkit.org/show_bug.cgi?id=232741 |
| <rdar://problem/85325316> |
| |
| Reviewed by Myles C. Maxfield. |
| |
| Implement IDL bindings for requiredLimits attribute of |
| GPUDeviceDescriptor. |
| |
| * Modules/WebGPU/GPUDeviceDescriptor.h: |
| (WebCore::GPUDeviceDescriptor::convertToBacking const): |
| * Modules/WebGPU/GPUDeviceDescriptor.idl: |
| |
| 2022-03-02 Simon Fraser <simon.fraser@apple.com> |
| |
| Rendering issues with many dynamically-added sticky elements inside overflow scroll |
| https://bugs.webkit.org/show_bug.cgi?id=237378 |
| <rdar://83745510> |
| |
| Reviewed by Cameron McCormack. |
| |
| A bug was filed describing a symptom where position:sticky elements would eventually |
| fail to render when many of them were dynamically added inside a non-stacking context |
| overflow scroll. |
| |
| Debugging showed that CALayers were accumulating, causing us to hit per-process IOSurface |
| limits, at which point content fails to render (this is being fixed via rdar://89640915). |
| Further debugging showed that these layers were unparented, and being entrained by |
| ScrollingStateStickyNodes, which were accumulating in ScrollingStateTree's m_unparentedNodes. |
| |
| This happened because with this scrolling configuration, each ScrollingStateStickyNode |
| is parented via a ScrollingStateOverflowScrollProxyNode which is referenced by entries |
| in RenderLayerBacking's m_ancestorClippingStack. On cleanup, the ScrollingStateOverflowScrollProxyNode |
| was unparented first, leaving the ScrollingStateStickyNode in m_unparentedNodes. |
| |
| The fix is to have ScrollingStateTree::unparentChildrenAndDestroyNode() remove nodes |
| from m_unparentedNodes. |
| |
| To test, add a m_unparentedNodes count to scrollingStateTreeAsText output, which means |
| having scrollingStateTreeAsText() as a member function on ScrollingStateTree. |
| |
| Test: scrollingcoordinator/scrolling-tree/accumulated-unparented-sticky-nodes.html |
| |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::scrollingStateTreeAsText const): |
| * page/scrolling/ScrollingStateTree.cpp: |
| (WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode): |
| (WebCore::ScrollingStateTree::scrollingStateTreeAsText const): |
| * page/scrolling/ScrollingStateTree.h: |
| |
| 2022-03-02 Oriol Brufau <obrufau@igalia.com> |
| |
| [css] Implement 'text-decoration' as a shorthand. |
| https://bugs.webkit.org/show_bug.cgi?id=237175 |
| |
| Reviewed by Darin Adler. |
| |
| The 'text-decoration' property was considered to be a longhand, sharing |
| a computed value with 'text-decoration-line'. |
| |
| This patch switches 'text-decoration' into a shorthand of the following |
| longhands: 'text-decoration-line', 'text-decoration-thickness', |
| 'text-decoration-style' and 'text-decoration-color'. This is according |
| to https://www.w3.org/TR/css-text-decor-4/#text-decoration-property |
| |
| For now I'm keeping the grammar as-is, so 'text-decoration' will only |
| accept values that are valid in 'text-decoration-line', but will set |
| the other longhands to the initial value. This should probably change |
| in a follow-up. |
| |
| I'm also keeping '-webkit-text-decoration' as-is, as a shorthand of |
| 'text-decoration-{line,style,color}', not including thickness for some |
| obscure reason. '-webkit-text-decoration' should probably be removed |
| anyways. |
| |
| There is a bunch of editing code that was getting/setting/removing |
| 'text-decoration' as a longhand, so I'm switching that to: |
| - Use 'text-decoration-line' when getting values. |
| - Use 'text-decoration' when setting values, and use a string for the |
| value, this parses it and sets each longhand to the correct value. |
| - Use 'text-decoration' get removing declarations, effectively removing |
| all longhands. |
| This preserves the previous behavior as much as possible. |
| |
| Tests: fast/css/getComputedStyle/computed-style.html |
| fast/css/getComputedStyle/computed-style-without-renderer.html |
| fast/css/getComputedStyle/getComputedStyle-text-decoration.html |
| fast/css/style-enumerate-properties.html |
| fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand.html |
| fast/css3-text/css3-text-decoration/text-decoration-dashed.html |
| fast/css3-text/css3-text-decoration/text-decoration-dotted-dashed.html |
| fast/css3-text/css3-text-decoration/text-decoration-dotted.html |
| imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml.html |
| imported/w3c/web-platform-tests/css/css-variables/variable-presentation-attribute.html |
| imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html |
| svg/css/getComputedStyle-basic.xhtml |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::ComputedStyleExtractor::valueForPropertyInStyle): |
| * css/CSSProperties.json: |
| * css/StyleProperties.cpp: |
| (WebCore::StyleProperties::getPropertyValue const): |
| (WebCore::StyleProperties::asText const): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::CSSPropertyParser::parseSingleValue): |
| (WebCore::CSSPropertyParser::parseShorthand): |
| * editing/EditingStyle.cpp: |
| (WebCore::EditingStyle::styleWithResolvedTextDecorations const): |
| (WebCore::EditingStyle::collapseTextDecorationProperties): |
| (WebCore::textDecorationValueList): |
| (WebCore::EditingStyle::conflictsWithInlineStyleOfElement const): |
| (WebCore::EditingStyle::styleIsPresentInComputedStyleOfNode const): |
| (WebCore::EditingStyle::mergeStyle): |
| (WebCore::EditingStyle::removeEquivalentProperties): |
| (WebCore::reconcileTextDecorationProperties): |
| (WebCore::StyleChange::StyleChange): |
| (WebCore::setTextDecorationProperty): |
| (WebCore::StyleChange::extractTextStyles): |
| (WebCore::diffTextDecorations): |
| (WebCore::extractPropertiesNotIn): |
| * editing/cocoa/HTMLConverter.mm: |
| (HTMLConverterCaches::propertyValueForNode): |
| (HTMLConverter::computedAttributesForElement): |
| * editing/markup.cpp: |
| (WebCore::serializePreservingVisualAppearanceInternal): |
| * style/PropertyAllowlist.cpp: |
| (WebCore::Style::isValidCueStyleProperty): |
| |
| 2022-03-02 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] Copy context menu action should be titled "Copy Link" when long pressing a non-image link |
| https://bugs.webkit.org/show_bug.cgi?id=237367 |
| rdar://77397886 |
| |
| Reviewed by Devin Rousso. |
| |
| Add a localizable string for "Copy Link". See WebKit/ChangeLog for more details. |
| |
| * en.lproj/Localizable.strings: |
| |
| 2022-03-02 Antoine Quint <graouts@webkit.org> |
| |
| [web-animations] setting the composite property on a keyframe effect should invalidate the target style |
| https://bugs.webkit.org/show_bug.cgi?id=237356 |
| |
| Reviewed by Dean Jackson. |
| |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::setComposite): |
| * animation/KeyframeEffect.h: |
| (WebCore::KeyframeEffect::setComposite): Deleted. |
| |
| 2022-03-02 Tyler Wilcock <tyler_w@apple.com> |
| |
| AX: Handle null FileList in RenderFileUploadControl::fileTextValue() |
| https://bugs.webkit.org/show_bug.cgi?id=237349 |
| |
| Reviewed by Chris Fleizach. |
| |
| In rare circumstances, it's possible for the FileList associated |
| with RenderFileUploadControl::inputElement (HTMLInputElement::files()) |
| to be null. This causes a crash in RenderFileUploadControl::fileTextValue(). |
| |
| In this patch, we avoid this crash by handling a null `FileList` |
| and returning a null `String`. |
| |
| * rendering/RenderFileUploadControl.cpp: |
| (WebCore::RenderFileUploadControl::fileTextValue const): |
| Handle null `input.files()` and return a null `String` rather than `ASSERT`ing. |
| |
| 2022-03-02 Antoine Quint <graouts@webkit.org> |
| |
| Outline-width with transition don't animate correctly |
| https://bugs.webkit.org/show_bug.cgi?id=173708 |
| |
| Reviewed by Antti Koivisto. |
| |
| Account for a change in outline size when checking whether a style change affects |
| visual overflow. |
| |
| No new test for this, I'm not sure how to write one since the issue is failing to |
| repaint during an animation but WKTR seems to force a repaint for reftests. |
| |
| * rendering/style/RenderStyle.cpp: |
| (WebCore::RenderStyle::changeAffectsVisualOverflow const): |
| |
| 2022-03-02 Alan Bujtas <zalan@apple.com> |
| |
| [RTL] Image alt text has incorrect bidi reordering |
| https://bugs.webkit.org/show_bug.cgi?id=237366 |
| <rdar://problem/89687229> |
| |
| Reviewed by Antti Koivisto. |
| |
| Test: fast/images/alt-text-with-right-to-left-inline-direction-reordering.html |
| |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::paintReplaced): Enable bidi reordering. |
| |
| 2022-03-02 Youenn Fablet <youenn@apple.com> |
| |
| Rename MediaSampleAVFObjC::createImageSample to MediaSampleAVFObjC::createFromPixelBuffer |
| https://bugs.webkit.org/show_bug.cgi?id=237354 |
| |
| Reviewed by Eric Carlson. |
| |
| No change of behavior, this is a renaming. |
| |
| * html/HTMLCanvasElement.cpp: |
| (WebCore::HTMLCanvasElement::toMediaSample): |
| * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h: |
| (WebCore::MediaSampleAVFObjC::createFromPixelBuffer): |
| (WebCore::MediaSampleAVFObjC::createImageSample): Deleted. |
| * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm: |
| (WebCore::MediaSampleAVFObjC::createFromPixelBuffer): |
| (WebCore::MediaSampleAVFObjC::createImageSample): Deleted. |
| * platform/graphics/cocoa/GraphicsContextGLCocoa.mm: |
| (WebCore::GraphicsContextGLCocoa::paintCompositedResultsToMediaSample): |
| * platform/mediastream/RealtimeVideoSource.cpp: |
| (WebCore::RealtimeVideoSource::adaptVideoSample): |
| |
| 2022-03-02 Antoine Quint <graouts@webkit.org> |
| |
| [web-animations] changes to font-size should recompute keyframes |
| https://bugs.webkit.org/show_bug.cgi?id=237357 |
| |
| Reviewed by Antti Koivisto. |
| |
| When we compute keyframes, it's possible that some values are specified using "em" units |
| and thus dependent on the current value for font-size. If the font-size changes over time, |
| we must recompute keyframes to ensure that any such value is updated. |
| |
| To ensure that we correctly determine when the font-size changed, we pass a pointer to the |
| style seen when we last udpated animations so that we only consider a change in font-size |
| provided we've ever resolved animations. |
| |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::propertyAffectingKeyframeResolutionDidChange): |
| (WebCore::KeyframeEffect::propertyAffectingLogicalPropertiesDidChange): Deleted. |
| * animation/KeyframeEffect.h: |
| * animation/KeyframeEffectStack.cpp: |
| (WebCore::KeyframeEffectStack::applyKeyframeEffects): |
| * animation/KeyframeEffectStack.h: |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::TreeResolver::createAnimatedElementUpdate): |
| * style/Styleable.h: |
| (WebCore::Styleable::applyKeyframeEffects const): |
| |
| 2022-03-02 Oriol Brufau <obrufau@igalia.com> |
| |
| [css-cascade] Support 'revert-layer' in @keyframes |
| https://bugs.webkit.org/show_bug.cgi?id=237152 |
| |
| Reviewed by Antti Koivisto. |
| |
| In @keyframes, 'revert-layer' should roll back the cascaded value to |
| author origin. Resolver::styleForKeyframe already has the base style of |
| the element, so we only need to avoid applying properties with the |
| 'revert-layer' value. |
| |
| Test: imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010.html.html |
| |
| * style/StyleBuilder.cpp: |
| (WebCore::Style::Builder::applyProperty): |
| * style/StyleBuilderState.h: |
| (WebCore::Style::BuilderState::setIsBuildingKeyframeStyle): |
| * style/StyleResolver.cpp: |
| (WebCore::Style::Resolver::styleForKeyframe): |
| |
| 2022-03-02 Michael Catanzaro <mcatanzaro@gnome.org> |
| |
| [GTK] setDragImage ignores offset |
| https://bugs.webkit.org/show_bug.cgi?id=237292 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| To fix this, I need DataTransfer to expose its dragLocation, which is the offset passed to |
| setDragImage. |
| |
| * dom/DataTransfer.h: |
| (WebCore::DataTransfer::dragLocation const): |
| |
| 2022-03-02 Alan Bujtas <zalan@apple.com> |
| |
| [RTL] Incorrect alt text position in right to left context |
| https://bugs.webkit.org/show_bug.cgi?id=237352 |
| <rdar://problem/89657704> |
| |
| Reviewed by Simon Fraser. |
| |
| Take the inline direction into account when computing the alt text location. |
| |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::paintReplaced): This is mostly moving things around/modernizing it. |
| |
| 2022-03-02 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| REGRESSION(r216096): [GTK] Test accessibility/gtk/menu-list-unfocused-notifications.html is failing since r216096 |
| https://bugs.webkit.org/show_bug.cgi?id=171598 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Enable accessibility when a WTR observer is added. |
| |
| * accessibility/atspi/AccessibilityAtspi.cpp: |
| (WebCore::AccessibilityAtspi::addNotificationObserver): |
| |
| 2022-03-01 Youenn Fablet <youenn@apple.com> |
| |
| Remove RemoteVideoSample support from ImageTransferSessionVT |
| https://bugs.webkit.org/show_bug.cgi?id=237318 |
| |
| Reviewed by Eric Carlson. |
| |
| No change of behavior. |
| |
| * platform/graphics/cv/ImageTransferSessionVT.h: |
| * platform/graphics/cv/ImageTransferSessionVT.mm: |
| * platform/mediastream/RealtimeMediaSource.h: |
| * platform/mediastream/RealtimeVideoCaptureSource.cpp: |
| |
| 2022-03-01 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| Fix deprecations for ERB.new in GenerateSettings.rb |
| https://bugs.webkit.org/show_bug.cgi?id=237237 |
| |
| Reviewed by Don Olmstead. |
| |
| Ruby 3.1.0 reported the following warning: |
| > GenerateSettings.rb:283: warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments. |
| > GenerateSettings.rb:283: warning: Passing trim_mode with the 3rd argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, trim_mode: ...) instead. |
| |
| r290104 and r290331 fixed the same problem for |
| GeneratePreferences.rb, but forgot GenerateSettings.rb. |
| |
| * Scripts/GenerateSettings.rb: Use the keyword argument for ERB.new for Ruby 2.6+. |
| |
| 2022-03-01 Andres Gonzalez <andresg_22@apple.com> |
| |
| Unnecessary copy of Vector of children IDs in AXIsolatedTree::updateChildren. |
| https://bugs.webkit.org/show_bug.cgi?id=237338 |
| <rdar://problem/89633856> |
| |
| Reviewed by Chris Fleizach. |
| |
| Changed the copy of this Vector to a move. |
| |
| * accessibility/isolatedtree/AXIsolatedTree.cpp: |
| (WebCore::AXIsolatedTree::updateChildren): |
| |
| 2022-03-01 Alan Bujtas <zalan@apple.com> |
| |
| REGRESSION(r285232) https://alvaromontoro.github.io/almond.css/demo/ looks wrong in Safari, ok in Chrome and Firefox |
| https://bugs.webkit.org/show_bug.cgi?id=237276 |
| <rdar://problem/89566459> |
| |
| Reviewed by Simon Fraser. |
| |
| r285232 introduced the isFixed() check as a resolvable preferred width type, but percent values are also resolvable as |
| block layout gets the horizontal constraint from the containing block chain (unlike the height percent values) -i.e. 'width: 50%' can be resolved during preferred width computation. |
| |
| Test: fast/css-grid-layout/ascpect-ratio-with-percent-width.html |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const): |
| |
| 2022-03-01 Michael Catanzaro <mcatanzaro@gnome.org> |
| |
| Misc compiler warnings, late Feb 2022 edition |
| https://bugs.webkit.org/show_bug.cgi?id=237275 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Remove a redundant move. Sprinkle RELEASE_ASSERT_NOT_REACHED() as required to avoid |
| -Wreturn-type warnings. |
| |
| * Modules/push-api/PushDatabase.cpp: |
| (WebCore::openAndMigrateDatabaseImpl): |
| * style/ContainerQueryEvaluator.cpp: |
| (WebCore::Style::ContainerQueryEvaluator::evaluateCondition const): |
| (WebCore::Style::ContainerQueryEvaluator::evaluateSizeFeature const): |
| * style/ContainerQueryEvaluator.h: |
| (WebCore::Style::operator!): |
| * style/StyleScope.cpp: |
| (WebCore::Style::Scope::updateQueryContainerState): |
| |
| 2022-03-01 Said Abou-Hallawa <said@apple.com> |
| |
| [macOS][REGRESSION] (r289518): Form controls are scaled twice on Retina display |
| https://bugs.webkit.org/show_bug.cgi?id=237128 |
| rdar://89064642 |
| |
| Reviewed by Darin Adler. |
| |
| Using the name GraphicsContext::createImageBuffer() for different behaviors |
| was a mistake in r289518. To clean this up, the createImageBuffer() version |
| which scales the GraphicsContext of the ImageBuffer will be renamed |
| createScaledImageBuffer(). and the existing createCompatibleImageBuffer() |
| will be renamed createAlignedImageBuffer(). So we will have these three |
| methods in GraphicsContext: |
| |
| 1) createImageBuffer(): The default behavior of this method is to create |
| an ImageBuffer similar to the underlying ImageBuffer of GraphicsContext. |
| But it gives ability to change the renderingMode and the renderingMethod. |
| It can be forced to create a non-accelerated local ImageBuffer for example. |
| |
| The caller of this method usually uses a framework to draw some custom |
| drawing and it just needs a scratch buffer to be drawn in the place of |
| a render object. The caller does not require any transformation to be |
| applied to the GraphicsContext of the ImageBuffer before starting its |
| custom drawing. Drawing the form controls using AppKit is an example |
| of such case. |
| |
| 2) createScaledImageBuffer(): This is similar to createImageBuffer() but |
| it always creates the ImageBuffer with resolutionScale = 1 so it has |
| to scale the size by the scaleFactor before calling createImageBuffer(). |
| It also scales the GraphicsContext of the created ImageBuffer with the |
| scaleFactor and it translates its coordinates origin for the FloatRect |
| version. It also handles the clamping if needed. |
| |
| This method is suitable for cases when the overall scaleFatcor |
| (device ScaleFactor + clamping ScaleFactor) has be known to the caller |
| in advance. No clamping will be required in this case. SVG filter, |
| masker, clipper and gradient are the callers to this function. |
| |
| 3) createAlignedImageBuffer(): This is similar to createScaledImageBuffer() |
| but it does not take a scaling factor argument. It inherits it from |
| the GraphicsContext. |
| |
| Usually the purpose of this method is to transfer the drawing from a |
| layer to a scratch ImageBuffer temporarily then draw the scratch |
| ImageBuffer in the place of the original drawing. Drawing a PDFDocument |
| image, for example, requires using this method. |
| |
| To fix this bug: |
| |
| Form controls have to use the first version of createImageBuffer() which |
| still has the same name instead of using the second version which will |
| be renamed createScaledImageBuffer(). |
| |
| Another cleaning is to pass RenderingMethod as an std::optional argument |
| the three methods. This means we do not need the value "Default" since |
| passing std::nullopt will have the same meaning. |
| |
| Test: fast/hidpi/hidpi-form-controls-drawing-size.html |
| |
| * html/CustomPaintCanvas.cpp: |
| (WebCore::CustomPaintCanvas::replayDisplayList const): |
| * html/CustomPaintImage.cpp: |
| (WebCore::CustomPaintImage::drawPattern): |
| * html/canvas/CanvasRenderingContext2DBase.cpp: |
| (WebCore::CanvasRenderingContext2DBase::drawImage): |
| (WebCore::CanvasRenderingContext2DBase::drawTextUnchecked): |
| * platform/cocoa/ThemeCocoa.mm: |
| (WebCore::drawApplePayButton): |
| * platform/graphics/BitmapImage.cpp: |
| (WebCore::BitmapImage::drawPattern): |
| * platform/graphics/GradientImage.cpp: |
| (WebCore::GradientImage::drawPattern): |
| * platform/graphics/GraphicsContext.cpp: |
| (WebCore::GraphicsContext::createImageBuffer const): |
| (WebCore::GraphicsContext::createScaledImageBuffer const): |
| (WebCore::GraphicsContext::createAlignedImageBuffer const): |
| (WebCore::GraphicsContext::createCompatibleImageBuffer const): Deleted. |
| * platform/graphics/GraphicsContext.h: |
| (WebCore::GraphicsContext::createScaledImageBuffer): |
| (WebCore::GraphicsContext::createImageBuffer): Deleted. |
| * platform/graphics/ImageBuffer.cpp: |
| (WebCore::ImageBuffer::clone const): |
| * platform/graphics/NamedImageGeneratedImage.cpp: |
| (WebCore::NamedImageGeneratedImage::drawPattern): |
| * platform/graphics/cg/PDFDocumentImage.cpp: |
| (WebCore::PDFDocumentImage::updateCachedImageIfNeeded): |
| (WebCore::PDFDocumentImage::draw): |
| * platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp: |
| (WebCore::DrawGlyphsRecorder::drawOTSVGRun): |
| * platform/graphics/displaylists/DisplayListRecorder.cpp: |
| (WebCore::DisplayList::Recorder::createImageBuffer const): |
| * platform/graphics/displaylists/DisplayListRecorder.h: |
| * platform/mac/ThemeMac.mm: |
| (WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext): |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::paintFillLayerExtended): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::patternForDescription): |
| * rendering/RenderLayerFilters.cpp: |
| (WebCore::RenderLayerFilters::allocateBackingStoreIfNeeded): |
| * rendering/RenderThemeCocoa.mm: |
| (WebCore::RenderThemeCocoa::paintApplePayButton): |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::paintListButtonForInput): |
| (WebCore::RenderThemeMac::paintProgressBar): |
| * rendering/svg/RenderSVGResourceClipper.cpp: |
| (WebCore::RenderSVGResourceClipper::applyClippingToContext): |
| * rendering/svg/RenderSVGResourceFilter.cpp: |
| (WebCore::RenderSVGResourceFilter::applyResource): |
| * rendering/svg/RenderSVGResourceGradient.cpp: |
| (WebCore::createMaskAndSwapContextForTextGradient): |
| * rendering/svg/RenderSVGResourceMasker.cpp: |
| (WebCore::RenderSVGResourceMasker::applyResource): |
| * rendering/svg/RenderSVGResourcePattern.cpp: |
| (WebCore::RenderSVGResourcePattern::createTileImage const): |
| * rendering/svg/SVGRenderingContext.cpp: |
| (WebCore::SVGRenderingContext::bufferForeground): |
| |
| 2022-03-01 Eric Carlson <eric.carlson@apple.com> |
| |
| [Cocoa] HLS stream currentTime sometimes jumps backwards |
| https://bugs.webkit.org/show_bug.cgi?id=235087 |
| rdar://83831093 |
| |
| Reviewed by Dean Jackson. |
| |
| Test: http/tests/media/hls/hls-non-zero-start-time.html |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::updateActiveTextTrackCues): Drive-by: pass log identifier |
| to lambda so the method name will be logged correctly. |
| (WebCore::HTMLMediaElement::currentMediaTime const): Remove LOG_CACHED_TIME_WARNINGS |
| build flag, always log time drift warnings when log level is DEBUG. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): Log when periodic |
| time observer is passed unexpected values. |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem): Use |
| NSKeyValueObservingOptionInitial KVO option for "@duration" property because we |
| sometimes don't get a duration changed event for HLS streams, so m_cachedDuration |
| remains invalid. |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::currentMediaTimeDidChange const): |
| Drive-by: fix use-after-move. |
| |
| 2022-03-01 Per Arne Vollan <pvollan@apple.com> |
| |
| Remove release assert when UI process is blocking IOSurface IOKit access |
| https://bugs.webkit.org/show_bug.cgi?id=237278 |
| <rdar://problem/89585043> |
| |
| Unreviewed, address review comments. |
| |
| Log error instead of creating CrashTracer reports. |
| |
| * platform/graphics/cocoa/IOSurface.mm: |
| (WebCore::IOSurface::bytesPerRowAlignment): |
| |
| 2022-03-01 Matt Woodrow <mattwoodrow@apple.com> |
| |
| Use static position relative to parent for abs-pos items within nested grids. |
| https://bugs.webkit.org/show_bug.cgi?id=236957 |
| |
| Reviewed by Dean Jackson. |
| |
| In the case where an absolutely positioned element's parent and containing block |
| are both grid container, but they are not the same grid container, then the static position |
| of the abs-pos item should be relative to the parent, not the CB. |
| |
| Existing subgrid tests marked as passing. |
| |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::setLogicalOffsetForChild const): |
| |
| 2022-03-01 Alan Bujtas <zalan@apple.com> |
| |
| [IFC][Integration] Add InlineIterator::Box::visualRect |
| https://bugs.webkit.org/show_bug.cgi?id=237309 |
| |
| Reviewed by Antti Koivisto. |
| |
| This is the final, flipped version of the box rect. |
| |
| * layout/integration/InlineIteratorBox.h: |
| (WebCore::InlineIterator::Box::visualRect const): |
| * rendering/InlineBoxPainter.cpp: |
| (WebCore::InlineBoxPainter::paintMask): |
| (WebCore::InlineBoxPainter::paintDecorations): |
| * rendering/TextBoxPainter.cpp: |
| (WebCore::TextBoxPainter::computePaintRect): |
| |
| 2022-03-01 Patrick Angle <pangle@apple.com> |
| |
| Web app fails only when dev tools is open |
| https://bugs.webkit.org/show_bug.cgi?id=235017 |
| |
| Reviewed by Devin Rousso. |
| |
| Using the `ScriptExecutionContext` from `event.target()->scriptExecutionContext()` can result the either having a |
| different script context from the one used when calling `willHandleEvent`, or the event target's context could be |
| `nullptr`. This can occur when handling the event in `EventTarget::innerInvokeEventListeners` results in a |
| context change for the event's target, like a MessagePort that has been `disentangle`d, which sets the script |
| execution context to `nullptr`. Because we only need the script execution context to get the correct injected |
| script, and the correct injected script for the action below will always be the same injected script used in |
| `willHandleEvent`, we ignore the current script execution context of the event's target and use the context the |
| event's target had when it began invoking event listeners. |
| |
| This change protects us both from the reported crash, as well as leaving an injected script in a bad state |
| because we did not call `setEventValue` and `clearEventValue` on matching injected scripts for a single event. |
| |
| * inspector/InspectorInstrumentation.cpp: |
| (WebCore::InspectorInstrumentation::willHandleEventImpl): |
| (WebCore::InspectorInstrumentation::didHandleEventImpl): |
| * inspector/InspectorInstrumentation.h: |
| (WebCore::InspectorInstrumentation::willHandleEvent): |
| (WebCore::InspectorInstrumentation::didHandleEvent): |
| * inspector/agents/InspectorDOMDebuggerAgent.cpp: |
| (WebCore::InspectorDOMDebuggerAgent::willHandleEvent): |
| (WebCore::InspectorDOMDebuggerAgent::didHandleEvent): |
| * inspector/agents/InspectorDOMDebuggerAgent.h: |
| |
| 2022-03-01 Martin Robinson <mrobinson@webkit.org> |
| |
| When interpolating between transform lists partial prefix matches should not use matrix interpolation |
| https://bugs.webkit.org/show_bug.cgi?id=235757 |
| <rdar://problem/88477922> |
| |
| Reviewed by Dean Jackson. |
| |
| No new tests. This is covered by existing WPT tests. |
| |
| When interpolation between keyframes in transform animations, interpolate prefixes of |
| compatible transform functions directly. For instance if there are three keyframes: |
| |
| 1. transform: rotateX(...) translateY(...) skew(...) |
| 2. transform: rotateY(...) translateY(...) |
| 3. transform: rotateZ(...) translateZ(...) matrix3d(...) |
| |
| There will be a directly interpolated rotation animation, a directly interpolated |
| translation animation, and finally a matrix animation for the remaining functions. |
| This is important for preserving transforms (such as full rotations) that are lost |
| during matrix decompose and recompose operations. |
| |
| This change adds a new helper class SharedPrimitivesPrefix which is used to calculate |
| the prefix of shared primitives that are shared between keyframes. |
| |
| Currently, the Core Animation backend only supports animation transformation primitives |
| across the entire animation, so shared primitive prefixes must span the entire animation |
| if an animation is accelerated. In the case that an animation is rendered in software, |
| this prefix can simply be between the current next and previous keyframes. |
| |
| TransformOperations::blend is extended to blend any two TransformationOperations, which |
| makes it the only blend function necessary for software animations, computed CSS values, |
| and for the Nicosia backend, simplifying the interpolation code path. |
| |
| * animation/CSSPropertyAnimation.cpp: |
| (WebCore::blendFunc): |
| * animation/CSSPropertyBlendingClient.h: |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::checkForMatchingTransformFunctionLists): |
| (WebCore::KeyframeEffect::computeExtentOfTransformAnimation const): |
| * animation/KeyframeEffect.h: |
| * platform/graphics/GraphicsLayer.cpp: |
| (WebCore::operationsAt): Deleted. |
| (WebCore::GraphicsLayer::getSharedPrimitivesForTransformKeyframes): Deleted. |
| * platform/graphics/GraphicsLayer.h: |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::appendToUncommittedAnimations): |
| (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): |
| (WebCore::GraphicsLayerCA::setTransformAnimationKeyframes): |
| * platform/graphics/ca/GraphicsLayerCA.h: |
| * platform/graphics/nicosia/NicosiaAnimation.cpp: |
| (Nicosia::applyTransformAnimation): |
| (Nicosia::Animation::Animation): |
| (Nicosia::Animation::operator=): |
| (Nicosia::Animation::applyInternal): |
| * platform/graphics/nicosia/NicosiaAnimation.h: |
| * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp: |
| (WebCore::GraphicsLayerTextureMapper::addAnimation): |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::addAnimation): |
| * platform/graphics/transforms/TransformOperations.cpp: |
| (WebCore::SharedPrimitivesPrefix::update): |
| (WebCore::TransformOperations::blend const): |
| (WebCore::TransformOperations::createBlendedMatrixOperationFromOperationsSuffix const): |
| (WebCore::TransformOperations::operationsMatch const): Deleted. |
| (WebCore::TransformOperations::updateSharedPrimitives const): Deleted. |
| (WebCore::TransformOperations::blendByMatchingOperations const): Deleted. |
| (WebCore::TransformOperations::blendByUsingMatrixInterpolation const): Deleted. |
| * platform/graphics/transforms/TransformOperations.h: |
| (WebCore::TransformOperations::apply const): |
| (WebCore::SharedPrimitivesPrefix::hadIncompatibleTransformFunctions): |
| (WebCore::SharedPrimitivesPrefix::primitives): |
| |
| 2022-03-01 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r290619. |
| https://bugs.webkit.org/show_bug.cgi?id=237337 |
| |
| Introduced build failure |
| |
| Reverted changeset: |
| |
| "[iOS] Weak link AVPictureInPictureController" |
| https://bugs.webkit.org/show_bug.cgi?id=237227 |
| https://commits.webkit.org/r290619 |
| |
| 2022-03-01 Antoine Quint <graouts@webkit.org> |
| |
| [web-animations] ::placeholder should not be a valid pseudo-element for a KeyframeEffect target |
| https://bugs.webkit.org/show_bug.cgi?id=237334 |
| |
| Reviewed by Dean Jackson. |
| |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::setPseudoElement): |
| |
| 2022-03-01 Alex Christensen <achristensen@webkit.org> |
| |
| [AppleWin] Start using Visual Studio 2022 |
| https://bugs.webkit.org/show_bug.cgi?id=234933 |
| |
| Reviewed by Maciej Stachowiak. |
| |
| * WebCore.vcxproj/WebCore.proj: |
| |
| 2022-03-01 Antoine Quint <graouts@webkit.org> |
| |
| [web-animations] add support for passing an optional timeline to Element.animate() |
| https://bugs.webkit.org/show_bug.cgi?id=237312 |
| |
| Reviewed by Dean Jackson. |
| |
| * animation/KeyframeAnimationOptions.h: |
| * animation/KeyframeAnimationOptions.idl: |
| * dom/Element.cpp: |
| (WebCore::Element::animate): |
| |
| 2022-03-01 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r290325. |
| https://bugs.webkit.org/show_bug.cgi?id=237326 |
| |
| Broken patch |
| |
| Reverted changeset: |
| |
| "[GStreamer] Switch media player to playbin3" |
| https://bugs.webkit.org/show_bug.cgi?id=236884 |
| https://commits.webkit.org/r290325 |
| |
| 2022-03-01 Alan Bujtas <zalan@apple.com> |
| |
| [IFC][Integration] InlineIterator::Box::rect() returns the unflipped visual rect |
| https://bugs.webkit.org/show_bug.cgi?id=237304 |
| |
| Reviewed by Antti Koivisto. |
| |
| Rename InlineIterator::Box::rect() to visualRectIgnoringBlockDirection(). |
| This is the unflipped version of the visual rect. It's no longer logical but |
| when the writing mode sets right-to-left/bottom-to-top block direction, it's not yet visual either. |
| It'll help to indentify callsites where we actually need the flipped version of this visual rect. |
| |
| * layout/formattingContexts/inline/display/InlineDisplayBox.h: |
| (WebCore::InlineDisplay::Box::unflippedVisualRect const): |
| (WebCore::InlineDisplay::Box::top const): |
| (WebCore::InlineDisplay::Box::bottom const): |
| (WebCore::InlineDisplay::Box::left const): |
| (WebCore::InlineDisplay::Box::right const): |
| (WebCore::InlineDisplay::Box::width const): |
| (WebCore::InlineDisplay::Box::height const): |
| (WebCore::InlineDisplay::Box::moveVertically): |
| (WebCore::InlineDisplay::Box::moveHorizontally): |
| (WebCore::InlineDisplay::Box::setLeft): |
| (WebCore::InlineDisplay::Box::setRight): |
| (WebCore::InlineDisplay::Box::setTop): |
| (WebCore::InlineDisplay::Box::setBottom): |
| (WebCore::InlineDisplay::Box::setRect): |
| (WebCore::InlineDisplay::Box::Box): |
| (WebCore::InlineDisplay::Box::truncate): |
| (WebCore::InlineDisplay::Box::rect const): Deleted. |
| * layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp: |
| (WebCore::Layout::InlineDisplayContentBuilder::adjustVisualGeometryForDisplayBox): |
| * layout/integration/InlineIteratorBox.h: |
| (WebCore::InlineIterator::Box::logicalTop const): |
| (WebCore::InlineIterator::Box::logicalBottom const): |
| (WebCore::InlineIterator::Box::logicalLeft const): |
| (WebCore::InlineIterator::Box::logicalRight const): |
| (WebCore::InlineIterator::Box::logicalWidth const): |
| (WebCore::InlineIterator::Box::logicalHeight const): |
| (WebCore::InlineIterator::Box::unflippedVisualRect const): |
| (WebCore::InlineIterator::Box::rect const): Deleted. |
| * layout/integration/InlineIteratorBoxLegacyPath.h: |
| (WebCore::InlineIterator::BoxLegacyPath::unflippedVisualRect const): |
| (WebCore::InlineIterator::BoxLegacyPath::rect const): Deleted. |
| * layout/integration/InlineIteratorBoxModernPath.h: |
| (WebCore::InlineIterator::BoxModernPath::unflippedVisualRect const): |
| (WebCore::InlineIterator::BoxModernPath::createTextRun const): |
| (WebCore::InlineIterator::BoxModernPath::rect const): Deleted. |
| * layout/integration/LayoutIntegrationBoxTree.cpp: |
| (WebCore::LayoutIntegration::showInlineContent): |
| * layout/integration/LayoutIntegrationLineLayout.cpp: |
| (WebCore::LayoutIntegration::LineLayout::firstInlineBoxRect const): |
| (WebCore::LayoutIntegration::LineLayout::collectInlineBoxRects const): |
| (WebCore::LayoutIntegration::LineLayout::hitTest): |
| * layout/layouttree/LayoutTreeBuilder.cpp: |
| (WebCore::Layout::showInlineTreeAndRuns): |
| * rendering/InlineBoxPainter.cpp: |
| (WebCore::InlineBoxPainter::paintMask): |
| (WebCore::InlineBoxPainter::paintDecorations): |
| (WebCore::InlineBoxPainter::paintFillLayer): |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::addFocusRingRectsForInlineChildren): |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::paintMaskForTextFillBox): |
| (WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry const): |
| (WebCore::pixelSnapBackgroundImageGeometryForPainting): Deleted. |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::paintOutline): |
| * rendering/RenderLineBreak.cpp: |
| (WebCore::RenderLineBreak::linesBoundingBox const): |
| (WebCore::RenderLineBreak::absoluteRects const): |
| (WebCore::RenderLineBreak::absoluteQuads const): |
| * rendering/RenderText.cpp: |
| (WebCore::RenderText::absoluteRects const): |
| (WebCore::boundariesForTextRun): |
| (WebCore::localQuadForTextRun): |
| (WebCore::RenderText::firstRunLocation const): |
| (WebCore::RenderText::linesBoundingBox const): |
| * rendering/RenderTreeAsText.cpp: |
| (WebCore::write): |
| * rendering/TextBoxPainter.cpp: |
| (WebCore::TextBoxPainter::computePaintRect): |
| |
| 2022-03-01 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| focus({preventScroll: true}) does not prevent scrolling on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=236584 |
| rdar://88911184 |
| |
| Reviewed by Simon Fraser. |
| |
| Plumb `FocusOptions` through `Element::dispatchFocusEvent()` as well as the chrome client hooks for |
| `elementDidRefocus` and `elementDidFocus`, instead of just a `FocusDirection` flag. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::setFocusedElement): |
| * dom/Element.cpp: |
| (WebCore::Element::focus): |
| (WebCore::Element::dispatchFocusEvent): |
| * dom/Element.h: |
| * html/HTMLSelectElement.cpp: |
| (WebCore::HTMLSelectElement::dispatchFocusEvent): |
| * html/HTMLSelectElement.h: |
| * html/HTMLTextFormControlElement.cpp: |
| (WebCore::HTMLTextFormControlElement::dispatchFocusEvent): |
| * html/HTMLTextFormControlElement.h: |
| * loader/EmptyClients.h: |
| * page/ChromeClient.h: |
| (WebCore::ChromeClient::elementDidFocus): |
| (WebCore::ChromeClient::elementDidRefocus): |
| * page/FocusController.cpp: |
| (WebCore::dispatchEventsOnWindowAndFocusedElement): |
| (WebCore::FocusController::setFocusedElement): |
| |
| 2022-03-01 Alan Bujtas <zalan@apple.com> |
| |
| REGRESSION (r273129): Text contents in <span> with opacity not repainting/updating when sibling element has "will-change: transform" |
| https://bugs.webkit.org/show_bug.cgi?id=236876 |
| <rdar://problem/89180092> |
| |
| Reviewed by Simon Fraser. |
| |
| This patch implements a slightly naive repaint for inline boxes with self painting layers. |
| 1. Mark the line when it gains an inline box (RenderInline) with self painting layer (e.g. <span style="position: relative">this has dedicated layer</span>) |
| 2. Issue repaint at the end of the line layout on such renderers. |
| |
| Test: fast/repaint/inline-box-with-self-paint-layer.html |
| |
| * rendering/LegacyInlineFlowBox.cpp: |
| (WebCore::LegacyInlineFlowBox::addToLine): |
| * rendering/LegacyInlineFlowBox.h: |
| (WebCore::LegacyInlineFlowBox::LegacyInlineFlowBox): |
| (WebCore::LegacyInlineFlowBox::hasSelfPaintInlineBox const): |
| * rendering/LegacyLineLayout.cpp: |
| (WebCore::repaintSelfPaintInlineBoxes): |
| (WebCore::LegacyLineLayout::layoutRunsAndFloats): |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::clippedOverflowRect const): expand the ASSERT to enclsing inline boxes too. |
| |
| 2022-03-01 Antoine Quint <graouts@webkit.org> |
| |
| [web-animations] web-animations/interfaces/Animatable/getAnimations-iframe.html is a unique failure |
| https://bugs.webkit.org/show_bug.cgi?id=237314 |
| |
| Reviewed by Antti Koivisto. |
| |
| We need to update the layout of a potential owner document in case some layout-dependent media queries |
| trigger declarative animations. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::matchingAnimations): |
| * dom/Element.cpp: |
| (WebCore::Element::getAnimations): |
| |
| 2022-03-01 Kimmo Kinnunen <kkinnunen@apple.com> |
| |
| WebGL GPUP OpenGL context is not used even if WebGL via Metal is deselected |
| https://bugs.webkit.org/show_bug.cgi?id=236505 |
| |
| Reviewed by Myles C. Maxfield. |
| |
| Encode, decode also `useMetal` property. |
| |
| Tests: webgl/webgl-via-metal-flag-off.html |
| webgl/webgl-via-metal-flag-on.html |
| |
| * platform/graphics/GraphicsContextGLAttributes.h: |
| (WebCore::GraphicsContextGLAttributes::encode const): |
| (WebCore::GraphicsContextGLAttributes::decode): |
| |
| 2022-03-01 Kimmo Kinnunen <kkinnunen@apple.com> |
| |
| GraphicsContextGL related includes are inconsistent, slowing the build |
| https://bugs.webkit.org/show_bug.cgi?id=237270 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Remove include "GraphicsContextGL.h" from files not needing that. |
| Most notably, add ChromeClient.cpp and move the non-trivial |
| ChromeClient::createGraphicsContextGL() function to .cpp file, so |
| that ChromeClient.h does not need to include GraphicsContextGL.h. |
| |
| This makes incremental compiles better, as not all changes to |
| GraphicsContextGL.h and its dependencies force big rebuilds. |
| |
| GraphicsContextGL.h and dependents maintainance: |
| |
| Remove unneeded forward declarations. Types referenced by overridden virtual |
| functions must already be declared. Remove forward declarartion ExtensionsGL, |
| the class was removed |
| |
| Use forward declares instead of includes (MediaPlayer). |
| |
| Remove RemoteGraphicsContextGLProxyBase.cpp/h, the use was removed. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * html/canvas/WebGLActiveInfo.h: |
| * html/canvas/WebGLShaderPrecisionFormat.h: |
| * inspector/InspectorShaderProgram.cpp: |
| * page/ChromeClient.cpp: Renamed from Source/WebCore/platform/graphics/RemoteGraphicsContextGLProxyBase.cpp. |
| (WebCore::ChromeClient::createGraphicsContextGL const): |
| * page/ChromeClient.h: |
| * platform/HostWindow.h: |
| * platform/graphics/GraphicsContextGL.h: |
| * platform/graphics/GraphicsContextGLState.h: |
| * platform/graphics/RemoteGraphicsContextGLProxyBase.h: Removed. |
| * platform/graphics/angle/GraphicsContextGLANGLE.h: |
| * platform/graphics/cocoa/IOSurface.mm: |
| * platform/graphics/opengl/ExtensionsGLOpenGL.h: |
| * platform/xr/openxr/OpenXRSwapchain.h: |
| * platform/xr/openxr/PlatformXROpenXR.cpp: |
| * platform/xr/openxr/PlatformXROpenXR.h: |
| |
| 2022-03-01 Tim Nguyen <ntim@apple.com> |
| |
| Explicitly disable style sharing for form controls |
| https://bugs.webkit.org/show_bug.cgi?id=237236 |
| |
| Reviewed by Antti Koivisto. |
| |
| There was a typo introduced in bug 153768 and bug 138769, which essentially disables |
| style sharing completely for form controls. Let's make that explicit. |
| |
| * style/StyleSharingResolver.cpp: |
| (WebCore::Style::SharingResolver::canShareStyleWithControl): Removed. |
| (WebCore::Style::SharingResolver::canShareStyleWithElement const): |
| |
| 2022-03-01 Cameron McCormack <heycam@apple.com> |
| |
| Make input element UA shadow tree creation lazy |
| https://bugs.webkit.org/show_bug.cgi?id=236747 |
| |
| Reviewed by Aditya Keerthi. |
| |
| We currently delay InputType creation for parser inserted elements until |
| just after the attributes have been set, so that we don't wastefully |
| create an InputType and the UA shadow tree creation if a non-text |
| type="" was specified on the tag. We don't do anything similar for |
| script inserted input elements. We could make the InputType creation |
| lazy, but most of the wasted time is due to the shadow tree creation. |
| |
| This patch makes InputType shadow tree creation lazy by delaying it |
| until one of the following happens: |
| |
| 1. the element is inserted into the document |
| 2. the type="" or value="" attributes are changed before the element |
| is inserted into the document |
| 3. any DOM methods that need access to the innerTextElement() are |
| called on the element before the element is inserted into the |
| document |
| |
| Not all places where we call innerTextElement() on the |
| HTMLInputElement are safe to lazily create the shadow trees, so we |
| have two accessors: |
| |
| - innerTextElement() returns the inner text element if it's been |
| created already |
| - innerTextElementCreatingShadowSubtreeIfNeeded will perform the lazy |
| shadow tree construction if it hasn't already been done |
| |
| Since the existing |
| createShadowSubtreeAndUpdateInnerTextElementEditability function has |
| more responsibility than just creating the subtree and ensuring the |
| editability is set appropriately, it's renamed to a more manageable |
| createShadowSubtree. |
| |
| This change is a 0.5% progression on Speedometer 2. |
| |
| Test: fast/forms/lazy-shadow-tree-creation.html |
| |
| * html/BaseDateAndTimeInputType.h: |
| * html/BaseDateAndTimeInputType.cpp: |
| (WebCore::BaseDateAndTimeInputType::createShadowSubtree): |
| (WebCore::BaseDateAndTimeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| * html/ColorInputType.h: |
| * html/ColorInputType.cpp: |
| (WebCore::ColorInputType::createShadowSubtree): |
| (WebCore::ColorInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| * html/FileInputType.h: |
| * html/FileInputType.cpp: |
| (WebCore::FileInputType::createShadowSubtree): |
| (WebCore::FileInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| * html/InputType.cpp: |
| (WebCore::InputType::createShadowSubtree): |
| (WebCore::InputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| * html/RangeInputType.h: |
| * html/RangeInputType.cpp: |
| (WebCore::RangeInputType::createShadowSubtree): |
| (WebCore::RangeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| * html/SearchInputType.h: |
| * html/SearchInputType.cpp: |
| (WebCore::SearchInputType::createShadowSubtree): |
| (WebCore::SearchInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| Renamed createShadowSubtreeAndUpdateInnerTextElementEditability to |
| createShadowSubtree and remove the "isInnerTextElementEditable" |
| argument, since we can ask the element() for its value if needed. |
| createShadowSubtree is now also responsible for creating the shadow |
| root. |
| |
| * html/TextFieldInputType.h: |
| * html/TextFieldInputType.cpp: |
| (WebCore::TextFieldInputType::createShadowSubtree): |
| (WebCore::TextFieldInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| Renamed. Ensure all shadow tree state is up to date now that it can be |
| created later. |
| |
| * html/InputType.h: |
| * html/InputType.cpp: |
| (WebCore::InputType::createShadowSubtree): |
| (WebCore::InputType::hasCreatedShadowSubtree const): |
| New functions to create the shadow subtree if it hasn't been done |
| already, and to query whether it's been done. |
| |
| * html/HTMLInputElement.h: |
| * html/HTMLInputElement.cpp: |
| (WebCore::HTMLInputElement::innerTextElementCreatingShadowSubtreeIfNeeded): |
| * html/HTMLTextAreaElement.h: |
| * html/HTMLTextAreaElement.cpp: |
| (WebCore::HTMLTextAreaElement::innerTextElementCreatingShadowSubtreeIfNeeded): |
| * html/HTMLTextFormControlElement.h: |
| * html/InputType.h: |
| * html/InputType.cpp: |
| (WebCore::InputType::innerTextElementCreatingShadowSubtreeIfNeeded): |
| New functions to first create the shadow subtree before returning |
| innerTextElement(). HTMLTextAreaElement never lazily creates its |
| shadow subtree and so just returns innerTextElement(). |
| |
| * html/HTMLInputElement.h: |
| * html/HTMLInputElement.cpp: |
| (WebCore::HTMLInputElement::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| Deleted. Just call through to m_inputType->createShadowTree() |
| directly. |
| |
| (WebCore::HTMLInputElement::HTMLInputElement): |
| (WebCore::HTMLInputElement::create): |
| (WebCore::HTMLInputElement::initializeInputType): |
| (WebCore::HTMLInputElement::updateType): |
| Don't immediately create the shadow tree. |
| |
| (WebCore::HTMLInputElement::didFinishInsertingNode): |
| Create the shadow subtree now that the element's been inserted. No |
| need to call dataListMayHaveChanged since |
| TextFieldInputType::createShadowSubtree will now do this. |
| |
| * html/BaseDateAndTimeInputType.cpp: |
| (WebCore::BaseDateAndTimeInputType::updateInnerTextValue): |
| Ensure the shadow subtree is created since we need to poke at it. |
| |
| * html/HTMLTextFormControlElement.cpp: |
| (WebCore::HTMLTextFormControlElement::forwardEvent): |
| Don't forward the event if the shadow tree hasn't been created yet. |
| |
| (WebCore::HTMLTextFormControlElement::setSelectionRange): |
| Ensure the shadow tree has been created. This is needed if the |
| selection APIs are called on the input element before it's inserted |
| into the document. |
| |
| (WebCore::HTMLTextFormControlElement::visiblePositionForIndex const): |
| Assert that the shadow tree has been created, since editing |
| functionality should only be needed if the element's been inserted |
| into the document. |
| |
| (WebCore::HTMLTextFormControlElement::setInnerTextValue): |
| Ensure the shadow tree has been created. |
| |
| * html/RangeInputType.cpp: |
| (WebCore::RangeInputType::handleMouseDownEvent): |
| (WebCore::RangeInputType::handleTouchEvent): |
| Ensure the shadow tree has been created in case the event will change |
| the value. |
| |
| (WebCore::RangeInputType::sliderTrackElement const): |
| Only return the element if it's been created. |
| |
| (WebCore::RangeInputType::typedSliderThumbElement const): |
| Assert that the element has been created. |
| |
| (WebCore::RangeInputType::dataListMayHaveChanged): |
| Only try to re-layout if the shadow tree has been created. |
| |
| * html/TextFieldInputType.cpp: |
| (WebCore::TextFieldInputType::isEmptyValue const): |
| Avoid creating the shadow subtree. |
| |
| (WebCore::TextFieldInputType::forwardEvent): |
| Move the element assertion up to be consistent with other functions. |
| |
| (WebCore::TextFieldInputType::innerTextElement const): |
| Don't assert, since this now can legitimately return null. |
| |
| * html/FileInputType.cpp: |
| (WebCore::FileInputType::disabledStateChanged): |
| (WebCore::FileInputType::attributeChanged): |
| * html/RangeInputType.cpp: |
| (WebCore::RangeInputType::disabledStateChanged): |
| (WebCore::RangeInputType::attributeChanged): |
| (WebCore::RangeInputType::setValue): |
| * html/TextFieldInputType.cpp: |
| (WebCore::TextFieldInputType::disabledStateChanged): |
| (WebCore::TextFieldInputType::readOnlyStateChanged): |
| (WebCore::TextFieldInputType::updatePlaceholderText): |
| (WebCore::TextFieldInputType::updateAutoFillButton): |
| (WebCore::TextFieldInputType::dataListMayHaveChanged): |
| Don't update the shadow tree contents if it hasn't been created yet. |
| createShadowTree is responsible for ensuring it creates the shadow |
| tree contents reflecting the current state. |
| |
| 2022-03-01 Ziran Sun <zsun@igalia.com> |
| |
| [Selection] Selection Range should be clamped by the current value length |
| https://bugs.webkit.org/show_bug.cgi?id=237210 |
| |
| Reviewed by Darin Adler. |
| |
| As per https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#set-the-selection-range, |
| if start or end "is greater than the length of the relevant value of the text control, then set it to |
| the length of the relevant value of the text control". |
| |
| This CL makes selection range clamp to the current value length. |
| |
| * html/HTMLTextFormControlElement.cpp: |
| (WebCore::HTMLTextFormControlElement::setSelectionRange): |
| |
| 2022-03-01 Matt Woodrow <mattwoodrow@apple.com> |
| |
| Handle perpendicular containing blocks when computing available logical height. |
| https://bugs.webkit.org/show_bug.cgi?id=236953 |
| |
| Reviewed by Dean Jackson. |
| |
| Handles the case where the containing block uses a perpendicular writing mode |
| to the current box, and we need to check the containing block's width in order |
| to determine height. |
| |
| Existing subgrid tests marked as passing. |
| These subgrid reftests were failing because the -expected files were rendering incorrectly |
| (which don't use subgrid). |
| |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::availableLogicalHeightUsing const): |
| |
| 2022-03-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [ATSPI] Remove layout tests checking children added/removed notifications |
| https://bugs.webkit.org/show_bug.cgi?id=237272 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Do not send children-changed notifications to WTR observers. |
| |
| * accessibility/atspi/AccessibilityAtspi.cpp: |
| (WebCore::AccessibilityAtspi::childrenChanged): |
| (WebCore::AccessibilityAtspi::notifyChildrenChanged const): Deleted. |
| * accessibility/atspi/AccessibilityAtspi.h: |
| |
| 2022-02-28 Diego Pino Garcia <dpino@igalia.com> |
| |
| [GTK] Unreviewed, non-unified build fix after 247791@main |
| |
| * platform/graphics/gbm/GBMDevice.h: |
| |
| 2022-02-28 Tyler Wilcock <tyler_w@apple.com> |
| |
| AX: WebKit should ignore empty modals rather than trapping focus inside them |
| https://bugs.webkit.org/show_bug.cgi?id=237163 |
| |
| Reviewed by Chris Fleizach and Andres Gonzalez. |
| |
| Given this markup: |
| |
| <div role="dialog" aria-modal="true"> |
| <div aria-hidden="true"> |
| <button>Close modal (inside modal)</button> |
| </div> |
| </div> |
| |
| There is no accessible content inside this modal, but WebKit traps user focus inside, |
| making the rest of the page completely inaccessible. |
| |
| With this patch we ignore modals that don't have accessible content. |
| We do this by walking the DOM to find any non-AX-ignored objects. |
| |
| Because determining whether or not an element is ignored is dependent |
| on modals present on the page, this patch moves the call to `ignoredFromModalPresence` |
| out of `AccessibilityObject::defaultObjectInclusion`, as this function is |
| downstream of `computeAccessibilityIsIgnored`, and we need to call |
| that on objects inside modal candidates. Without this move, we would |
| recurse infinitely in `AXObjectCache::modalElementHasAccessibleContent`. |
| |
| We now check whether an object is ignored due to modal presence in |
| `AccessibilityObject::accessibilityIsIgnored()`, so that function should |
| be used as the final say in determining whether an object is ignored. |
| |
| Test: accessibility/ignore-modals-without-any-content.html |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::modalElementHasAccessibleContent): |
| (WebCore::AXObjectCache::currentModalNode): |
| * accessibility/AXObjectCache.h: |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::defaultObjectInclusion const): |
| (WebCore::AccessibilityObject::accessibilityIsIgnored const): |
| * accessibility/AccessibilityObject.h: |
| (WebCore::AccessibilityObject::computeAccessibilityIsIgnored const): |
| |
| 2022-02-28 Simon Fraser <simon.fraser@apple.com> |
| |
| Compositing/paint invalidation with transforms |
| https://bugs.webkit.org/show_bug.cgi?id=233421 |
| <rdar://problem/85814854> |
| |
| Reviewed by Alan Bujtas. |
| |
| When changing transform from something like `translate(0)` to `translate3d(0, 0, 0) |
| scale(0.5, 0.5)`, we trigger compositing, and thus need to repaint the previous rect of the |
| layer in its old repaint container. However, the existing code would take the new transform |
| into account when computing that rect, thus dirtying a rect that is too small. |
| |
| To fix this, we need to use the cached repaint rects on RenderLayer for this repaint. |
| However, doing so revealed a bug (via |
| compositing/shared-backing/repaint-into-shared-backing.html) in how we compute repaint |
| cached repaint rects in the presence of shared backing. During a compositing update, if a |
| layer's composited state changed, we'd call computeRepaintRectsIncludingDescendants(), which |
| computes rect relative to the layer's repaint container. But at this time, the state of |
| backing sharing in BackingSharingState is in flux (we essentially don't know yet if a layer |
| can use shared backing). So we may compute and cache repaint rects relative to the wrong |
| container. |
| |
| To fix this, leverage the existing m_layersPendingRepaint logic, and delay computing the |
| repaint rects until we've established our final backing sharing configuration. |
| |
| Tests: compositing/repaint/composite-and-scale-change.html |
| compositing/shared-backing/repaint-into-shared-backing-become-composited.html |
| |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::setBackingProviderLayer): |
| (WebCore::RenderLayer::calculateClipRects const): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::BackingSharingState::issuePendingRepaints): |
| (WebCore::RenderLayerCompositor::updateBacking): |
| |
| 2022-02-28 Simon Fraser <simon.fraser@apple.com> |
| |
| No animation when scroll snap scroller is navigated with the keyboard |
| https://bugs.webkit.org/show_bug.cgi?id=236244 |
| |
| Reviewed by Tim Horton. |
| |
| Keyboard-driven scrolls in overflow didn't animate, simply because scrollAnimatorEnabled() |
| wasn't implemented for RenderLayerScrollableArea. |
| |
| I could not figure out a reliable way to test that we animated the scroll. |
| |
| * rendering/RenderLayerScrollableArea.cpp: |
| (WebCore::RenderLayerScrollableArea::scrollAnimatorEnabled const): |
| * rendering/RenderLayerScrollableArea.h: |
| |
| 2022-02-28 Jer Noble <jer.noble@apple.com> |
| |
| [Cocoa] Adopt -streamDataParser:didProvideContentKeySpecifier:forTrackID: delegate callback |
| https://bugs.webkit.org/show_bug.cgi?id=236109 |
| <rdar://problem/88785844> |
| |
| Reviewed by Eric Carlson. |
| |
| Re-land support after a rollout in r290311, this time with an off-by-default Experimental Feature |
| flag. |
| |
| In addition to checking whether the renderer classes support AVContentKeySession, also check whether |
| the RuntimeSetting has been enabled. This requires passing that setting through to the |
| MediaSessionManagerCocoa singleton, so it can be accessed from platform/. |
| |
| If the renderer support check succeeds and the setting is enabled, only then should the delegate for |
| AVStreamDataParser include support for the new -didProvideContentKeySpecifier callback. Subclass the |
| WebAVStreamDataParserListener into a new WebAVStreamDataParserWithKeySpecifierListener object, and |
| instantiate one or the other according to the support checks above. |
| |
| * page/RuntimeEnabledFeatures.cpp: |
| (WebCore::RuntimeEnabledFeatures::setSampleBufferContentKeySessionSupportEnabled): |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::sampleBufferContentKeySessionSupportEnabled const): |
| * platform/audio/cocoa/MediaSessionManagerCocoa.h: |
| * platform/audio/cocoa/MediaSessionManagerCocoa.mm: |
| (WebCore::MediaSessionManagerCocoa::setSampleBufferContentKeySessionSupportEnabled): |
| (WebCore::MediaSessionManagerCocoa::sampleBufferContentKeySessionSupportEnabled): |
| * platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm: |
| (-[WebAVStreamDataParserWithKeySpecifierListener streamDataParser:didProvideContentKeySpecifier:forTrackID:]): |
| (WebCore::SourceBufferParserAVFObjC::SourceBufferParserAVFObjC): |
| (-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeySpecifier:forTrackID:]): Deleted. |
| * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: |
| (WebCore::sampleBufferRenderersSupportKeySession): |
| |
| 2022-02-28 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Weak link AVPictureInPictureController |
| https://bugs.webkit.org/show_bug.cgi?id=237227 |
| <rdar://76011860> |
| |
| Reviewed by Brent Fulgham. |
| |
| Weak linking instead of soft linking should be a small performance improvement. |
| |
| * Configurations/WebCore.xcconfig: |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (WebCore::supportsPictureInPicture): |
| |
| 2022-02-28 Per Arne Vollan <pvollan@apple.com> |
| |
| Remove release assert when UI process is blocking IOSurface IOKit access |
| https://bugs.webkit.org/show_bug.cgi?id=237278 |
| |
| Reviewed by Darin Adler. |
| |
| Remove release assert in IOSurface::bytesPerRowAlignment() when UI process is blocking IOSurface IOKit access. |
| Instead, log this event, and return an appropriate value. |
| |
| * platform/graphics/cocoa/IOSurface.mm: |
| (WebCore::IOSurface::bytesPerRowAlignment): |
| |
| 2022-02-28 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, address feedback from Darin regarding r290610. |
| |
| * platform/graphics/Color.h: |
| (WebCore::add): |
| |
| 2022-02-28 Rob Buis <rbuis@igalia.com> |
| |
| Handle widow relayout differently |
| https://bugs.webkit.org/show_bug.cgi?id=235519 |
| |
| Reviewed by Alan Bujtas. |
| |
| Handle widow relayout differently to prevent function call recursion. |
| |
| Test: fast/multicol/widow-many-relayouts-crash.html |
| |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::layoutBlock): |
| (WebCore::RenderBlockFlow::relayoutToAvoidWidows): Deleted. |
| * rendering/RenderBlockFlow.h: |
| (WebCore::RenderBlockFlow::didBreakAtLineToAvoidWidow const): |
| |
| 2022-02-28 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: [Flexbox] Add options to show each area's CSS `order` and/or DOM index in the parent flex container |
| https://bugs.webkit.org/show_bug.cgi?id=237215 |
| |
| Reviewed by Patrick Angle. |
| |
| This will help developers better understand how CSS `order` and the DOM index of each flex |
| item interact and result in what's eventually rendered. |
| |
| * inspector/agents/InspectorDOMAgent.h: |
| * inspector/agents/InspectorDOMAgent.cpp: |
| (WebCore::InspectorDOMAgent::showFlexOverlay): |
| Pass along the optional boolean parameter `showOrderNumbers`. |
| |
| * inspector/InspectorOverlay.h: |
| (WebCore::InspectorOverlay::Highlight::FlexHighlightOverlay::encode const): |
| (WebCore::InspectorOverlay::Highlight::FlexHighlightOverlay::decode): |
| Add member `bool` for `showOrderNumbers` to `Flex::Config`. |
| Add member `Vector<InspectorOverlayLabel>` to `FlexHighlightOverlay` for drawing labels. |
| |
| * inspector/InspectorOverlay.cpp: |
| (WebCore::InspectorOverlay::drawFlexOverlay): |
| (WebCore::InspectorOverlay::buildFlexOverlay): |
| Use `showOrderNumbers` to (when enabled) add items to `Vector<InspectorOverlayLabel>` for |
| each flex item's computed CSS `order` and DOM index in the parent flex container. |
| |
| 2022-02-28 Chris Dumez <cdumez@apple.com> |
| |
| Adopt the modern Hasher more widely |
| https://bugs.webkit.org/show_bug.cgi?id=237262 |
| |
| Reviewed by Sam Weinig. |
| |
| * dom/MessagePortIdentifier.h: |
| (WebCore::add): |
| (WTF::MessagePortIdentifierHash::hash): |
| (WebCore::MessagePortIdentifier::hash const): Deleted. |
| * history/BackForwardItemIdentifier.h: |
| (WebCore::add): |
| (WTF::BackForwardItemIdentifierHash::hash): |
| (WebCore::BackForwardItemIdentifier::hash const): Deleted. |
| * loader/ResourceCryptographicDigest.h: |
| (WebCore::add): |
| (WTF::DefaultHash<WebCore::ResourceCryptographicDigest>::hash): |
| * platform/graphics/Color.h: |
| (WebCore::add): |
| (WebCore::Color::hash const): Deleted. |
| * platform/graphics/ColorHash.h: |
| (WTF::ColorHash::hash): |
| * platform/graphics/Font.cpp: |
| (WebCore::add): |
| (WebCore::CharacterFallbackMapKeyHash::hash): |
| * platform/graphics/FontCache.cpp: |
| (WebCore::add): |
| (WebCore::FontPlatformDataCacheKeyHash::hash): |
| (WebCore::FontCascadeCacheKeyHash::hash): Deleted. |
| * platform/graphics/FontCache.h: |
| (WebCore::add): |
| (WebCore::FontCascadeCacheKeyHash::hash): |
| * platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp: |
| (WebCore::add): |
| (WebCore::FontFamilySpecificationKeyHash::hash): |
| * platform/graphics/cocoa/SystemFontDatabaseCoreText.h: |
| (WebCore::add): |
| (WebCore::SystemFontDatabaseCoreText::CascadeListParameters::Hash::hash): |
| (WebCore::SystemFontDatabaseCoreText::CascadeListParameters::hash const): Deleted. |
| * platform/graphics/freetype/FontCacheFreeType.cpp: |
| (WebCore::add): |
| (WebCore::FallbackFontDescriptionKeyHash::hash): |
| |
| 2022-02-28 Aditya Keerthi <akeerthi@apple.com> |
| |
| [macOS] Unable to upload ".pages" files to file inputs accepting ".pages" and ".jpeg" files |
| https://bugs.webkit.org/show_bug.cgi?id=237219 |
| rdar://89482882 |
| |
| Reviewed by Tim Horton and Said Abou-Hallawa. |
| |
| In r264286, WebKit began transcoding images of an unsupported format |
| to a supported format, for file inputs that accepted image types. For |
| example, selecting a HEIF image in an input that accepts JPEG images |
| would transcode the selected image to a JPEG image. |
| |
| In order to determine when attempt transcoding, the logic added in |
| r264286 obtains the MIME type corresponding to the selected file's |
| extension, and compares that to the list of accepted MIME types. |
| If there is a mismatch, transcoding is attempted. |
| |
| The ".pages" extension does not have a well-defined MIME type in |
| NSURLFileTypeMappings. This is due to the fact that a the extension |
| maps to both a file and a package type. Consequently, the retrieved |
| MIME type for ".pages" files is an empty string. Following r227051, |
| when the file input also accepts an image type, WebKit attempts to |
| transcode these files, and any others that do not have a well-defined |
| MIME type. |
| |
| While the aforementioned behavior can be considered strange, it is not |
| an issue in practice, since WebKit will attempt to transcode the |
| image, fail to do so, and upload the original file. The failure is |
| detected in CGImageDestinationFinalize, which returns false if an image |
| was not successfully written. However, a recent regression in the |
| ImageIO framework is causing CGImageDestinationFinalize to return true, |
| even if image transcoding fails. This results in WebKit uploading a |
| zero byte JPEG file, when a user attempts to upload ".pages" files to |
| file inputs accepting ".pages" and ".jpeg" files. |
| |
| Ideally, the described issue would be resolved by a fix in ImageIO. |
| However, a more immediate solution exists in WebKit: only attempt to |
| transcode files to an accepted image type, if the file selected is |
| image. ".pages" files are not images, and WebKit should not attempt |
| to transcode them. See below for further explanation of the solution. |
| |
| Test: fast/forms/file/entries-api/pages-jpeg-open-panel.html |
| |
| * platform/graphics/cg/ImageUtilitiesCG.cpp: |
| (WebCore::transcodeImage): |
| |
| Prior to using ImageIO to perform transcoding, WebKit obtains a Uniform |
| Type Identifier for the selected file using CGImageSourceCreateWithURL |
| and CGImageSourceGetType. If the file is not an image, a null string is |
| returned. WebKit can use this information to avoid the transcoding |
| attempt, and avoid calls to ImageIO methods further down this method. |
| Specifically, this solution works around the ImageIO bug by avoiding |
| the call to CGImageDestinationFinalize for non-images. The solution is |
| also an overall improvement, as WebKit now avoids unnecessary calls to |
| multiple ImageIO methods, in cases where we know transcoding will fail. |
| |
| 2022-02-28 Simon Fraser <simon.fraser@apple.com> |
| |
| Revert r290548 |
| |
| It caused three tests to start failing. |
| |
| * rendering/RenderLayerScrollableArea.cpp: |
| (WebCore::RenderLayerScrollableArea::scrollAnimatorEnabled const): Deleted. |
| * rendering/RenderLayerScrollableArea.h: |
| |
| 2022-02-28 Antoine Quint <graouts@webkit.org> |
| |
| [web-animations] web-animations/interfaces/Animatable/getAnimations.html is a unique failure |
| https://bugs.webkit.org/show_bug.cgi?id=237271 |
| |
| Reviewed by Dean Jackson. |
| |
| Our computation for the relevant state did not account for the playback rate. We rewrite |
| the function to match the spec exactly. |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::computeRelevance): |
| |
| 2022-02-28 Pascal Abresch <nep@packageloss.eu> |
| |
| FTP EPLF does not handle directory |
| https://bugs.webkit.org/show_bug.cgi?id=45113 |
| |
| Reviewed by Darin Adler. |
| |
| The code used "!result.type" to check for an invalid type. However, |
| the first type in the FTPEntryType enum is FTPDirectoryEntry, so this |
| was actually returning true for directories, turning them into "junk" |
| entries which would not be listed. |
| |
| Since the code for EPLF can only result in either files, directories, |
| or uninitialized/junk entries, the check can be removed, returning |
| result.type is the correct thing to do in all 3 cases. |
| |
| Test: http/tests/misc/ftp-eplf-directory.py |
| |
| * loader/FTPDirectoryParser.cpp: |
| (WebCore::parseOneFTPLine): |
| |
| 2022-02-28 Youenn Fablet <youenn@apple.com> |
| |
| Ensure RemoteMediaPlayerProxy sets its resource owner to pixel buffers created by its player |
| https://bugs.webkit.org/show_bug.cgi?id=237200 |
| |
| Reviewed by Eric Carlson. |
| |
| Add API to set the resource owner for a player private. |
| In case player private is running in GPUProcess, use resource owner to mark pixel buffers as owned by the resource owner. |
| Covered by existing tests. |
| |
| * platform/graphics/MediaPlayerPrivate.h: |
| (WebCore::MediaPlayerPrivateInterface::setResourceOwner): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastPixelBuffer): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastPixelBuffer): |
| |
| 2022-02-28 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [ATSPI] Always expose table cells (layout and CSS) that have rendered text content |
| https://bugs.webkit.org/show_bug.cgi?id=237204 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| * accessibility/atspi/AccessibilityObjectAtspi.cpp: |
| (WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const): |
| |
| 2022-02-28 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][a11y] Test accessibility/gtk/xml-roles-exposed.html is failing since ATSPI switch |
| https://bugs.webkit.org/show_bug.cgi?id=237202 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Handle the special case of form item having unknown aria role to be exposed as landmark. |
| |
| * accessibility/atspi/AccessibilityObjectAtspi.cpp: |
| (WebCore::AccessibilityObjectAtspi::effectiveRole const): |
| |
| 2022-02-28 Antoine Quint <graouts@webkit.org> |
| |
| [web-animations] web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html is a unique failure |
| https://bugs.webkit.org/show_bug.cgi?id=237259 |
| |
| Reviewed by Dean Jackson. |
| |
| We incorrectly threw when processing a null or undefined value when an iterable was provided to setKeyframes(). |
| We now correctly insert an empty keyframe if such a value is provided. |
| |
| * animation/KeyframeEffect.cpp: |
| (WebCore::processIterableKeyframes): |
| |
| 2022-02-27 Said Abou-Hallawa <said@apple.com> |
| |
| [GPU Process] Deleted unneeded constructors from DisplayList::Recorder classes |
| https://bugs.webkit.org/show_bug.cgi?id=237261 |
| |
| Reviewed by Wenson Hsieh. |
| |
| This should have been done in r289594. |
| |
| * platform/graphics/displaylists/DisplayListRecorder.cpp: |
| (WebCore::DisplayList::Recorder::Recorder): |
| * platform/graphics/displaylists/DisplayListRecorder.h: |
| |
| 2022-02-27 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r290577. |
| https://bugs.webkit.org/show_bug.cgi?id=237264 |
| |
| Breaks ios-wk2 layout test. |
| |
| Reverted changeset: |
| |
| "Compute correct containing block override size for items that |
| are subgridden in one dimension only." |
| https://bugs.webkit.org/show_bug.cgi?id=236951 |
| https://commits.webkit.org/r290577 |
| |
| 2022-02-27 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Invoking "Markup Image" should preserve the existing selection range |
| https://bugs.webkit.org/show_bug.cgi?id=237242 |
| |
| Reviewed by Darin Adler. |
| |
| Move the implementation of `replaceNodeFromPasteboard` out of the macOS-specific implementation file and into |
| EditorCocoa instead, so that we can use it on both iOS and macOS to handle the "Markup Image" action. See WebKit |
| ChangeLog for more details. |
| |
| * editing/Editor.h: |
| * editing/cocoa/EditorCocoa.mm: |
| (WebCore::maybeCopyNodeAttributesToFragment): |
| (WebCore::Editor::replaceNodeFromPasteboard): |
| |
| Also make a few minor adjustments while we're moving this code: |
| - Make this take a reference instead of a pointer (the method always expects a non-null Node pointer anyways). |
| - Add a FIXME mentioning that we can just delete `setInsertionPasteboard` altogether once Mail compose on |
| macOS uses WebKit2. |
| - Unconditionally pass `false` for whether or not we should enable smart paste when replacing the node. This |
| prevents us from inserting spaces around the replacement image element when triggering the "Markup Image" |
| item. |
| - Use `makeRangeSelectingNode` instead of `makeRangeSelectingNodeContents` when selecting the node to replace. |
| This allows us to handle the case where the node to replace cannot contain children for editing (in |
| particular, image elements). |
| |
| Note that this codepath (`replaceNodeFromPasteboard`) is currently only exercised by WebKitLegacy service |
| controls code that was originally intended for use by Mail compose, but never ended up being used. |
| |
| * editing/mac/EditorMac.mm: |
| (WebCore::Editor::pasteWithPasteboard): |
| (WebCore::maybeCopyNodeAttributesToFragment): Deleted. |
| (WebCore::Editor::replaceNodeFromPasteboard): Deleted. |
| |
| 2022-02-27 Matt Woodrow <mattwoodrow@apple.com> |
| |
| Compute correct containing block override size for items that are subgridden in one dimension only. |
| https://bugs.webkit.org/show_bug.cgi?id=236951 |
| |
| Reviewed by Dean Jackson. |
| |
| Items that are subgridded in one dimension will be included in the track sizing algorithm of the |
| outer grid for that dimension. When measuring their size in the subgridded dimension, we need to |
| set their containing block size in the other (non-subgridded) dimension, which is only available |
| from the subgrid's track sizing, not the outer track sizes. |
| |
| This recurses up to set the override size on the subgrid element instead, and forces a layout |
| there, which should copy down subgrid track sizes and compute the other dimension, making it |
| available on the inner item we need. |
| |
| Test: imported/w3c/web-platform-tests/css/css-grid/subgrid/auto-track-sizing-002.html |
| |
| * rendering/GridLayoutFunctions.cpp: |
| (WebCore::GridLayoutFunctions::extraMarginForSubgridAncestors): |
| * rendering/GridLayoutFunctions.h: |
| * rendering/GridTrackSizingAlgorithm.cpp: |
| (WebCore::GridTrackSizingAlgorithmStrategy::updateOverridingContainingBlockContentSizeForChild const): |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::isSubgridOf): |
| * rendering/RenderGrid.h: |
| |
| 2022-02-27 Matt Woodrow <mattwoodrow@apple.com> |
| |
| Convert grid direction to be relative to subgrid when accounting for extra margin. |
| https://bugs.webkit.org/show_bug.cgi?id=236954 |
| |
| Reviewed by Dean Jackson. |
| |
| |direction| is passed as a direction relative to |grid|, so we need to convert it |
| to be a direction relative to the subgrid item in order to account for margin on |
| the correct edge. |
| |
| Marks existing test orthogonal-writing-mode-003.html as passing. |
| |
| * rendering/GridLayoutFunctions.cpp: |
| (WebCore::GridLayoutFunctions::marginLogicalSizeForChild): |
| |
| 2022-02-27 Chris Dumez <cdumez@apple.com> |
| |
| Omit template parameter for SetForScope<> variables |
| https://bugs.webkit.org/show_bug.cgi?id=237258 |
| |
| Reviewed by Darin Adler. |
| |
| * Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp: |
| (WebCore::IDBServer::MemoryBackingStoreTransaction::abort): |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::performDeferredCacheUpdate): |
| * bindings/js/JSCustomElementRegistryCustom.cpp: |
| (WebCore::JSCustomElementRegistry::define): |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::evaluateInWorld): |
| (WebCore::ScriptController::evaluateModule): |
| (WebCore::ScriptController::callInWorld): |
| (WebCore::ScriptController::executeJavaScriptURL): |
| * css/CSSFontSelector.cpp: |
| (WebCore::CSSFontSelector::addFontFaceRule): |
| * css/parser/CSSSelectorParser.cpp: |
| (WebCore::CSSSelectorParser::consumeCompoundSelector): |
| * dom/CustomElementReactionQueue.cpp: |
| (WebCore::CustomElementQueue::invokeAll): |
| * dom/Document.cpp: |
| (WebCore::Document::updateRenderTree): |
| (WebCore::Document::styleForElementIgnoringPendingStylesheets): |
| (WebCore::Document::destroyRenderTree): |
| (WebCore::Document::hitTest): |
| * dom/EventTarget.cpp: |
| (WebCore::EventTarget::fireEventListeners): |
| * dom/Microtasks.cpp: |
| (WebCore::MicrotaskQueue::performMicrotaskCheckpoint): |
| * dom/ScriptExecutionContext.cpp: |
| (WebCore::ScriptExecutionContext::forEachActiveDOMObject const): |
| * dom/Traversal.cpp: |
| (WebCore::NodeIteratorBase::acceptNode): |
| * editing/Editor.cpp: |
| (WebCore::Editor::cut): |
| (WebCore::Editor::copy): |
| (WebCore::Editor::copyFont): |
| (WebCore::Editor::paste): |
| (WebCore::Editor::pasteAsPlainText): |
| (WebCore::Editor::pasteAsQuotation): |
| (WebCore::Editor::pasteFont): |
| * history/BackForwardCache.cpp: |
| (WebCore::BackForwardCache::pruneToSizeNow): |
| (WebCore::BackForwardCache::removeAllItemsForPage): |
| * html/DOMTokenList.cpp: |
| (WebCore::DOMTokenList::updateAssociatedAttributeFromTokens): |
| * html/HTMLButtonElement.cpp: |
| (WebCore::HTMLButtonElement::defaultEventHandler): |
| * html/HTMLFormControlElement.cpp: |
| (WebCore::HTMLFormControlElement::focusAndShowValidationMessage): |
| * html/HTMLFormElement.cpp: |
| (WebCore::HTMLFormElement::reset): |
| (WebCore::HTMLFormElement::constructEntryList): |
| * html/HTMLTrackElement.cpp: |
| (WebCore::HTMLTrackElement::scheduleLoad): |
| * html/parser/CSSPreloadScanner.cpp: |
| (WebCore::CSSPreloadScanner::scan): |
| * html/shadow/TextControlInnerElements.cpp: |
| (WebCore::SearchFieldResultsButtonElement::resolveCustomStyle): |
| * html/track/LoadableTextTrack.cpp: |
| (WebCore::LoadableTextTrack::scheduleLoad): |
| * loader/ContentFilter.cpp: |
| (WebCore::ContentFilter::handleProvisionalLoadFailure): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::load): |
| (WebCore::FrameLoader::clearProvisionalLoadForPolicyCheck): |
| (WebCore::FrameLoader::dispatchBeforeUnloadEvent): |
| (WebCore::FrameLoader::loadDifferentDocumentItem): |
| * loader/cache/CachedRawResource.cpp: |
| (WebCore::CachedRawResource::updateBuffer): |
| * loader/cache/MemoryCache.cpp: |
| (WebCore::MemoryCache::pruneLiveResourcesToSize): |
| (WebCore::MemoryCache::pruneDeadResourcesToSize): |
| * page/Chrome.cpp: |
| (WebCore::Chrome::runModal const): |
| * page/ContextMenuController.cpp: |
| (WebCore::ContextMenuController::handleContextMenuEvent): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::suspendForBackForwardCache): |
| * page/DragController.cpp: |
| (WebCore::DragController::performDragOperation): |
| * page/EventSource.cpp: |
| (WebCore::EventSource::doExplicitLoadCancellation): |
| * page/FrameView.cpp: |
| (WebCore::FrameView::applyRecursivelyWithVisibleRect): |
| (WebCore::FrameView::updateEmbeddedObjects): |
| (WebCore::FrameView::autoSizeIfEnabled): |
| * page/FrameViewLayoutContext.cpp: |
| (WebCore::FrameViewLayoutContext::layout): |
| (WebCore::FrameViewLayoutContext::runAsynchronousTasks): |
| * page/csp/ContentSecurityPolicy.cpp: |
| (WebCore::ContentSecurityPolicy::didReceiveHeaders): |
| * page/ios/EventHandlerIOS.mm: |
| (WebCore::EventHandler::tryToBeginDragAtPoint): |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::commitTreeState): |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::handleWheelEventAfterMainThread): |
| * platform/PreviewConverter.cpp: |
| (WebCore::PreviewConverter::iterateClients): |
| (WebCore::PreviewConverter::replayToClient): |
| * platform/audio/PlatformMediaSession.cpp: |
| (WebCore::PlatformMediaSession::clientWillBeginPlayback): |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): |
| (WebCore::GraphicsLayerCA::commitLayerChangesAfterSublayers): |
| * platform/graphics/mac/WebLayer.mm: |
| (-[WebSimpleLayer renderInContext:]): |
| * platform/graphics/texmap/TextureMapperGL.cpp: |
| (WebCore::TextureMapperGL::drawTexture): |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica): |
| (WebCore::TextureMapperLayer::paintIntoSurface): |
| (WebCore::TextureMapperLayer::paintWithIntermediateSurface): |
| (WebCore::TextureMapperLayer::paintRecursive): |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::purgeBackingStores): |
| * platform/ios/LegacyTileLayer.mm: |
| (-[LegacyTileLayer renderInContext:]): |
| * platform/mac/ScrollbarThemeMac.mm: |
| (WebCore::ScrollbarThemeMac::paint): |
| * rendering/RenderFlexibleBox.cpp: |
| (WebCore::RenderFlexibleBox::applyStretchAlignmentToChild): |
| * rendering/RenderGeometryMap.cpp: |
| (WebCore::RenderGeometryMap::pushMappingsToAncestor): |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::computeVisibleRectInContainer const): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::flushPendingLayerChanges): |
| * rendering/RenderLayerScrollableArea.cpp: |
| (WebCore::RenderLayerScrollableArea::updateScrollbarsAfterLayout): |
| * rendering/RenderTable.cpp: |
| (WebCore::RenderTable::layout): |
| * rendering/svg/LegacyRenderSVGRoot.cpp: |
| (WebCore::LegacyRenderSVGRoot::layout): |
| * rendering/svg/RenderSVGResourceContainer.cpp: |
| (WebCore::RenderSVGResourceContainer::markAllClientsForInvalidation): |
| * rendering/svg/RenderSVGRoot.cpp: |
| (WebCore::RenderSVGRoot::layout): |
| * storage/StorageMap.cpp: |
| (WebCore::StorageMap::setItemIgnoringQuota): |
| * style/StyleBuilder.cpp: |
| (WebCore::Style::Builder::applyCustomProperty): |
| (WebCore::Style::Builder::applyCascadeProperty): |
| * style/StyleInvalidator.cpp: |
| (WebCore::Style::Invalidator::invalidateWithMatchElementRuleSets): |
| * style/StyleScope.cpp: |
| (WebCore::Style::Scope::createDocumentResolver): |
| (WebCore::Style::Scope::createOrFindSharedShadowTreeResolver): |
| (WebCore::Style::Scope::updateResolver): |
| * svg/SVGPathBlender.cpp: |
| (WebCore::SVGPathBlender::addAnimatedPath): |
| * workers/WorkerThread.cpp: |
| (WebCore::WorkerThread::evaluateScriptIfNecessary): |
| |
| 2022-02-27 Cameron McCormack <heycam@apple.com> |
| |
| Add a mechanism to request a UA shadow tree update before style |
| https://bugs.webkit.org/show_bug.cgi?id=237224 |
| |
| Reviewed by Antti Koivisto. |
| |
| SVG <use> elements register themselves with the document when their |
| shadow tree contents need updating, and this updating is done in |
| Document::resolveStyle. For lazy HTML <input> element UA shadow trees |
| (in bug 236747) we need something similar. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::resolveStyle): |
| (WebCore::Document::addElementWithPendingUserAgentShadowTreeUpdate): |
| (WebCore::Document::removeElementWithPendingUserAgentShadowTreeUpdate): |
| * dom/Document.h: |
| * dom/Element.h: |
| (WebCore::Element::updateUserAgentShadowTree): |
| * svg/SVGDocumentExtensions.cpp: |
| (WebCore::SVGDocumentExtensions::~SVGDocumentExtensions): Deleted. |
| (WebCore::SVGDocumentExtensions::addUseElementWithPendingShadowTreeUpdate): Deleted. |
| (WebCore::SVGDocumentExtensions::removeUseElementWithPendingShadowTreeUpdate): Deleted. |
| * svg/SVGDocumentExtensions.h: |
| (WebCore::SVGDocumentExtensions::useElementsWithPendingShadowTreeUpdate const): Deleted. |
| * svg/SVGUseElement.cpp: |
| (WebCore::SVGUseElement::insertedIntoAncestor): |
| (WebCore::SVGUseElement::removedFromAncestor): |
| (WebCore::SVGUseElement::updateUserAgentShadowTree): |
| (WebCore::SVGUseElement::invalidateShadowTree): |
| (WebCore::SVGUseElement::updateShadowTree): Deleted. |
| * svg/SVGUseElement.h: |
| |
| 2022-02-27 Antoine Quint <graouts@webkit.org> |
| |
| [web-animations] web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html is a unique failure |
| https://bugs.webkit.org/show_bug.cgi?id=237257 |
| |
| Reviewed by Dean Jackson. |
| |
| The spec has changed since we initially implemented Animation.playState and we missed one condition for |
| an animation's play state to be "idle". |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::playState const): |
| |
| 2022-02-27 Matt Woodrow <mattwoodrow@apple.com> |
| |
| Handle reverse flow direction when converting iterator coords for a subgrid |
| https://bugs.webkit.org/show_bug.cgi?id=236955 |
| |
| Reviewed by Dean Jackson. |
| |
| When recursing into a subgrid via createForSubgrid, we convert the iterator's |
| position into coordinates relative to the subgrid. This handles the case where |
| the subgrid has a reverse flow direction (RTL vs LTR) and swaps the position |
| to be relative to the opposite edge. |
| |
| Marks existing WPT grid-gap-007.html as passing |
| |
| * rendering/Grid.cpp: |
| (WebCore::GridIterator::createForSubgrid): |
| |
| 2022-02-27 Antoine Quint <graouts@webkit.org> |
| |
| [svg] flood-opacity should be clamped to the [0,1] range |
| https://bugs.webkit.org/show_bug.cgi?id=237253 |
| |
| Reviewed by Dean Jackson. |
| |
| * rendering/style/SVGRenderStyle.h: |
| (WebCore::SVGRenderStyle::setFloodOpacity): |
| |
| 2022-02-27 Antoine Quint <graouts@webkit.org> |
| |
| [svg] stroke-opacity should be clamped to the [0,1] range |
| https://bugs.webkit.org/show_bug.cgi?id=237254 |
| |
| Reviewed by Dean Jackson. |
| |
| * rendering/style/SVGRenderStyle.h: |
| (WebCore::SVGRenderStyle::setStrokeOpacity): |
| |
| 2022-02-27 Antoine Quint <graouts@webkit.org> |
| |
| [svg] stop-opacity should be clamped to the [0,1] range |
| https://bugs.webkit.org/show_bug.cgi?id=237255 |
| |
| Reviewed by Dean Jackson. |
| |
| * rendering/style/SVGRenderStyle.h: |
| (WebCore::SVGRenderStyle::setStopOpacity): |
| |
| 2022-02-27 Antoine Quint <graouts@webkit.org> |
| |
| [svg] fill-opacity should be clamped to the [0,1] range |
| https://bugs.webkit.org/show_bug.cgi?id=237252 |
| |
| Reviewed by Dean Jackson. |
| |
| * rendering/style/SVGRenderStyle.h: |
| (WebCore::SVGRenderStyle::setFillOpacity): |
| |
| 2022-02-27 Chris Dumez <cdumez@apple.com> |
| |
| Simplify SerializedScriptValue construction |
| https://bugs.webkit.org/show_bug.cgi?id=237241 |
| |
| Reviewed by Darin Adler. |
| |
| The 2 main factory functions for SerializedScriptValue now share the same code. |
| I also dropped some SerializedScriptValue API that was no longer useful. |
| Finally, I simplified factory functions for MessageEvent. |
| |
| * Modules/indexeddb/IDBValue.cpp: |
| (WebCore::IDBValue::IDBValue): |
| * Modules/webaudio/AudioWorkletNode.cpp: |
| (WebCore::AudioWorkletNode::create): |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::SerializedScriptValue::create): |
| (WebCore::SerializedScriptValue::toString const): |
| (WebCore::SerializedScriptValue::toString): Deleted. |
| * bindings/js/SerializedScriptValue.h: |
| (WebCore::SerializedScriptValue::wireBytes const): |
| (WebCore::SerializedScriptValue::SerializedScriptValue): |
| (WebCore::SerializedScriptValue::adopt): Deleted. |
| (WebCore::SerializedScriptValue::data const): Deleted. |
| (WebCore::SerializedScriptValue::toWireBytes const): Deleted. |
| * dom/BroadcastChannel.cpp: |
| (WebCore::BroadcastChannel::dispatchMessage): |
| * dom/MessageEvent.cpp: |
| (WebCore::MessageEvent::MessageEvent): |
| (WebCore::MessageEvent::create): |
| * dom/MessageEvent.h: |
| * dom/MessagePort.cpp: |
| (WebCore::MessagePort::dispatchMessages): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::postMessage): |
| * page/EventSource.cpp: |
| (WebCore::EventSource::dispatchMessageEvent): |
| * page/History.cpp: |
| (WebCore::History::stateObjectAdded): |
| * testing/Internals.cpp: |
| (WebCore::Internals::serializeObject const): |
| (WebCore::Internals::deserializeBuffer const): |
| * workers/WorkerMessagingProxy.cpp: |
| (WebCore::WorkerMessagingProxy::postMessageToWorkerObject): |
| (WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope): |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::postMessage): |
| * workers/shared/SharedWorkerGlobalScope.cpp: |
| (WebCore::SharedWorkerGlobalScope::postConnectEvent): |
| |
| 2022-02-27 Tim Nguyen <ntim@apple.com> |
| |
| Force -webkit-user-modify used style to readonly for inert nodes |
| https://bugs.webkit.org/show_bug.cgi?id=237244 |
| |
| Reviewed by Darin Adler. |
| |
| This disallows programmatic edition of contenteditable inert nodes. Edition via user-input is |
| already prevented by forcing pointer-events style to none. |
| |
| We create a seperate effectiveUserModify, similar to effectiveUserSelect/effectivePointerEvents, |
| to avoid changing the computed style. |
| |
| This behaviour also matches Blink & Gecko. |
| |
| Test: imported/w3c/web-platform-tests/inert/inert-and-contenteditable.tentative.html |
| |
| * dom/Node.cpp: |
| (WebCore::computeEditabilityFromComputedStyle): |
| * editing/ApplyBlockElementCommand.cpp: |
| (WebCore::ApplyBlockElementCommand::rangeForParagraphSplittingTextNodesIfNeeded): |
| * editing/ReplaceSelectionCommand.cpp: |
| (WebCore::ReplaceSelectionCommand::doApply): |
| * rendering/EventRegion.cpp: |
| (WebCore::EventRegion::unite): |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::styleWillChange): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::effectiveUserModify const): |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::TreeResolver::resolveElement): |
| |
| 2022-02-27 Dean Jackson <dino@apple.com> |
| |
| Loading a USDZ url as the main resource renders as garbage |
| https://bugs.webkit.org/show_bug.cgi?id=237240 |
| rdar://88767033 |
| |
| Reviewed by Antoine Quint. |
| |
| We can't render a USD document if the ModelDocument feature is not enabled. |
| |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::canShowMIMEType): |
| |
| 2022-02-27 Antoine Quint <graouts@webkit.org> |
| |
| [css-animations] implicit keyframes should be inserted after explicit keyframes with the same offset |
| https://bugs.webkit.org/show_bug.cgi?id=237246 |
| |
| Reviewed by Dean Jackson. |
| |
| The CSS Animations spec says the following about implicit keyframes generation: |
| |
| Let initial keyframe be the keyframe in keyframes with offset 0, timing function default timing |
| function and composite default composite. |
| |
| If there is no such keyframe, let initial keyframe be a new empty keyframe with offset 0, timing |
| function default timing function, composite |default composite, and add it to keyframes after the |
| last keyframe with offset 0. |
| |
| Let final keyframe be the keyframe in keyframes with offset 1, timing function default timing |
| function and composite default composite. |
| |
| If there is no such keyframe, let final keyframe be a new empty keyframe with offset 1, timing |
| function default timing function and composite default composite, and add it to keyframes after |
| the last keyframe with offset 1. |
| |
| Full details are at https://drafts.csswg.org/css-animations-2/#keyframes. |
| |
| The KeyframeList::insert() method does the right thing already by adding a new keyframe after all |
| other keyframes with that same offset, so all we need to do is to use this method rather than |
| specifying explicit indexes. |
| |
| * rendering/style/KeyframeList.cpp: |
| (WebCore::KeyframeList::fillImplicitKeyframes): |
| |
| 2022-02-27 Tim Nguyen <ntim@apple.com> |
| |
| Use hasAttributeWithoutSynchronisation for checking inert attribute in Adjuster::adjust |
| https://bugs.webkit.org/show_bug.cgi?id=237248 |
| |
| Reviewed by Dean Jackson. |
| |
| hasAttributeWithoutSynchronisation should be slightly faster than hasAttribute. |
| |
| * style/StyleAdjuster.cpp: |
| (WebCore::Style::Adjuster::adjust const): |
| |
| 2022-02-27 Tim Nguyen <ntim@apple.com> |
| |
| Optimize StyleSharingResolver inert checks |
| https://bugs.webkit.org/show_bug.cgi?id=237235 |
| |
| Reviewed by Youenn Fablet. |
| |
| inert is an boolean attribute, the only thing that matters for the StyleAdjuster |
| inertness adjustment is the presence of the attribute, not its value. E.g. |
| `inert=false` is the same as `inert=inert` or `inert=true`. |
| |
| This saves getting and comparing values for those attributes, and also allows |
| `inert=inert` and `inert=true` or `inert=false` to start sharing style. |
| |
| * style/StyleSharingResolver.cpp: |
| (WebCore::Style::SharingResolver::canShareStyleWithElement const): |
| |
| 2022-02-27 Youenn Fablet <youenn@apple.com> |
| |
| Simplify CVPixelBuffer data copies in SharedVideoFrameInfo |
| https://bugs.webkit.org/show_bug.cgi?id=237194 |
| |
| Reviewed by Eric Carlson. |
| |
| Remove use of vImageUnpremultiplyData_BGRA8888 which might not be correct for canvas data. |
| Make use of CVPixelBufferGetPlaneCount to share more code between monoplanar and biplanar formats. |
| |
| Covered by existing tests. |
| |
| * platform/cocoa/CoreVideoSoftLink.cpp: |
| * platform/cocoa/CoreVideoSoftLink.h: |
| * platform/cocoa/SharedVideoFrameInfo.mm: |
| (WebCore::SharedVideoFrameInfo::isReadWriteSupported const): |
| (WebCore::copyToCVPixelBufferPlane): |
| (WebCore::SharedVideoFrameInfo::createPixelBufferFromMemory): |
| (WebCore::SharedVideoFrameInfo::writePixelBuffer): |
| |
| 2022-02-26 Tim Nguyen <ntim@apple.com> |
| |
| Remove Node::deprecatedIsInert |
| https://bugs.webkit.org/show_bug.cgi?id=230845 |
| |
| Reviewed by Antti Koivisto. |
| |
| This change unfortunately regresses focusability state when dynamically setting inert, due to a cached |
| computed style invalidation bug. This is minor in practice, since focusability usually gets queried in |
| user-initiated ways, when style already has fully been updated. |
| |
| However, making this change will improve performance by avoiding a full DOM ancestor walk when there |
| is no inert attribute on the page, since we will only check a style bit after this patch. |
| |
| * dom/Element.cpp: |
| (WebCore::Element::isFocusable const): |
| (WebCore::Element::isFocusableWithoutResolvingFullStyle const): |
| (WebCore::Element::isVisibleWithoutResolvingFullStyle const): Deleted. |
| * dom/Element.h: |
| * dom/Node.cpp: |
| (WebCore::Node::deprecatedIsInert const): Deleted. |
| * dom/Node.h: |
| * html/HTMLAreaElement.cpp: |
| (WebCore::HTMLAreaElement::isFocusable const): |
| |
| 2022-02-26 Tyler Wilcock <tyler_w@apple.com> |
| |
| AX: Remove unnecessary AccessibilityRenderObject::init() override |
| https://bugs.webkit.org/show_bug.cgi?id=237239 |
| |
| Reviewed by Chris Fleizach. |
| |
| The implementation of AccessibilityRenderObject::init() just calls |
| AccessibilityNodeObject::init(), so we don't need it as an override. |
| |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::init): Deleted. |
| * accessibility/AccessibilityRenderObject.h: |
| |
| 2022-02-26 Chris Dumez <cdumez@apple.com> |
| |
| Drop Ref<>'s operator==() as it is a bit ambiguous / confusing |
| https://bugs.webkit.org/show_bug.cgi?id=237231 |
| |
| Reviewed by Darin Adler. |
| |
| Drop Ref<>'s operator==() as it is a bit ambiguous / confusing. Some people expect it to compare |
| pointers while other expect it to compare the values we hold references to. |
| It seems best to omit this operator and be explicit at call sites. |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp: |
| (WebCore::LibWebRTCRtpSenderBackend::startSource): |
| * svg/SVGDocumentExtensions.cpp: |
| (WebCore::SVGDocumentExtensions::removeElementToRebuild): |
| * svg/graphics/filters/SVGFilterBuilder.cpp: |
| (WebCore::SVGFilterBuilder::buildEffectExpression const): |
| |
| 2022-02-26 Kate Cheney <katherine_cheney@apple.com> |
| |
| Update CSP handling of javascript URLs |
| https://bugs.webkit.org/show_bug.cgi?id=236351 |
| <rdar://problem/88675827> |
| |
| Reviewed by Brent Fulgham. |
| |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::executeJavaScriptURL): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy): |
| (WebCore::createWindow): |
| * loader/SubframeLoader.cpp: |
| (WebCore::FrameLoader::SubframeLoader::requestFrame): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::setLocation): |
| * page/csp/ContentSecurityPolicy.cpp: |
| (WebCore::ContentSecurityPolicy::allowJavaScriptURLs const): |
| * page/csp/ContentSecurityPolicy.h: |
| |
| 2022-02-26 Alan Bujtas <zalan@apple.com> |
| |
| [RenderTreeBuilder] Clean up descendant floats when a block container becomes float |
| https://bugs.webkit.org/show_bug.cgi?id=237238 |
| <rdar://79960422> |
| |
| Reviewed by Antti Koivisto. |
| |
| When a block box becomes float, it forms a "lockdown" container for the descendant floats by establishing a BFC. |
| What it means is that such descendant floats can't intrude to sibling block containers anymore. |
| This patch ensures that we remove such floats from sibling (and their descendant) renderers. |
| |
| Test: fast/block/float/float-merge-anon-parent-crash.html |
| |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::normalizeTreeAfterStyleChange): |
| |
| 2022-02-26 Simon Fraser <simon.fraser@apple.com> |
| |
| No animation when scroll snap scroller is navigated with the keyboard |
| https://bugs.webkit.org/show_bug.cgi?id=236244 |
| |
| Reviewed by Tim Horton. |
| |
| Keyboard-driven scrolls in overflow didn't animate, simply because scrollAnimatorEnabled() |
| wasn't implemented for RenderLayerScrollableArea. |
| |
| I could not figure out a reliable way to test that we animated the scroll. |
| |
| * rendering/RenderLayerScrollableArea.cpp: |
| (WebCore::RenderLayerScrollableArea::scrollAnimatorEnabled const): |
| * rendering/RenderLayerScrollableArea.h: |
| |
| 2022-02-25 Simon Fraser <simon.fraser@apple.com> |
| |
| Scrollbars disappear when very long or wide |
| https://bugs.webkit.org/show_bug.cgi?id=237232 |
| <rdar://17540446> |
| |
| Reviewed by Tim Horton. |
| |
| Our tiling logic does not play nicely with AppKit's NSScrollerImps, probably because we |
| inadvertently unparent its layers. |
| |
| Fix by disallowing GraphicsLayers for scrollbars from going into tiled mode, for |
| both root and overflow scrollbars. |
| |
| Test: fast/scrolling/mac/scrollbars/very-wide-overlay-scrollbar.html |
| |
| * platform/graphics/GraphicsLayer.cpp: |
| (WebCore::GraphicsLayer::GraphicsLayer): |
| * platform/graphics/GraphicsLayer.h: |
| (WebCore::GraphicsLayer::setAllowsTiling): |
| (WebCore::GraphicsLayer::allowsTiling const): |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::requiresTiledLayer const): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateOverflowControlsLayers): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::updateOverflowControlsLayers): |
| |
| 2022-02-25 Said Abou-Hallawa <said@apple.com> |
| |
| [GPU Process] Implement RemoteImageBufferProxy::drawConsuming() |
| https://bugs.webkit.org/show_bug.cgi?id=236685 |
| rdar://89007426 |
| |
| Reviewed by Simon Fraser. |
| |
| Assert ImageBuffer::drawConsuming() does not draw into its backend before |
| it is destroyed. |
| |
| * platform/graphics/ConcreteImageBuffer.h: |
| |
| 2022-02-25 Alejandro G. Castro <alex@igalia.com> and Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [GTK][WPE][WC] Move ANGLE context initialisation to GraphicsContextGLTextureMapper::initialize |
| https://bugs.webkit.org/show_bug.cgi?id=236769 |
| |
| Reviewed by Chris Lord. |
| |
| This is the first step for the long-term plan to share more code |
| in GraphicsContextGLANGLE between Cocoa and non-Cocoa, and |
| minimise the ifdefs in GraphicsContextGLANGLE. |
| |
| We are moving the context initialisation and holding to |
| GraphicsContextGLTextureMapper, away from |
| GCGLANGLELayer::ANGLEContext and the layer classes in case of |
| COORDINATED_GRAPHICS. Later on, Cocoa and non-Cocoa can merge |
| their ::initialize. |
| |
| No new tests, this is a refactoring patch. |
| |
| * platform/TextureMapper.cmake: |
| * platform/graphics/angle/GraphicsContextGLANGLE.h: |
| * platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.cpp: |
| (Nicosia::GCGLANGLELayer::GCGLANGLELayer): |
| (Nicosia::GCGLANGLELayer::ANGLEContext::errorString): Deleted. |
| (Nicosia::GCGLANGLELayer::ANGLEContext::lastErrorString): Deleted. |
| (Nicosia::GCGLANGLELayer::ANGLEContext::createContext): Deleted. |
| (Nicosia::GCGLANGLELayer::ANGLEContext::ANGLEContext): Deleted. |
| (Nicosia::GCGLANGLELayer::ANGLEContext::~ANGLEContext): Deleted. |
| (Nicosia::GCGLANGLELayer::ANGLEContext::makeContextCurrent): Deleted. |
| (Nicosia::GCGLANGLELayer::ANGLEContext::platformContext const): Deleted. |
| (Nicosia::GCGLANGLELayer::ANGLEContext::platformDisplay const): Deleted. |
| (Nicosia::GCGLANGLELayer::ANGLEContext::platformConfig const): Deleted. |
| (Nicosia::GCGLANGLELayer::makeContextCurrent): Deleted. |
| (Nicosia::GCGLANGLELayer::platformContext const): Deleted. |
| (Nicosia::GCGLANGLELayer::platformDisplay const): Deleted. |
| (Nicosia::GCGLANGLELayer::platformConfig const): Deleted. |
| * platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.h: |
| * platform/graphics/opengl/GraphicsContextGLOpenGL.cpp: |
| (WebCore::GraphicsContextGLOpenGL::initialize): |
| * platform/graphics/opengl/GraphicsContextGLOpenGL.h: |
| * platform/graphics/texmap/ANGLEContext.cpp: Removed. |
| * platform/graphics/texmap/ANGLEContext.h: Removed. |
| * platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp: |
| (WebCore::GraphicsContextGLTextureMapper::create): |
| (WebCore::GraphicsContextGLTextureMapper::GraphicsContextGLTextureMapper): |
| (WebCore::GraphicsContextGLTextureMapper::layerContentsDisplayDelegate): |
| (WebCore::GraphicsContextGLTextureMapper::platformInitialize): |
| (): Deleted. |
| * platform/graphics/texmap/GraphicsContextGLTextureMapper.h: |
| * platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp: |
| (WebCore::GraphicsContextGLANGLE::GraphicsContextGLANGLE): |
| (WebCore::GraphicsContextGLTextureMapper::platformInitializeContext): |
| (WebCore::GraphicsContextGLTextureMapper::platformInitialize): |
| (WebCore::GraphicsContextGLANGLE::platformDisplay const): |
| (WebCore::GraphicsContextGLANGLE::platformConfig const): |
| (WebCore::GraphicsContextGLANGLE::makeContextCurrent): |
| * platform/graphics/texmap/PlatformLayerDisplayDelegate.h: Copied from Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapper.h. |
| * platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp: |
| (WebCore::TextureMapperGCGLPlatformLayer::TextureMapperGCGLPlatformLayer): |
| (WebCore::TextureMapperGCGLPlatformLayer::~TextureMapperGCGLPlatformLayer): |
| (WebCore::TextureMapperGCGLPlatformLayer::paintToTextureMapper): |
| (WebCore::TextureMapperGCGLPlatformLayer::makeContextCurrent): Deleted. |
| (WebCore::TextureMapperGCGLPlatformLayer::platformContext const): Deleted. |
| (WebCore::TextureMapperGCGLPlatformLayer::platformDisplay const): Deleted. |
| (WebCore::TextureMapperGCGLPlatformLayer::platformConfig const): Deleted. |
| (WebCore::TextureMapperGCGLPlatformLayer::proxy const): Deleted. |
| (WebCore::TextureMapperGCGLPlatformLayer::swapBuffersIfNeeded): Deleted. |
| * platform/graphics/texmap/TextureMapperGCGLPlatformLayer.h: |
| |
| 2022-02-25 Chris Dumez <cdumez@apple.com> |
| |
| Use the modern Hasher more in Content Extensions code |
| https://bugs.webkit.org/show_bug.cgi?id=237228 |
| |
| Reviewed by Darin Adler. |
| |
| * contentextensions/CombinedFiltersAlphabet.cpp: |
| (WebCore::ContentExtensions::add): |
| (WebCore::ContentExtensions::TermCreatorTranslator::hash): |
| * contentextensions/CombinedFiltersAlphabet.h: |
| (WebCore::ContentExtensions::CombinedFiltersAlphabet::TermPointerHash::hash): |
| * contentextensions/ContentExtensionRule.h: |
| (WebCore::ContentExtensions::add): |
| (WebCore::ContentExtensions::TriggerHash::hash): |
| * contentextensions/Term.h: |
| (WebCore::ContentExtensions::Term::Group::operator== const): |
| (WebCore::ContentExtensions::add): |
| (WebCore::ContentExtensions::Term::CharacterSet::hash const): Deleted. |
| (WebCore::ContentExtensions::Term::Group::hash const): Deleted. |
| (WebCore::ContentExtensions::Term::hash const): Deleted. |
| |
| 2022-02-25 Brandon Stewart <brandonstewart@apple.com> |
| |
| Do not trigger didFail during FileReaderLoader Destruction |
| https://bugs.webkit.org/show_bug.cgi?id=237060 |
| |
| Reviewed by Darin Adler. |
| |
| Setting cancel() instead of terminate() will prevent the didFail() method from being triggered. |
| This method has the unfortunate side effect of trying to allocate memory, which is not allowed when |
| under going a sweep event. |
| |
| * fileapi/FileReaderLoader.cpp: |
| (WebCore::FileReaderLoader::~FileReaderLoader): |
| |
| 2022-02-25 Brent Fulgham <bfulgham@apple.com> |
| |
| WebKit continues to render PDF images in Captive Portal mode |
| https://bugs.webkit.org/show_bug.cgi?id=237120 |
| <rdar://problem/89384234> |
| |
| Reviewed by Chris Dumez. |
| |
| WebKit should handle all PDF processing in PDF.JS when in Captive Portal mode. However, testing |
| revealed that PDF images are still rendered natively. As a first step we should bypass the |
| native PDF code path. A subsequent patch will handle in PDF.JS. |
| |
| We need to thread the state of the Captive Portal setting through the image loading code so that |
| WebKit knows to bail out before consuming the PDF data in the native decoder. |
| |
| Tested by TestWebKitAPI. |
| |
| * page/RuntimeEnabledFeatures.h: Add new flag for PDF image decoding state. |
| * platform/graphics/Image.cpp: |
| (WebCore::Image::create): Check whether PDF image decoding should be permitted. |
| |
| 2022-02-25 Sihui Liu <sihui_liu@apple.com> |
| |
| Regression(r242729): m_origin in IDBDatabaseIdentifier is incorrect |
| https://bugs.webkit.org/show_bug.cgi?id=237044 |
| |
| Reviewed by Youenn Fablet. |
| |
| In r242729, we swapped top origin and opening origin in m_origin (it is a ClientOrigin) of IDBDatabaseIdentifier. |
| This can cause trouble since IndexedDB operation will be processed by wrong OriginStorageManager |
| (OriginStorageManager is identified by ClientOrigin). To fix this issue, we need to swap it back. |
| |
| New test: IndexedDB.IndexedDBThirdPartyStorageLayout |
| |
| * Modules/indexeddb/IDBDatabaseIdentifier.cpp: |
| (WebCore::IDBDatabaseIdentifier::IDBDatabaseIdentifier): |
| (WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot const): |
| (WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot): |
| * Modules/indexeddb/IDBDatabaseIdentifier.h: |
| * Modules/indexeddb/server/IDBServer.cpp: |
| (WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions): |
| (WebCore::IDBServer::IDBServer::diskUsage): |
| |
| 2022-02-25 Chris Dumez <cdumez@apple.com> |
| |
| SharedArrayBuffer posted to AudioWorkletProcessor is not actually shared with the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=237144 |
| <rdar://problem/89479641> |
| |
| Reviewed by Darin Adler. |
| |
| SerializedScriptValue only maintains SharedArrayBuffers when constructed with SerializationContext::WorkerPostMessage. |
| With other SerializationContext values, such as the default one that AudioWorkletNode was using, SharedArrayBuffers |
| are serialized as simple arrays and are no longer shared. |
| |
| This patch passes SerializationContext::WorkerPostMessage when constructing the SerializedScriptValue since we want |
| SharedArrayBuffer sharing and since a worklet is essentially a worker. |
| |
| Note that this patch allows passing a SharedArrayBuffer to an AudioWorklet upon construction via processorOptions. |
| However, SharedArrayBuffer still won't be shared if sent later on via a MessagePort.postMessage() call. This is |
| because MessagePort.postMessage() routes all messages via the network process, even if the destination ends up |
| being within the same process as the sender (See Bug 220038). |
| |
| Test: http/wpt/webaudio/the-audio-api/the-audioworklet-interface/shared-array-buffer.https.html |
| |
| * Modules/webaudio/AudioWorkletNode.cpp: |
| (WebCore::AudioWorkletNode::create): |
| |
| 2022-02-25 Jer Noble <jer.noble@apple.com> |
| |
| [Cocoa] HLS + Modern EME key rotation causes playback to stall indefinitely |
| https://bugs.webkit.org/show_bug.cgi?id=237214 |
| <rdar://89372801> |
| |
| Reviewed by Eric Carlson. |
| |
| In r275916, Ref was changed to perform pointer equality in its operator==. This caused |
| takeUnexpectedKeyRequestForInitializationData() to fail to find key requests matching |
| the initData passed in through MediaKeySession. |
| |
| Fix the equality test by calling .get() on the Ref, which causes the `==` to resolve to |
| FragmentedSharedBuffer::operator==(). |
| |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::takeUnexpectedKeyRequestForInitializationData): |
| |
| 2022-02-25 Alex Christensen <achristensen@webkit.org> |
| |
| Re-add YouTubePluginReplacement, removed in r285252 |
| https://bugs.webkit.org/show_bug.cgi?id=237182 |
| <rdar://89148022> |
| |
| Reviewed by Chris Dumez. |
| |
| Tests: security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html |
| security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html |
| security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html |
| security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html |
| |
| Its removal broke webpages that work in Chrome and Firefox, so back it comes. |
| |
| * Headers.cmake: |
| * Modules/plugins: Copied from Source/WebCore/Modules/plugins. |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/JSPluginElementFunctions.cpp: |
| (WebCore::pluginScriptObject): |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateImplementation): |
| * bindings/scripts/test/JS/JSTestPluginInterface.cpp: |
| (WebCore::JSTestPluginInterface::visitChildrenImpl): |
| * html/HTMLPlugInElement.cpp: |
| (WebCore::HTMLPlugInElement::createElementRenderer): |
| (WebCore::HTMLPlugInElement::didAddUserAgentShadowRoot): |
| (WebCore::registrar): |
| (WebCore::pluginReplacementForType): |
| (WebCore::HTMLPlugInElement::requestObject): |
| (WebCore::HTMLPlugInElement::scriptObjectForPluginReplacement): |
| * html/HTMLPlugInElement.h: |
| (WebCore::HTMLPlugInElement::pluginReplacementScriptObject): |
| * html/shadow/ShadowPseudoIds.cpp: |
| (WebCore::ShadowPseudoIds::webkitPluginReplacement): |
| * html/shadow/ShadowPseudoIds.h: |
| * html/shadow/YouTubeEmbedShadowElement.cpp: |
| * html/shadow/YouTubeEmbedShadowElement.h: |
| * page/Settings.yaml: |
| |
| 2022-02-25 J Pascoe <j_pascoe@apple.com> |
| [WebAuthn] Use default pubKeyCredParams if empty in makeCredential |
| https://bugs.webkit.org/show_bug.cgi?id=237109 |
| rdar://problem/89376484 |
| |
| Reviewed by Brent Fulgham. |
| |
| The Web Authentication level 2 spec was updated to clarify that |
| a set of default pubKeyCredParams should be used if the list |
| supplied by the RP is empty. This patch starts using |
| the default and updates associated tests. |
| |
| * Modules/webauthn/AuthenticatorCoordinator.cpp: |
| (WebCore::AuthenticatorCoordinator::create const): |
| * Modules/webauthn/PublicKeyCredentialCreationOptions.h: |
| * Modules/webauthn/WebAuthenticationConstants.h: |
| |
| 2022-02-25 Chris Dumez <cdumez@apple.com> |
| |
| Use modern Hasher in ContentExtensionsActions |
| https://bugs.webkit.org/show_bug.cgi?id=237157 |
| |
| Reviewed by Darin Adler. |
| |
| * contentextensions/ContentExtensionActions.h: |
| (WebCore::ContentExtensions::add): |
| (WTF::DefaultHash<WebCore::ContentExtensions::RedirectAction>::hash): |
| (WTF::DefaultHash<WebCore::ContentExtensions::ModifyHeadersAction>::hash): |
| (WebCore::ContentExtensions::VariantHasher::hash): Deleted. |
| (WebCore::ContentExtensions::VectorHasher::hash): Deleted. |
| |
| 2022-02-25 Alan Bujtas <zalan@apple.com> |
| |
| [Tables] Incorrect table sizing when colgroup comes after tbody |
| https://bugs.webkit.org/show_bug.cgi?id=237205 |
| <rdar://86582214> |
| |
| Reviewed by Antti Koivisto. |
| |
| Let's use the colgroup for table sizing even when it comes after any thead, tbody, tfoot, and tr elements. |
| This makes WebKit match other rendering engines (see https://src.chromium.org/viewvc/blink?revision=159442&view=revision) |
| |
| Test: fast/table/table-sizing-fails-when-colgroup-comes-after-content.html |
| |
| * rendering/RenderTable.cpp: |
| (WebCore::RenderTable::firstColumn const): |
| * rendering/RenderTableCol.cpp: |
| (WebCore::RenderTableCol::nextColumn const): |
| |
| 2022-02-25 Youenn Fablet <youenn@apple.com> |
| |
| Non-simple CORS preflight fails due to cache-control header |
| https://bugs.webkit.org/show_bug.cgi?id=236837 |
| <rdar://problem/89382796> |
| |
| Reviewed by Chris Dumez. |
| |
| We fixed cache-control in https://bugs.webkit.org/show_bug.cgi?id=233916. |
| The fix to make the website work is to ensure that Content-Type is not cleared when going to service worker. |
| Covered by updated tests. |
| |
| * Modules/beacon/NavigatorBeacon.cpp: |
| |
| 2022-02-25 Zan Dobersek <zdobersek@igalia.com> |
| |
| [GTK][WPE] Uncouple libgbm, libdrm dependencies from ANGLE functionality |
| https://bugs.webkit.org/show_bug.cgi?id=237199 |
| |
| Reviewed by Chris Lord. |
| |
| Unconditionally build with libgbm and libdrm cflags and linker flags |
| since these will be used outside of ANGLE functionality. |
| |
| Remove USE(ANGLE) && USE(NICOSIA) guards from GBMDevice files. |
| |
| * PlatformGTK.cmake: |
| * PlatformWPE.cmake: |
| * platform/graphics/gbm/GBMDevice.cpp: |
| * platform/graphics/gbm/GBMDevice.h: |
| |
| 2022-02-25 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| AX: List item marker not exposed when not a direct child of a list item |
| https://bugs.webkit.org/show_bug.cgi?id=236777 |
| <rdar://problem/89082485> |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| It can happen that the marker is not a direct child of a list item, in which case the marker is ignored and not |
| exposed to ATs. |
| |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::parentObjectUnignored const): In case of list marker find the marker list item. |
| (WebCore::AccessibilityRenderObject::markerRenderer const): Helper to return the list item marker renderer. |
| (WebCore::AccessibilityRenderObject::addListItemMarker): Add always the list item marker as the first child of |
| list items. |
| (WebCore::AccessibilityRenderObject::addChildren): Do not add list item marker children, they will be added to |
| the right parent in addListItemMarker(). |
| * accessibility/AccessibilityRenderObject.h: |
| |
| 2022-02-25 Youenn Fablet <youenn@apple.com> |
| |
| Optimize black frame sending in MediaRecorderPrivate |
| https://bugs.webkit.org/show_bug.cgi?id=237027 |
| |
| Reviewed by Kimmo Kinnunen. |
| |
| Allow generating black frames as IOSurfaces. |
| Covered by existing tests. |
| |
| * platform/graphics/cv/CVUtilities.h: |
| * platform/graphics/cv/CVUtilities.mm: |
| |
| 2022-02-24 Matt Woodrow <mattwoodrow@apple.com> |
| |
| Simplify grid RTL handling |
| https://bugs.webkit.org/show_bug.cgi?id=236694 |
| |
| Reviewed by Dean Jackson. |
| |
| The previous code stored columns in logical order (column 0 is the rightmost physical column), but the positions were offset |
| using the physical left border, padding and content distribution offset. This hybrid physical/logical coordinate space |
| made for tricky conversions into the final coordinate space. |
| This changes the stored column positions to use purely logical coordinates, and does a single direction swap (by subtracting |
| from the width) at the end. |
| |
| No tests added, this refactoring is covered by a large number of existing WPTs. |
| |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::populateGridPositionsForDirection): |
| (WebCore::RenderGrid::resolveAutoStartGridPosition const): |
| (WebCore::RenderGrid::resolveAutoEndGridPosition const): |
| (WebCore::RenderGrid::gridAreaBreadthForOutOfFlowChild): |
| (WebCore::RenderGrid::logicalOffsetForOutOfFlowChild const): |
| (WebCore::RenderGrid::gridAreaPositionForOutOfFlowChild const): |
| (WebCore::RenderGrid::computeContentPositionAndDistributionOffset): |
| (WebCore::RenderGrid::translateRTLCoordinate const): |
| (WebCore::RenderGrid::logicalOffsetForChild const): |
| (WebCore::RenderGrid::translateOutOfFlowRTLCoordinate const): Deleted. |
| * rendering/RenderGrid.h: |
| |
| 2022-02-24 Jer Noble <jer.noble@apple.com> |
| |
| [Refactor] Adopt LoggerHelper in Logging EME classes |
| https://bugs.webkit.org/show_bug.cgi?id=234319 |
| |
| Reviewed by Eric Carlson. |
| |
| In order to pass down a logger() and logIdentifier() to the platform/ |
| classes, modify LegacyCDMSessionClient to be a CanMakeWeakPtr class, |
| so it can be passed around by reference and automatically invalidated |
| when the client is destroyed. Then modify LegacyCDMSessionClient to |
| provide a logger() and logIdentifier() to callers. |
| |
| * Modules/encryptedmedia/CDM.cpp: |
| (WebCore::CDM::CDM): |
| * Modules/encryptedmedia/CDM.h: |
| (WebCore::CDM::logIdentifier const): |
| * Modules/encryptedmedia/MediaKeySession.cpp: |
| (WebCore::MediaKeySession::generateRequest): |
| (WebCore::MediaKeySession::load): |
| (WebCore::MediaKeySession::update): |
| (WebCore::MediaKeySession::close): |
| (WebCore::MediaKeySession::remove): |
| (WebCore::MediaKeySession::updateKeyStatuses): |
| (WebCore::MediaKeySession::sessionClosed): |
| * Modules/encryptedmedia/MediaKeys.cpp: |
| (WebCore::MediaKeys::MediaKeys): |
| (WebCore::MediaKeys::createSession): |
| (WebCore::MediaKeys::setServerCertificate): |
| * Modules/encryptedmedia/MediaKeys.h: |
| * Modules/encryptedmedia/legacy/LegacyCDM.cpp: |
| (WebCore::LegacyCDM::createSession): |
| * Modules/encryptedmedia/legacy/LegacyCDMPrivate.h: |
| * Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.cpp: |
| (WebCore::LegacyCDMPrivateClearKey::createSession): |
| * Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.h: |
| * Modules/encryptedmedia/legacy/LegacyCDMPrivateMediaPlayer.cpp: |
| (WebCore::CDMPrivateMediaPlayer::createSession): |
| * Modules/encryptedmedia/legacy/LegacyCDMPrivateMediaPlayer.h: |
| * Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp: |
| (WebCore::CDMSessionClearKey::CDMSessionClearKey): |
| * Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.h: |
| * Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp: |
| (WebCore::WebKitMediaKeySession::create): |
| (WebCore::WebKitMediaKeySession::WebKitMediaKeySession): |
| (WebCore::WebKitMediaKeySession::~WebKitMediaKeySession): |
| (WebCore::WebKitMediaKeySession::close): |
| (WebCore::WebKitMediaKeySession::generateKeyRequest): |
| (WebCore::WebKitMediaKeySession::update): |
| (WebCore::WebKitMediaKeySession::sendMessage): |
| (WebCore::WebKitMediaKeySession::sendError): |
| (WebCore::WebKitMediaKeySession::logChannel const): |
| * Modules/encryptedmedia/legacy/WebKitMediaKeySession.h: |
| * Modules/encryptedmedia/legacy/WebKitMediaKeys.cpp: |
| (WebCore::WebKitMediaKeys::createSession): |
| * Modules/encryptedmedia/legacy/WebKitMediaKeys.h: |
| * platform/encryptedmedia/CDMFactory.h: |
| * platform/encryptedmedia/CDMInstance.h: |
| (WebCore::CDMInstance::setLogIdentifier): |
| (WebCore::CDMInstance::setLogger): Deleted. |
| * platform/encryptedmedia/CDMInstanceSession.h: |
| (WebCore::CDMInstanceSession::setLogIdentifier): |
| (WebCore::CDMInstanceSession::setLogger): Deleted. |
| * platform/encryptedmedia/CDMPrivate.h: |
| (WebCore::CDMPrivate::setLogIdentifier): |
| (WebCore::CDMPrivate::setLogger): Deleted. |
| * platform/encryptedmedia/clearkey/CDMClearKey.cpp: |
| (WebCore::CDMFactoryClearKey::createCDM): |
| * platform/encryptedmedia/clearkey/CDMClearKey.h: |
| * platform/graphics/LegacyCDMSession.h: |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::MediaPlayer::createSession): |
| * platform/graphics/MediaPlayer.h: |
| * platform/graphics/MediaPlayerPrivate.h: |
| (WebCore::MediaPlayerPrivateInterface::createSession): |
| * platform/graphics/avfoundation/CDMFairPlayStreaming.cpp: |
| (WebCore::CDMFactoryFairPlayStreaming::createCDM): |
| (WebCore::CDMPrivateFairPlayStreaming::CDMPrivateFairPlayStreaming): |
| (WebCore::CDMPrivateFairPlayStreaming::supportsConfiguration const): |
| (WebCore::CDMPrivateFairPlayStreaming::createInstance): |
| (WebCore::CDMPrivateFairPlayStreaming::setLogger): Deleted. |
| * platform/graphics/avfoundation/CDMFairPlayStreaming.h: |
| * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.h: |
| * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm: |
| (WebCore::CDMPrivateMediaSourceAVFObjC::createSession): |
| * platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp: |
| (WebCore::CDMSessionAVFoundationCF::CDMSessionAVFoundationCF): |
| * platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h: |
| * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp: |
| (WebCore::MediaPlayerPrivateAVFoundationCF::createSession): |
| * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h: |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h: |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::CDMInstanceFairPlayStreamingAVFObjC): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::setServerCertificate): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::setStorageDirectory): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvideRequest): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvideRenewingRequest): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvidePersistableRequest): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::didFailToProvideRequest): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::requestDidSucceed): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::shouldRetryRequestForReason): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::groupSessionIdentifierChanged): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::externalProtectionStatusDidChangeForContentKeyRequest): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::CDMInstanceSessionFairPlayStreamingAVFObjC): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestLicense): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::loadSession): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::closeSession): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequests): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRenewingRequest): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didFailToProvideRequest): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestDidSucceed): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::outputObscuredDueToInsufficientExternalProtectionChanged): |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::protectionStatusForDisplayID const): |
| (WebCore::CDMInstanceFairPlayStreamingAVFObjC::setLogger): Deleted. |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::setLogger): Deleted. |
| * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h: |
| (WebCore::CDMSessionAVContentKeySession::logClassName const): |
| * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm: |
| (WebCore::CDMSessionAVContentKeySession::CDMSessionAVContentKeySession): |
| (WebCore::CDMSessionAVContentKeySession::generateKeyRequest): |
| (WebCore::CDMSessionAVContentKeySession::releaseKeys): |
| (WebCore::CDMSessionAVContentKeySession::update): |
| (WebCore::CDMSessionAVContentKeySession::addParser): |
| (WebCore::CDMSessionAVContentKeySession::removeParser): |
| (WebCore::CDMSessionAVContentKeySession::generateKeyReleaseMessage): |
| * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm: |
| (WebCore::CDMSessionAVFoundationObjC::CDMSessionAVFoundationObjC): |
| (WebCore::CDMSessionAVFoundationObjC::~CDMSessionAVFoundationObjC): |
| (WebCore::CDMSessionAVFoundationObjC::generateKeyRequest): |
| (WebCore::CDMSessionAVFoundationObjC::update): |
| (WebCore::CDMSessionAVFoundationObjC::playerDidReceiveError): |
| (WebCore::CDMSessionAVFoundationObjC::logChannel const): |
| * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h: |
| (WebCore::CDMSessionAVStreamSession::logClassName const): |
| * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm: |
| (WebCore::CDMSessionAVStreamSession::CDMSessionAVStreamSession): |
| (WebCore::CDMSessionAVStreamSession::~CDMSessionAVStreamSession): |
| (WebCore::CDMSessionAVStreamSession::generateKeyRequest): |
| (WebCore::CDMSessionAVStreamSession::releaseKeys): |
| (WebCore::CDMSessionAVStreamSession::update): |
| (WebCore::CDMSessionAVStreamSession::addParser): |
| (WebCore::CDMSessionAVStreamSession::removeParser): |
| (WebCore::CDMSessionAVStreamSession::generateKeyReleaseMessage): |
| * platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h: |
| (WebCore::CDMSessionMediaSourceAVFObjC::logger const): |
| (WebCore::CDMSessionMediaSourceAVFObjC::logIdentifier const): |
| * platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm: |
| (WebCore::CDMSessionMediaSourceAVFObjC::CDMSessionMediaSourceAVFObjC): |
| (WebCore::CDMSessionMediaSourceAVFObjC::logChannel const): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createSession): |
| * platform/graphics/gstreamer/eme/CDMThunder.cpp: |
| (WebCore::CDMFactoryThunder::createCDM): |
| * platform/graphics/gstreamer/eme/CDMThunder.h: |
| * testing/LegacyMockCDM.cpp: |
| (WebCore::LegacyMockCDM::createSession): |
| (WebCore::MockCDMSession::MockCDMSession): |
| * testing/LegacyMockCDM.h: |
| * testing/MockCDMFactory.cpp: |
| (WebCore::MockCDMFactory::createCDM): |
| * testing/MockCDMFactory.h: |
| |
| 2022-02-24 Oriol Brufau <obrufau@igalia.com> |
| |
| [css-cascade] Support 'revert' in @keyframes |
| https://bugs.webkit.org/show_bug.cgi?id=237073 |
| |
| Reviewed by Darin Adler. |
| |
| Resolver::styleForKeyframe was constructing a RenderStyle with only the |
| styles specified in the @keyframes. But not taking into account the UA |
| and user rules that affect the element meant that 'revert' was broken. |
| Since Builder::applyProperty didn't find the declarations from other |
| origins, 'revert' just behaved as 'unset'. |
| |
| This patch solves it by detecting if the @keyframes has a 'revert' value |
| and in that case it collects the UA and user rules so that it can be |
| resolved properly. |
| |
| Tests: imported/w3c/web-platform-tests/css/css-cascade/revert-val-006.html |
| imported/w3c/web-platform-tests/css/css-cascade/revert-val-007.html |
| imported/w3c/web-platform-tests/css/css-cascade/revert-val-008.html |
| imported/w3c/web-platform-tests/css/css-cascade/revert-val-010.html |
| |
| * style/ElementRuleCollector.cpp: |
| (WebCore::Style::ElementRuleCollector::addAuthorKeyframeRules): |
| * style/ElementRuleCollector.h: |
| * style/StyleResolver.cpp: |
| (WebCore::Style::Resolver::styleForKeyframe): |
| |
| 2022-02-24 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION(r290436): fix build failures |
| https://bugs.webkit.org/show_bug.cgi?id=237149 |
| |
| Reviewed by Tim Horton. |
| |
| * Modules/applepay/cocoa/PaymentSessionErrorCocoa.mm: |
| (WebCore::PaymentSessionError::sessionError const): |
| * rendering/RenderThemeCocoa.mm: |
| (WebCore::RenderThemeCocoa::adjustApplePayButtonStyle const): |
| Replace `PAL::get_PassKitCore_*()` with `#define` declared in `<pal/cocoa/PassKitSoftLink.h>`. |
| |
| 2022-02-24 Megan Gardner <megan_gardner@apple.com> |
| |
| Add percent decoding to Scroll to Text Fragment parsing. |
| https://bugs.webkit.org/show_bug.cgi?id=236818 |
| |
| Reviewed by Chris Dumez. |
| |
| Leverage URL parser to percent decode parsed text directives in |
| scroll to text fragment implementation. |
| |
| Tests: http/wpt/html/dom/scroll-to-text-fragment/scroll-to-text-fragment-start-emoji.html |
| http/wpt/html/dom/scroll-to-text-fragment/scroll-to-text-fragment-start-sentence.html |
| http/wpt/html/dom/scroll-to-text-fragment/scroll-to-text-fragment-start.html |
| |
| * dom/FragmentDirectiveParser.cpp: |
| (WebCore::FragmentDirectiveParser::parseFragmentDirective): |
| |
| 2022-02-24 Alan Bujtas <zalan@apple.com> |
| |
| [IFC][Integration] Enable non-paginated vertical-rl writing mode |
| https://bugs.webkit.org/show_bug.cgi?id=236897 |
| |
| Reviewed by Antti Koivisto. |
| |
| * layout/integration/LayoutIntegrationCoverage.cpp: |
| (WebCore::LayoutIntegration::canUseForStyle): |
| |
| 2022-02-24 Chris Dumez <cdumez@apple.com> |
| |
| Fix bad logging in SharedWorkerObjectConnection::notifyWorkerObjectOfLoadCompletion() |
| https://bugs.webkit.org/show_bug.cgi?id=237146 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Fix bad logging in SharedWorkerObjectConnection::notifyWorkerObjectOfLoadCompletion(). |
| It was logging an error even when the load succeeded. |
| |
| * workers/shared/SharedWorkerObjectConnection.cpp: |
| (WebCore::SharedWorkerObjectConnection::notifyWorkerObjectOfLoadCompletion): |
| |
| 2022-02-24 Kate Cheney <katherine_cheney@apple.com> |
| |
| Update CSP console logging |
| https://bugs.webkit.org/show_bug.cgi?id=232216 |
| <rdar://problem/89322580> |
| |
| Reviewed by Brent Fulgham. |
| |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::willSendRequestInternal): |
| (WebCore::SubresourceLoader::originalHeaders const): |
| * page/csp/ContentSecurityPolicy.cpp: |
| (WebCore::ContentSecurityPolicy::allowResourceFromSource const): |
| (WebCore::ContentSecurityPolicy::allowWorkerFromSource const): |
| (WebCore::ContentSecurityPolicy::allowScriptFromSource const): |
| (WebCore::ContentSecurityPolicy::allowStyleFromSource const): |
| |
| 2022-02-24 Alan Bujtas <zalan@apple.com> |
| |
| [LFC][IFC] Non-orthogonal inline block boxes keep their baseline on ideographic lines |
| https://bugs.webkit.org/show_bug.cgi?id=236946 |
| |
| Reviewed by Antti Koivisto. |
| |
| This is similar to the logic in RenderBlock::baselinePosition for inline block boxes. |
| |
| * layout/formattingContexts/inline/InlineLineBoxBuilder.cpp: |
| (WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes): |
| (WebCore::Layout::LineBoxBuilder::adjustIdeographicBaselineIfApplicable): |
| * layout/integration/LayoutIntegrationBoxTree.cpp: |
| (WebCore::LayoutIntegration::BoxTree::buildTree): |
| * layout/integration/LayoutIntegrationLineLayout.cpp: |
| (WebCore::LayoutIntegration::LineLayout::updateLayoutBoxDimensions): |
| * rendering/RenderBlock.h: |
| |
| 2022-02-24 Alan Bujtas <zalan@apple.com> |
| |
| [IFC][Integration] verticalLogicalMargin returns incorrect values for vertical-rl |
| https://bugs.webkit.org/show_bug.cgi?id=237138 |
| |
| Reviewed by Antti Koivisto. |
| |
| This was caused by an accidental copy/paste. |
| |
| * layout/integration/LayoutIntegrationLineLayout.cpp: |
| (WebCore::LayoutIntegration::verticalLogicalMargin): also switch over to "switch". |
| |
| 2022-02-24 Devin Rousso <drousso@apple.com> |
| |
| [Apple Pay] switch from `PassKit/*` to `PassKit[Core,UI]/*` |
| https://bugs.webkit.org/show_bug.cgi?id=237091 |
| <rdar://problem/81085862> |
| |
| Reviewed by Tim Horton. |
| |
| * Modules/applepay/cocoa/PaymentSessionErrorCocoa.mm: |
| (WebCore::PaymentSessionError::sessionError const): |
| * rendering/RenderThemeCocoa.mm: |
| (WebCore::RenderThemeCocoa::adjustApplePayButtonStyle const): |
| |
| 2022-02-24 Frédéric Wang <fwang@igalia.com> |
| |
| RELEASE_ASSERT(!renderer()); in WebCore::Node::~Node() + 479 (Node.cpp:366) |
| https://bugs.webkit.org/show_bug.cgi?id=235380 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| RenderTreeUpdater::tearDownRenderers() browse the composed tree to tear down descendants. |
| However, element with a shadow root are handled specially in |
| ComposedTreeIterator::ComposedTreeIterator(), they have to be handled specially by calling |
| a tearDownLeftoverShadowHostChildren(). This patch does the same for slot elements which |
| are also handled specially in ComposedTreeIterator(). It also makes names within |
| tearDownLeftoverShadowHostChildren() more generic. This in particular fixes a release assert |
| when a slot with pseudo elements children is torn down. |
| |
| Test: fast/shadow-dom/slot-with-pseudo-element-children-renderer-teardown.html |
| |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::tearDownRenderers): Also call tearDownLeftoverShadowHostChildren |
| for a slot element and add a comment pointing to the method corresponding to these special |
| cases. |
| (WebCore::RenderTreeUpdater::tearDownLeftoverChildrenOfComposedTree): Renamed to remove "shadow host". |
| * rendering/updating/RenderTreeUpdater.h: Ditto. |
| |
| 2022-02-24 Alan Bujtas <zalan@apple.com> |
| |
| [IFC][Integration] Adjust hittest coords when in flipped writing mode |
| https://bugs.webkit.org/show_bug.cgi?id=237103 |
| |
| Reviewed by Antti Koivisto. |
| |
| This is similar to what we do in LegacyInlineFlowBox::nodeAtPoint. |
| |
| * layout/integration/LayoutIntegrationLineLayout.cpp: |
| (WebCore::LayoutIntegration::flippedRectForWritingMode): |
| (WebCore::LayoutIntegration::flippedPointForWritingMode): |
| (WebCore::LayoutIntegration::LineLayout::hitTest): |
| |
| 2022-02-24 Kimmo Kinnunen <kkinnunen@apple.com> |
| |
| LibWebRTCCodecs, -Proxy create and communicate the RemoteVideoFrameProxy incorrectly |
| https://bugs.webkit.org/show_bug.cgi?id=237083 |
| |
| Reviewed by Youenn Fablet. |
| |
| Add functions to set media sample ownership identity if the underlying object |
| supports the feature. |
| |
| * platform/MediaSample.h: |
| (WebCore::MediaSample::setOwnershipIdentity): |
| * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h: |
| * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm: |
| (WebCore::MediaSampleAVFObjC::setOwnershipIdentity): |
| * platform/graphics/cv/VideoFrameCV.h: |
| * platform/graphics/cv/VideoFrameCV.mm: |
| (WebCore::VideoFrameCV::setOwnershipIdentity): |
| |
| 2022-02-24 Martin Robinson <mrobinson@webkit.org> |
| |
| Implement logical properties for CSS overscroll-behavior |
| https://bugs.webkit.org/show_bug.cgi?id=237080 |
| |
| Reviewed by Simon Fraser. |
| |
| No new tests. This is covered by existing WPT tests. |
| |
| Add support for overscroll-behavior-block and overscroll-behavior-inline, the logical versions |
| of the overscroll behavior properties. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::ComputedStyleExtractor::valueForPropertyInStyle): |
| * css/CSSProperties.json: |
| * css/parser/CSSParserContext.cpp: |
| (WebCore::CSSParserContext::isPropertyRuntimeDisabled const): |
| * css/parser/CSSParserFastPaths.cpp: |
| (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue): |
| (WebCore::CSSParserFastPaths::isKeywordPropertyID): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::CSSPropertyParser::parseSingleValue): |
| |
| 2022-02-24 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. [GTK] Mark GLContextGLX.cpp as no-unify |
| |
| * SourcesGTK.txt: |
| |
| 2022-02-23 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r290284. |
| https://bugs.webkit.org/show_bug.cgi?id=237131 |
| |
| It is preventing the fuzzer from finding other bugs |
| |
| Reverted changeset: |
| |
| "Make input element UA shadow tree creation lazy" |
| https://bugs.webkit.org/show_bug.cgi?id=236747 |
| https://commits.webkit.org/r290284 |
| |
| 2022-02-23 Tim Nguyen <ntim@apple.com> |
| |
| Use of showModalDialog should appear as a warning in WI console |
| https://bugs.webkit.org/show_bug.cgi?id=237046 |
| |
| Reviewed by Devin Rousso. |
| |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::showModalDialog): |
| |
| 2022-02-23 Chris Dumez <cdumez@apple.com> |
| |
| Modernize / simplify ScrollingStateTree a bit |
| https://bugs.webkit.org/show_bug.cgi?id=237111 |
| |
| Reviewed by Simon Fraser. |
| |
| Modernize / simplify ScrollingStateTree a bit. |
| |
| * page/scrolling/ScrollingStateTree.cpp: |
| (WebCore::nodeTypeAndParentMatch): |
| Simplify function body to be on one line and make function static since it doesn't |
| need an instance. |
| |
| (WebCore::nodeWasReattachedRecursive): |
| Make function static since it doesn't need an instance. |
| |
| (WebCore::ScrollingStateTree::createUnparentedNode): |
| - Pass a reference instead of pointer |
| |
| (WebCore::ScrollingStateTree::insertNode): |
| - Use template deduction for Ref<> |
| - Drop unnecessarily 0-check for parentID since stateNodeForID(parentID) would have |
| returned null and we would have returned early a few lines above. |
| |
| (WebCore::ScrollingStateTree::unparentNode): |
| (WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode): |
| - Use RefPtr type for protectedNode based on the variable naming. Previously, auto |
| would have deduced to a raw pointer. |
| |
| (WebCore::ScrollingStateTree::detachAndDestroySubtree): |
| (WebCore::ScrollingStateTree::clear): |
| Pass more references instead of pointers. |
| |
| (WebCore::ScrollingStateTree::commit): |
| use auto and std::exchange() to make the code a bit more concise. |
| |
| (WebCore::ScrollingStateTree::removeNodeAndAllDescendants): |
| Take a reference in parameter instead of a raw pointer since the pointer couldn't |
| be null. |
| |
| (WebCore::ScrollingStateTree::recursiveNodeWillBeRemoved): |
| - Take a reference in parameter instead of a raw pointer since the pointer couldn't |
| be null. |
| - Rename currNode to currentNode per WebKit coding style. |
| |
| (WebCore::ScrollingStateTree::willRemoveNode): |
| Take a reference in parameter instead of a raw pointer since the pointer couldn't |
| be null. |
| |
| (WebCore::ScrollingStateTree::stateNodeForID const): |
| Rewrite function in a more concise way by calling HashMap::get() instead of HashMap::find(). |
| |
| (WebCore::reconcileLayerPositionsRecursive): |
| - Make function static since it doesn't need an instance |
| - Rename currNode to currentNode per WebKit coding style |
| |
| (WebCore::ScrollingStateTree::reconcileViewportConstrainedLayerPositions): |
| Make function a bit more concise by not doing an early return. |
| |
| (showScrollingStateTree): |
| Take in a reference instead of a raw pointer. |
| |
| (WebCore::ScrollingStateTree::nodeTypeAndParentMatch const): Deleted. |
| (WebCore::ScrollingStateTree::nodeWasReattachedRecursive): Deleted. |
| (WebCore::ScrollingStateTree::reconcileLayerPositionsRecursive): Deleted. |
| * page/scrolling/ScrollingStateTree.h: |
| |
| 2022-02-23 Robert Jenner <Jenner@apple.com> |
| |
| Unreviewed, reverting r290351 and r290404. |
| |
| Broke the build after revert of initial commit (r290348) |
| Rebases no longer needed due to revert |
| |
| Reverted changesets: |
| |
| "Use of showModalDialog should appear as a warning in WI |
| console" |
| https://bugs.webkit.org/show_bug.cgi?id=237046 |
| https://commits.webkit.org/r290351 |
| |
| "Use of showModalDialog should appear as a warning in WI |
| console" |
| https://bugs.webkit.org/show_bug.cgi?id=237046 |
| https://commits.webkit.org/r290404 |
| |
| 2022-02-23 Robert Jenner <Jenner@apple.com> |
| |
| Unreviewed, reverting r290348. |
| |
| Broke a test, slowing down EWS. |
| |
| Reverted changeset: |
| |
| "Create a DOMWindow::printWarningMessage method and start |
| using it in DOMWindow.cpp" |
| https://bugs.webkit.org/show_bug.cgi?id=237047 |
| https://commits.webkit.org/r290348 |
| |
| 2022-02-23 Alan Bujtas <zalan@apple.com> |
| |
| [IFC][Integration] Flip accumulatedOffset to take writing mode into account when hittesting across formatting contexts. |
| https://bugs.webkit.org/show_bug.cgi?id=237094 |
| |
| Reviewed by Antti Koivisto. |
| |
| Both paint and hittest need coord flip (vertical writing mode here) when jumping through formatting context boundaries. |
| |
| * layout/integration/LayoutIntegrationLineLayout.cpp: |
| (WebCore::LayoutIntegration::flippedContentOffsetIfNeeded): |
| (WebCore::LayoutIntegration::LineLayout::paint): |
| (WebCore::LayoutIntegration::LineLayout::hitTest): |
| |
| 2022-02-23 Chris Dumez <cdumez@apple.com> |
| |
| Adopt more widely the new URL constructor that takes in a String |
| https://bugs.webkit.org/show_bug.cgi?id=237099 |
| |
| Reviewed by Darin Adler. |
| |
| * Modules/paymentrequest/PaymentRequest.cpp: |
| (WebCore::convertAndValidatePaymentMethodIdentifier): |
| * css/parser/CSSParserContext.cpp: |
| (WebCore::CSSParserContext::completeURL const): |
| * dom/Document.cpp: |
| (WebCore::Document::referrer): |
| * html/DOMURL.cpp: |
| (WebCore::DOMURL::revokeObjectURL): |
| * html/HTMLAnchorElement.cpp: |
| (WebCore::HTMLAnchorElement::parsePrivateClickMeasurement const): |
| * inspector/InspectorFrontendHost.cpp: |
| (WebCore::InspectorFrontendHost::didNavigateExtensionTab): |
| (WebCore::InspectorFrontendHost::inspectedPageDidNavigate): |
| * inspector/agents/InspectorPageAgent.cpp: |
| (WebCore::InspectorPageAgent::didClearWindowObjectInWorld): |
| * page/SecurityOrigin.cpp: |
| (WebCore::SecurityOrigin::extractInnerURL): |
| * platform/cocoa/NetworkExtensionContentFilter.mm: |
| (WebCore::NetworkExtensionContentFilter::willSendRequest): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::load): |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): |
| (WebCore::MediaPlayerPrivateGStreamer::loadNextLocation): |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (convertPlaybinURI): |
| * platform/network/soup/URLSoup.cpp: |
| (WebCore::soupURIToURL): |
| * platform/win/PasteboardWin.cpp: |
| (WebCore::filesystemPathFromUrlOrTitle): |
| * testing/MockPaymentCoordinator.cpp: |
| (WebCore::MockPaymentCoordinator::showPaymentUI): |
| * workers/service/ServiceWorkerRegistrationKey.cpp: |
| (WebCore::ServiceWorkerRegistrationKey::fromDatabaseKey): |
| * workers/service/server/RegistrationDatabase.cpp: |
| (WebCore::RegistrationDatabase::importRecords): |
| |
| 2022-02-23 J Pascoe <j_pascoe@apple.com> |
| |
| [WebAuthn] Improve error message for missing pubKeyCredParams |
| https://bugs.webkit.org/show_bug.cgi?id=235421 |
| rdar://87884875 |
| |
| Reviewed by Brent Fulgham. |
| |
| We have seen confusion from library authors around the language |
| used in this error not indicating enough information about what |
| the problem is. This patch adds additional information, useful |
| to developers seeing this error. |
| |
| * Modules/webauthn/AuthenticatorCoordinator.cpp: |
| (WebCore::AuthenticatorCoordinator::create const): |
| |
| 2022-02-23 Alan Bujtas <zalan@apple.com> |
| |
| [IFC][Integration] LineLayout::firstLinePhysicalBaseline/lastLineLogicalBaseline should flip box baseline value for vertical-lr |
| https://bugs.webkit.org/show_bug.cgi?id=237090 |
| |
| Reviewed by Antti Koivisto. |
| |
| * layout/integration/LayoutIntegrationLineLayout.cpp: |
| (WebCore::LayoutIntegration::LineLayout::firstLinePhysicalBaseline const): |
| (WebCore::LayoutIntegration::LineLayout::lastLineLogicalBaseline const): |
| (WebCore::LayoutIntegration::LineLayout::firstInlineBoxRect const): |
| |
| 2022-02-23 J Pascoe <j_pascoe@apple.com> |
| |
| Prevent use of PDFKit when using PDF.js |
| https://bugs.webkit.org/show_bug.cgi?id=237052 |
| rdar://89251696 |
| |
| Reviewed by Tim Horton. |
| |
| Add WEBCORE_EXPORT in order to use isPDFMIMEType. |
| |
| * platform/MIMETypeRegistry.h: |
| |
| 2022-02-23 Alan Bujtas <zalan@apple.com> |
| |
| [IFC][Integration] LineLayout::firstInlineBoxRect should flip the rect coordinates for vertical-rl |
| https://bugs.webkit.org/show_bug.cgi?id=237036 |
| |
| Reviewed by Antti Koivisto and Darin Adler. |
| |
| This is similar to what RenderInline::firstInlineBoxTopLeft does. |
| |
| * layout/integration/LayoutIntegrationLineLayout.cpp: |
| (WebCore::LayoutIntegration::LineLayout::firstInlineBoxRect const): |
| |
| 2022-02-23 J Pascoe <j_pascoe@apple.com> |
| |
| [WebAuthn] userHandle not marked nullable in _WKWebAuthenticationAssertionResponse |
| https://bugs.webkit.org/show_bug.cgi?id=237043 |
| rdar://89317740 |
| |
| Reviewed by Brent Fulgham. |
| |
| The userHandle is a nullable field on UserEntity. This patch changes |
| various API/SPI to allow passing null userHandle. |
| |
| * Modules/webauthn/AuthenticatorAssertionResponse.cpp: |
| (WebCore::AuthenticatorAssertionResponse::create): |
| (WebCore::AuthenticatorAssertionResponse::AuthenticatorAssertionResponse): |
| * Modules/webauthn/AuthenticatorAssertionResponse.h: |
| |
| 2022-02-23 Antti Koivisto <antti@apple.com> |
| |
| [CSS Container Queries] offsetWidth/Height and similar should update layout for container queries |
| https://bugs.webkit.org/show_bug.cgi?id=237079 |
| |
| Reviewed by Simon Fraser. |
| |
| Fix |
| |
| css/css-contain/container-queries/inline-size-containment.html |
| css/css-contain/container-queries/inline-size-containment-vertical-rl.html |
| |
| * dom/Document.cpp: |
| (WebCore::Document::updateLayout): |
| |
| Make iterative instead of recursive. |
| |
| (WebCore::Document::updateLayoutIfDimensionsOutOfDate): |
| |
| Check for query containers. |
| Call local updateLayout instead of the FrameViewLayoutContext one. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::updateLayoutAndStyleIfNeededRecursive): |
| * style/StyleScope.cpp: |
| (WebCore::Style::Scope::updateQueryContainerState): |
| |
| Add protection against infinite layout/invalidation cycle with unstable layouts. |
| |
| * style/StyleScope.h: |
| |
| 2022-02-23 Andres Gonzalez <andresg_22@apple.com> |
| |
| Fix for assert crash in AccessibilityRenderObject::visiblePositionForIndex. |
| https://bugs.webkit.org/show_bug.cgi?id=236795 |
| rdar://89025180 |
| |
| Reviewed by Chris Fleizach. |
| |
| Test: accessibility/native-text-control-attributed-string.html |
| |
| In some cases like the one described in the bug, AccessibilityRenderObject::visiblePositionForIndex |
| is passed an index greater than the length of the text actually contained |
| in the text control. This triggers this assert that verifies that you can |
| round-trip from index to VisiblePosition and back to index. This patch |
| does a bounds check in the index and adjust if necessary. |
| The test exercise this method through the JS AccessibilityUIElement::attributedStringForRange |
| for both <input> of type text and password. |
| |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::visiblePositionForIndex const): |
| |
| 2022-02-23 Diego Pino Garcia <dpino@igalia.com> |
| |
| [GTK] Unreviewed, build fix for Debian Stable after r290366 |
| |
| * platform/graphics/gstreamer/GStreamerVideoSinkCommon.cpp: |
| (webKitVideoSinkSetMediaPlayerPrivate): |
| |
| 2022-02-23 Jer Noble <jer.noble@apple.com> |
| |
| REGRESSION (r287574): ASSERTION FAILED: !m_impl || !m_shouldEnableAssertions || m_impl->wasConstructedOnMainThread() == isMainThread() under WebCore::AVTrackPrivateAVFObjCImpl::initializeAssetTrack() |
| https://bugs.webkit.org/show_bug.cgi?id=235168 |
| <rdar://problem/87518939> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Use runOnMainThread() from within WebCore, as it will dispatch to the correct thread when |
| running under iOS/WebKitLegacy. |
| |
| * platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm: |
| (WebCore::AVTrackPrivateAVFObjCImpl::initializeAssetTrack): |
| |
| 2022-02-23 Youenn Fablet <youenn@apple.com> |
| |
| RemoteVideoFrameObjectHeap::getVideoFrameBuffer can use base class pixelBuffer accessor |
| https://bugs.webkit.org/show_bug.cgi?id=237020 |
| |
| Reviewed by Kimmo Kinnunen. |
| |
| No change of behavior. |
| Covered by existing tests. |
| |
| * platform/graphics/cv/VideoFrameCV.h: |
| (WebCore::VideoFrameC$V::pixelBuffer const: Mark it as final. |
| |
| 2022-02-23 Zan Dobersek <zdobersek@igalia.com> |
| |
| [GStreamer] Add WebKitDMABufVideoSink |
| https://bugs.webkit.org/show_bug.cgi?id=236883 |
| |
| Reviewed by Philippe Normand. |
| |
| Add custom WebKitDMABufVideoSink sink that is able to accept decoded |
| dmabuf or raw data in a range of RGB-like or YUV formats. |
| |
| The sink is pretty straightforward, in large part mirroring the |
| WebKitGLVideoSink implementation. The formats that (at the moment) we |
| can correctly handle inside the TextureMapper-based graphics pipeline |
| are combined with both the dmabuf or raw memory type during the caps |
| construction. Like the GL counterpart, the received samples are passed |
| on to the associated MediaPlayerPrivateGStreamer object. The common |
| integration into the MediaPlayerPrivateGStreamer functionality is |
| encapsulated into the webKitVideoSinkSetMediaPlayerPrivate() function. |
| |
| The MediaPlayerPrivateGStreamer implementation will be enhanced later to |
| properly handle samples conforming to either variant of these caps. But |
| the idea is that when using this sink, a dmabuf-containing sample will |
| pass the dmabuf to the graphics subsystem and a raw-data-containing |
| sample will copy the data into a dmabuf object (created or reused) and |
| then pass it on. |
| |
| The WEBKIT_GST_DMABUF_SINK_FORCED_FALLBACK_CAPS_FORMAT environment |
| variable can be set to specify the desired exclusive format that this |
| sink should support. This is especially helpful to debug the correct |
| handling of different RGB or YUV formats inside the graphics pipeline. |
| When set, only raw data of the specified format is accepted, meaning the |
| pipeline upstream will perform any necessary conversion of the decoded |
| data into the desired format. Raw data is then packed into dmabufs and |
| sent into the pipeline for display, enabling the developer to examine |
| whether the given format is handled appropriately. |
| |
| The sink element is registered in registerWebKitGStreamerElements(). |
| This functionality will require The GStreamer allocators library, so the |
| necessary dependency glue is also provided. |
| |
| * platform/GStreamer.cmake: |
| * platform/graphics/gstreamer/DMABufVideoSinkGStreamer.cpp: Added. |
| (forcedFallbackCapsFormat): |
| (webKitDMABufVideoSinkConstructed): |
| (webKitDMABufVideoSinkFinalize): |
| (webKitDMABufVideoSinkGetProperty): |
| (webkit_dmabuf_video_sink_class_init): |
| (webKitDMABufVideoSinkSetMediaPlayerPrivate): |
| (webKitDMABufVideoSinkProbePlatform): |
| * platform/graphics/gstreamer/DMABufVideoSinkGStreamer.h: Added. |
| * platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp: |
| (webKitGLVideoSinkSetMediaPlayerPrivate): |
| * platform/graphics/gstreamer/GStreamerCommon.cpp: |
| (WebCore::registerWebKitGStreamerElements): |
| * platform/graphics/gstreamer/GStreamerVideoSinkCommon.cpp: Added. |
| (webKitVideoSinkSetMediaPlayerPrivate): |
| * platform/graphics/gstreamer/GStreamerVideoSinkCommon.h: Added. |
| |
| 2022-02-23 Sihui Liu <sihui_liu@apple.com> |
| |
| REGRESSION(r289474): [iOS] ASSERTION FAILED: isMainThread() under WebCore::IDBServer::UniqueIDBDatabase::abortActiveTransactions() |
| https://bugs.webkit.org/show_bug.cgi?id=237066 |
| <rdar://problem/89324810> |
| |
| Reviewed by Chris Dumez. |
| |
| We no longer need the assertion because the function can be called on non-main thread since r289474, where we |
| started to abort transactions for suspension on WorkQueue. To avoid confusion, rename mainThreadAbortResult to |
| suspensionAbortResult. |
| |
| * Modules/indexeddb/server/UniqueIDBDatabase.cpp: |
| (WebCore::IDBServer::UniqueIDBDatabase::abortTransaction): |
| (WebCore::IDBServer::UniqueIDBDatabase::abortActiveTransactions): |
| * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h: |
| (WebCore::IDBServer::UniqueIDBDatabaseTransaction::setSuspensionAbortResult): |
| (WebCore::IDBServer::UniqueIDBDatabaseTransaction::suspensionAbortResult const): |
| (WebCore::IDBServer::UniqueIDBDatabaseTransaction::setMainThreadAbortResult): Deleted. |
| (WebCore::IDBServer::UniqueIDBDatabaseTransaction::mainThreadAbortResult const): Deleted. |
| |
| 2022-02-23 Kimmo Kinnunen <kkinnunen@apple.com> |
| |
| Crash when calling WEBGL_lose_context.loseContext() after the context has been lost |
| https://bugs.webkit.org/show_bug.cgi?id=236966 |
| |
| Reviewed by Dean Jackson. |
| |
| WebGLRenderingContextBase::forceLostContext() would |
| try to synthesize a GL error to the underlying |
| m_context. However, m_context is cleared when a real |
| context loss happens. This happens for example when we |
| simulate a GPU status failure or when we create too |
| many contexts. The m_context is not currently cleared |
| when the page simulates context lost via WEBGL_lose_contexts.loseContext(). |
| |
| Test: webgl/lose-context-after-context-lost.html |
| |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::synthesizeGLError): |
| |
| 2022-02-23 Youenn Fablet <youenn@apple.com> |
| |
| Optimize RemoteVideoFrame handling in WebProcess WebRTC pipeline |
| https://bugs.webkit.org/show_bug.cgi?id=236970 |
| |
| Reviewed by Eric Carlson. |
| |
| In case of remote video frame, directly get the remote video frame as a MediaSample in receive side. |
| On send side, wrap remote video frames as provider-based WebRTC video frames. |
| LibWebRTCCodecs will optimize the handling of remote frames for hardware encoders and no change will |
| happen for software encoders. |
| Covered by existing tests. |
| |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm: |
| * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp: |
| |
| 2022-02-23 Lauro Moura <lmoura@igalia.com> |
| |
| Unreviewed, non-unified build fix after 247623@main |
| https://bugs.webkit.org/show_bug.cgi?id=237074 |
| |
| * bindings/js/WebAssemblyCachedScriptSourceProvider.h: Namespace. |
| |
| 2022-02-22 Chris Dumez <cdumez@apple.com> |
| |
| http/wpt/push-api/onpush-disabled.html fails |
| https://bugs.webkit.org/show_bug.cgi?id=236874 |
| <rdar://problem/89176154> |
| |
| Reviewed by Youenn Fablet. |
| |
| Before running the test, we would construct a new WKWebView with the Push API setting disabled. |
| We would then run the test, which would launch a service worker. Normally, we would expect the |
| service worker to inherit the settings from the WKWebView. However, it was not reliably |
| happening because the settings for the service worker are stored on the WebProcessPool and |
| WebProcessPool::establishServiceWorkerContextConnectionToNetworkProcess() was selecting a |
| random WebProcessPool object (the first one returned by processPools()). |
| |
| To address the issue, we now pass the ProcessIdentifier of the client that requested the |
| service worker connection so that establishServiceWorkerContextConnectionToNetworkProcess() can |
| now prioritize the WebProcessPool of that process. Also, as an optimization, we now prioritize |
| this client process to run the service worker (assuming it is origin-clean). |
| |
| No new tests, unskipped existing test. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::createContextConnection): |
| * workers/service/server/SWServer.h: |
| |
| 2022-02-22 Tim Nguyen <ntim@apple.com> |
| |
| Use of showModalDialog should appear as a warning in WI console |
| https://bugs.webkit.org/show_bug.cgi?id=237046 |
| |
| Reviewed by Devin Rousso and Darin Adler. |
| |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::showModalDialog): |
| |
| 2022-02-22 Chris Dumez <cdumez@apple.com> |
| |
| Add a URL constructor that takes a String |
| https://bugs.webkit.org/show_bug.cgi?id=237068 |
| |
| Reviewed by Darin Adler. |
| |
| Adopt the new `URL(const String&)` constructor. |
| |
| * Modules/webauthn/AuthenticatorCoordinator.cpp: |
| (WebCore::AuthenticatorCoordinatorInternal::processAppIdExtension): |
| * Modules/websockets/WebSocket.cpp: |
| (WebCore::WebSocket::connect): |
| * bindings/js/ScriptModuleLoader.cpp: |
| (WebCore::resolveModuleSpecifier): |
| (WebCore::ScriptModuleLoader::fetch): |
| (WebCore::ScriptModuleLoader::moduleURL): |
| (WebCore::ScriptModuleLoader::responseURLFromRequestURL): |
| (WebCore::ScriptModuleLoader::importModule): |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneDeserializer::readFile): |
| (WebCore::CloneDeserializer::readTerminal): |
| * contentextensions/ContentExtensionActions.cpp: |
| (WebCore::ContentExtensions::RedirectAction::parse): |
| (WebCore::ContentExtensions::RedirectAction::applyToRequest): |
| * dom/Document.cpp: |
| (WebCore::Document::referrer): |
| * html/URLInputType.cpp: |
| (WebCore::URLInputType::typeMismatchFor const): |
| * loader/DocumentLoader.cpp: |
| (WebCore::microsoftTeamsRedirectURL): |
| * loader/PrivateClickMeasurement.cpp: |
| (WebCore::PrivateClickMeasurement::parseAttributionRequestQuery): |
| * loader/appcache/ApplicationCacheStorage.cpp: |
| (WebCore::ApplicationCacheStorage::deleteCacheForOrigin): |
| * loader/archive/cf/LegacyWebArchive.cpp: |
| (WebCore::LegacyWebArchive::createResource): |
| * loader/archive/mhtml/MHTMLParser.cpp: |
| (WebCore::MHTMLParser::parseNextPart): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::open): |
| * page/Quirks.cpp: |
| (WebCore::isBBCDomain): |
| (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): |
| * page/SecurityOrigin.cpp: |
| (WebCore::SecurityOrigin::createFromString): |
| (WebCore::SecurityOrigin::create): |
| * page/SecurityOriginData.cpp: |
| (WebCore::SecurityOriginData::toURL const): |
| * page/SecurityPolicy.cpp: |
| (WebCore::SecurityPolicy::generateReferrerHeader): |
| * page/csp/ContentSecurityPolicy.cpp: |
| (WebCore::ContentSecurityPolicy::reportViolation const): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::originsInMediaCache): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCacheForOrigins): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::setPlaybinURL): |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (webKitWebSrcMakeRequest): |
| * platform/gtk/SelectionData.cpp: |
| (WebCore::SelectionData::setURIList): |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::ResourceRequestBase::setHTTPReferrer): |
| * platform/network/cf/ResourceErrorCF.cpp: |
| (WebCore::ResourceError::platformLazyInit): |
| * platform/network/cf/SocketStreamHandleImplCFNet.cpp: |
| (WebCore::SocketStreamHandleImpl::SocketStreamHandleImpl): |
| * platform/network/curl/CurlRequest.cpp: |
| (WebCore::CurlRequest::didReceiveHeader): |
| * platform/network/mac/ResourceErrorMac.mm: |
| (WebCore::ResourceError::platformLazyInit): |
| * platform/win/PasteboardWin.cpp: |
| (WebCore::Pasteboard::writeString): |
| * testing/Internals.cpp: |
| (WebCore::Internals::sendH2Ping): |
| |
| 2022-02-22 Chris Dumez <cdumez@apple.com> |
| |
| Drop StringHasher::hashMemory() and use the modern Hasher instead |
| https://bugs.webkit.org/show_bug.cgi?id=237049 |
| |
| Reviewed by Sam Weinig and Darin Adler. |
| |
| * Modules/indexeddb/shared/IDBResourceIdentifier.h: |
| (WebCore::add): |
| (WebCore::IDBResourceIdentifierHash::hash): |
| (WebCore::IDBResourceIdentifier::hash const): Deleted. |
| * dom/Attribute.h: |
| (WebCore::add): |
| * dom/DocumentSharedObjectPool.cpp: |
| (WebCore::DocumentSharedObjectPool::cachedShareableElementDataWithAttributes): |
| (WebCore::attributeHash): Deleted. |
| * dom/QualifiedName.cpp: |
| (WebCore::QualifiedName::QualifiedNameImpl::computeHash const): |
| * dom/QualifiedName.h: |
| (WebCore::add): |
| (WebCore::hashComponents): Deleted. |
| * dom/QualifiedNameCache.cpp: |
| (WebCore::QNameComponentsTranslator::hash): |
| * page/GlobalWindowIdentifier.h: |
| (WebCore::add): |
| (WTF::GlobalWindowIdentifierHash::hash): |
| (WebCore::GlobalWindowIdentifier::hash const): Deleted. |
| * page/SecurityOriginHash.h: |
| (WebCore::SecurityOriginHash::hash): |
| * platform/ScriptExecutionContextIdentifier.h: |
| (WebCore::add): |
| (WebCore::ProcessQualified<UUID>::hash const): Deleted. |
| (WTF::computeHash): Deleted. |
| * platform/graphics/cocoa/FontPlatformDataCocoa.mm: |
| (WebCore::FontPlatformData::hash const): |
| * platform/graphics/win/FontPlatformDataCGWin.cpp: |
| (WebCore::FontPlatformData::hash const): |
| * svg/SVGElementInlines.h: |
| (WebCore::SVGAttributeHashTranslator::hash): |
| * workers/service/ServiceWorkerRegistrationKey.cpp: |
| (WebCore::ServiceWorkerRegistrationKey::hash const): Deleted. |
| * workers/service/ServiceWorkerRegistrationKey.h: |
| (WebCore::add): |
| (WTF::ServiceWorkerRegistrationKeyHash::hash): |
| |
| 2022-02-22 Tim Nguyen <ntim@apple.com> |
| |
| Create a DOMWindow::printWarningMessage method and start using it in DOMWindow.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=237047 |
| |
| Reviewed by Darin Adler. |
| |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::close): |
| (WebCore::DOMWindow::webkitRequestAnimationFrame): |
| (WebCore::DOMWindow::startListeningForDeviceOrientationIfNecessary): |
| (WebCore::DOMWindow::startListeningForDeviceMotionIfNecessary): |
| (WebCore::DOMWindow::printConsoleMessage const): |
| (WebCore::DOMWindow::printErrorMessage const): |
| (WebCore::DOMWindow::printWarningMessage const): |
| * page/DOMWindow.h: |
| |
| 2022-02-22 Chris Dumez <cdumez@apple.com> |
| |
| Share more code between dispatchSessionStorageEvents() and dispatchLocalStorageEvents() |
| https://bugs.webkit.org/show_bug.cgi?id=237040 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * storage/StorageEventDispatcher.cpp: |
| (WebCore::dispatchStorageEvents): |
| (WebCore::StorageEventDispatcher::dispatchSessionStorageEvents): |
| (WebCore::StorageEventDispatcher::dispatchLocalStorageEvents): |
| (WebCore::dispatchSessionStorageEventsToWindows): Deleted. |
| (WebCore::dispatchLocalStorageEventsToWindows): Deleted. |
| |
| 2022-02-22 Chris Dumez <cdumez@apple.com> |
| |
| CachedResourceLoader::allCachedSVGImages() reparses resource URLs unnecessarily |
| https://bugs.webkit.org/show_bug.cgi?id=237002 |
| |
| Reviewed by Darin Adler. |
| |
| Store URLs in the HashMaps instead of Strings since we have URLs initially and we |
| need URLs eventually. This avoids having to re-parse the URL unnecessarily, which |
| is fairly expensive. |
| |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::requestResource): |
| (WebCore::CachedResourceLoader::determineRevalidationPolicy const): |
| (WebCore::CachedResourceLoader::notifyFinished): |
| * loader/cache/CachedResourceLoader.h: |
| |
| 2022-02-22 Frédéric Wang <fwang@igalia.com> |
| |
| null ptr deref via WebXRSystem::requestSession |
| https://bugs.webkit.org/show_bug.cgi?id=235916 |
| |
| Reviewed by Dean Jackson. |
| WebXRSystem::requestSession() null checks the document's global object via the method |
| Document::domWindow() and calls WebXRSystem::inlineSessionRequestIsAllowedForGlobalObject() |
| which dereferences the global object via the method ScriptExecutionContext::globalObject(). |
| The former is just getting a raw pointer from Document::m_domWindow which (once set) remains |
| non-null until the document is destroyed. The latter instead gets the DOM window via the |
| document's FrameDestructionObserver::m_frame which is null when document is detached from the |
| frame. Hence the two methods may disagree, leading to a null ptr deref in |
| WebXRSystem::inlineSessionRequestIsAllowedForGlobalObject(). This patch works around that |
| issue by explicitly null checking the result of Document::::globalObject(). Additionally, it |
| makes the document (and its m_domWindow member) protected earlier in |
| WebXRSystem::requestSession() i.e. before passing them to potentially complex subroutines |
| immersiveSessionRequestIsAllowedForGlobalObject() and |
| inlineSessionRequestIsAllowedForGlobalObject(). |
| |
| Test: webxr/xr-requestSession-crash.html |
| |
| * Modules/webxr/WebXRSystem.cpp: |
| (WebCore::WebXRSystem::inlineSessionRequestIsAllowedForGlobalObject const): null-check |
| document::globalObject() before deferencing it. |
| (WebCore::WebXRSystem::requestSession): protect document (and its m_domWindow member). |
| |
| 2022-02-22 Chris Dumez <cdumez@apple.com> |
| |
| Clean up / optimize even more call sites constructing vectors |
| https://bugs.webkit.org/show_bug.cgi?id=236852 |
| |
| Reviewed by Darin Adler. |
| |
| * Modules/applepay/PaymentCoordinator.cpp: |
| (WebCore::PaymentCoordinator::beginPaymentSession): |
| * Modules/applepay/cocoa/PaymentMethodCocoa.mm: |
| (WebCore::convert): |
| * Modules/cache/DOMCache.cpp: |
| (WebCore::DOMCache::batchPutOperation): |
| * Modules/gamepad/Gamepad.cpp: |
| (WebCore::Gamepad::Gamepad): |
| * Modules/gamepad/GamepadManager.cpp: |
| (WebCore::GamepadManager::platformGamepadDisconnected): |
| (WebCore::GamepadManager::makeGamepadVisible): |
| * Modules/indexeddb/IDBDatabase.cpp: |
| (WebCore::IDBDatabase::objectStoreNames const): |
| (WebCore::IDBDatabase::transaction): |
| * Modules/indexeddb/IDBKeyData.h: |
| (WebCore::IDBKeyData::isDeletedValue const): |
| (WebCore::add): |
| (WebCore::IDBKeyDataHash::hash): |
| (WebCore::IDBKeyData::hash const): Deleted. |
| * Modules/indexeddb/IDBObjectStore.cpp: |
| (WebCore::IDBObjectStore::indexNames const): |
| * Modules/indexeddb/IDBTransaction.cpp: |
| (WebCore::IDBTransaction::objectStoreNames const): |
| * Modules/mediacontrols/MediaControlsHost.cpp: |
| (WebCore::MediaControlsHost::showMediaControlsContextMenu): |
| * Modules/mediasource/MediaSource.cpp: |
| (WebCore::MediaSource::activeRanges const): |
| * Modules/mediasource/SampleMap.h: |
| (WebCore::DecodeOrderSampleMap::size const): |
| * Modules/mediasource/SourceBufferList.h: |
| * Modules/speech/SpeechSynthesis.cpp: |
| (WebCore::SpeechSynthesis::getVoices): |
| * Modules/speech/cocoa/WebSpeechRecognizerTask.mm: |
| (-[WebSpeechRecognizerTaskImpl callbackWithTranscriptions:isFinal:]): |
| * Modules/speech/cocoa/WebSpeechRecognizerTaskMock.mm: |
| (-[WebSpeechRecognizerTaskMock audioSamplesAvailable:]): |
| * animation/CSSPropertyAnimation.cpp: |
| (WebCore::blendFunc): |
| * animation/DocumentTimelinesController.cpp: |
| (WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents): |
| * animation/KeyframeEffect.cpp: |
| (WebCore::processPropertyIndexedKeyframes): |
| * contentextensions/ContentExtension.cpp: |
| (WebCore::ContentExtensions::ContentExtension::ContentExtension): |
| * css/CSSValueList.h: |
| (WebCore::CSSValueList::size const): |
| * css/calc/CSSCalcOperationNode.cpp: |
| (WebCore::CSSCalcOperationNode::hoistChildrenWithOperator): |
| * css/parser/CSSParserImpl.cpp: |
| (WebCore::CSSParserImpl::consumeContainerRule): |
| * dom/DOMStringList.h: |
| (WebCore::DOMStringList::create): |
| (WebCore::DOMStringList::append): |
| (WebCore::DOMStringList::DOMStringList): |
| * dom/EventPath.cpp: |
| (WebCore::EventPath::EventPath): |
| * dom/FullscreenManager.cpp: |
| (WebCore::FullscreenManager::cancelFullscreen): |
| * dom/LoadableScript.cpp: |
| (WebCore::LoadableScript::notifyClientFinished): |
| * dom/RadioButtonGroups.cpp: |
| (WebCore::RadioButtonGroup::members const): |
| * html/DirectoryFileListCreator.cpp: |
| (WebCore::toFileList): |
| * html/HTMLSelectElement.cpp: |
| (WebCore::HTMLSelectElement::saveLastSelection): |
| (WebCore::HTMLSelectElement::setActiveSelectionAnchorIndex): |
| * html/ImageBitmap.cpp: |
| (WebCore::ImageBitmap::detachBitmaps): |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::getAttachedShaders): |
| * html/parser/HTMLMetaCharsetParser.cpp: |
| (WebCore::HTMLMetaCharsetParser::processMeta): |
| * html/parser/HTMLTreeBuilder.cpp: |
| (WebCore::HTMLTreeBuilder::insertPhoneNumberLink): |
| * html/parser/TextDocumentParser.cpp: |
| (WebCore::TextDocumentParser::insertFakePreElement): |
| * loader/ContentFilter.cpp: |
| (WebCore::ContentFilter::create): |
| * loader/appcache/ApplicationCacheManifestParser.cpp: |
| (WebCore::parseApplicationCacheManifest): |
| * page/ResizeObserver.cpp: |
| (WebCore::ResizeObserver::deliverObservations): |
| * page/TextIndicator.cpp: |
| (WebCore::initializeIndicator): |
| * page/csp/ContentSecurityPolicy.cpp: |
| (WebCore::parseSubResourceIntegrityIntoDigests): |
| * platform/FileChooser.cpp: |
| (WebCore::FileChooser::chooseFile): |
| (WebCore::FileChooser::chooseFiles): |
| (WebCore::FileChooser::chooseMediaFiles): |
| * platform/SharedBuffer.cpp: |
| (WebCore::FragmentedSharedBuffer::append): |
| * platform/ThreadSafeDataBuffer.h: |
| (WebCore::add): |
| * platform/audio/AudioDSPKernelProcessor.cpp: |
| (WebCore::AudioDSPKernelProcessor::initialize): |
| * platform/audio/AudioResampler.cpp: |
| (WebCore::AudioResampler::AudioResampler): |
| * platform/audio/DynamicsCompressorKernel.cpp: |
| (WebCore::DynamicsCompressorKernel::setNumberOfChannels): |
| * platform/audio/MultiChannelResampler.cpp: |
| (WebCore::MultiChannelResampler::MultiChannelResampler): |
| * platform/cocoa/PlaybackSessionModelMediaElement.mm: |
| (WebCore::PlaybackSessionModelMediaElement::legibleMediaSelectionOptions const): |
| * platform/gamepad/mac/Dualshock3HIDGamepad.cpp: |
| (WebCore::Dualshock3HIDGamepad::Dualshock3HIDGamepad): |
| * platform/gamepad/mac/LogitechGamepad.cpp: |
| (WebCore::LogitechGamepad::LogitechGamepad): |
| * platform/gamepad/mac/StadiaHIDGamepad.cpp: |
| (WebCore::StadiaHIDGamepad::StadiaHIDGamepad): |
| * platform/graphics/GraphicsLayer.cpp: |
| (WebCore::GraphicsLayer::addRepaintRect): |
| * platform/graphics/PathUtilities.cpp: |
| (WebCore::PathUtilities::pathsWithShrinkWrappedRects): |
| (WebCore::PathUtilities::pathWithShrinkWrappedRectsForOutline): |
| * platform/graphics/SourceBufferPrivate.cpp: |
| (WebCore::SourceBufferPrivate::bufferedSamplesForTrackId): |
| * platform/graphics/avfoundation/CDMFairPlayStreaming.cpp: |
| (WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSkd): |
| * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp: |
| (WebCore::AVFWrapper::setRequestForKey): |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateKeyStatuses): |
| * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm: |
| (WebCore::ImageDecoderAVFObjC::frameInfos const): |
| * platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm: |
| (WebCore::SourceBufferParserAVFObjC::didParseStreamDataAsAsset): |
| * platform/graphics/cocoa/FontPlatformDataCocoa.mm: |
| (WebCore::FontPlatformData::variationAxes const): |
| * platform/mac/PasteboardMac.mm: |
| (WebCore::Pasteboard::writeString): |
| * platform/mediastream/RealtimeVideoCaptureSource.cpp: |
| (WebCore::RealtimeVideoCaptureSource::setSupportedPresets): |
| * platform/network/BlobRegistryImpl.cpp: |
| (WebCore::BlobRegistryImpl::registerBlobURL): |
| (WebCore::BlobRegistryImpl::writeBlobsToTemporaryFilesForIndexedDB): |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::drawBoxSideFromPath): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::connectClippingStackLayers): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::adjustOverflowScrollbarContainerLayers): |
| * rendering/RenderThemeMac.mm: |
| (WebCore::paintAttachmentTitleBackground): |
| * rendering/svg/SVGRenderTreeAsText.cpp: |
| (WebCore::writeSVGStrokePaintingResource): |
| * rendering/svg/SVGTextChunk.cpp: |
| (WebCore::SVGTextChunk::SVGTextChunk): |
| * style/PageRuleCollector.cpp: |
| (WebCore::Style::PageRuleCollector::matchPageRules): |
| * style/RuleSetBuilder.cpp: |
| (WebCore::Style::RuleSetBuilder::MediaQueryCollector::pop): |
| * style/StyleBuilderConverter.h: |
| (WebCore::Style::BuilderConverter::convertContainerName): |
| |
| 2022-02-22 Nikolas Zimmermann <nzimmermann@igalia.com> |
| |
| [LBSE] Rename RenderSVGTransformableContainer -> LegacyRenderSVGTransformableContainer |
| https://bugs.webkit.org/show_bug.cgi?id=237023 |
| |
| Reviewed by Rob Buis. |
| |
| Following the established procedure: rename RenderSVGTransformableContainer -> LegacyRenderSVGTransformableContainer. |
| In a follow-up patch RenderSVGTransformableContainer will be reintroduced for LBSE, inheriting from |
| RenderSVGContainer instead of LegacyRenderSVGContainer. |
| |
| Covered by existing tests, no change in behaviour. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * rendering/RenderObject.h: |
| (WebCore::RenderObject::isLegacySVGTransformableContainer const): |
| (WebCore::RenderObject::isSVGTransformableContainer const): Deleted. |
| * rendering/svg/LegacyRenderSVGContainer.cpp: |
| (WebCore::LegacyRenderSVGContainer::layout): |
| * rendering/svg/LegacyRenderSVGContainer.h: |
| * rendering/svg/LegacyRenderSVGTransformableContainer.cpp: Renamed from Source/WebCore/rendering/svg/RenderSVGTransformableContainer.cpp. |
| (WebCore::LegacyRenderSVGTransformableContainer::LegacyRenderSVGTransformableContainer): |
| (WebCore::LegacyRenderSVGTransformableContainer::calculateLocalTransform): |
| (WebCore::LegacyRenderSVGTransformableContainer::graphicsElement): |
| * rendering/svg/LegacyRenderSVGTransformableContainer.h: Renamed from Source/WebCore/rendering/svg/RenderSVGTransformableContainer.h. |
| * rendering/svg/RenderSVGViewportContainer.h: |
| * rendering/svg/SVGContainerLayout.cpp: |
| * rendering/svg/SVGRenderSupport.cpp: |
| (WebCore::SVGRenderSupport::transformToRootChanged): |
| * svg/SVGAElement.cpp: |
| (WebCore::SVGAElement::createElementRenderer): |
| * svg/SVGGElement.cpp: |
| (WebCore::SVGGElement::createElementRenderer): |
| * svg/SVGSwitchElement.cpp: |
| (WebCore::SVGSwitchElement::createElementRenderer): |
| * svg/SVGUseElement.cpp: |
| (WebCore::SVGUseElement::createElementRenderer): |
| |
| 2022-02-22 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Switch media player to playbin3 |
| https://bugs.webkit.org/show_bug.cgi?id=236884 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| With GStreamer 1.20 playbin3 is quite usable now, so give it a try as default playback |
| engine during the 2.38 cycle. If one wants to opt out, set the WEBKIT_GST_USE_PLAYBIN2 |
| environment variable to 1. |
| |
| No new tests, covered by existing media layout tests. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): |
| |
| 2022-02-22 Nikolas Zimmermann <nzimmermann@igalia.com> |
| |
| [LBSE] Activate LBSE for <rect> painting |
| https://bugs.webkit.org/show_bug.cgi?id=236194 |
| |
| Reviewed by Rob Buis. |
| |
| Finally activate LBSE for <rect> elements -- painting <rect> elements |
| now works as expected in LBSE. Try using MiniBrowser and switch |
| from legacy engine to LBSE and back -- this now works just fine and |
| rebuilds the render tree / updates display. |
| |
| Covered by existing tests, no change in behaviour. |
| |
| * rendering/svg/SVGRenderTreeAsText.cpp: |
| (WebCore::writeStyle): |
| (WebCore::writeChildren): |
| * svg/SVGRectElement.cpp: |
| (WebCore::SVGRectElement::createElementRenderer): |
| |
| 2022-02-22 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Initial MediaRecorder implementation |
| https://bugs.webkit.org/show_bug.cgi?id=236558 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Add a MediaRecorder backend based on the GStreamer Transcoder library. We anticipate the |
| scenario where the GstWebRTC backend might provide encoded streams to the recorder, in which |
| case transcoding is required. The transcoder library can operate in pass-through as well. |
| |
| * CMakeLists.txt: |
| * Modules/mediarecorder/MediaRecorder.cpp: |
| (WebCore::MediaRecorder::isTypeSupported): |
| (WebCore::MediaRecorder::createMediaRecorderPrivate): |
| * Modules/mediarecorder/MediaRecorderProvider.cpp: |
| (WebCore::MediaRecorderProvider::createMediaRecorderPrivate): |
| (WebCore::MediaRecorderProvider::isSupported): |
| * Modules/mediarecorder/MediaRecorderProvider.h: |
| * loader/EmptyClients.cpp: |
| * platform/GStreamer.cmake: |
| * platform/graphics/gstreamer/GRefPtrGStreamer.cpp: |
| (WTF::adoptGRef): |
| (WTF::refGPtr<GstEncodingProfile>): |
| (WTF::derefGPtr<GstEncodingProfile>): |
| * platform/graphics/gstreamer/GRefPtrGStreamer.h: |
| * platform/graphics/gstreamer/GStreamerRegistryScanner.cpp: |
| (WebCore::GStreamerRegistryScanner::initializeEncoders): |
| * platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp: Added. |
| (WebCore::MediaRecorderPrivateGStreamer::create): |
| (WebCore::MediaRecorderPrivateGStreamer::MediaRecorderPrivateGStreamer): |
| (WebCore::MediaRecorderPrivateGStreamer::~MediaRecorderPrivateGStreamer): |
| (WebCore::MediaRecorderPrivateGStreamer::startRecording): |
| (WebCore::MediaRecorderPrivateGStreamer::stopRecording): |
| (WebCore::MediaRecorderPrivateGStreamer::fetchData): |
| (WebCore::MediaRecorderPrivateGStreamer::pauseRecording): |
| (WebCore::MediaRecorderPrivateGStreamer::resumeRecording): |
| (WebCore::MediaRecorderPrivateGStreamer::mimeType const): |
| (WebCore::MediaRecorderPrivateGStreamer::isTypeSupported): |
| (WebCore::MediaRecorderPrivateGStreamer::containerProfile): |
| (WebCore::MediaRecorderPrivateGStreamer::setSource): |
| (WebCore::MediaRecorderPrivateGStreamer::setSink): |
| (WebCore::MediaRecorderPrivateGStreamer::configureVideoEncoder): |
| (WebCore::MediaRecorderPrivateGStreamer::preparePipeline): |
| (WebCore::MediaRecorderPrivateGStreamer::processSample): |
| (WebCore::MediaRecorderPrivateGStreamer::notifyEOS): |
| * platform/mediarecorder/MediaRecorderPrivateGStreamer.h: Added. |
| * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: |
| (webkitMediaStreamSrcEnsureStreamCollectionPosted): |
| (webkitMediaStreamSrcPadProbeCb): |
| (webkitMediaStreamSrcSignalEndOfStream): |
| * platform/mediastream/gstreamer/GStreamerMediaStreamSource.h: |
| |
| 2022-02-22 Tim Nguyen <ntim@apple.com> |
| |
| Hide PDF.js sidebar shown for long documents |
| https://bugs.webkit.org/show_bug.cgi?id=236850 |
| |
| Reviewed by Chris Dumez. |
| |
| Use the built-in PDF.js `#pagemode=none` parameter to do this: https://github.com/mozilla/pdf.js/wiki/Viewer-options |
| |
| * html/PDFDocument.cpp: |
| (WebCore::PDFDocument::createDocumentStructure): |
| |
| 2022-02-22 Antti Koivisto <antti@apple.com> |
| |
| [CSS container Queries] getComputedStyle should update style for invalid query containers |
| https://bugs.webkit.org/show_bug.cgi?id=237038 |
| |
| Reviewed by Darin Adler. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::hasValidStyleForProperty): |
| |
| We always need to update style inside a query container since a change to it may affect descendants. |
| |
| 2022-02-22 Kate Cheney <katherine_cheney@apple.com> |
| |
| Authenticated encryption console logging causing performance regressions |
| https://bugs.webkit.org/show_bug.cgi?id=236987 |
| <rdar://problem/89108253> |
| |
| Reviewed by Chris Dumez. |
| |
| No new tests. Behavior confirmed by existing crypto/subtle tests. |
| |
| For clients that use repeated unauthenticated AES encryption, console |
| logging may cause perf issues. We should log the authenticated |
| encryption warning once per context. |
| |
| * crypto/SubtleCrypto.cpp: |
| (WebCore::SubtleCrypto::addAuthenticatedEncryptionWarningIfNecessary): |
| * dom/ScriptExecutionContext.h: |
| (WebCore::ScriptExecutionContext::hasLoggedAuthenticatedEncryptionWarning const): |
| (WebCore::ScriptExecutionContext::setHasLoggedAuthenticatedEncryptionWarning): |
| |
| 2022-02-22 Tim Nguyen <ntim@apple.com> |
| |
| Re-style PDF.js form fields to match PDFKit |
| https://bugs.webkit.org/show_bug.cgi?id=237041 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Remove black border on :hover, only display light blue background on hover, display blue focusring on :focus. |
| |
| * Modules/pdfjs-extras/style-cocoa.css: |
| (.annotationLayer :is(): |
| |
| 2022-02-22 Jer Noble <jer.noble@apple.com> |
| |
| [Cocoa] Partial rollout of r289946, broke Netflix |
| https://bugs.webkit.org/show_bug.cgi?id=237019 |
| <rdar://89261425> |
| |
| Reviewed by Eric Carlson. |
| |
| Adopting AVContentKeySupport for AVSampleBufferDisplayLayer broke Netflix playback on Cocoa |
| ports. Disable that support by hard coding sampleBufferRenderersSupportKeySession() to |
| return false. |
| |
| * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: |
| (WebCore::sampleBufferRenderersSupportKeySession): |
| |
| 2022-02-22 Tyler Wilcock <tyler_w@apple.com> |
| |
| AX: Only compute ariaTreeRows for isTree() objects |
| https://bugs.webkit.org/show_bug.cgi?id=236994 |
| |
| Reviewed by Andres Gonzalez. |
| |
| We only expose AXPropertyName::ARIATreeRows for isTree() objects, but compute it for every object, which is wasteful. |
| |
| This patch also includes a drive-by fixing of setting AXPropertyName::IsTreeItem. Prior to this patch, |
| we never set this property. Also, we now only store AXPropertyName::ARIATreeItemContent for isTreeItem() objects. |
| |
| The AXPropertyName::IsTreeItem fix makes test accessibility/roles-exposed.html closer to passing with ITM enabled. |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::ariaTreeRows): |
| Remove unncessary tab character. |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::initializeAttributeData): |
| |
| 2022-02-22 Tyler Wilcock <tyler_w@apple.com> |
| |
| AX: Fix accessibility/aria-current-state-changed-notification.html in isolated tree mode |
| https://bugs.webkit.org/show_bug.cgi?id=237014 |
| |
| Reviewed by Chris Fleizach. |
| |
| We need to update AXPropertyName::CurrentValue when we get a AXCurrentStateChanged notification. |
| |
| Fixes accessibility/aria-current-state-changed-notification.html in isolated tree mode. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::updateIsolatedTree): |
| * accessibility/isolatedtree/AXIsolatedTree.cpp: |
| |
| 2022-02-22 Andres Gonzalez <andresg_22@apple.com> |
| |
| Fix for crash in several AX LayoutTests in isolated tree mode. |
| https://bugs.webkit.org/show_bug.cgi?id=237015 |
| |
| Reviewed by Chris Dumez. |
| |
| Follow up to https://bugs.webkit.org/show_bug.cgi?id=236748. |
| |
| The iteration over the object's children has to happen over a copy |
| because the children vector can change during the traversal of the tree. |
| |
| * accessibility/isolatedtree/AXIsolatedTree.cpp: |
| (WebCore::AXIsolatedTree::collectNodeChangesForSubtree): |
| |
| 2022-02-22 Tim Nguyen <ntim@apple.com> |
| |
| Make pointer-events checks for SVG take in account inert subtrees |
| https://bugs.webkit.org/show_bug.cgi?id=235836 |
| |
| Reviewed by Antti Koivisto. |
| |
| Re-using visibleToHitTesting in SVG code isn't possible, because visibleToHitTesting removes visibility: hidden; |
| content from hit-testing, which we do not want to here, since pointer-events has values for SVG which still |
| allow clicking content regardless of their visibility value (pointer-events: painted/fill/stroke/all). |
| |
| Instead, we add an inert-aware effectivePointerEvents, similar to effectiveUserSelect and re-use that across the codebase. |
| |
| Tests: imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-svg-hittest.html |
| imported/w3c/web-platform-tests/inert/inert-svg-hittest.tentative.html |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::styleWillChange): |
| * rendering/RenderElement.h: |
| (WebCore::RenderElement::visibleToHitTesting const): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::layerStyleChanged): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::effectivePointerEvents const): |
| * rendering/svg/LegacyRenderSVGModelObject.cpp: |
| (WebCore::LegacyRenderSVGModelObject::checkIntersection): |
| (WebCore::LegacyRenderSVGModelObject::checkEnclosure): |
| * rendering/svg/LegacyRenderSVGShape.cpp: |
| (WebCore::LegacyRenderSVGShape::nodeAtFloatPoint): |
| * rendering/svg/RenderSVGImage.cpp: |
| (WebCore::RenderSVGImage::nodeAtFloatPoint): |
| * rendering/svg/RenderSVGModelObject.cpp: |
| (WebCore::RenderSVGModelObject::checkIntersection): |
| (WebCore::RenderSVGModelObject::checkEnclosure): |
| * rendering/svg/RenderSVGShape.cpp: |
| (WebCore::RenderSVGShape::nodeAtPoint): |
| * rendering/svg/RenderSVGText.cpp: |
| (WebCore::RenderSVGText::nodeAtFloatPoint): |
| * rendering/svg/SVGInlineTextBox.cpp: |
| (WebCore::SVGInlineTextBox::nodeAtPoint): |
| |
| 2022-02-22 Tim Nguyen <ntim@apple.com> |
| |
| Rename RenderStyle::userSelectIncludingInert to RenderStyle::effectiveUserSelect |
| https://bugs.webkit.org/show_bug.cgi?id=237033 |
| |
| Reviewed by Antti Koivisto. |
| |
| This naming is consistent with other properties (effectiveDisplay/Appearance/PointerEvents/etc.). |
| |
| * dom/Node.cpp: |
| (WebCore::computeEditabilityFromComputedStyle): |
| (WebCore::Node::canStartSelection const): |
| * dom/Position.cpp: |
| (WebCore::Position::nodeIsUserSelectNone): |
| (WebCore::Position::nodeIsUserSelectAll): |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::canMouseDownStartSelect): |
| (WebCore::EventHandler::selectCursor): |
| * page/Frame.cpp: |
| (WebCore::Frame::rangeForPoint): |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::selectionBackgroundColor const): |
| (WebCore::RenderElement::selectionColor const): |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::calculateClipRects const): |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::collectSelectionGeometriesInternal): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::effectiveUserSelect const): |
| (WebCore::RenderStyle::userSelectIncludingInert const): Deleted. |
| |
| 2022-02-22 Chris Dumez <cdumez@apple.com> |
| |
| Move service worker and push API preference from RuntimeEnabledFeatures to Settings |
| https://bugs.webkit.org/show_bug.cgi?id=236989 |
| |
| Reviewed by Youenn Fablet. |
| |
| Move service worker and push API preference from RuntimeEnabledFeatures to Settings, since RuntimeEnabledFeatures is deprecated. |
| |
| * Modules/push-api/PushEvent.idl: |
| * Modules/push-api/PushManager.idl: |
| * Modules/push-api/PushMessageData.idl: |
| * Modules/push-api/PushSubscription.idl: |
| * Modules/push-api/PushSubscriptionChangeEvent.idl: |
| * Modules/push-api/PushSubscriptionOptions.idl: |
| * Modules/push-api/ServiceWorkerGlobalScope+PushAPI.idl: |
| * Modules/push-api/ServiceWorkerRegistration+PushAPI.idl: |
| * dom/Document.cpp: |
| (WebCore::Document::suspend): |
| (WebCore::Document::resume): |
| (WebCore::Document::finishedParsing): |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::matchRegistration): |
| (WebCore::DocumentLoader::responseReceived): |
| (WebCore::DocumentLoader::commitData): |
| (WebCore::DocumentLoader::unregisterReservedServiceWorkerClient): |
| (WebCore::DocumentLoader::loadMainResource): |
| * page/NavigatorBase.cpp: |
| (WebCore::NavigatorBase::serviceWorker): |
| * page/NavigatorServiceWorker.idl: |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::pushAPIEnabled const): Deleted. |
| (WebCore::RuntimeEnabledFeatures::setPushAPIEnabled): Deleted. |
| (WebCore::RuntimeEnabledFeatures::serviceWorkerEnabled const): Deleted. |
| (WebCore::RuntimeEnabledFeatures::setServiceWorkerEnabled): Deleted. |
| * workers/service/ExtendableEvent.idl: |
| * workers/service/ExtendableMessageEvent.idl: |
| * workers/service/FetchEvent.idl: |
| * workers/service/ServiceWorker.idl: |
| * workers/service/ServiceWorkerClient.idl: |
| * workers/service/ServiceWorkerClients.idl: |
| * workers/service/ServiceWorkerContainer.idl: |
| * workers/service/ServiceWorkerGlobalScope.idl: |
| * workers/service/ServiceWorkerRegistration.idl: |
| * workers/service/ServiceWorkerWindowClient.idl: |
| |
| 2022-02-22 Marcos Caceres <marcos@marcosc.com> |
| |
| Permission API: handle non-fully active documents |
| https://bugs.webkit.org/show_bug.cgi?id=236952 |
| |
| Spec change: |
| https://github.com/w3c/permissions/pull/365 |
| |
| Reviewed by Youenn Fablet. |
| |
| Test: imported/w3c/web-platform-tests/permissions/non-fully-active.https.html |
| |
| * Modules/permissions/PermissionStatus.cpp: |
| (WebCore::PermissionStatus::stateChanged): |
| * Modules/permissions/Permissions.cpp: |
| (WebCore::Permissions::query): |
| |
| 2022-02-22 Asumu Takikawa <asumu@igalia.com> |
| |
| Initial support for Wasm/ESM-integration in the WebCore module loader |
| https://bugs.webkit.org/show_bug.cgi?id=236268 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| Add initial WebAssembly script support for WebCore module loading. It |
| does not yet support Wasm scripts in workers. Detection of Wasm |
| modules is currently done by MIME type, not by import assertions. |
| |
| * Headers.cmake: |
| * Modules/fetch/FetchResponse.cpp: |
| (WebCore::FetchResponse::hasWasmMIMEType const): |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::evaluateModule): |
| * bindings/js/ScriptController.h: |
| * bindings/js/ScriptModuleLoader.cpp: |
| (WebCore::ScriptModuleLoader::evaluate): |
| (WebCore::ScriptModuleLoader::notifyFinished): |
| * bindings/js/ScriptModuleLoader.h: |
| * bindings/js/WebAssemblyCachedScriptSourceProvider.h: Added. |
| * bindings/js/WebAssemblyScriptSourceCode.h: Copied from Source/JavaScriptCore/parser/SourceProvider.cpp. |
| (WebCore::WebAssemblyScriptSourceCode::WebAssemblyScriptSourceCode): |
| (WebCore::WebAssemblyScriptSourceCode::jsSourceCode const): |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::isSupportedWebAssemblyMIMEType): |
| * platform/MIMETypeRegistry.h: |
| * workers/WorkerOrWorkletScriptController.cpp: |
| (WebCore::WorkerOrWorkletScriptController::evaluateModule): |
| * workers/WorkerOrWorkletScriptController.h: |
| |
| 2022-02-22 Pablo Saavedra <psaavedra@igalia.com> |
| |
| Properly uninitialize EGL display before termination |
| https://bugs.webkit.org/show_bug.cgi?id=236766 |
| |
| From the docs [1], if contexts or surfaces associated with display |
| is current to any thread, they are not released until they |
| are no longer current as a result of eglMakeCurrent. |
| |
| So call eglMakeCurrent() to such effect. |
| |
| [1] https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglMakeCurrent.xhtml |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * platform/graphics/PlatformDisplay.cpp: |
| (WebCore::PlatformDisplay::terminateEGLDisplay): |
| |
| 2022-02-22 Chris Dumez <cdumez@apple.com> |
| |
| Avoid having to iterate the whole frame tree(s) every time we need to dispatch storage events |
| https://bugs.webkit.org/show_bug.cgi?id=236985 |
| |
| Reviewed by Darin Adler. |
| |
| Avoid having to iterate the whole frame tree(s) every time we need to dispatch storage events, |
| by keeping track of window objects interested in storage events. A Window object is interested |
| in storage events if both of the following conditions is true: |
| 1. It has a Storage object (either localStorage or sessionStorage) |
| 2. It has a storage event listener registered. |
| |
| This patch also refactors the code so that we share more logic between WebKit1 and WebKit2. |
| |
| * inspector/agents/InspectorDOMStorageAgent.cpp: |
| (WebCore::InspectorDOMStorageAgent::setDOMStorageItem): |
| (WebCore::InspectorDOMStorageAgent::removeDOMStorageItem): |
| (WebCore::InspectorDOMStorageAgent::clearDOMStorageItems): |
| * loader/EmptyClients.cpp: |
| * page/DOMWindow.cpp: |
| (WebCore::windowsInterestedInStorageEvents): |
| (WebCore::DOMWindow::forEachWindowInterestedInStorageEvents): |
| (WebCore::DOMWindow::~DOMWindow): |
| (WebCore::DOMWindow::willDetachDocumentFromFrame): |
| (WebCore::DOMWindow::eventListenersDidChange): |
| * page/DOMWindow.h: |
| * page/DOMWindowProperty.h: |
| * storage/Storage.cpp: |
| (WebCore::Storage::setItem): |
| (WebCore::Storage::removeItem): |
| (WebCore::Storage::clear): |
| * storage/StorageArea.h: |
| * storage/StorageEventDispatcher.cpp: |
| (WebCore::dispatchSessionStorageEventsToWindows): |
| (WebCore::dispatchLocalStorageEventsToWindows): |
| (WebCore::StorageEventDispatcher::dispatchSessionStorageEvents): |
| (WebCore::StorageEventDispatcher::dispatchLocalStorageEvents): |
| (WebCore::StorageEventDispatcher::dispatchSessionStorageEventsToFrames): Deleted. |
| (WebCore::StorageEventDispatcher::dispatchLocalStorageEventsToFrames): Deleted. |
| * storage/StorageEventDispatcher.h: |
| |
| 2022-02-21 Alex Christensen <achristensen@webkit.org> |
| |
| Improve const correctness for SecurityOrigin accessors |
| https://bugs.webkit.org/show_bug.cgi?id=236983 |
| |
| Reviewed by Chris Dumez. |
| |
| * loader/SubresourceLoader.h: |
| * loader/cache/CachedResource.h: |
| (WebCore::CachedResource::origin const): |
| (WebCore::CachedResource::origin): |
| * loader/cache/CachedResourceRequest.h: |
| (WebCore::CachedResourceRequest::origin const): |
| (WebCore::CachedResourceRequest::origin): |
| |
| 2022-02-21 Brandon Stewart <brandonstewart@apple.com> |
| |
| Ensure layer has backing during traversal |
| https://bugs.webkit.org/show_bug.cgi?id=236858 |
| |
| Reviewed by Simon Fraser. |
| |
| Ensure the layer has a backing attached to it before trying to append |
| the node id. |
| |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::collectStationaryLayerRelatedOverflowNodes): |
| |
| 2022-02-21 Cameron McCormack <heycam@apple.com> |
| |
| Make input element UA shadow tree creation lazy |
| https://bugs.webkit.org/show_bug.cgi?id=236747 |
| |
| Reviewed by Aditya Keerthi. |
| |
| We currently delay InputType creation for parser inserted elements until |
| just after the attributes have been set, so that we don't wastefully |
| create an InputType and the UA shadow tree creation if a non-text |
| type="" was specified on the tag. We don't do anything similar for |
| script inserted input elements. We could make the InputType creation |
| lazy, but most of the wasted time is due to the shadow tree creation. |
| |
| This patch makes InputType shadow tree creation lazy by delaying it |
| until one of the following happens: |
| |
| 1. the element is inserted into the document |
| 2. the type="" or value="" attributes are changed before the element |
| is inserted into the document |
| 3. any DOM methods that need access to the innerTextElement() are |
| called on the element before the element is inserted into the |
| document |
| |
| Not all places where we call innerTextElement() on the |
| HTMLInputElement are safe to lazily create the shadow trees, so we |
| have two accessors: |
| |
| - innerTextElement() returns the inner text element if it's been |
| created already |
| - innerTextElementCreatingShadowSubtreeIfNeeded will perform the lazy |
| shadow tree construction if it hasn't already been done |
| |
| Since the existing |
| createShadowSubtreeAndUpdateInnerTextElementEditability function has |
| more responsibility than just creating the subtree and ensuring the |
| editability is set appropriately, it's renamed to a more manageable |
| createShadowSubtree. |
| |
| This change is a 0.5% progression on Speedometer 2. |
| |
| Test: fast/forms/lazy-shadow-tree-creation.html |
| |
| * html/BaseDateAndTimeInputType.h: |
| * html/BaseDateAndTimeInputType.cpp: |
| (WebCore::BaseDateAndTimeInputType::createShadowSubtree): |
| (WebCore::BaseDateAndTimeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| * html/ColorInputType.h: |
| * html/ColorInputType.cpp: |
| (WebCore::ColorInputType::createShadowSubtree): |
| (WebCore::ColorInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| * html/FileInputType.h: |
| * html/FileInputType.cpp: |
| (WebCore::FileInputType::createShadowSubtree): |
| (WebCore::FileInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| * html/InputType.cpp: |
| (WebCore::InputType::createShadowSubtree): |
| (WebCore::InputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| * html/RangeInputType.h: |
| * html/RangeInputType.cpp: |
| (WebCore::RangeInputType::createShadowSubtree): |
| (WebCore::RangeInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| * html/SearchInputType.h: |
| * html/SearchInputType.cpp: |
| (WebCore::SearchInputType::createShadowSubtree): |
| (WebCore::SearchInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| Renamed createShadowSubtreeAndUpdateInnerTextElementEditability to |
| createShadowSubtree and remove the "isInnerTextElementEditable" |
| argument, since we can ask the element() for its value if needed. |
| createShadowSubtree is now also responsible for creating the shadow |
| root. |
| |
| * html/TextFieldInputType.h: |
| * html/TextFieldInputType.cpp: |
| (WebCore::TextFieldInputType::createShadowSubtree): |
| (WebCore::TextFieldInputType::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| Renamed. Ensure all shadow tree state is up to date now that it can be |
| created later. |
| |
| * html/InputType.h: |
| * html/InputType.cpp: |
| (WebCore::InputType::createShadowSubtree): |
| (WebCore::InputType::hasCreatedShadowSubtree const): |
| New functions to create the shadow subtree if it hasn't been done |
| already, and to query whether it's been done. |
| |
| * html/HTMLInputElement.h: |
| * html/HTMLInputElement.cpp: |
| (WebCore::HTMLInputElement::innerTextElementCreatingShadowSubtreeIfNeeded): |
| * html/HTMLTextAreaElement.h: |
| * html/HTMLTextAreaElement.cpp: |
| (WebCore::HTMLTextAreaElement::innerTextElementCreatingShadowSubtreeIfNeeded): |
| * html/HTMLTextFormControlElement.h: |
| * html/InputType.h: |
| * html/InputType.cpp: |
| (WebCore::InputType::innerTextElementCreatingShadowSubtreeIfNeeded): |
| New functions to first create the shadow subtree before returning |
| innerTextElement(). HTMLTextAreaElement never lazily creates its |
| shadow subtree and so just returns innerTextElement(). |
| |
| * html/HTMLInputElement.h: |
| * html/HTMLInputElement.cpp: |
| (WebCore::HTMLInputElement::createShadowSubtreeAndUpdateInnerTextElementEditability): |
| Deleted. Just call through to m_inputType->createShadowTree() |
| directly. |
| |
| (WebCore::HTMLInputElement::HTMLInputElement): |
| (WebCore::HTMLInputElement::create): |
| (WebCore::HTMLInputElement::initializeInputType): |
| (WebCore::HTMLInputElement::updateType): |
| Don't immediately create the shadow tree. |
| |
| (WebCore::HTMLInputElement::didFinishInsertingNode): |
| Create the shadow subtree now that the element's been inserted. No |
| need to call dataListMayHaveChanged since |
| TextFieldInputType::createShadowSubtree will now do this. |
| |
| * html/BaseDateAndTimeInputType.cpp: |
| (WebCore::BaseDateAndTimeInputType::updateInnerTextValue): |
| Ensure the shadow subtree is created since we need to poke at it. |
| |
| * html/HTMLTextFormControlElement.cpp: |
| (WebCore::HTMLTextFormControlElement::forwardEvent): |
| Don't forward the event if the shadow tree hasn't been created yet. |
| |
| (WebCore::HTMLTextFormControlElement::setSelectionRange): |
| Ensure the shadow tree has been created. This is needed if the |
| selection APIs are called on the input element before it's inserted |
| into the document. |
| |
| (WebCore::HTMLTextFormControlElement::visiblePositionForIndex const): |
| Assert that the shadow tree has been created, since editing |
| functionality should only be needed if the element's been inserted |
| into the document. |
| |
| (WebCore::HTMLTextFormControlElement::setInnerTextValue): |
| Ensure the shadow tree has been created. |
| |
| * html/RangeInputType.cpp: |
| (WebCore::RangeInputType::handleMouseDownEvent): |
| (WebCore::RangeInputType::handleTouchEvent): |
| (WebCore::RangeInputType::handleKeydownEvent): |
| Ensure the shadow tree has been created in case the event will change |
| the value. |
| |
| (WebCore::RangeInputType::sliderTrackElement const): |
| Only return the element if it's been created. |
| |
| (WebCore::RangeInputType::typedSliderThumbElement const): |
| Assert that the element has been created. |
| |
| (WebCore::RangeInputType::dataListMayHaveChanged): |
| Only try to re-layout if the shadow tree has been created. |
| |
| * html/TextFieldInputType.cpp: |
| (WebCore::TextFieldInputType::isEmptyValue const): |
| Avoid creating the shadow subtree. |
| |
| (WebCore::TextFieldInputType::forwardEvent): |
| Move the element assertion up to be consistent with other functions. |
| |
| (WebCore::TextFieldInputType::innerTextElement const): |
| Don't assert, since this now can legitimately return null. |
| |
| * html/FileInputType.cpp: |
| (WebCore::FileInputType::disabledStateChanged): |
| (WebCore::FileInputType::attributeChanged): |
| * html/RangeInputType.cpp: |
| (WebCore::RangeInputType::disabledStateChanged): |
| (WebCore::RangeInputType::attributeChanged): |
| (WebCore::RangeInputType::setValue): |
| * html/TextFieldInputType.cpp: |
| (WebCore::TextFieldInputType::disabledStateChanged): |
| (WebCore::TextFieldInputType::readOnlyStateChanged): |
| (WebCore::TextFieldInputType::updatePlaceholderText): |
| (WebCore::TextFieldInputType::updateAutoFillButton): |
| (WebCore::TextFieldInputType::dataListMayHaveChanged): |
| Don't update the shadow tree contents if it hasn't been created yet. |
| createShadowTree is responsible for ensuring it creates the shadow |
| tree contents reflecting the current state. |
| |
| 2022-02-21 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Add test coverage for the pasteboard writing codepath added in r289839 |
| https://bugs.webkit.org/show_bug.cgi?id=236944 |
| |
| Reviewed by Aditya Keerthi. |
| |
| Add test coverage for the changes in r289839 in the case where `ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)` is turned |
| on. To do this, we set the platform image analysis results to a new internal mock object, |
| `FakeImageAnalysisResult`, that returns a string for a given NSRange. This code is then exercised by several |
| existing layout tests that copy and paste text inside image overlays: |
| |
| - fast/images/text-recognition/image-overlay-line-wrapping.html |
| - fast/images/text-recognition/image-overlay-text-without-leading-whitespace.html |
| - fast/images/text-recognition/mac/copy-image-overlay-text-with-context-menu.html |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::installImageOverlay): |
| * testing/Internals.h: |
| * testing/Internals.mm: |
| (-[FakeImageAnalysisResult initWithString:]): |
| (-[FakeImageAnalysisResult _attributedStringForRange:]): |
| (WebCore::Internals::fakeImageAnalysisResultForTesting): |
| |
| 2022-02-21 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| Sort WebCore and WebKit Xcode project files |
| https://bugs.webkit.org/show_bug.cgi?id=237010 |
| |
| Unreviewed. |
| |
| No new tests because there is no behavior change. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| == Rolled over to ChangeLog-2022-02-22 == |