| 2020-05-22 Zalan Bujtas <zalan@apple.com> |
| |
| Nullptr deref in WebCore::RenderTreeBuilder::Block::attachIgnoringContinuation when parent and beforeChild are siblings |
| https://bugs.webkit.org/show_bug.cgi?id=212116 |
| <rdar://problem/62993844> |
| |
| Reviewed by Simon Fraser. |
| |
| This patch fixes the case when a nested fragmented context has a spanner and we try to form a continuation while this nested fragmented context is being destroyed. |
| |
| 1. The continuation is triggered by a style change that turns a previously out-of-flow block container into an inflow box |
| (and the parent inline level container can't have the box as a direct child anymore). |
| 2. An unrelated style change nukes the nested fragmented context. We need to "re-assign" the spanner to the parent fragment. |
| |
| These 2 changes are split into 2 phases; first we take care of the tree mutation triggered by the continuation (updateRendererStyle), while |
| we do the fragmented context cleanup (updateAfterDescendants) in a separate step. |
| This 2 phase setup confuses the "where to put this spanner" logic. |
| |
| This patch addresses the issue by keeping the spanner inside the about-to-be-destroyed fragmented context while forming the continuation (phase #1) and let the second phase (updateAfterDescendants) |
| deal with the spanner moving. |
| |
| Test: fast/multicol/nested-multicol-with-spanner-and-continuation.html |
| |
| * rendering/updating/RenderTreeBuilderMultiColumn.cpp: |
| (WebCore::isValidColumnSpanner): |
| |
| 2020-05-22 Chris Dumez <cdumez@apple.com> |
| |
| Revoking an object URL immediately after triggering navigation causes navigation to fail |
| https://bugs.webkit.org/show_bug.cgi?id=212279 |
| <rdar://problem/63553090> |
| |
| Reviewed by Geoffrey Garen. |
| |
| When doing a policy check for a Blob URL, we clone the blob and create a new temporary Blob URL |
| that stays alive for the duration of the policy check. We made sure to update the ResourceRequest |
| URL with the new Blob URL, however, we were failing to update the DocumentLoader's request. |
| As a result, if the client responded with Policy USE, the DocumentLoader would still attempt to |
| navigate to the old Blob URL. |
| |
| Test: fast/loader/revoke-blob-url-after-navigation.html |
| |
| * loader/PolicyChecker.cpp: |
| (WebCore::FrameLoader::PolicyChecker::extendBlobURLLifetimeIfNecessary const): |
| (WebCore::FrameLoader::PolicyChecker::checkNavigationPolicy): |
| (WebCore::FrameLoader::PolicyChecker::checkNewWindowPolicy): |
| * loader/PolicyChecker.h: |
| |
| 2020-05-22 Simon Fraser <simon.fraser@apple.com> |
| |
| Make sure we clean up CFTimerRefs when destroying scrolling tree nodes |
| https://bugs.webkit.org/show_bug.cgi?id=212278 |
| <rdar://problem/63548212> |
| |
| Reviewed by Tim Horton. |
| |
| When destroying scrolling tree nodes, make sure we explicitly stop the RunLoop::Timers, |
| and do this for all nodes when clearing the m_nodeMap, not just for orphaned nodes as |
| was done in r262042. |
| |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::commitTreeState): |
| (WebCore::ScrollingTree::updateTreeFromStateNodeRecursive): |
| (WebCore::ScrollingTree::removeAllNodes): |
| * page/scrolling/ScrollingTree.h: |
| * page/scrolling/ScrollingTreeNode.h: |
| (WebCore::ScrollingTreeNode::willBeDestroyed): |
| (WebCore::ScrollingTreeNode::wasRemovedFromTree): Deleted. |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h: |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeFrameScrollingNodeMac::willBeDestroyed): |
| (WebCore::ScrollingTreeFrameScrollingNodeMac::wasRemovedFromTree): Deleted. |
| * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h: |
| * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeOverflowScrollingNodeMac::willBeDestroyed): |
| (WebCore::ScrollingTreeOverflowScrollingNodeMac::wasRemovedFromTree): Deleted. |
| |
| 2020-05-22 Andres Gonzalez <andresg_22@apple.com> |
| |
| Updates to the isolated tree must happen before posting notifications to clients. |
| https://bugs.webkit.org/show_bug.cgi?id=212266 |
| |
| Reviewed by Chris Fleizach. |
| |
| Multiple tests. |
| |
| In AXObjectCache::notificationPostTimerFired we were updating the |
| isolated tree after the notifications were posted to the platform |
| clients. This caused that in some cases when the client requested info |
| as the result of those notifications, the isolated tree was out-of-date. |
| In this patch updateIsolatedTree is called before notifying platform clients. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::notificationPostTimerFired): |
| (WebCore::AXObjectCache::postNotification): |
| (WebCore::AXObjectCache::postTextStateChangeNotification): |
| (WebCore::AXObjectCache::updateIsolatedTree): |
| |
| 2020-05-22 Sam Weinig <weinig@apple.com> |
| |
| Extended Color Cleanup: Make alpha premultiplication code more consistent and clear regarding what works with extended colors |
| https://bugs.webkit.org/show_bug.cgi?id=212265 |
| |
| Reviewed by Simon Fraser. |
| |
| - Adds premultiplied(const FloatComponents&) to do premutiplication directly on FloatComponents |
| rather than doing it on the ints and losing precision. |
| - Makes non-FloatComponent alpha premultiplication all take place only for SimpleColors as that |
| is what callers need. The existing premulitplication for ExtendedColors in blend() was incorrect |
| as it never did a conversion to sRGB. |
| - Adds new toSRGBASimpleColorLossy() (to complement toSRGBAComponentsLossy()). Will make it easy |
| to find all the conversions in the future. |
| - Broke non-premultiplying blend() out of blend() (removing parameter) and made a new blendWithoutPremultiply() |
| function for it (no callers needed to make this decision dynamically). |
| |
| * css/CSSGradientValue.cpp: |
| (WebCore::CSSGradientValue::computeStops): |
| Use blendWithoutPremultiply() explicitly. |
| |
| * platform/graphics/Color.h: |
| * platform/graphics/Color.cpp: |
| (WebCore::makePremultipliedRGBA): Renamed from premultipliedARGBFromColor and now only operates on SimpleColors. |
| (WebCore::makeUnPremultipliedRGBA): Renamed from colorFromPremultipliedARGB and now only operates on SimpleColors. |
| (WebCore::colorFromPremultipliedARGB): Deleted. |
| (WebCore::premultipliedARGBFromColor): Deleted. |
| |
| (WebCore::Color::toSRGBASimpleColorLossy const): |
| Added. Useful for finding all non-colorspace preserving users of the color channels. |
| |
| (WebCore::blend): |
| (WebCore::blendWithoutPremultiply): |
| Split these out from each other. Made blend() use toSRGBASimpleColorLossy() and do all |
| operations on SimpleColors directly. The old code that preported to work with extended |
| colors was nonsense as it didn't actually take the colorspaces into account, just grabbed |
| the channels regardless of space. |
| |
| * platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.cpp: |
| (WebCore::ImageBufferCairoImageSurfaceBackend::platformTransformColorSpace): |
| Adopt update premulitiplication names and stay in SimpleColor for entire conversion. |
| |
| * platform/graphics/cairo/NativeImageCairo.cpp: |
| (WebCore::nativeImageSinglePixelSolidColor): |
| Adopt update premulitiplication names. |
| |
| * platform/graphics/ColorUtilities.cpp: |
| (WebCore::premultiplied): |
| * platform/graphics/ColorUtilities.h: |
| * platform/graphics/texmap/TextureMapperGL.cpp: |
| (WebCore::TextureMapperGL::drawBorder): |
| (WebCore::prepareFilterProgram): |
| (WebCore::TextureMapperGL::drawSolidColor): |
| Add and adopt premultiplied(const FloatComponents&). |
| |
| 2020-05-22 Andy Estes <aestes@apple.com> |
| |
| [Apple Pay] Add new ApplePayInstallmentConfiguration members |
| https://bugs.webkit.org/show_bug.cgi?id=212160 |
| <rdar://problem/60703650> |
| |
| Reviewed by Alex Christensen. |
| |
| Test: http/tests/ssl/applepay/ApplePayInstallmentItems.https.html |
| |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: Added IDLs, headers, and derived sources for |
| ApplePayInstallment{Item,ItemType,RetailChannel}. |
| |
| * Modules/applepay/ApplePayInstallmentConfiguration.idl: |
| * Modules/applepay/ApplePayInstallmentConfigurationWebCore.h: Added items, |
| applicationMetadata, and retailChannel members. Added missing conditionals to |
| merchantIdentifier and referrerIdentifier. |
| |
| * Modules/applepay/ApplePayInstallmentItem.h: |
| * Modules/applepay/ApplePayInstallmentItem.idl: |
| * Modules/applepay/ApplePayInstallmentItemType.h: |
| * Modules/applepay/ApplePayInstallmentItemType.idl: |
| * Modules/applepay/ApplePayInstallmentRetailChannel.h: |
| * Modules/applepay/ApplePayInstallmentRetailChannel.idl: Added. |
| |
| * Modules/applepay/ApplePayRequestBase.cpp: |
| (WebCore::convertAndValidate): Changed to call PaymentInstallmentConfiguration::create, |
| returning an exception if present. |
| |
| * Modules/applepay/PaymentInstallmentConfiguration.mm: |
| (WebCore::fromDecimalNumber): Allowed for a large maximum number of fractional digits to |
| support formatting high-precision currency and APRs (note that this formatter is only used |
| for test support). |
| |
| (WebCore::applePayItemType): |
| (WebCore::platformItemType): Added to convert between PKInstallmentItemType and |
| ApplePayInstallmentItemType. |
| |
| (WebCore::applePayRetailChannel): |
| (WebCore::platformRetailChannel): Added to convert between PKInstallmentRetailChannel and |
| ApplePayInstallmentRetailChannel. |
| |
| (WebCore::makeNSArrayElement): |
| (WebCore::makeVectorElement): Added to convert between NSArray<PKPaymentInstallmentItem *> |
| and Vector<ApplePayInstallmentItem>. |
| |
| (WebCore::createPlatformConfiguration): Added a parameter for passing in applicationMetadata |
| as an NSDictionary. Set properties on PKPaymentInstallmentConfiguration for new |
| ApplePayInstallmentConfiguration members. |
| (WebCore::PaymentInstallmentConfiguration::create): Added; converts the applicationMetadata |
| JSON string (if present) to an NSDictionary, returning a TypeError if the JSON string does |
| not deserialize to an NSDictionary (as PassKit requires). |
| (WebCore::PaymentInstallmentConfiguration::PaymentInstallmentConfiguration): Added a |
| parameter for passing in applicationMetadata as an NSDictionary. Made private. |
| (WebCore::PaymentInstallmentConfiguration::applePayInstallmentConfiguration const): Set |
| members on ApplePayInstallmentConfiguration for new PKPaymentInstallmentConfiguration |
| properties. |
| |
| * Modules/applepay/PaymentInstallmentConfigurationWebCore.h: |
| |
| 2020-05-22 Alex Christensen <achristensen@webkit.org> |
| |
| Add SPI to unblock third party cookies from WKWebViews with ResourceLoadStatistics turned on |
| https://bugs.webkit.org/show_bug.cgi?id=212058 |
| <rdar://problem/60595539> |
| |
| Reviewed by John Wilander. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * loader/CookieJar.cpp: |
| (WebCore::shouldRelaxThirdPartyCookieBlocking): |
| (WebCore::CookieJar::cookies const): |
| (WebCore::CookieJar::setCookies): |
| (WebCore::CookieJar::cookieRequestHeaderFieldValue const): |
| (WebCore::CookieJar::getRawCookies const): |
| * page/Page.cpp: |
| (WebCore::m_shouldRelaxThirdPartyCookieBlocking): |
| * page/Page.h: |
| (WebCore::Page::shouldRelaxThirdPartyCookieBlocking const): |
| * page/PageConfiguration.h: |
| * platform/network/CacheValidation.cpp: |
| (WebCore::cookieRequestHeaderFieldValue): |
| * platform/network/NetworkStorageSession.cpp: |
| (WebCore::NetworkStorageSession::shouldBlockCookies const): |
| (WebCore::NetworkStorageSession::maxAgeCacheCap): |
| * platform/network/NetworkStorageSession.h: |
| * platform/network/ShouldRelaxThirdPartyCookieBlocking.h: Added. |
| * platform/network/cf/NetworkStorageSessionCFNetWin.cpp: |
| (WebCore::NetworkStorageSession::setCookiesFromDOM const): |
| (WebCore::NetworkStorageSession::cookiesForDOM const): |
| (WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const): |
| (WebCore::NetworkStorageSession::getRawCookies const): |
| * platform/network/cocoa/NetworkStorageSessionCocoa.mm: |
| (WebCore::NetworkStorageSession::cookiesForURL const): |
| (WebCore::NetworkStorageSession::cookiesForSession const): |
| (WebCore::NetworkStorageSession::cookiesForDOM const): |
| (WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const): |
| (WebCore::NetworkStorageSession::setCookiesFromDOM const): |
| (WebCore::NetworkStorageSession::getRawCookies const): |
| * platform/network/curl/NetworkStorageSessionCurl.cpp: |
| (WebCore::NetworkStorageSession::setCookiesFromDOM const): |
| (WebCore::NetworkStorageSession::cookiesForDOM const): |
| (WebCore::NetworkStorageSession::getRawCookies const): |
| (WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const): |
| * platform/network/curl/ResourceHandleCurl.cpp: |
| (WebCore::ResourceHandle::createCurlRequest): |
| * platform/network/soup/NetworkStorageSessionSoup.cpp: |
| (WebCore::NetworkStorageSession::setCookiesFromDOM const): |
| (WebCore::NetworkStorageSession::getRawCookies const): |
| (WebCore::cookiesForSession): |
| (WebCore::NetworkStorageSession::cookiesForDOM const): |
| (WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const): |
| |
| 2020-05-22 Oriol Brufau <obrufau@igalia.com> |
| |
| Don't put out-of-flow boxes in anonymous flex/grid items |
| https://bugs.webkit.org/show_bug.cgi?id=205386 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| A single anonymous flex/grid item should just contain a contiguous |
| sequence of text runs. |
| |
| This patch is based on https://crrev.com/533825 from Chromium. |
| |
| Tests: imported/w3c/web-platform-tests/css/css-flexbox/anonymous-flex-item-004.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/anonymous-grid-item-001.html |
| |
| * rendering/updating/RenderTreeBuilderBlock.cpp: |
| (WebCore::RenderTreeBuilder::Block::attachIgnoringContinuation): |
| |
| 2020-05-22 Tim Horton <timothy_horton@apple.com> |
| |
| iOS: Pressing tab in the Mail subject field moves focus to the body, but pressing shift tab doesn't move it back |
| https://bugs.webkit.org/show_bug.cgi?id=212243 |
| <rdar://problem/59127764> |
| |
| Reviewed by Wenson Hsieh. |
| |
| New API Tests: WebKit.ShiftTabTakesFocusFromEditableWebView and WebKit.TabDoesNotTakeFocusFromEditableWebView |
| |
| * page/FocusController.cpp: |
| (WebCore::FocusController::relinquishFocusToChrome): |
| (WebCore::FocusController::advanceFocusInDocumentOrder): |
| * page/FocusController.h: |
| Factor out the code that decides whether the Chrome might accept focus, |
| and transfers focus out to the Chrome, for use in EventHandler. |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::defaultTabEventHandler): |
| In the case where we are shift-tabbing out of an editable web view, |
| allow focus to pass to the Chrome. Previously, we would not allow this, |
| because tabKeyCyclesThroughElements is false in editable web views. |
| However, focus exiting the web view entirely needn't be covered by |
| "cycles through elements" behavior. |
| We can't do this for plain "tab", because that needs to be allowed to |
| insert a tab character instead. |
| |
| 2020-05-22 Tyler Wilcock <twilco.o@protonmail.com> |
| |
| Cannot style ::selection for a flex container |
| https://bugs.webkit.org/show_bug.cgi?id=209822 |
| |
| Reviewed by Antti Koivisto. |
| |
| When needing to query for pseudostyles, RenderText used to unconditionally check the parent's pseudostyles. The parent of |
| RenderText objects is often an anonymous box, depending on the presence of siblings, `display` type, etc. This is problematic |
| as pseudostyles are associated with an element of the DOM, meaning RenderText elements would often fail to find any pseudostyle |
| thanks to their anonymous parent. |
| |
| This patch changes RenderText to traverse its tree of ancestry upwards until it finds a non-anonymous ancestor and gets those pseudostyles, |
| rather than unconditionally trying to get pseudostyles from its direct parent. |
| |
| Blink does something similar when retrieving pseudostyles: |
| |
| https://github.com/chromium/chromium/blob/793cb59c18334f8b506863192bf630776da0f4d2/third_party/blink/renderer/core/paint/selection_painting_utils.cc#L54 |
| |
| Tests: editing/selection/selection-display-block-sibling.html |
| editing/selection/selection-display-flex.html |
| |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::firstNonAnonymousAncestor const): |
| * rendering/RenderObject.h: |
| * rendering/RenderText.h: |
| (WebCore::RenderText::getCachedPseudoStyle const): getCachedPseudoStyle from first non-anonymous ancestor, rather than only checking the direct parent. |
| (WebCore::RenderText::selectionBackgroundColor const): Retrieve selectionBackgroundColor from first non-anonymous ancestor rather than only checking the direct parent. |
| (WebCore::RenderText::selectionForegroundColor const): Retrieve selectionForegroundColor from first non-anonymous ancestor rather than only checking the direct parent. |
| (WebCore::RenderText::selectionEmphasisMarkColor const): Retrieve selectionEmphasisMarkColor from first non-anonymous ancestor rather than only checking the direct parent. |
| (WebCore::RenderText::selectionPseudoStyle const): Retrieve selectionPseudoStyle from first non-anonymous ancestor rather than only checking the direct parent. |
| |
| 2020-05-21 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| DataTransfer.files contains multiple files when pasting a single image with multiple representations |
| https://bugs.webkit.org/show_bug.cgi?id=212245 |
| <rdar://problem/60240436> |
| |
| Reviewed by Tim Horton. |
| |
| When pasting or dropping a single image that is backed by multiple representations in NSPasteboard (or |
| UIPasteboard), we currently report more than one `File` to the page via `DataTransfer.files`. This is because |
| `Pasteboard::read(PasteboardFileReader&)`, which is responsible for converting the contents of the pasteboard |
| into a list of files, currently iterates over every pasteboard type and adds each of them as a file. This is |
| wrong when an item has multiple type representations. |
| |
| To differentiate the case where a single item has multiple representations from the case where it has multiple |
| pasteboard items, we use `allPasteboardItemInfo()` instead to grab a per-item list of types from the pasteboard |
| on Cocoa platforms, and only create at most 1 file per item using the highest fidelity type that contains data. |
| |
| Test: PasteImage.PasteImageWithMultipleRepresentations |
| |
| * platform/cocoa/PasteboardCocoa.mm: |
| (WebCore::Pasteboard::read): |
| |
| 2020-05-21 Simon Fraser <simon.fraser@apple.com> |
| |
| Fix rare scrolling thread crash firing the m_delayedRenderingUpdateDetectionTimer timer |
| https://bugs.webkit.org/show_bug.cgi?id=212250 |
| |
| Reviewed by Tim Horton. |
| |
| It seems that we can fire the m_delayedRenderingUpdateDetectionTimer timer after the |
| ScrollingTree has been destroyed (possibly because it's destroyed on another thread |
| and CFRunLoopTimerRef isn't threadsafe), so explicitly clear the timer in invalidate() |
| while holding m_treeMutex. |
| |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::invalidate): |
| |
| 2020-05-21 Sam Weinig <weinig@apple.com> |
| |
| Extended Color Cleanup: Move Color coder definitions to Color to allow for future encaspulation improvements |
| https://bugs.webkit.org/show_bug.cgi?id=212247 |
| |
| Reviewed by Simon Fraser. |
| |
| Move IPC encoder/decoder definitions from WebKit down into Color itself to move closer |
| to making Color::rgb() private. |
| |
| * platform/graphics/Color.h: |
| (WebCore::Color::encode const): |
| (WebCore::Color::decode): |
| |
| 2020-05-21 Simon Fraser <simon.fraser@apple.com> |
| |
| Scrolling thread scrolls on sync-scrolling scrollers don't get to the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=212225 |
| |
| Fix builds that use Nicosia after r262041. |
| |
| * page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp: |
| (WebCore::ScrollingTreeFrameScrollingNodeNicosia::currentScrollPositionChanged): |
| * page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.h: |
| |
| 2020-05-21 Simon Fraser <simon.fraser@apple.com> |
| |
| Fix some thread safety issues with ScrollController timers |
| https://bugs.webkit.org/show_bug.cgi?id=212238 |
| |
| Reviewed by Wenson Hsieh. |
| |
| There were some problems with the timers fired by ScrollController, used for rubber-banding |
| and scroll snap. |
| |
| First, they could fire on the main thread when we intended them to fire on the scrolling thread. |
| This happened because in r260716 I made the scrolling tree commit on the main thread, so we'd |
| construct the ScrollingTreeScrollingNodeDelegateMac and its ScrollController there and its |
| timers would grab the main thread runloop. Fix by creating the timers on demand. |
| |
| Secondly, the timer callbacks called into scrolling tree code, but without taking |
| the scrolling tree lock, |
| and without any guarantee that the node would stay alive for the duration of the callback. |
| Fix by having the ScrollControllerClient create the timers, allowing the client to have |
| a callback wrapper that locks, and to ensure object lifetime (or make a weak ref). Now |
| that scrolling tree nodes could be extended by a pending timer, we need to explicitly |
| clear the timers when nodes are removed from the tree. |
| |
| Finally, rename some confusingly named ScrollControllerClient functions. |
| |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::commitTreeState): |
| * page/scrolling/ScrollingTree.h: |
| (WebCore::ScrollingTree::treeMutex): |
| * page/scrolling/ScrollingTreeNode.h: |
| (WebCore::ScrollingTreeNode::wasBeRemovedFromTree): |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h: |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeFrameScrollingNodeMac::wasBeRemovedFromTree): |
| * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h: |
| * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeOverflowScrollingNodeMac::wasBeRemovedFromTree): |
| * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h: |
| * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm: |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::nodeWillBeDestroyed): |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::createTimer): |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::didStopRubberbandSnapAnimation): |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::willStartScrollSnapAnimation): |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::didStopScrollSnapAnimation): |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::stopSnapRubberbandTimer): Deleted. |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::startScrollSnapTimer): Deleted. |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::stopScrollSnapTimer): Deleted. |
| * platform/ScrollAnimator.cpp: |
| (WebCore::ScrollAnimator::createTimer): |
| * platform/ScrollAnimator.h: |
| * platform/cocoa/ScrollController.h: |
| (WebCore::ScrollControllerTimer::ScrollControllerTimer): |
| (WebCore::ScrollControllerClient::willStartRubberBandSnapAnimation): |
| (WebCore::ScrollControllerClient::didStopRubberbandSnapAnimation): |
| (WebCore::ScrollControllerClient::willStartScrollSnapAnimation): |
| (WebCore::ScrollControllerClient::didStopScrollSnapAnimation): |
| (WebCore::ScrollControllerClient::startSnapRubberbandTimer): Deleted. |
| (WebCore::ScrollControllerClient::stopSnapRubberbandTimer): Deleted. |
| (WebCore::ScrollControllerClient::startScrollSnapTimer): Deleted. |
| (WebCore::ScrollControllerClient::stopScrollSnapTimer): Deleted. |
| * platform/cocoa/ScrollController.mm: |
| (WebCore::ScrollController::ScrollController): |
| (WebCore::ScrollController::stopAllTimers): |
| (WebCore::ScrollController::handleWheelEvent): |
| (WebCore::ScrollController::snapRubberBandTimerFired): |
| (WebCore::ScrollController::isRubberBandInProgress const): |
| (WebCore::ScrollController::isScrollSnapInProgress const): |
| (WebCore::ScrollController::startSnapRubberbandTimer): |
| (WebCore::ScrollController::stopSnapRubberbandTimer): |
| (WebCore::ScrollController::snapRubberBand): |
| (WebCore::ScrollController::scheduleStatelessScrollSnap): |
| (WebCore::ScrollController::statelessSnapTransitionTimerFired): |
| (WebCore::ScrollController::startScrollSnapTimer): |
| (WebCore::ScrollController::stopScrollSnapTimer): |
| * platform/mac/ScrollAnimatorMac.h: |
| |
| 2020-05-21 Simon Fraser <simon.fraser@apple.com> |
| |
| Scrolling thread scrolls on sync-scrolling scrollers don't get to the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=212225 |
| |
| Reviewed by Tim Horton. |
| |
| Some scrolls on nodes with synchronousScrollingReasons failed to set the m_scrolledSinceLastCommit bit, |
| because ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged() bypassed a call to the superclass. |
| |
| Fix by passing ScrollingLayerPositionAction so that it can just call super. |
| |
| This will be tested by existing tests after some upcoming scroll snap changes. |
| |
| * page/scrolling/ScrollingTreeScrollingNode.cpp: |
| (WebCore::ScrollingTreeScrollingNode::currentScrollPositionChanged): |
| * page/scrolling/ScrollingTreeScrollingNode.h: |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h: |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged): |
| |
| 2020-05-21 Peng Liu <peng.liu6@apple.com> |
| |
| Fix issues of the Picture-in-Picture API under stress tests |
| https://bugs.webkit.org/show_bug.cgi?id=212191 |
| |
| Reviewed by Eric Carlson. |
| |
| The current implementation of the Picture-in-Picture API is not robust under stress tests. |
| Changing the video presentation mode of a video element between inline and picture-in-picture |
| continuously may corrupt the internal states of the video element. |
| |
| This patch refactors the approach to tracking the progress of video presentation mode changes |
| and make sure no new requestPictureInPicture() or exitPictureInPicture() will trigger |
| a presentation mode change unless the previous operations are completed. |
| |
| This patch also removes the code for testing purposes in the HTMLVideoElement class. |
| |
| Covered by existing tests. |
| |
| * html/HTMLMediaElement.h: |
| * html/HTMLVideoElement.cpp: |
| (WebCore::toPresentationMode): |
| (WebCore::HTMLVideoElement::setFullscreenMode): |
| (WebCore::HTMLVideoElement::fullscreenModeChanged): |
| (WebCore::HTMLVideoElement::didEnterFullscreen): |
| (WebCore::HTMLVideoElement::didExitFullscreen): |
| (WebCore::HTMLVideoElement::setPictureInPictureObserver): |
| (WebCore::HTMLVideoElement::setVideoFullscreenFrame): |
| (WebCore::HTMLVideoElement::didBecomeFullscreenElement): Deleted. |
| (WebCore::HTMLVideoElement::setPictureInPictureAPITestEnabled): Deleted. |
| * html/HTMLVideoElement.h: |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::setPictureInPictureAPITestEnabled): Deleted. |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| Remove setPictureInPictureAPITestEnabled(). |
| |
| 2020-05-21 Sam Weinig <weinig@apple.com> |
| |
| Extended Color Cleanup: Remove trivial uses of Color::rgb() |
| https://bugs.webkit.org/show_bug.cgi?id=212231 |
| |
| Reviewed by Darin Adler |
| |
| Replaces a few unnecessary uses of Color::rgb(): |
| - Uses of an idiom where code round-tripped a Color via Color(myColor.rgb()). This is |
| not compatible with extended colors and seems to be unnecessary. |
| - Uses of colorWithOverrideAlpha(). This function requires a SimpleColor, so required |
| using color.rgb(). We can't transition to Color::colorWithAlpha due to a slightly |
| different rounding of the alpha, so a new function Color::colorWithAlphaUsingAlternativeRounding |
| was added to which implements the alternative rounding. A later change can reconcile |
| the two versions. |
| - Creation of D2D1::ColorF. D2D1::ColorF has a constructor that takes a four floats that |
| is used instead. |
| - Comparing two colors using rgb() for each to avoid comparing the semantic bit. equalIgnoringSemanticColor |
| exists for just this use. |
| |
| * editing/cocoa/HTMLConverter.mm: |
| (HTMLConverterCaches::colorPropertyValueForNode): |
| * html/HTMLElement.cpp: |
| (WebCore::HTMLElement::addHTMLColorToStyle): |
| * html/canvas/CanvasRenderingContext2DBase.cpp: |
| (WebCore::CanvasRenderingContext2DBase::setStrokeStyle): |
| (WebCore::CanvasRenderingContext2DBase::setFillStyle): |
| (WebCore::CanvasRenderingContext2DBase::setShadow): |
| * html/canvas/CanvasStyle.cpp: |
| (WebCore::CanvasStyle::createFromStringWithOverrideAlpha): |
| * html/track/InbandGenericTextTrack.cpp: |
| (WebCore::InbandGenericTextTrack::updateCueFromCueData): |
| * platform/graphics/Color.cpp: |
| (WebCore::Color::colorWithAlphaMultipliedByUsingAlternativeRounding const): |
| (WebCore::Color::colorWithAlpha const): |
| (WebCore::Color::colorWithAlphaUsingAlternativeRounding const): |
| (WebCore::colorWithOverrideAlpha): Deleted. |
| * platform/graphics/Color.h: |
| (WebCore::colorWithOverrideAlpha): Deleted. |
| * platform/graphics/cairo/CairoOperations.cpp: |
| (WebCore::Cairo::prepareCairoContextSource): |
| * platform/graphics/filters/FEFlood.cpp: |
| (WebCore::FEFlood::platformApplySoftware): |
| * platform/graphics/win/ColorDirect2D.cpp: |
| (WebCore::Color::operator D2D1_COLOR_F const): |
| (WebCore::Color::operator D2D1_VECTOR_4F const): |
| * platform/graphics/win/GraphicsContextDirect2D.cpp: |
| (WebCore::GraphicsContext::colorWithGlobalAlpha const): |
| * platform/mac/ThemeMac.mm: |
| (WebCore::drawCellFocusRingWithFrameAtTime): |
| * rendering/RenderThemeIOS.mm: |
| (WebCore::RenderThemeIOS::paintFileUploadIconDecorations): |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::platformFocusRingColor const): |
| * rendering/RenderTreeAsText.cpp: |
| (WebCore::RenderTreeAsText::writeRenderObject): |
| * svg/SVGStopElement.cpp: |
| (WebCore::SVGStopElement::stopColorIncludingOpacity const): |
| |
| 2020-05-21 Oriol Brufau <obrufau@igalia.com> |
| |
| [css-grid] Don't create renderers for whitespace nodes |
| https://bugs.webkit.org/show_bug.cgi?id=212220 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| Even with 'white-space: pre' we shouldn't create RenderTexts |
| for whitespace-only nodes in grid layout, according to |
| https://drafts.csswg.org/css-grid/#grid-items |
| |
| This patch is based on https://codereview.chromium.org/16888008 |
| |
| Tests: fast/text/simple-line-layout-with-zero-sized-font.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001.html |
| |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::textRendererIsNeeded): |
| |
| 2020-05-21 Simon Fraser <simon.fraser@apple.com> |
| |
| Fix rare crash in TileGrid::platformCALayerShowRepaintCounter() |
| https://bugs.webkit.org/show_bug.cgi?id=212182 |
| <rdar://problem/55618414> |
| |
| Reviewed by Darin Adler. |
| |
| Crash data suggest that owner() can be null in platformCALayerShowRepaintCounter(), |
| so null-check in these functions. |
| |
| * platform/graphics/ca/TileGrid.cpp: |
| (WebCore::TileGrid::platformCALayerDeviceScaleFactor const): |
| (WebCore::TileGrid::platformCALayerShowDebugBorders const): |
| (WebCore::TileGrid::platformCALayerShowRepaintCounter const): |
| (WebCore::TileGrid::isUsingDisplayListDrawing const): |
| |
| 2020-05-21 Youenn Fablet <youenn@apple.com> |
| |
| Incorrect location.origin in blob workers |
| https://bugs.webkit.org/show_bug.cgi?id=211876 |
| <rdar://problem/63284717> |
| |
| Reviewed by Sihui Liu. |
| |
| Instead of computing the origin from the location URL in worker, get it directly from the WorkerGlobalScope origin. |
| This ensures we unwrap properly blob URLs. |
| |
| Test: http/tests/security/contentSecurityPolicy/worker-blob-location.html |
| |
| * workers/WorkerGlobalScope.cpp: |
| (WebCore::WorkerGlobalScope::location const): |
| * workers/WorkerLocation.cpp: |
| (WebCore::WorkerLocation::origin const): |
| * workers/WorkerLocation.h: |
| (WebCore::WorkerLocation::create): |
| (WebCore::WorkerLocation::url const): |
| (WebCore::WorkerLocation::WorkerLocation): |
| |
| 2020-05-21 John Wilander <wilander@apple.com> |
| |
| Storage Access API: Allow configurable storage access scope |
| https://bugs.webkit.org/show_bug.cgi?id=212114 |
| <rdar://problem/63423063> |
| |
| Reviewed by Alex Christensen. |
| |
| The scope of storage access as per-frame or per-page was discussed in the |
| standards process here: https://github.com/privacycg/storage-access/issues/3 |
| |
| The decision was to have per-page storage access by default. Recent feedback |
| from Google and conversation with Mozilla suggest that we might want to |
| support the caller choosing the scope. |
| |
| This patch adds support for different scope configurations while keeping the |
| existing default as per-frame. A later patch will switch the default and add |
| test cases for per-page scope. |
| |
| A new struct is added WebCore::RequestStorageAccessResult which carries full |
| information about the storage access request result. |
| |
| A new enum is added WebCore::StorageAccessScope to encode per-frame and |
| per-page access. |
| |
| No new tests. No changed functionality. Tests already exist. |
| |
| * dom/DocumentStorageAccess.cpp: |
| (WebCore::DocumentStorageAccess::requestStorageAccess): |
| * dom/DocumentStorageAccess.h: |
| (WebCore::RequestStorageAccessResult::encode const): |
| (WebCore::RequestStorageAccessResult::decode): |
| * page/ChromeClient.h: |
| (WebCore::ChromeClient::requestStorageAccess): |
| |
| 2020-05-21 Yoshiaki Jitsukawa <yoshiaki.jitsukawa@sony.com> |
| |
| [PlayStation] Add minimal WKView API to enable TestWebKitAPI |
| https://bugs.webkit.org/show_bug.cgi?id=211868 |
| |
| Reviewed by Alex Christensen. |
| |
| Enable TestWebKitAPI |
| |
| * PlatformPlayStation.cmake: |
| Add WebKitRequirements library to WebCore_CopySharedLibs. |
| |
| 2020-05-21 Chris Dumez <cdumez@apple.com> |
| |
| ASSERTION FAILED: m_wrapper on fast/events/scoped/editing-commands.html |
| https://bugs.webkit.org/show_bug.cgi?id=209862 |
| <rdar://problem/61164607> |
| |
| Reviewed by Darin Adler. |
| |
| Make sure ScopedEventQueue keeps its event targets alive using a GCReachableRef<Node> |
| so that it keeps alive both the target and its JS wrapper. |
| |
| No new tests, covered by existing test. |
| |
| * dom/ScopedEventQueue.cpp: |
| (WebCore::ScopedEventQueue::enqueueEvent): |
| (WebCore::ScopedEventQueue::dispatchEvent const): |
| (WebCore::ScopedEventQueue::dispatchAllEvents): |
| * dom/ScopedEventQueue.h: |
| |
| 2020-05-21 Sihui Liu <sihui_liu@apple.com> |
| |
| SQLite database fails to close in SQLiteIDBBackingStore::databaseNameFromFile |
| https://bugs.webkit.org/show_bug.cgi?id=212090 |
| |
| Reviewed by Darin Adler. |
| |
| We should finish SQLite statement before closing database. |
| |
| * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: |
| (WebCore::IDBServer::SQLiteIDBBackingStore::databaseNameFromFile): |
| |
| 2020-05-21 Doug Kelly <dougk@apple.com> |
| |
| Dispatch pending events only for current page |
| https://bugs.webkit.org/show_bug.cgi?id=211975 |
| <rdar://problem/58942759> |
| |
| Reviewed by Chris Dumez. |
| |
| Document::implicitClose() should not dispatch events globally. The EventSender class operates as a singleton pattern |
| for each event queue, so to add some means to restrict which documents are handling events, we can send the current |
| page pointer and only dispatch the event if the event is for the same page. Other events are simply re-enqueued |
| to be triggered at a later time. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::implicitClose): |
| * dom/EventSender.h: |
| (WebCore::EventSender::timerFired): |
| (WebCore::EventSender<T>::dispatchPendingEvents): |
| * html/HTMLLinkElement.cpp: |
| (WebCore::HTMLLinkElement::dispatchPendingLoadEvents): |
| * html/HTMLLinkElement.h: |
| * html/HTMLStyleElement.cpp: |
| (WebCore::HTMLStyleElement::dispatchPendingLoadEvents): |
| * html/HTMLStyleElement.h: |
| * loader/ImageLoader.cpp: |
| (WebCore::ImageLoader::dispatchPendingBeforeLoadEvents): |
| (WebCore::ImageLoader::dispatchPendingLoadEvents): |
| (WebCore::ImageLoader::dispatchPendingErrorEvents): |
| * loader/ImageLoader.h: |
| (WebCore::ImageLoader::document): |
| * xml/parser/XMLDocumentParser.cpp: |
| (WebCore::XMLDocumentParser::append): |
| |
| 2020-05-21 Simon Fraser <simon.fraser@apple.com> |
| |
| [macOS] Scrolling synchronization part 2: Have the scrolling thread detect when the main thread is slow to respond to start a rendering update |
| https://bugs.webkit.org/show_bug.cgi?id=212175 |
| |
| Reviewed by Tim Horton. |
| |
| The scrolling thread now detects when a main thread rendering update is taking too long, going into |
| desynchronized mode when that happens. |
| |
| However, there's another state that needs to be handled, which is the main thread being busy and |
| taking too long to start the rendering update. The scrolling thread gets a "displayDidRefresh" ping |
| and expects that the main thread will get the same ping, and use it to start the rendering update, |
| but a busy main thread won't respond to this ping promptly. |
| |
| Detect this with a short-duration (1ms) timer that fires on the scrolling thread; if the timer fires |
| we go into desynchronized mode until the next update. The timer is canceled if the scrolling thread |
| receives the willStartRenderingUpdate(). |
| |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::waitForRenderingUpdateCompletionOrTimeout): |
| (WebCore::ThreadedScrollingTree::scheduleDelayedRenderingUpdateDetectionTimer): |
| (WebCore::ThreadedScrollingTree::delayedRenderingUpdateDetectionTimerFired): |
| (WebCore::ThreadedScrollingTree::displayDidRefreshOnScrollingThread): |
| * page/scrolling/ThreadedScrollingTree.h: |
| |
| 2020-05-21 Sergio Villar Senin <svillar@igalia.com> |
| |
| [css-grid] [css-flex] Width of table as grid/flex item is infinite when the sum of columns' width exceed 100% |
| https://bugs.webkit.org/show_bug.cgi?id=191365 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| Automatic table layout algorithm generates infinite width tables |
| (tableMaxWidth to be more exact) when the sum of the columns percentages |
| exceed the 100% value and there is at least one non-percentage based |
| column with positive width as in those cases it's impossible to fulfill |
| the table constrains. That should not be done in the case of the table |
| being a flex or a grid item because they both define new formatting |
| contexts. |
| |
| Based on Blink's crrev.com/1095220 by <mstensho@chromium.org> |
| |
| * rendering/AutoTableLayout.cpp: |
| (WebCore::shouldScaleColumnsForParent): return false when the table is |
| either a grid or a flex item. |
| |
| 2020-05-21 Zalan Bujtas <zalan@apple.com> |
| |
| [ macOS debug ] REGRESSION: fast/layoutformattingcontext/table-basic-row-baseline-with-nested-table.html is a flaky crash |
| https://bugs.webkit.org/show_bug.cgi?id=212139 |
| <rdar://problem/63447683> |
| |
| Reviewed by Antti Koivisto. |
| |
| Uninitialized row baseline value caused unexpected cell height in nested tables. |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForRows): |
| * layout/tableformatting/TableGrid.h: |
| |
| 2020-05-21 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Collapse in-between cell borders |
| https://bugs.webkit.org/show_bug.cgi?id=212183 |
| |
| Reviewed by Antti Koivisto. |
| |
| This patch expands border collapsing to in-between cell borders. |
| |
| Test: fast/layoutformattingcontext/table-simple-border-collapse3.html |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutCell): |
| * layout/tableformatting/TableFormattingContext.h: |
| * layout/tableformatting/TableFormattingContextGeometry.cpp: |
| (WebCore::Layout::TableFormattingContext::Geometry::computedCellBorder const): |
| (WebCore::Layout::TableFormattingContext::Geometry::intrinsicWidthConstraintsForCell): |
| |
| 2020-05-21 Enrique Ocaña González <eocanha@igalia.com> |
| |
| [GStreamer][GTK][WPE] Expose and honor the media content types requiring hardware support setting |
| https://bugs.webkit.org/show_bug.cgi?id=211950 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Provide the needed information about media content types requiring hardware support |
| when asking the MediaPlayer about what types are supported. This was already being done |
| from HTMLMediaElement for player selection, but not in MediaSource nor in |
| MediaSource::addSourceBuffer() when the webpage used the MSE API to check type support. |
| In order to ask for the mediaContentTypesRequiringHardwareSupport setting we need a |
| reference to the current Document in all the places where we need to check type support. |
| |
| * Modules/mediasource/MediaSource.cpp: |
| (WebCore::MediaSource::addSourceBuffer): Provide hardware content types extra info. |
| (WebCore::MediaSource::isTypeSupported): Get hardware content types extra info from |
| ScriptExecutionContext and provide it to a new refactored private version of |
| isTypeSupported() which can also be reused from addSourceBuffer(). |
| * Modules/mediasource/MediaSource.h: Changed isTypeSupported() prototype to take |
| ScriptExecutionContext and added a new overloaded version of the method. |
| * Modules/mediasource/MediaSource.idl: isTypeSupported() now provides a reference to |
| ScriptExecutionContext. It's the only way to access the required document settings from a |
| static method. |
| * platform/graphics/gstreamer/GStreamerRegistryScanner.cpp: |
| (WebCore::GStreamerRegistryScanner::isContentTypeSupported const): Factor ContentType |
| discrimination logic common to MediaPlayerPrivateGStreamer and |
| MediaPlayerPrivateGStreamerMSE. |
| * platform/graphics/gstreamer/GStreamerRegistryScanner.h: Added new method. |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::supportsType): Provide hardware content types extra |
| info when asking for type support. |
| * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: |
| (WebCore::MediaPlayerPrivateGStreamerMSE::supportsType): Ditto. |
| |
| 2020-05-20 Simon Fraser <simon.fraser@apple.com> |
| |
| [macOS] Scrolling synchronization part 1: Have the scrolling thread wait half a frame for the main thread to complete the rendering update |
| https://bugs.webkit.org/show_bug.cgi?id=212168 |
| |
| Reviewed by Tim Horton. |
| |
| Currently the scrolling thread is a free-running thread that moves layers around in response |
| to wheel events, and asynchronously posts data about scrolled layers back to the main thread. |
| That results in an almost guaranteed lack of synchronization between the displayed layer |
| positions, and the web-exposed values for scroll position (element.scrollTop, window.pageYOffset etc). |
| This is a frequent source of stuttering or jumpy web content when scrolling. |
| |
| The first step to fixing this is to synchronize the scrolling thread layer positions |
| and the main thread state for the case where the main thread is responsive enough to |
| render once per frame. This is achieved as follow: |
| - When the main thread is starting a rendering update, Page::updateRendering() informs |
| the scrolling tree via ScrollingCoordinatorMac::willStartRenderingUpdate(). This |
| atomically waits for the scrolling thread to take the m_treeMutex (via a BinarySemaphore) |
| and starts waiting on the m_stateCondition Condition. Now the main thread pulls the |
| state of the scrolling tree via synchronizeStateFromScrollingTree() and uses it for |
| the rendering update. |
| - If the rendering update finishes within half a frame (8ms), then m_stateCondition |
| is released, and the scrolling thread assumes that the main thread is going to |
| commit layers rapidly enough to preserve 60fps scrolling. |
| - If the rendering update takes too long, m_stateCondition times out, and the scrolling |
| thread applies layer positions, triggering a CA commit on that thread. |
| |
| We no longer apply layer positions directly when handling wheel events. |
| |
| synchronizeStateFromScrollingTree() has to only pull state from nodes that have moved on the scrolling thread, |
| so track that via ScrollingTreeScrollingNode::scrolledSinceLastCommit() and adjust the visitor function to |
| make it available during scrolling tree traversal. |
| |
| * page/Page.cpp: |
| (WebCore::Page::updateRendering): |
| (WebCore::Page::finalizeRenderingUpdate): |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::synchronizeStateFromScrollingTree): |
| * page/scrolling/AsyncScrollingCoordinator.h: |
| * page/scrolling/ScrollingCoordinator.h: |
| (WebCore::ScrollingCoordinator::willStartRenderingUpdate): |
| (WebCore::ScrollingCoordinator::didCompleteRenderingUpdate): |
| (WebCore::ScrollingCoordinator::synchronizeStateFromScrollingTree): Deleted. |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::handleWheelEvent): |
| (WebCore::ScrollingTree::traverseScrollingTreeRecursive): |
| (WebCore::ScrollingTree::commitTreeState): |
| (WebCore::ScrollingTree::updateTreeFromStateNodeRecursive): |
| (WebCore::ScrollingTree::applyLayerPositionsInternal): |
| (WebCore::ScrollingTree::nominalFramesPerSecond): |
| * page/scrolling/ScrollingTree.h: |
| * page/scrolling/ScrollingTreeNode.h: |
| (WebCore::ScrollingTreeNode::didCompleteCommitForNode): |
| * page/scrolling/ScrollingTreeScrollingNode.cpp: |
| (WebCore::ScrollingTreeScrollingNode::didCompleteCommitForNode): |
| (WebCore::ScrollingTreeScrollingNode::currentScrollPositionChanged): |
| * page/scrolling/ScrollingTreeScrollingNode.h: |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::willStartRenderingUpdate): |
| (WebCore::ThreadedScrollingTree::maxAllowableRenderingUpdateDurationForSynchronization): |
| (WebCore::ThreadedScrollingTree::waitForRenderingUpdateCompletionOrTimeout): |
| (WebCore::ThreadedScrollingTree::didCompleteRenderingUpdate): |
| (WebCore::ThreadedScrollingTree::displayDidRefreshOnScrollingThread): |
| * page/scrolling/ThreadedScrollingTree.h: |
| (WebCore::ThreadedScrollingTree::treeMutex): |
| * page/scrolling/mac/ScrollingCoordinatorMac.h: |
| * page/scrolling/mac/ScrollingCoordinatorMac.mm: |
| (WebCore::ScrollingCoordinatorMac::willStartRenderingUpdate): |
| (WebCore::ScrollingCoordinatorMac::didCompleteRenderingUpdate): |
| |
| 2020-05-20 Chris Fleizach <cfleizach@apple.com> |
| |
| REGRESSION (iOS 13.4.1): SpeechSynthesisUtterance.onend event won't fire on cancel(). |
| https://bugs.webkit.org/show_bug.cgi?id=211776 |
| <rdar://problem/63130249> |
| |
| Reviewed by Per Arne Vollan. |
| |
| With the move to having speech synthesis happen in the client, the cancel case hits a snag. |
| We cancel the speech job and clear out the current utterance. By the time the cancel callback comes back, |
| the current utterance is gone and nothing happens. |
| |
| The fix is to process the speechError event immediately and not wait on the speech synthesizer -- which seems sane, |
| since we're just cancelling a speech job. |
| |
| * Modules/speech/SpeechSynthesis.cpp: |
| (WebCore::SpeechSynthesis::cancel): |
| |
| 2020-05-20 Darin Adler <darin@apple.com> |
| |
| Dictation context should be an object identifier, not a type-punned pointer |
| https://bugs.webkit.org/show_bug.cgi?id=212174 |
| |
| Reviewed by Anders Carlsson. |
| |
| * Headers.cmake: Added DictationContext.h. |
| * Sources.txt: Removed DictationAlternative.cpp. |
| * WebCore.xcodeproj/project.pbxproj: Added DictationContext.h, removed DictationAlternative.cpp. |
| |
| * dom/DocumentMarker.h: Use DictationContext instead of uint64_t. |
| * editing/AlternativeTextController.cpp: |
| (WebCore::AlternativeTextController::timerFired): Ditto. |
| * editing/AlternativeTextController.h: Ditto. |
| |
| * editing/DictationAlternative.h: Use DictationContext instead of uint64_t, but also |
| use CharacterRange rather than two "unsigned" values. Also convert into a simple |
| struct without constructors; don't really need those. |
| |
| * editing/DictationAlternative.cpp: Removed. |
| |
| * editing/DictationCommand.cpp: |
| (WebCore::DictationCommand::collectDictationAlternativesInRange): Updated for |
| changes to DictationAlternative. |
| |
| * editing/DictationContext.h: Added. |
| |
| * editing/Editor.h: Forward declare DictationAlternative rather than including |
| its header. |
| |
| * editing/cocoa/AlternativeTextContextController.h: Use a pair of maps to bind NSTextAlternatives |
| objects to object identifiers. Remove unnecessary explicit constructor and destructor. Also removed |
| unnecessary use of WTF_MAKE_FAST_ALLOCATED, since this is only used as a data member of another |
| class. Removed unused invalidContext constant. |
| * editing/cocoa/AlternativeTextContextController.mm: Removed the unneeded includes. |
| This file treats NSTextAlternatives as an opaque Objective-C type and so doesn't need |
| any details of that class. |
| (WebCore::AlternativeTextContextController::addAlternatives): Changed to return a |
| DictationContext and use two maps, using HashMap::ensure to avoid double hashing. |
| (WebCore::AlternativeTextContextController::alternativesForContext): Added a null check. |
| (WebCore::AlternativeTextContextController::removeAlternativesForContext): Ditto. Also |
| updated to remove from both maps. |
| (WebCore::AlternativeTextContextController::clear): Clear both maps. |
| |
| * editing/cocoa/AlternativeTextUIController.h: Since this header is used only from Objective-C, |
| removed use of OBJC_CLASS. Put showAlternatives inside a macOS-specific block. Use DictationContext |
| instead of uint64_t. |
| * editing/cocoa/AlternativeTextUIController.mm: |
| (WebCore::AlternativeTextUIController::addAlternatives): Use DictationContext instead of uint64_t. |
| (WebCore::AlternativeTextUIController::alternativesForContext): Ditto. |
| (WebCore::AlternativeTextUIController::showAlternatives): Ditto. |
| (WebCore::AlternativeTextUIController::handleAcceptedAlternative): Ditto. |
| (WebCore::AlternativeTextUIController::removeAlternatives): Ditto. |
| |
| * page/AlternativeTextClient.h: Use DictationContext instead of uint64_t. |
| |
| 2020-05-20 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Preferred width computation should take border collapsing into account |
| https://bugs.webkit.org/show_bug.cgi?id=212141 |
| |
| Reviewed by Antti Koivisto. |
| |
| Test: fast/layoutformattingcontext/table-simple-border-collapse2.html |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns): |
| * layout/tableformatting/TableFormattingContext.h: |
| (WebCore::Layout::TableFormattingContext::Geometry::Geometry): |
| * layout/tableformatting/TableFormattingContextGeometry.cpp: |
| (WebCore::Layout::TableFormattingContext::Geometry::intrinsicWidthConstraintsForCell): |
| |
| 2020-05-20 Zalan Bujtas <zalan@apple.com> |
| |
| Repaint issues when the login field collapses on music.apple.com |
| https://bugs.webkit.org/show_bug.cgi?id=212101 |
| <rdar://problem/62874369> |
| |
| Reviewed by Simon Fraser. |
| |
| RenderWidgets (e.g iframe) are painted on integral pixel boundaries. When we issue the repaints on such renderers, we need to |
| make sure that the repaint rectangles are also snapped to integral pixel values. |
| Currently trunk only covers the case when the renderer itself is positioned on a subpixel position (e.g when the containing block's content box has a non-integral position value). |
| This patch ensures that we repaint the RenderWidgets properly when a non-direct ancestor puts the renderer on a subpixel position. |
| |
| Test: fast/repaint/iframe-on-subpixel-position.html |
| |
| * page/FrameView.h: |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::computeVisibleRectInContainer const): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::setContentsNeedDisplay): |
| (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect): |
| * rendering/RenderObject.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::enableSubframeRepaintTracking): add subframe repaint tracking |
| (WebCore::Internals::disableSubframeRepaintTracking): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-05-20 Oriol Brufau <obrufau@igalia.com> |
| |
| Computed min-width/height for auto depends on box |
| https://bugs.webkit.org/show_bug.cgi?id=209651 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| Resolved value of min-width and min-height for auto min sizing of flex |
| and grid items may be 'auto'. We based this on the computed style of the |
| shadow including parent. Instead we should rely on whether the element |
| will actually be a rendered flex/grid item. |
| |
| The difference matters e.g. when the parent has 'display: contents' and |
| thus is not a flex nor grid container, but the element can still be a |
| flex or grid item, depending on the grand-parent. |
| |
| This patch is based on https://crrev.com/540901 from Chromium. |
| |
| Tests: imported/w3c/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_min-auto-size.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-min-auto-size-001.html |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::isFlexOrGridItem): |
| (WebCore::ComputedStyleExtractor::valueForPropertyInStyle): |
| |
| 2020-05-20 Alex Christensen <achristensen@webkit.org> |
| |
| Remove implicit URL->String conversion operators |
| https://bugs.webkit.org/show_bug.cgi?id=211033 |
| |
| Reviewed by Darin Adler. |
| |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::stringValueForMSAA const): |
| * html/DOMURL.cpp: |
| (WebCore::DOMURL::create): |
| * html/HTMLPlugInElement.cpp: |
| (WebCore::pluginReplacementForType): |
| * html/URLUtils.h: |
| (WebCore::URLUtils<T>::protocol const): |
| (WebCore::URLUtils<T>::setUsername): |
| (WebCore::URLUtils<T>::setPassword): |
| * page/Location.cpp: |
| (WebCore::Location::setProtocol): |
| (WebCore::Location::setHost): |
| (WebCore::Location::setHostname): |
| (WebCore::Location::setPort): |
| (WebCore::Location::setPathname): |
| (WebCore::Location::setSearch): |
| (WebCore::Location::setHash): |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::MediaPlayer::load): |
| |
| 2020-05-20 Sam Weinig <weinig@apple.com> |
| |
| Replace Color::getHSL() with sRGBToHSL to ensure it at least gives somewhat sensible results for ExtendedColors and reduce code duplication |
| https://bugs.webkit.org/show_bug.cgi?id=212143 |
| |
| Reviewed by Simon Fraser. |
| |
| - Updated API tests to test sRGBToHSL() rather than Color::getHSL() and extended the tests |
| to include lightness tests and round tripping tests. |
| - Update editing/pasteboard/paste-dark-mode-color-filtered.html with extended color test cases. |
| |
| Replaces Color::getHSL() with sRGBToHSL(color.toSRGBAComponentsLossy()) and adds |
| an optimized variant, lightness(...) that just extracts the lightness component for |
| callers that only needed that. |
| |
| It is now required to explicitly use color.toSRGBAComponentsLossy() to indicate that |
| for non-SRGB colors, this will be a lossy transformation and give us an easy way to |
| find all these sites in the future, if we want to make a better conversion for other |
| color spaces. |
| |
| * editing/ReplaceSelectionCommand.cpp: |
| (WebCore::fragmentNeedsColorTransformed): |
| Switch to using lightness(). This was previously broken for extended colors but now works (though |
| in a lossy way through sRGB). Update editing/pasteboard/paste-dark-mode-color-filtered.html with extended colors. |
| |
| * editing/cocoa/DataDetection.mm: |
| (WebCore::DataDetection::detectContentInRange): |
| Switch to using sRGBToHSL(color.toSRGBAComponentsLossy()). |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::recalculateScrollbarOverlayStyle): |
| Switch to using lightness(). |
| |
| * platform/graphics/Color.cpp: |
| (WebCore::Color::getHSL const): Deleted. |
| * platform/graphics/Color.h: |
| Remove Color::getHSL(). |
| |
| * platform/graphics/ColorUtilities.cpp: |
| (WebCore::lightness): |
| Added optimized subset of sRGBToHSL which just computes the lightness component for callers |
| that only need that. |
| |
| (WebCore::sRGBToHSL): |
| Simplify/cleanup code a little using initialize-list based std::max/std::min and structured bindings. |
| |
| * platform/graphics/ColorUtilities.h: |
| Export functions to allow testing them directly. |
| |
| 2020-05-20 Megan Gardner <megan_gardner@apple.com> |
| |
| Hide password echo when screen is being captured. |
| https://bugs.webkit.org/show_bug.cgi?id=212060 |
| <rdar://problem/47653578> |
| |
| Reviewed by Wenson Hsieh. |
| |
| When the screen is being captured, turn off the password echo. |
| |
| * editing/InsertIntoTextNodeCommand.cpp: |
| (WebCore::InsertIntoTextNodeCommand::doApply): |
| * page/EditorClient.h: |
| (WebCore::EditorClient::isScreenCaptured const): |
| |
| 2020-05-20 ChangSeok Oh <changseok@webkit.org> |
| |
| [GTK] Implement connected and disconnected events of GAMEPAD API with libmanette |
| https://bugs.webkit.org/show_bug.cgi?id=133854 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| This patch brings initial GAMEPAD API support to the gtk port. We use libmanette, |
| a simple GObject game controller library to handle gamepad connection and input. |
| This change aims to implement two GAMEPAD API events: 'gamepadconnected' and 'gamepaddisconnected' |
| on top of libmanette. Rest of API will be implemented by following patches. |
| |
| No new tests since existing tests can cover this change. |
| |
| * PlatformGTK.cmake: Add header & library paths for libmanette. |
| * SourcesGTK.txt: |
| * platform/gamepad/manette/GUniquePtrManette.h: Added to define a smart pointer for ManetteMonitor. |
| * platform/gamepad/manette/ManetteGamepad.cpp: Added. A wrapper class for ManetteDevice. |
| A ManetteGamepad instance is created per a physically connected gamepad. Currently, |
| it is empty but input handling login will be placed in this class. |
| (WebCore::ManetteGamepad::ManetteGamepad): |
| * platform/gamepad/manette/ManetteGamepad.h: Added. |
| * platform/gamepad/manette/ManetteGamepadProvider.cpp: Added. A manager class |
| for ManetteGamepad instances. This class represents ManetteMonitor that |
| handles connection and disconnection of gamepads. Many parts of this class implementation |
| is brought from HIDGamepad.cpp |
| (WebCore::ManetteGamepadProvider::singleton): |
| (WebCore::onDeviceConnected): |
| (WebCore::onDeviceDisconnected): |
| (WebCore::ManetteGamepadProvider::ManetteGamepadProvider): |
| (WebCore::ManetteGamepadProvider::startMonitoringGamepads): |
| (WebCore::ManetteGamepadProvider::stopMonitoringGamepads): |
| (WebCore::ManetteGamepadProvider::deviceConnected): |
| (WebCore::ManetteGamepadProvider::deviceDisconnected): |
| (WebCore::ManetteGamepadProvider::indexForNewlyConnectedDevice): |
| (WebCore::ManetteGamepadProvider::connectionDelayTimerFired): |
| (WebCore::ManetteGamepadProvider::removeGamepadForDevice): |
| * platform/gamepad/manette/ManetteGamepadProvider.h: Added. |
| |
| 2020-05-20 Antoine Quint <graouts@apple.com> |
| |
| Potential crash in PointerCaptureController::cancelPointer() |
| https://bugs.webkit.org/show_bug.cgi?id=208347 |
| <rdar://problem/59866247> |
| |
| Reviewed by David Kilzer and Daniel Bates. |
| |
| * page/PointerCaptureController.cpp: |
| (WebCore::PointerCaptureController::cancelPointer): |
| |
| 2020-05-20 Oriol Brufau <obrufau@igalia.com> |
| |
| [css-grid] Fix auto repeat with multiple tracks and gutters |
| https://bugs.webkit.org/show_bug.cgi?id=182922 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| The code that computes the number of auto repeat tracks wrongly assumes |
| that the second argument of the repeat() notation is a single track |
| function. That was true in the beginning, however specs were later on |
| modified to allow a <track-list>. We support a <track-list> as a second |
| argument since long ago but the code that computes the number of |
| auto-repeat tracks was never updated. |
| |
| This patch modifies two places that relate to the gaps between the |
| auto-repeat tracks, which ensures the proper total length. |
| |
| This is a port of https://crrev.com/620278 from Chromium. |
| |
| Tests: fast/css-grid-layout/grid-auto-repeat-huge-grid.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-001.html |
| |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::computeAutoRepeatTracksCount const): |
| |
| 2020-05-20 Simon Fraser <simon.fraser@apple.com> |
| |
| Plumb the display's nominal refresh rate down to ScrollingTree for use in scroll synchronization |
| https://bugs.webkit.org/show_bug.cgi?id=212159 |
| |
| Reviewed by Tim Horton. |
| |
| Plumb an Optional<unsigned> down windowScreenDidChange, which contains the nominal |
| display refresh rate (as frames per second) if available. On macOS, we get this |
| from CVDisplayLinkGetNominalOutputVideoRefreshPeriod(). |
| |
| To read it, WebProcessPool::nominalFramesPerSecondForDisplay() makes a DisplayLink |
| that doesn't get any observers, but that DisplayLink will very likely get used |
| as soon as we schedule a rendering update. |
| |
| * page/Chrome.cpp: |
| (WebCore::Chrome::windowScreenDidChange): |
| * page/Chrome.h: |
| * page/Page.cpp: |
| (WebCore::Page::scrollingCoordinator): |
| (WebCore::Page::windowScreenDidChange): |
| * page/Page.h: |
| (WebCore::Page::displayNominalFramesPerSecond const): |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::windowScreenDidChange): |
| * page/scrolling/AsyncScrollingCoordinator.h: |
| * page/scrolling/ScrollingCoordinator.h: |
| (WebCore::ScrollingCoordinator::windowScreenDidChange): |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::windowScreenDidChange): |
| * page/scrolling/ScrollingTree.h: |
| * platform/HostWindow.h: |
| |
| 2020-05-20 Chris Dumez <cdumez@apple.com> |
| |
| Disable support for BeforeLoadEvent |
| https://bugs.webkit.org/show_bug.cgi?id=212140 |
| <rdar://problem/62847577> |
| |
| Reviewed by Antti Koivisto. |
| |
| Disable support for BeforeLoadEvent. Other browsers do not support it and |
| Chrome dropped it shortly after the fork: |
| - https://bugs.chromium.org/p/chromium/issues/detail?id=333318 |
| |
| This is a synchronous event and therefore very dangerous. |
| |
| Test: fast/frames/didBecomeCurrentDocumentInFrame-crash.html |
| |
| * bindings/js/WebCoreBuiltinNames.h: |
| * dom/BeforeLoadEvent.idl: |
| * dom/Node.cpp: |
| (WebCore::Node::dispatchBeforeLoadEvent): |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::setLegacyBeforeLoadEventEnabled): |
| (WebCore::RuntimeEnabledFeatures::legacyBeforeLoadEventEnabled const): |
| |
| 2020-05-20 Zalan Bujtas <zalan@apple.com> |
| |
| RenderObject::VisibleRectContext members should not be prefixed with m_ |
| https://bugs.webkit.org/show_bug.cgi?id=212154 |
| |
| Reviewed by Simon Fraser. |
| |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::applyCachedClipAndScrollPosition const): |
| (WebCore::RenderBox::computeVisibleRectInContainer const): |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::computeVisibleRectInContainer const): |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::computeVisibleRectInContainer const): |
| * rendering/RenderObject.h: |
| * rendering/RenderTableCell.cpp: |
| (WebCore::RenderTableCell::computeVisibleRectInContainer const): |
| * rendering/RenderView.cpp: |
| (WebCore::RenderView::computeVisibleRectInContainer const): |
| * rendering/svg/RenderSVGRoot.cpp: |
| (WebCore::RenderSVGRoot::computeFloatVisibleRectInContainer const): |
| |
| 2020-05-20 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| [iPadOS] -webkit-text-size-adjust:percentage doesn't work |
| https://bugs.webkit.org/show_bug.cgi?id=212122 |
| <rdar://problem/54560875> |
| |
| Reviewed by Wenson Hsieh. |
| |
| We've gotten many bug reports that -webkit-text-size-adjust:X% no longer works in |
| WebKit on iPads. We don't want to just start honoring the value, because our |
| testing indicates that, with desktop-class browsing on iPad, more sites work better |
| when we don't honor percentages. However, if Safari is using the mobile content mode, |
| or if a native app has local content, it should be possible to get the old behavior |
| of honoring percentages. |
| |
| This patch adds a new Setting, idempotentModeAutosizingOnlyHonorsPercentages, which |
| is hooked up to the desktop-class browsing feature. When |
| WebPageProxy::effectiveContentModeAfterAdjustingPolicies() determines that the |
| WebContentMode::Mobile mode should be used, it sets the new setting, which |
| causes idempotent text autosizing mode to have the same behavior that WKWebViews |
| on iPadOS used to have: -w-t-s-a:auto and -w-t-s-a:none have no effect, but |
| -w-t-s-a:X% is honored. This affects both Safari and WKWebView apps. |
| |
| If a native app wants the old behavior, they can set |
| WKWebpagePreferences.preferredContentMode = WKContentModeMobile to force the old |
| iPad behavior. It's expected that apps with legacy content would be doing this |
| anyway. |
| |
| Tests: fast/text-autosizing/ios/idempotentmode/idempotent-percentage.html |
| TestWebKitAPI.PreferredContentMode.IdempotentModeAutosizingOnlyHonorsPercentages |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::applyPoliciesToSettings): |
| * loader/DocumentLoader.h: |
| (WebCore::DocumentLoader::setIdempotentModeAutosizingOnlyHonorsPercentages): |
| (WebCore::DocumentLoader::idempotentModeAutosizingOnlyHonorsPercentages const): |
| * page/Settings.yaml: |
| * style/StyleAdjuster.cpp: |
| (WebCore::Style::Adjuster::adjustmentForTextAutosizing): |
| * style/StyleBuilderCustom.h: |
| (WebCore::Style::computeBaseSpecifiedFontSize): |
| * style/StyleBuilderState.cpp: |
| (WebCore::Style::BuilderState::updateFontForTextSizeAdjust): |
| |
| 2020-05-20 ChangSeok Oh <changseok@webkit.org> |
| |
| Move the TextStream logging definition in VisibleSelection.cpp to the outside of the TREE_DEBUGGING guard |
| https://bugs.webkit.org/show_bug.cgi?id=212127 |
| |
| Reviewed by Simon Fraser. |
| |
| A linking failure occurs after r261819 where ENABLE_TREE_DEBUGGING is disabled. |
| The TextStream logging defining is placed inside the guard while its declaration is not since r218976. |
| |
| Build fix, no functionality changed. |
| |
| * editing/VisibleSelection.cpp: |
| (WebCore::operator<<): |
| |
| 2020-05-20 Andres Gonzalez <andresg_22@apple.com> |
| |
| Fix for accessibility-node-memory-management.html in isolated tree mode. |
| https://bugs.webkit.org/show_bug.cgi?id=212142 |
| |
| Reviewed by Chris Fleizach. |
| |
| LayoutTests/accessibility/accessibility-node-memory-management.html. |
| |
| - Fix in applyPendingChanges that was not removing removed nodes from |
| the nodes map. This was causing that some detached AXIsolatedObjects |
| were being returned. |
| - Also handle the case where pending changes can come from a detached |
| AXObject with invalid ID and no platform wrapper. |
| - updateChildren better handles the case when the notification target |
| is not in the isolated tree by walking up the object hierarchy until it |
| finds an associated object that does have a corresponding isolated object. |
| |
| * accessibility/isolatedtree/AXIsolatedTree.cpp: |
| (WebCore::AXIsolatedTree::treeForPageID): |
| (WebCore::AXIsolatedTree::updateChildren): |
| (WebCore::AXIsolatedTree::applyPendingChanges): |
| |
| 2020-05-20 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Animation engine should not wake up every tick for steps timing functions |
| https://bugs.webkit.org/show_bug.cgi?id=212103 |
| <rdar://problem/62737868> |
| |
| Unreviewed. Clean up some stray FIXMEs mistakenly commited in the previous commit. |
| |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::updateCSSTransitionsForElementAndProperty): |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::TreeResolver::createAnimatedElementUpdate): |
| |
| 2020-05-20 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Animation engine should not wake up every tick for steps timing functions |
| https://bugs.webkit.org/show_bug.cgi?id=212103 |
| <rdar://problem/62737868> |
| |
| Reviewed by Simon Fraser. |
| |
| Tests: webanimations/scheduling-of-animation-with-steps-timing-function-on-effect.html |
| webanimations/scheduling-of-animation-with-steps-timing-function-on-keyframe.html |
| webanimations/scheduling-of-css-animation-with-explicit-steps-timing-function-on-some-keyframes.html |
| webanimations/scheduling-of-css-animation-with-implicit-steps-timing-function.html |
| |
| When an animation uses a steps() timing function, it will appear to animate discretely between values such |
| that there is only n visual changes, where n is the number of steps provided. This gives us an opportunity |
| to be more efficient when scheduling animations using steps() timing functions. |
| |
| In WebAnimation::timeToNextTick() we now ask the associated effect for the amount of progress until the next |
| step. For an effect-wide steps() timing function, we can use the provided iteration progress. For animations |
| with a linear effect-wide timing function (the default), we have to map the provided iteration progress to |
| a keyframe interval, provided that interval uses a steps() timing function. |
| |
| The new {Animation|Keyframe}Effect::progressUntilNextStep() method returns WTF::nullopt for any other case. |
| |
| In order to test this, we add a new internals.timeToNextAnimationTick(animation) method which we use in the |
| two new tests. |
| |
| * animation/AnimationEffect.cpp: |
| (WebCore::AnimationEffect::progressUntilNextStep const): |
| * animation/AnimationEffect.h: |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::setBlendingKeyframes): |
| (WebCore::KeyframeEffect::computeSomeKeyframesUseStepsTimingFunction): |
| (WebCore::KeyframeEffect::timingFunctionForKeyframeAtIndex const): Avoid any out-of-bounds use of the underlying data |
| structures by returning nullptr for cases where we don't have an explicit keyframe. We also make the function const |
| such that it may be called from progressUntilNextStep(), it always was const but wasn't marked as such. |
| (WebCore::KeyframeEffect::progressUntilNextStep const): |
| * animation/KeyframeEffect.h: |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::timeToNextTick const): |
| * animation/WebAnimation.h: |
| * animation/WebAnimation.idl: |
| * testing/Internals.cpp: |
| (WebCore::Internals::timeToNextAnimationTick const): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-05-20 Noam Rosenthal <noam@webkit.org> |
| |
| Fix table sizing when 'max-width' is used |
| https://bugs.webkit.org/show_bug.cgi?id=115156 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Based on previous patch by László Langó <lango@inf.u-szeged.hu> |
| |
| Test: fast/table/html-table-width-max-width-constrained.html |
| |
| A table should always be wide enough to contain its content (preferred logical width). |
| This constraint should be stronger than the table style's specified min-width/width. |
| |
| The behavior matches the spec, and behavior on Firefox/Chrome. |
| |
| * rendering/RenderTable.cpp: |
| (WebCore::RenderTable::updateLogicalWidth): |
| Max-width should only affect the table's max preferred width. |
| |
| (WebCore::RenderTable::computePreferredLogicalWidths): |
| Change the order of constraints so that content constraint is stronger than style width/max-width constraint. |
| |
| 2020-05-20 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| REGRESSION(r261554): [GTK] Version 2.29.1 crashes using drag-n-drop API |
| https://bugs.webkit.org/show_bug.cgi?id=212136 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| * platform/gtk/PasteboardGtk.cpp: |
| (WebCore::Pasteboard::read): Use m_selectionData if present. |
| |
| 2020-05-20 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] <img> tag needs to support video formats |
| https://bugs.webkit.org/show_bug.cgi?id=180370 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| GStreamer implementation of the ImageDecoder. It currently doesn't support zero-copy |
| rendering though due to the the NativeImagePtr requirement. |
| |
| * platform/GStreamer.cmake: |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::isSupportedImageVideoOrSVGMIMEType): |
| * platform/graphics/ImageDecoder.cpp: |
| (WebCore::ImageDecoder::create): |
| (WebCore::ImageDecoder::supportsMediaType): |
| * platform/graphics/gstreamer/ImageDecoderGStreamer.cpp: Added. |
| (WebCore::toSample): |
| (WebCore::ImageDecoderGStreamer::create): |
| (WebCore::ImageDecoderGStreamer::ImageDecoderGStreamer): |
| (WebCore::ImageDecoderGStreamer::supportsContainerType): |
| (WebCore::ImageDecoderGStreamer::canDecodeType): |
| (WebCore::ImageDecoderGStreamer::encodedDataStatus const): |
| (WebCore::ImageDecoderGStreamer::size const): |
| (WebCore::ImageDecoderGStreamer::repetitionCount const): |
| (WebCore::ImageDecoderGStreamer::uti const): |
| (WebCore::ImageDecoderGStreamer::frameOrientationAtIndex const): |
| (WebCore::ImageDecoderGStreamer::frameDurationAtIndex const): |
| (WebCore::ImageDecoderGStreamer::frameHasAlphaAtIndex const): |
| (WebCore::ImageDecoderGStreamer::frameBytesAtIndex const): |
| (WebCore::ImageDecoderGStreamer::createFrameImageAtIndex): |
| (WebCore::ImageDecoderGStreamer::setData): |
| (WebCore::ImageDecoderGStreamer::clearFrameBufferCache): |
| (WebCore::ImageDecoderGStreamer::sampleAtIndex const): |
| (WebCore::ImageDecoderGStreamer::InnerDecoder::decodebinPadAddedCallback): |
| (WebCore::ImageDecoderGStreamer::InnerDecoder::connectDecoderPad): |
| (WebCore::ImageDecoderGStreamer::handleSample): |
| (WebCore::ImageDecoderGStreamer::InnerDecoder::handleMessage): |
| (WebCore::ImageDecoderGStreamer::InnerDecoder::preparePipeline): |
| (WebCore::ImageDecoderGStreamer::InnerDecoder::run): |
| (WebCore::ImageDecoderGStreamer::InnerDecoder::encodedDataStatus const): |
| (WebCore::ImageDecoderGStreamer::pushEncodedData): |
| * platform/graphics/gstreamer/ImageDecoderGStreamer.h: Added. |
| * platform/graphics/gstreamer/ImageGStreamer.h: |
| (WebCore::ImageGStreamer::createImage): |
| (WebCore::ImageGStreamer::image): |
| (WebCore::ImageGStreamer::setCropRect): |
| (WebCore::ImageGStreamer::rect): |
| (WebCore::ImageGStreamer::hasAlpha const): |
| * platform/graphics/gstreamer/ImageGStreamerCairo.cpp: |
| (WebCore::ImageGStreamer::ImageGStreamer): |
| * platform/graphics/gstreamer/MediaSampleGStreamer.h: |
| |
| 2020-05-20 Andy Estes <aestes@apple.com> |
| |
| [Mac] UI processes spin when creating the "Share" context menu item |
| https://bugs.webkit.org/show_bug.cgi?id=212137 |
| <rdar://problem/54498394> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Ran update-webkit-localizable-strings. |
| |
| * en.lproj/Localizable.strings: |
| |
| 2020-05-20 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Internal table boxes should take collapsed border into account |
| https://bugs.webkit.org/show_bug.cgi?id=212135 |
| |
| Reviewed by Antti Koivisto. |
| |
| Use the collapsed border value to compute the borders for sections, rows and cells. |
| The collapsed border is propagated to the table box and the adjacent cell boxes. |
| |
| Test: fast/layoutformattingcontext/table-simple-border-collapse.html |
| |
| * layout/LayoutUnits.h: |
| (WebCore::Layout::operator/): |
| * layout/blockformatting/tablewrapper/TableWrapperBlockFormattingContext.cpp: |
| (WebCore::Layout::TableWrapperBlockFormattingContext::computeBorderAndPaddingForTableBox): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForRows): |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForSections): |
| (WebCore::Layout::TableFormattingContext::layoutCell): |
| * layout/tableformatting/TableGrid.h: |
| (WebCore::Layout::TableGrid::setCollapsedBorder): |
| (WebCore::Layout::TableGrid::collapsedBorder const): |
| |
| 2020-05-20 Youenn Fablet <youenn@apple.com> |
| |
| [Mac] Use preferedPixelBufferFormat for AVVideoCaptureSource |
| https://bugs.webkit.org/show_bug.cgi?id=212071 |
| |
| Reviewed by Eric Carlson. |
| |
| Manually tested. |
| |
| * platform/mediastream/mac/AVVideoCaptureSource.mm: |
| (WebCore::avVideoCapturePixelBufferFormat): |
| |
| 2020-05-20 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix GTK4 build with GTK 3.98.4 |
| |
| * platform/gtk/GtkUtilities.cpp: |
| (WebCore::convertWidgetPointToScreenPoint): |
| * platform/gtk/GtkVersioning.h: |
| (gtk_widget_destroy): |
| * platform/gtk/PlatformScreenGtk.cpp: |
| (WebCore::screenDPI): |
| |
| 2020-05-12 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Add support for drag and drop operations |
| https://bugs.webkit.org/show_bug.cgi?id=211779 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Move the code to create a GdkTexture from an Image from CursorGtk to ImageGtk and add Image::gdkTexture(). |
| |
| * platform/graphics/BitmapImage.h: |
| * platform/graphics/Image.h: |
| (WebCore::Image::gdkTexture): |
| * platform/graphics/gtk/ImageGtk.cpp: |
| (WebCore::BitmapImage::gdkTexture): |
| * platform/gtk/CursorGtk.cpp: |
| (WebCore::createCustomCursor): |
| |
| 2020-05-20 Sam Weinig <weinig@apple.com> |
| |
| Remove unused Color::getHSV function |
| https://bugs.webkit.org/show_bug.cgi?id=212119 |
| |
| Reviewed by Simon Fraser. |
| |
| * platform/graphics/Color.cpp: |
| (WebCore::Color::getHSV const): Deleted. |
| * platform/graphics/Color.h: |
| Remove Color::getHSV(). It was unused outside of the API test for it. |
| |
| 2020-05-20 Youenn Fablet <youenn@apple.com> |
| |
| Allow calling VideoSampleObserver::videoSampleAvailable from a background thread |
| https://bugs.webkit.org/show_bug.cgi?id=212024 |
| |
| Reviewed by Eric Carlson. |
| |
| Allow RealtimeMediaSource::videoSampleAvailable to be called on a background thread, typically the capture thread. |
| Make WebRTC remote sources and mock capture sources do that. |
| |
| RealtimeMediaSource is then updating its intrinsic size from the generation thread while updating its size in the main thread. |
| The size() getter can be called from both threads. |
| |
| Existing consumers do the following: |
| - media player will hop to the main thread. |
| - media recorder will do processing from the background thread. |
| - WebRTC sender will do processing from the background thread, except when sending black frames where this will still be done on the main thread. |
| This is ok as we ensure either we send black frames on the main thread (and we do not observe the source) or we observe the source to send. |
| |
| Follow-ups will migrate the real capture sources as well as migrating media player processing out of the main thread. |
| Covered by existing tests. |
| |
| * platform/MediaSample.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::videoSampleAvailable): |
| * platform/mediastream/RealtimeMediaSource.cpp: |
| (WebCore::RealtimeMediaSource::videoSampleAvailable): |
| (WebCore::RealtimeMediaSource::setIntrinsicSize): |
| * platform/mediastream/RealtimeMediaSource.h: |
| * platform/mediastream/mac/MockRealtimeVideoSourceMac.h: |
| * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm: |
| (WebCore::MockRealtimeVideoSourceMac::MockRealtimeVideoSourceMac): |
| (WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer): |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.h: |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm: |
| (WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame): |
| (WebCore::RealtimeIncomingVideoSourceCocoa::processNewSample): Deleted. |
| |
| 2020-05-20 Oriol Brufau <obrufau@igalia.com> |
| |
| Fix computeMarginLogicalSizeForChild to check auto margins in the right axis |
| https://bugs.webkit.org/show_bug.cgi?id=212113 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| GridLayoutFunctions::computeMarginLogicalSizeForChild checks for 'auto' |
| margins before retrieving the margin size, since these should be treated |
| as 0. However, for orthogonal grid items, it used to check the wrong axis. |
| So if an item had 'margin-top: auto' and 'margin-left: 5px', when asking |
| for the horizontal margin we could get 0px instead of 5px due to the |
| auto margin in the vertical axis. |
| |
| Test: imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html |
| |
| * rendering/GridLayoutFunctions.cpp: |
| (WebCore::GridLayoutFunctions::computeMarginLogicalSizeForChild): |
| (WebCore::GridLayoutFunctions::marginLogicalSizeForChild): |
| |
| 2020-05-19 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [WinCairo] ASSERT(m_eglDisplay == EGL_NO_DISPLAY) fails in ~PlatformDisplay() |
| https://bugs.webkit.org/show_bug.cgi?id=212065 |
| |
| Reviewed by Don Olmstead. |
| |
| PlatformDisplay destoys m_eglDisplay by using std::atexit to |
| ensure they are destructed before EGL's atexit handler (Bug 157973). |
| However, calling eglTerminate in atexit handler causes a |
| crash on Windows (Bug 145832, Bug 170331). |
| |
| Then, r214688 added shutDownEglDisplays() and explicitly call it |
| in shutDownWebKit() to destory m_eglDisplay in Windows WebKit1. |
| However, Windows WebKit2 may call _exit() in IPC::Connection's |
| WorkQueue thread. It doesn't seem a good idea that explicitly |
| destructing m_eglDisplay by calling shutDownEglDisplays(). |
| |
| Remove shutDownEglDisplays() and the assertion for Windows. |
| |
| * platform/graphics/PlatformDisplay.cpp: |
| (WebCore::PlatformDisplay::~PlatformDisplay): Conditioned out the |
| assertion for PLATFORM(WIN). |
| (WebCore::PlatformDisplay::initializeEGLDisplay): Restored the |
| original atexit handler of r201595. |
| (WebCore::PlatformDisplay::shutDownEglDisplays): Deleted. |
| * platform/graphics/PlatformDisplay.h: |
| |
| 2020-05-19 Darin Adler <darin@apple.com> |
| |
| REGRESSION (r259930): Dictation marker at start of text is removed when added trailing whitespace is collapsed |
| https://bugs.webkit.org/show_bug.cgi?id=212093 |
| |
| Reviewed by Daniel Bates. |
| |
| * dom/DocumentMarkerController.cpp: |
| (WebCore::DocumentMarkerController::shiftMarkers): Use int to do the math before clamping to |
| unsigned. This protects against underflow. |
| |
| 2020-05-19 Sam Weinig <weinig@apple.com> |
| |
| Remove almost always incorrect Color::getRGBA |
| https://bugs.webkit.org/show_bug.cgi?id=212059 |
| |
| Reviewed by Darin Adler and Simon Fraser. |
| |
| Removes the awkward and almost always incorrect out parameter based Color::getRGBA. Most existing callsites |
| were updated to use Color::toSRGBAComponentsLossy() or other more ExtendedColor supporting functions (like |
| cachedCGColor()). |
| |
| Also adds tuple-like adaptors for FloatComponents to allow it to be used |
| with structured bindings. For example: |
| |
| auto [r, g, b, a] = myFloatComponents; |
| |
| * platform/graphics/Color.h: |
| * platform/graphics/Color.cpp: |
| (WebCore::Color::light const): |
| (WebCore::Color::dark const): |
| (WebCore::Color::isDark const): |
| Adopt toSRGBAComponentsLossy() to make these not return totally incorrect values. |
| |
| (WebCore::Color::colorSpaceAndComponents const): |
| Added. Returns a std::pair<ColorSpace, FloatComponents> for functions that need |
| to operate on the components in a ColorSpace aware way. Used by toSRGBAComponentsLossy |
| and leakCGColor() for now, but will be useful going forward as well. |
| |
| (WebCore::Color::toSRGBAComponentsLossy const): |
| Re-implement using colorSpaceAndComponents() to simplify implementation. |
| |
| (WebCore::Color::getRGBA const): Deleted. |
| |
| * platform/graphics/ColorUtilities.cpp: |
| (WebCore::FloatComponents::FloatComponents): Deleted. |
| (WebCore::sRGBColorToLinearComponents): Deleted. |
| * platform/graphics/ColorUtilities.h: |
| (WebCore::FloatComponents::get const): |
| Remove uses of the Color class to simplify inlining (Color.h already needs to know about |
| FloatComponents). |
| - FloatComponents constructor replaced by Color::toSRGBAComponentsLossy(). |
| - sRGBColorToLinearComponents replaced by calling rgbToLinearComponents(color.toSRGBAComponentsLossy()). |
| |
| Also adds std::tuple adaptors for FloatComponents to allow using with stuctured bindings. |
| |
| * page/cocoa/ResourceUsageOverlayCocoa.mm: |
| (WebCore::HistoricMemoryCategoryInfo::HistoricMemoryCategoryInfo): |
| Replace getRGBA with cachedCGColor. |
| |
| * platform/graphics/ca/win/PlatformCALayerWin.cpp: |
| (PlatformCALayerWin::setBackgroundColor): |
| Replace getRGBA with cachedCGColor. |
| |
| * platform/graphics/ca/win/PlatformCALayerWinInternal.cpp: |
| (PlatformCALayerWinInternal::setBorderColor): |
| Replace getRGBA with cachedCGColor. |
| |
| * platform/graphics/cairo/CairoUtilities.cpp: |
| (WebCore::setSourceRGBAFromColor): |
| Replace getRGBA with toSRGBAComponentsLossy. |
| |
| * platform/graphics/cairo/GradientCairo.cpp: |
| (WebCore::addColorStopRGBA): |
| (WebCore::setCornerColorRGBA): |
| (WebCore::interpolateColorStop): |
| Replace getRGBA with toSRGBAComponentsLossy. |
| |
| * platform/graphics/cg/ColorCG.cpp: |
| (WebCore::leakCGColor): |
| (WebCore::cachedCGColor): |
| Simplify implementation (and remove use of getRGBA) by using colorSpaceAndComponents(). |
| |
| * platform/graphics/cg/GradientCG.cpp: |
| (WebCore::Gradient::platformGradient): |
| Replace getRGBA with colorSpaceAndComponent(). |
| |
| * platform/graphics/filters/FELighting.cpp: |
| (WebCore::FELighting::drawLighting): |
| Replace FloatComponents constructor taking a Color (which used getRGBA) with toSRGBAComponentsLossy. |
| |
| * platform/graphics/filters/FilterOperations.cpp: |
| (WebCore::FilterOperations::transformColor const): |
| (WebCore::FilterOperations::inverseTransformColor const): |
| Replace getRGBA with toSRGBAComponentsLossy. |
| |
| * platform/graphics/gtk/ColorGtk.cpp: |
| (WebCore::Color::operator GdkRGBA const): |
| Replace getRGBA with toSRGBAComponentsLossy. |
| |
| * platform/graphics/texmap/TextureMapperGL.cpp: |
| (WebCore::TextureMapperGL::drawBorder): |
| (WebCore::TextureMapperGL::drawNumber): |
| (WebCore::prepareFilterProgram): |
| (WebCore::TextureMapperGL::drawSolidColor): |
| Replace getRGBA with toSRGBAComponentsLossy. |
| |
| * platform/graphics/win/GradientDirect2D.cpp: |
| (WebCore::Gradient::generateGradient): |
| Replace getRGBA with toSRGBAComponentsLossy. |
| |
| * platform/graphics/win/GraphicsContextCGWin.cpp: |
| (WebCore::GraphicsContext::drawDotsForDocumentMarker): |
| (WebCore::setCGStrokeColor): Deleted. |
| (WebCore::spellingPatternColor): Deleted. |
| (WebCore::grammarPatternColor): Deleted. |
| Replace use of getRGBA with direct use of SimpleColor instead. |
| |
| * rendering/TextPaintStyle.cpp: |
| (WebCore::textColorIsLegibleAgainstBackgroundColor): |
| Replace implicit FloatComponents construction taking a Color (which used getRGBA) with explicit toSRGBAComponentsLossy. |
| |
| 2020-05-19 Eric Carlson <eric.carlson@apple.com> |
| |
| Update some media logging |
| https://bugs.webkit.org/show_bug.cgi?id=212109 |
| |
| Reviewed by Jer Noble. |
| |
| No new tests, no functional change. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::insertedIntoAncestor): |
| (WebCore::HTMLMediaElement::didFinishInsertingNode): |
| (WebCore::HTMLMediaElement::removedFromAncestor): |
| (WebCore::HTMLMediaElement::checkPlaybackTargetCompatablity): |
| (WebCore::HTMLMediaElement::canPlayType const): |
| (WebCore::HTMLMediaElement::waitForSourceChange): |
| (WebCore::HTMLMediaElement::noneSupported): |
| (WebCore::HTMLMediaElement::mediaLoadingFailed): |
| (WebCore::HTMLMediaElement::fastSeek): |
| (WebCore::HTMLMediaElement::seek): |
| (WebCore::HTMLMediaElement::seekInternal): |
| (WebCore::HTMLMediaElement::seekTask): |
| (WebCore::HTMLMediaElement::finishSeek): |
| (WebCore::HTMLMediaElement::currentMediaTime const): |
| (WebCore::HTMLMediaElement::setPreload): |
| (WebCore::HTMLMediaElement::playInternal): |
| (WebCore::HTMLMediaElement::pauseInternal): |
| (WebCore::HTMLMediaElement::setLoop): |
| (WebCore::HTMLMediaElement::setControls): |
| (WebCore::HTMLMediaElement::setVolume): |
| (WebCore::HTMLMediaElement::setMuted): |
| (WebCore::HTMLMediaElement::hardwareMutedStateDidChange): |
| (WebCore::HTMLMediaElement::configureTextTrackGroup): |
| (WebCore::HTMLMediaElement::mediaPlayerTimeChanged): |
| (WebCore::HTMLMediaElement::mediaPlayerVolumeChanged): |
| (WebCore::HTMLMediaElement::mediaPlayerMuteChanged): |
| (WebCore::HTMLMediaElement::mediaPlayerDurationChanged): |
| (WebCore::HTMLMediaElement::mediaPlayerRateChanged): |
| (WebCore::HTMLMediaElement::mediaPlayerPlaybackStateChanged): |
| (WebCore::HTMLMediaElement::mediaPlayerResourceNotSupported): |
| (WebCore::HTMLMediaElement::mediaPlayerSizeChanged): |
| (WebCore::HTMLMediaElement::mediaPlayerRenderingModeChanged): |
| (WebCore::HTMLMediaElement::mediaPlayerEngineUpdated): |
| (WebCore::HTMLMediaElement::mediaPlayerFirstVideoFrameAvailable): |
| (WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged): |
| (WebCore::HTMLMediaElement::updatePlayState): |
| (WebCore::HTMLMediaElement::stop): |
| (WebCore::HTMLMediaElement::suspend): |
| (WebCore::HTMLMediaElement::resume): |
| (WebCore::HTMLMediaElement::visibilityStateChanged): |
| (WebCore::HTMLMediaElement::addEventListener): |
| (WebCore::HTMLMediaElement::removeEventListener): |
| (WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent): |
| (WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget): |
| (WebCore::HTMLMediaElement::remoteHasAvailabilityCallbacksChanged): |
| (WebCore::HTMLMediaElement::enterFullscreen): |
| (WebCore::HTMLMediaElement::exitFullscreen): |
| (WebCore::HTMLMediaElement::didBecomeFullscreenElement): |
| (WebCore::HTMLMediaElement::setClosedCaptionsVisible): |
| (WebCore::HTMLMediaElement::mediaCanStart): |
| (WebCore::HTMLMediaElement::setShouldDelayLoadEvent): |
| (WebCore::HTMLMediaElement::suspendPlayback): |
| (WebCore::HTMLMediaElement::resumeAutoplaying): |
| (WebCore::HTMLMediaElement::mayResumePlayback): |
| (WebCore::HTMLMediaElement::didReceiveRemoteControlCommand): |
| (WebCore::HTMLMediaElement::setBufferingPolicy): |
| (WebCore::HTMLMediaElement::purgeBufferedDataIfPossible): |
| * platform/audio/PlatformMediaSession.cpp: |
| (WebCore::PlatformMediaSession::setState): |
| (WebCore::PlatformMediaSession::beginInterruption): |
| (WebCore::PlatformMediaSession::endInterruption): |
| (WebCore::PlatformMediaSession::clientWillBeginAutoplaying): |
| (WebCore::PlatformMediaSession::clientWillBeginPlayback): |
| (WebCore::PlatformMediaSession::processClientWillPausePlayback): |
| (WebCore::PlatformMediaSession::clientWillPausePlayback): |
| (WebCore::PlatformMediaSession::clientWillBeDOMSuspended): |
| (WebCore::PlatformMediaSession::pauseSession): |
| (WebCore::PlatformMediaSession::stopSession): |
| (WebCore::PlatformMediaSession::didReceiveRemoteControlCommand): |
| |
| 2020-05-19 Daniel Bates <dabates@apple.com> |
| |
| Blue dotted underline with alternatives only shown for last word, gets lost for previous insertions |
| https://bugs.webkit.org/show_bug.cgi?id=212097 |
| <rdar://problem/61913405> |
| |
| Reviewed by Darin Adler. |
| |
| Fix up two cases, <space> is a literal ' ' and | is the position of the caret: |
| 1. Space inserted after marker, here's what it looks like BEFORE insertion (i.e. endOfFirstWord == startOfSelection): |
| hello| |
| |
| This case is detected when the end of the next word (relative to caret) would be at the start of the |
| word that begins before or on the caret. |
| |
| 2. Space inserted before marker, here's what it looks like BEFORE insertion (i.e. startOfLastWord == endOfSelection): |
| |hello |
| |
| This case is detected when the end of the previous word (relative to caret) would be at the end of the |
| word that ends after or on the caret. |
| |
| Note ^^^ example uses a caret, but code is slightly more general and works when the current selection |
| is a range. Though I didn't explicitly test that because my bug is specific to having a caret selection. |
| |
| * editing/Editor.cpp: |
| (WebCore::Editor::insertTextWithoutSendingTextEvent): Do not remove markers if selection starts at the |
| beginning of a new word. This is detected by looking at the character before the selection start to see |
| if it is a space or newline. This will be false when there is no preceding character (e.g. start of document), |
| but that's OK because it doesn't matter what we pass to updateMarkersForWordsAffectedByEditing() - there's |
| no markers to remove anyway, let alone text for markers to exist in. I don't use isStartOfWord() here |
| because that would incorrectly return false if the current selection is at the end of a paragraph. I could have |
| fixed that up by checking isEndOfParagraph() as well, but isStartOfWord() + isEndOfParagraph() is less |
| efficient than just looking at the previous character directly. So, I did that instead. |
| (WebCore::Editor::updateMarkersForWordsAffectedByEditing): Save off the original end of the first word and |
| start of the last word positions before mutating them. Update early return checks to use these saved values |
| instead of comparing against the start and end of the current selection, which weren't correct. Saved positioned |
| are aligned by word, but start and end of current selection may NOT be. So, comparison was asymmetric: lhs was |
| word aligned position, but rhs may not be. |
| |
| * editing/Editor.h: While I am here, fix up a param name to match what it is called in the .cpp. |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::hasDictationAlternativesMarker): Added |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| Add new functionality for testing purposes. |
| |
| |
| 2020-05-19 Oriol Brufau <obrufau@igalia.com> |
| |
| Fix marginLogicalSizeForChild to check auto margins in the right axis |
| https://bugs.webkit.org/show_bug.cgi?id=212055 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| GridLayoutFunctions::marginLogicalSizeForChild checks for 'auto' margins |
| before retrieving the margin size, since these should be treated as 0. |
| However, for orthogonal grid items, it used to check the wrong axis. |
| So if an item had 'margin-top: auto' and 'margin-left: 5px', when asking |
| for the horizontal margin we could get 0px instead of 5px due to the |
| auto margin in the vertical axis. |
| |
| Test: imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001.html |
| |
| * rendering/GridLayoutFunctions.cpp: |
| (WebCore::GridLayoutFunctions::marginLogicalSizeForChild): |
| |
| 2020-05-19 Jacob Uphoff <jacob_uphoff@apple.com> |
| |
| Unreviewed, reverting r261856. |
| |
| This caused internal assertion failures. |
| |
| Reverted changeset: |
| |
| "Allow calling VideoSampleObserver::videoSampleAvailable from |
| a background thread" |
| https://bugs.webkit.org/show_bug.cgi?id=212024 |
| https://trac.webkit.org/changeset/261856 |
| |
| 2020-05-19 David Kilzer <ddkilzer@apple.com> |
| |
| IDBRequestData and IDBClient::TransactionOperation should initialize IndexedDB::IndexRecordType field |
| <https://webkit.org/b/212096> |
| <rdar://problem/63406376> |
| |
| Reviewed by Geoffrey Garen. |
| |
| IDBRequestData tested by IPC::Decoder::decode() and |
| IPC::Encoder::operator<<() running on WebKit2 API and layout |
| tests. |
| |
| * Modules/indexeddb/IndexedDB.h: |
| (WTF::EnumTraits<WebCore::IndexedDB::IndexRecordType>): Add. |
| * Modules/indexeddb/client/TransactionOperation.h: |
| (WebCore::IDBClient::TransactionOperation::m_indexRecordType): |
| - Add default initializer. |
| * Modules/indexeddb/shared/IDBRequestData.h: |
| (WebCore::IDBRequestData::m_indexRecordType): |
| - Add default initializer. |
| (WebCore::IDBRequestData::encode const): |
| (WebCore::IDBRequestData::decode): |
| - Switch from encodeEnum() and decodeEnum() to modern |
| equivalents that check for valid enum values. |
| |
| 2020-05-19 Simon Fraser <simon.fraser@apple.com> |
| |
| Push a PlatformDisplayID to scrolling trees, and allow the scrolling thread to get displayDidRefresh notifications |
| https://bugs.webkit.org/show_bug.cgi?id=211034 |
| |
| Reviewed by Sam Weinig. |
| |
| As work towards scrolling thread synchronization with main thread (webkit.org/b210884), allow |
| ScrollingTree to get a displayDidRefresh() call on the scrolling thread. Each |
| tree is associated with a Page which is associated with a display, so the ScrollingTree |
| needs to have a PlatformDisplayID to know which notifications to respond to. |
| |
| Eventually, displayDidRefresh() will be used to trigger layer updates on the scrolling |
| thread if the main thread is periodically unresponsive. |
| |
| * page/Page.cpp: |
| (WebCore::Page::scrollingCoordinator): |
| (WebCore::Page::windowScreenDidChange): |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::windowScreenDidChange): |
| * page/scrolling/AsyncScrollingCoordinator.h: |
| * page/scrolling/ScrollingCoordinator.h: |
| (WebCore::ScrollingCoordinator::windowScreenDidChange): |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::windowScreenDidChange): |
| (WebCore::ScrollingTree::displayID): |
| * page/scrolling/ScrollingTree.h: |
| (WebCore::ScrollingTree::displayDidRefresh): |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::displayDidRefresh): |
| * page/scrolling/ThreadedScrollingTree.h: |
| |
| 2020-05-19 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS] Programmaic scroll of "scrolling=no" iframe fails |
| https://bugs.webkit.org/show_bug.cgi?id=212063 |
| <rdar://problem/57049514> |
| |
| Reviewed by Antti Koivisto. |
| |
| ScrollView::setScrollPosition() calls requestScrollPositionUpdate(), and if this returns |
| false it relies on the confusingly-named updateScrollbars() to actually do the scroll. |
| This code path is hit for "scrolling=no" frames, which are not scroll-coordinated. |
| |
| ScrollView::updateScrollbars() fails to set the scroll position on iOS, where managesScrollbars() |
| returns false, so fix that. |
| |
| Test: fast/scrolling/progammatic-scroll-scrolling-no-frame.html |
| |
| * platform/ScrollView.cpp: |
| (WebCore::ScrollView::updateScrollbars): |
| |
| 2020-05-19 Andy Estes <aestes@apple.com> |
| |
| [Apple Pay] Add testing and logging for ApplePaySetup |
| https://bugs.webkit.org/show_bug.cgi?id=211972 |
| <rdar://problem/63291965> |
| |
| Reviewed by Alex Christensen. |
| |
| Test: http/tests/ssl/applepay/ApplePaySetup.https.html |
| |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| * Modules/applepay/ApplePaySetup.cpp: |
| (WebCore::ApplePaySetup::getSetupFeatures): |
| (WebCore::ApplePaySetup::begin): |
| (WebCore::ApplePaySetup::ApplePaySetup): |
| (WebCore::ApplePaySetup::stop): |
| * Modules/applepay/ApplePaySetup.idl: |
| * Modules/applepay/ApplePaySetupConfiguration.h: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureType.idl. |
| * Modules/applepay/ApplePaySetupConfiguration.idl: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureType.idl. |
| * Modules/applepay/ApplePaySetupFeature.idl: |
| * Modules/applepay/ApplePaySetupFeature.mm: |
| (WebCore::ApplePaySetupFeature::state const): |
| * Modules/applepay/ApplePaySetupFeatureState.h: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureType.idl. |
| * Modules/applepay/ApplePaySetupFeatureState.idl: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureType.idl. |
| * Modules/applepay/ApplePaySetupFeatureType.idl: |
| * Modules/applepay/ApplePaySetupFeatureWebCore.h: |
| * Modules/applepay/ApplePaySetupWebCore.h: |
| (WebCore::ApplePaySetup::create): |
| * Modules/applepay/PaymentCoordinator.cpp: |
| (WebCore::PaymentCoordinator::setApplePayIsActiveIfAllowed const): |
| (WebCore::PaymentCoordinator::getSetupFeatures): |
| (WebCore::PaymentCoordinator::beginApplePaySetup): |
| (WebCore::PaymentCoordinator::endApplePaySetup): |
| * Modules/applepay/PaymentCoordinator.h: |
| * Modules/applepay/PaymentCoordinatorClient.h: |
| (WebCore::PaymentCoordinatorClient::getSetupFeatures): |
| (WebCore::PaymentCoordinatorClient::beginApplePaySetup): |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * testing/MockApplePaySetupFeature.cpp: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureWebCore.h. |
| (WebCore::MockApplePaySetupFeature::create): |
| (WebCore::MockApplePaySetupFeature::MockApplePaySetupFeature): |
| * testing/MockApplePaySetupFeature.h: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureWebCore.h. |
| * testing/MockPaymentCoordinator.cpp: |
| (WebCore::MockPaymentCoordinator::addSetupFeature): |
| (WebCore::MockPaymentCoordinator::getSetupFeatures): |
| (WebCore::MockPaymentCoordinator::beginApplePaySetup): |
| * testing/MockPaymentCoordinator.h: |
| * testing/MockPaymentCoordinator.idl: |
| |
| 2020-05-19 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebXR] Implement requestSession() |
| https://bugs.webkit.org/show_bug.cgi?id=211888 |
| |
| Reviewed by Youenn Fablet. |
| |
| This patch adds a preliminar implementation of the requestSession() |
| API used to get a WebXRSession from the UA. It includes a fairly good |
| amount of checks to verify that the request can be satisfied given the |
| device's enabled features per session modes. The specs also describe how |
| to request persmission for some actions using the Permissions API which |
| WebKit does not currently implement. That should be done in a follow up |
| patch perhaps using a similar approach to other APIs as Geolocation for |
| example. |
| |
| In order to get some of the requestSession() tests passing the session |
| finalization (shutdown) had to be implemented too. |
| |
| Several tests where unskipped for WPE port as they're now passing. |
| |
| * Modules/webxr/WebXRRenderState.cpp: |
| (WebCore::WebXRRenderState::create): Pass XRSessionMode as argument |
| instead of a WebXRSession. |
| * Modules/webxr/WebXRRenderState.h: Ditto. |
| * Modules/webxr/WebXRSession.cpp: |
| (WebCore::WebXRSession::create): Added. |
| (WebCore::WebXRSession::WebXRSession): Added. |
| (WebCore::WebXRSession::renderState const): |
| (WebCore::WebXRSession::inputSources const): |
| (WebCore::WebXRSession::shutdown): Shutdown process called on session end. |
| (WebCore::WebXRSession::end): Implemented session ending. |
| * Modules/webxr/WebXRSession.h: Added create() and private constructor. Fixed some naming. |
| * Modules/webxr/WebXRSystem.cpp: |
| (WebCore::WebXRSystem::DummyInlineDevice::DummyInlineDevice): Contructor for the |
| dummy inline device. |
| (WebCore::WebXRSystem::ensureImmersiveXRDeviceIsSelected): Use a counter instead of a boolean |
| to track testing devices as there might be more than 1. |
| (WebCore::WebXRSystem::obtainCurrentDevice): Implemented from specs text. |
| (WebCore::WebXRSystem::immersiveSessionRequestIsAllowedForGlobalObject const): Ditto. |
| (WebCore::WebXRSystem::inlineSessionRequestIsAllowedForGlobalObject const): Ditto. |
| (WebCore::WebXRSystem::resolveRequestedFeatures const): Ditto. |
| (WebCore::WebXRSystem::isXRPermissionGranted const): Ditto. |
| (WebCore::WebXRSystem::requestSession): Ditto. |
| (WebCore::WebXRSystem::registerSimulatedXRDeviceForTesting): Use a counter instead of a bool. |
| Also use a reference in the method argument. |
| (WebCore::WebXRSystem::unregisterSimulatedXRDeviceForTesting): Ditto. |
| (WebCore::WebXRSystem::sessionEnded): Added, used by sessions to notify the XRSystem. |
| * Modules/webxr/WebXRSystem.h: |
| * Modules/webxr/WebXRSystem.idl: Call requestSession with Document. |
| * dom/TaskSource.h: Added a WebXR task source. |
| * platform/xr/PlatformXR.h: Specs state that devices have a list of enabled features per session |
| mode so store them in a hashmap instead of in a Vector. |
| (PlatformXR::Device::supports const): Use the new Hashmap of session modes. |
| (PlatformXR::Device::setEnabledFeatures): Ditto. |
| (PlatformXR::Device::enabledFeatures const): Ditto. |
| (PlatformXR::Device::setSupportedModes): Deleted. |
| * platform/xr/openxr/PlatformXR.cpp: |
| (PlatformXR::Instance::Impl::collectSupportedSessionModes): Return session modes if any. |
| (PlatformXR::Instance::enumerateImmersiveXRDevices): Fill in features per session mode. |
| * testing/WebXRTest.cpp: |
| (WebCore::WebXRTest::simulateDeviceConnection): Fill in features per session mode. |
| (WebCore::WebXRTest::disconnectAllDevices): Pass a reference to unregister. |
| |
| 2020-05-19 Antti Koivisto <antti@apple.com> |
| |
| Animation of font-size with rem values is incorrect |
| https://bugs.webkit.org/show_bug.cgi?id=194765 |
| <rdar://problem/48171742> |
| |
| Reviewed by Antoine Quint. |
| |
| Test: animations/keyframe-rem-unit.html |
| |
| 'rem' computation fails on first style resolution because the document element style is not available. |
| |
| * style/StyleResolver.cpp: |
| (WebCore::Style::Resolver::styleForKeyframe): |
| |
| Provide the override value, needed because the style can't be found from DOM tree yet. |
| |
| 2020-05-19 Andy Estes <aestes@apple.com> |
| |
| [Apple Pay] Add testing and logging for ApplePaySetup |
| https://bugs.webkit.org/show_bug.cgi?id=211972 |
| <rdar://problem/63291965> |
| |
| Reviewed by Alex Christensen. |
| |
| Added support for ApplePaySetup to MockPaymentCoordinator and wrote a test. |
| |
| Added release logging for ApplePaySetup and removed a noisy log message |
| from setApplePayIsActiveIfAllowed. |
| |
| Test: http/tests/ssl/applepay/ApplePaySetup.https.html |
| |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| * Modules/applepay/ApplePaySetup.cpp: |
| (WebCore::ApplePaySetup::getSetupFeatures): |
| (WebCore::ApplePaySetup::begin): |
| (WebCore::ApplePaySetup::ApplePaySetup): |
| (WebCore::ApplePaySetup::stop): |
| * Modules/applepay/ApplePaySetup.idl: |
| * Modules/applepay/ApplePaySetupConfiguration.h: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureType.idl. |
| * Modules/applepay/ApplePaySetupConfiguration.idl: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureType.idl. |
| * Modules/applepay/ApplePaySetupFeature.idl: |
| * Modules/applepay/ApplePaySetupFeature.mm: |
| (WebCore::ApplePaySetupFeature::state const): |
| * Modules/applepay/ApplePaySetupFeatureState.h: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureType.idl. |
| * Modules/applepay/ApplePaySetupFeatureState.idl: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureType.idl. |
| * Modules/applepay/ApplePaySetupFeatureType.idl: |
| * Modules/applepay/ApplePaySetupFeatureWebCore.h: |
| * Modules/applepay/ApplePaySetupWebCore.h: |
| (WebCore::ApplePaySetup::create): |
| * Modules/applepay/PaymentCoordinator.cpp: |
| (WebCore::PaymentCoordinator::setApplePayIsActiveIfAllowed const): |
| (WebCore::PaymentCoordinator::getSetupFeatures): |
| (WebCore::PaymentCoordinator::beginApplePaySetup): |
| (WebCore::PaymentCoordinator::endApplePaySetup): |
| * Modules/applepay/PaymentCoordinator.h: |
| * Modules/applepay/PaymentCoordinatorClient.h: |
| (WebCore::PaymentCoordinatorClient::getSetupFeatures): |
| (WebCore::PaymentCoordinatorClient::beginApplePaySetup): |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * testing/MockApplePaySetupFeature.cpp: Copied from Source/WebCore/Modules/applepay/ApplePaySetup.idl. |
| (WebCore::MockApplePaySetupFeature::create): |
| (WebCore::MockApplePaySetupFeature::MockApplePaySetupFeature): |
| * testing/MockApplePaySetupFeature.h: Copied from Source/WebCore/Modules/applepay/ApplePaySetupFeatureWebCore.h. |
| * testing/MockPaymentCoordinator.cpp: |
| (WebCore::MockPaymentCoordinator::addSetupFeature): |
| (WebCore::MockPaymentCoordinator::getSetupFeatures): |
| (WebCore::MockPaymentCoordinator::beginApplePaySetup): |
| * testing/MockPaymentCoordinator.h: |
| * testing/MockPaymentCoordinator.idl: |
| |
| 2020-05-19 Youenn Fablet <youenn@apple.com> |
| |
| Allow calling VideoSampleObserver::videoSampleAvailable from a background thread |
| https://bugs.webkit.org/show_bug.cgi?id=212024 |
| |
| Reviewed by Eric Carlson. |
| |
| Allow RealtimeMediaSource::videoSampleAvailable to be called on a background thread, typically the capture thread. |
| Make WebRTC remote sources and mock capture sources do that. |
| |
| RealtimeMediaSource is then updating its intrinsic size from the generation thread while updating its size in the main thread. |
| The size() getter can be called from both threads. |
| |
| Existing consumers do the following: |
| - media player will hop to the main thread. |
| - media recorder will do processing from the background thread. |
| - WebRTC sender will do processing from the background thread, except when sending black frames where this will still be done on the main thread. |
| This is ok as we ensure either we send black frames on the main thread (and we do not observe the source) or we observe the source to send. |
| |
| Follow-ups will migrate the real capture sources as well as migrating media player processing out of the main thread. |
| Covered by existing tests. |
| |
| * platform/MediaSample.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::videoSampleAvailable): |
| * platform/mediastream/RealtimeMediaSource.cpp: |
| (WebCore::RealtimeMediaSource::videoSampleAvailable): |
| (WebCore::RealtimeMediaSource::setIntrinsicSize): |
| * platform/mediastream/RealtimeMediaSource.h: |
| * platform/mediastream/mac/MockRealtimeVideoSourceMac.h: |
| * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm: |
| (WebCore::MockRealtimeVideoSourceMac::MockRealtimeVideoSourceMac): |
| (WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer): |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.h: |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm: |
| (WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame): |
| (WebCore::RealtimeIncomingVideoSourceCocoa::processNewSample): Deleted. |
| |
| 2020-05-19 Michael Catanzaro <mcatanzaro@gnome.org> |
| |
| REGRESSION(r257463): [GTK] Build failure with -DENABLE_GLES2=ON |
| https://bugs.webkit.org/show_bug.cgi?id=212043 |
| |
| Reviewed by Philippe Normand. |
| |
| Fix the typo "Platfom" -> "Platform" |
| |
| * platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp: |
| (createGstGLDisplay): |
| |
| 2020-05-18 Simon Fraser <simon.fraser@apple.com> |
| |
| Move some of the more chatty Scrolling logging to a ScrollingTree channel |
| https://bugs.webkit.org/show_bug.cgi?id=212061 |
| |
| Reviewed by Tim Horton. |
| |
| Move logging about the scrolling tree to a new channel. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::scrollToFragmentInternal): |
| (WebCore::FrameView::scrollToAnchor): |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::createNode): |
| (WebCore::AsyncScrollingCoordinator::insertNode): |
| * page/scrolling/ScrollingStateTree.cpp: |
| (WebCore::ScrollingStateTree::createUnparentedNode): |
| (WebCore::ScrollingStateTree::insertNode): |
| (WebCore::ScrollingStateTree::unparentNode): |
| (WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode): |
| (WebCore::ScrollingStateTree::detachAndDestroySubtree): |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::commitTreeState): |
| * page/scrolling/ScrollingTreeScrollingNode.cpp: |
| (WebCore::ScrollingTreeScrollingNode::scrollTo): |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll): |
| * page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.mm: |
| (WebCore::ScrollingTreeOverflowScrollProxyNode::applyLayerPositions): |
| * page/scrolling/mac/ScrollingCoordinatorMac.mm: |
| (WebCore::ScrollingCoordinatorMac::commitTreeStateIfNeeded): |
| * platform/Logging.h: |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::attachScrollingNode): |
| |
| 2020-05-18 David Kilzer <ddkilzer@apple.com> |
| |
| Replace TextIndicatorOptions with OptionSet<TextIndicatorOption> |
| <https://webkit.org/b/212051> |
| <rdar://problem/63368556> |
| |
| Reviewed by Simon Fraser. |
| |
| Use OptionSet<TextIndicatorOption> everywhere |
| TextIndicatorOptions was previously used, plus: |
| - Make TextIndicatorOption an enum class. Remove |
| "TextIndicatorOption" prefix so TextIndicatorOptionBar becomes |
| TextIndicatorOption::Bar. |
| - Remove TextIndicatorOptionDefault because OptionSet<> |
| initializes to zero. |
| - Replace static variables (including two globals in WebCore) |
| with constexpr variables. |
| |
| * page/TextIndicator.cpp: |
| (WebCore::TextIndicator::createWithRange): |
| (WebCore::TextIndicator::createWithSelectionInFrame): |
| (WebCore::snapshotOptionsForTextIndicatorOptions): |
| (WebCore::takeSnapshots): |
| (WebCore::hasAnyIllegibleColors): |
| (WebCore::initializeIndicator): |
| * page/TextIndicator.h: |
| * platform/ios/DragImageIOS.mm: |
| (WebCore::createDragImageForLink): |
| (WebCore::createDragImageForSelection): |
| (WebCore::createDragImageForRange): |
| * testing/Internals.h: |
| |
| 2020-05-18 Andy Estes <aestes@apple.com> |
| |
| http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html fails in public SDK builds |
| https://bugs.webkit.org/show_bug.cgi?id=212000 |
| <rdar://problem/63323082> |
| |
| Reviewed by Youenn Fablet. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * bindings/js/WebCoreBuiltinNames.h: |
| |
| 2020-05-18 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| [WebGPU] Validation for GPUDevice.createTexture() |
| https://bugs.webkit.org/show_bug.cgi?id=211882 |
| <rdar://problem/63215999> |
| |
| Reviewed by Dean Jackson. |
| |
| Add lots of validation for texture creation. The logic was gathered by |
| trial and error. |
| |
| Before this patch, we didn't have any validation. This is a first pass, as |
| the validation logic isn't spelled out in the spec. Next, I will make a pull |
| request to the spec to match this patch. |
| |
| This patch also updates three pieces of our IDL files to match the spec for |
| WebGPU: One to remove GPUTextureUsage.NONE which was replaced with just 0, |
| one to remove GPUTextureDescriptor.arrayLayerCount, which was deleted in |
| favor of using regular dimension fields, and one to add [EnforceRange] to |
| various values. |
| |
| This patch also updates GPUDevice to have a GPUErrorScopes object, which is |
| required for good error messages. |
| |
| Test: webgpu/texture-creation.html |
| |
| * Modules/webgpu/GPUExtent3D.idl: |
| * Modules/webgpu/GPUTextureDescriptor.idl: |
| * Modules/webgpu/WebGPUDevice.cpp: |
| (WebCore::WebGPUDevice::tryCreate): |
| (WebCore::WebGPUDevice::createTexture const): |
| * Modules/webgpu/WebGPUDevice.h: |
| * platform/graphics/gpu/GPUDevice.cpp: |
| (WebCore::maximumMipLevelCount): |
| (WebCore::GPUDevice::tryCreateTexture const): |
| * platform/graphics/gpu/GPUDevice.h: |
| (WebCore::GPUDevice::setErrorScopes): |
| * platform/graphics/gpu/GPUExtent3D.h: |
| * platform/graphics/gpu/GPUObjectBase.h: |
| (WebCore::GPUObjectBase::errorScopes const): |
| (WebCore::GPUObjectBase::errorScopes): Deleted. |
| * platform/graphics/gpu/GPUTexture.h: |
| * platform/graphics/gpu/GPUTextureDescriptor.h: |
| * platform/graphics/gpu/cocoa/GPUTextureMetal.mm: |
| (WebCore::mtlTextureTypeForGPUTextureDescriptor): |
| (WebCore::mtlTextureUsageForGPUTextureUsageFlags): |
| (WebCore::tryCreateMtlTextureDescriptor): |
| (WebCore::GPUTexture::tryCreate): |
| |
| 2020-05-18 Oriol Brufau <obrufau@igalia.com> |
| |
| [css-grid] Clear the override width for computing percent margins |
| https://bugs.webkit.org/show_bug.cgi?id=209461 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| When calculating the min-content contribution of a grid item of an auto |
| sized grid track we must consider the grid item's margin. When the grid |
| item's area is indefinite, a percent margin is resolved to zero. |
| However, when performing a relayout, the percent margin may be solved |
| against the previously computed grid area, since the grid item has |
| already an OverrideContainingBlockLogicalWidth value. |
| |
| In order to re-compute the percent margin properly, we need to clear |
| the previously override value. It's important to be careful of not |
| clearing the override value set during intrinsic size, since we need |
| it for the actual layout phase. Hence, we only reset the 'override' |
| value when we are executing a definite strategy. |
| |
| Tests: imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-003.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-004.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-005.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-006.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-007.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-008.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-009.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-010.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-011.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-012.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-013.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-014.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-003.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-004.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-005.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-006.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-007.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-008.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-009.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-010.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-011.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-012.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-013.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-014.html |
| |
| * rendering/GridTrackSizingAlgorithm.cpp: |
| (WebCore::hasRelativeMarginOrPaddingForChild): |
| (WebCore::hasRelativeOrIntrinsicSizeForChild): |
| (WebCore::shouldClearOverrideContainingBlockContentSizeForChild): |
| (WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const): |
| (WebCore::GridTrackSizingAlgorithmStrategy::minLogicalSizeForChild const): |
| (WebCore::DefiniteSizeStrategy::minLogicalSizeForChild const): |
| (WebCore::DefiniteSizeStrategy::minContentForChild const): |
| * rendering/GridTrackSizingAlgorithm.h: |
| |
| 2020-05-18 David Kilzer <ddkilzer@apple.com> |
| |
| Follow-up: Use default initializers in TextIndicatorData |
| <https://webkit.org/b/212039> |
| <rdar://problem/63355619> |
| |
| * page/TextIndicator.h: |
| (WebCore::TextIndicatorData::contentImageScaleFactor): |
| - Simon Fraser says 1 is a better default than 0. |
| |
| 2020-05-18 Peng Liu <peng.liu6@apple.com> |
| |
| Add a quirk to allow an embedded Twitter video to play with one tapping |
| https://bugs.webkit.org/show_bug.cgi?id=211932 |
| |
| Reviewed by Maciej Stachowiak. |
| |
| * html/MediaElementSession.cpp: |
| (WebCore::MediaElementSession::playbackPermitted const): |
| Need to check the topDocument for the existence of user interactions. |
| (WebCore::MediaElementSession::updateMediaUsageIfChanged): Ditto. |
| |
| * page/Quirks.cpp: |
| (WebCore::Quirks::needsPerDocumentAutoplayBehavior const): |
| Add the missing needsQuirks() checking. |
| (WebCore::Quirks::shouldAutoplayForArbitraryUserGesture const): |
| Add a the quirk for twitter.com. |
| |
| * platform/audio/ios/MediaSessionManagerIOS.mm: |
| (WebCore::MediaSessionManageriOS::sessionWillBeginPlayback): |
| Clarify the log message. |
| |
| 2020-05-18 Simon Fraser <simon.fraser@apple.com> |
| |
| Content disappears on CSS parallax example |
| https://bugs.webkit.org/show_bug.cgi?id=212045 |
| <rdar://problem/63194217> |
| |
| Reviewed by Tim Horton. |
| |
| In r261632 I fixed parallax scrolling by migrating the perspective transform onto |
| the scroll container layer, and making the scrolled contents layer a "preserve3D" layer. |
| |
| However, scrolling is achieved by changing the boundsOrigin of the scrolled contents layer, |
| so the computation of the perspective matrix, which is a "child layer transform", has to |
| take this boundsOrigin into account, otherwise we compute bad coverage rects, and drop |
| backing store erroneously. |
| |
| Test: compositing/tiling/perspective-on-scroller-tile-coverage.html |
| |
| * platform/graphics/FloatPoint3D.h: |
| (WebCore::FloatPoint3D::FloatPoint3D): |
| (WebCore::FloatPoint3D::move): |
| (WebCore::operator +=): |
| (WebCore::operator -=): |
| (WebCore::operator+): |
| (WebCore::operator-): |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::recursiveVisibleRectChangeRequiresFlush const): |
| (WebCore::GraphicsLayerCA::layerTransform const): |
| (WebCore::GraphicsLayerCA::adjustCoverageRect const): |
| (WebCore::GraphicsLayerCA::setVisibleAndCoverageRects): |
| |
| 2020-05-18 David Kilzer <ddkilzer@apple.com> |
| |
| Use default initializers in TextIndicatorData |
| <https://webkit.org/b/212039> |
| <rdar://problem/63355619> |
| |
| Reviewed by Alex Christensen. |
| |
| Tested by IPC::Decoder::decode() and IPC::Encoder::operator<<() |
| running on WebKit2 API and layout tests. |
| |
| * page/TextIndicator.h: |
| (WebCore::TextIndicatorData): |
| - Add default initializers. |
| (WTF::EnumTraits<WebCore::TextIndicatorPresentationTransition>): |
| - Add EnumTraits so TextIndicatorPresentationTransition may be |
| used by IPC::Decoder::decode() and IPC::Encoder::operator<<(). |
| |
| 2020-05-18 Simon Fraser <simon.fraser@apple.com> |
| |
| Fix operator== and hash() for ExtendedColor |
| https://bugs.webkit.org/show_bug.cgi?id=211993 |
| |
| Post-landing followup. ExtendedColor operator== has to do exact comparison to be |
| consistent with hash(). |
| |
| * platform/graphics/ExtendedColor.h: |
| (WebCore::operator==): |
| |
| 2020-05-18 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Replace uses of +self with +class |
| https://bugs.webkit.org/show_bug.cgi?id=212041 |
| |
| Reviewed by Darin Adler. |
| |
| No change in behavior. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]): |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): |
| * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: |
| (WebCore::PlatformCALayer::isWebLayer): |
| |
| 2020-05-18 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed restabilization of non-unified build. |
| |
| * accessibility/AXObjectCache.cpp: |
| * html/HTMLAttachmentElement.h: |
| * inspector/agents/InspectorCSSAgent.cpp: |
| * layout/blockformatting/tablewrapper/TableWrapperBlockFormattingContext.cpp: |
| * layout/tableformatting/TableFormattingContextGeometry.cpp: |
| * layout/tableformatting/TableFormattingState.cpp: |
| * rendering/RenderTextFragment.h: |
| * rendering/style/KeyframeList.h: |
| |
| 2020-05-18 Pinki Gyanchandani <pgyanchandani@apple.com> |
| |
| Null Ptr Deref @ WebCore::CSSValue::classType |
| https://bugs.webkit.org/show_bug.cgi?id=212036 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Calculated value for a primitive value type can be NULL for a CSS property. Added a null check before dereferencing it. |
| |
| Test: editing/execCommand/null_calc_primitive_value_for_css_property.html |
| |
| * css/CSSPrimitiveValue.cpp: |
| (WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const): |
| |
| 2020-05-18 Simon Fraser <simon.fraser@apple.com> |
| |
| Implement conversion between P3 and sRGB color |
| https://bugs.webkit.org/show_bug.cgi?id=211998 |
| |
| Reviewed by Daniel Bates. |
| |
| Color::toSRGBAComponentsLossy() was a lie because it didn't actually convert extended |
| colors into sRGB. Fix that by converting P3 and linaerRGB colors into sRGB, using the color |
| math from CSS Color 4. |
| |
| Renamed the various "linear to sRGB" functions because they work for any RGB colors, |
| not just sRGB. |
| |
| * platform/graphics/Color.cpp: |
| (WebCore::Color::toSRGBAComponentsLossy const): |
| * platform/graphics/Color.h: |
| * platform/graphics/ColorUtilities.cpp: |
| (WebCore::linearToRGBColorComponent): |
| (WebCore::RGBToLinearColorComponent): |
| (WebCore::sRGBColorToLinearComponents): |
| (WebCore::RGBToLinearComponents): |
| (WebCore::linearToRGBComponents): |
| (WebCore::XYZToLinearSRGB): |
| (WebCore::linearSRGBToXYZ): |
| (WebCore::XYZToLinearP3): |
| (WebCore::linearP3ToXYZ): |
| (WebCore::P3ToSRGB): |
| (WebCore::sRGBToP3): |
| (WebCore::ColorMatrix::transformedColorComponents const): |
| (WebCore::linearToSRGBColorComponent): Deleted. |
| (WebCore::sRGBToLinearColorComponent): Deleted. |
| (WebCore::sRGBToLinearComponents): Deleted. |
| (WebCore::linearToSRGBComponents): Deleted. |
| * platform/graphics/ColorUtilities.h: |
| |
| 2020-05-18 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Allow clipboard API access when pasting from a menu item or key binding |
| https://bugs.webkit.org/show_bug.cgi?id=211990 |
| <rdar://problem/63308916> |
| |
| Reviewed by Megan Gardner. |
| |
| Allow the contents of the clipboard to be programmatically requested by the page while pasting from trusted UI |
| (i.e. the paste menu item, or when WebKit API is called by the app to trigger the paste). This allows the |
| 'reading' part of the async clipboard API (`read` and `readText`) to be used when the user pastes in an editable |
| element, without having to fall back to showing the DOM paste access menu. |
| |
| Note that this change should not have an effect on the pasteboard security model, since it only grants the page |
| programmatic access to the contents of the pasteboard in the case where access to the pasteboard has already |
| been granted by the user. Additionally, even in the event that the web process is compromised, even if the web |
| process can be tricked into believing it has been granted pasteboard access, the changes in r259151 will prevent |
| it from being able to request pasteboard data, unless the user (or the application, on behalf of the user) has |
| explicitly pasted via trusted API calls that are inaccessible from the web process. |
| |
| Test: editing/async-clipboard/clipboard-read-while-pasting.html |
| |
| * editing/Editor.cpp: |
| (WebCore::Editor::paste): |
| (WebCore::Editor::pasteAsPlainText): |
| (WebCore::Editor::pasteAsQuotation): |
| |
| If `FromMenuOrKeyBinding::Yes` is passed in, set the `m_pastingFromMenuOrKeyBinding` flag to true during the |
| scope of the paste command. |
| |
| * editing/Editor.h: |
| (WebCore::Editor::isPastingFromMenuOrKeyBinding const): |
| * editing/EditorCommand.cpp: |
| (WebCore::executePaste): |
| (WebCore::executePasteAndMatchStyle): |
| (WebCore::executePasteAsPlainText): |
| (WebCore::executePasteAsQuotation): |
| |
| Pass in `FromMenuOrKeyBinding::Yes` when triggering the paste from a menu item or key binding. |
| |
| * page/Frame.cpp: |
| (WebCore::Frame::requestDOMPasteAccess): |
| |
| When pasting from menu or key binding, grant the page DOM paste access without requiring the DOM paste access |
| UI to be shown and confirmed. |
| |
| 2020-05-18 Per Arne Vollan <pvollan@apple.com> |
| |
| [Win] Fix AppleWin build |
| https://bugs.webkit.org/show_bug.cgi?id=212030 |
| |
| Reviewed by Brent Fulgham. |
| |
| The build fails because the number of bitfields in GreaterThanOrSameSizeAsStyleRareInheritedData does not match the |
| actual number of bitfields in StyleRareInheritedData. |
| |
| * rendering/style/StyleRareInheritedData.cpp: |
| |
| 2020-05-18 Rob Buis <rbuis@igalia.com> |
| |
| Remove certain headers when a redirect causes a request method change |
| https://bugs.webkit.org/show_bug.cgi?id=205119 |
| |
| Reviewed by Youenn Fablet. |
| |
| Implement step 11 of HTTP-redirect fetch [1] to redirect to GET |
| method, remove body and strip certain headers for 301, 302 and 303 redirects. |
| |
| Tests: imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.html |
| imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker.html |
| |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): |
| * platform/network/HTTPHeaderNames.in: |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::shouldUseGet): |
| (WebCore::ResourceRequestBase::redirectAsGETIfNeeded): |
| (WebCore::ResourceRequestBase::redirectedRequest const): |
| * platform/network/ResourceRequestBase.h: |
| |
| 2020-05-18 Antti Koivisto <antti@apple.com> |
| |
| [Wheel event region] Invalidation for root style |
| https://bugs.webkit.org/show_bug.cgi?id=212029 |
| |
| Reviewed by Simon Fraser. |
| |
| Test: fast/scrolling/mac/wheel-event-listener-region-root-invalidation.html |
| |
| Invalidate the region when event listeners change on Document or Window. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::invalidateEventListenerRegions): |
| * dom/Document.h: |
| (isType): |
| * dom/Element.cpp: |
| (WebCore::Element::invalidateEventListenerRegions): |
| * dom/Element.h: |
| * dom/EventTarget.cpp: |
| (WebCore::EventTarget::addEventListener): |
| (WebCore::EventTarget::removeEventListener): |
| (WebCore::EventTarget::removeAllEventListeners): |
| (WebCore::EventTarget::invalidateEventListenerRegions): |
| * dom/EventTarget.h: |
| * style/StyleAdjuster.cpp: |
| (WebCore::Style::Adjuster::adjustEventListenerRegionTypesForRootStyle): |
| * style/StyleAdjuster.h: |
| * style/StyleResolveForDocument.cpp: |
| (WebCore::Style::resolveForDocument): |
| |
| 2020-05-18 Simon Fraser <simon.fraser@apple.com> |
| |
| Find doesn't always scroll search results into view |
| https://bugs.webkit.org/show_bug.cgi?id=212007 |
| <rdar://problem/36333321> |
| |
| Reviewed by Wenson Hsieh. |
| |
| HighlightData::collectBounds() could produce overly large bounds, causing the selection |
| to fail to scroll into view. |
| |
| This happened when multiple block ancestors were added to 'renderers', with empty |
| rects. The process of mapping that empty rect to a quad via localToAbsoluteQuad() |
| could produce an empty quad at a fractional offset, then calling enclosingBoundingBox() |
| on the quad would create a 1x1 rectangle, which got unioned with selectionRect. |
| |
| Fix by skipping entries with empty rects. |
| |
| Add a Selection log channel and some logging that makes this trivial to see. |
| |
| Test: editing/selection/selection-bounds-fractional-containing-blocks.html |
| |
| * platform/Logging.h: |
| * rendering/HighlightData.cpp: |
| (WebCore::HighlightData::collectBounds const): |
| |
| 2020-05-18 Darin Adler <darin@apple.com> |
| |
| Add iterator checking to ListHashSet |
| https://bugs.webkit.org/show_bug.cgi?id=211669 |
| |
| Reviewed by Anders Carlsson. |
| |
| * page/ios/ContentChangeObserver.h: Added an include of Element.h, needed to call |
| makeWeakPtr in an inline function. This is due to a change in the way makeWeakPtr |
| now checks the type of the argument. It's possible we could refine it further to |
| relax this requirement, but it seems OK to include Element.h here. |
| |
| 2020-05-18 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Add support for computing the collapsed table border |
| https://bugs.webkit.org/show_bug.cgi?id=212003 |
| |
| Reviewed by Antti Koivisto. |
| |
| UAs must compute an initial left and right border width for the table by examining |
| the first and last cells in the first row of the table. |
| The left border width of the table is half of the first cell's collapsed left border, |
| and the right border width of the table is half of the last cell's collapsed right border. |
| The top border width of the table is computed by examining all cells who collapse their top |
| borders with the top border of the table. The top border width of the table is equal to half of the |
| maximum collapsed top border. The bottom border width is computed by examining all cells whose bottom borders collapse |
| with the bottom of the table. The bottom border width is equal to half of the maximum collapsed bottom border. |
| |
| https://www.w3.org/TR/CSS22/tables.html#collapsing-borders |
| |
| This patch implements the table box part of the border collapsing. Inner table elements need to implement collapsing as well. |
| |
| * layout/LayoutState.cpp: |
| (WebCore::Layout::LayoutState::ensureTableFormattingState): |
| * layout/blockformatting/tablewrapper/TableWrapperBlockFormattingContext.cpp: |
| (WebCore::Layout::TableWrapperBlockFormattingContext::layoutTableBox): |
| (WebCore::Layout::TableWrapperBlockFormattingContext::computeBorderAndPaddingForTableBox): |
| (WebCore::Layout::TableWrapperBlockFormattingContext::computeWidthAndMarginForTableBox): |
| * layout/blockformatting/tablewrapper/TableWrapperBlockFormattingContext.h: |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints): |
| (WebCore::Layout::TableFormattingContext::ensureTableGrid): |
| * layout/tableformatting/TableFormattingContext.h: |
| * layout/tableformatting/TableFormattingState.cpp: |
| (WebCore::Layout::TableFormattingState::TableFormattingState): |
| * layout/tableformatting/TableFormattingState.h: |
| |
| 2020-05-18 Antoine Quint <graouts@apple.com> |
| |
| Clean up media controls content for Apple platforms |
| https://bugs.webkit.org/show_bug.cgi?id=212011 |
| <rdar://problem/63298588> |
| |
| Reviewed by Dean Jackson. |
| |
| We strip Copyright and other comments from the CSS and JS media controls files. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2020-05-18 Alicia Boya García <aboya@igalia.com> |
| |
| [GStreamer][MediaSource] Remove orphaned tracks in updateTracks() |
| https://bugs.webkit.org/show_bug.cgi?id=211980 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| This patch ensures tracks missing from a subsequent updateTracks() |
| calls are removed from the player. |
| |
| This fixes regressions on the following tests caused on r261683. |
| |
| imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-removetrack.https.html |
| imported/w3c/web-platform-tests/mediacapture-streams/MediaStreamTrack-applyConstraints.https.html |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::hashSetFromHashMapKeys): |
| (WebCore::MediaPlayerPrivateGStreamer::updateTracks): |
| |
| 2020-05-18 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] "ASSERTION FAILED: !m_adoptionIsRequired" when double clicking on a word |
| https://bugs.webkit.org/show_bug.cgi?id=211957 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Make SelectionData non-refcounted. We can just move in most of the cases to avoid copies. |
| |
| * platform/Pasteboard.h: |
| * platform/gtk/PasteboardGtk.cpp: |
| (WebCore::Pasteboard::createForDragAndDrop): |
| (WebCore::Pasteboard::Pasteboard): |
| (WebCore::Pasteboard::selectionData const): |
| * platform/gtk/SelectionData.h: |
| |
| 2020-05-18 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Add WebKitContextMenuItemType for paste as plaintext |
| https://bugs.webkit.org/show_bug.cgi?id=177638 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Add paste as plain text context menu item for rich editable content. |
| |
| * page/ContextMenuController.cpp: |
| (WebCore::ContextMenuController::contextMenuItemSelected): |
| (WebCore::ContextMenuController::populate): |
| (WebCore::ContextMenuController::checkOrEnableIfNeeded const): |
| * platform/ContextMenuItem.h: |
| * platform/LocalizedStrings.h: |
| * platform/gtk/LocalizedStringsGtk.cpp: |
| (WebCore::contextMenuItemTagPasteAsPlainText): |
| |
| 2020-05-17 Simon Fraser <simon.fraser@apple.com> |
| |
| Fix operator== and hash() for ExtendedColor |
| https://bugs.webkit.org/show_bug.cgi?id=211993 |
| |
| Reviewed by Sam Weinig. |
| |
| Color::operator== and hash() were wrong for extended color. Fix operator== |
| to compare extended colors. Extended and non-extended colors have to always |
| conpare as non-equal to preserve computed style behavior, currently. |
| |
| Fix hash() to hash the color components and colorspace for ExtendedColor. |
| |
| Add some API tests for these code paths. |
| |
| * platform/graphics/Color.cpp: |
| (WebCore::extendedColorsEqual): |
| * platform/graphics/Color.h: |
| (WebCore::operator==): |
| (WebCore::Color::hash const): |
| * platform/graphics/ColorUtilities.cpp: |
| (WebCore::areEssentiallyEqual): |
| * platform/graphics/ColorUtilities.h: |
| (WebCore::operator==): |
| (WebCore::operator!=): |
| * platform/graphics/ExtendedColor.cpp: |
| (WebCore::ExtendedColor::hash const): |
| * platform/graphics/ExtendedColor.h: |
| (WebCore::operator==): |
| (WebCore::operator!=): |
| |
| 2020-05-17 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][BFC] Introduce TableWrapperBlockFormattingContext |
| https://bugs.webkit.org/show_bug.cgi?id=211996 |
| |
| Reviewed by Antti Koivisto. |
| |
| Table wrapper box establishes a special BFC with only captions and the actual table box in it. |
| It mostly behaves like a normal BFC but the table box requires some special handing when it comes |
| to padding/border and width/height computation. |
| This patch moves the table box specific code from generic BFC to this new subclass. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * layout/FormattingContext.h: |
| * layout/LayoutContext.cpp: |
| (WebCore::Layout::LayoutContext::createFormattingContext): |
| * layout/blockformatting/BlockFormattingContext.cpp: |
| (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin): |
| * layout/blockformatting/BlockFormattingContext.h: |
| (): Deleted. |
| * layout/blockformatting/BlockFormattingContextGeometry.cpp: |
| (WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin): |
| * layout/blockformatting/tablewrapper/TableWrapperBlockFormattingContext.cpp: Added. |
| (WebCore::Layout::TableWrapperBlockFormattingContext::TableWrapperBlockFormattingContext): |
| (WebCore::Layout::TableWrapperBlockFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::TableWrapperBlockFormattingContext::layoutTableBox): |
| (WebCore::Layout::TableWrapperBlockFormattingContext::computeWidthAndMarginForTableBox): |
| (WebCore::Layout::TableWrapperBlockFormattingContext::computeHeightAndMarginForTableBox): |
| * layout/blockformatting/tablewrapper/TableWrapperBlockFormattingContext.h: Added. |
| |
| 2020-05-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Move to new Pasteboard API |
| https://bugs.webkit.org/show_bug.cgi?id=177633 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Add support for custom data and remove the support for unknown data types that is currently unused. |
| |
| * editing/gtk/EditorGtk.cpp: |
| (WebCore::Editor::writeSelectionToPasteboard): Set the contentOrigin. |
| * editing/gtk/WebContentReaderGtk.cpp: |
| (WebCore::shouldReplaceSubresourceURL): Helper to decide whether to replace the subresource URL. |
| (WebCore::WebContentMarkupReader::readHTML): Create a fragment for HTML sanitizing it if needed. |
| * platform/Pasteboard.h: |
| * platform/PasteboardCustomData.h: |
| (WebCore::PasteboardCustomData::gtkType): Mime type name for GTK custom pasteboard data. |
| * platform/SharedBuffer.h: |
| * platform/glib/SharedBufferGlib.cpp: |
| (WebCore::SharedBuffer::createGBytes const): Create a GBytes wrapping the SharedBuffer data. |
| * platform/gtk/PasteboardGtk.cpp: |
| (WebCore::Pasteboard::writeString): |
| (WebCore::Pasteboard::write): |
| (WebCore::Pasteboard::read): |
| (WebCore::Pasteboard::hasData): |
| (WebCore::Pasteboard::typesSafeForBindings): |
| (WebCore::Pasteboard::typesForLegacyUnsafeBindings): |
| (WebCore::Pasteboard::readOrigin): |
| (WebCore::Pasteboard::readString): |
| (WebCore::Pasteboard::readStringInCustomData): |
| (WebCore::Pasteboard::fileContentState): |
| (WebCore::Pasteboard::writeCustomData): |
| * platform/gtk/SelectionData.cpp: |
| (WebCore::SelectionData::clearAllExceptFilenames): |
| * platform/gtk/SelectionData.h: |
| (WebCore::SelectionData::setCustomData): |
| (WebCore::SelectionData::customData const): |
| (WebCore::SelectionData::hasCustomData const): |
| (WebCore::SelectionData::clearCustomData): |
| |
| 2020-05-16 Simon Fraser <simon.fraser@apple.com> |
| |
| Some color-related cleanup |
| https://bugs.webkit.org/show_bug.cgi?id=211991 |
| |
| Reviewed by Sam Weinig. |
| |
| Change FloatComponents and ColorComponents to use std::array<>. |
| |
| Add Color::toSRGBAComponentsLossy() to make explicit potentially lossy conversions |
| between P3 and sRGB colors, and call it in places where we do that conversion. |
| |
| Add const in a few places. |
| |
| * Headers.cmake: |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/graphics/Color.cpp: |
| (WebCore::Color::Color): |
| (WebCore::Color::toSRGBAComponentsLossy const): |
| (WebCore::Color::asExtended const): |
| * platform/graphics/Color.h: |
| * platform/graphics/ColorUtilities.cpp: |
| (WebCore::ColorMatrix::ColorMatrix): |
| * platform/graphics/ColorUtilities.h: |
| (WebCore::FloatComponents::FloatComponents): |
| (): Deleted. |
| * platform/graphics/ExtendedColor.cpp: |
| (WebCore::ExtendedColor::create): |
| (WebCore::ExtendedColor::cssText const): |
| * platform/graphics/ExtendedColor.h: |
| (WebCore::ExtendedColor::red const): |
| (WebCore::ExtendedColor::green const): |
| (WebCore::ExtendedColor::blue const): |
| (WebCore::ExtendedColor::alpha const): |
| (WebCore::ExtendedColor::channels const): |
| (WebCore::ExtendedColor::ExtendedColor): |
| * platform/graphics/cg/ColorCG.cpp: |
| (WebCore::leakCGColor): |
| * platform/graphics/filters/FETurbulence.cpp: |
| (WebCore::FETurbulence::fillRegion const): |
| * platform/graphics/filters/FilterOperation.cpp: |
| (WebCore::InvertLightnessFilterOperation::transformColor const): |
| (WebCore::InvertLightnessFilterOperation::inverseTransformColor const): |
| * platform/graphics/gtk/ColorGtk.cpp: |
| (WebCore::Color::operator GdkRGBA const): |
| * platform/graphics/win/ColorDirect2D.cpp: |
| (WebCore::Color::operator D2D1_COLOR_F const): |
| (WebCore::Color::operator D2D1_VECTOR_4F const): |
| |
| 2020-05-16 Andy Estes <aestes@apple.com> |
| |
| Fix the build after r261785. |
| |
| * Modules/applepay/PaymentInstallmentConfiguration.mm: |
| (WebCore::fromDecimalNumber): |
| |
| 2020-05-16 David Kilzer <ddkilzer@apple.com> |
| |
| Let Xcode have its way with WebCore project |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| - Resort TableLayout.cpp. |
| |
| 2020-05-16 Zalan Bujtas <zalan@apple.com> |
| |
| Add missing is<RenderTableSection> check. |
| |
| Unreviewed. |
| |
| * layout/Verification.cpp: |
| (WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded): |
| |
| 2020-05-16 Andy Estes <aestes@apple.com> |
| |
| REGRESSION (r260717): installmentConfiguration member is no longer available on ApplePayPaymentRequest |
| https://bugs.webkit.org/show_bug.cgi?id=211911 |
| <rdar://problem/63236367> |
| |
| Reviewed by Tim Horton. |
| |
| Prior to r260717, installmentConfiguration was a member of ApplePayRequestBase, making it |
| available on ApplePayRequest and ApplePayPaymentRequest. In r260717, it was mistakenly |
| moved to ApplePayRequest. |
| |
| This change moves it back to ApplePayRequestBase, adds infrastructure for regression testing |
| ApplePayInstallmentConfiguration, and adds a regression test. |
| |
| Test: http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html |
| |
| * Modules/applepay/ApplePayInstallmentConfiguration.idl: |
| * Modules/applepay/ApplePayRequestBase.cpp: |
| (WebCore::convertAndValidate): |
| (WebCore::finishConverting): Deleted. |
| * Modules/applepay/ApplePayRequestBase.idl: |
| * Modules/applepay/PaymentInstallmentConfiguration.mm: |
| (WebCore::fromDecimalNumber): |
| (WebCore::applePaySetupFeatureType): |
| (WebCore::PaymentInstallmentConfiguration::applePayInstallmentConfiguration const): |
| * Modules/applepay/PaymentInstallmentConfigurationWebCore.h: |
| * Modules/applepay/paymentrequest/ApplePayRequest.idl: |
| * testing/MockPaymentCoordinator.cpp: |
| (WebCore::MockPaymentCoordinator::showPaymentUI): |
| * testing/MockPaymentCoordinator.h: |
| * testing/MockPaymentCoordinator.idl: |
| |
| 2020-05-16 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Ignore table padding when borders are collapsed |
| https://bugs.webkit.org/show_bug.cgi?id=211984 |
| |
| Reviewed by Antti Koivisto. |
| |
| Table padding has no room left when the table border is collapsed with the inner table elements. |
| |
| Test: fast/layoutformattingcontext/table-simple-border-collapse-with-padding.html |
| |
| * layout/Verification.cpp: |
| (WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded): |
| * layout/layouttree/LayoutBox.cpp: |
| (WebCore::Layout::Box::isPaddingApplicable const): |
| |
| 2020-05-16 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Take vertical spacing into account when setting the height of a cell with rowspan |
| https://bugs.webkit.org/show_bug.cgi?id=211976 |
| |
| Reviewed by Antti Koivisto. |
| |
| When a cell spans over multiple rows, the height of the cell includes the vertical spacing between those spanned rows as well. |
| |
| Test: fast/layoutformattingcontext/table-simple-rowspan-with-spacing.html |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForCells): |
| |
| 2020-05-15 Antti Koivisto <antti@apple.com> |
| |
| Nullptr crash in MediaQueryMatcher::evaluateAll |
| https://bugs.webkit.org/show_bug.cgi?id=211963 |
| <rdar://problem/62850977> |
| |
| Reviewed by Brent Fulgham. |
| |
| Test: fast/media/media-query-list-mutation.html |
| |
| * css/MediaQueryMatcher.cpp: |
| (WebCore::MediaQueryMatcher::evaluateAll): |
| |
| Copy the vector before iterating. |
| |
| 2020-05-15 Jack Lee <shihchieh_lee@apple.com> |
| |
| Nullptr crash in WebCore::Node::treeScope() when processing nested list insertion commands. |
| https://bugs.webkit.org/show_bug.cgi?id=211964 |
| <rdar://problem/63224871> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Load event may fire in fixOrphanedListChild() and change the node tree. In doApplyForSingleParagraph check for |
| disconnected node returned by fixOrphanedListChild() and bail out. |
| |
| Test: editing/inserting/nested-list-insertion-crash.html |
| |
| * editing/InsertListCommand.cpp: |
| (WebCore::InsertListCommand::doApplyForSingleParagraph): |
| |
| 2020-05-15 Alex Christensen <achristensen@webkit.org> |
| |
| Use enum serialization instead of casting to/from uint32_t |
| https://bugs.webkit.org/show_bug.cgi?id=211885 |
| <rdar://problem/60106629> and <rdar://problem/60107663> |
| |
| Reviewed by Geoffrey Garen. |
| |
| This doesn't change anything except make stricter checks at IPC boundaries. |
| |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::visiblePositionRangeForLine const): |
| * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityModifySelection:increase:]): |
| * editing/EditingBehavior.h: |
| * editing/Editor.cpp: |
| (WebCore::Editor::shouldSmartDelete): |
| (WebCore::Editor::deleteWithDirection): |
| (WebCore::Editor::misspelledWordAtCaretOrRange const): |
| (WebCore::Editor::guessesForMisspelledOrUngrammatical): |
| (WebCore::Editor::markMisspellingsAfterTypingToWord): |
| (WebCore::Editor::markAndReplaceFor): |
| (WebCore::Editor::handleAcceptedCandidate): |
| * editing/EditorCommand.cpp: |
| (WebCore::executeDeleteBackward): |
| (WebCore::executeDeleteBackwardByDecomposingPreviousCharacter): |
| (WebCore::executeDeleteForward): |
| (WebCore::executeDeleteToBeginningOfLine): |
| (WebCore::executeDeleteToBeginningOfParagraph): |
| (WebCore::executeDeleteToEndOfLine): |
| (WebCore::executeDeleteToEndOfParagraph): |
| (WebCore::executeDeleteWordBackward): |
| (WebCore::executeDeleteWordForward): |
| (WebCore::executeForwardDelete): |
| (WebCore::executeMoveBackward): |
| (WebCore::executeMoveBackwardAndModifySelection): |
| (WebCore::executeMoveDown): |
| (WebCore::executeMoveDownAndModifySelection): |
| (WebCore::executeMoveForward): |
| (WebCore::executeMoveForwardAndModifySelection): |
| (WebCore::executeMoveLeft): |
| (WebCore::executeMoveLeftAndModifySelection): |
| (WebCore::executeMoveRight): |
| (WebCore::executeMoveRightAndModifySelection): |
| (WebCore::executeMoveToBeginningOfDocument): |
| (WebCore::executeMoveToBeginningOfDocumentAndModifySelection): |
| (WebCore::executeMoveToBeginningOfLine): |
| (WebCore::executeMoveToBeginningOfLineAndModifySelection): |
| (WebCore::executeMoveToBeginningOfParagraph): |
| (WebCore::executeMoveToBeginningOfParagraphAndModifySelection): |
| (WebCore::executeMoveToBeginningOfSentence): |
| (WebCore::executeMoveToBeginningOfSentenceAndModifySelection): |
| (WebCore::executeMoveToEndOfDocument): |
| (WebCore::executeMoveToEndOfDocumentAndModifySelection): |
| (WebCore::executeMoveToEndOfSentence): |
| (WebCore::executeMoveToEndOfSentenceAndModifySelection): |
| (WebCore::executeMoveToEndOfLine): |
| (WebCore::executeMoveToEndOfLineAndModifySelection): |
| (WebCore::executeMoveToEndOfParagraph): |
| (WebCore::executeMoveToEndOfParagraphAndModifySelection): |
| (WebCore::executeMoveParagraphBackwardAndModifySelection): |
| (WebCore::executeMoveParagraphForwardAndModifySelection): |
| (WebCore::executeMoveUp): |
| (WebCore::executeMoveUpAndModifySelection): |
| (WebCore::executeMoveWordBackward): |
| (WebCore::executeMoveWordBackwardAndModifySelection): |
| (WebCore::executeMoveWordForward): |
| (WebCore::executeMoveWordForwardAndModifySelection): |
| (WebCore::executeMoveWordLeft): |
| (WebCore::executeMoveWordLeftAndModifySelection): |
| (WebCore::executeMoveWordRight): |
| (WebCore::executeMoveWordRightAndModifySelection): |
| (WebCore::executeMoveToLeftEndOfLine): |
| (WebCore::executeMoveToLeftEndOfLineAndModifySelection): |
| (WebCore::executeMoveToRightEndOfLine): |
| (WebCore::executeMoveToRightEndOfLineAndModifySelection): |
| (WebCore::executeSelectLine): |
| (WebCore::executeSelectParagraph): |
| (WebCore::executeSelectSentence): |
| (WebCore::executeSelectWord): |
| * editing/FrameSelection.cpp: |
| (WebCore::FrameSelection::FrameSelection): |
| (WebCore::FrameSelection::willBeModified): |
| (WebCore::FrameSelection::modifyExtendingRight): |
| (WebCore::FrameSelection::modifyExtendingForward): |
| (WebCore::FrameSelection::modifyMovingRight): |
| (WebCore::FrameSelection::modifyMovingForward): |
| (WebCore::FrameSelection::modifyExtendingLeft): |
| (WebCore::FrameSelection::modifyExtendingBackward): |
| (WebCore::FrameSelection::modifyMovingLeft): |
| (WebCore::FrameSelection::modifyMovingBackward): |
| (WebCore::isBoundary): |
| (WebCore::FrameSelection::textSelectionIntent): |
| (WebCore::textSelectionWithDirectionAndGranularity): |
| (WebCore::FrameSelection::modify): |
| (WebCore::FrameSelection::clear): |
| (WebCore::FrameSelection::willBeRemovedFromFrame): |
| (WebCore::FrameSelection::updateAppearance): |
| (WebCore::FrameSelection::wordSelectionContainingCaretSelection): |
| (WebCore::FrameSelection::rangeByAlteringCurrentSelection const): |
| * editing/FrameSelection.h: |
| * editing/TextGranularity.h: |
| (): Deleted. |
| * editing/TypingCommand.cpp: |
| (WebCore::editActionForTypingCommand): |
| (WebCore::TypingCommand::deleteKeyPressed): |
| (WebCore::TypingCommand::forwardDeleteKeyPressed): |
| (WebCore::TypingCommand::insertTextRunWithoutNewlines): |
| (WebCore::TypingCommand::insertLineBreak): |
| (WebCore::TypingCommand::insertParagraphSeparator): |
| (WebCore::TypingCommand::insertParagraphSeparatorInQuotedContent): |
| (WebCore::TypingCommand::deleteSelection): |
| * editing/TypingCommand.h: |
| * editing/VisibleSelection.cpp: |
| (WebCore::VisibleSelection::setStartAndEndFromBaseAndExtentRespectingGranularity): |
| * editing/VisibleSelection.h: |
| * editing/VisibleUnits.cpp: |
| (WebCore::directionIsDownstream): |
| (WebCore::atBoundaryOfGranularity): |
| (WebCore::withinTextUnitOfGranularity): |
| (WebCore::nextWordBoundaryInDirection): |
| (WebCore::nextSentenceBoundaryInDirection): |
| (WebCore::nextParagraphBoundaryInDirection): |
| (WebCore::positionOfNextBoundaryOfGranularity): |
| (WebCore::enclosingTextUnitOfGranularity): |
| (WebCore::charactersAroundPosition): |
| (WebCore::wordRangeFromPosition): |
| (WebCore::closestWordBoundaryForPosition): |
| (WebCore::rangeExpandedByCharactersInDirectionAtWordBoundary): |
| (WebCore::wordBoundaryForPositionWithoutCrossingLine): |
| * editing/cocoa/DataDetection.mm: |
| (WebCore::DataDetection::detectItemAroundHitTestResult): |
| * editing/cocoa/DictionaryLookup.mm: |
| * editing/mac/DictionaryLookupLegacy.mm: |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::create): |
| * loader/FrameLoaderClient.h: |
| (WebCore::FrameLoaderClient::webGLPolicyForURL const): |
| (WebCore::FrameLoaderClient::resolveWebGLPolicyForURL const): |
| (): Deleted. |
| * loader/FrameLoaderTypes.h: |
| * page/ContextMenuController.cpp: |
| (WebCore::ContextMenuController::contextMenuItemSelected): |
| * page/DOMSelection.cpp: |
| (WebCore::DOMSelection::modify): |
| * page/DragController.cpp: |
| (WebCore::DragController::concludeEditDrag): |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::updateSelectionForMouseDownDispatchingSelectStart): |
| (WebCore::EventHandler::selectClosestWordFromHitTestResult): |
| (WebCore::EventHandler::selectClosestContextualWordFromMouseEvent): |
| (WebCore::EventHandler::selectClosestContextualWordOrLinkFromMouseEvent): |
| (WebCore::EventHandler::handleMousePressEventTripleClick): |
| (WebCore::EventHandler::handleMousePressEventSingleClick): |
| (WebCore::EventHandler::updateSelectionForMouseDrag): |
| (WebCore::setInitialKeyboardSelection): |
| (WebCore::handleKeyboardSelectionMovement): |
| * rendering/HitTestResult.cpp: |
| (WebCore::HitTestResult::isOverTextInsideFormControlElement const): |
| |
| 2020-05-15 Simon Fraser <simon.fraser@apple.com> |
| |
| Rename the mapLocalToContainer() container argument, since it's not just used for repaint |
| https://bugs.webkit.org/show_bug.cgi?id=211974 |
| |
| Reviewed by Zalan Bujtas. |
| |
| mapLocalToContainer() is a generic geometry mapping function, and not just used for repaint, |
| so rename the "repaintContainer" argument to "ancestorContainer". |
| |
| Also fix some weirdly named variables in RenderMultiColumnFlow. |
| |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::mapLocalToContainer const): |
| * rendering/RenderBox.h: |
| * rendering/RenderFragmentedFlow.cpp: |
| (WebCore::RenderFragmentedFlow::mapLocalToContainer const): |
| * rendering/RenderFragmentedFlow.h: |
| * rendering/RenderInline.cpp: |
| (WebCore::RenderInline::mapLocalToContainer const): |
| (WebCore::RenderInline::pushMappingToContainer const): |
| * rendering/RenderMultiColumnFlow.cpp: |
| (WebCore::RenderMultiColumnFlow::addFragmentToThread): |
| (WebCore::RenderMultiColumnFlow::mapFromFlowToFragment const): |
| (WebCore::RenderMultiColumnFlow::physicalTranslationOffsetFromFlowToFragment const): |
| (WebCore::RenderMultiColumnFlow::physicalTranslationFromFlowToFragment const): |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::mapLocalToContainer const): |
| (WebCore::RenderObject::localToContainerQuad const): |
| (WebCore::RenderObject::localToContainerPoint const): |
| * rendering/RenderObject.h: |
| * rendering/RenderView.cpp: |
| (WebCore::RenderView::mapLocalToContainer const): |
| * rendering/svg/RenderSVGForeignObject.cpp: |
| (WebCore::RenderSVGForeignObject::mapLocalToContainer const): |
| * rendering/svg/RenderSVGForeignObject.h: |
| * rendering/svg/RenderSVGInline.cpp: |
| (WebCore::RenderSVGInline::mapLocalToContainer const): |
| * rendering/svg/RenderSVGInline.h: |
| * rendering/svg/RenderSVGModelObject.cpp: |
| (WebCore::RenderSVGModelObject::mapLocalToContainer const): |
| * rendering/svg/RenderSVGModelObject.h: |
| * rendering/svg/RenderSVGRoot.cpp: |
| (WebCore::RenderSVGRoot::mapLocalToContainer const): |
| * rendering/svg/RenderSVGRoot.h: |
| * rendering/svg/RenderSVGText.cpp: |
| (WebCore::RenderSVGText::mapLocalToContainer const): |
| * rendering/svg/RenderSVGText.h: |
| * rendering/svg/SVGRenderSupport.cpp: |
| (WebCore::SVGRenderSupport::mapLocalToContainer): |
| * rendering/svg/SVGRenderSupport.h: |
| |
| 2020-05-15 Simon Fraser <simon.fraser@apple.com> |
| |
| REGRESSION (r249091): Can't click on a video in the second column of a paginated web view |
| https://bugs.webkit.org/show_bug.cgi?id=211973 |
| <rdar://problem/61418775> |
| |
| Reviewed by Zalan Bujtas. |
| |
| In r249091 I made clip layer computation use offsetFromAncestor() by default, but this turns |
| out to give different behavior from mapping via renderers in columns. |
| |
| The bug was that accumulateOffsetTowardsAncestor() would map through the |
| RenderMultiColumnFlow columns if the ancestorLayer was the one that was using columns, |
| but mapping via renderers only maps through columns if converting to some ancestor of |
| the columnated renderer. |
| |
| I did not investigate why this only affects video. |
| |
| Test: fast/multicol/clipped-video-in-second-column.html |
| |
| * rendering/RenderLayer.cpp: |
| (WebCore::accumulateOffsetTowardsAncestor): |
| (WebCore::RenderLayer::calculateClipRects const): |
| |
| 2020-05-15 Kenneth Russell <kbr@chromium.org> |
| |
| OES_texture_float internal format conversion must depend on WEBGL_color_buffer_float |
| https://bugs.webkit.org/show_bug.cgi?id=211971 |
| |
| Reviewed by Dean Jackson. |
| |
| Only adjust the internal formats of textures created for the WebGL |
| 1.0 OES_texture_float extension if the WEBGL_color_buffer_float |
| extension has been enabled. |
| |
| Covered by the WebGL 1.0 OES_texture_float conformance tests when |
| run on iOS with another forthcoming fix to ANGLE which will enable |
| the OES_texture_float extension on that platform. |
| |
| * platform/graphics/angle/ExtensionsGLANGLE.cpp: |
| (WebCore::ExtensionsGLANGLE::ensureEnabled): |
| (WebCore::ExtensionsGLANGLE::adjustWebGL1TextureInternalFormat): |
| * platform/graphics/angle/ExtensionsGLANGLE.h: |
| * platform/graphics/angle/GraphicsContextGLANGLE.cpp: |
| (WebCore::GraphicsContextGLOpenGL::texImage2DDirect): |
| |
| 2020-05-15 Oriol Brufau <obrufau@igalia.com> |
| |
| [css-grid] Treat percentages as auto for the minimum contribution |
| https://bugs.webkit.org/show_bug.cgi?id=195967 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| The minimum contribution of a grid item is the outer size resulting from |
| the minimum size if the computed preferred size behaves as auto, or the |
| min-content contribution otherwise. |
| |
| If the preferred size is a percentage, it should be resolved with |
| respect to the grid area, which depends on the minimum contribution |
| of the item. Thus the percentage is cyclic and behaves as auto. |
| |
| Before this change, WebKit only checked whether the preferred size is |
| auto, not whether it behaves as auto. In fact this was according to |
| an older version of the spec, but it was changed in |
| https://github.com/w3c/csswg-drafts/issues/2367 |
| |
| Test: imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages.html |
| |
| Some cases in the test still fail due to bug 209461. |
| |
| * rendering/GridTrackSizingAlgorithm.cpp: |
| (WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const): |
| |
| 2020-05-15 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Animation with a single keyframe is not accelerated |
| https://bugs.webkit.org/show_bug.cgi?id=188730 |
| <rdar://problem/43481113> |
| |
| Reviewed by Dean Jackson. |
| |
| Test: webanimations/accelerated-animation-single-keyframe.html |
| |
| Prior to attempting to run an accelerated effect, ensure that the KeyframeList passed to |
| RenderLayerModelObject::startAnimation() does not have implicit keyframes since eventually |
| GraphicsLayerCA::animationCanBeAccelerated() would be called and would reject a single-keyframe |
| animation. To do this, we use the same code used in Style::Resolver::keyframeStylesForAnimation() |
| which we refactor in the new KeyframeList::fillImplicitKeyframes() method. |
| |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::copyPropertiesFromSource): |
| (WebCore::KeyframeEffect::applyPendingAcceleratedActions): |
| * rendering/style/KeyframeList.cpp: |
| (WebCore::KeyframeList::hasImplicitKeyframes const): |
| (WebCore::KeyframeList::copyKeyframes): |
| (WebCore::zeroPercentKeyframe): |
| (WebCore::hundredPercentKeyframe): |
| (WebCore::KeyframeList::fillImplicitKeyframes): |
| * rendering/style/KeyframeList.h: |
| * style/StyleResolver.cpp: |
| (WebCore::Style::Resolver::keyframeStylesForAnimation): |
| |
| 2020-05-15 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| The initial value of "transform-box" should be "view-box" |
| https://bugs.webkit.org/show_bug.cgi?id=211927 |
| |
| Reviewed by Simon Fraser. |
| |
| Specs: https://drafts.csswg.org/css-transforms/#transform-box. |
| |
| Test: svg/transforms/svg-transform-box-initial.html |
| |
| * css/CSSProperties.json: |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::initialTransformBox): |
| |
| 2020-05-15 Andres Gonzalez <andresg_22@apple.com> |
| |
| Fix for crash in accessibility/mac/replace-text-with-range-on-webarea-element.html in isolated tree mode. |
| https://bugs.webkit.org/show_bug.cgi?id=211954 |
| |
| Reviewed by Chris Fleizach. |
| |
| Fixes crash in isolated tree mode in accessibility/mac/replace-text-with-range-on-webarea-element.html. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::postTextStateChangeNotification): Check for null object before dereferencing. |
| (WebCore::AXObjectCache::rootWebArea): Reverted to returning an AXObject since it is not needed to return AXCoreObject. |
| * accessibility/AXObjectCache.h: |
| |
| 2020-05-15 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Move column and row balancing logic to a dedicated class |
| https://bugs.webkit.org/show_bug.cgi?id=211937 |
| |
| Reviewed by Antti Koivisto. |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForRows): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraSpace): |
| (WebCore::Layout::ColumnSpan::hasSpan): Deleted. |
| (WebCore::Layout::ColumnSpan::isSpanned): Deleted. |
| (WebCore::Layout::ColumnSpan::spanCount): Deleted. |
| (WebCore::Layout::ColumnSpan::startSpan): Deleted. |
| (WebCore::Layout::ColumnSpan::endSpan): Deleted. |
| (WebCore::Layout::ColumnSpan::index): Deleted. |
| (WebCore::Layout::ColumnSpan::size): Deleted. |
| (WebCore::Layout::ColumnSpan::spacing): Deleted. |
| (WebCore::Layout::RowSpan::hasSpan): Deleted. |
| (WebCore::Layout::RowSpan::isSpanned): Deleted. |
| (WebCore::Layout::RowSpan::spanCount): Deleted. |
| (WebCore::Layout::RowSpan::startSpan): Deleted. |
| (WebCore::Layout::RowSpan::endSpan): Deleted. |
| (WebCore::Layout::RowSpan::index): Deleted. |
| (WebCore::Layout::RowSpan::size): Deleted. |
| (WebCore::Layout::RowSpan::spacing): Deleted. |
| (WebCore::Layout::GridSpace::isEmpty const): Deleted. |
| (): Deleted. |
| (WebCore::Layout::max): Deleted. |
| (WebCore::Layout::operator-): Deleted. |
| (WebCore::Layout::operator+=): Deleted. |
| (WebCore::Layout::operator-=): Deleted. |
| (WebCore::Layout::operator/): Deleted. |
| (WebCore::Layout::distributeAvailableSpace): Deleted. |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): Deleted. |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): Deleted. |
| * layout/tableformatting/TableFormattingContext.h: |
| * layout/tableformatting/TableFormattingState.h: |
| (WebCore::Layout::TableFormattingState::tableGrid const): |
| * layout/tableformatting/TableGrid.h: |
| (WebCore::Layout::TableGrid::widthConstraints const): |
| (WebCore::Layout::TableGrid::Rows::list const): |
| (WebCore::Layout::TableGrid::widthConstraints): Deleted. |
| (WebCore::Layout::TableGrid::Rows::rowList const): Deleted. |
| |
| 2020-05-15 Alicia Boya García <aboya@igalia.com> |
| |
| [GStreamer][MediaStream] Fix missing video size |
| https://bugs.webkit.org/show_bug.cgi?id=211938 |
| |
| Reviewed by Philippe Normand. |
| |
| r261683 redefined m_currentVideoStreamId. Under the new design, tracks |
| have several states: |
| |
| - "wanted": a track has been selected from JavaScript, or chosen by |
| default. |
| |
| - "requested": a track that is expected to be chosen by the next |
| STREAMS_SELECTED message. |
| |
| - "current": a track that has been selected after the STREAMS_SELECTED |
| message has been handled. |
| |
| naturalSize() used to check m_currentVideoStreamId to look for the |
| video size, but this is called relatively early before the track |
| becomes "current" under the new design. |
| |
| Since the size tags can't be queried at any time, it makes sense to |
| use m_wantedVideoStreamId instead. |
| |
| This fixes the following tests which were previously regressed: |
| |
| fast/mediastream/get-user-media-constraints.html |
| fast/mediastream/getUserMedia-video-rescaling.html |
| fast/mediastream/mediastreamtrack-video-clone.html |
| imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-firstframe.https.html |
| fast/mediastream/media-stream-renders-first-frame.html |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::naturalSize const): |
| |
| 2020-05-15 Antti Koivisto <antti@apple.com> |
| |
| [Wheel event region] Invalidation when changing listeners on elements |
| https://bugs.webkit.org/show_bug.cgi?id=211895 |
| |
| Reviewed by Simon Fraser. |
| |
| Doesn't handle root (window/document) invalidation yet. |
| |
| Test: fast/scrolling/mac/wheel-event-listener-region-element-invalidation.html |
| |
| * dom/EventTarget.cpp: |
| (WebCore::EventTarget::addEventListener): |
| (WebCore::EventTarget::removeEventListener): |
| (WebCore::EventTarget::removeAllEventListeners): |
| |
| Invalidate element style on wheel event changes. |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::styleWillChange): |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::invalidateEventRegion): |
| |
| Build on non-iOS platforms. |
| |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::maintainsEventRegion const): |
| |
| Factor into function so it can be shared with RenderLayer::invalidateEventRegion. |
| |
| (WebCore::RenderLayerBacking::updateEventRegion): |
| * rendering/RenderLayerBacking.h: |
| |
| 2020-05-15 Antoine Quint <graouts@apple.com> |
| |
| Cursor should not update on a 20ms timer |
| https://bugs.webkit.org/show_bug.cgi?id=211884 |
| <rdar://problem/63220368> |
| |
| Reviewed by Simon Fraser. |
| |
| Test: fast/events/mouse-cursor-udpate-during-raf.html |
| |
| Update cursors after rAF callbacks have been serviced and layout has been updated. |
| |
| * page/Page.cpp: |
| (WebCore::Page::updateRendering): |
| (WebCore::Page::doAfterUpdateRendering): |
| |
| 2020-05-15 Andres Gonzalez <andresg_22@apple.com> |
| |
| Update the isolated tree only if isolated tree mode is enabled. |
| https://bugs.webkit.org/show_bug.cgi?id=211936 |
| |
| Reviewed by Chris Fleizach. |
| |
| Check for isIsolatedTreeEnabled before updating the isolated tree. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::updateIsolatedTree): |
| |
| 2020-05-15 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK3] Bring back usage of GtkMenu for context menus |
| https://bugs.webkit.org/show_bug.cgi?id=211557 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| No new tests needed. |
| |
| * platform/gtk/GtkVersioning.h: Remove GtkPopover functions used only for context menus. |
| |
| 2020-05-14 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Unreviewed. Fix build warning after r261113 |
| |
| Remove unused variable. |
| |
| * dom/ScriptedAnimationController.cpp: |
| (WebCore::ScriptedAnimationController::preferredScriptedAnimationInterval const): |
| |
| 2020-05-14 Andres Gonzalez <andresg_22@apple.com> |
| |
| Expose isColumnHeaderCell and isRowHeaderCell through AXCoreObject. |
| https://bugs.webkit.org/show_bug.cgi?id=211919 |
| |
| Reviewed by Chris Fleizach. |
| |
| Multiple tests including accessibility/crash-table-recursive-layout.html. |
| |
| - Expose isColumn/RowHeaderCell through AXCoreObject in order to make the |
| return value of AccessibilityTable::cellForColumnAndRow an AXCoreObject. |
| - Implemented these methods for AXIsolatedObject. |
| - isolatedCopy the accessibilityDescription property. |
| |
| * accessibility/AccessibilityObject.h: |
| * accessibility/AccessibilityObjectInterface.h: |
| * accessibility/AccessibilityTable.cpp: |
| (WebCore::AccessibilityTable::cellForColumnAndRow): Removed incorrect |
| assert since children are AXCoreObjects and not necessarily AccessibilityTableCells. |
| * accessibility/AccessibilityTable.h: |
| * accessibility/AccessibilityTableCell.cpp: |
| (WebCore::AccessibilityTableCell::isTableCellInSameRowGroup): |
| (WebCore::AccessibilityTableCell::isTableCellInSameColGroup): |
| (WebCore::AccessibilityTableCell::columnHeaders): |
| (WebCore::AccessibilityTableCell::rowHeaders): |
| * accessibility/AccessibilityTableCell.h: |
| * accessibility/AccessibilityTableColumn.cpp: |
| (WebCore::AccessibilityTableColumn::addChildren): |
| * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityElementForRow:andColumn:]): |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::initializeAttributeData): |
| * accessibility/isolatedtree/AXIsolatedObject.h: |
| |
| 2020-05-14 Timothy Hatcher <timothy@apple.com> |
| |
| Add baseURL version of _WKUserStyleSheet forWKWebView. |
| https://bugs.webkit.org/show_bug.cgi?id=211926 |
| rdar://problem/62074675 |
| |
| Reviewed by Devin Rousso. |
| |
| Consolidate the paths taken for adding a UserStyleSheet. The m_injectedStyleSheetToSource |
| was missing for page specific style sheets since it was another loop. |
| |
| * dom/ExtensionStyleSheets.cpp: |
| (WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache const): |
| (WebCore::ExtensionStyleSheets::injectPageSpecificUserStyleSheet): |
| (WebCore::ExtensionStyleSheets::removePageSpecificUserStyleSheet): |
| (WebCore::ExtensionStyleSheets::detachFromDocument): |
| * dom/ExtensionStyleSheets.h: |
| |
| 2020-05-14 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Relaxing signature length requirements for U2fRegister |
| https://bugs.webkit.org/show_bug.cgi?id=209645 |
| <rdar://problem/63204591> |
| |
| Reviewed by Brent Fulgham. |
| |
| It turns out the length range specified from the spec, i.e., [71, 73] is wrong. |
| https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-raw-message-formats-v1.2-ps-20170411.html#registration-response-message-success |
| |
| It should actually be [70, 72]. However, as a middleware to relay the messages, user agents |
| are not necessary to check the length. Therefore, the check is relaxed to make the code more robust. |
| |
| Covered by existing tests. |
| |
| * Modules/webauthn/fido/U2fResponseConverter.cpp: |
| (fido::WebCore::createFidoAttestationStatementFromU2fRegisterResponse): |
| |
| 2020-05-14 Timothy Hatcher <timothy@apple.com> |
| |
| Add sourceURL to _evaluateJavaScript: so the scripts appear in Web Inspector. |
| https://bugs.webkit.org/show_bug.cgi?id=211904 |
| rdar://problem/62074376 |
| |
| Reviewed by Devin Rousso. |
| |
| Added sourceURL to RunJavaScriptParameters. Use it instead of the frame's document URL. |
| |
| * bindings/js/RunJavaScriptParameters.h: |
| (WebCore::RunJavaScriptParameters::RunJavaScriptParameters): |
| (WebCore::RunJavaScriptParameters::encode const): |
| (WebCore::RunJavaScriptParameters::decode): |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::executeScriptInWorldIgnoringException): |
| (WebCore::ScriptController::executeScriptInWorld): |
| (WebCore::ScriptController::callInWorld): |
| (WebCore::ScriptController::executeUserAgentScriptInWorld): |
| |
| 2020-05-14 Eric Carlson <eric.carlson@apple.com> |
| |
| [Cocoa] Don't clear NowPlaying state unless it was set |
| https://bugs.webkit.org/show_bug.cgi?id=211899 |
| <rdar://problem/62249870> |
| |
| Reviewed by Jer Noble. |
| |
| Test: media/now-playing-status-without-media.html |
| |
| * platform/audio/PlatformMediaSessionManager.h: |
| (WebCore::PlatformMediaSessionManager::haveEverRegisteredAsNowPlayingApplication const): Method |
| added for testing. |
| |
| * platform/audio/cocoa/MediaSessionManagerCocoa.h: |
| * platform/audio/cocoa/MediaSessionManagerCocoa.mm: |
| (WebCore::MediaSessionManagerCocoa::updateNowPlayingInfo): Don't clear NowPlaying state unless |
| it was setup in the first place. |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::nowPlayingState const): Add new property. |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-05-14 Andres Gonzalez <andresg_22@apple.com> |
| |
| AXCoreObject font comparison methods should take another AXCoreObject instead of a RenderObject. |
| https://bugs.webkit.org/show_bug.cgi?id=211909 |
| |
| Reviewed by Chris Fleizach. |
| |
| Covered by existing tests. |
| |
| - In order for font comparison methods to be implementted for both |
| AXObjects and AXIsolatedObjects, they should take another AXCoreObject |
| to compare against, instead of a RenderObject. |
| - The AXIsolatedObject implementation of these methods is forwarded to |
| the associated AXObject and dispatched to the main thread. |
| - Implemented AXIsolatedObject::accessibilityDescription, hasUnderline and isUnvisited. |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::Accessibility::isAccessibilityObjectSearchMatchAtIndex): |
| * accessibility/AccessibilityObject.h: |
| * accessibility/AccessibilityObjectInterface.h: |
| (WebCore::AXCoreObject::isNativeListBox const): |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::hasSameFont const): |
| (WebCore::AccessibilityRenderObject::hasSameFontColor const): |
| (WebCore::AccessibilityRenderObject::hasSameStyle const): |
| * accessibility/AccessibilityRenderObject.h: |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::initializeAttributeData): |
| (WebCore::AXIsolatedObject::hasSameFont const): |
| (WebCore::AXIsolatedObject::hasSameFontColor const): |
| (WebCore::AXIsolatedObject::hasSameStyle const): |
| (WebCore::AXIsolatedObject::isNativeListBox const): Deleted, implemented in base class. |
| (WebCore::AXIsolatedObject::isUnvisited const): Deleted, inlined in header. |
| (WebCore::AXIsolatedObject::hasUnderline const): Deleted, inlined in header. |
| (WebCore::AXIsolatedObject::accessibilityDescription const): Deleted, inlined in header. |
| * accessibility/isolatedtree/AXIsolatedObject.h: |
| |
| 2020-05-14 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: front-end shouldn't change the order of User Style Sheet rules |
| https://bugs.webkit.org/show_bug.cgi?id=210893 |
| <rdar://problem/61937118> |
| |
| Reviewed by Devin Rousso. |
| |
| Previously, some style sheets were falsly detected as Inspector::Protocol::CSS::StyleSheetOrigin::User |
| causing incorrect order of style rules in Web Inspector. |
| |
| Test: inspector/css/getMatchedStylesForNode.html |
| |
| * inspector/agents/InspectorCSSAgent.cpp: |
| (WebCore::InspectorCSSAgent::detectOrigin): |
| |
| 2020-05-14 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [macOS] Update the placeholder icon image for attachment elements with progress="0" |
| https://bugs.webkit.org/show_bug.cgi?id=211898 |
| <rdar://problem/63203900> |
| |
| Reviewed by Timothy Hatcher. |
| |
| Refactor logic for creating an attachment placeholder image into a separate helper method, with a |
| WebKitAdditions implementation when HAVE(SYSTEM_ATTACHMENT_PLACEHOLDER_ICON) is defined. |
| |
| * rendering/RenderThemeMac.mm: |
| (WebCore::createAttachmentPlaceholderImage): |
| (WebCore::paintAttachmentIconPlaceholder): |
| |
| 2020-05-14 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r254856) Family Health iOS app is broken due to lack for WebSQL support |
| https://bugs.webkit.org/show_bug.cgi?id=211896 |
| <rdar://problem/63025045> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Add RuntimeApplicationChecks function to identify Family Health app on iOS. |
| |
| * platform/RuntimeApplicationChecks.h: |
| * platform/cocoa/RuntimeApplicationChecksCocoa.mm: |
| (WebCore::IOSApplication::isFamilyHealthApp): |
| |
| 2020-05-14 Andres Gonzalez <andresg_22@apple.com> |
| |
| AXIsolatedTree::updateChildren needs to apply pending changes before updating the given node. |
| https://bugs.webkit.org/show_bug.cgi?id=211790 |
| |
| Reviewed by Chris Fleizach. |
| |
| Covered by multiple tests. |
| |
| AXIsolatedTree::updateChildren may be fired for an isolated object that |
| is still in the pending changes list, and thus nodeForID would fail, |
| causing the isolated tree to not be updated. This patch calls |
| applyPendingChanges before updating the given node's children. |
| Additional logging was added including the logging of the AXObjectCache |
| object hierarchy. |
| |
| * accessibility/AXLogger.cpp: |
| (WebCore::AXLogger::log): |
| (WebCore::operator<<): |
| * accessibility/AXLogger.h: |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::remove): |
| (WebCore::AXObjectCache::postNotification): |
| (WebCore::AXObjectCache::performDeferredCacheUpdate): |
| (WebCore::AXObjectCache::updateIsolatedTree): |
| * accessibility/AXObjectCache.h: |
| * accessibility/isolatedtree/AXIsolatedTree.cpp: |
| (WebCore::AXIsolatedTree::updateNode): |
| (WebCore::AXIsolatedTree::updateSubtree): |
| (WebCore::AXIsolatedTree::updateChildren): |
| (WebCore::AXIsolatedTree::focusedNode): |
| (WebCore::AXIsolatedTree::removeNode): |
| (WebCore::AXIsolatedTree::removeSubtree): |
| (WebCore::AXIsolatedTree::applyPendingChanges): |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): |
| |
| 2020-05-14 Andres Gonzalez <andresg_22@apple.com> |
| |
| Fix for crash in LayoutTest in isolated tree mode. |
| https://bugs.webkit.org/show_bug.cgi?id=211894 |
| |
| Reviewed by Chris Fleizach. |
| |
| Several LayoutTests. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]): Check backing object for nullity before dereferencing. |
| |
| 2020-05-14 Andres Gonzalez <andresg_22@apple.com> |
| |
| AXIsolatedObject::isOnScreen needs to be dispatched to the main thread. |
| https://bugs.webkit.org/show_bug.cgi?id=211893 |
| |
| Reviewed by Chris Fleizach. |
| |
| Covered by existing tests. |
| |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::children): Split assert into two lines for readability. |
| (WebCore::AXIsolatedObject::isOnScreen const): Forward to associated AXObject and dispatch to the main thread. |
| |
| 2020-05-14 Andres Gonzalez <andresg_22@apple.com> |
| |
| Implementation of AXIsolatedObject::hasPlainText. |
| https://bugs.webkit.org/show_bug.cgi?id=211892 |
| |
| Reviewed by Chris Fleizach. |
| |
| Covered by existing tests. |
| |
| Adding hasPlainText to the cached properties map. |
| |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::initializeAttributeData): |
| (WebCore::AXIsolatedObject::hasPlainText const): Deleted, inlined in header. |
| * accessibility/isolatedtree/AXIsolatedObject.h: |
| |
| 2020-05-14 Sergio Villar Senin <svillar@igalia.com> |
| |
| Unreviewed build fix. |
| |
| * html/HTMLCanvasElement.cpp: |
| (WebCore::HTMLCanvasElement::createContextWebGL): downcast m_context to |
| WebGLRenderingContextBase before calling isXRCompatible(). It's created |
| as a WebGLRenderingContextBase but stored in a CanvasRenderingContext. |
| |
| 2020-05-14 Andres Gonzalez <andresg_22@apple.com> |
| |
| Replacing and inserting text need to be dispatched to the main thread. |
| https://bugs.webkit.org/show_bug.cgi?id=211863 |
| |
| Reviewed by Chris Fleizach. |
| |
| Covered by existing tests. |
| |
| In isolated tree mode WebAccessibilityObjectWrapper accessibilityReplaceRange |
| and InsertText may be called on the secondary thread. Thus the AXIsolatedObject |
| implementation of this functionality needs to forward these calls to the |
| associated AXObject on the main thread. |
| |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::replaceTextInRange): |
| (WebCore::AXIsolatedObject::insertText): |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityReplaceRange:withText:]): |
| (-[WebAccessibilityObjectWrapper accessibilityInsertText:]): |
| |
| 2020-05-14 Antoine Quint <graouts@apple.com> |
| |
| Cursor should not update on a 20ms timer |
| https://bugs.webkit.org/show_bug.cgi?id=211884 |
| <rdar://problem/63220368> |
| |
| Reviewed by Antti Koivisto. |
| |
| Update the cursor during page rendering rather than using a 20ms timer. |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::EventHandler): |
| (WebCore::EventHandler::clear): |
| (WebCore::EventHandler::updateCursorIfNeeded): |
| (WebCore::EventHandler::handleMouseMoveEvent): |
| (WebCore::EventHandler::scheduleCursorUpdate): |
| (WebCore::EventHandler::cursorUpdateTimerFired): Deleted. |
| * page/EventHandler.h: |
| * page/Page.cpp: |
| (WebCore::Page::updateRendering): |
| |
| 2020-05-14 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] webrtc/disable-encryption.html is a crashing flaky |
| https://bugs.webkit.org/show_bug.cgi?id=211166 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Make sure the audio and video mediastream source elements are correctly removed and disposed |
| from their parent bin when resetting the track sources. Before this change there was a |
| possibility of disposing the elements while they were still in PLAYING state. |
| |
| * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: |
| (WebCore::_WebKitMediaStreamSrc::SourceData::reset): |
| (WebCore::webkitMediaStreamSrcDispose): |
| (WebCore::webkitMediaStreamSrcRemoveTrackByType): |
| |
| 2020-05-14 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Non-unified build fixed, mid May 2020 edition |
| https://bugs.webkit.org/show_bug.cgi?id=211859 |
| |
| Unreviewed build. |
| |
| No new tests needed. |
| |
| * Modules/indexeddb/server/UniqueIDBDatabase.cpp: Add missing IDBBindingUtilities.h and |
| IDBSerializationContext.h includes. |
| * accessibility/AccessibilityRenderObject.cpp: Add missing EventHandler.h include. |
| * css/parser/CSSParserToken.cpp: Add missing RuntimeEnabledFeatures.h include. |
| * editing/gtk/WebContentReaderGtk.cpp: Add missing Blob.h include. |
| * html/canvas/OESTextureHalfFloat.cpp: Add missing ExtensionsGL.h include. |
| * page/ShareDataReader.h: Add missing ExceptionOr.h include. |
| * rendering/ContentfulPaintChecker.cpp: Add missing RenderView.h include. |
| * rendering/style/StyleRareInheritedData.h: Add missing RenderStyleConstants.h and |
| wtf/OptionSet.h includes. |
| * rendering/style/StyleRareNonInheritedData.h: Add missing TouchAction.h and wtf/OptionSet.h |
| includes. |
| * style/StyleAdjuster.h: Add missing RenderStyleConstants.h include and forward declaration |
| for WebCore::EventTarget. |
| |
| 2020-05-14 Alicia Boya García <aboya@igalia.com> |
| |
| [GStreamer] Playbin3 track switch rework |
| https://bugs.webkit.org/show_bug.cgi?id=211623 |
| |
| Reviewed by Philippe Normand. |
| |
| This patch reworks how track selection and reporting of selected |
| tracks is done in the player. |
| |
| The following found limitations and assumptions in current GStreamer |
| have informed this patch: |
| |
| a) Although the API for playbin3 is designed to be able to accept any |
| number of tracks of any kind, this is not supported in practice. |
| |
| b) The first track of each type is always selected. Even in playbin3 |
| mode, looking for GST_STREAM_FLAG_SELECT is not a reliable method, as |
| in most cases the demuxer does not set it at all. [qtdemux never sets |
| it at all, and matroskademux only sets it in certain cases.] |
| |
| c) Sending GST_EVENT_SELECT_STREAMS is only safe at certain moments. |
| It's not safe before pre-roll, after EOS or during the handling of |
| another SELECT_STREAMS. |
| |
| d) Selecting text tracks with playbin APIs is not relevant. All text |
| tracks are already being picked by WebKitTextCombiner, unaffected by |
| playbin track selection. |
| |
| e) Tracks requested in a GST_EVENT_SELECT_STREAMS are eventually |
| selected. On the other hand, looking at |
| GST_MESSAGE_STREAMS_SELECTED's content is not reliable, as this has |
| been seen to miss tracks depending on thread luck. |
| |
| This patch takes the points above into account to rework how track |
| selection is handled in MediaPlayerPrivateGStreamer and fix the |
| following issues: |
| |
| 1) In playbin3 mode, no track was marked as selected initially, |
| because of reliance on GST_STREAM_FLAG_SELECT. |
| |
| 2) In playbin2 mode, sometimes tracks would not be initially marked as |
| selected. This occurred because of reliance on the "selected" property |
| in inputselector sinkpads, whose initialization is racy -- it can |
| occur after the track has been added and picked up by WebKit. |
| |
| 3) In playbin3 mode, the limitations explained before has been honored |
| to make track selection stable, delaying SELECT_STREAMS events until |
| they are safe to send. |
| |
| This patch doesn't introduce significative behavior changes, rather |
| aiming for improving the stabilitity of the player. Existing tests |
| should provide enough coverage. |
| |
| * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp: |
| (WebCore::AudioTrackPrivateGStreamer::AudioTrackPrivateGStreamer): |
| (WebCore::AudioTrackPrivateGStreamer::setEnabled): |
| * platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h: |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo): |
| (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio): |
| (WebCore::MediaPlayerPrivateGStreamer::updateEnabledVideoTrack): |
| (WebCore::MediaPlayerPrivateGStreamer::updateEnabledAudioTrack): |
| (WebCore::MediaPlayerPrivateGStreamer::playbin3SendSelectStreamsIfAppropriate): |
| (WebCore::MediaPlayerPrivateGStreamer::updateTracks): |
| (WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage): |
| (WebCore::MediaPlayerPrivateGStreamer::handleMessage): |
| (WebCore::MediaPlayerPrivateGStreamer::didEnd): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp: |
| (WebCore::TrackPrivateBaseGStreamer::TrackPrivateBaseGStreamer): |
| * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h: |
| * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp: |
| (WebCore::VideoTrackPrivateGStreamer::VideoTrackPrivateGStreamer): |
| (WebCore::VideoTrackPrivateGStreamer::setSelected): |
| * platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h: |
| |
| 2020-05-14 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Can't replay blob videos in web.whatsapp.com |
| https://bugs.webkit.org/show_bug.cgi?id=192540 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| This is a variant of bug 211627 but I could reproduce it only for videos. Unfortunately I |
| wasn't able to write a reliable test for this. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::updateBufferingStatus): Prevent the fill timer from |
| running forever after buffering completed. |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (webKitWebSrcMakeRequest): Don't buffer blobs, this doesn't seem useful as they're already |
| in memory anyway. |
| |
| 2020-05-06 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebXR] Implement WebGLRenderingContextBase::makeXRCompatible() |
| https://bugs.webkit.org/show_bug.cgi?id=211506 |
| |
| Reviewed by Youenn Fablet. |
| |
| The WebXR spec defines a way to mark a WebGLRenderingContext as |
| compatible with WebXR. This can be made at creation time (by setting the |
| xrCompatible) attribute or by calling makeXRCompatible(). |
| |
| There are several web-platform-tests testing/using this feature, however we |
| cannot enable them right now as we need some other features to be implemented |
| first. |
| |
| * Modules/webxr/NavigatorWebXR.cpp: |
| (WebCore::NavigatorWebXR::xr): Do not pass ScriptExecutionContext and use |
| the Navigator's instead. |
| * Modules/webxr/NavigatorWebXR.h: Ditto. |
| * Modules/webxr/NavigatorWebXR.idl: Ditto. |
| * Modules/webxr/WebXRSystem.h: expose ensureImmersiveXRDeviceIsSelected() and |
| hasActiveImmersiveXRDevice() to be used from canvas and the rendering context. |
| * html/HTMLCanvasElement.cpp: |
| (WebCore::HTMLCanvasElement::createContextWebGL): call |
| ensureImmersiveXRDeviceIsSelected() if xrCompatible is set. |
| * html/canvas/WebGLContextAttributes.idl: Added xrCompatible. |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase): |
| Initialize m_isXRCompatible. |
| (WebCore::WebGLRenderingContextBase::makeXRCompatible): Implemented. |
| * html/canvas/WebGLRenderingContextBase.h: Defined makeXRCompatible(). |
| * html/canvas/WebGLRenderingContextBase.idl: Added makeXRCompatible(). |
| * platform/graphics/GraphicsContextGLAttributes.h: Added xrCompatible. |
| * testing/Internals.cpp: |
| (WebCore::Internals::xrTest): Simplified the usage of NavigatorWebXR. |
| |
| 2020-05-13 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Add support for cases when the balancing is not based on the initial width |
| https://bugs.webkit.org/show_bug.cgi?id=211878 |
| |
| Reviewed by Antti Koivisto. |
| |
| This patch adds support for the cases when the table stretches all the way to the maximum content size, |
| and we still choose the minimum width as the initial width and the maximum width as the base for balancing the extra space. |
| |
| Consider the following 2 tables: |
| |
| <table> |
| <tr><td style="width: 20px"></td><td>some long long long content</td></tr> |
| <tr><td style="width: 20px"></td><td>22px width content</td></tr> |
| </table> |
| |
| <table> |
| <tr><td style="width: 20px"></td><td>some long long long content</td></tr> |
| <tr><td style="width: 20px"></td><td id=fixed_width style="width: 22px;">22px width content</td></tr> |
| </table> |
| |
| These tables have the same maximum widths and they both stretch to that size. |
| However the second table will end up with a wider first and narrower second column because of the |
| width property on the [fixed_width] cell. |
| While the first table applies the maximum width for each columns, the second table uses the minimum width as the |
| initial width and balances the extra space using the maximum width (as the distribution ratio). |
| This produces a very different layout where the first table has no line wrapping, while |
| the second table wraps the "some long long long content" text (even though the used max widths are the same for each cells). |
| |
| Test: fast/layoutformattingcontext/table-fixed-width-with-max-distribution.html |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::ColumnSpan::spacing): |
| (WebCore::Layout::RowSpan::spacing): |
| (WebCore::Layout::distributeAvailableSpace): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| |
| 2020-05-13 Zalan Bujtas <zalan@apple.com> |
| |
| Do not clear selection/repaint when the renderer gets moved during tree normalization. |
| https://bugs.webkit.org/show_bug.cgi?id=211865 |
| <rdar://problem/62849044> |
| |
| Reviewed by Antti Koivisto. |
| |
| While detachFromRenderElement should really be about "this renderer is being detached from its parent", some code in here assumes |
| the renderer is not only going to be detached but also going to be destroyed. Ideally such code should live in RenderObject::willBeDestroyed(), |
| but no tree walk is possible in there anymore. |
| |
| The reason for the crash is that when we split the inline for continuation, we construct new anonymous containers and move subtrees over |
| to these new renderers. However at this point these new parent containers are not yet attached to the tree |
| so any tree-walking cleanup code will fail (in detachFromRenderElement). |
| |
| Test: fast/repaint/do-no-repaint-on-internal-move.html |
| |
| * rendering/updating/RenderTreeBuilder.cpp: |
| (WebCore::RenderTreeBuilder::detachFromRenderElement): |
| * rendering/updating/RenderTreeBuilder.h: |
| * rendering/updating/RenderTreeBuilderInline.cpp: |
| (WebCore::RenderTreeBuilder::Inline::splitInlines): |
| |
| 2020-05-13 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: show EventTarget listeners as an internal property |
| https://bugs.webkit.org/show_bug.cgi?id=211766 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Test: inspector/runtime/getProperties-internalProperties.html |
| |
| Add a `listeners` internal property for `EventTarget` objects with the value |
| ``` |
| listeners: { |
| <event>: [ |
| { |
| callback: <function> |
| capture: <boolean> |
| passive: <boolean> |
| once: <boolean> |
| } |
| ... |
| ] |
| ... |
| } |
| ``` |
| so long as at least one `JSEventListener` has been added prior to that point. |
| |
| * inspector/WebInjectedScriptHost.cpp: |
| (WebCore::objectForEventTargetListeners): Added. |
| (WebCore::WebInjectedScriptHost::getInternalProperties): |
| Drive-by: only add the `name` internal property if the `Worker` actually has a name. |
| |
| 2020-05-13 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: rename CSS.StyleSheetOrigin.Regular to CSS.StyleSheetOrigin.Author to match the spec |
| https://bugs.webkit.org/show_bug.cgi?id=211827 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Tests: inspector/css/add-rule.html |
| inspector/css/getMatchedStylesForNode.html |
| |
| * inspector/agents/InspectorCSSAgent.cpp: |
| (WebCore::InspectorCSSAgent::asInspectorStyleSheet): |
| (WebCore::InspectorCSSAgent::detectOrigin): |
| * inspector/InspectorStyleSheet.cpp: |
| (WebCore::InspectorStyleSheet::buildObjectForRule): |
| |
| 2020-05-13 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| JSDOMWindowBase m_windowCloseWatchpoints must be Ref<> |
| https://bugs.webkit.org/show_bug.cgi?id=211844 |
| |
| Reviewed by Mark Lam. |
| |
| JSDOMWindowBase::m_windowCloseWatchpoints is WatchpointSet, not Ref<WatchpointSet>. And it is passed to JSC IC layer via PropertySlot::setWatchpoint(...). |
| And ProxyableAccessCase can hold it as `RefPtr<WatchpointSet> m_additionalSet;`, this is wrong. |
| |
| This patch hides WatchpointSet constructor behind `protected` to disallow non Ref<> WatchpointSet construction. We made it `protected` since InferredValueWatchpointSet |
| inherits WatchpointSet and uses this constructor. |
| |
| Possibly, this does not matter: ProxyableAccessCase keeps Structure, which points to JSDOMWindowBase. So, it would not happen that ProxyableAccessCase has a wrong pointer |
| to WatchpointSet since JSDOMWindowBase is kept alive anyway. But avoid using RefCounted objects without RefCount allocation is better since this can cause bugs easily. |
| |
| * bindings/js/JSDOMWindowBase.cpp: |
| (WebCore::JSDOMWindowBase::JSDOMWindowBase): |
| (WebCore::JSDOMWindowBase::fireFrameClearedWatchpointsForWindow): |
| * bindings/js/JSDOMWindowBase.h: |
| * bindings/js/JSDOMWindowCustom.cpp: |
| (WebCore::JSDOMWindow::getOwnPropertySlot): |
| |
| 2020-05-13 Jack Lee <shihchieh_lee@apple.com> |
| |
| Nullptr crash in InsertParagraphSeparatorCommand::doApply when the canonical position is uneditable |
| https://bugs.webkit.org/show_bug.cgi?id=211864 |
| <rdar://problem/62982161> |
| |
| Reviewed by Geoffrey Garen. |
| |
| The position returned by positionAvoidingSpecialElementBoundary() is uneditable so we need to |
| check for uneditable insertion position and bail out before calling insertNodeAt to avoid assertion. |
| |
| Test: editing/inserting/insert-img-uneditable-canonical-position-crash.html |
| |
| * editing/InsertParagraphSeparatorCommand.cpp: |
| (WebCore::InsertParagraphSeparatorCommand::doApply): |
| |
| 2020-05-13 Jack Lee <shihchieh_lee@apple.com> |
| |
| Nullptr crash in DeleteSelectionCommand::doApply() when merge node is disconnected. |
| https://bugs.webkit.org/show_bug.cgi?id=211793 |
| <rdar://problem/62993645> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Check for disconnected merge destination and endingSelection() after mergeParagraph is |
| Called and bail out to avoid using corrupted positions for node insertion. |
| |
| Test: editing/inserting/insert-text-merge-node-removed-crash.html |
| |
| * editing/CompositeEditCommand.cpp: |
| (WebCore::CompositeEditCommand::moveParagraphs): |
| * editing/DeleteSelectionCommand.cpp: |
| (WebCore::DeleteSelectionCommand::mergeParagraphs): |
| |
| 2020-05-13 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Re-enable 'OutsideViewport' rAF throttling |
| https://bugs.webkit.org/show_bug.cgi?id=211482 |
| |
| Reviewed by Darin Adler. |
| |
| Test: fast/animation/request-animation-frame-throttling-outside-viewport.html |
| |
| Make preferredFrameInterval return AggressiveThrottlingAnimationInterval |
| if the OutsideViewport throttling reason exists. |
| |
| Add an internal setting for enabling 'OutsideViewport' rAF throttling. It |
| is on by default but it is off by default for DRT and WTR. An Internals |
| API is added to enable it for specific tests which want to test its |
| functionality. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::updateScriptedAnimationsAndTimersThrottlingState): |
| * page/Page.cpp: |
| (WebCore::Page::setOutsideViewportThrottlingEnabledForTesting): |
| * page/Page.h: |
| (WebCore::Page::canUpdateThrottlingReason const): |
| * platform/graphics/AnimationFrameRate.h: |
| (WebCore::preferredFrameInterval): |
| (WebCore::operator<<): |
| * testing/Internals.cpp: |
| (WebCore::Internals::resetToConsistentState): |
| (WebCore::Internals::setOutsideViewportThrottlingEnabled): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-05-13 Andres Gonzalez <andresg_22@apple.com> |
| |
| Remove unnecessary assert in {WebAccessibilityObjectWrapper attachmentView]. |
| https://bugs.webkit.org/show_bug.cgi?id=211857 |
| |
| Reviewed by Chris Fleizach. |
| |
| This assert is unnecessary since the backing object that is relevant is |
| the one on the main thread. This was causing crashes in LayoutTest in |
| isolated tree mode. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper attachmentView]): |
| |
| 2020-05-13 Jer Noble <jer.noble@apple.com> |
| |
| Replace isNullFunctionPointer with real weak-linking support |
| https://bugs.webkit.org/show_bug.cgi?id=211751 |
| |
| Reviewed by Sam Weinig. |
| |
| Use the new WTF_WEAK_LINK_FORCE_IMPORT macro. |
| |
| * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp: |
| (WebCore::LibWebRTCProvider::webRTCAvailable): |
| |
| 2020-05-13 Andres Gonzalez <andresg_22@apple.com> |
| |
| Implementation of AXIsolatedObject::hasBoldFont and hasItalicFont. |
| https://bugs.webkit.org/show_bug.cgi?id=211858 |
| |
| Reviewed by Chris Fleizach. |
| |
| Added hasBoldFont and hasItalicFont to the cached properties map. |
| |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::initializeAttributeData): Added properties to cache. |
| (WebCore::AXIsolatedObject::hasBoldFont const): Deleted. Inlined in header. |
| (WebCore::AXIsolatedObject::hasItalicFont const): Deleted. Inlined in header. |
| * accessibility/isolatedtree/AXIsolatedObject.h: |
| |
| 2020-05-13 Tim Horton <timothy_horton@apple.com> |
| |
| Add SPI for reverting to touch events for iPad trackpad interactions |
| https://bugs.webkit.org/show_bug.cgi?id=211824 |
| <rdar://problem/61363084> |
| |
| Reviewed by Megan Gardner. |
| |
| * loader/DocumentLoader.h: |
| (WebCore::DocumentLoader::mouseEventPolicy const): |
| (WebCore::DocumentLoader::setMouseEventPolicy): |
| |
| 2020-05-13 Kenneth Russell <kbr@chromium.org> |
| |
| Bad flicker on three.js example |
| https://bugs.webkit.org/show_bug.cgi?id=183151 |
| |
| Reviewed by Dean Jackson. |
| |
| With preserveDrawingBuffer:true and antialias:false, allocate an |
| intermediate texture and FBO, and blit from it to the destination |
| texture in prepareTexture(). Use wipeAlphaChannelFromPixels on iOS |
| as well as macOS. |
| |
| In addition to fixing the test case from the bug, this also fixes |
| the webgl/2.0.0/conformance2/textures/webgl_canvas/ layout tests, |
| which will be re-enabled in a subsequent patch. It also passes the |
| more stringent webgl_canvas conformance tests in |
| https://github.com/KhronosGroup/WebGL/pull/3071 . |
| |
| * platform/graphics/angle/GraphicsContextGLANGLE.cpp: |
| (WebCore::GraphicsContextGLOpenGL::readPixelsAndConvertToBGRAIfNecessary): |
| (WebCore::GraphicsContextGLOpenGL::reshapeFBOs): |
| (WebCore::GraphicsContextGLOpenGL::resolveMultisamplingIfNecessary): |
| (WebCore::GraphicsContextGLOpenGL::readPixels): |
| (WebCore::GraphicsContextGLOpenGL::validateDepthStencil): |
| (WebCore::GraphicsContextGLOpenGL::prepareTexture): |
| (WebCore::GraphicsContextGLOpenGL::reshape): |
| * platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: |
| (WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL): |
| (WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL): |
| * platform/graphics/opengl/GraphicsContextGLOpenGL.h: |
| |
| 2020-05-13 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] "Copy" context menu action for attachment element does not work in Mail |
| https://bugs.webkit.org/show_bug.cgi?id=211817 |
| <rdar://problem/58043110> |
| |
| Reviewed by Tim Horton. |
| |
| Minor refactoring to help support writing attachment data to the pasteboard when using context menu actions to |
| copy an attachment element on iOS. See below for more details, as well as the WebKit ChangeLog entry. |
| |
| Test: WKAttachmentTestsIOS.CopyAttachmentUsingElementAction |
| |
| * editing/Editor.cpp: |
| (WebCore::Editor::platformContentTypeForBlobType const): |
| (WebCore::Editor::promisedAttachmentInfo): |
| |
| Move promisedAttachmentInfo out of DragController and into Editor, so that it is accessible outside of drag |
| and drop code. |
| |
| * editing/Editor.h: |
| * editing/cocoa/EditorCocoa.mm: |
| (WebCore::Editor::platformContentTypeForBlobType const): |
| |
| Move this private helper function out of DragController as well, and into Editor. |
| |
| * page/DragClient.h: |
| * page/DragController.cpp: |
| (WebCore::DragController::startDrag): |
| |
| Refactor this to use Editor::promisedAttachmentInfo(). |
| |
| (WebCore::DragController::platformContentTypeForBlobType const): Deleted. |
| (WebCore::DragController::promisedAttachmentInfo): Deleted. |
| * page/DragController.h: |
| * page/mac/DragControllerMac.mm: |
| (WebCore::DragController::platformContentTypeForBlobType const): Deleted. |
| |
| 2020-05-13 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Calling reverse() on an accelerated animation has no effect |
| https://bugs.webkit.org/show_bug.cgi?id=204717 |
| <rdar://problem/62503582> |
| |
| Reviewed by Dean Jackson. |
| |
| Test: webanimations/accelerated-animation-playback-rate.html |
| |
| We completely ignored the playbackRate set on a WebAnimation object when considering whether we could run an accelerated animation. |
| To address this we do several things. |
| |
| First, we now add a playbackRate() on Animation objects such that we can make GraphicsLayerCA aware of the originating WebAnimation's |
| playback rate and use this data to opt out of running CA animations for animations with a playbackRate other than 1 in |
| GraphicsLayerCA::animationCanBeAccelerated(). We'll be looking to add support for variable playback rates for CA animations in |
| https://bugs.webkit.org/show_bug.cgi?id=211839. |
| |
| Then, we make sure to completely replace an accelerated animation whenever one of the properties affected timing would change. Up until |
| now we would onyl do this for a change in the effective currentTime, but this needs to also happen when the current time doesn't change |
| but the animation may have changed playback rate or any of its timing properties that could change the duration of the animation. So we |
| remove the "Seek" command and instead use an "UpdateTiming" command that will remove the existing animation and add a new one. |
| |
| This allows us to remove any notion of seeking in GraphicsLayer since now we'll just create a new animation when its timing attributes |
| changed. |
| |
| This revealed an issue where if we called animationFinished() and startAnimation() on a RenderLayerModelObject in succession, theanimation |
| removal would not occur on the GraphicsLayerCA because we disregarded any pending accelerated action for an animation we knew would be |
| replaced. We now ensure we honor the removal in GraphicsLayerCA::appendToUncommittedAnimations(). |
| |
| * animation/AnimationEffect.cpp: |
| (WebCore::AnimationEffect::updateTiming): |
| * animation/AnimationEffect.h: |
| * animation/CSSAnimation.cpp: |
| (WebCore::CSSAnimation::syncPropertiesWithBackingAnimation): |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::addPendingAcceleratedAction): |
| (WebCore::KeyframeEffect::animationDidChangeTimingProperties): |
| (WebCore::KeyframeEffect::applyPendingAcceleratedActions): |
| (WebCore::KeyframeEffect::backingAnimationForCompositedRenderer const): |
| (WebCore::KeyframeEffect::animationDidSeek): Deleted. |
| * animation/KeyframeEffect.h: |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::effectTimingDidChange): |
| (WebCore::WebAnimation::setCurrentTime): |
| (WebCore::WebAnimation::setPlaybackRate): |
| (WebCore::WebAnimation::updatePlaybackRate): |
| (WebCore::WebAnimation::reverse): |
| * animation/WebAnimation.h: |
| * platform/animation/Animation.h: |
| (WebCore::Animation::playbackRate const): |
| (WebCore::Animation::setPlaybackRate): |
| * platform/graphics/GraphicsLayer.h: |
| (WebCore::GraphicsLayer::pauseAnimation): |
| (WebCore::GraphicsLayer::seekAnimation): Deleted. |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::animationCanBeAccelerated const): |
| (WebCore::GraphicsLayerCA::updateAnimations): |
| (WebCore::GraphicsLayerCA::pauseCAAnimationOnLayer): |
| (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): |
| (WebCore::GraphicsLayerCA::seekAnimation): Deleted. |
| (WebCore::GraphicsLayerCA::seekCAAnimationOnLayer): Deleted. |
| * platform/graphics/ca/GraphicsLayerCA.h: |
| * rendering/RenderElement.h: |
| (WebCore::RenderElement::animationPaused): |
| (WebCore::RenderElement::animationSeeked): Deleted. |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::animationSeeked): Deleted. |
| * rendering/RenderLayerBacking.h: |
| * rendering/RenderLayerModelObject.cpp: |
| (WebCore::RenderLayerModelObject::animationSeeked): Deleted. |
| * rendering/RenderLayerModelObject.h: |
| |
| 2020-05-13 Antti Koivisto <antti@apple.com> |
| |
| [Wheel event region] Debug overlay |
| https://bugs.webkit.org/show_bug.cgi?id=211850 |
| |
| Reviewed by Simon Fraser. |
| |
| This is tied to the existing Wheel event handler overlay debug flag. |
| |
| * platform/graphics/Color.cpp: |
| (WebCore::makeRGB): Deleted. |
| (WebCore::makeRGBA): Deleted. |
| * platform/graphics/Color.h: |
| (WebCore::makeRGB): |
| (WebCore::makeRGBA): |
| |
| Make constexpr. |
| |
| * rendering/EventRegion.cpp: |
| (WebCore::EventRegion::eventListenerRegionForType const): |
| * rendering/EventRegion.h: |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::patternForDescription): |
| |
| Factor into a function. |
| |
| (WebCore::patternForTouchAction): |
| (WebCore::patternForEventListenerRegionType): |
| (WebCore::RenderLayerBacking::paintDebugOverlays): |
| (WebCore::RenderLayerBacking::paintContents): |
| |
| 2020-05-13 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Fix refactoring issue with animation suspension following r261336 |
| https://bugs.webkit.org/show_bug.cgi?id=211842 |
| <rdar://problem/63118326> |
| |
| Reviewed by Dean Jackson. |
| |
| We moved up the suspension code up from DocumentTimeline to DocumentTimelinesController in r261336 |
| and forgot to move the code that set the initial suspension state from the DocumentTimeline constructor |
| to the DocumentTimelinesController constructor. This is problematic because the suspension state is |
| only recorded on DocumentTimelinesController itself. |
| |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::DocumentTimeline): |
| * animation/DocumentTimelinesController.cpp: |
| (WebCore::DocumentTimelinesController::DocumentTimelinesController): |
| (WebCore::DocumentTimelinesController::addTimeline): |
| |
| 2020-05-13 Simon Fraser <simon.fraser@apple.com> |
| |
| composited scrolling interferes with the propagation of perspective |
| https://bugs.webkit.org/show_bug.cgi?id=156435 |
| <rdar://problem/25642222> |
| |
| Reviewed by Antti Koivisto. |
| |
| When we made RenderLayerBacking-internal layers for composited scrolling (m_scrollContainerLayer, |
| m_scrolledContentsLayer) we'd lose the effects of the sublayer transform, which was applied |
| to the primary layer, causing perspective on the scroller to not propagate to transformed descendants. |
| |
| Fix by moving the sublayer transform to the scroll container layer (adjusting the perspective |
| matrix as appropriate), and making the scrolled contents layer a "preserve3D" layer so |
| that it doesn't flatten. |
| |
| This fixes both macOS and iOS. |
| |
| Test: compositing/transforms/perspective-with-scrolling.html |
| |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateChildrenTransformAndAnchorPoint): |
| |
| 2020-05-13 Youenn Fablet <youenn@apple.com> |
| |
| Allow WebAudioBufferList to dynamically change its number of frames |
| https://bugs.webkit.org/show_bug.cgi?id=211720 |
| |
| Reviewed by Eric Carlson. |
| |
| We sometimes create WebAudioBufferList on the stack which triggers allocation of several vectors. |
| Instead of doing that for every audio sample chunk, we should allocate the WebAudioBufferList and resize it as necessary. |
| For that purpose, we introduce WebAudioBufferList::updateWithNumberOfFrames and use it in two places: |
| - When creating an audio track into WebAudio. |
| - When receiving audio chunks from another process. |
| Covered by existing tests. |
| |
| * Modules/webaudio/MediaStreamAudioSource.cpp: |
| (WebCore::MediaStreamAudioSource::~MediaStreamAudioSource): |
| * Modules/webaudio/MediaStreamAudioSource.h: |
| * Modules/webaudio/MediaStreamAudioSourceCocoa.cpp: |
| (WebCore::streamDescription): |
| (WebCore::MediaStreamAudioSource::consumeAudio): |
| * platform/audio/cocoa/WebAudioBufferList.cpp: |
| (WebCore::WebAudioBufferList::WebAudioBufferList): |
| (WebCore::WebAudioBufferList::updateWithNumberOfFrames): |
| (WebCore::WebAudioBufferList::channelCount const): |
| * platform/audio/cocoa/WebAudioBufferList.h: |
| * platform/mediastream/mac/MockAudioSharedUnit.mm: |
| (WebCore::MockAudioSharedUnit::reconfigure): |
| Drive-by fix, we do not need to give the size in bytes but the size in samples. |
| |
| 2020-05-13 Andres Gonzalez <andresg_22@apple.com> |
| |
| Check for accessibilityEnabled() before posting notifications asynchronously. |
| https://bugs.webkit.org/show_bug.cgi?id=211848 |
| |
| Reviewed by Chris Fleizach. |
| |
| Covered by multiple tests. Fixes crashes in LayoutTests in isolated tree mode. |
| |
| During LayoutTests, accessibility may be disabled between the time the |
| notifications are queued and the timer fires. Thus it is necessary to |
| check for accessibilityEnabled() before posting the notifications |
| asynchronously. Not doing so was causing crashes in isolated mode. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::notificationPostTimerFired): |
| |
| 2020-05-13 Simon Fraser <simon.fraser@apple.com> |
| |
| The perspective matrix is affected by overflow:hidden on a box with borders |
| https://bugs.webkit.org/show_bug.cgi?id=211828 |
| |
| Reviewed by Zalan Bujtas. |
| |
| For a box with non-uniform borders, the layer created for overflow:hidden is not |
| centered in its parent layer. However, we push the childrenTransform onto this |
| clipping layer, so that transform needs to be adjusted to account for the geometry |
| of the clipping layer. |
| |
| Test: compositing/transforms/perspective-with-clipping.html |
| |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::perspectiveTransform const): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::scrollContainerLayerBox): |
| (WebCore::clippingLayerBox): |
| (WebCore::overflowControlsHostLayerBox): |
| (WebCore::RenderLayerBacking::updateChildrenTransformAndAnchorPoint): |
| |
| 2020-05-13 Tomoki Imai <Tomoki.Imai@sony.com> |
| |
| Selected element on Web Inspector is not highlighted with CPU Rendering. |
| https://bugs.webkit.org/show_bug.cgi?id=195933 |
| |
| Reviewed by Devin Rousso. |
| |
| Expose InspectorOverlay::shouldShowOverlay via InspectorController. |
| It's used to determine whether WebPage needs a transparency layer to draw highlight. |
| |
| * inspector/InspectorController.cpp: |
| (WebCore::InspectorController::shouldShowOverlay const): |
| * inspector/InspectorController.h: |
| * inspector/InspectorOverlay.h: |
| |
| 2020-05-13 Zan Dobersek <zdobersek@igalia.com> |
| |
| REGRESSION(r261023): [GTK][WPE] Several WebGL tests are failing |
| https://bugs.webkit.org/show_bug.cgi?id=211338 |
| |
| Reviewed by Dean Jackson. |
| |
| For non-ANGLE-backed WebGL, we are still required to query the internal |
| format of the target texture for the texture sub-image commands. Falling |
| back to that behavior on !USE(ANGLE) removes regressions in a bunch of |
| WebGL tests. |
| |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::texImageSourceHelper): |
| (WebCore::WebGLRenderingContextBase::texImageArrayBufferViewHelper): |
| |
| 2020-05-13 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix GTK debug build after r261554 |
| |
| Remove writeToClipboard that receives a const SelectionData& that is no longer used. Make |
| readBufferFromClipboard pure virtual and remove the GTK leftovers from PlatformPasteboard. |
| |
| * platform/PasteboardStrategy.h: |
| * platform/PlatformPasteboard.h: |
| |
| 2020-05-13 Antti Koivisto <antti@apple.com> |
| |
| [Wheel event region] Add support for getting wheel event region from ScrollingTree |
| https://bugs.webkit.org/show_bug.cgi?id=211785 |
| |
| Reviewed by Simon Fraser. |
| |
| Add ScrollingTree::eventListenerRegionTypesForPoint. It is not used yet. |
| |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::eventListenerRegionTypesForPoint const): |
| * page/scrolling/ScrollingTree.h: |
| * page/scrolling/mac/ScrollingTreeMac.h: |
| * page/scrolling/mac/ScrollingTreeMac.mm: |
| (collectDescendantLayersAtPoint): |
| (ScrollingTreeMac::eventListenerRegionTypesForPoint const): |
| * platform/graphics/ca/PlatformCALayer.h: |
| * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h: |
| * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: |
| (WebCore::PlatformCALayerCocoa::eventRegionContainsPoint const): Deleted. |
| * rendering/EventRegion.cpp: |
| (WebCore::EventRegion::eventListenerRegionTypesForPoint const): |
| * rendering/EventRegion.h: |
| |
| 2020-05-12 Alex Christensen <achristensen@webkit.org> |
| |
| Give some NetworkLoadMetrics to WebCoreNSURLSession's delegate |
| https://bugs.webkit.org/show_bug.cgi?id=211759 |
| <rdar://problem/62909440> |
| |
| Reviewed by Jer Noble. |
| |
| This required packaging the fetchStart time with the rest of the time deltas, |
| passing a const NetworkLoadMetrics& down to the media loader, and packaging the data up |
| in an ObjC object that pretends to be NSURLSessionTaskMetrics, just like WebCoreNSURLSession |
| pretends to be an NSURLSession. |
| |
| I manually verified the NSDates are correct. This is not straightforward to automate tests for |
| because of the inherant dynamic nature of timing data, and because our other WebCoreNSURLSession |
| tests use WebKitLegacy, and that approach won't work here because we are only hooking up data from |
| NSURLSession, which is only used in modern WebKit. |
| |
| * Modules/beacon/NavigatorBeacon.cpp: |
| (WebCore::NavigatorBeacon::notifyFinished): |
| * Modules/beacon/NavigatorBeacon.h: |
| * bindings/js/CachedModuleScriptLoader.cpp: |
| (WebCore::CachedModuleScriptLoader::notifyFinished): |
| * bindings/js/CachedModuleScriptLoader.h: |
| * dom/LoadableClassicScript.cpp: |
| (WebCore::LoadableClassicScript::notifyFinished): |
| * dom/LoadableClassicScript.h: |
| * html/HTMLImageLoader.cpp: |
| (WebCore::HTMLImageLoader::notifyFinished): |
| * html/HTMLImageLoader.h: |
| * html/ImageDocument.cpp: |
| (WebCore::ImageDocument::finishedParsing): |
| * loader/ApplicationManifestLoader.cpp: |
| (WebCore::ApplicationManifestLoader::notifyFinished): |
| * loader/ApplicationManifestLoader.h: |
| * loader/CrossOriginPreflightChecker.cpp: |
| (WebCore::CrossOriginPreflightChecker::notifyFinished): |
| * loader/CrossOriginPreflightChecker.h: |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::notifyFinished): |
| * loader/DocumentLoader.h: |
| * loader/DocumentThreadableLoader.cpp: |
| (WebCore::DocumentThreadableLoader::notifyFinished): |
| * loader/DocumentThreadableLoader.h: |
| * loader/ImageLoader.cpp: |
| (WebCore::ImageLoader::notifyFinished): |
| * loader/ImageLoader.h: |
| * loader/LinkLoader.cpp: |
| (WebCore::LinkLoader::notifyFinished): |
| * loader/LinkLoader.h: |
| * loader/LinkPreloadResourceClients.h: |
| * loader/MediaResourceLoader.cpp: |
| (WebCore::MediaResource::notifyFinished): |
| * loader/MediaResourceLoader.h: |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::didReceiveResponse): |
| (WebCore::SubresourceLoader::didFinishLoading): |
| * loader/TextTrackLoader.cpp: |
| (WebCore::TextTrackLoader::notifyFinished): |
| * loader/TextTrackLoader.h: |
| * loader/appcache/ApplicationCacheResourceLoader.cpp: |
| (WebCore::ApplicationCacheResourceLoader::responseReceived): |
| (WebCore::ApplicationCacheResourceLoader::notifyFinished): |
| * loader/appcache/ApplicationCacheResourceLoader.h: |
| * loader/cache/CachedApplicationManifest.cpp: |
| (WebCore::CachedApplicationManifest::finishLoading): |
| * loader/cache/CachedApplicationManifest.h: |
| * loader/cache/CachedCSSStyleSheet.cpp: |
| (WebCore::CachedCSSStyleSheet::finishLoading): |
| (WebCore::CachedCSSStyleSheet::checkNotify): |
| * loader/cache/CachedCSSStyleSheet.h: |
| * loader/cache/CachedFont.cpp: |
| (WebCore::CachedFont::finishLoading): |
| (WebCore::CachedFont::checkNotify): |
| * loader/cache/CachedFont.h: |
| * loader/cache/CachedImage.cpp: |
| (WebCore::CachedImage::finishLoading): |
| * loader/cache/CachedImage.h: |
| * loader/cache/CachedRawResource.cpp: |
| (WebCore::CachedRawResource::updateBuffer): |
| (WebCore::CachedRawResource::finishLoading): |
| * loader/cache/CachedRawResource.h: |
| * loader/cache/CachedResource.cpp: |
| (WebCore::CachedResource::load): |
| (WebCore::CachedResource::checkNotify): |
| (WebCore::CachedResource::finishLoading): |
| (WebCore::CachedResource::error): |
| (WebCore::CachedResource::cancelLoad): |
| (WebCore::CachedResource::didAddClient): |
| * loader/cache/CachedResource.h: |
| * loader/cache/CachedResourceClient.h: |
| (WebCore::CachedResourceClient::notifyFinished): |
| * loader/cache/CachedSVGDocument.cpp: |
| (WebCore::CachedSVGDocument::finishLoading): |
| * loader/cache/CachedSVGDocument.h: |
| * loader/cache/CachedScript.cpp: |
| (WebCore::CachedScript::finishLoading): |
| * loader/cache/CachedScript.h: |
| * loader/cache/CachedTextTrack.cpp: |
| (WebCore::CachedTextTrack::finishLoading): |
| * loader/cache/CachedTextTrack.h: |
| * loader/cache/CachedXSLStyleSheet.cpp: |
| (WebCore::CachedXSLStyleSheet::finishLoading): |
| (WebCore::CachedXSLStyleSheet::checkNotify): |
| * loader/cache/CachedXSLStyleSheet.h: |
| * loader/cache/KeepaliveRequestTracker.cpp: |
| (WebCore::KeepaliveRequestTracker::notifyFinished): |
| * loader/cache/KeepaliveRequestTracker.h: |
| * loader/icon/IconLoader.cpp: |
| (WebCore::IconLoader::notifyFinished): |
| * loader/icon/IconLoader.h: |
| * platform/graphics/PlatformMediaResourceLoader.h: |
| (WebCore::PlatformMediaResourceClient::loadFinished): |
| * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm: |
| (WebCore::CachedResourceMediaLoader::notifyFinished): |
| * platform/network/NetworkLoadMetrics.h: |
| (WebCore::NetworkLoadMetrics::isolatedCopy const): |
| (WebCore::NetworkLoadMetrics::operator== const): |
| (WebCore::NetworkLoadMetrics::encode const): |
| (WebCore::NetworkLoadMetrics::decode): |
| (WTF::Persistence::Coder<Optional<WebCore::NetworkLoadPriority>>::encode): Deleted. |
| (WTF::Persistence::Coder<Optional<WebCore::NetworkLoadPriority>>::decode): Deleted. |
| * platform/network/cocoa/NetworkLoadMetrics.mm: |
| (WebCore::copyTimingData): |
| * platform/network/cocoa/WebCoreNSURLSession.mm: |
| (networkLoadMetricsDate): |
| (-[WebCoreNSURLSessionTaskTransactionMetrics _initWithMetrics:]): |
| (-[WebCoreNSURLSessionTaskTransactionMetrics fetchStartDate]): |
| (-[WebCoreNSURLSessionTaskTransactionMetrics domainLookupStartDate]): |
| (-[WebCoreNSURLSessionTaskTransactionMetrics domainLookupEndDate]): |
| (-[WebCoreNSURLSessionTaskTransactionMetrics connectStartDate]): |
| (-[WebCoreNSURLSessionTaskTransactionMetrics secureConnectionStartDate]): |
| (-[WebCoreNSURLSessionTaskTransactionMetrics connectEndDate]): |
| (-[WebCoreNSURLSessionTaskTransactionMetrics requestStartDate]): |
| (-[WebCoreNSURLSessionTaskTransactionMetrics responseStartDate]): |
| (-[WebCoreNSURLSessionTaskTransactionMetrics responseEndDate]): |
| (-[WebCoreNSURLSessionTaskMetrics _initWithMetrics:]): |
| (-[WebCoreNSURLSessionTaskMetrics transactionMetrics]): |
| (WebCore::WebCoreNSURLSessionDataTaskClient::loadFinished): |
| (-[WebCoreNSURLSessionDataTask _finish]): |
| (-[WebCoreNSURLSessionDataTask _resource:loadFinishedWithError:metrics:]): |
| (-[WebCoreNSURLSessionDataTask resource:accessControlCheckFailedWithError:]): |
| (-[WebCoreNSURLSessionDataTask resource:loadFailedWithError:]): |
| (-[WebCoreNSURLSessionDataTask resourceFinished:metrics:]): |
| (-[WebCoreNSURLSessionDataTask _resource:loadFinishedWithError:]): Deleted. |
| (-[WebCoreNSURLSessionDataTask resourceFinished:]): Deleted. |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::notifyFinished): |
| * rendering/RenderElement.h: |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::notifyFinished): |
| * rendering/RenderImage.h: |
| * rendering/RenderLayerFilters.cpp: |
| (WebCore::RenderLayerFilters::notifyFinished): |
| * rendering/RenderLayerFilters.h: |
| * svg/SVGFEImageElement.cpp: |
| (WebCore::SVGFEImageElement::notifyFinished): |
| * svg/SVGFEImageElement.h: |
| * svg/SVGUseElement.cpp: |
| (WebCore::SVGUseElement::notifyFinished): |
| * svg/SVGUseElement.h: |
| |
| 2020-05-12 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| [CG] Change the UTI of the "WebP" image to be "org.webmproject.webp" |
| https://bugs.webkit.org/show_bug.cgi?id=211794 |
| <rdar://problem/63031187> |
| |
| Reviewed by Darin Adler. |
| |
| See https://developers.google.com/speed/webp/docs/riff_container. |
| |
| * platform/graphics/cg/UTIRegistry.cpp: |
| (WebCore::defaultSupportedImageTypes): |
| Fix review comments from bug 208038. |
| |
| 2020-05-12 Simon Fraser <simon.fraser@apple.com> |
| |
| Move perspective-setting code into its own function |
| https://bugs.webkit.org/show_bug.cgi?id=211812 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Move the code that updates anchor point and children transform (for perspective) |
| into its own function. |
| |
| No behavior change. |
| |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateChildrenTransformAndAnchorPoint): |
| (WebCore::computeOffsetFromAncestorGraphicsLayer): |
| (WebCore::RenderLayerBacking::updateGeometry): |
| * rendering/RenderLayerBacking.h: |
| |
| 2020-05-12 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Don't assume extensions always exist |
| https://bugs.webkit.org/show_bug.cgi?id=211760 |
| <rdar://problem/61217642> |
| |
| Reviewed by Brent Fulgham. |
| |
| * Modules/webauthn/fido/U2fCommandConstructor.cpp: |
| (fido::processGoogleLegacyAppIdSupportExtension): |
| |
| 2020-05-12 Jer Noble <jer.noble@apple.com> |
| |
| [iOS] REGRESSION: (r261342) Play/pause button doesn't work upon first entering fullscreen mode |
| https://bugs.webkit.org/show_bug.cgi?id=211797 |
| <rdar://problem/63118008> |
| |
| Reviewed by Eric Carlson. |
| |
| In r261342 we added code to handle "canplay" and "waiting" events without ever actually |
| adding event listeners for them. So when we enter fullscreen before the "canplay" event, we |
| never re-evaluate whether we're playing or not. |
| |
| Drive-by fix: Also noticed that stalls will cause the play/pause toggle to switch from the |
| "pause icon" to the "play icon", which is incorrect; we're still "playing" event when we're |
| stalled. So when we are in the stalled state, set the "playbackRate" property to some very |
| small, but non-zero value. This will cause the playback slider to stop progressing, but |
| won't also cause the play/pause button to swap states. |
| |
| * platform/cocoa/PlaybackSessionModelMediaElement.mm: |
| (WebCore::PlaybackSessionModelMediaElement::updateForEventName): |
| (WebCore::PlaybackSessionModelMediaElement::observedEventNames): |
| |
| 2020-05-12 Chris Dumez <cdumez@apple.com> |
| |
| [WK2] Neuter WKFrameIsFrameSet() / WKPageGetFrameSetLargestFrame() C API |
| https://bugs.webkit.org/show_bug.cgi?id=211808 |
| |
| Reviewed by Darin Adler. |
| |
| Neuter WKFrameIsFrameSet() / WKPageGetFrameSetLargestFrame() C API. This is only SPI and is only used for slightly |
| different printing behavior in Safari. Framesets are no longer supported in HTML5 and are now super rare. Support |
| for this C API adds quite a bit of code complexity and crashes such as <rdar://problem/60322282>, it just does not |
| seem worth it anymore. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::resume): |
| * html/HTMLFrameSetElement.cpp: |
| (WebCore::HTMLFrameSetElement::insertedIntoAncestor): |
| (WebCore::HTMLFrameSetElement::removedFromAncestor): |
| * loader/EmptyFrameLoaderClient.h: |
| * loader/FrameLoaderClient.h: |
| |
| 2020-05-12 Simon Fraser <simon.fraser@apple.com> |
| |
| Clean up some transformOrigin and perspectiveOrigin code |
| https://bugs.webkit.org/show_bug.cgi?id=211807 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Add LengthPoint and LengthSize-based "value for length" functions so we can do |
| point and size math as we do for LayoutPoint/FloatPoint etc. |
| |
| Use them in code that computes transform and perspective origins. |
| |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::computeTransformedExtentViaTransformList const): |
| * css/LengthFunctions.cpp: |
| (WebCore::sizeForLengthSize): |
| (WebCore::pointForLengthPoint): |
| (WebCore::floatPointForLengthPoint): |
| * css/LengthFunctions.h: |
| * page/animation/AnimationBase.cpp: |
| (WebCore::AnimationBase::computeTransformedExtentViaTransformList const): |
| * platform/Length.h: |
| * platform/LengthPoint.h: |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::perspectiveTransform const): |
| (WebCore::RenderLayer::perspectiveOrigin const): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::computeTransformOriginForPainting const): |
| * rendering/style/BasicShapes.cpp: |
| (WebCore::BasicShapeInset::path): |
| (WebCore::floatSizeForLengthSize): Deleted. |
| * rendering/style/RenderStyle.cpp: |
| (WebCore::RenderStyle::applyTransform const): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::transformOriginXY const): Explicitly "xy" because it excludes the z component. |
| (WebCore::RenderStyle::perspectiveOrigin const): |
| * rendering/style/StyleRareNonInheritedData.h: |
| (WebCore::StyleRareNonInheritedData::perspectiveOrigin const): |
| * rendering/style/StyleTransformData.h: |
| (WebCore::StyleTransformData::originXY const): |
| |
| 2020-05-12 Michael Catanzaro <mcatanzaro@gnome.org> |
| |
| -Wattribute warning in BreakLines.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=211784 |
| |
| Reviewed by Darin Adler. |
| |
| Remove export attribute. These only work in header files. |
| |
| * rendering/BreakLines.cpp: |
| |
| 2020-05-12 Eric Carlson <eric.carlson@apple.com> |
| |
| Poster set after playback begins should be ignored |
| https://bugs.webkit.org/show_bug.cgi?id=211464 |
| <rdar://problem/62605114> |
| |
| Reviewed by Darin Adler. |
| |
| Test: media/video-poster-set-after-playback.html |
| |
| * html/HTMLVideoElement.cpp: |
| (WebCore::HTMLVideoElement::parseAttribute): Ignore `poster` changes after first video frame |
| is available. |
| (WebCore::HTMLVideoElement::updateDisplayState): Set mode to Video if the first video |
| frame is available. |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::elementShouldDisplayPosterImage const): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-05-12 Simon Fraser <simon.fraser@apple.com> |
| |
| Perpective origin should be relative to the reference box |
| https://bugs.webkit.org/show_bug.cgi?id=211769 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Use the reference box <https://drafts.csswg.org/css-transforms-1/#reference-box> when |
| computing perspective-origin <https://drafts.csswg.org/css-transforms-2/#perspective-origin-property>, |
| adding a referenceBox() helper on RenderBox. |
| |
| The code to compute the perspective transform is wrong; for now, fudge it by passing in the border box, |
| but this code needs to account for GraphicsLayer geometry and transform-origin in future (webkit.org/b/211787). |
| |
| Test: compositing/transforms/perspective-transform-box.html |
| |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::nodeAtPoint): |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::referenceBox const): |
| * rendering/RenderBox.h: |
| * rendering/RenderLayer.cpp: |
| (WebCore::computeReferenceRectFromBox): |
| (WebCore::computeReferenceBox): |
| (WebCore::RenderLayer::updateTransform): |
| (WebCore::RenderLayer::currentTransform const): |
| (WebCore::RenderLayer::perspectiveTransform const): |
| (WebCore::RenderLayer::computeClipPath const): |
| * rendering/RenderLayer.h: |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateGeometry): |
| |
| 2020-05-12 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed PlayStation / clang-cl build fix following r261533. |
| |
| Apparently r261572 only caught half of the cases. |
| |
| * Modules/indexeddb/server/UniqueIDBDatabase.cpp: |
| (WebCore::IDBServer::estimateSize): |
| * bindings/js/IDBBindingUtilities.cpp: |
| (WebCore::generateIndexKeyMapForValue): |
| |
| 2020-05-12 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| Text is clipped when rendered with fonts which have a negative line gap metric |
| https://bugs.webkit.org/show_bug.cgi?id=211683 |
| <rdar://problem/62192986> |
| |
| Reviewed by Zalan Bujtas. |
| |
| ... As seen on nytimes.com. |
| |
| Some fonts have negative line gap metrics. Chrome and Firefox both clamp it to 0, so the |
| line-height isn't decreased. However, we were honoring the negative line gap, thereby decreasing |
| line-height. |
| |
| There are some typographical reasons to want a negative line gap, which is why this clamping |
| behavior shouldn't be done in the platform text library. In the interest of matching other |
| browsers, we should perform this clamping ourselves in WebKit. |
| |
| Test: fast/text/negative-line-gap.html |
| |
| * platform/graphics/Font.cpp: |
| (WebCore::Font::platformGlyphInit): |
| |
| 2020-05-12 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed PlayStation / clang-cl build fix following r261533. |
| |
| clang for Windows (< v10.0.0) cannot destructure a const class. |
| See also r254471, r249524, etc. |
| |
| * Modules/indexeddb/server/MemoryObjectStore.cpp: |
| (WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord): |
| * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: |
| (WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord): |
| |
| 2020-05-12 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed PlayStation build fix following r261494. |
| |
| * PlatformPlayStation.cmake: |
| |
| 2020-05-12 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Rework drag and drop handling in preparation for GTK4 |
| https://bugs.webkit.org/show_bug.cgi?id=211723 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Remove PasteboardHelper that is no longer used and add conversion functions to GtkUtilities. |
| |
| * PlatformGTK.cmake: |
| * SourcesGTK.txt: |
| * platform/gtk/GtkUtilities.cpp: |
| (WebCore::gdkDragActionToDragOperation): |
| (WebCore::dragOperationToGdkDragActions): |
| (WebCore::dragOperationToSingleGdkDragAction): |
| * platform/gtk/GtkUtilities.h: |
| * platform/gtk/PasteboardHelper.cpp: Removed. |
| * platform/gtk/PasteboardHelper.h: Removed. |
| |
| 2020-05-12 Jacob Uphoff <jacob_uphoff@apple.com> |
| |
| Unreviewed, reverting r261557. |
| |
| This commit caused testing to exit early due to too many |
| crashes on macOS Catalina Asan |
| |
| Reverted changeset: |
| |
| "Allow WebAudioBufferList to dynamically change its number of |
| frames" |
| https://bugs.webkit.org/show_bug.cgi?id=211720 |
| https://trac.webkit.org/changeset/261557 |
| |
| 2020-05-12 Simon Fraser <simon.fraser@apple.com> |
| |
| Speculative fix for crash in ScrollingTree::handleWheelEvent() |
| https://bugs.webkit.org/show_bug.cgi?id=211763 |
| <rdar://problem/62926117> |
| |
| Reviewed by Andy Estes. |
| |
| Crash data shows a null-deref crash in ScrollingTree::handleWheelEvent() which |
| is most likely because m_rootNode is null. Protect against this. |
| |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::handleWheelEvent): |
| |
| 2020-05-12 Youenn Fablet <youenn@apple.com> |
| |
| Allow WebAudioBufferList to dynamically change its number of frames |
| https://bugs.webkit.org/show_bug.cgi?id=211720 |
| |
| Reviewed by Eric Carlson. |
| |
| We sometimes create WebAudioBufferList on the stack which triggers allocation of several vectors. |
| Instead of doing that for every audio sample chunk, we should allocate the WebAudioBufferList and resize it as necessary. |
| For that purpose, we introduce WebAudioBufferList::updateWithNumberOfFrames and use it in two places: |
| - When creating an audio track into WebAudio. |
| - When receiving audio chunks from another process. |
| Covered by existing tests. |
| |
| * Modules/webaudio/MediaStreamAudioSource.cpp: |
| (WebCore::MediaStreamAudioSource::~MediaStreamAudioSource): |
| * Modules/webaudio/MediaStreamAudioSource.h: |
| * Modules/webaudio/MediaStreamAudioSourceCocoa.cpp: |
| (WebCore::streamDescription): |
| (WebCore::MediaStreamAudioSource::consumeAudio): |
| * platform/audio/cocoa/WebAudioBufferList.cpp: |
| (WebCore::WebAudioBufferList::WebAudioBufferList): |
| (WebCore::WebAudioBufferList::updateWithNumberOfFrames): |
| (WebCore::WebAudioBufferList::channelCount const): |
| * platform/audio/cocoa/WebAudioBufferList.h: |
| |
| 2020-05-12 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Rework clipboard handling in preparation for GTK4 |
| https://bugs.webkit.org/show_bug.cgi?id=211511 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Remove PlatformPasteboard implementation that has been replaced by Clipboard class in the WebKit |
| layer. When Pasteboard class is created for copy and paste operations, it no longer has a SelectionData member, |
| it just uses the new methods in the pasteboard strategy to communicate with the clipboard. WebContentReader has |
| now an implementation for GTK and it's used when reading from the clipboard, the same way it's done in other ports. |
| |
| * SourcesGTK.txt: |
| * editing/WebContentReader.h: |
| * editing/gtk/EditorGtk.cpp: |
| (WebCore::Editor::pasteWithPasteboard): Use webContentFromPasteboard(). |
| (WebCore::Editor::webContentFromPasteboard): Use WebContentReader. |
| * editing/gtk/WebContentReaderGtk.cpp: Added. |
| (WebCore::WebContentReader::readFilePath): |
| (WebCore::WebContentReader::readFilePaths): |
| (WebCore::WebContentReader::readHTML): |
| (WebCore::WebContentReader::readPlainText): |
| (WebCore::WebContentReader::readImage): |
| (WebCore::WebContentReader::readURL): |
| (WebCore::WebContentMarkupReader::readHTML): |
| * platform/Pasteboard.h: |
| (WebCore::PasteboardWebContentReader::readDataBuffer): |
| * platform/PasteboardStrategy.h: |
| * platform/gtk/PasteboardGtk.cpp: |
| (WebCore::Pasteboard::Pasteboard): |
| (WebCore::Pasteboard::selectionData const): |
| (WebCore::Pasteboard::writeString): |
| (WebCore::Pasteboard::writePlainText): |
| (WebCore::Pasteboard::write): |
| (WebCore::Pasteboard::clear): |
| (WebCore::Pasteboard::canSmartReplace): |
| (WebCore::Pasteboard::read): |
| (WebCore::Pasteboard::hasData): |
| (WebCore::Pasteboard::typesForLegacyUnsafeBindings): |
| (WebCore::Pasteboard::readString): |
| (WebCore::Pasteboard::fileContentState): |
| * platform/gtk/PasteboardHelper.cpp: |
| * platform/gtk/PasteboardHelper.h: |
| * platform/gtk/PlatformPasteboardGtk.cpp: Removed. |
| * platform/gtk/SelectionData.cpp: |
| (WebCore::SelectionData::setURL): Do not override the text and markup if it has already been set. |
| |
| 2020-05-12 Youenn Fablet <youenn@apple.com> |
| |
| Introduce a RealtimeMediaSource video sample observer |
| https://bugs.webkit.org/show_bug.cgi?id=211718 |
| |
| Reviewed by Eric Carlson. |
| |
| We introduce an observer dedicated to video samples similarly to AudioSampleObserver for audio. |
| This will allow to move video frame processing out of the main thread progressively. |
| For now, we remove video sample observing from the track private and observers should now register directly to the realtime media source. |
| We update the various users, including MediaRecorder and the media player. |
| In both cases, they will only observe the video track to be played/recorded, which is both more efficient and simpler. |
| |
| We introduced RealtimeMediaSource::Observer::hasStartedProducingData callback for MediaStreamTrackPrivate so |
| that the processing to do when the first samples are available can be done on the main thread. |
| |
| MediaStreamTrackPrivate no longer filters out samples if it is not enabled. |
| As such, each consumer is now responsible to observe/unobserve the source when its track gets enabled/disabled similarly as for audio, |
| or do nothing if track is not enabled. |
| |
| Similarly, RealtimeOutgoingVideoSourceCocoa will now only observe video samples when the track is enabled and not muted. |
| |
| Covered by existing tests. |
| |
| * Modules/mediarecorder/MediaRecorder.cpp: |
| (WebCore::MediaRecorder::sampleBufferUpdated): Deleted. |
| * Modules/mediarecorder/MediaRecorder.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC): |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample): |
| We can renove the track check since we only observe the active video track. |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::videoSampleAvailable): |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::checkSelectedVideoTrack): |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sampleBufferUpdated): Deleted. |
| * platform/mediarecorder/MediaRecorderPrivate.h: |
| (WebCore::MediaRecorderPrivate::setVideoSource): |
| (WebCore::MediaRecorderPrivate::~MediaRecorderPrivate): |
| * platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp: |
| (WebCore::MediaRecorderPrivateAVFImpl::create): |
| (WebCore::MediaRecorderPrivateAVFImpl::~MediaRecorderPrivateAVFImpl): |
| (WebCore::MediaRecorderPrivateAVFImpl::videoSampleAvailable): |
| (WebCore::MediaRecorderPrivateAVFImpl::stopRecording): |
| (WebCore::MediaRecorderPrivateAVFImpl::sampleBufferUpdated): Deleted. |
| * platform/mediarecorder/MediaRecorderPrivateAVFImpl.h: |
| * platform/mediarecorder/MediaRecorderPrivateMock.cpp: |
| (WebCore::MediaRecorderPrivateMock::MediaRecorderPrivateMock): |
| (WebCore::MediaRecorderPrivateMock::~MediaRecorderPrivateMock): |
| (WebCore::MediaRecorderPrivateMock::stopRecording): |
| (WebCore::MediaRecorderPrivateMock::videoSampleAvailable): |
| (WebCore::MediaRecorderPrivateMock::sampleBufferUpdated): Deleted. |
| * platform/mediarecorder/MediaRecorderPrivateMock.h: |
| * platform/mediastream/MediaStreamTrackPrivate.cpp: |
| (WebCore::MediaStreamTrackPrivate::hasStartedProducingData): |
| (WebCore::MediaStreamTrackPrivate::updateReadyState): |
| (WebCore::MediaStreamTrackPrivate::videoSampleAvailable): Deleted. |
| (WebCore::MediaStreamTrackPrivate::hasStartedProducingAudioData): Deleted. |
| * platform/mediastream/MediaStreamTrackPrivate.h: |
| * platform/mediastream/RealtimeMediaSource.cpp: |
| (WebCore::RealtimeMediaSource::addVideoSampleObserver): |
| (WebCore::RealtimeMediaSource::removeVideoSampleObserver): |
| (WebCore::RealtimeMediaSource::updateHasStartedProducingData): |
| (WebCore::RealtimeMediaSource::videoSampleAvailable): |
| (WebCore::RealtimeMediaSource::audioSamplesAvailable): |
| * platform/mediastream/RealtimeMediaSource.h: |
| * platform/mediastream/RealtimeOutgoingVideoSource.cpp: |
| (WebCore::RealtimeOutgoingVideoSource::unobserveSource): |
| (WebCore::RealtimeOutgoingVideoSource::updateBlackFramesSending): |
| * platform/mediastream/RealtimeOutgoingVideoSource.h: |
| * platform/mediastream/RealtimeVideoSource.cpp: |
| (WebCore::RealtimeVideoSource::~RealtimeVideoSource): |
| (WebCore::RealtimeVideoSource::startProducingData): |
| (WebCore::RealtimeVideoSource::stopProducingData): |
| (WebCore::RealtimeVideoSource::videoSampleAvailable): |
| * platform/mediastream/RealtimeVideoSource.h: |
| * platform/mediastream/mac/AVVideoCaptureSource.mm: |
| (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection): |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.h: |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm: |
| (WebCore::RealtimeIncomingVideoSourceCocoa::processNewSample): |
| * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp: |
| (WebCore::RealtimeOutgoingVideoSourceCocoa::videoSampleAvailable): |
| (WebCore::RealtimeOutgoingVideoSourceCocoa::sampleBufferUpdated): Deleted. |
| * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h: |
| * platform/mock/MockRealtimeVideoSource.cpp: |
| * testing/Internals.cpp: |
| (WebCore::Internals::~Internals): |
| (WebCore::Internals::stopObservingRealtimeMediaSource): |
| (WebCore::Internals::observeMediaStreamTrack): |
| * testing/Internals.h: |
| |
| 2020-05-12 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Audio messages in web.whatsapp.com only play once. |
| https://bugs.webkit.org/show_bug.cgi?id=211627 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| Test: media/video-src-blob-replay.html |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::updateDownloadBufferingFlag): Make sure on-disk |
| buffering is disabled for blob URIs, because it messes up the pipeline for replays, and it's |
| useless for that use-case anyway. |
| |
| 2020-05-12 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Need to advertise support for WebP in the Accept header |
| https://bugs.webkit.org/show_bug.cgi?id=211735 |
| |
| Reviewed by Darin Adler. |
| |
| On Mac and iOS, the system has to support WebP: HAVE(WEBP). |
| On other platforms, WebKit has to be able to decode WebP images: USE(WEBP). |
| |
| * css/CSSCalculationValue.cpp: |
| (WebCore::createCSS): |
| Fix unrealted coding style issue. |
| |
| * loader/cache/CachedResourceRequest.cpp: |
| (WebCore::acceptHeaderValueForImageResource): |
| (WebCore::acceptHeaderValueFromType): |
| |
| 2020-05-11 Darin Adler <darin@apple.com> |
| |
| Fix problems caught by replacing WTF::Optional with std::optional |
| https://bugs.webkit.org/show_bug.cgi?id=211703 |
| |
| Reviewed by Chris Dumez. |
| |
| * editing/EditorCommand.cpp: |
| (WebCore::executeSelectToMark): Remove erroneous code that converts |
| a live range to a SimpleRange and then back again. |
| |
| * inspector/agents/InspectorNetworkAgent.cpp: |
| (WebCore::InspectorNetworkAgent::willSendRequest): Pass a pointer to |
| a ResourceRequest. |
| (WebCore::InspectorNetworkAgent::didLoadResourceFromMemoryCache): Ditto. |
| (WebCore::InspectorNetworkAgent::buildInitiatorObject): Take a const* |
| to a ResourceRequest instead of an Optional<const ResourceRequest&> |
| because std::optional does not work with reference types. |
| * inspector/agents/InspectorNetworkAgent.h: Update for the change above. |
| |
| * layout/floats/FloatingContext.cpp: |
| (WebCore::Layout::Iterator::operator++): Fix code that was accidentally |
| comparing two optionals, after already checking them for null. Instead |
| we should compare their values. |
| |
| * platform/PlatformScreen.cpp: |
| (WebCore::screenData): Return a const* instead of an Optional<const&> |
| because std::optonal does not work with reference types. |
| * platform/PlatformScreen.h: Updated for the above. Also removed both |
| the unneeded include of Optional.h (could have included Forward.h) and |
| of HashMap.h and put the Mac-specific type IORegistryGPUID inside a |
| PLATFORM(MAC) #if statement. |
| |
| * platform/ScreenProperties.h: Moved the HashMap.h include here, since |
| this is the header that uses it. Changed the EncodedColorSpaceDataType |
| enum to an enum class and gave it much shorter names. |
| (WebCore::ScreenData::encode const): Updated for the enum class change. |
| Also fixed a mistake where the code would use operator<< instead of |
| encodeEnum for the color space type of Null. This would lead to some |
| kind of decoding error, rather than a null cgColorSpace. |
| (WebCore::ScreenData::decode): Ditto. |
| |
| * platform/ios/PlatformScreenIOS.mm: |
| (WebCore::screenIsMonochrome): Updated since screenData returns a pointer. |
| (WebCore::screenHasInvertedColors): Ditto. |
| (WebCore::screenSupportsExtendedColor): Ditto. |
| (WebCore::screenSize): Ditto. |
| (WebCore::availableScreenSize): Ditto. |
| |
| * platform/mac/PlatformScreenMac.mm: Moved declaration of |
| CGDisplayUsesForceToGray to CoreGraphicsSPI.h. Removed unused declaration |
| of CGDisplayUsesInvertedPolarity. |
| (WebCore::primaryOpenGLDisplayMask): Updated since screendData returns a pointer. |
| (WebCore::displayMaskForDisplay): Ditto. |
| (WebCore::gpuIDForDisplay): Ditto. |
| (WebCore::screenProperties): Ditto. Also renamed from getScreenProperties to |
| adhere to WebKit coding style. |
| (WebCore::screenIsMonochrome): Ditto. |
| (WebCore::screenHasInvertedColors): Ditto. |
| (WebCore::screenDepth): Ditto. |
| (WebCore::screenDepthPerComponent): Ditto. |
| (WebCore::screenRectForDisplay): Ditto. |
| (WebCore::screenRect): Ditto. |
| (WebCore::screenAvailableRect): Ditto. |
| (WebCore::screenColorSpace): Ditto. |
| (WebCore::screenSupportsExtendedColor): Ditto. |
| (WebCore::screenSupportsHighDynamicRange): Ditto. |
| |
| * workers/service/context/ServiceWorkerThread.cpp: |
| (WebCore::ServiceWorkerThread::queueTaskToFireInstallEvent): |
| Removed capture of unused jobDataIdentifier. |
| |
| 2020-05-11 James Darpinian <jdarpinian@chromium.org> |
| |
| WebGLLayer clobbers TEXTURE_2D binding on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=211758 |
| |
| Reviewed by Dean Jackson. |
| |
| WebGLLayer was accidentally clobbering the TEXTURE_2D binding on iOS because IOSurfaces |
| are bound to TEXTURE_2D instead of TEXTURE_RECTANGLE. This fixes a bunch of iOS-specific |
| WebGL conformance failures including: |
| texture-bindings-unaffected-on-resize.html |
| default-texture.html |
| tex-image-and-sub-image-2d-with-canvas-rgb565.html and friends |
| |
| * platform/graphics/GraphicsContextGL.h: |
| * platform/graphics/cocoa/WebGLLayer.mm: |
| (-[WebGLLayer display]): |
| (-[WebGLLayer bindFramebufferToNextAvailableSurface]): |
| |
| 2020-05-11 Simon Fraser <simon.fraser@apple.com> |
| |
| [ macOS ] scrollingcoordinator/mac/latching/scrolling-select-should-not-latch-mainframe.html is a flaky failure |
| https://bugs.webkit.org/show_bug.cgi?id=211747 |
| |
| Reviewed by Tim Horton. |
| |
| Add an option to monitorWheelEvents to reset latching. |
| |
| * page/Page.cpp: |
| (WebCore::Page::startMonitoringWheelEvents): |
| * page/Page.h: |
| * page/scrolling/ScrollingCoordinator.h: |
| (WebCore::ScrollingCoordinator::startMonitoringWheelEvents): |
| * page/scrolling/mac/ScrollingCoordinatorMac.h: |
| * page/scrolling/mac/ScrollingCoordinatorMac.mm: |
| (WebCore::ScrollingCoordinatorMac::startMonitoringWheelEvents): |
| * testing/js/WebCoreTestSupport.cpp: |
| (WebCoreTestSupport::monitorWheelEvents): |
| * testing/js/WebCoreTestSupport.h: |
| |
| 2020-05-11 Andres Gonzalez <andresg_22@apple.com> |
| |
| Fixes for crashes in isolated tree mode. |
| https://bugs.webkit.org/show_bug.cgi?id=211740 |
| |
| Reviewed by Chris Fleizach. |
| |
| Fixes for several LayoutTests in isolated tree mode. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperBase.mm: |
| (-[WebAccessibilityObjectWrapperBase attachIsolatedObject:]): |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper characterOffsetForTextMarker:]): |
| (-[WebAccessibilityObjectWrapper textMarkerForVisiblePosition:]): |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): |
| (-[WebAccessibilityObjectWrapper accessibilitySetValue:forAttribute:]): |
| (-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]): |
| |
| 2020-05-11 Simon Fraser <simon.fraser@apple.com> |
| |
| Scrollbars flicker in RTL scrollable regions |
| https://bugs.webkit.org/show_bug.cgi?id=211757 |
| |
| Reviewed by Tim Horton. |
| |
| Scrollbars deal in scroll offsets (zero-based), not scroll positions (scroll-origin based) so |
| the scrolling thread needs to update scrollbar painters using offsets. |
| |
| Not testable because this is a transient state that gets fixed by the main thread. |
| |
| * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm: |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::updateScrollbarPainters): |
| |
| 2020-05-11 Ben Nham <nham@apple.com> |
| |
| Improve accuracy of IndexedDB estimated write size computation |
| https://bugs.webkit.org/show_bug.cgi?id=211360 |
| |
| Reviewed by Brady Eidson. |
| |
| We currently estimate the size of a put in IndexedDB for quota check purposes with something |
| like: |
| |
| estimatedWriteSize = (1 + numIndices) * (keySize + valueSize) |
| |
| However, this can lead to large overestimates of write sizes. This is because secondary |
| indices only store a mapping of secondary index key => primary key; they do not store the |
| entire value. In the example site attached to 202137 (another DB quota-related bug), the |
| the heuristic estimates that one of the put operations would use more than 800 MB when it |
| actually uses 220 MB. This inaccuracy leads to spurious disk quota permission modals being |
| presented in Safari. |
| |
| This patch improves the write size computation by generating the secondary index keys before |
| estimating the write size. The performance should be about the same since we save the |
| generated index keys for later usage when we actually add the record to the DB. |
| |
| * Headers.cmake: |
| * Modules/indexeddb/server/IDBBackingStore.h: |
| * Modules/indexeddb/server/MemoryIDBBackingStore.cpp: |
| (WebCore::IDBServer::MemoryIDBBackingStore::MemoryIDBBackingStore): |
| (WebCore::IDBServer::MemoryIDBBackingStore::addRecord): |
| (WebCore::IDBServer::MemoryIDBBackingStore::serializationContext): |
| * Modules/indexeddb/server/MemoryIDBBackingStore.h: |
| * Modules/indexeddb/server/MemoryObjectStore.cpp: |
| (WebCore::IDBServer::MemoryObjectStore::addRecord): |
| (WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord): |
| * Modules/indexeddb/server/MemoryObjectStore.h: |
| * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: |
| (WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::addRecord): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::serializationContext): |
| * Modules/indexeddb/server/SQLiteIDBBackingStore.h: |
| * Modules/indexeddb/server/UniqueIDBDatabase.cpp: |
| (WebCore::IDBServer::estimateSize): |
| (WebCore::IDBServer::UniqueIDBDatabase::putOrAdd): |
| * Modules/indexeddb/shared/IndexKey.h: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/IDBBindingUtilities.cpp: |
| (WebCore::generateIndexKeyMapForValue): |
| * bindings/js/IDBBindingUtilities.h: |
| |
| 2020-05-11 Kate Cheney <katherine_cheney@apple.com> |
| |
| Fail navigations to non app-bound domains after use of app-bound APIs |
| https://bugs.webkit.org/show_bug.cgi?id=211647 |
| <rdar://problem/62978159> |
| |
| Reviewed by Brent Fulgham. |
| |
| Simplified in-app browser privacy protections check into one, better |
| named function. |
| |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::executeScriptInWorld): |
| * loader/FrameLoaderClient.h: |
| * page/Frame.cpp: |
| (WebCore::Frame::injectUserScriptImmediately): |
| * page/Page.cpp: |
| (WebCore::Page::injectUserStyleSheet): |
| * page/WebKitNamespace.cpp: |
| (WebCore::WebKitNamespace::messageHandlers): |
| * style/StyleScopeRuleSets.cpp: |
| (WebCore::Style::ScopeRuleSets::initializeUserStyle): |
| Rearranged ordering so the message to WebPageProxy only gets sent to |
| indicate app-bound behavior if user style sheets actually exist. |
| |
| 2020-05-11 Peng Liu <peng.liu6@apple.com> |
| |
| Enable the mock video presentation mode in related layout tests and fix test failures |
| https://bugs.webkit.org/show_bug.cgi?id=211645 |
| |
| Reviewed by Eric Carlson. |
| |
| Revert the unnecessary change in r261493 to fix the build failures when |
| the Picture-in-Picture API is disabled. |
| |
| * html/HTMLVideoElement.cpp: |
| * html/HTMLVideoElement.h: |
| |
| 2020-05-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Remove some unnecessary indirection when getting Document’s Editor |
| https://bugs.webkit.org/show_bug.cgi?id=211744 |
| |
| Reviewed by Geoffrey Garen. |
| |
| After r261018, there's no longer a need to reach into Document's Frame to get the Editor instance, since |
| Document itself owns the Editor (and Frame's implementation of editor() just calls back into the document |
| anyways). No change in behavior. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (AXAttributeStringSetSpelling): |
| * dom/Document.cpp: |
| (WebCore::Document::setFocusedElement): |
| (WebCore::Document::registerAttachmentIdentifier): |
| (WebCore::Document::didInsertAttachmentElement): |
| (WebCore::Document::didRemoveAttachmentElement): |
| * testing/Internals.cpp: |
| (WebCore::Internals::markerCountForNode): |
| (WebCore::Internals::setMarkedTextMatchesAreHighlighted): |
| (WebCore::Internals::lastSpellCheckRequestSequence): |
| (WebCore::Internals::lastSpellCheckProcessedSequence): |
| (WebCore::Internals::hasSpellingMarker): |
| (WebCore::Internals::hasAutocorrectedMarker): |
| (WebCore::Internals::setContinuousSpellCheckingEnabled): |
| (WebCore::Internals::setAutomaticQuoteSubstitutionEnabled): |
| (WebCore::Internals::setAutomaticLinkDetectionEnabled): |
| (WebCore::Internals::setAutomaticDashSubstitutionEnabled): |
| (WebCore::Internals::setAutomaticTextReplacementEnabled): |
| (WebCore::Internals::setAutomaticSpellingCorrectionEnabled): |
| (WebCore::Internals::handleAcceptedCandidate): |
| (WebCore::Internals::isOverwriteModeEnabled): |
| (WebCore::Internals::toggleOverwriteModeEnabled): |
| (WebCore::Internals::rangeOfString): |
| (WebCore::Internals::countMatchesForText): |
| (WebCore::Internals::hasGrammarMarker): |
| |
| 2020-05-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: show JavaScript Worker name as an internal property |
| https://bugs.webkit.org/show_bug.cgi?id=211708 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Test: inspector/worker/worker-create-and-terminate.html |
| |
| * inspector/WebInjectedScriptHost.cpp: |
| (WebCore::WebInjectedScriptHost::getInternalProperties): |
| |
| * workers/Worker.h: |
| (WebCore::Worker::name const): Added. |
| |
| 2020-05-11 Simon Fraser <simon.fraser@apple.com> |
| |
| Have ScrollingThread use a RunLoop rather than rolling its own |
| https://bugs.webkit.org/show_bug.cgi?id=211730 |
| |
| Reviewed by Darin Adler. |
| |
| ScrollingThread rolled its own runloop/function dispatch by dropping to CF for macOS. |
| Fix to use RunLoop which provides the same functionality. |
| |
| There was also a race creating the ScrollingThread for the first time, since both |
| the main thread, and EventDispatcher can call ScrollingThread::dispatch() early on, |
| so fix with a std::once block. |
| |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * page/scrolling/ScrollingThread.cpp: |
| (WebCore::ScrollingThread::singleton): |
| (WebCore::ScrollingThread::dispatch): |
| (WebCore::ScrollingThread::createThreadIfNeeded): |
| (WebCore::ScrollingThread::initializeRunLoop): |
| (WebCore::ScrollingThread::dispatchFunctionsFromScrollingThread): Deleted. |
| (WebCore::ScrollingThread::wakeUpRunLoop): Deleted. |
| (WebCore::ScrollingThread::threadRunLoopSourceCallback): Deleted. |
| * page/scrolling/ScrollingThread.h: |
| (WebCore::ScrollingThread::runLoop): |
| * page/scrolling/mac/ScrollingThreadMac.mm: Removed. |
| |
| 2020-05-11 Peng Liu <peng.liu6@apple.com> |
| |
| Enable the mock video presentation mode in related layout tests and fix test failures |
| https://bugs.webkit.org/show_bug.cgi?id=211645 |
| |
| Reviewed by Darin Adler. |
| |
| Clean up the internal states of video element regarding video presentation mode |
| to simplify the task to write reliable layout tests for video fullscreen and |
| Picture-in-Picture. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::enterFullscreen): |
| Update the states after we are sure the video element will enter fullscreen. |
| |
| (WebCore::HTMLMediaElement::exitFullscreen): |
| Remove the unnecessary "fullscreenModeChanged(VideoFullscreenModeNone)". |
| |
| * html/HTMLMediaElement.h: |
| (WebCore::HTMLMediaElement::waitingToEnterFullscreen): |
| |
| * html/HTMLVideoElement.cpp: |
| (WebCore::HTMLVideoElement::webkitDisplayingFullscreen): |
| The function webkitDisplayingFullscreen() will return true after the process |
| to enter fullscreen is completed. |
| |
| * html/HTMLVideoElement.h: |
| Expose didBecomeFullscreenElement() when VIDEO_PRESENTATION_MODE is enabled. |
| |
| 2020-05-11 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Document.getAnimations() should only consider document connection and not timeline association |
| https://bugs.webkit.org/show_bug.cgi?id=211697 |
| |
| Reviewed by Dean Jackson. |
| |
| The Document.getAnimations() function should return any animation running for an element that is a child of the |
| target Document. We now consider all current animations, regardless of which timeline they might be associated |
| with. This lets us pass the final two WPT Document.getAnimations() tests. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::matchingAnimations): |
| |
| 2020-05-11 Andres Gonzalez <andresg_22@apple.com> |
| |
| Add implementation for AXIsolatedObject::elementPath, hasHighlighting, isBlockquote, isKeyboardFocusable. |
| https://bugs.webkit.org/show_bug.cgi?id=211732 |
| |
| Reviewed by Chris Fleizach. |
| |
| Covered by several tests. |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::isBlockquote const): Moved to base class. |
| * accessibility/AccessibilityObject.h: |
| * accessibility/AccessibilityObjectInterface.h: |
| (WebCore::AXCoreObject::isBlockquote const): |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::initializeAttributeData): Cache the above mentioned properties. |
| (WebCore::AXIsolatedObject::pathAttributeValue const): |
| (WebCore::AXIsolatedObject::isBlockquote const): Moved to base class. |
| (WebCore::AXIsolatedObject::isKeyboardFocusable const): Implemented inline in header. |
| (WebCore::AXIsolatedObject::hasHighlighting const): Implemented inline in header. |
| (WebCore::AXIsolatedObject::elementPath const): Implemented inline in header. |
| * accessibility/isolatedtree/AXIsolatedObject.h: |
| |
| 2020-05-11 Alex Christensen <achristensen@webkit.org> |
| |
| Fix assertion after r261414 |
| https://bugs.webkit.org/show_bug.cgi?id=211731 |
| |
| This fixes a debug assertion that fired 100% of the time when running the test introduced in r261414 |
| I also respond to Darin's and Youenn's post-commit feedback. |
| |
| * page/SecurityPolicy.cpp: |
| (WebCore::SecurityPolicy::generateReferrerHeader): |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::ResourceRequestBase::setHTTPReferrer): |
| |
| 2020-05-11 Andres Gonzalez <andresg_22@apple.com> |
| |
| Check the validity of the underlying Document before updating the isolated tree. |
| https://bugs.webkit.org/show_bug.cgi?id=211728 |
| |
| Reviewed by Chris Fleizach. |
| |
| Solves crashes in isolated tree mode for several LayoutTests. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::focusedUIElementForPage): Update the focused |
| document styles before returning the isolated tree focused object. |
| |
| (WebCore::AXObjectCache::notificationPostTimerFired): Ignored |
| notification if underlying Document doesn't have a living render tree. |
| |
| * accessibility/isolatedtree/AXIsolatedTree.cpp: |
| (WebCore::AXIsolatedTree::updateChildren): Don't update isolated object |
| if associated AXObject doesn't have a Document or the Document doesn't have a live render tree. |
| |
| 2020-05-11 Andres Gonzalez <andresg_22@apple.com> |
| |
| Add mechanism to turn on accessibility isolated tree mode from WebKitTestRunner. |
| https://bugs.webkit.org/show_bug.cgi?id=211725 |
| |
| Reviewed by Chris Fleizach. |
| |
| If the client is WebKitTestRunner, enable isolated tree mode. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::isIsolatedTreeEnabled): |
| |
| 2020-05-11 Per Arne Vollan <pvollan@apple.com> |
| |
| Unreviewed, reverting r261296. |
| |
| Rolling r260769 back in, since this was not causing a |
| regression. |
| |
| Reverted changeset: |
| |
| "Unreviewed, reverting r260769." |
| https://bugs.webkit.org/show_bug.cgi?id=211578 |
| https://trac.webkit.org/changeset/261296 |
| |
| 2020-05-11 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Introduce GridSpace |
| https://bugs.webkit.org/show_bug.cgi?id=211712 |
| |
| Reviewed by Antti Koivisto. |
| |
| Normally we use the initial width/height (minimum width/height) value to compute the |
| distribution ratio for the extra space (e.g minimum widths are [ 1 ] [ 2 ] extra space: 6; final widths [ 1 + 2 ] [ 2 + 4 ]). |
| However is some rare case, while we use the minimum widths as the initial widths, the distribution ratio |
| is computed using the maximum widths. |
| This patch introduces GridSpace to be able to differentiate initial and distribution widths/heights (no functional change yet). |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::GridSpace::isEmpty const): |
| (WebCore::Layout::max): |
| (WebCore::Layout::operator-): |
| (WebCore::Layout::operator+=): |
| (WebCore::Layout::operator-=): |
| (WebCore::Layout::operator/): |
| (WebCore::Layout::distributeAvailableSpace): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| |
| 2020-05-10 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Refactor animation comparison by composite order in a single utility function |
| https://bugs.webkit.org/show_bug.cgi?id=211695 |
| |
| Reviewed by Darin Adler. |
| |
| We used to split sorting of animations by composite order across several functions and files. Specifically, |
| DocumentTimeline::getAnimations() would first collect animations by class (CSS Transitions, then CSS |
| Animations, then JS-originated animations), and then sort each class, calling into the static function |
| compareDeclarativeAnimationOwningElementPositionsInDocumentTreeOrder() in some cases and into the |
| WebAnimationUtilities compareAnimationsByCompositeOrder() function in other. |
| |
| Since we need to be able to sort animations by composite order in other situations, for instance when sorting |
| events when updating animations and sending events (which we will do in a future patch), we refactor all |
| of the comparison logic into compareAnimationsByCompositeOrder(), removing the need to provide an AnimationList, |
| which is specific to the case where we know we are comparing CSSAnimation objects targeting a shared element. |
| |
| This effectively empties DocumentTimeline::getAnimations() so we remove this function and filter relevant |
| animations in Document::matchingAnimations() and call compareAnimationsByCompositeOrder() before returning |
| the compiled animations. |
| |
| No new tests since there is no change of behavior. |
| |
| * animation/DocumentTimeline.cpp: |
| (WebCore::compareDeclarativeAnimationOwningElementPositionsInDocumentTreeOrder): Deleted. |
| (WebCore::DocumentTimeline::getAnimations const): Deleted. |
| * animation/DocumentTimeline.h: |
| * animation/KeyframeEffectStack.cpp: |
| (WebCore::KeyframeEffectStack::ensureEffectsAreSorted): |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::commitStyles): |
| * animation/WebAnimationUtilities.cpp: |
| (WebCore::compareDeclarativeAnimationOwningElementPositionsInDocumentTreeOrder): |
| (WebCore::compareCSSTransitions): |
| (WebCore::compareCSSAnimations): |
| (WebCore::compareAnimationsByCompositeOrder): |
| * animation/WebAnimationUtilities.h: |
| * dom/Document.cpp: |
| (WebCore::Document::matchingAnimations): |
| |
| 2020-05-11 Charlie Turner <cturner@igalia.com> |
| |
| [WPE] Layout test media/encrypted-media/mock-MediaKeySystemAccess.html is crashing |
| https://bugs.webkit.org/show_bug.cgi?id=181225 |
| |
| Reviewed by Darin Adler. |
| |
| WebCore::CDM::createInstance assumes its private instance always |
| produces a valid pointer. This is not the case in the testing |
| mocks. Guard against it. |
| |
| Test: media/encrypted-media/mock-MediaKeySystemAccess.html |
| |
| * Modules/encryptedmedia/CDM.cpp: |
| (WebCore::CDM::createInstance): Guard against null pointers in |
| mock scenarios. |
| |
| 2020-05-10 Rob Buis <rbuis@igalia.com> |
| |
| Fix base64.any.html test |
| https://bugs.webkit.org/show_bug.cgi?id=211671 |
| |
| Reviewed by Darin Adler. |
| |
| Fix base64.any.html test by extending DataURLDecoder with a |
| forgiving-base64 decode mode [1], as used by the Fetch |
| data: URL processor algorithm [2]. |
| |
| Behavior matches Chrome and Firefox. |
| |
| [1] https://infra.spec.whatwg.org/#forgiving-base64-decode |
| [2] https://fetch.spec.whatwg.org/#data-url-processor |
| |
| Test: imported/w3c/web-platform-tests/fetch/data-urls/base64.any.html |
| |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::loadDataURL): |
| * platform/network/DataURLDecoder.cpp: |
| (WebCore::DataURLDecoder::decodeBase64): |
| (WebCore::DataURLDecoder::decode): |
| * platform/network/DataURLDecoder.h: |
| |
| 2020-05-10 Darin Adler <darin@apple.com> |
| |
| Add copy constructor and assignment operator to Ref<> |
| https://bugs.webkit.org/show_bug.cgi?id=211705 |
| |
| Reviewed by Sam Weinig. |
| |
| * dom/BoundaryPoint.h: As a test of the change to Ref, remove the explicit |
| copy and move constructors and assignment operators, relying on the defaults |
| instead, which are now exactly what we want. |
| |
| 2020-05-10 Michael Catanzaro <mcatanzaro@gnome.org> |
| |
| Update user agent quirk for bankofamerica.com |
| https://bugs.webkit.org/show_bug.cgi?id=211700 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| The Mac platform quirk isn't working anymore. The Chrome quirk works. |
| |
| * platform/UserAgentQuirks.cpp: |
| (WebCore::urlRequiresChromeBrowser): |
| (WebCore::urlRequiresMacintoshPlatform): |
| |
| 2020-05-10 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(CORE_VIDEO) |
| https://bugs.webkit.org/show_bug.cgi?id=211677 |
| |
| Reviewed by Dan Bernstein. |
| |
| * page/cocoa/MemoryReleaseCocoa.mm: |
| * platform/cocoa/CoreVideoSoftLink.cpp: Remove HAVE(CORE_VIDEO). |
| * platform/cocoa/CoreVideoSoftLink.h: Ditto. |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: Ditto. |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage): Ditto. |
| * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm: |
| (WebCore::MediaSampleAVFObjC::getRGBAImageData const): Ditto. |
| * platform/graphics/cv/PixelBufferConformerCV.cpp: Ditto. |
| * platform/graphics/cv/PixelBufferConformerCV.h: Ditto. |
| * platform/graphics/cv/TextureCacheCV.h: Ditto. |
| * platform/graphics/cv/TextureCacheCV.mm: Ditto. |
| * platform/graphics/cv/VideoTextureCopierCV.cpp: Ditto. |
| * platform/graphics/cv/VideoTextureCopierCV.h: Ditto. |
| |
| 2020-05-09 Darin Adler <darin@apple.com> |
| |
| Tighten up logic in DocumentTimelinesController::updateAnimationsAndSendEvents |
| https://bugs.webkit.org/show_bug.cgi?id=211668 |
| |
| Reviewed by Antoine Quint. |
| |
| * animation/DocumentTimelinesController.cpp: |
| (WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents): |
| Use Ref instead of RefPtr. Use Ref even in timelinesToUpdate; no harm in doing |
| a little bit of extra ref'ing. Use copyToVector when iterating relevantAnimations |
| since it could be a problem if the current animation was removed from the |
| ListHashSet while we are iterating it and there is no obvious reason that can't |
| happen. Use makeRef instead of makeRefPtr. Take advantage of the behavior of |
| the Optional operator<, which already treats nullopt as less than any non-nullopt |
| value, and remove unnecessary checks that weere doing the same thing explicitly. |
| This fixes a mistake where we were returning true when both are nullopt, which |
| could harm the stability of the sort, in theory. Add a null check of the timeline |
| when iterating completedTransitions, since there is no obvious guarantee they |
| could not have been removed as a side effect earlier. |
| |
| 2020-05-10 Darin Adler <darin@apple.com> |
| |
| Use makeReversedRange and get rid of one-off ReverseView |
| https://bugs.webkit.org/show_bug.cgi?id=211675 |
| |
| Reviewed by Sam Weinig. |
| |
| * editing/markup.cpp: |
| (WebCore::ReverseView): Deleted. |
| (WebCore::StyledMarkupAccumulator::takeResults): Use makeReversedRange. |
| |
| 2020-05-10 Tim Horton <timothy_horton@apple.com> |
| |
| Clicking a tel:// link on iPad with a trackpad presents different UI than tapping on it |
| https://bugs.webkit.org/show_bug.cgi?id=211686 |
| <rdar://problem/57941589> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * dom/MouseRelatedEvent.h: |
| * editing/cocoa/DataDetection.h: |
| * editing/cocoa/DataDetection.mm: |
| (WebCore::DataDetection::canPresentDataDetectorsUIForElement): |
| (WebCore::DataDetection::shouldCancelDefaultAction): Deleted. |
| Rename shouldCancelDefaultAction to canPresentDataDetectorsUIForElement. |
| This bit indicates whether a given element should invoke DD UI instead of |
| doing its default action, so either name is OK, but it feels better to |
| have it in the affirmative direction. |
| |
| * html/HTMLAnchorElement.cpp: |
| (WebCore::HTMLAnchorElement::handleClick): |
| Determine if tapping on an anchor should invoke DataDetectors UI instead |
| of performing the default action, and short-circuit if that is possible. |
| |
| * loader/EmptyClients.h: |
| * page/ChromeClient.h: |
| |
| 2020-05-09 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [macOS] Search field on mayoclinic.org/forms/us-resident-appointment clips the submit button |
| https://bugs.webkit.org/show_bug.cgi?id=211673 |
| <rdar://problem/62572501> |
| |
| Reviewed by Tim Horton. |
| |
| Allow search fields to be style-able, but only if the CSS `border` value is non-default. |
| |
| Note that there was a previous attempt to achieve something similar in r157443 by adding search fields to the |
| base class implementation of `RenderTheme::isControlStyled`; however, this patch wasn't actually accompanied by |
| support for rendering native search fields with a non-default background, which meant that customizing just the |
| background of a search field would cause the entire search field to opt out of the native search field |
| appearance (a pill with rounded corners on macOS). |
| |
| However, in the case where the border is customized on macOS, it is incorrect to use the default search field |
| appearance, since the search field cell just consists of a border; as such, there should be little compatibility |
| risk of a web page unexpectedly getting the fallback (non-native) appearance for a search field, due to having |
| custom border styles. |
| |
| This also makes the behavior of search fields match that of text fields, textareas, and list boxes (multi-option |
| selects) on macOS, in terms of what is needed in order to bail out of native appearance rendering. |
| |
| Rebaselined existing tests: fast/css/text-input-with-webkit-border-radius.html |
| fast/forms/search-styled.html |
| |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::isControlStyled const): Add SearchFieldPart. |
| |
| 2020-05-09 Jer Noble <jer.noble@apple.com> |
| |
| REGRESSION(r258493): CRASH running fast/mediastream/RTCPeerConnection tests |
| https://bugs.webkit.org/show_bug.cgi?id=211666 |
| <rdar://problem/63055644> |
| |
| Reviewed by Eric Carlson. |
| |
| MockMediaStreamTrack advertises that it's a webrtc::VideoTrackInterface, but doesn't inherit from |
| that interface, leading to a crash when its pointer is cast to webrtc::VideoTrackInterface and a |
| virtual method called on the resulting pointer. Since it's only used in one place, and since there's |
| an existing mock webrtc::VideoTrackInterface object in that same file, remove MockMediaStreamTrack |
| and replace the one place it's used with MockLibWebRTCVideoTrack. |
| |
| * testing/MockLibWebRTCPeerConnection.h: |
| (WebCore::MockMediaStreamTrack::state const): Deleted. |
| |
| 2020-05-09 David Kilzer <ddkilzer@apple.com> |
| |
| XML external entity resources should only be loaded from XML MIME types |
| <https://webkit.org/b/211488> |
| <rdar://problem/62869515> |
| |
| Reviewed by Darin Adler. |
| |
| Tests: dom/xhtml/level3/core/entitygetinputencoding03.xhtml |
| dom/xhtml/level3/core/entitygetinputencoding04.xhtml |
| dom/xhtml/level3/core/entitygetxmlencoding02.xhtml |
| dom/xhtml/level3/core/entitygetxmlencoding03.xhtml |
| dom/xhtml/level3/core/entitygetxmlencoding04.xhtml |
| dom/xhtml/level3/core/entitygetxmlversion03.xhtml |
| dom/xhtml/level3/core/entitygetxmlversion04.xhtml |
| dom/xhtml/level3/core/nodegetbaseuri16.xhtml |
| dom/xhtml/level3/core/nodegetbaseuri19.xhtml |
| dom/xhtml/level3/core/nodegetbaseuri20.xhtml |
| fast/parser/external-entities-in-xslt.xml |
| fast/xsl/dtd-in-source-document.xml |
| fast/xsl/xslt-second-level-import.xml |
| http/tests/security/contentTypeOptions/nosniff-xml-external-entity.xhtml |
| http/tests/security/xss-DENIED-xsl-external-entity-redirect.xml |
| |
| * html/HTMLBaseElement.cpp: |
| (WebCore::HTMLBaseElement::href const): |
| - Add comment about keeping code in sync with openFunc() in |
| XMLDocumentParserLibxml2.cpp. |
| * xml/XMLHttpRequest.cpp: |
| (WebCore::XMLHttpRequest::responseMIMEType const): |
| - Add comment about keeping code in sync with |
| externalEntityMimeTypeAllowed() in |
| XMLDocumentParserLibxml2.cpp. |
| * xml/parser/XMLDocumentParserLibxml2.cpp: |
| (WebCore::externalEntityMimeTypeAllowed): |
| - Rename from externalEntityMimeTypeAllowedByNosniff(). |
| - Change to only allow XML MIME types regardless of nosniff |
| option. |
| - Add fallback path to determine MIME type for file:/// URLs to |
| make layout tests work properly. Logic taken from |
| XMLHttpRequest::responseMIMEType(). Not sure if there was a |
| good place to share it. |
| (WebCore::openFunc): |
| - Fix relative URLs by providing the document's URL as a base. |
| Also provide an encoding if needed. Logic taken from |
| HTMLBaseElement::href(). (Not sure if there was a good place |
| to share it.) This was required to fix loading of external |
| entity resources in the dom/xhtml/level3/core tests, which |
| hadn't been loading these resources for a while. Ultimately |
| this didn't matter--except for new error messages being |
| printed in test results--because the tests fail due to missing |
| DOM features for XHTML documents). |
| - Change the fix for Bug 21963 into an empty URL check since |
| setting FetchOptions.mode to Mode::SameOrigin prevents a |
| redirect from loading a resource outside the document's |
| origin. The previous check worked, but the relaxed check in |
| externalEntityMimeTypeAllowed() caused the XML MIME type |
| warning to be output on redirects to non-same-origin URLs. I |
| didn't see a way to check for a cross-origin loading error. |
| - Add a console message for a cross-origin load failing. |
| - Update for function rename. |
| - Remove double negative from console message for an invalid |
| MIME type. |
| (WebCore::externalEntityMimeTypeAllowedByNosniff): |
| - Rename to externalEntityMimeTypeAllowed(). |
| |
| 2020-05-09 David Kilzer <ddkilzer@apple.com> |
| |
| Adapt LocalCurrentGraphicsContext for iOS |
| <https://webkit.org/b/211660> |
| |
| Reviewed by Darin Adler. |
| |
| * PlatformMac.cmake: |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| - Update build files for: |
| - Rename of LocalCurrentGraphicsContext.mm to |
| LocalCurrentGraphicsContextMac.mm. |
| - Move of LocalCurrentGraphicsContext.h from platform/mac to |
| platform/cocoa. |
| - Addition of LocalCurrentGraphicsContextIOS.mm. |
| |
| * platform/cocoa/LocalCurrentGraphicsContext.h: Renamed from Source/WebCore/platform/mac/LocalCurrentGraphicsContext.h. |
| - Make this work for iOS by using PLATFORM(COCOA) for the outer |
| guard and USE(APPKIT) for the Mac-specific bits. |
| - Use RetainPtr<> for NSGraphicsContext to clean up code in |
| LocalCurrentGraphicsContextMac.mm. |
| (WebCore::LocalCurrentGraphicsContext::cgContext): |
| - Inline from LocalCurrentGraphicsContextMac.mm. |
| |
| * platform/ios/LocalCurrentGraphicsContextIOS.mm: Copied from Source/WebCore/platform/mac/LocalCurrentGraphicsContext.mm. |
| (WebCore::LocalCurrentGraphicsContext::LocalCurrentGraphicsContext): |
| (WebCore::LocalCurrentGraphicsContext::~LocalCurrentGraphicsContext): |
| - Implement based on LocalCurrentGraphicsContextMac.mm. Use |
| UIGraphics{GetCurrent,Pop,Push}Context() functions added to |
| UIKitSoftLink.h. |
| |
| * platform/mac/LocalCurrentGraphicsContextMac.mm: Renamed from Source/WebCore/platform/mac/LocalCurrentGraphicsContext.mm. |
| (WebCore::LocalCurrentGraphicsContext::LocalCurrentGraphicsContext): |
| - Use m_savedGraphicsContext instead of graphicsContext in the |
| body of the constructor. |
| - Remove set-to-nil/retain of m_savedNSGraphicsContext since |
| that is handled by RetainPtr<> now. |
| (WebCore::LocalCurrentGraphicsContext::~LocalCurrentGraphicsContext): |
| - Remove release of m_savedNSGraphicsContext since that is |
| handled by RetainPtr<> now. |
| (WebCore::LocalCurrentGraphicsContext::cgContext): Delete. |
| - Inline into header to share implementation with iOS. |
| |
| 2020-05-09 Darin Adler <darin@apple.com> |
| |
| Fix null-dereference in DocumentTimelinesController::updateAnimationsAndSendEvents |
| https://bugs.webkit.org/show_bug.cgi?id=211667 |
| |
| Reviewed by Antoine Quint. |
| |
| * animation/DocumentTimelinesController.cpp: |
| (WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents): Add null |
| check before removing animationsToRemove, which may already have been removed |
| since any arbitrary change could occur while animations are firing. |
| |
| 2020-05-09 Darin Adler <darin@apple.com> |
| |
| Add missing null-check of page in ResourceLoader::loadDataURL |
| https://bugs.webkit.org/show_bug.cgi?id=211589 |
| rdar://57213601 |
| |
| Reviewed by Anders Carlsson. |
| |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::loadDataURL): Add null check before using page. |
| |
| 2020-05-08 Darin Adler <darin@apple.com> |
| |
| Streamline MarkupAccumulator to improve efficiency a bit |
| https://bugs.webkit.org/show_bug.cgi?id=211656 |
| |
| Reviewed by Anders Carlsson. |
| |
| * editing/MarkupAccumulator.cpp: |
| (WebCore::MarkupAccumulator::appendCharactersReplacingEntities): Corrected early |
| exit so it returns any time the length is 0. For some reason the code before |
| wouldn't do the early return when offset is non-zero, which is unnecessary. |
| (WebCore::MarkupAccumulator::appendString): Deleted. |
| (WebCore::MarkupAccumulator::appendStringView): Deleted. |
| (WebCore::MarkupAccumulator::appendEndTag): Use variadic append to cut down |
| on memory allocations. |
| (WebCore::MarkupAccumulator::totalLength): Deleted. |
| (WebCore::MarkupAccumulator::concatenateMarkup): Deleted. |
| (WebCore::MarkupAccumulator::takeMarkup): Added. |
| (WebCore::MarkupAccumulator::appendQuotedURLAttributeValue): Use variadic |
| append to cut down on memory allocations. Also use char instead of UChar so |
| the string building code doesn't have to do an 8/16 bit check. |
| (WebCore::shouldAddNamespaceElement): Prepend a literal, don't bother to |
| make a String just to append to another String. Also made this a |
| non-member function. |
| (WebCore::shouldAddNamespaceAttribute): Made this a non-member function. |
| (WebCore::MarkupAccumulator::appendNamespace): Fix hash table usage |
| to use add instead of get followed by set to avoid double hashing. |
| Use variadic append to cut down on memory allocation. |
| (WebCore::MarkupAccumulator::appendText): Tweaked style to make this a |
| one-line function. |
| (WebCore::appendComment): Deleted. |
| (WebCore::appendXMLDeclaration): Made this a non-member function. |
| Use variadic append to cut down on memory allocation. |
| (WebCore::appendDocumentType): Made this a non-member function. |
| Use variadic append to cut down on memory allocation. |
| (WebCore::MarkupAccumulator::appendCDATASection): Deleted. |
| (WebCore::MarkupAccumulator::appendNonElementNode): Moved the bodies of |
| appendComment, appendProcessingInstruction, and appendCDATASection in |
| here since they can all be one-line variadic append calls. |
| |
| * editing/MarkupAccumulator.h: |
| (WebCore::MarkupAccumulator::length const): Changed the return type |
| of length to be unsigned since that's what StringBuilder returns. |
| Made isAllASCII call StringBuilder::isAllASCII. Replaced appendString |
| and appendStringView with variadic append. Removed many functions |
| that no longer need to be member functions. Made appendAttributeValue |
| a static member function. Made appendNamespace private. Made |
| m_serializationSyntax const. |
| |
| * editing/markup.cpp: |
| (WebCore::StyledMarkupAccumulator::wrapWithStyleNode): Use append |
| instead of appenString. |
| (WebCore::StyledMarkupAccumulator::isAllASCII const): Added. Before |
| the code would only check the StringBuilder, but we also need to |
| check m_reversedPrecedingMarkup. |
| (WebCore::StyledMarkupAccumulator::takeResults): Use CheckedUint32 |
| since StringBuilder's reserveCapacity function takes unsigned, not |
| size_t. The old code, using totalLength, would just pass a size_t |
| and let it get chopped off, which didn't do any harm, but it seems |
| strange to compute a 64-bit value just to chop off the lower 32 |
| bits. An alternative is to compute the 32-bit value and just let |
| it overflow. Use a modern for loop by defining a ReverseView |
| template rather than writing a confusing backwards loop. Use the |
| new takeMarkup instead of concatenateMarkup. |
| (WebCore::StyledMarkupAccumulator::appendText): Tweak coding |
| style a little bit. |
| (WebCore::StyledMarkupAccumulator::appendStartTag): Ditto. |
| (WebCore::StyledMarkupAccumulator::appendNodeToPreserveMSOList): |
| Use variadic append to cut down on memory allocations. |
| (WebCore::propertyMissingOrEqualToNone): Tweak coding style a bit. |
| (WebCore::serializePreservingVisualAppearanceInternal): Use |
| append instead of appendString. |
| (WebCore::shouldPreserveMSOLists): Take a StringView instead of a |
| String to eliminate unnecessary memory allocation in call to substring. |
| (WebCore::sanitizedMarkupForFragmentInDocument): Use makeString |
| instead of StringBuilder to cut down on memory allocation. |
| |
| * html/HTMLFormElement.cpp: |
| (WebCore::HTMLFormElement::resetDefaultButton): Fix spelling error |
| in the word "explicitly". |
| * mathml/MathMLOperatorDictionary.cpp: |
| (WebCore::MathMLOperatorDictionary::search): Ditto. |
| |
| * page/PageSerializer.cpp: |
| (WebCore::PageSerializer::SerializerMarkupAccumulator::SerializerMarkupAccumulator): |
| Use variadic append instead of appendString to cut down on |
| memory allocations. |
| |
| * rendering/svg/SVGInlineTextBox.cpp: |
| (WebCore::SVGInlineTextBox::paint): Fix spelling error in the word |
| "explicitly". |
| |
| 2020-05-09 Jack Lee <shihchieh_lee@apple.com> |
| |
| Nullptr crash in LegacyWebArchive::createPropertyListRepresentation when copying selected range that contains surrogate characters |
| https://bugs.webkit.org/show_bug.cgi?id=211658 |
| <rdar://problem/62844424> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Added check for null LegacyWebArchive in LegacyWebArchive::createFromSelection. Return nullptr when creation fails. |
| |
| Test: webarchive/copy-surrogate-char-crash.html |
| |
| * loader/archive/cf/LegacyWebArchive.cpp: |
| (WebCore::LegacyWebArchive::createFromSelection): |
| |
| 2020-05-09 Tetsuharu Ohzeki <tetsuharu.ohzeki@gmail.com> |
| |
| Fix wpt shadow-dom/slots-fallback-in-document.html |
| https://bugs.webkit.org/show_bug.cgi?id=211640 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| By specs, HTMLSlotElement.assignedNodes() should not count children of |
| a slot in a document tree for flattened assigned nodes. |
| |
| https://html.spec.whatwg.org/multipage/scripting.html#dom-slot-assignednodes |
| https://dom.spec.whatwg.org/#find-flattened-slotables |
| |
| As sideeffect, this patch also fix wpt |
| shadow-dom/slots-outside-shadow-dom-expected.html |
| |
| Test: web-platform-tests/shadow-dom/slots-fallback-in-document.html |
| web-platform-tests/shadow-dom/slots-outside-shadow-dom.html |
| |
| * html/HTMLSlotElement.cpp: |
| (WebCore::flattenAssignedNodes): |
| |
| 2020-05-08 Basuke Suzuki <basuke.suzuki@sony.com> |
| |
| Fix build error on PlatStation port after r261132 |
| https://bugs.webkit.org/show_bug.cgi?id=211659 |
| |
| Unreviewed build fix after r261132. |
| |
| * page/scrolling/ScrollingTreeGestureState.cpp: |
| |
| 2020-05-08 David Kilzer <ddkilzer@apple.com> |
| |
| Remove empty directories from from svn.webkit.org repository |
| <https://webkit.org/b/211644> |
| |
| Reviewed by Darin Adler. |
| |
| * Modules/webgpu/cocoa: Removed. |
| * page/scrolling/ios: Removed. |
| * platform/graphics/metal: Removed. |
| |
| 2020-05-08 Simon Fraser <simon.fraser@apple.com> |
| |
| Async overflow scroll: sometimes a <select> becomes non-scrollable |
| https://bugs.webkit.org/show_bug.cgi?id=211433 |
| <rdar://problem/62338474> |
| |
| Reviewed by Dean Jackson. |
| |
| Scrollable <select>s (RenderListBox) contribute to the non-fast scrollable region, so |
| wheel events inside them are propagated to the main thread. If the select is scrolled |
| to the end, the event will propagate to the enclosing scroller, then then FrameView::wheelEvent() |
| may send it back to the scrolling thread. If the scrolling thread is processing such an event |
| after the main thread, it should not perform any latching on the main thread. |
| |
| Test: scrollingcoordinator/mac/latching/scrolling-select-should-not-latch-mainframe.html |
| |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::shouldHandleWheelEventSynchronously): |
| (WebCore::ScrollingTree::handleWheelEvent): |
| * page/scrolling/ScrollingTree.h: |
| * page/scrolling/ScrollingTreeLatchingController.cpp: |
| (WebCore::ScrollingTreeLatchingController::receivedWheelEvent): |
| (WebCore::ScrollingTreeLatchingController::latchedNodeForEvent const): |
| (WebCore::ScrollingTreeLatchingController::nodeDidHandleEvent): |
| (WebCore::ScrollingTreeLatchingController::clearLatchedNode): |
| * page/scrolling/ScrollingTreeLatchingController.h: |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::handleWheelEventAfterMainThread): |
| * page/scrolling/ThreadedScrollingTree.h: |
| * page/scrolling/mac/ScrollingCoordinatorMac.mm: |
| (WebCore::ScrollingCoordinatorMac::handleWheelEvent): |
| * platform/PlatformWheelEvent.cpp: |
| (WebCore::operator<<): |
| |
| 2020-05-08 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(AVFOUNDATION_LOADER_DELEGATE) |
| https://bugs.webkit.org/show_bug.cgi?id=211646 |
| |
| Reviewed by Eric Carlson. |
| |
| * loader/MediaResourceLoader.cpp: |
| (WebCore::MediaResourceLoader::requestResource): Remove check of |
| HAVE(AVFOUNDATION_LOADER_DELEGATE) in a place where it also checks PLATFORM(MAC). |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| Remove HAVE(AVFOUNDATION_LOADER_DELEGATE) in Cocoa-only code. |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: Ditto. |
| (WebCore::globalLoaderDelegateQueue): Ditto. |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): Ditto. |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::~MediaPlayerPrivateAVFoundationObjC): Ditto. |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL): Ditto. |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::didStopLoadingRequest): Ditto. |
| * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.h: Ditto. |
| * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm: Ditto. |
| |
| 2020-05-08 Tomoki Imai <Tomoki.Imai@sony.com> |
| |
| TextureMapper should skip clipping a content layer if it's not needed |
| https://bugs.webkit.org/show_bug.cgi?id=210787 |
| |
| Reviewed by Don Olmstead. |
| |
| This patch follows up r260174. |
| We don't need to clip a content layer if the clipping rect contains the content rect. |
| This patch doesn't change the behavior but saves stencil indices. |
| |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::paintSelf): |
| |
| 2020-05-08 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| [iOS] Text-style fonts aren't locale-specific |
| https://bugs.webkit.org/show_bug.cgi?id=211438 |
| <rdar://problem/51654163> |
| |
| Reviewed by Sam Weinig. |
| |
| Simply hook up the locale to the Core Text function. |
| |
| It turns out that this patch actually has no behavior change, |
| because this locale is only used for font fallback, but WebKit |
| does its own font fallback and we already pass the locale into |
| CTFontCopyDefaultCascadeListForLanguages(). However, for |
| symmetry with CTFontCreateUIFontWithLanguage() it's a good idea |
| to just supply it anyway. Just in case. |
| |
| Test: platform/ios/fast/text/lang-text-style.html |
| |
| * platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp: |
| (WebCore::SystemFontDatabaseCoreText::createTextStyleFont): |
| |
| 2020-05-08 Kenneth Russell <kbr@chromium.org> |
| |
| [WebGL2] Complete new texture upload entry points in WebGL2RenderingContext |
| https://bugs.webkit.org/show_bug.cgi?id=208875 |
| |
| Reviewed by Dean Jackson. |
| |
| Implement the remaining texture upload entry points - mainly for |
| 3D textures - in WebGL2RenderingContext. Add support for uploading |
| from the pixel unpack buffer. |
| |
| Refactor the WebGL 2.0 binding points into WebGL2RenderingContext, |
| where they had previously been in the base class. Refactor |
| validation code to override the base class where necessary. |
| Refactor getParameter into WebGLRenderingContextBase and override |
| it in WebGL2RenderingContext, eliminating duplicate code and |
| fixing bugs. |
| |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::~WebGL2RenderingContext): |
| (WebCore::WebGL2RenderingContext::getInt64Parameter): |
| (WebCore::WebGL2RenderingContext::validateBufferTarget): |
| (WebCore::WebGL2RenderingContext::validateBufferTargetCompatibility): |
| (WebCore::WebGL2RenderingContext::validateBufferDataTarget): |
| (WebCore::WebGL2RenderingContext::validateAndCacheBufferBinding): |
| (WebCore::WebGL2RenderingContext::validateTexImageBinding): |
| (WebCore::WebGL2RenderingContext::validateTexture3DBinding): |
| (WebCore::WebGL2RenderingContext::copyBufferSubData): |
| (WebCore::WebGL2RenderingContext::bindFramebuffer): |
| (WebCore::WebGL2RenderingContext::deleteFramebuffer): |
| (WebCore::WebGL2RenderingContext::getTexParameter): |
| (WebCore::WebGL2RenderingContext::texStorage2D): |
| (WebCore::WebGL2RenderingContext::texStorage3D): |
| (WebCore::WebGL2RenderingContext::texImage2D): |
| (WebCore::WebGL2RenderingContext::texImage3D): |
| (WebCore::WebGL2RenderingContext::texSubImage2D): |
| (WebCore::WebGL2RenderingContext::texSubImage3D): |
| (WebCore::WebGL2RenderingContext::bindBufferBase): |
| (WebCore::WebGL2RenderingContext::getFramebufferAttachmentParameter): |
| (WebCore::WebGL2RenderingContext::validateFramebufferTarget): |
| (WebCore::WebGL2RenderingContext::getFramebufferBinding): |
| (WebCore::WebGL2RenderingContext::getReadFramebufferBinding): |
| (WebCore::WebGL2RenderingContext::restoreCurrentFramebuffer): |
| (WebCore::WebGL2RenderingContext::getParameter): |
| (WebCore::WebGL2RenderingContext::uncacheDeletedBuffer): |
| (WebCore::WebGL2RenderingContext::validateFramebufferFuncParameters): Deleted. |
| * html/canvas/WebGL2RenderingContext.h: |
| * html/canvas/WebGLBuffer.cpp: |
| (WebCore::WebGLBuffer::setTarget): |
| * html/canvas/WebGLBuffer.h: |
| * html/canvas/WebGLFramebuffer.cpp: |
| (WebCore::WebGLFramebuffer::setAttachmentForBoundFramebuffer): |
| (WebCore::WebGLFramebuffer::attach): |
| (WebCore::WebGLFramebuffer::removeAttachmentFromBoundFramebuffer): |
| (WebCore::WebGLFramebuffer::isBound const): |
| * html/canvas/WebGLFramebuffer.h: |
| * html/canvas/WebGLRenderingContext.cpp: |
| (WebCore::WebGLRenderingContext::validateFramebufferFuncParameters): Deleted. |
| (WebCore::WebGLRenderingContext::getParameter): Deleted. |
| * html/canvas/WebGLRenderingContext.h: |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::initializeNewContext): |
| (WebCore::WebGLRenderingContextBase::~WebGLRenderingContextBase): |
| (WebCore::WebGLRenderingContextBase::validateBufferTarget): |
| (WebCore::WebGLRenderingContextBase::validateBufferDataTarget): |
| (WebCore::WebGLRenderingContextBase::validateAndCacheBufferBinding): |
| (WebCore::WebGLRenderingContextBase::bindBuffer): |
| (WebCore::WebGLRenderingContextBase::bindFramebuffer): |
| (WebCore::WebGLRenderingContextBase::bindTexture): |
| (WebCore::WebGLRenderingContextBase::checkFramebufferStatus): |
| (WebCore::WebGLRenderingContextBase::uncacheDeletedBuffer): |
| (WebCore::WebGLRenderingContextBase::deleteFramebuffer): |
| (WebCore::WebGLRenderingContextBase::deleteRenderbuffer): |
| (WebCore::WebGLRenderingContextBase::deleteTexture): |
| (WebCore::WebGLRenderingContextBase::framebufferRenderbuffer): |
| (WebCore::WebGLRenderingContextBase::framebufferTexture2D): |
| (WebCore::WebGLRenderingContextBase::getParameter): |
| (WebCore::WebGLRenderingContextBase::readPixels): |
| (WebCore::WebGLRenderingContextBase::copyTexImage2D): |
| (WebCore::WebGLRenderingContextBase::texParameter): |
| (WebCore::WebGLRenderingContextBase::getBoundReadFramebufferColorFormat): |
| (WebCore::WebGLRenderingContextBase::getBoundReadFramebufferWidth): |
| (WebCore::WebGLRenderingContextBase::getBoundReadFramebufferHeight): |
| (WebCore::WebGLRenderingContextBase::validateFramebufferTarget): |
| (WebCore::WebGLRenderingContextBase::getFramebufferBinding): |
| (WebCore::WebGLRenderingContextBase::getReadFramebufferBinding): |
| (WebCore::WebGLRenderingContextBase::validateFramebufferFuncParameters): |
| (WebCore::WebGLRenderingContextBase::validateBufferDataParameters): |
| (WebCore::WebGLRenderingContextBase::setFramebuffer): |
| (WebCore::WebGLRenderingContextBase::restoreCurrentFramebuffer): |
| (WebCore::WebGLRenderingContextBase::getInt64Parameter): Deleted. |
| * html/canvas/WebGLRenderingContextBase.h: |
| |
| 2020-05-08 Nikos Mouchtaris <nmouchtaris@apple.com> |
| |
| Implement web-share v2 for files |
| https://bugs.webkit.org/show_bug.cgi?id=209265 |
| |
| Reviewed by Andy Estes. |
| |
| Modified existing tests for new behavior. |
| |
| Added support for handling of files in share/canShare, |
| and implemented asynchronous reading of data from blobs on |
| disk into memory. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * page/Navigator.cpp: |
| (WebCore::Navigator::canShare): |
| (WebCore::Navigator::share): |
| (WebCore::Navigator::finishedLoad): |
| * page/Navigator.h: |
| * page/ReadShareDataAsync.cpp: Added. |
| (WebCore::ReadShareDataAsync::readInternal): |
| (WebCore::ReadShareDataAsync::ReadShareDataAsync): |
| (WebCore::ReadShareDataAsync::~ReadShareDataAsync): |
| (WebCore::ReadShareDataAsync::start): |
| (WebCore::ReadShareDataAsync::didFinishLoading): |
| (WebCore::ReadShareDataAsync::didReceiveData): |
| (WebCore::ReadShareDataAsync::didStartLoading): |
| (WebCore::ReadShareDataAsync::didFail): |
| * page/ReadShareDataAsync.hpp: Added. |
| * page/ShareData.h: |
| |
| 2020-05-08 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, reverting r261341 and r261392. |
| |
| Caused multiple regression test failures |
| |
| Reverted changesets: |
| |
| "Poster set after playback begins should be ignored" |
| https://bugs.webkit.org/show_bug.cgi?id=211464 |
| https://trac.webkit.org/changeset/261341 |
| |
| "REGRESSION(r261341): imported/w3c/web-platform- |
| tests/html/semantics/embedded-content/the-video- |
| element/intrinsic_sizes.htm is failing" |
| https://bugs.webkit.org/show_bug.cgi?id=211612 |
| https://trac.webkit.org/changeset/261392 |
| |
| 2020-05-08 Alex Christensen <achristensen@webkit.org> |
| |
| Limit HTTP referer to 4kb |
| https://bugs.webkit.org/show_bug.cgi?id=211603 |
| <rdar://problem/56768823> |
| |
| Reviewed by Chris Dumez. |
| |
| Use the origin if it's longer, unless the origin is too long. |
| This matches the behavior of other browsers. |
| See https://bugzilla.mozilla.org/show_bug.cgi?id=1557346 |
| |
| Tested by API tests. |
| |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::ResourceRequestBase::setHTTPReferrer): |
| |
| 2020-05-08 Pinki Gyanchandani <pgyanchandani@apple.com> |
| |
| SIGILL @ WebCore::Shape::createRasterShape -- DOS ASAN |
| https://bugs.webkit.org/show_bug.cgi?id=211539 |
| |
| Reviewed by Simon Fraser. |
| |
| Corrected the comment. |
| |
| No new test needed. |
| |
| * rendering/shapes/Shape.cpp: |
| (WebCore::Shape::createRasterShape): |
| |
| 2020-05-08 Rob Buis <rbuis@igalia.com> |
| |
| Fix urlsearchparams-delete.html |
| https://bugs.webkit.org/show_bug.cgi?id=211456 |
| |
| Reviewed by Daniel Bates. |
| |
| Step 2 of URLSearchParams.delete algorithm [1] indicates |
| we should run the update steps, even if no name-value |
| pairs were removed. |
| |
| Behavior matches Chrome and Firefox. |
| |
| [1] https://url.spec.whatwg.org/#dom-urlsearchparams-delete |
| |
| Test: web-platform-tests/url/urlsearchparams-delete.html |
| |
| * html/URLSearchParams.cpp: |
| (WebCore::URLSearchParams::remove): |
| |
| 2020-05-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] caret appears in the middle of a search field when field is focused on agoda.com |
| https://bugs.webkit.org/show_bug.cgi?id=211591 |
| <rdar://problem/60605873> |
| |
| Reviewed by Antoine Quint. |
| |
| See WebKit/ChangeLog for more details. |
| |
| Test: editing/selection/ios/caret-rect-after-animating-focused-text-field.html |
| |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::finishNotificationSteps): |
| |
| Add plumbing to call out to the WebKit client layer after an animation finishes running. |
| |
| * dom/Node.h: |
| * editing/VisibleSelection.h: |
| |
| WEBCORE_EXPORT a couple of methods. |
| |
| * page/ChromeClient.h: |
| (WebCore::ChromeClient::animationDidFinishForElement): |
| |
| 2020-05-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Preserve character set information when writing to the pasteboard when copying rich text |
| https://bugs.webkit.org/show_bug.cgi?id=211524 |
| |
| Reviewed by Darin Adler. |
| |
| This patch is a followup to r261247, which introduced a workaround for Cocoa platforms to automatically add a |
| `meta charset` when writing HTML data to the platform pasteboard. When copying a rich text selection, we use a |
| different codepath when sanitizing DOM content - that is, `serializePreservingVisualAppearance`. |
| |
| The previous change also introduced an enum, `AddMetaCharsetIfNeeded`, to limit applying this workaround to only |
| when we're writing HTML to the clipboard. However, it should be harmless to include this when reading sanitized |
| HTML as well, so we can also simplify this code by removing the `AddMetaCharsetIfNeeded` enum (and all of its |
| uses). |
| |
| Test: CopyHTML.SanitizationPreservesCharacterSetInSelectedText |
| |
| * Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp: |
| (WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::sanitizeDataIfNeeded): |
| * dom/DataTransfer.cpp: |
| (WebCore::DataTransfer::setDataFromItemList): |
| * editing/MarkupAccumulator.h: |
| (WebCore::MarkupAccumulator::isAllASCII const): |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::sanitizeMarkupWithArchive): |
| (WebCore::WebContentReader::readHTML): |
| (WebCore::WebContentMarkupReader::readHTML): |
| * editing/markup.cpp: |
| (WebCore::sanitizeMarkup): |
| (WebCore::serializePreservingVisualAppearanceInternal): |
| |
| Move the `meta charset` workaround from sanitizedMarkupForFragmentInDocument to |
| serializePreservingVisualAppearanceInternal, such that HTML data written to the pasteboard when copying rich |
| text can be used to load a web view, without losing the fact that the copied content was UTF-8 encoded. |
| |
| (WebCore::sanitizedMarkupForFragmentInDocument): |
| * editing/markup.h: |
| |
| 2020-05-08 Andres Gonzalez <andresg_22@apple.com> |
| |
| Fix for crashes in LayoutTests in isolated tree mode. |
| https://bugs.webkit.org/show_bug.cgi?id=211622 |
| |
| Reviewed by Chris Fleizach. |
| |
| Several LayoutTests. |
| |
| Return the root from the isolated tree when it is really ready. |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::rootObject): |
| |
| Some code cleanup. |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::clickPoint): |
| |
| 2020-05-08 Simon Fraser <simon.fraser@apple.com> |
| |
| Overflow scrollers in iframes don't get mouseMovedInContentArea() |
| https://bugs.webkit.org/show_bug.cgi?id=211347 |
| <rdar://problem/62784560> |
| |
| Reviewed by Tim Horton. |
| |
| We never dispatched mouseMovedInContentArea() on ScrollableAreas in subframes, so overlay scrollbar |
| interactions there were broken. This is because the code ran from EventHandler::mouseMoved(), which |
| only runs for the main frame. |
| |
| Instead, move the mouseMovedInContentArea() dispatch down into updateMouseEventTargetNode() which |
| is run for each subframe. notifyScrollableAreasOfMouseEvents() takes an event name so we only dispatch |
| for mouseMove events. There's some complexity here related to whether the old and new ScrollableArea |
| targets are nested; this code doesn't try to do the right thing with nesting, but does handle the mouse |
| moving between the scrollable main frame and an overflow region. |
| |
| enclosingScrollableArea() is fixed to return the FrameView. enclosingScrollableLayer() is flawed, as noted |
| in the RenderLayer.h comment. |
| |
| Tests: fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-hovered.html |
| fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-reveal.html |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::enclosingScrollableArea): |
| (WebCore::EventHandler::mouseMoved): |
| (WebCore::EventHandler::handleMouseMoveEvent): |
| (WebCore::EventHandler::pointerCaptureElementDidChange): |
| (WebCore::EventHandler::updateMouseEventTargetNode): |
| (WebCore::EventHandler::notifyScrollableAreasOfMouseEvents): |
| (WebCore::EventHandler::dispatchMouseEvent): |
| (WebCore::enclosingScrollableArea): Deleted. |
| (WebCore::EventHandler::notifyScrollableAreasOfMouseEnterExit): Deleted. |
| * page/EventHandler.h: |
| * page/ios/EventHandlerIOS.mm: |
| (WebCore::EventHandler::dispatchSyntheticMouseOut): |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::debugDescription const): |
| * rendering/RenderLayer.h: |
| |
| 2020-05-08 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] The fixed logical width should be used as the max width for a cell |
| https://bugs.webkit.org/show_bug.cgi?id=211610 |
| |
| Reviewed by Antti Koivisto. |
| |
| Test: fast/layoutformattingcontext/table-simple-with-fixed-widht-and-inline-content.html |
| |
| * layout/tableformatting/TableFormattingContextGeometry.cpp: |
| (WebCore::Layout::TableFormattingContext::Geometry::intrinsicWidthConstraintsForCell): |
| |
| 2020-05-08 Youenn Fablet <youenn@apple.com> |
| |
| Handle remote audio capture IPC messages in a background thread |
| https://bugs.webkit.org/show_bug.cgi?id=211583 |
| |
| Reviewed by Eric Carlson. |
| |
| * platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.cpp: |
| (WebCore::AudioMediaStreamTrackRendererCocoa::pushSamples): |
| Add assertion to check that we are not running on the main thread. |
| |
| 2020-05-08 Youenn Fablet <youenn@apple.com> |
| |
| Video capture does not get unmuted in case of tab switch on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=211509 |
| |
| Reviewed by Eric Carlson. |
| |
| Remove setInterrupted and related code. |
| Instead, directly use setMuted(true/false) of the source of capture tracks. |
| To ensure we validate that the active source is tied to a track of the document, |
| we add RealtimeSource::isSameAs which handles the case of a RealtimeVideoSource wrapping an AVVideoCaptureSource. |
| There might be multiple video tracks with each one its RealtimeVideoSource using the same AVVideoCaptureSource. |
| We mute the AVVideoCaptureSource directly to make sure all linked tracks will get muted/unmuted at the same time. |
| Tests to be fixed. |
| |
| * Modules/mediastream/MediaStreamTrack.cpp: |
| (WebCore::MediaStreamTrack::MediaStreamTrack): |
| (WebCore::isSourceCapturingForDocument): |
| (WebCore::MediaStreamTrack::updateCaptureAccordingToMutedState): |
| * Modules/mediastream/MediaStreamTrack.h: |
| * dom/Document.cpp: |
| (WebCore::Document::visibilityStateChanged): |
| * platform/mediastream/RealtimeMediaSource.cpp: |
| * platform/mediastream/RealtimeMediaSource.h: |
| * platform/mediastream/RealtimeMediaSourceCenter.cpp: |
| * platform/mediastream/RealtimeMediaSourceCenter.h: |
| * platform/mediastream/RealtimeMediaSourceFactory.h: |
| * platform/mediastream/RealtimeVideoSource.h: |
| * platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm: |
| * platform/mediastream/mac/CoreAudioCaptureSource.h: |
| * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp: |
| * platform/mock/MockRealtimeMediaSourceCenter.cpp: |
| |
| 2020-05-07 Simon Fraser <simon.fraser@apple.com> |
| |
| MayBegin wheel event in a <select> doesn't flash the scrollers |
| https://bugs.webkit.org/show_bug.cgi?id=211605 |
| |
| Reviewed by Antti Koivisto. |
| |
| We need to special-case scrollable <select> elements, because they are ScrollableAreas |
| which are never asynchronously scrolled, so the ScrollingTree never dispatches the handleWheelEventPhase() |
| which is necessary to flash overlay scrollbars. Scrollable <select> elements are always in the |
| non-fast scrollable region. |
| |
| Fix findEnclosingScrollableContainer() to return a ScrollableArea for the "maybegin" and "canceled" events |
| that have no delta. |
| |
| Remove some "inline" and make some things references. |
| |
| Tests: fast/scrolling/mac/scrollbars/select-overlay-scrollbar-hovered.html |
| fast/scrolling/mac/scrollbars/select-overlay-scrollbar-reveal.html |
| |
| * page/EventHandler.cpp: |
| (WebCore::handleWheelEventPhaseInScrollableArea): |
| (WebCore::didScrollInScrollableArea): |
| (WebCore::handleWheelEventInAppropriateEnclosingBox): |
| (WebCore::shouldGesturesTriggerActive): |
| (WebCore::EventHandler::eventLoopHandleMouseUp): |
| (WebCore::EventHandler::eventLoopHandleMouseDragged): |
| * page/mac/EventHandlerMac.mm: |
| (WebCore::findEnclosingScrollableContainer): |
| (WebCore::EventHandler::determineWheelEventTarget): |
| * testing/Internals.cpp: |
| (WebCore::Internals::scrollableAreaForNode): Fix to find the ScrollableArea for RenderListBoxes. |
| |
| 2020-05-07 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, reverting r261252. |
| |
| Reland r260684 now that a proper fix has landed in Reader |
| |
| Reverted changeset: |
| |
| "REGRESSION (r260684): Reader background is lost after |
| multitasking" |
| https://bugs.webkit.org/show_bug.cgi?id=211533 |
| https://trac.webkit.org/changeset/261252 |
| |
| 2020-05-07 Pinki Gyanchandani <pgyanchandani@apple.com> |
| |
| SIGILL @ WebCore::Shape::createRasterShape -- DOS ASAN |
| https://bugs.webkit.org/show_bug.cgi?id=211539 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Removed the RELEASE_ASSERT because its possible for imageData to be null when imageRect size is huge value. |
| |
| Test: fast/shapes/shape-outside-floats/shape-outside-imagedata-overflow.html |
| |
| * rendering/shapes/Shape.cpp: |
| (WebCore::Shape::createRasterShape): |
| |
| 2020-05-07 Youenn Fablet <youenn@apple.com> |
| |
| Remove AudioMediaStreamTrackRenderer::muted |
| https://bugs.webkit.org/show_bug.cgi?id=211289 |
| |
| Reviewed by Eric Carlson. |
| |
| * platform/mediastream/AudioMediaStreamTrackRenderer.h: |
| muted is unnecessary since we are using start/stop instead. |
| |
| 2020-05-07 Eric Carlson <eric.carlson@apple.com> |
| |
| [macOS] Playhead in Touch Bar continues when loading stalls |
| https://bugs.webkit.org/show_bug.cgi?id=211585 |
| <rdar://problem/33893306> |
| |
| Reviewed by Darin Adler. |
| |
| * platform/cocoa/PlaybackSessionModelMediaElement.h: |
| * platform/cocoa/PlaybackSessionModelMediaElement.mm: |
| (WebCore::PlaybackSessionModelMediaElement::updateForEventName): Listen for `waitingEvent` |
| and `canplay` events. Don't claim to be playing when stalled. |
| (WebCore::PlaybackSessionModelMediaElement::isStalled const): New. |
| |
| 2020-05-07 Eric Carlson <eric.carlson@apple.com> |
| |
| Poster set after playback begins should be ignored |
| https://bugs.webkit.org/show_bug.cgi?id=211464 |
| |
| Reviewed by Jer Noble. |
| |
| Redo the poster frame logic to use the `show poster flag` logic from the spec. |
| |
| Test: media/video-poster-set-after-playback.html |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_showPoster. |
| (WebCore::HTMLMediaElement::prepareForLoad): m_displayMode was removed. |
| (WebCore::HTMLMediaElement::selectMediaResource): Call setShowPosterFlag. |
| (WebCore::HTMLMediaElement::loadResource): Remove calls to setDisplayMode and updateDisplayState, |
| they have been deleted. |
| (WebCore::HTMLMediaElement::waitForSourceChange): Call setShowPosterFlag. Update spec text. |
| (WebCore::HTMLMediaElement::noneSupported): Call setShowPosterFlag. |
| (WebCore::HTMLMediaElement::mediaLoadingFailed): Remove call to updateDisplayState. |
| (WebCore::HTMLMediaElement::setReadyState): Ditto. |
| (WebCore::HTMLMediaElement::seekWithTolerance): Call setShowPosterFlag. |
| (WebCore::HTMLMediaElement::seekTask): Check m_showPoster, not displayMode. |
| (WebCore::HTMLMediaElement::playInternal): Call setShowPosterFlag. |
| (WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged): Don't check displayMode. |
| (WebCore::HTMLMediaElement::updatePlayState): No more setDisplayMode. |
| (WebCore::HTMLMediaElement::userCancelledLoad): Call setShowPosterFlag. |
| (WebCore::HTMLMediaElement::mediaPlayerFirstVideoFrameAvailable): Deleted. |
| * html/HTMLMediaElement.h: |
| (WebCore::HTMLMediaElement::showPosterFlag const): |
| (WebCore::HTMLMediaElement::setShowPosterFlag): |
| (WebCore::HTMLMediaElement::displayMode const): Deleted. |
| (WebCore::HTMLMediaElement::setDisplayMode): Deleted. |
| (WebCore::HTMLMediaElement::updateDisplayState): Deleted. |
| |
| * html/HTMLVideoElement.cpp: |
| (WebCore::HTMLVideoElement::didAttachRenderers): No more updateDisplayState. |
| (WebCore::HTMLVideoElement::parseAttribute): Ditto. Call updateFromElement when poster is removed. |
| (WebCore::HTMLVideoElement::shouldDisplayPosterImage const): New. |
| (WebCore::HTMLVideoElement::mediaPlayerFirstVideoFrameAvailable): New, update player and |
| renderer if the poster isn't supposed to be visible. |
| (WebCore::HTMLVideoElement::setDisplayMode): Deleted. |
| (WebCore::HTMLVideoElement::updateDisplayState): Deleted. |
| * html/HTMLVideoElement.h: |
| |
| * rendering/RenderVideo.cpp: |
| (WebCore::RenderVideo::failedToLoadPosterImage const): New. |
| * rendering/RenderVideo.h: |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::elementShouldDisplayPosterImage const): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-05-07 Jack Lee <shihchieh_lee@apple.com> |
| |
| In Document::willBeRemovedFromFrame, clear FrameSelection before Editor so the selection is removed. |
| https://bugs.webkit.org/show_bug.cgi?id=211551 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Covered by existing tests. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::willBeRemovedFromFrame): |
| |
| 2020-05-07 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events.html is a flaky failure |
| https://bugs.webkit.org/show_bug.cgi?id=211232 |
| <rdar://problem/62650227> |
| |
| Reviewed by Dean Jackson. |
| |
| The flakiness came from this porting of the test: |
| |
| animA.finished.then(() => { animB.cancel() }); |
| animB.finished.then(() => { animA.cancel() }); |
| |
| Sometimes, animA and animB would finish in different frames even though they were designed to finish at the |
| same time. If this happened, animA.finished would resolve and trigger animB.cancel, which then rejected |
| animB.finished. This happened because animB was attached to a DocumentTimeline created by script which isn't |
| the main DocumenTimeline accessed via document.timeline. Some curious code would handle syncing of the |
| various timelines such that they would use a shared timebase. This was in DocumentTimeline::currentTime(): |
| |
| auto& mainDocumentTimeline = m_document->timeline(); |
| if (&mainDocumentTimeline != this) { |
| if (auto mainDocumentTimelineCurrentTime = mainDocumentTimeline.currentTime()) |
| return *mainDocumentTimelineCurrentTime - m_originTime; |
| return WTF::nullopt; |
| } |
| |
| We now move the currentTime caching at the DocumentTimelinesController level which ensures all DocumentTimeline |
| objects attached to a given Document use the exact same currentTime(). This prompted some overdue refactoring |
| where also all the related animation suspension code is moved from DocumentTimeline up to DocumentTimelinesController. |
| |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::detachFromDocument): |
| (WebCore::DocumentTimeline::suspendAnimations): |
| (WebCore::DocumentTimeline::resumeAnimations): |
| (WebCore::DocumentTimeline::animationsAreSuspended const): |
| (WebCore::DocumentTimeline::currentTime): |
| (WebCore::DocumentTimeline::scheduleAnimationResolution): |
| (WebCore::DocumentTimeline::documentWillUpdateAnimationsAndSendEvents): |
| (WebCore::DocumentTimeline::animationsAreSuspended): Deleted. |
| (WebCore::DocumentTimeline::liveCurrentTime const): Deleted. |
| (WebCore::DocumentTimeline::cacheCurrentTime): Deleted. |
| (WebCore::DocumentTimeline::maybeClearCachedCurrentTime): Deleted. |
| * animation/DocumentTimeline.h: |
| * animation/DocumentTimelinesController.cpp: |
| (WebCore::DocumentTimelinesController::detachFromDocument): |
| (WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents): |
| (WebCore::DocumentTimelinesController::suspendAnimations): |
| (WebCore::DocumentTimelinesController::resumeAnimations): |
| (WebCore::DocumentTimelinesController::animationsAreSuspended const): |
| (WebCore::DocumentTimelinesController::liveCurrentTime const): |
| (WebCore::DocumentTimelinesController::currentTime): |
| (WebCore::DocumentTimelinesController::cacheCurrentTime): |
| (WebCore::DocumentTimelinesController::maybeClearCachedCurrentTime): |
| * animation/DocumentTimelinesController.h: |
| * dom/Document.cpp: |
| (WebCore::Document::didBecomeCurrentDocumentInFrame): |
| (WebCore::Document::resume): |
| * dom/Document.h: |
| * page/Frame.cpp: |
| (WebCore::Frame::clearTimers): |
| (WebCore::Frame::resumeActiveDOMObjectsAndAnimations): |
| * page/Page.cpp: |
| (WebCore::Page::setIsVisibleInternal): |
| (WebCore::Page::hiddenPageCSSAnimationSuspensionStateChanged): |
| * testing/Internals.cpp: |
| (WebCore::Internals::animationsAreSuspended const): |
| (WebCore::Internals::suspendAnimations const): |
| (WebCore::Internals::resumeAnimations const): |
| |
| 2020-05-07 Simon Fraser <simon.fraser@apple.com> |
| |
| REGRESSION (r252161): Animation of box-shadow with border-radius set is flashy |
| https://bugs.webkit.org/show_bug.cgi?id=211530 |
| <rdar://problem/62570229> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Drawing inset box shadows with spread was broken, and in some cases generated invalid |
| rounded rects, causing inset shadows with border-radius to lose the radius. |
| |
| First, with split inlines, the spread was not getting removed from the excluded edges. |
| Fix in the includeLogicalLeftEdge/includeLogicalRightEdge clauses, adding shiftXEdgeBy()/shiftYEdgeBy() helpers |
| to LayoutRect to simplify logic. |
| |
| Second, when computing the rounded hole rect, we'd use the result of style.getRoundedInnerBorderFor() |
| but that doesn't take shadow spread into account, so we'd build a rounded rect with a rect that |
| accounted for spread, but radii computed without. That could result in unrenderable rounded rects. |
| Fix by calling style.getRoundedInnerBorderFor() a second time if we have spread; this will fix |
| up the radii for spread. |
| |
| |
| Tests: fast/box-shadow/inset-box-shadow-fractional-radius.html |
| fast/box-shadow/inset-shadow-split-inline.html |
| fast/box-shadow/inset-spread-box-shadow-split-inline.html |
| |
| * platform/graphics/LayoutRect.h: |
| (WebCore::LayoutRect::shiftXEdgeBy): |
| (WebCore::LayoutRect::shiftYEdgeBy): |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::paintBoxShadow): |
| |
| 2020-05-07 Don Olmstead <don.olmstead@sony.com> |
| |
| Remove unused USE(REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR) |
| https://bugs.webkit.org/show_bug.cgi?id=211582 |
| |
| Reviewed by Fujii Hironori. |
| |
| After r261264 all ports implemented USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR. |
| |
| * page/ChromeClient.h: |
| (WebCore::ChromeClient::createDisplayRefreshMonitor const): |
| * page/Page.cpp: |
| (WebCore::Page::windowScreenDidChange): |
| * page/RenderingUpdateScheduler.cpp: |
| (WebCore::RenderingUpdateScheduler::RenderingUpdateScheduler): |
| (WebCore::RenderingUpdateScheduler::adjustRenderingUpdateFrequency): |
| (WebCore::RenderingUpdateScheduler::scheduleTimedRenderingUpdate): |
| (WebCore::RenderingUpdateScheduler::windowScreenDidChange): |
| * page/RenderingUpdateScheduler.h: |
| * platform/graphics/DisplayRefreshMonitor.cpp: |
| * platform/graphics/DisplayRefreshMonitor.h: |
| * platform/graphics/DisplayRefreshMonitorClient.cpp: |
| * platform/graphics/DisplayRefreshMonitorClient.h: |
| * platform/graphics/DisplayRefreshMonitorManager.cpp: |
| * platform/graphics/DisplayRefreshMonitorManager.h: |
| * platform/graphics/GraphicsLayerUpdater.cpp: |
| (WebCore::GraphicsLayerUpdater::GraphicsLayerUpdater): |
| (WebCore::GraphicsLayerUpdater::scheduleUpdate): |
| (WebCore::GraphicsLayerUpdater::screenDidChange): |
| (WebCore::GraphicsLayerUpdater::displayRefreshFired): |
| (WebCore::GraphicsLayerUpdater::createDisplayRefreshMonitor const): |
| * platform/graphics/GraphicsLayerUpdater.h: |
| * platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp: |
| * platform/graphics/gtk/DisplayRefreshMonitorGtk.h: |
| * platform/graphics/ios/DisplayRefreshMonitorIOS.h: |
| * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: |
| * platform/graphics/mac/DisplayRefreshMonitorMac.cpp: |
| * platform/graphics/mac/DisplayRefreshMonitorMac.h: |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::createDisplayRefreshMonitor const): |
| * rendering/RenderLayerCompositor.h: |
| |
| 2020-05-07 Antoine Quint <graouts@apple.com> |
| |
| Add watchOS media controls assets |
| https://bugs.webkit.org/show_bug.cgi?id=211508 |
| |
| Unreviewed. Cleaning up some stray logging. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2020-05-07 Darin Adler <darin@apple.com> |
| |
| Add some missing null checks for DocumentLoader |
| https://bugs.webkit.org/show_bug.cgi?id=211544 |
| rdar://62843516 |
| |
| Reviewed by Anders Carlsson. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::transitionToCommitted): Use some more RefPtr, |
| and check for null before calling DocumentLoader::responseMIMEType. |
| Also removed a comment that made no sense, and an assertion that was |
| there for no reason, left over from some point in history where it |
| made sense. |
| |
| * loader/HistoryController.cpp: |
| (WebCore::FrameLoader::HistoryController::updateForRedirectWithLockedBackForwardList): |
| Add checks for null before calling urlForHistory and isClientRedirect. |
| |
| 2020-05-07 Darin Adler <darin@apple.com> |
| |
| Remove USE(INSERTION_UNDO_GROUPING) checks in macOS platform code |
| https://bugs.webkit.org/show_bug.cgi?id=211525 |
| |
| Reviewed by Anders Carlsson. |
| |
| * editing/mac/TextUndoInsertionMarkupMac.h: Remove |
| NSTextInputContext_Private.h usage. Moving to NSTextInputContextSPI.h |
| instead. Also remove #pragma once since this is an Objective-C-only |
| header, not for cross-platform use. |
| |
| * editing/mac/TextUndoInsertionMarkupMac.mm: Above, plus move |
| NSUndoManager_Private.h to NSUndoManagerSPI.h. |
| |
| 2020-05-07 Sergio Villar Senin <svillar@igalia.com> |
| |
| [Conditional=] not working for operations in WebGLRenderingContextBase.idl |
| https://bugs.webkit.org/show_bug.cgi?id=211528 |
| |
| Reviewed by Chris Dumez. |
| |
| When an IDL interface under a given Condition defined an operation with |
| another Condition the generated source file should guard the operation |
| with both the Condition from the interface and the one from the |
| operation. This was working fine for sole interfaces but not for those |
| who were inheriting from a base one, i.e., it was not working for |
| supplemental interfaces. |
| |
| Added a new minimalistic binding test showcasing the problem. |
| |
| * bindings/scripts/CodeGenerator.pm: |
| (ProcessSupplementalDependencies): Add Conditionals from both interface and operation. |
| * bindings/scripts/test/JS/JSTestGlobalObject.cpp: |
| (WebCore::jsTestGlobalObjectTestOperationConditionalConstructorGetter): Updated result. |
| (WebCore::jsTestGlobalObjectTestOperationConditionalConstructor): Ditto. |
| (WebCore::setJSTestGlobalObjectTestOperationConditionalConstructorSetter): Ditto. |
| (WebCore::setJSTestGlobalObjectTestOperationConditionalConstructor): Ditto. |
| * bindings/scripts/test/JS/JSTestOperationBase.cpp: Added. |
| * bindings/scripts/test/JS/JSTestOperationBase.h: Added. |
| * bindings/scripts/test/JS/JSTestOperationConditional.cpp: Added. |
| * bindings/scripts/test/JS/JSTestOperationConditional.h: Added. |
| * bindings/scripts/test/TestOperationBase.idl: Added. |
| * bindings/scripts/test/TestOperationConditional.idl: Added. |
| |
| 2020-05-07 Antti Koivisto <antti@apple.com> |
| |
| [Wheel event region] Include listeners on Window |
| https://bugs.webkit.org/show_bug.cgi?id=211577 |
| |
| Reviewed by Simon Fraser. |
| |
| Test: fast/scrolling/mac/wheel-event-listener-region-window.html |
| |
| * dom/EventTarget.h: |
| * dom/Node.h: |
| * style/StyleAdjuster.cpp: |
| (WebCore::Style::Adjuster::computeEventListenerRegionTypes): |
| |
| Take EventTarget so this can be used with DOMWindow. |
| |
| * style/StyleAdjuster.h: |
| * style/StyleResolveForDocument.cpp: |
| (WebCore::Style::resolveForDocument): |
| |
| 2020-05-07 Simon Fraser <simon.fraser@apple.com> |
| |
| REGRESSION (r261056): [ Mac WK1 ] inspector/console/console-api.html is flaky crashing |
| https://bugs.webkit.org/show_bug.cgi?id=211386 |
| |
| Reviewed by Darin Adler. |
| |
| Address additional review feedback. |
| |
| * platform/mac/ScrollbarThemeMac.mm: |
| (WebCore::ScrollbarThemeMac::unregisterScrollbar): |
| |
| 2020-05-07 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC[TFC] Adjust the table wrapper box style |
| https://bugs.webkit.org/show_bug.cgi?id=211574 |
| |
| Reviewed by Antti Koivisto. |
| |
| The computed values of properties 'position', 'float', 'margin-*', 'top', 'right', 'bottom', and 'left' |
| on the table element are used on the table wrapper box and not the table box; all other values of non-inheritable |
| properties are used on the table box and not the table wrapper box. |
| |
| https://www.w3.org/TR/CSS22/tables.html#model |
| |
| Test: fast/layoutformattingcontext/table-simple-with-border.html |
| |
| * layout/layouttree/LayoutBox.cpp: |
| (WebCore::Layout::Box::isBlockContainerBox const): |
| * layout/layouttree/LayoutTreeBuilder.cpp: |
| (WebCore::Layout::TreeBuilder::createLayoutBox): |
| (WebCore::Layout::TreeBuilder::buildTableStructure): |
| |
| 2020-05-07 Andres Gonzalez <andresg_22@apple.com> |
| |
| Make debug build run in accessibility isolated tree mode = 1. |
| https://bugs.webkit.org/show_bug.cgi?id=211567 |
| |
| Reviewed by Chris Fleizach. |
| |
| - Removed several unnecessary ASSERTs that prevent debug builds to run |
| in isolated tree mode = 1, i.e., isolated tree mode on main thread. |
| - AXIsolatedObject::children and updateBackingStore need to be executed |
| on both threads. |
| |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::detachRemoteParts): |
| (WebCore::AXIsolatedObject::children): Need to update the children |
| regardless of the thread in which it is invoked. Pending, must add a |
| lock to prevent thread collision. |
| |
| (WebCore::AXIsolatedObject::updateBackingStore): Need to update the |
| backing store regardless of the thread in whhich it is invoked. |
| |
| * accessibility/isolatedtree/AXIsolatedTree.cpp: |
| (WebCore::AXIsolatedTree::generateSubtree): |
| (WebCore::AXIsolatedTree::setRootNodeID): |
| * accessibility/mac/WebAccessibilityObjectWrapperBase.mm: Enable |
| isolated tree mode = 1. |
| (-[WebAccessibilityObjectWrapperBase detach]): |
| (-[WebAccessibilityObjectWrapperBase axBackingObject]): |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: Use makeString |
| instead of String concatenation as pointed out by Darin Adler in bug 210914. |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): |
| (-[WebAccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]): |
| |
| 2020-05-07 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Set section [top, left] used position. |
| https://bugs.webkit.org/show_bug.cgi?id=211546 |
| |
| Reviewed by Antti Koivisto. |
| |
| Test: fast/layoutformattingcontext/table-simple-with-padding.html |
| |
| * layout/Verification.cpp: |
| (WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForSections): |
| * layout/tableformatting/TableFormattingContext.h: |
| |
| 2020-05-07 Antti Koivisto <antti@apple.com> |
| |
| [Wheel event region] Include listeners on Document |
| https://bugs.webkit.org/show_bug.cgi?id=211571 |
| |
| Reviewed by Simon Fraser. |
| |
| Test: fast/scrolling/mac/wheel-event-listener-region-document.html |
| |
| * style/StyleAdjuster.cpp: |
| (WebCore::Style::Adjuster::computeEventListenerRegionTypes): |
| (WebCore::Style::computeEventListenerRegionTypes): Deleted. |
| |
| Make public and take Node instead of Element. |
| |
| * style/StyleAdjuster.h: |
| * style/StyleResolveForDocument.cpp: |
| (WebCore::Style::resolveForDocument): |
| |
| Gather event region bits from Document too. |
| |
| 2020-05-07 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r260769. |
| https://bugs.webkit.org/show_bug.cgi?id=211578 |
| |
| Introduced regressions related to sharing (Requested by |
| perarne on #webkit). |
| |
| Reverted changeset: |
| |
| "[Cocoa] After r258891, r255119 can be reverted" |
| https://bugs.webkit.org/show_bug.cgi?id=211083 |
| https://trac.webkit.org/changeset/260769 |
| |
| 2020-05-07 Darin Adler <darin@apple.com> |
| |
| Fix assertions seen when trying to draw an absurdly large shadow |
| https://bugs.webkit.org/show_bug.cgi?id=211541 |
| rdar://62843377 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * platform/graphics/IntSize.h: |
| (WebCore::IntSize::unclampedArea const): Return uint64_t instead of |
| size_t. Two 32-bit positive integers multiplied fit in a 64-bit integer, |
| but there's no guarantee they fit in a "pointer sized" integer. |
| |
| * platform/graphics/ShadowBlur.cpp: |
| (WebCore::ShadowBlur::drawRectShadow): When comparing an IntSize area with |
| a FloatSize area, avoid checked overflow by using IntSize::unclampedArea, |
| which returns something we can compare with a float. Using IntSize::area |
| meant we'd intentionally crash the process if the area number doesn't fit |
| in a 32-bit int, which is not important or helpful. |
| (WebCore::ShadowBlur::drawRectShadowWithTiling): Make sure |
| ScratchBuffer::scheduleScratchBufferPurge is always called after |
| ScratchBuffer::getScratchBuffer, even it returns nullptr. An alternative |
| would have been to change the logic inside getScratchBuffer, but this |
| seems easier to get right, and no need to optimize the failure case. |
| (WebCore::ShadowBlur::drawInsetShadowWithTiling): Ditto. |
| |
| 2020-05-07 Youenn Fablet <youenn@apple.com> |
| |
| Fix potential threading issue in AudioMediaStreamTrackRendererCocoa::render |
| https://bugs.webkit.org/show_bug.cgi?id=211560 |
| |
| Reviewed by Eric Carlson. |
| |
| When the audio description is updated, the audio renderer is creating a new AudioSampleDataSource. |
| The refing of the source in the render method is not sufficient to protect agains the change. |
| For that purpose, we keep a separate reference to the source that is only used in the render method/render thread. |
| We add a boolean that tells the render method whether to update its source reference. |
| As long as the source reference is not updated, no new source will be created n the method processing the pushed samples. |
| |
| * platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.cpp: |
| (WebCore::AudioMediaStreamTrackRendererCocoa::pushSamples): |
| (WebCore::AudioMediaStreamTrackRendererCocoa::render): |
| * platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.h: |
| |
| 2020-05-07 Andres Gonzalez <andresg_22@apple.com> |
| |
| Fix for crash in AXIsolatedObject::identifierAttribute. |
| https://bugs.webkit.org/show_bug.cgi?id=211565 |
| |
| Reviewed by Chris Fleizach. |
| |
| Covered by existing tests. |
| |
| When adding the identifierAttribute property to the AXIsolatedObject's |
| properties map, must make an isolatedCopy of it in order to retrieve it |
| on the secondary thread. |
| |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::initializeAttributeData): |
| |
| 2020-05-07 Antti Koivisto <antti@apple.com> |
| |
| Add basic support for generating accurate wheel event listener region |
| https://bugs.webkit.org/show_bug.cgi?id=211512 |
| |
| Reviewed by Simon Fraser. |
| |
| Add fake properties for wheel event listeners to RenderStyle and use them to |
| generate regions in EventRegion. There is a separate region for non-passive |
| wheel event listeners (that will require synchronous handling). |
| |
| The generated regions are not used for anything in this patch. |
| Style is not yet invalided on event listener additions and removals. |
| |
| Test: fast/scrolling/mac/wheel-event-listener-region-basic.html |
| |
| * dom/Node.h: |
| * rendering/EventRegion.cpp: |
| (WebCore::EventRegion::unite): |
| (WebCore::EventRegion::uniteEventListeners): |
| (WebCore::EventRegion::dump const): |
| * rendering/EventRegion.h: |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateEventRegion): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::eventListenerRegionTypes const): |
| (WebCore::RenderStyle::setEventListenerRegionTypes): |
| * rendering/style/RenderStyleConstants.h: |
| * rendering/style/StyleRareInheritedData.cpp: |
| (WebCore::StyleRareInheritedData::StyleRareInheritedData): |
| (WebCore::StyleRareInheritedData::operator== const): |
| * rendering/style/StyleRareInheritedData.h: |
| * style/StyleAdjuster.cpp: |
| (WebCore::Style::computeEventListenerRegionTypes): |
| (WebCore::Style::Adjuster::adjust const): |
| |
| 2020-05-07 Youenn Fablet <youenn@apple.com> |
| |
| Sending WebRTC network packets should not go through the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=211291 |
| |
| Reviewed by Eric Carlson. |
| |
| Covered by existing tests. |
| |
| * Modules/mediastream/PeerConnectionBackend.cpp: |
| (WebCore::PeerConnectionBackend::filterSDP const): |
| Fix a case where the SDP would be badly formatted if we do not have yet a MDNS name for the corresponding IP address. |
| Small refactoring to use early returns. |
| * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: |
| (WebCore::LibWebRTCProvider::getStaticFactoryAndThreads): |
| * platform/mediastream/libwebrtc/LibWebRTCProvider.h: |
| Add the ability for WebKit LibWebRTCProvider to do some processing on creation of the RTC threads. |
| |
| 2020-05-06 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebXR] Implement simulateUserActivation() |
| https://bugs.webkit.org/show_bug.cgi?id=211516 |
| |
| Reviewed by Youenn Fablet. |
| |
| simulateUserActivation() is the method used by the WebXR Test API to |
| mock a user activation and thus let WebXR API think that the user is |
| behind the request that is going to be made in the function passed as |
| argument. |
| |
| No new tests added as the imported WebXR web-platform-tests already make |
| use of this API. |
| |
| * testing/WebXRTest.cpp: |
| (WebCore::WebXRTest::simulateUserActivation): Implemented. |
| * testing/WebXRTest.h: Added Document parameter. |
| * testing/WebXRTest.idl: Call with Document. |
| * testing/XRSimulateUserActivationFunction.h: Removed function params. |
| * testing/XRSimulateUserActivationFunction.idl: Ditto. |
| |
| 2020-05-06 Yoshiaki Jitsukawa <yoshiaki.jitsukawa@sony.com> and Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Win] Implement DisplayRefreshMonitor by using RunLoop::Timer |
| https://bugs.webkit.org/show_bug.cgi?id=211431 |
| |
| Reviewed by Don Olmstead. |
| |
| * PlatformWin.cmake: |
| * platform/graphics/DisplayRefreshMonitor.cpp: |
| (WebCore::DisplayRefreshMonitor::createDefaultDisplayRefreshMonitor): |
| * platform/graphics/win/DisplayRefreshMonitorWin.cpp: Added. |
| (WebCore::DisplayRefreshMonitorWin::create): |
| (WebCore::DisplayRefreshMonitorWin::DisplayRefreshMonitorWin): |
| (WebCore::DisplayRefreshMonitorWin::requestRefreshCallback): |
| (WebCore::DisplayRefreshMonitorWin::displayLinkFired): |
| * platform/graphics/win/DisplayRefreshMonitorWin.h: Added. |
| |
| 2020-05-06 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentObservation] Shutterstock search bar is not activated on the first tap |
| https://bugs.webkit.org/show_bug.cgi?id=211529 |
| <rdar://problem/58843932> |
| |
| Reviewed by Simon Fraser. |
| |
| * page/Quirks.cpp: |
| (WebCore::Quirks::shouldIgnoreContentObservationForSyntheticClick const): |
| * page/Quirks.h: |
| |
| 2020-05-06 Jack Lee <shihchieh_lee@apple.com> |
| |
| Nullptr crash in indentOutdentCommand::formatRange with asynchronous commands: indent and insert list. |
| https://bugs.webkit.org/show_bug.cgi?id=211466 |
| <rdar://problem/62845430> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Check for null outerBlock returned by splitTreeToNode and bail out. |
| |
| Test: fast/editing/indent-then-insertUL-crash.html |
| |
| * editing/IndentOutdentCommand.cpp: |
| (WebCore::IndentOutdentCommand::indentIntoBlockquote): |
| |
| 2020-05-06 Darin Adler <darin@apple.com> |
| |
| Make a helper for the pattern of ICU functions that may need to be called twice to populate a buffer |
| https://bugs.webkit.org/show_bug.cgi?id=211499 |
| |
| Reviewed by Ross Kirsling. |
| |
| * editing/TextIterator.cpp: |
| (WebCore::normalizeCharacters): Use callBufferProducingFunction. |
| |
| 2020-05-06 Simon Fraser <simon.fraser@apple.com> |
| |
| REGRESSION (r261056): [ Mac WK1 ] inspector/console/console-api.html is flaky crashing |
| https://bugs.webkit.org/show_bug.cgi?id=211386 |
| |
| Reviewed by Tim Horton. |
| |
| This bug was caused by the failure to clear the delegate on an NSScrollerImp when, for testing, |
| we flip between the native scrollbar theme, and the mock scrollbar theme. |
| |
| The crux of the fix is to have ScrollAnimatorMac's scrollerImpForScrollbar() call a |
| static function on ScrollbarThemeMac to get the painters, rather than going through |
| the possibly-null ScrollbarThemeMac instance. |
| |
| A belt-and-braces fix in ScrollbarThemeMac::unregisterScrollbar() always clears the delegate |
| on the NSScrollerImp when unregistering a scrollbar. |
| |
| Finally, modernize code in various places. |
| |
| * platform/mac/ScrollAnimatorMac.mm: |
| (WebCore::scrollerImpForScrollbar): |
| (WebCore::ScrollAnimatorMac::updateScrollerStyle): |
| * platform/mac/ScrollbarThemeMac.h: |
| * platform/mac/ScrollbarThemeMac.mm: |
| (WebCore::scrollbarMap): |
| (+[WebScrollbarPrefsObserver appearancePrefsChanged:]): |
| (WebCore::ScrollbarThemeMac::registerScrollbar): |
| (WebCore::ScrollbarThemeMac::unregisterScrollbar): |
| (WebCore::ScrollbarThemeMac::setNewPainterForScrollbar): |
| (WebCore::ScrollbarThemeMac::painterForScrollbar): |
| (WebCore::ScrollbarThemeMac::hasThumb): |
| (WebCore::ScrollbarThemeMac::minimumThumbLength): |
| (WebCore::ScrollbarThemeMac::updateEnabledState): |
| (WebCore::ScrollbarThemeMac::paint): |
| |
| 2020-05-06 Jack Lee <shihchieh_lee@apple.com> |
| |
| Nullptr crash in InsertListCommand::doApply with user-select:none elements |
| https://bugs.webkit.org/show_bug.cgi?id=211534 |
| <rdar://problem/62898521> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Check for empty position in InsertListCommand::doApply when searching for the start of |
| last paragraph in the selected range. Skip listifying individual paragraphs in the range. |
| |
| Test: editing/inserting/insert-list-user-select-none-crash.html |
| |
| * editing/InsertListCommand.cpp: |
| (WebCore::InsertListCommand::doApply): |
| |
| 2020-05-06 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, reverting r261239. |
| |
| Caused fast/events/wheel-event-outside-body.html to assert on |
| macOS WK1 |
| |
| Reverted changeset: |
| |
| "Add basic support for generating accurate wheel event |
| listener region" |
| https://bugs.webkit.org/show_bug.cgi?id=211512 |
| https://trac.webkit.org/changeset/261239 |
| |
| 2020-05-06 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r260684): Reader background is lost after multitasking |
| https://bugs.webkit.org/show_bug.cgi?id=211533 |
| <rdar://problem/62941837> |
| |
| Unreviewed, revert r260684 due to regression. |
| |
| * dom/EventTarget.cpp: |
| (WebCore::EventTarget::fireEventListeners): |
| * page/FrameView.cpp: |
| (WebCore::FrameView::sendResizeEventIfNeeded): |
| * page/Page.h: |
| (WebCore::Page::shouldFireResizeEvents const): |
| (WebCore::Page::setShouldFireResizeEvents): |
| |
| 2020-05-06 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: Implement accessibility of HTML 5.1 Drag & Drop |
| https://bugs.webkit.org/show_bug.cgi?id=211415 |
| <rdar://problem/22695531> |
| |
| Reviewed by Joanmarie Diggs. |
| Support HTML5 drag and drop. Support dropzone attribute. |
| Add new notifications for VoiceOver to consume. |
| |
| It appears that most of the dragging tests are skipped because of eventSender issues. |
| I think this test could do a little more if those issues were resolved. Specifically, not all |
| the notifications are seen that are expected. |
| |
| Test: accessibility/mac/draggable.html |
| |
| * accessibility/AXObjectCache.h: |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::supportsARIAAttributes const): |
| (WebCore::AccessibilityObject::isAXHidden const): |
| * accessibility/AccessibilityObject.h: |
| * accessibility/AccessibilityObjectInterface.h: |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::supportsDropping const): |
| (WebCore::AccessibilityRenderObject::supportsDragging const): |
| (WebCore::AccessibilityRenderObject::isGrabbed): |
| (WebCore::AccessibilityRenderObject::determineDropEffects): |
| (WebCore::AccessibilityRenderObject::supportsARIADropping const): Deleted. |
| (WebCore::AccessibilityRenderObject::supportsARIADragging const): Deleted. |
| (WebCore::AccessibilityRenderObject::isARIAGrabbed): Deleted. |
| (WebCore::AccessibilityRenderObject::determineARIADropEffects): Deleted. |
| * accessibility/AccessibilityRenderObject.h: |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::initializeAttributeData): |
| * accessibility/isolatedtree/AXIsolatedObject.h: |
| * accessibility/mac/AXObjectCacheMac.mm: |
| (WebCore::AXObjectCache::postPlatformNotification): |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]): |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): |
| * html/HTMLAttributeNames.in: |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::dispatchDragEvent): |
| (WebCore::EventHandler::draggingElement const): |
| * page/EventHandler.h: |
| |
| 2020-05-06 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Cut and paste from Google Doc to Notes in several (non-Latin) languages doesn't work |
| https://bugs.webkit.org/show_bug.cgi?id=211498 |
| <rdar://problem/56675345> |
| |
| Reviewed by Darin Adler. |
| |
| When copying text in Google Docs, the page uses `DataTransfer.setData` to write text/html data to the system |
| pasteboard. This markup string includes a meta tag with `charset="utf-8"`, indicating that the HTML string that |
| was copied should be interpreted as UTF-8 data. |
| |
| However, before we write this data to the system pasteboard, we first sanitize it by loading it in a separate |
| page, and then build the final sanitized markup string to write by iterating over only visible content in the |
| main document of this page. Importantly, this last step skips over the meta element containing the charset. |
| |
| Later, when pasting in Notes or TextEdit, both apps use `-[NSAttributedString initWithData:...:]` to convert the |
| HTML data on the pasteboard into an NSAttributedString. This takes the NSPasteboard's HTML data (a blob of |
| `NSData`) and synchronously loads it in a new legacy WebKit view by calling `-[WebFrame |
| loadData:MIMEType:textEncodingName:baseURL:]`, passing in `nil` as the text encoding name. Since WebKit is only |
| given a blob of data and no particular encoding, we fall back to default Latin-1 encoding, which produces |
| gibberish for CJK text. |
| |
| To fix this, we automatically insert a `<meta charset="utf-8">` tag when writing HTML to the pasteboard, if the |
| sanitized markup contains non-ASCII characters. |
| |
| Test: CopyHTML.SanitizationPreservesCharacterSet |
| |
| * Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp: |
| (WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::sanitizeDataIfNeeded): |
| |
| Pass in AddMetaCharsetIfNeeded::Yes. |
| |
| * dom/DataTransfer.cpp: |
| (WebCore::DataTransfer::setDataFromItemList): |
| |
| Pass in AddMetaCharsetIfNeeded::Yes here too. |
| |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::sanitizeMarkupWithArchive): |
| (WebCore::WebContentReader::readHTML): |
| (WebCore::WebContentMarkupReader::readHTML): |
| * editing/markup.cpp: |
| (WebCore::sanitizeMarkup): |
| |
| Add a new enum so that we only add the extra meta tag when sanitizing content that is being written to the |
| system pasteboard through one of the clipboard DOM APIs. |
| |
| (WebCore::sanitizedMarkupForFragmentInDocument): |
| * editing/markup.h: |
| |
| 2020-05-06 Tim Horton <timothy_horton@apple.com> |
| |
| REGRESSION (r260753): Frequent crashes under TextIndicator's estimatedTextColorsForRange |
| https://bugs.webkit.org/show_bug.cgi?id=211523 |
| <rdar://problem/62860203> |
| |
| Reviewed by Darin Adler. |
| |
| * page/TextIndicator.cpp: |
| (WebCore::estimatedTextColorsForRange): |
| TextIterator's node() getter can return null. r260753 accidentally refactored away the null check. |
| |
| 2020-05-06 John Wilander <wilander@apple.com> |
| |
| Exempt app-bound domains from ITP's website data deletion and third-party cookie blocking between themselves |
| https://bugs.webkit.org/show_bug.cgi?id=210674 |
| <rdar://problem/61950767> |
| |
| Reviewed by Chris Dumez. |
| |
| This change adds functionality to NetworkStorageSession to allow it to exempt |
| app-bound domains from third-party cookie blocking. |
| |
| Tests: http/tests/resourceLoadStatistics/exemptDomains/app-bound-domains-exempt-from-cookie-blocking-between-each-other.html |
| http/tests/resourceLoadStatistics/exemptDomains/app-bound-domains-exempt-from-website-data-deletion-database.html |
| http/tests/resourceLoadStatistics/exemptDomains/app-bound-domains-exempt-from-website-data-deletion.html |
| |
| * platform/network/NetworkStorageSession.cpp: |
| (WebCore::NetworkStorageSession::shouldBlockCookies const): |
| (WebCore::NetworkStorageSession::shouldExemptDomainPairFromThirdPartyCookieBlocking const): |
| (WebCore::NetworkStorageSession::setAppBoundDomains): |
| (WebCore::NetworkStorageSession::resetAppBoundDomains): |
| * platform/network/NetworkStorageSession.h: |
| |
| 2020-05-06 Antti Koivisto <antti@apple.com> |
| |
| Add basic support for generating accurate wheel event listener region |
| https://bugs.webkit.org/show_bug.cgi?id=211512 |
| |
| Reviewed by Simon Fraser. |
| |
| Add fake properties for wheel event listeners to RenderStyle and use them to |
| generate regions in EventRegion. There is a separate region for non-passive |
| wheel event listeners (that will require synchronous handling). |
| |
| The generated regions are not used for anything in this patch. |
| Style is not yet invalided on event listener additions and removals. |
| |
| Test: fast/scrolling/mac/wheel-event-listener-region-basic.html |
| |
| * dom/Node.h: |
| * rendering/EventRegion.cpp: |
| (WebCore::EventRegion::unite): |
| (WebCore::EventRegion::uniteEventListeners): |
| (WebCore::EventRegion::dump const): |
| * rendering/EventRegion.h: |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateEventRegion): |
| * rendering/style/RenderStyle.h: |
| (WebCore::RenderStyle::eventListenerRegionTypes const): |
| (WebCore::RenderStyle::setEventListenerRegionTypes): |
| * rendering/style/RenderStyleConstants.h: |
| * rendering/style/StyleRareInheritedData.cpp: |
| (WebCore::StyleRareInheritedData::StyleRareInheritedData): |
| (WebCore::StyleRareInheritedData::operator== const): |
| * rendering/style/StyleRareInheritedData.h: |
| * style/StyleAdjuster.cpp: |
| (WebCore::Style::computeEventListenerRegionTypes): |
| (WebCore::Style::Adjuster::adjust const): |
| |
| 2020-05-06 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded USE(GRAMMAR_CHECKING) |
| https://bugs.webkit.org/show_bug.cgi?id=211452 |
| |
| Reviewed by Anders Carlsson. |
| |
| * editing/Editor.cpp: |
| (WebCore::Editor::advanceToNextMisspelling): Remove USE(GRAMMAR_CHECKING). |
| (WebCore::Editor::isSelectionUngrammatical): Ditto. |
| (WebCore::Editor::markMisspellingsOrBadGrammar): Ditto. |
| (WebCore::Editor::markBadGrammar): Ditto. |
| * editing/TextCheckingHelper.cpp: |
| (WebCore::TextCheckingHelper::markAllBadGrammar): Ditto. |
| (WebCore::checkTextOfParagraph): Ditto. Also correct misspelling of the |
| word "misspelling". |
| * editing/TextCheckingHelper.h: Ditto. |
| |
| 2020-05-06 Devin Rousso <drousso@apple.com> |
| |
| ASSERT_WITH_MESSAGE(m_isOwnedByMainThread == isMainThread()) when web inspecting |
| https://bugs.webkit.org/show_bug.cgi?id=203638 |
| <rdar://problem/56761893> |
| |
| Reviewed by Brian Burg. |
| |
| Mark the `InspectorEnvironment::executionStopwatch` abstract function as `const` and have it |
| return a `Stopwatch&` instead of a `RefPtr<Stopwatch>&` as callers assume that it exists. |
| By not using a `RefPtr`, an additional `copyRef` can be avoided. |
| |
| * inspector/InspectorController.h: |
| * inspector/InspectorController.cpp: |
| (WebCore::InspectorController::executionStopwatch const): Added. |
| (WebCore::InspectorController::executionStopwatch): Deleted. |
| * inspector/WorkerInspectorController.h: |
| (WebCore::WorkerInspectorController::executionStopwatch const): Added. |
| (WebCore::WorkerInspectorController::executionStopwatch): Deleted. |
| |
| * inspector/agents/InspectorAnimationAgent.cpp: |
| (WebCore::InspectorAnimationAgent::startTracking): |
| (WebCore::InspectorAnimationAgent::stopTracking): |
| (WebCore::InspectorAnimationAgent::willApplyKeyframeEffect): |
| (WebCore::InspectorAnimationAgent::stopTrackingDeclarativeAnimation): |
| * inspector/agents/InspectorCPUProfilerAgent.cpp: |
| (WebCore::InspectorCPUProfilerAgent::startTracking): |
| (WebCore::InspectorCPUProfilerAgent::stopTracking): |
| (WebCore::InspectorCPUProfilerAgent::collectSample): |
| * inspector/agents/InspectorDOMAgent.cpp: |
| (WebCore::InspectorDOMAgent::mediaMetricsTimerFired): |
| * inspector/agents/InspectorMemoryAgent.cpp: |
| (WebCore::InspectorMemoryAgent::startTracking): |
| (WebCore::InspectorMemoryAgent::stopTracking): |
| (WebCore::InspectorMemoryAgent::didHandleMemoryPressure): |
| (WebCore::InspectorMemoryAgent::collectSample): |
| * inspector/agents/InspectorNetworkAgent.cpp: |
| (WebCore::InspectorNetworkAgent::buildObjectForTiming): |
| (WebCore::InspectorNetworkAgent::timestamp): |
| (WebCore::InspectorNetworkAgent::didFinishLoading): |
| * inspector/agents/InspectorPageAgent.cpp: |
| (WebCore::InspectorPageAgent::enable): |
| (WebCore::InspectorPageAgent::timestamp): |
| * inspector/agents/InspectorTimelineAgent.cpp: |
| (WebCore::InspectorTimelineAgent::timestamp): |
| |
| 2020-05-06 Darin Adler <darin@apple.com> |
| |
| Eliminate checks of USE(DICTATION_ALTERNATIVES) in Cocoa-specific code |
| https://bugs.webkit.org/show_bug.cgi?id=211460 |
| |
| Reviewed by Anders Carlsson. |
| |
| * editing/cocoa/AlternativeTextContextController.h: Remove USE(DICTATION_ALTERNATIVES). |
| Also remove unnecessary use of RetainPtr and add a FIXME. Also remove #pragma once |
| since this header is only imported from Objective-C++ sources. |
| * editing/cocoa/AlternativeTextContextController.mm: Ditto. |
| * editing/cocoa/AlternativeTextUIController.h: Ditto. |
| * editing/cocoa/AlternativeTextUIController.mm: Ditto. |
| * editing/mac/TextAlternativeWithRange.h: Ditto. |
| * editing/mac/TextAlternativeWithRange.mm: Ditto. |
| |
| 2020-05-06 Simon Fraser <simon.fraser@apple.com> |
| |
| Factor EventHandler code that sends mouseEnteredContentArea/mouseExitedContentArea into its own function |
| https://bugs.webkit.org/show_bug.cgi?id=211494 |
| |
| Reviewed by Antti Koivisto. |
| |
| mouseEnteredContentArea/mouseEnteredContentArea are used only to notify overlay scrollbars |
| of state changes. Factor the code that calls these functions into a separate EventHandler |
| function, and refactor it for clarity, now we know that both lastElementUnderMouse and elementUnderMouse |
| must belong to this EventHandler's Frame's Document. |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::updateMouseEventTargetNode): |
| (WebCore::EventHandler::notifyScrollableAreasOfMouseEnterExit): |
| * page/EventHandler.h: |
| |
| 2020-05-06 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] BlockFormattingContext::computeHeightAndMargin should special case the table box |
| https://bugs.webkit.org/show_bug.cgi?id=211493 |
| |
| Reviewed by Antti Koivisto. |
| |
| By the time we get to BlockFormattingContext::computeHeightAndMargin(), the used valued for the table height is already been computed. |
| (Table box height is mostly content driven, and both the computed height and the min/max pair are taken into account |
| while we are laying out the table content). |
| |
| * layout/blockformatting/BlockFormattingContext.cpp: |
| (WebCore::Layout::BlockFormattingContext::computeHeightAndMargin): |
| * layout/blockformatting/BlockFormattingContextGeometry.cpp: |
| (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin): |
| |
| 2020-05-06 Antoine Quint <graouts@apple.com> |
| |
| Add watchOS media controls assets |
| https://bugs.webkit.org/show_bug.cgi?id=211508 |
| <rdar://problem/62926565> |
| |
| Reviewed by Eric Carlson. |
| |
| * Modules/modern-media-controls/images/watchOS/ActivityIndicatorSpriteCompact@2x.png: Added. |
| * Modules/modern-media-controls/images/watchOS/InvalidCompact.pdf: Added. |
| * Modules/modern-media-controls/images/watchOS/PlayCompact.pdf: Added. |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2020-05-06 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][BFC] FormattingContext::ConstraintsForInFlowContent should include the computed value of height |
| https://bugs.webkit.org/show_bug.cgi?id=211487 |
| |
| Reviewed by Antti Koivisto. |
| |
| When the formatting context root has fixed height, the computed value should be passed in to the formatting context layout |
| as the available vertical space. |
| |
| * layout/FormattingContextGeometry.cpp: |
| (WebCore::Layout::FormattingContext::Geometry::constraintsForInFlowContent): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| |
| 2020-04-29 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebXR] Implement isSessionSupported() |
| https://bugs.webkit.org/show_bug.cgi?id=211187 |
| |
| Reviewed by Dean Jackson. |
| |
| The isSessionSupported() method queries if a given mode may be supported |
| by the UA and device capabilities. Apart from the needed machinery in |
| the webxr Module we're adding an OpenXR implementation of the |
| enumerateImmersiveXRDevices() method required by isSessionSupported(). |
| |
| The method is not completely implemented as it lacks a few action at its |
| very end, like firing events. They'll be implemented in follow up |
| patches as they require additional changes. |
| |
| Some OpenXR runtimes as Monado always enumerate at least one device even |
| if none is connected. This dummy device might interfere with tests |
| execution (as there will be more devices than expected) so we're adding |
| a testMode to WebXRSystem which does not query platform for existing |
| devices. |
| |
| Added expected results and unskipped some WPT that are now passing. |
| |
| * Modules/webxr/WebXRSystem.cpp: |
| (WebCore::WebXRSystem::ensureImmersiveXRDeviceIsSelected): Asks platform |
| code for the list of attached XR devices and properly set the active |
| immersive device if any. |
| (WebCore::WebXRSystem::isSessionSupported): Partially implemented. |
| (WebCore::WebXRSystem::registerSimulatedXRDeviceForTesting): Set the |
| passed in mock device as either the current active immersive or inline |
| device. |
| (WebCore::WebXRSystem::unregisterSimulatedXRDeviceForTesting): Removes |
| the passed in mock device from the list of immersive devices. |
| * Modules/webxr/WebXRSystem.h: |
| * html/FeaturePolicy.cpp: |
| (WebCore::policyTypeName): Handle XRSpatialTracking. |
| (WebCore::FeaturePolicy::parse): Parse "xr-spatial-tracking". |
| (WebCore::FeaturePolicy::allows const): Handle XRSpatialTracking. |
| * html/FeaturePolicy.h: Added XRSpatialTracking. |
| * platform/xr/PlatformXR.h: |
| (PlatformXR::Instance::immersiveXRDevices const): Keep a list of immersive devices. |
| * platform/xr/openxr/PlatformXR.cpp: |
| (PlatformXR::Instance::Impl::collectSupportedSessionModes): Gather supported session |
| modes for a given device from OpenXR. |
| (PlatformXR::Instance::enumerateImmersiveXRDevices): Collect devices from OpenXR. We |
| are currently asking for HMD devices. |
| |
| 2020-05-06 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Coordinate "update animations and send events" procedure across multiple timelines |
| https://bugs.webkit.org/show_bug.cgi?id=202109 |
| |
| Unreviewed. |
| |
| Remove an unused function. |
| |
| * animation/AnimationTimeline.h: |
| (WebCore::AnimationTimeline::allAnimations const): Deleted. |
| |
| 2020-05-05 Antoine Quint <graouts@apple.com> |
| |
| Fix animation ordering to make imported/w3c/web-platform-tests/css/css-animations/Element-getAnimations.tentative.html pass |
| https://bugs.webkit.org/show_bug.cgi?id=211468 |
| <rdar://problem/62732578> |
| |
| Reviewed by David Kilzer. |
| |
| The "Animation composite order" section of the CSS Animations Level 2 specification (https://drafts.csswg.org/css-animations-2/#animation-composite-order) |
| defines the relative composite order of animations. We bake this into compareAnimationsByCompositeOrder(), but this function would not yield consistent |
| results if it is called in a non-stable sort, because if both CSSAnimation objects passed to this function have the same backing Animation object, they |
| would not return the same value if passed in a different order. The Web Animations spec always ensures that procedures that sort using the composite |
| order are called as part of a stable sort. So we change all call sites to use std::stable_sort and add an assertion in case we have two CSSAnimation |
| objects with the same backing Animation objects to catch cases like this in the future. |
| |
| Finally, since we already know only relevant animations can find their way into the output of Document::getAnimations(), we also ensure we iterate over |
| m_animations (which holds only relevant animations) rather than m_allAnimations (which may not). |
| |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::getAnimations const): |
| * animation/KeyframeEffectStack.cpp: |
| (WebCore::KeyframeEffectStack::ensureEffectsAreSorted): |
| * animation/WebAnimationUtilities.cpp: |
| (WebCore::compareAnimationsByCompositeOrder): |
| |
| 2020-05-05 Simon Fraser <simon.fraser@apple.com> |
| |
| EventHandler::dispatchMouseEvent() cleanup |
| https://bugs.webkit.org/show_bug.cgi?id=211491 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Replace the last bool argument with FireMouseOverOut, and remove the "cancelable" argument that was unused. |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::handleMousePressEvent): |
| (WebCore::EventHandler::handleMouseDoubleClickEvent): |
| (WebCore::EventHandler::handleMouseMoveEvent): |
| (WebCore::EventHandler::handleMouseReleaseEvent): |
| (WebCore::EventHandler::handleMouseForceEvent): |
| (WebCore::EventHandler::dispatchMouseEvent): |
| (WebCore::EventHandler::sendContextMenuEvent): |
| * page/EventHandler.h: |
| |
| 2020-05-05 Rob Buis <rbuis@igalia.com> |
| |
| Fix setting host on URL when no port is specified |
| https://bugs.webkit.org/show_bug.cgi?id=211453 |
| |
| Reviewed by Darin Adler. |
| |
| Behavior matches Firefox and Chrome. |
| |
| Test: web-platform-tests/url/url-setters.html |
| |
| * html/URLDecomposition.cpp: |
| (WebCore::URLDecomposition::setHost): |
| |
| 2020-05-05 Simon Fraser <simon.fraser@apple.com> |
| |
| Minor EventHandler and test cleanup |
| https://bugs.webkit.org/show_bug.cgi?id=211475 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Now that we assert that m_elementUnderMouse and m_lastElementUnderMouse are either null |
| or in this EventHandler's document, we can remove the document comparisons (but this code |
| is probably wrong as well). |
| |
| Fix enclosingScrollableArea(), which would return any RenderLayer, but should only |
| return scrollable ones, and should only return scrollable RenderListBoxes. |
| |
| * page/EventHandler.cpp: |
| (WebCore::enclosingScrollableArea): |
| (WebCore::EventHandler::updateMouseEventTargetNode): |
| |
| 2020-05-05 David Kilzer <ddkilzer@apple.com> |
| |
| Fix deprecated NSGraphicsContext methods using 'graphicsPort' |
| <https://webkit.org/b/211481> |
| |
| Reviewed by Darin Adler. |
| |
| - Replace uses of -graphicsPort with -CGContext. |
| - Replace uses of -graphicsContextWithGraphicsPort:flipped: with |
| -graphicsContextWithCGContext:flipped:. |
| - Remove ALLOW_DEPRECATED_DECLARATIONS_{BEGIN,END} if possible. |
| |
| * platform/cocoa/DragImageCocoa.mm: |
| (WebCore::createDragImageForLink): |
| * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: |
| (WebCore::PlatformCALayer::drawLayerContents): |
| * platform/mac/ThemeMac.mm: |
| (WebCore::drawCellFocusRingWithFrameAtTime): |
| * platform/mac/WidgetMac.mm: |
| (WebCore::Widget::paint): |
| |
| 2020-05-05 Pinki Gyanchandani <pgyanchandani@apple.com> |
| |
| Crash in match_constness<WebCore::CSSValue, WebCore::CSSPrimitiveValue>::type& WTF::downcast<WebCore::CSSPrimitiveValue, WebCore::CSSValue> -- ASAN |
| https://bugs.webkit.org/show_bug.cgi?id=211479 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Added check to downcast CSSValue to CSSPrimitiveValue, only if valid CSSPrimitveValue is associated with the property. |
| |
| New test would be added to Internal repository. |
| |
| * css/StyleProperties.cpp: |
| (WebCore::StyleProperties::pageBreakPropertyValue const): |
| |
| 2020-05-05 Peng Liu <peng.liu6@apple.com> |
| |
| Update WebKitTestRunner to support running multiple video fullscreen and Picture-in-Picture tests simultaneously |
| https://bugs.webkit.org/show_bug.cgi?id=203723 |
| |
| Reviewed by Jer Noble. |
| |
| Test: media/video-presentation-mode.html |
| |
| Add a flag MockVideoPresentationModeEnabled to "internals" for video fullscreen |
| and picture-in-picture tests. |
| |
| * page/ChromeClient.h: |
| (WebCore::ChromeClient::setMockVideoPresentationModeEnabled): |
| * testing/Internals.cpp: |
| (WebCore::Internals::setMockVideoPresentationModeEnabled): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-05-05 Darin Adler <darin@apple.com> |
| |
| Remove HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) |
| https://bugs.webkit.org/show_bug.cgi?id=211461 |
| |
| Reviewed by Eric Carlson. |
| |
| * PlatformMac.cmake: Removed InbandTextTrackPrivateLegacyAVFObjC.mm. |
| * SourcesCocoa.txt: Ditto. |
| * WebCore.xcodeproj/project.pbxproj: Ditto, also the header. |
| * platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.h: Removed. |
| * platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm: Removed. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| Removed HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT). Also moved data member |
| initialization to the class definition, made more things private and final, |
| made outputObscuredDueToInsufficientExternalProtectionChanged unconditional, |
| changed friend class MediaPlayerFactoryAVFoundationObjC into member class |
| MediaPlayerPrivateAVFoundationObjC::Factory, removed unused removeSession function, |
| and tweaked conditionals. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| Removed import of InbandTextTrackPrivateLegacyAVFObjC.h. Moved data member |
| initialization to the class definition. Moved include of BinarySemaphore here. |
| |
| 2020-05-05 Simon Fraser <simon.fraser@apple.com> |
| |
| Assert that EventHandler only tracks event target nodes in its own document |
| https://bugs.webkit.org/show_bug.cgi?id=211462 |
| |
| Reviewed by Zalan Bujtas. |
| |
| EventHandler is per-Frame, so should not track Nodes from different documents. However, it did so |
| by mistake if an event handler moved a node between documents. |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::updateMouseEventTargetNode): |
| * rendering/HitTestResult.cpp: |
| (WebCore::HitTestResult::targetNode const): |
| |
| 2020-05-05 Antti Koivisto <antti@apple.com> |
| |
| Factor RenderLayerBacking::updateEventRegion skip conditions into a lambda |
| https://bugs.webkit.org/show_bug.cgi?id=211450 |
| |
| Reviewed by Simon Fraser. |
| |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateEventRegion): |
| |
| 2020-05-05 Chris Dumez <cdumez@apple.com> |
| |
| Drop code path using the legacy CFNetwork cookie change notification SPI |
| https://bugs.webkit.org/show_bug.cgi?id=211411 |
| <rdar://problem/62869148> |
| |
| Reviewed by John Wilander. |
| |
| * platform/network/cocoa/NetworkStorageSessionCocoa.mm: |
| (WebCore::NetworkStorageSession::registerCookieChangeListenersIfNecessary): |
| (WebCore::NetworkStorageSession::unregisterCookieChangeListenersIfNecessary): |
| (WebCore::NetworkStorageSession::supportsCookieChangeListenerAPI const): |
| |
| 2020-05-05 Timothy Horton <timothy_horton@apple.com> |
| |
| "Essential Skeleton" does not respond to mouse events, only touch events |
| https://bugs.webkit.org/show_bug.cgi?id=211439 |
| <rdar://problem/62694519> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * platform/RuntimeApplicationChecks.h: |
| * platform/cocoa/RuntimeApplicationChecksCocoa.mm: |
| (WebCore::IOSApplication::isEssentialSkeleton): |
| |
| 2020-05-05 Megan Gardner <megan_gardner@apple.com> |
| |
| Style is not applied when changed on the first line of a new mail message. |
| https://bugs.webkit.org/show_bug.cgi?id=211200 |
| <rdar://problem/62087514> |
| |
| Reviewed by Darin Adler. |
| |
| After r257487 when we resign first responder, we immediatly |
| update activity state. This means that if we resign first responder, and then |
| become first responder, we are clearing the selection if the caret is at the beginning |
| of the document, due to a check in setSelectionFromNone. This check was originally added |
| in 2006 because it happened to fix <rdar://problem/4483145>. Removing this check and |
| merging the iOS and Mac logic. |
| |
| Test: editing/execCommand/ios/first-line-text-attribute-change-presist-through-resigning-first-responder.html |
| |
| * editing/FrameSelection.cpp: |
| (WebCore::FrameSelection::setSelectionFromNone): |
| |
| 2020-05-05 Rob Buis <rbuis@igalia.com> |
| |
| A URL cannot have a username/password/port if its host is null |
| https://bugs.webkit.org/show_bug.cgi?id=211358 |
| |
| Reviewed by Darin Adler. |
| |
| A URL cannot have a username/password/port if its host is null [1], so |
| adjust URL.cpp accordingly. |
| |
| Behavior matches Chrome and Firefox. |
| |
| [1] https://url.spec.whatwg.org/#cannot-have-a-username-password-port |
| |
| * html/URLDecomposition.cpp: |
| (WebCore::URLDecomposition::setUsername): |
| (WebCore::URLDecomposition::setPassword): |
| (WebCore::URLDecomposition::setPort): |
| |
| 2020-05-05 Youenn Fablet <youenn@apple.com> |
| |
| MediaPlayerPrivateMediaStreamAVFObjC should unobserve the tracks from its audio and video track sets |
| https://bugs.webkit.org/show_bug.cgi?id=211444 |
| <rdar://problem/62886221> |
| |
| Reviewed by Eric Carlson. |
| |
| Test: fast/mediastream/MediaStream-removeTrack-while-playing.html |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC): |
| We keep maps of audio and video tracks we are observing. |
| Use these two maps to properly unobserve all tracks at destruction time. |
| While this is not strictly needed since we are using weak pointers, this helps keeping the code healthy. |
| * platform/mediastream/MediaStreamTrackPrivate.cpp: |
| (WebCore::MediaStreamTrackPrivate::forEachObserver): |
| Add a debug ASSERT so that we ensure add/remove observers is done properly. |
| |
| 2020-05-05 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, reverting r261130. |
| |
| Caused crashes on some of our bots |
| |
| Reverted changeset: |
| |
| "Drop code path using the legacy CFNetwork cookie change |
| notification SPI" |
| https://bugs.webkit.org/show_bug.cgi?id=211411 |
| https://trac.webkit.org/changeset/261130 |
| |
| 2020-05-05 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded USE(COREMEDIA) and USE(VIDEOTOOLBOX) |
| https://bugs.webkit.org/show_bug.cgi?id=211437 |
| |
| Reviewed by Eric Carlson. |
| |
| * platform/cocoa/VideoToolboxSoftLink.cpp: Remove USE(VIDEOTOOLBOX). |
| * platform/cocoa/VideoToolboxSoftLink.h: Ditto. |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoLayer): Ditto. |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput): Ditto. |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage): Ditto. |
| * platform/graphics/cocoa/WebCoreDecompressionSession.h: Ditto. Also remove |
| #pragma once since this header is only used with #import, not #include. |
| * platform/graphics/cocoa/WebCoreDecompressionSession.mm: Ditto. |
| * platform/graphics/cv/ImageRotationSessionVT.h: Ditto. |
| * platform/graphics/cv/ImageRotationSessionVT.mm: Ditto. |
| * platform/graphics/cv/ImageTransferSessionVT.h: Ditto. |
| * platform/graphics/cv/ImageTransferSessionVT.mm: Ditto. |
| * platform/graphics/cv/PixelBufferConformerCV.cpp: |
| (WebCore::PixelBufferConformerCV::PixelBufferConformerCV): Ditto. |
| (WebCore::PixelBufferConformerCV::convert): Ditto. |
| (WebCore::PixelBufferConformerCV::createImageFromPixelBuffer): Ditto. |
| * platform/graphics/cv/PixelBufferConformerCV.h: Ditto. |
| |
| 2020-05-05 Youenn Fablet <youenn@apple.com> |
| |
| Remove LegacySchemeRegistry::canServiceWorkersHandleURLScheme |
| https://bugs.webkit.org/show_bug.cgi?id=211170 |
| |
| Reviewed by Alex Christensen. |
| |
| Since we no longer use custom service worker schemes in API tests, |
| we no longer need custom schemes in web process, given they are not supported in network process anyway. |
| Remove related code. |
| |
| * Modules/cache/DOMWindowCaches.idl: |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (NeedsRuntimeCheck): |
| (GenerateRuntimeEnableConditionalString): |
| * bindings/scripts/IDLAttributes.json: |
| * dom/ScriptExecutionContext.cpp: |
| (WebCore::ScriptExecutionContext::hasServiceWorkerScheme const): Deleted. |
| * dom/ScriptExecutionContext.h: |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::matchRegistration): |
| (WebCore::DocumentLoader::commitData): |
| * page/NavigatorServiceWorker.idl: |
| * platform/LegacySchemeRegistry.cpp: |
| (WebCore::serviceWorkerSchemes): Deleted. |
| (WebCore::LegacySchemeRegistry::registerURLSchemeServiceWorkersCanHandle): Deleted. |
| (WebCore::LegacySchemeRegistry::canServiceWorkersHandleURLScheme): Deleted. |
| (WebCore::LegacySchemeRegistry::isServiceWorkerContainerCustomScheme): Deleted. |
| * platform/LegacySchemeRegistry.h: |
| * workers/service/ServiceWorkerContainer.cpp: |
| (WebCore::ServiceWorkerContainer::addRegistration): |
| |
| 2020-05-05 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(DISALLOWABLE_USER_INSTALLED_FONTS) |
| https://bugs.webkit.org/show_bug.cgi?id=211428 |
| |
| Reviewed by Anders Carlsson. |
| |
| * platform/graphics/Font.h: Removed isUserInstalledFont, only used for |
| an assertion that I took the liberty of removing. |
| |
| * platform/graphics/FontCascadeFonts.cpp: |
| (WebCore::FontCascadeFonts::glyphDataForSystemFallback): Removed an |
| assertion since it was the only reason to introduce the concept of a |
| user-installed font to the cross-platform code. The assertion is a bit |
| of a self-check that doesn't seem critical. |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (WebCore::FontDatabase::singleton): Deleted. |
| (WebCore::FontDatabase::singletonAllowingUserInstalledFonts): Remove |
| HAVE(DISALLOWABLE_USER_INSTALLED_FONTS). |
| (WebCore::FontDatabase::singletonDisallowingUserInstalledFonts): Ditto. |
| (WebCore::isUserInstalledFont): Ditto. |
| (WebCore::addAttributesForInstalledFonts): Ditto. |
| (WebCore::isFontMatchingUserInstalledFontFallback): Ditto. |
| (WebCore::addAttributesForWebFonts): Ditto. |
| (WebCore::installedFontMandatoryAttributes): Ditto. |
| |
| * platform/graphics/mac/SimpleFontDataCoreText.cpp: |
| (WebCore::Font::isUserInstalledFont const): Deleted. |
| |
| 2020-05-05 Alicia Boya García <aboya@igalia.com> |
| |
| [GStreamer] Video loops when ran in rr record --chaos |
| https://bugs.webkit.org/show_bug.cgi?id=211182 |
| |
| Reviewed by Philippe Normand. |
| |
| While trying to investigate a different bug, I ran the browser with |
| `rr record --chaos`, which makes it run very slowly and shuffles |
| thread scheduling to try to make existing race conditions more likely |
| to show up, also inevitably making the software run very slow. |
| |
| Doing so I found something strange: the video kept looping even though |
| it didn't have the `loop` attribute set. |
| |
| After some debugging I found that MediaPlayer decides if the video has |
| ended in part by checking `currentMediaTime()` is greater or equal to |
| the video duration, which was not guaranteed to be the case in |
| MediaPlayerPrivateGStreamer. |
| |
| As a consequence of this patch, one new LayoutTest has passed. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::playbackPosition const): |
| |
| 2020-05-05 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Rename computedContentHeight/Width to computedHeight/Width |
| https://bugs.webkit.org/show_bug.cgi?id=211432 |
| |
| Reviewed by Darin Adler. |
| |
| These functions used to return the computed content box height/width but with box-sizing |
| support the name is not correct anymore. |
| |
| * layout/FormattingContext.h: |
| * layout/FormattingContextGeometry.cpp: |
| (WebCore::Layout::FormattingContext::Geometry::computedHeight const): |
| (WebCore::Layout::FormattingContext::Geometry::computedWidth const): |
| (WebCore::Layout::FormattingContext::Geometry::computedMinHeight const): |
| (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const): |
| (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry): |
| (WebCore::Layout::FormattingContext::Geometry::complicatedCases const): |
| (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin): |
| (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const): |
| (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const): |
| (WebCore::Layout::FormattingContext::Geometry::computedContentHeight const): Deleted. |
| (WebCore::Layout::FormattingContext::Geometry::computedContentWidth const): Deleted. |
| * layout/blockformatting/BlockFormattingContextGeometry.cpp: |
| (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin): |
| (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const): |
| (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin): |
| (WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| * layout/tableformatting/TableFormattingContextGeometry.cpp: |
| (WebCore::Layout::TableFormattingContext::Geometry::cellHeigh const): |
| (WebCore::Layout::TableFormattingContext::Geometry::computedColumnWidth const): |
| |
| 2020-05-05 Antoine Quint <graouts@apple.com> |
| |
| Unreviewed, reverting r260989. |
| |
| Mistakenly identified cause of MotionMark 1.1 performance regression |
| |
| Reverted changeset: |
| |
| "REGRESSION: MotionMark 1.1 regressed due to r260016" |
| https://bugs.webkit.org/show_bug.cgi?id=211280 |
| https://trac.webkit.org/changeset/260989 |
| |
| 2020-05-05 Alexey Shvayka <shvaikalesh@gmail.com> |
| |
| Object.prototype.toString is not spec-perfect |
| https://bugs.webkit.org/show_bug.cgi?id=199138 |
| |
| Reviewed by Darin Adler and Keith Miller. |
| |
| This patch defines @@toStringTag symbols for all WebIDL prototypes, including |
| interfaces that are not exposed, as required by the spec [1]. |
| |
| With updated JSObject::toStringName() and @@toStringTag symbols added in r260992, |
| className() and toStringName() methods of JSDOMConstructorBase can be safely removed. |
| |
| [1]: https://heycam.github.io/webidl/#dfn-class-string |
| |
| Tests: imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-interface.any.js |
| imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-iterator-prototype-object.any.js |
| |
| * bindings/js/JSDOMConstructorBase.cpp: |
| (WebCore::JSDOMConstructorBase::className): Deleted. |
| (WebCore::JSDOMConstructorBase::toStringName): Deleted. |
| * bindings/js/JSDOMConstructorBase.h: |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateImplementation): |
| (GeneratePrototypeDeclaration): |
| * bindings/scripts/test/JS/JSTestGlobalObject.cpp: |
| (WebCore::JSTestGlobalObjectPrototype::finishCreation): |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| [Mac] Remove __MAC_OS_X_VERSION_MIN_REQUIRED checks for versions older than 10.14 |
| https://bugs.webkit.org/show_bug.cgi?id=211420 |
| |
| Reviewed by Alex Christensen. |
| |
| * editing/cocoa/DataDetection.mm: |
| (WebCore::detectItem): Remove __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400. |
| * editing/cocoa/HTMLConverter.mm: |
| (_WebMessageDocumentClass): Ditto. |
| * platform/graphics/cg/GraphicsContextCG.cpp: Ditto. |
| * platform/mac/WebCoreFullScreenPlaceholderView.mm: |
| (-[WebCoreFullScreenPlaceholderView initWithFrame:]): Ditto. |
| * platform/network/cocoa/CookieCocoa.mm: |
| (WebCore::nsSameSitePolicy): Ditto. |
| (WebCore::Cookie::operator NSHTTPCookie * _Nullable const): Ditto. |
| * platform/network/cocoa/NetworkStorageSessionCocoa.mm: |
| (WebCore::cookiesForURL): Ditto. |
| (WebCore::NetworkStorageSession::setHTTPCookiesForURL const): Ditto. |
| * platform/network/cocoa/ResourceRequestCocoa.mm: |
| (WebCore::ResourceRequest::doUpdateResourceRequest): Ditto. |
| (WebCore::siteForCookies): Ditto. |
| (WebCore::ResourceRequest::doUpdatePlatformRequest): Ditto. |
| * rendering/RenderThemeMac.mm: |
| (WebCore::RenderThemeMac::paintTextField): Ditto. |
| * testing/Internals.h: Ditto. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(NETWORK_EXTENSION) |
| https://bugs.webkit.org/show_bug.cgi?id=211424 |
| |
| Reviewed by Alex Christensen. |
| |
| * loader/ContentFilter.cpp: |
| (WebCore::ContentFilter::types): Remove check of HAVE(NETWORK_EXTENSION), |
| not needed because ENABLE(CONTENT_FILTER) is only done on Cocoa platforms, |
| and HAVE(NETWORK_EXTENSION) is true for all of those. |
| * platform/cocoa/NetworkExtensionContentFilter.mm: Ditto. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(SEC_TRUST_EVALUATE_WITH_ERROR) |
| https://bugs.webkit.org/show_bug.cgi?id=211429 |
| |
| Reviewed by Alex Christensen. |
| |
| * platform/network/cocoa/ResourceResponseCocoa.mm: |
| (WebCore::ResourceResponse::platformCertificateInfo const): |
| Remove HAVE(SEC_TRUST_EVALUATE_WITH_ERROR). |
| |
| 2020-05-04 Simon Fraser <simon.fraser@apple.com> |
| |
| Code cleanup in EventHandler |
| https://bugs.webkit.org/show_bug.cgi?id=211413 |
| |
| Reviewed by Tim Horton. |
| |
| Use a better name for "hoveredNode" which is a HitTestResult. |
| |
| Convert Frame* to Frame&. |
| |
| Have a couple of helper functions return RefPtr<Frame>. |
| |
| * page/AutoscrollController.cpp: |
| (WebCore::AutoscrollController::stopAutoscrollTimer): |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::subframeForHitTestResult): |
| (WebCore::EventHandler::subframeForTargetNode): |
| (WebCore::EventHandler::handleMousePressEvent): |
| (WebCore::EventHandler::handleMouseDoubleClickEvent): |
| (WebCore::EventHandler::mouseMoved): |
| (WebCore::EventHandler::passMouseMovedEventToScrollbars): |
| (WebCore::EventHandler::handleMouseMoveEvent): |
| (WebCore::EventHandler::handleMouseReleaseEvent): |
| (WebCore::EventHandler::passMousePressEventToScrollbar): |
| (WebCore::EventHandler::passMousePressEventToSubframe): |
| (WebCore::EventHandler::passMouseReleaseEventToSubframe): |
| (WebCore::EventHandler::passWidgetMouseDownEventToWidget): |
| (WebCore::EventHandler::passMouseMoveEventToSubframe): |
| * page/EventHandler.h: |
| * page/ios/EventHandlerIOS.mm: |
| (WebCore::EventHandler::passSubframeEventToSubframe): |
| (WebCore::EventHandler::passMousePressEventToSubframe): |
| (WebCore::EventHandler::passMouseMoveEventToSubframe): |
| (WebCore::EventHandler::passMouseReleaseEventToSubframe): |
| (WebCore::EventHandler::tryToBeginDragAtPoint): |
| * page/mac/EventHandlerMac.mm: |
| (WebCore::EventHandler::passSubframeEventToSubframe): |
| (WebCore::EventHandler::passMousePressEventToSubframe): |
| (WebCore::EventHandler::passMouseMoveEventToSubframe): |
| (WebCore::EventHandler::passMouseReleaseEventToSubframe): |
| * page/win/EventHandlerWin.cpp: |
| (WebCore::EventHandler::passMouseMoveEventToSubframe): |
| |
| 2020-05-04 Ben Nham <nham@apple.com> |
| |
| IndexedDB WAL file keeps growing while app is in use |
| https://bugs.webkit.org/show_bug.cgi?id=202137 |
| |
| Reviewed by Brady Eidson. |
| |
| It's easy to get into a situation where the WAL file associated with a SQLite-backed |
| IndexedDB grows indefinitely while a site is in use for two reasons: |
| |
| 1. We don't promptly reset cached prepared statements in SQLiteIDBBackingStore. Many |
| statements are left hanging in the SQLITE_ROW state without being reset or fully stepped to |
| the SQLITE_DONE state. These hanging statements keep their associated transactions open and |
| prevent the WAL checkpointer from progressing past those active transactions. |
| |
| To fix this, I added SQLiteStatementAutoResetScope. This is a scope guard that |
| SQLiteIDBBackingStore uses to ensure that cached statements are reset in a timely manner. |
| |
| While going through the reset code I also noticed we aren't clearing bindings after |
| resetting statements. We should be doing this because sqlite3_reset does not clear bindings |
| (and their associated copies of blobs/strings); sqlite3_clear_bindings does that. |
| |
| 2. The default WAL hook for auto-checkpointing in upstream SQLite uses the |
| SQLITE_CHECKPOINT_PASSIVE mode, which doesn't truncate the WAL until the next write |
| transaction occurs. (It actually doesn't truncate at all when compiled with default |
| settings, but macOS's SQLite sets SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT, which causes the |
| truncation to occur on the next write.) |
| |
| We want the WAL to be truncated more promptly, because otherwise the quota check that |
| happens on each mutation won't be as accurate. To do this, I installed a WAL hook that |
| truncates the WAL with SQLITE_CHECKPOINT_TRUNCATE after the default threshold of 1000 WAL |
| pages. I didn't enable this for all SQLiteDatabases because this checkpoint call can block |
| on the busy handler. This isn't a problem for IDB since we don't use busy handlers in IDB. |
| |
| * Headers.cmake: |
| * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: |
| (WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::deleteObjectStore): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::renameObjectStore): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::clearObjectStore): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::createIndex): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedHasIndexRecord): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexRecord): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::deleteIndex): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::renameIndex): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::keyExistsInObjectStore): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::deleteUnusedBlobFileRecords): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::deleteRecord): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::addRecord): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::getBlobRecordsForObjectStoreRecord): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::getRecord): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatementForGetAllObjectStoreRecords): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::getCount): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetKeyGeneratorValue): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedSetKeyGeneratorValue): |
| (WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatement): |
| * Modules/indexeddb/server/SQLiteIDBBackingStore.h: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/sql/SQLiteDatabase.cpp: |
| (WebCore::walAutomaticTruncationHook): |
| (WebCore::SQLiteDatabase::enableAutomaticWALTruncation): |
| * platform/sql/SQLiteDatabase.h: |
| * platform/sql/SQLiteStatement.cpp: |
| (WebCore::SQLiteStatement::reset): |
| * platform/sql/SQLiteStatementAutoResetScope.cpp: Added. |
| (WebCore::SQLiteStatementAutoResetScope::SQLiteStatementAutoResetScope): |
| (WebCore::SQLiteStatementAutoResetScope::operator=): |
| (WebCore::SQLiteStatementAutoResetScope::~SQLiteStatementAutoResetScope): |
| * platform/sql/SQLiteStatementAutoResetScope.h: Added. |
| (WebCore::SQLiteStatementAutoResetScope::operator bool const): |
| (WebCore::SQLiteStatementAutoResetScope::operator! const): |
| (WebCore::SQLiteStatementAutoResetScope::get): |
| (WebCore::SQLiteStatementAutoResetScope::operator->): |
| |
| 2020-05-04 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Tapping to focus editable elements should start caret selection at word boundary |
| https://bugs.webkit.org/show_bug.cgi?id=211409 |
| <rdar://problem/62869098> |
| |
| Reviewed by Megan Gardner. |
| |
| Match platform behavior when focusing editable text content by beginning the caret selection at word |
| granularity (i.e. the start or end of a word), rather than character granularity. This will match behavior of |
| other editable widgets on iOS (such as UITextField and UITextView), as well as our current behavior when tapping |
| to change the selection when the text interaction is editable (i.e. when the caret is already visible when |
| tapping). |
| |
| Rebaselined existing layout tests. |
| |
| * editing/VisibleUnits.cpp: |
| (WebCore::wordBoundaryForPositionWithoutCrossingLine): |
| |
| Move logic previously in `WebPage::selectWithGesture` down into `VisibleUnits.h`, as a new standalone helper |
| function. Given a `VisiblePosition`, this new helper will return the given position if it is either already at |
| word boundary or line boundary; if it is within the boundary of a word, it will instead return the start or end |
| of the word. |
| |
| * editing/VisibleUnits.h: |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::handleMousePressEventSingleClick): |
| |
| When setting the selection due to a synthetic single click, automatically adjust the caret position to be at |
| word boundary instead of using the hit-tested position directly. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Make __IPHONE_OS_VERSION_MIN_REQUIRED checks against old versions explicit about watchOS and tvOS |
| https://bugs.webkit.org/show_bug.cgi?id=211402 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::attributesForAttributedStringConversion): Move from __IPHONE_OS_VERSION_MIN_REQUIRED |
| to !PLATFORM(WATCHOS) && !PLATFORM(APPLETV). Move NSExcludedElementsDocumentAttribute to |
| AttributedStringSPI.h. |
| |
| * page/SettingsDefaultValues.h: Rewrite conic gradient conditional to call out |
| tvOS as an exception rather than doing that indirectly through __IPHONE_OS_VERSION_MIN_REQUIRED. |
| * platform/graphics/cg/GradientCG.cpp: |
| (WebCore::Gradient::paint): Ditto. |
| |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: Rewrite |
| HAS_CORE_TEXT_WIDTH_ATTRIBUTE to use !PLATFORM(WATCHOS) && !PLATFORM(APPLETV). |
| (WebCore::variationCapabilitiesForFontDescriptor): Ditto. |
| (WebCore::FontCache::lastResortFallbackFont): Ditto. |
| |
| * platform/graphics/cocoa/FontDescriptionCocoa.cpp: |
| (WebCore::matchSystemFontUse): Use HAVE(SYSTEM_FONT_STYLE_TITLE_0) and |
| HAVE(SYSTEM_FONT_STYLE_TITLE_4) instead of __IPHONE_OS_VERSION_MIN_REQUIRED. |
| This consolidates the watchOS/tvOS issue into the PlatformHave.h file, and |
| does not change behavior at this time. |
| |
| * platform/graphics/cocoa/FontPlatformDataCocoa.mm: |
| (WebCore::cascadeToLastResortAttributesDictionary): Changed this to not use |
| a global since it's only called as part of initializing another global, and |
| to return a RetainPtr. |
| (WebCore::cascadeToLastResortAndVariationsFontDescriptor): Removed |
| WORKAROUND_CORETEXT_VARIATIONS_WITH_FALLBACK_LIST_BUG after researching to |
| be sure it's fixed on recent watchOS and tvOS. Also changed this to return |
| a raw pointer instead of RetainPtr since it returns a single global object. |
| Also removed the CTFontRef argument. |
| (WebCore::FontPlatformData::ctFont const): Updated for the changes above. |
| |
| * platform/graphics/cocoa/IOSurface.mm: |
| (WebCore::IOSurface::surfaceID const): Move from __IPHONE_OS_VERSION_MIN_REQUIRED |
| to !PLATFORM(WATCHOS) && !PLATFORM(APPLETV). |
| * platform/graphics/ios/FontCacheIOS.mm: |
| (WebCore::platformFontWithFamilySpecialCase): Ditto. |
| * platform/graphics/mac/FontCustomPlatformData.cpp: |
| (WebCore::createFontCustomPlatformData): Ditto. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove HAVE(IOSURFACE) checks in Cocoa-platform-specific code |
| https://bugs.webkit.org/show_bug.cgi?id=211389 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| * page/cocoa/MemoryReleaseCocoa.mm: |
| (WebCore::platformReleaseMemory): Remove HAVE(IOSURFACE) since it's always true |
| on Cocoa platforms. |
| * platform/graphics/RemoteVideoSample.cpp: |
| (WebCore::RemoteVideoSample::surface const): Ditto. |
| * platform/graphics/RemoteVideoSample.h: Ditto. |
| * platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: |
| (WebCore::GraphicsContextGLOpenGL::allocateIOSurfaceBackingStore): Ditto. |
| (WebCore::GraphicsContextGLOpenGL::updateFramebufferTextureBackingStoreFromLayer): Ditto. |
| * platform/graphics/cocoa/IOSurface.mm: Ditto. |
| * platform/graphics/cocoa/IOSurfacePoolCocoa.mm: Ditto. |
| * platform/graphics/cocoa/WebGLLayer.h: Ditto. |
| * platform/graphics/cocoa/WebGLLayer.mm: |
| (-[WebGLLayer display]): Ditto. |
| * platform/graphics/cv/ImageTransferSessionVT.h: Ditto. |
| * platform/graphics/cv/ImageTransferSessionVT.mm: Ditto. |
| * platform/graphics/cv/VideoTextureCopierCV.cpp: |
| (WebCore::YCbCrToRGBMatrixForRangeAndTransferFunction): Ditto. |
| (WebCore::VideoTextureCopierCV::copyImageToPlatformTexture): Ditto. |
| * platform/graphics/cv/VideoTextureCopierCV.h: Ditto. |
| * rendering/RenderThemeIOS.h: Ditto. |
| |
| 2020-05-04 Simon Fraser <simon.fraser@apple.com> |
| |
| Overflow scrollbars don't grow when hovered |
| https://bugs.webkit.org/show_bug.cgi?id=210692 |
| <rdar://problem/61977273> |
| |
| Reviewed by Tim Horton. |
| |
| Overlay scrollar interaction has a few behaviors that are mediated by ScrollAnimatorMac. These |
| are a trackpad two-finger tap, which sends a "MayBegin" wheel event (which can be followed by |
| a "Cancelled" on fingers up, if they didn't move), and hovering the scrollbar when visible, which |
| causes it to expand (unhovering causes it to fade out). |
| |
| To track these gestures on the scrolling thread, give ScrollingTree a ScrollingTreeGestureState. |
| |
| Flashing the scrollbars on "MayBegin" is driven by didBeginScrollGesture()/didEndScrollGesture(). |
| This relies on sending these for the correct scrollable area, and matching the begin/cancel, |
| so use the normal scrolling tree event handling code path for "MayBegin", and always send |
| "Cancelled" on the node that received "MayBegin. Do the same for "Began" and "Ended". |
| |
| Scrollbars expanding on hover is controlled by these functions on ScrollAnimatorMac: |
| void mouseEnteredContentArea(); |
| void mouseExitedContentArea(); |
| void mouseMovedInContentArea(); |
| void mouseEnteredScrollbar(Scrollbar*) const; |
| void mouseExitedScrollbar(Scrollbar*) const; |
| |
| This mostly (webkit.org/b/211347) works now that the mayBegin/Canceled state is updated correctly, |
| and is tested by a new test. |
| |
| Tests: fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-hovered.html |
| fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-reveal.html |
| |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::ScrollingTree): |
| (WebCore::ScrollingTree::handleWheelEvent): |
| * page/scrolling/ScrollingTree.h: |
| * page/scrolling/ScrollingTreeGestureState.cpp: Added. |
| (WebCore::ScrollingTreeGestureState::ScrollingTreeGestureState): |
| (WebCore::ScrollingTreeGestureState::receivedWheelEvent): |
| (WebCore::ScrollingTreeGestureState::handleGestureCancel): |
| (WebCore::ScrollingTreeGestureState::nodeDidHandleEvent): |
| (WebCore::ScrollingTreeGestureState::clearAllNodes): |
| * page/scrolling/ScrollingTreeGestureState.h: Copied from Source/WebCore/page/scrolling/ScrollingTreeLatchingController.h. |
| * page/scrolling/ScrollingTreeLatchingController.cpp: |
| (WebCore::ScrollingTreeLatchingController::nodeDidHandleEvent): |
| * page/scrolling/ScrollingTreeLatchingController.h: |
| * page/scrolling/ScrollingTreeScrollingNode.cpp: |
| (WebCore::ScrollingTreeScrollingNode::canHandleWheelEvent const): |
| (WebCore::ScrollingTreeScrollingNode::canScrollWithWheelEvent const): Deleted. |
| * page/scrolling/ScrollingTreeScrollingNode.h: |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent): |
| * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeOverflowScrollingNodeMac::handleWheelEvent): |
| * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm: |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent): |
| * platform/Logging.cpp: |
| (WebCore::initializeLogChannelsIfNecessary): |
| * platform/PlatformWheelEvent.h: |
| (WebCore::PlatformWheelEvent::isGestureStart const): |
| (WebCore::PlatformWheelEvent::isGestureCancel const): |
| * platform/cocoa/ScrollController.mm: |
| (WebCore::ScrollController::handleWheelEvent): |
| * platform/mac/ScrollAnimatorMac.mm: |
| (WebCore::scrollbarState): |
| |
| 2020-05-04 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r261102. |
| https://bugs.webkit.org/show_bug.cgi?id=211418 |
| |
| Revert some debug logging (Requested by smfr on #webkit). |
| |
| Reverted changeset: |
| |
| "REGRESSION: [ Mac WK1 ] inspector/console/console-api.html is |
| flaky crashing" |
| https://bugs.webkit.org/show_bug.cgi?id=211386 |
| https://trac.webkit.org/changeset/261102 |
| |
| 2020-05-04 Chris Dumez <cdumez@apple.com> |
| |
| Drop code path using the legacy CFNetwork cookie change notification SPI |
| https://bugs.webkit.org/show_bug.cgi?id=211411 |
| |
| Reviewed by John Wilander. |
| |
| * platform/network/cocoa/NetworkStorageSessionCocoa.mm: |
| (WebCore::NetworkStorageSession::registerCookieChangeListenersIfNecessary): |
| (WebCore::NetworkStorageSession::unregisterCookieChangeListenersIfNecessary): |
| |
| 2020-05-04 Jack Lee <shihchieh_lee@apple.com> |
| |
| Nullptr crash in CompositeEditCommand::moveParagraphs when changing style on elements that are |
| user-select:none and dir:rtl. |
| https://bugs.webkit.org/show_bug.cgi?id=211206 |
| <rdar://problem/61830589> |
| |
| Reviewed by Geoffrey Garen. |
| |
| In function moveParagraphs check if the destination is an empty position and |
| bail out before moving the paragraphs. |
| |
| Test: fast/editing/justify-user-select-none-dir-rtl-crash.html |
| |
| * editing/CompositeEditCommand.cpp: |
| (WebCore::CompositeEditCommand::moveParagraphs): |
| |
| 2020-05-04 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Implement +[_WKWebAuthenticationPanel clearAllLocalAuthenticatorCredentials] |
| https://bugs.webkit.org/show_bug.cgi?id=211369 |
| <rdar://problem/60246635> |
| |
| Reviewed by Brent Fulgham. |
| |
| Covered by manual tests given auto tests could clear developers' actual credentials. |
| |
| * Modules/webauthn/WebAuthenticationConstants.h: |
| |
| 2020-05-04 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Throttling requestAnimationFrame should be controlled by RenderingUpdateScheduler |
| https://bugs.webkit.org/show_bug.cgi?id=204713 |
| |
| Reviewed by Simon Fraser. |
| |
| rAF and Page rendering were managed by two different timers. Throttling |
| rAF was implemented by changing its timer. After r242624, RenderingUpdate |
| steps have been managed by RenderingUpdateScheduler. This means rAF is |
| now serviced by the preferredFramesPerSecond which is 60 fps regardless |
| it's throttled or not. Moreover the rAF throttling timer was mistakenly |
| kept and it has been running under the old assumption which is: rAF is |
| serviced by a timer only. This means rAF will be serviced by its timer |
| and by the RenderingUpdate steps at the same time when it is supposed to |
| throttle. This will make it fire more than 60 fps in cases which it is |
| supposed to run less than 60 fps. |
| |
| The solution is to have two throttling types: |
| |
| 1) Page throttling (or full throttling): This slows down all the steps |
| of RenderingUpdate for the main document and all the sub-documents. |
| Page throttling reasons are: |
| -- VisuallyIdle: Aggressive throttling. |
| -- LowPowerMode: Half speed throttling. |
| 2) Document throttling (or partial throttling): This only slows down the |
| rAF of a certain document. Document throttling reasons are: |
| -- OutsideViewport: Aggressive throttling. |
| -- NonInteractedCrossOriginFrame: Half speed throttling. |
| |
| RenderingUpdate steps will still be managed by RenderingUpdateScheduler |
| which can be throttled. The assumption is none of these steps will need |
| to run faster than the Page preferredFramesPerSecond. If rAF wants to |
| run slower than the Page because of a Document throttling reason, no rAF |
| callbacks will be serviced before its preferredFrameInterval has elapsed. |
| |
| In this patch, "Half speed throttling" is only implemented for the Page |
| and the Document throttling. The "Aggressive throttling" will be done in |
| following patches. Page rendering was never throttled before. We need to |
| make sure this is not going to affect PLT. Some tests need to be changed |
| and new tests need to be written. All of the throttling tests checks the |
| state of the code but none of them checks the real user's experience. |
| |
| * Headers.cmake: |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::animationInterval const): |
| (WebCore::DocumentTimeline::updateThrottlingState): Deleted. |
| * animation/DocumentTimeline.h: |
| There is no need to have DocumentTimeline throttling. It is already |
| throttled when the page RenderingUpdate is throttled. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::requestAnimationFrame): |
| (WebCore::Document::updateLastHandledUserGestureTimestamp): |
| LowPowerMode throttling is now handled by the Page. So remove its handling |
| from the Document. |
| |
| * dom/ScriptedAnimationController.cpp: |
| (WebCore::ScriptedAnimationController::ScriptedAnimationController): |
| (WebCore::ScriptedAnimationController::page const): |
| (WebCore::ScriptedAnimationController::interval const): |
| (WebCore::ScriptedAnimationController::preferredScriptedAnimationInterval const): |
| (WebCore::ScriptedAnimationController::throttlingReasons const): |
| (WebCore::ScriptedAnimationController::isThrottledRelativeToPage const): |
| (WebCore::ScriptedAnimationController::shouldRescheduleRequestAnimationFrame const): |
| (WebCore::ScriptedAnimationController::registerCallback): |
| (WebCore::ScriptedAnimationController::cancelCallback): |
| (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): |
| (WebCore::ScriptedAnimationController::scheduleAnimation): |
| (WebCore::throttlingReasonToString): Deleted. |
| (WebCore::throttlingReasonsToString): Deleted. |
| (WebCore::ScriptedAnimationController::addThrottlingReason): Deleted. |
| (WebCore::ScriptedAnimationController::removeThrottlingReason): Deleted. |
| (WebCore::ScriptedAnimationController::isThrottled const): Deleted. |
| (WebCore::ScriptedAnimationController::animationTimerFired): Deleted. |
| * dom/ScriptedAnimationController.h: |
| (WebCore::ScriptedAnimationController::addThrottlingReason): |
| (WebCore::ScriptedAnimationController::removeThrottlingReason): |
| Get rid of the rAF throttling timer. Service the rAF callback only when |
| the period from the current time stamp till the last service time stamp |
| is greater than the preferred rAF interval. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::updateScriptedAnimationsAndTimersThrottlingState): |
| ThrottlingReason is now defined outside ScriptedAnimationController. |
| |
| * page/Page.cpp: |
| (WebCore::m_loadsFromNetwork): |
| (WebCore::Page::setLowPowerModeEnabledOverrideForTesting): |
| |
| (WebCore::Page::preferredRenderingUpdateInterval const): |
| Calculate the preferred RenderingUpdate interval from the throttling |
| reasons. |
| |
| (WebCore::Page::setIsVisuallyIdleInternal): |
| (WebCore::Page::handleLowModePowerChange): |
| Call adjustRenderingUpdateFrequency() when isLowPowerModeEnabled or |
| IsVisuallyIdle is toggled. |
| |
| (WebCore::Page::isLowPowerModeEnabled const): Deleted. |
| (WebCore::updateScriptedAnimationsThrottlingReason): Deleted. |
| * page/Page.h: |
| (WebCore::Page::isLowPowerModeEnabled const): |
| (WebCore::Page::throttlingReasons const): |
| (WebCore::Page::canUpdateThrottlingReason const): |
| |
| * page/RenderingUpdateScheduler.cpp: |
| (WebCore::RenderingUpdateScheduler::setPreferredFramesPerSecond): |
| (WebCore::RenderingUpdateScheduler::scheduleAnimation): |
| (WebCore::RenderingUpdateScheduler::adjustRenderingUpdateFrequency): |
| Change the preferredFramesPerSecond of the DisplayRefreshMonitor if the |
| throttling is not aggressive e.g. 10_s. Otherwise use the timer. |
| |
| (WebCore::RenderingUpdateScheduler::scheduleTimedRenderingUpdate): |
| Call adjustFramesPerSecond() when DisplayRefreshMonitor is created. |
| |
| (WebCore::RenderingUpdateScheduler::startTimer): |
| * page/RenderingUpdateScheduler.h: |
| * platform/graphics/AnimationFrameRate.h: Added. |
| (WebCore::preferredFrameInterval): |
| (WebCore::preferredFramesPerSecond): |
| (WebCore::operator<<): |
| Push names of ThrottlingReasons to a TextStream. |
| |
| * platform/graphics/DisplayRefreshMonitor.h: |
| (WebCore::DisplayRefreshMonitor::setPreferredFramesPerSecond): |
| * platform/graphics/DisplayRefreshMonitorManager.cpp: |
| (WebCore::DisplayRefreshMonitorManager::monitorForClient): |
| Rename createMonitorForClient() to monitorForClient() since it may return |
| a cached DisplayRefreshMonitor. |
| |
| (WebCore::DisplayRefreshMonitorManager::setPreferredFramesPerSecond): |
| (WebCore::DisplayRefreshMonitorManager::scheduleAnimation): |
| (WebCore::DisplayRefreshMonitorManager::windowScreenDidChange): |
| No need to call registerClient(). This function was just ensuring the |
| DisplayRefreshMonitor is created. scheduleAnimation() does the same thing. |
| |
| (WebCore::DisplayRefreshMonitorManager::createMonitorForClient): Deleted. |
| (WebCore::DisplayRefreshMonitorManager::registerClient): Deleted. |
| * platform/graphics/DisplayRefreshMonitorManager.h: |
| (WebCore::DisplayRefreshMonitorManager::DisplayRefreshMonitorManager): Deleted. |
| |
| * platform/graphics/GraphicsLayerUpdater.cpp: |
| (WebCore::GraphicsLayerUpdater::GraphicsLayerUpdater): |
| * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: |
| (-[WebDisplayLinkHandler setPreferredFramesPerSecond:]): |
| Set the preferredFramesPerSecond of the CADisplayLink. |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::requestAnimationFrameThrottlingReasons const): |
| (WebCore::Internals::isRequestAnimationFrameThrottled const): Deleted. |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| Replace isRequestAnimationFrameThrottled() which returns a boolean by |
| requestAnimationFrameThrottlingReasons() which returns a string. The |
| string represents the throttling reasons. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove unneeded USE(MEDIAREMOTE) |
| https://bugs.webkit.org/show_bug.cgi?id=211385 |
| |
| Reviewed by Eric Carlson. |
| |
| * platform/audio/cocoa/MediaSessionManagerCocoa.mm: |
| (WebCore::MediaSessionManagerCocoa::updateNowPlayingInfo): Remove USE(MEDIAREMOTE). |
| * platform/mac/MediaRemoteSoftLink.cpp: Ditto. |
| * platform/mac/MediaRemoteSoftLink.h: Ditto. |
| * platform/mac/RemoteCommandListenerMac.mm: |
| (WebCore::RemoteCommandListenerMac::updateSupportedCommands): Ditto. |
| (WebCore::RemoteCommandListenerMac::RemoteCommandListenerMac): Ditto. |
| (WebCore::RemoteCommandListenerMac::~RemoteCommandListenerMac): Ditto. |
| |
| 2020-05-04 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Worker: should use the name of the worker if it exists |
| https://bugs.webkit.org/show_bug.cgi?id=211244 |
| |
| Reviewed by Brian Burg. |
| |
| Test: inspector/worker/runtime-basic.html |
| |
| Pass the `name` from the `WorkerOptions` given to the `Worker` when it's constructed to Web |
| Inspector so it can be used in the frontend UI. |
| |
| Drive-by: replace lots of pointers with references. |
| |
| * workers/WorkerMessagingProxy.cpp: |
| (WebCore::WorkerMessagingProxy::startWorkerGlobalScope): |
| |
| * workers/WorkerInspectorProxy.h: |
| (WebCore::WorkerInspectorProxy::name const): Added. |
| * workers/WorkerInspectorProxy.cpp: |
| (WebCore::WorkerInspectorProxy::workerStarted): |
| (WebCore::WorkerInspectorProxy::workerTerminated): |
| (WebCore::WorkerInspectorProxy::connectToWorkerInspectorController): |
| (WebCore::WorkerInspectorProxy::sendMessageFromWorkerToFrontend): |
| |
| * inspector/InspectorInstrumentation.h: |
| (WebCore::InspectorInstrumentation::workerStarted): |
| (WebCore::InspectorInstrumentation::workerTerminated): |
| * inspector/InspectorInstrumentation.cpp: |
| (WebCore::InspectorInstrumentation::workerStartedImpl): |
| (WebCore::InspectorInstrumentation::workerTerminatedImpl): |
| |
| * inspector/agents/InspectorWorkerAgent.h: |
| * inspector/agents/InspectorWorkerAgent.cpp: |
| (WebCore::InspectorWorkerAgent::sendMessageFromWorkerToFrontend): |
| (WebCore::InspectorWorkerAgent::workerStarted): |
| (WebCore::InspectorWorkerAgent::workerTerminated): |
| (WebCore::InspectorWorkerAgent::connectToAllWorkerInspectorProxiesForPage): |
| (WebCore::InspectorWorkerAgent::connectToWorkerInspectorProxy): |
| (WebCore::InspectorWorkerAgent::disconnectFromWorkerInspectorProxy): |
| |
| 2020-05-04 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: provide a way for inspector to turn on/off ITP debug mode and AdClickAttribution debug mode |
| https://bugs.webkit.org/show_bug.cgi?id=209763 |
| |
| Reviewed by Brian Burg. |
| |
| Tests: inspector/page/overrideSetting-AdClickAttributionDebugModeEnabled.html |
| inspector/page/overrideSetting-ITPDebugModeEnabled.html |
| |
| * inspector/agents/InspectorPageAgent.cpp: |
| (WebCore::InspectorPageAgent::disable): |
| (WebCore::InspectorPageAgent::overrideSetting): |
| |
| * inspector/InspectorClient.h: |
| (WebCore::InspectorClient::setDeveloperPreferenceOverride): Added. |
| (WebCore::InspectorClient::setMockCaptureDevicesEnabledOverride): Deleted. |
| |
| 2020-05-04 Simon Fraser <simon.fraser@apple.com> |
| |
| REGRESSION: [ Mac WK1 ] inspector/console/console-api.html is flaky crashing |
| https://bugs.webkit.org/show_bug.cgi?id=211386 |
| |
| Reviewed by David Kilzer. |
| |
| Add some temporary logging code to get data from Mojave bots related to this |
| NSScrollerImp crash. |
| |
| * platform/mac/ScrollAnimatorMac.mm: |
| (WebCore::dumpPaintersWithDelegates): |
| (WebCore::ScrollAnimatorMac::ScrollAnimatorMac): |
| (WebCore::ScrollAnimatorMac::~ScrollAnimatorMac): |
| (WebCore::ScrollAnimatorMac::didAddVerticalScrollbar): |
| (WebCore::ScrollAnimatorMac::willRemoveVerticalScrollbar): |
| (WebCore::ScrollAnimatorMac::didAddHorizontalScrollbar): |
| (WebCore::ScrollAnimatorMac::willRemoveHorizontalScrollbar): |
| |
| 2020-05-04 Doug Kelly <dougk@apple.com> |
| |
| Add additional null checks to MediaPlayerPrivateMediaSourceAVFObjC |
| https://bugs.webkit.org/show_bug.cgi?id=211134 |
| <rdar://problem/62056577> |
| |
| Reviewed by Daniel Bates. |
| |
| Add additional null checks for a set m_mediaSourcePrivate to MediaPlayerPrivateMediaSourceAVFObjC. Most uses in this |
| class are already guarded, but a few were not, which could lead to a null pointer crash if encountered. |
| |
| No new tests; no functional changes. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::playInternal): |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCDMSession): |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(MEDIA_PLAYER) |
| https://bugs.webkit.org/show_bug.cgi?id=211378 |
| |
| Reviewed by Alex Christensen. |
| |
| * platform/RemoteCommandListener.cpp: Remove uneeded check for HAVE(MEDIA_PLAYER) |
| in code that already checks for Cocoa platforms explicitly. |
| |
| * platform/audio/ios/MediaSessionManagerIOS.mm: |
| (WebCore::MediaSessionManageriOS::configureWireLessTargetMonitoring): Removed |
| check of HAVE(MEDIA_PLAYER) in a Cocoa-only source file. |
| * platform/ios/RemoteCommandListenerIOS.h: Ditto. Also removed #pragma once and |
| some other unnecessary things because this is only included in the .mm file below. |
| * platform/ios/RemoteCommandListenerIOS.mm: Ditto. |
| |
| 2020-05-04 Guillem Vinals <gvinals@apple.com> |
| |
| WebGPU: Textures should be able to have OUTPUT_ATTACHMENT | SAMPLED usage flags |
| https://bugs.webkit.org/show_bug.cgi?id=211345 |
| <rdar://problem/62264423> |
| |
| Reviewed by Myles C. Maxfield. |
| |
| Added support for off-screen render targets. |
| |
| Test: webgpu/textures-textureviews.html |
| |
| * platform/graphics/gpu/cocoa/GPUTextureMetal.mm: |
| (WebCore::mtlTextureUsageForGPUTextureUsageFlags): |
| |
| 2020-05-04 Guillem Vinals <gvinals@apple.com> |
| |
| WebGPU: copyTextureToTexture() has an implementation bug (src copy view info is used also as dst) |
| https://bugs.webkit.org/show_bug.cgi?id=211303 |
| |
| Reviewed by Daniel Bates. |
| |
| The source copy information is also used as the destination copy information. |
| |
| Test: webgpu/blit-commands-texture-to-texture.html |
| |
| * platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm: |
| (WebCore::GPUCommandBuffer::copyTextureToTexture): |
| |
| 2020-05-04 Antoine Quint <graouts@apple.com> |
| |
| Media controls tracks menu shows "Auto" selected instead of track selected via the JS API |
| https://bugs.webkit.org/show_bug.cgi?id=211230 |
| <rdar://problem/62648409> |
| |
| Reviewed by Eric Carlson. |
| |
| Test: media/modern-media-controls/tracks-support/tracks-support-text-track-selected-via-media-api.html |
| |
| We're fixing two issues with the captions menu on macOS here. |
| |
| First, if a text track was marked as "showing" with the JS API, we would not show it as selected in the UI |
| because MediaControlsHost would report that the captionDisplayMode was "automatic" and we'd take this as |
| sufficient data to say that the "Automatic (Recommended)" item should be shown as selected. We now only |
| do this if we also don't have any text tracks set as "showing". |
| |
| The second issue was when trying to select "Automatic (Recommended)" when a text track had been marked as |
| "showing" with the JS API. Calling `setSelectedTextTrack()` on MediaControlsHost in this case was not sufficient |
| because HTMLMediaElement::setSelectedTextTrack is a no-op if the automatic text track is provided but captionDisplayMode |
| is still set to "automatic". To address this, we first disable all text tracks before calling `setSelectedTextTrack()`. |
| |
| * Modules/modern-media-controls/media/tracks-support.js: |
| (TracksSupport.prototype.tracksPanelIsTrackInSectionSelected): |
| (TracksSupport.prototype.tracksPanelSelectionDidChange): |
| |
| 2020-05-04 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Override the table computed height when content needs more space |
| https://bugs.webkit.org/show_bug.cgi?id=211367 |
| |
| Reviewed by Antti Koivisto. |
| |
| * layout/FormattingContextGeometry.cpp: |
| (WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const): |
| * layout/blockformatting/BlockFormattingContextGeometry.cpp: |
| (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin): |
| |
| 2020-05-04 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Use distributeAvailableSpace for row sizing |
| https://bugs.webkit.org/show_bug.cgi?id=211366 |
| |
| Reviewed by Antti Koivisto. |
| |
| Switch over to the generic space distribution for table row sizing. |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::RowSpan::hasSpan): |
| (WebCore::Layout::RowSpan::isSpanned): |
| (WebCore::Layout::RowSpan::spanCount): |
| (WebCore::Layout::RowSpan::startSpan): |
| (WebCore::Layout::RowSpan::endSpan): |
| (WebCore::Layout::RowSpan::index): |
| (WebCore::Layout::RowSpan::size): |
| (WebCore::Layout::RowSpan::spacing): |
| (WebCore::Layout::distributeAvailableSpace): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| |
| 2020-05-04 Youenn Fablet <youenn@apple.com> |
| |
| Camera video samples have a bad orientation if upside down |
| https://bugs.webkit.org/show_bug.cgi?id=211373 |
| |
| Reviewed by Eric Carlson. |
| |
| Manually tested on iPad and iPhones. |
| |
| * platform/mediastream/mac/AVVideoCaptureSource.mm: |
| (WebCore::AVVideoCaptureSource::computeSampleRotation): |
| -90 should be the same as 270 not -270. |
| |
| 2020-05-04 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| [gtk] isMainThread() assert when running minibrowser in debug builds. |
| https://bugs.webkit.org/show_bug.cgi?id=211355 |
| |
| Reviewed by Mark Lam. |
| |
| Using NeverDestroyed<const AtomString> is discouraged if it is in the non main thread. This can be quite easily wrong: |
| if the running thread is one of WorkerPool, then this is wrong since AtomStringTable will be destroyed every time underlying |
| Thread is shutdown. If this is invoked by AutomaticThread, this is also wrong due to the same reason etc. This is why |
| we introduced MainThreadNeverDestroyed and use it for const AtomString. This restriction found the bug that we are using |
| `NeverDestroyed<const AtomString>` in non main thread. We should not do that. |
| |
| This patch fixes the issue by introducing TextureMapperShaderProgram::Variable instead of using AtomString. Then this code |
| no longer has thread affinity. |
| |
| * platform/graphics/texmap/TextureMapperShaderProgram.cpp: |
| (WebCore::TextureMapperShaderProgram::getLocation): Deleted. |
| * platform/graphics/texmap/TextureMapperShaderProgram.h: |
| |
| 2020-05-04 Emilio Cobos Álvarez <emilio@crisal.io> |
| |
| Put lh / rlh units behind a flag until bug 211351 is sorted out. |
| https://bugs.webkit.org/show_bug.cgi?id=211356 |
| |
| Reviewed by Antti Koivisto. |
| |
| * css/parser/CSSParserToken.cpp: Use the new runtime flag to disable parsing the units. |
| (WebCore::cssPrimitiveValueUnitFromTrie): |
| * page/RuntimeEnabledFeatures.h: Define the new runtime flag. |
| (WebCore::RuntimeEnabledFeatures::setLineHeightUnitsEnabled): |
| (WebCore::RuntimeEnabledFeatures::lineHeightUnitsEnabled const): |
| |
| 2020-05-03 David Kilzer <ddkilzer@apple.com> |
| |
| Use LocalCurrentGraphicsContext in WebKit::convertPlatformImageToBitmap() |
| <https://webkit.org/b/211274> |
| |
| Reviewed by Darin Adler. |
| |
| * platform/mac/LocalCurrentGraphicsContext.h: |
| (WebCore::LocalCurrentGraphicsContext::LocalCurrentGraphicsContext): |
| (WebCore::LocalCurrentGraphicsContext::~LocalCurrentGraphicsContext): |
| - Export methods for use in WebKit. |
| |
| 2020-05-03 David Kilzer <ddkilzer@apple.com> |
| |
| Fix static analyzer false positive in -[WebUndefined undefined] |
| <https://webkit.org/b/211353> |
| |
| Reviewed by Darin Adler. |
| |
| * bridge/objc/WebScriptObject.mm: |
| (+[WebUndefined allocWithZone:]): |
| (-[WebUndefined initWithCoder:]): |
| (-[WebUndefined retain]): |
| (-[WebUndefined autorelease]): |
| - Update method signatures. |
| (+[WebUndefined undefined]): |
| - Fix clang static analyzer false positive by using idiomatic |
| -alloc, -init calls to create object. These methods call |
| -allocWithZone:, so this still uses the singleton pattern. |
| |
| 2020-05-03 Daniel Bates <dabates@apple.com> |
| |
| Sometimes cannot find <textarea> in list of editable elements |
| https://bugs.webkit.org/show_bug.cgi?id=211348 |
| <rdar://problem/62231067> |
| |
| Reviewed by Simon Fraser. |
| |
| When building the editable region add the bounds of the text control to the region instead |
| of the bounds of its inner text element even though it is the latter that is actually editable. |
| Using the bounds of the text control is more in line with a user's expectation for the editable |
| portion of a text control: the entire control. So, do that. |
| |
| Tests: editing/editable-region/hit-test-textarea-empty-space.html |
| editing/editable-region/search-field-basic.html |
| editing/editable-region/text-field-basic.html |
| editing/editable-region/textarea-basic.html |
| |
| * rendering/EventRegion.cpp: |
| (WebCore::EventRegionContext::unite): |
| (WebCore::EventRegion::unite): |
| Add a new bool as to whether to override the user-modify check and just assume that the region |
| is for something editable. This is needed because the form control (e.g. the <input> or <textarea> |
| aka the shadow host element) isn't actually editable itself. Its inner text element is editable. |
| RenderBlock::paintObject() will pass true for this override when event region painting such a |
| control and the control's inner text element is editable so that the controls bounds are added to |
| the editable region. |
| * rendering/EventRegion.h: Add a bool, defaulting to false to keep the current behavior. While |
| I am here remove some unneeded WEBCORE_EXPORT attributions. |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::paintObject): Pass a value for the override argument. It will be true |
| if this block is actually a text control and its inner text element is editable. Otherwise, it |
| will be false. There is also no longer a need to descend into the children of a text control |
| because I only care to record the bounds of the control itself as editable, not its inner text |
| element. |
| |
| 2020-05-03 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Turns horizontal space distribution into a generic space distribution |
| https://bugs.webkit.org/show_bug.cgi?id=211352 |
| |
| Reviewed by Antti Koivisto. |
| |
| Horizontal(column) and vertical(row) space distributions use essentially the same logic to distribute |
| the extra space among the columns/rows. |
| This patch turns the horizontal space distribution function into a generic space distribution code so |
| that we can use it for row sizing as well. |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::ColumnSpan::hasSpan): |
| (WebCore::Layout::ColumnSpan::isSpanned): |
| (WebCore::Layout::ColumnSpan::spanCount): |
| (WebCore::Layout::ColumnSpan::startSpan): |
| (WebCore::Layout::ColumnSpan::endSpan): |
| (WebCore::Layout::ColumnSpan::index): |
| (WebCore::Layout::ColumnSpan::size): |
| (WebCore::Layout::ColumnSpan::spacing): |
| (WebCore::Layout::distributeAvailableSpace): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): |
| * layout/tableformatting/TableGrid.h: |
| (WebCore::Layout::TableGrid::slot const): |
| |
| 2020-05-03 Youenn Fablet <youenn@apple.com> |
| |
| AudioMediaStreamTrackRendererCocoa should create/start/stop its remote unit on the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=211287 |
| |
| Reviewed by Eric Carlson. |
| |
| Creating/starting/stopping audio units in different threads is error prone. |
| Now that we have an observer model where we have observers for when to play in the main thread and |
| based on that, we decide to receive audio samples in a background thread, we can simplify the logic of AudioMediaStreamTrackRendererCocoa. |
| We do this by creating/starting the unit in AudioMediaStreamTrackRendererCocoa::start. |
| At that point, AudioMediaStreamTrackRendererCocoa is not expected to receive any sample. |
| Just after starting, AudioTrackPrivateMediaStream will receive audio samples and forward them to AudioMediaStreamTrackRendererCocoa. |
| AudioMediaStreamTrackRendererCocoa will then create in a background thread the AudioSampleDataSource that is responsible to adapt the received audio samples to the unit. |
| |
| Manually tested. |
| |
| * platform/audio/mac/AudioSampleDataSource.h: |
| (WebCore::AudioSampleDataSource::inputDescription const): |
| * platform/audio/mac/CAAudioStreamDescription.h: |
| * platform/mediastream/AudioTrackPrivateMediaStream.cpp: |
| (WebCore::AudioTrackPrivateMediaStream::startRenderer): |
| Ensure to start the unit and then start gettting audio samples. |
| * platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.cpp: |
| (WebCore::AudioMediaStreamTrackRendererCocoa::start): |
| (WebCore::AudioMediaStreamTrackRendererCocoa::stop): |
| (WebCore::AudioMediaStreamTrackRendererCocoa::clear): |
| (WebCore::AudioMediaStreamTrackRendererCocoa::pushSamples): |
| (WebCore::AudioMediaStreamTrackRendererCocoa::render): |
| * platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.h: |
| |
| 2020-05-03 Rob Buis <rbuis@igalia.com> |
| |
| atob() should not accept a vertical tab |
| https://bugs.webkit.org/show_bug.cgi?id=184529 |
| |
| Reviewed by Darin Adler. |
| |
| The forgiving-base64 decode algorithm [1] uses [2] to strip |
| out ASCII whitespace which does not include vertical tabs, so |
| change the atob() implementation to not strip out vertical |
| tabs and thus to fail decode on vertical tabs. |
| |
| [1] https://infra.spec.whatwg.org/#forgiving-base64-decode |
| [2] https://infra.spec.whatwg.org/#ascii-whitespace |
| |
| Behavior matches Firefox and Chrome. |
| |
| * page/Base64Utilities.cpp: |
| (WebCore::Base64Utilities::atob): |
| * platform/network/DataURLDecoder.cpp: |
| (WebCore::DataURLDecoder::decodeBase64): |
| |
| 2020-05-02 Simon Fraser <simon.fraser@apple.com> |
| |
| Add a log channel for OverlayScrollbars |
| https://bugs.webkit.org/show_bug.cgi?id=211329 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Overlay scrollbar behavior is opaque. This log channel will add clarity. |
| |
| * platform/Logging.h: |
| * platform/mac/ScrollAnimatorMac.mm: |
| (operator<<): |
| (-[WebScrollbarPartAnimation initWithScrollbar:featureToAnimate:animateFrom:animateTo:duration:]): |
| (-[WebScrollbarPartAnimation startAnimation]): |
| (-[WebScrollbarPartAnimation setCurrentProgress:setCurrentProgress:]): |
| (WebCore::ScrollAnimatorMac::mouseEnteredContentArea): |
| (WebCore::ScrollAnimatorMac::mouseExitedContentArea): |
| (WebCore::ScrollAnimatorMac::mouseMovedInContentArea): |
| (WebCore::ScrollAnimatorMac::didBeginScrollGesture const): |
| (WebCore::ScrollAnimatorMac::didEndScrollGesture const): |
| (WebCore::ScrollAnimatorMac::mayBeginScrollGesture const): |
| (WebCore::ScrollAnimatorMac::handleWheelEventPhase): |
| |
| 2020-05-02 Simon Fraser <simon.fraser@apple.com> |
| |
| Make it possible to test overlay scrollbar interactions |
| https://bugs.webkit.org/show_bug.cgi?id=211342 |
| |
| Reviewed by Daniel Bates. |
| |
| Add internals.horizontalScrollbarState() and internals.verticalScrollbarState() and hook them |
| up via ScrollableArea to ScrollAnimatorMac. They dump state based on the NSScrollerImp state. |
| |
| Make internals.setUsesOverlayScrollbars(true) actually trigger real overlay scrollbars by notifying |
| the ScrollbarTheme about the scrollbar style change. |
| |
| Tests: fast/scrolling/mac/scrollbars/overlay-scrollbar-hovered.html |
| fast/scrolling/mac/scrollbars/overlay-scrollbar-reveal.html |
| fast/scrolling/mac/scrollbars/overlay-scrollbar-state.html |
| fast/scrolling/mac/scrollbars/scrollbar-state.html |
| |
| * platform/ScrollAnimator.h: |
| (WebCore::ScrollAnimator::ScrollAnimator::horizontalScrollbarStateForTesting const): |
| (WebCore::ScrollAnimator::ScrollAnimator::verticalScrollbarStateForTesting const): |
| * platform/ScrollableArea.cpp: |
| (WebCore::ScrollableArea::horizontalScrollbarStateForTesting const): |
| (WebCore::ScrollableArea::verticalScrollbarStateForTesting const): |
| * platform/ScrollableArea.h: |
| * platform/mac/NSScrollerImpDetails.h: |
| * platform/mac/ScrollAnimatorMac.h: |
| * platform/mac/ScrollAnimatorMac.mm: |
| (WebCore::scrollbarState): |
| (WebCore::ScrollAnimatorMac::horizontalScrollbarStateForTesting const): |
| (WebCore::ScrollAnimatorMac::verticalScrollbarStateForTesting const): |
| * testing/Internals.cpp: |
| (WebCore:: const): |
| (WebCore::Internals::scrollbarOverlayStyle const): |
| (WebCore::Internals::scrollbarUsingDarkAppearance const): |
| (WebCore::Internals::horizontalScrollbarState const): |
| (WebCore::Internals::verticalScrollbarState const): |
| (WebCore::Internals::setUsesOverlayScrollbars): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-05-02 Daniel Bates <dabates@apple.com> |
| |
| Page::editableElementsInRect() should return root editable elements |
| https://bugs.webkit.org/show_bug.cgi?id=211343 |
| <rdar://problem/60015801> |
| |
| Reviewed by Simon Fraser. |
| |
| Return the root editable element for each non-text form control editable element |
| inside the search rect as it may not have been hit itself. This can happen if the |
| search rect is small enough to intersect only child elements of the root editable |
| elements. |
| |
| * page/Page.cpp: |
| (WebCore::Page::editableElementsInRect const): |
| (WebCore::isEditableTextInputElement): Deleted. |
| |
| 2020-05-02 Simon Fraser <simon.fraser@apple.com> |
| |
| scrollableAreaForScrollingNodeID() gives the wrong answer for the FrameView |
| https://bugs.webkit.org/show_bug.cgi?id=211310 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Given the FrameView's scrollingNodeID, RenderLayerCompositor::scrollableAreaForScrollingNodeID() |
| would return the RenderView's layer when it should return the FrameView itself. |
| |
| Fixing this allows removal of a special-case in setActiveScrollSnapIndices(). |
| |
| No behavior change. |
| |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::setActiveScrollSnapIndices): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::scrollableAreaForScrollingNodeID const): |
| |
| 2020-05-02 Simon Fraser <simon.fraser@apple.com> |
| |
| handleWheelEventPhase() should include the relevant ScrollingNodeID |
| https://bugs.webkit.org/show_bug.cgi?id=211315 |
| |
| Reviewed by Tim Horton. |
| |
| handleWheelEventPhase() is used to send information about wheel event phases |
| to the main thread, which make their way to ScrollAnimatorMac::handleWheelEventPhase() |
| and are used to update the state of overlay scrollbars. In order to talk to the |
| correct set of scrollbars with overflow:scroll, we need to send along the ScrollingNodeID |
| and map that to the appropriate ScrollableArea. |
| |
| Will be tested by future overlay scrollbar tests. |
| |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::handleWheelEventPhase): |
| * page/scrolling/AsyncScrollingCoordinator.h: |
| * page/scrolling/ScrollingCoordinator.cpp: |
| (WebCore::ScrollingCoordinator::handleWheelEventPhase): Deleted. |
| * page/scrolling/ScrollingCoordinator.h: |
| (WebCore::ScrollingCoordinator::handleWheelEventPhase): |
| * page/scrolling/ScrollingTree.h: |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::handleWheelEventPhase): |
| * page/scrolling/ThreadedScrollingTree.h: |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent): |
| * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeOverflowScrollingNodeMac::handleWheelEvent): |
| * platform/mac/ScrollAnimatorMac.mm: |
| |
| 2020-05-02 Devin Rousso <drousso@apple.com> |
| |
| [CSS Easing 1] implement `jump-*` step positions |
| https://bugs.webkit.org/show_bug.cgi?id=211271 |
| |
| Reviewed by Dean Jackson. |
| |
| Add support for `jump-start`, `jump-end`, `jump-none`, and `jump-both` step positions inside |
| the `steps()` CSS timing function <https://drafts.csswg.org/css-easing-1/#step-position>. |
| |
| Adjust existing serialization logic to match the spec <https://drafts.csswg.org/css-easing-1/#serialization>: |
| - omit `end` (and `jump-end`) |
| - the value `step-start` should result in `steps(1, start)` instead of `step-start` |
| - the value `step-end` should result in `steps(1)` instead of `step-end` |
| |
| Tests: animations/computed-style.html |
| fast/css/animation-steps-calculated-value.html |
| transitions/transitions-parsing.html |
| web-platform-tests/css/css-animations/parsing/animation-timing-function-computed.html |
| web-platform-tests/css/css-animations/parsing/animation-timing-function-valid.html |
| web-platform-tests/css/css-easing/step-timing-functions-output.html |
| web-platform-tests/css/css-easing/step-timing-functions-syntax.html |
| web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html |
| web-platform-tests/css/css-transitions/parsing/transition-timing-function-valid.html |
| web-platform-tests/web-animations/timing-model/time-transformations/transformed-progress.html |
| |
| * css/CSSValueKeywords.in: |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::consumeSteps): |
| (WebCore::consumeAnimationTimingFunction): |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::createTimingFunctionValue): |
| * css/CSSToStyleMap.cpp: |
| (WebCore::CSSToStyleMap::mapAnimationTimingFunction): |
| |
| * css/CSSTimingFunctionValue.h: |
| (WebCore::CSSStepsTimingFunctionValue::create): |
| (WebCore::CSSStepsTimingFunctionValue::stepPosition const): Added. |
| (WebCore::CSSStepsTimingFunctionValue::CSSStepsTimingFunctionValue): |
| (WebCore::CSSStepsTimingFunctionValue::stepAtStart const): Deleted. |
| * css/CSSTimingFunctionValue.cpp: |
| (WebCore::CSSStepsTimingFunctionValue::customCSSText const): |
| (WebCore::CSSStepsTimingFunctionValue::equals const): |
| |
| * platform/animation/TimingFunction.h: |
| (WebCore::StepsTimingFunction::create): |
| (WebCore::StepsTimingFunction::StepsTimingFunction): |
| (WebCore::StepsTimingFunction::stepPosition): Added. |
| (WebCore::StepsTimingFunction::setStepPosition): Added. |
| (WebCore::StepsTimingFunction::clone): |
| (WebCore::StepsTimingFunction::stepAtStart): Deleted. |
| (WebCore::StepsTimingFunction::setStepAtStart): Deleted. |
| * platform/animation/TimingFunction.cpp: |
| (WebCore::operator<<): |
| (WebCore::TimingFunction::transformTime): |
| (WebCore::TimingFunction::createFromCSSValue): |
| (WebCore::TimingFunction::cssText const): |
| |
| 2020-05-01 Tim Horton <timothy_horton@apple.com> |
| |
| Books sometimes ends up with blank pages, especially after adjusting font size |
| https://bugs.webkit.org/show_bug.cgi?id=211265 |
| <rdar://problem/59898144> |
| |
| Reviewed by Darin Adler. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::setViewExposedRect): |
| Rename "hasRectChanged" because it only tests if the optional-state of the |
| rect has changed, not the actual value. |
| |
| 2020-05-01 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Text manipulation should observe the value attribute of some input elements |
| https://bugs.webkit.org/show_bug.cgi?id=211307 |
| <rdar://problem/61568528> |
| |
| Reviewed by Darin Adler. |
| |
| Teach TextManipulationController to detect the `value` attribute in input elements of type "button" and |
| "submit". To do this, we plumb the element through to `isAttributeForTextManipulation` and check `isTextButton()` |
| if "value" attribute is being considered. |
| |
| Test: TextManipulation.StartTextManipulationExtractsValuesFromButtonInputs |
| |
| * editing/TextManipulationController.cpp: |
| (WebCore::isAttributeForTextManipulation): |
| (WebCore::TextManipulationController::observeParagraphs): |
| |
| 2020-05-01 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r259036) Unable to post comments on Jira |
| https://bugs.webkit.org/show_bug.cgi?id=211122 |
| <rdar://problem/62561879> |
| |
| Unreviewed, revert r259036 as the new behavior does not match other browsers |
| and broke some Jira instances. |
| |
| * loader/FormSubmission.cpp: |
| (WebCore::FormSubmission::populateFrameLoadRequest): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::addExtraFieldsToRequest): |
| (WebCore::FrameLoader::addHTTPOriginIfNeeded): |
| (WebCore::FrameLoader::loadResourceSynchronously): |
| (WebCore::FrameLoader::loadDifferentDocumentItem): |
| * loader/FrameLoader.h: |
| * loader/NavigationScheduler.cpp: |
| * loader/PingLoader.cpp: |
| (WebCore::PingLoader::sendPing): |
| * loader/SubresourceLoader.cpp: |
| (WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl): |
| * loader/cache/CachedResourceRequest.cpp: |
| (WebCore::CachedResourceRequest::updateReferrerAndOriginHeaders): |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::doesRequestNeedHTTPOriginHeader): Deleted. |
| * platform/network/ResourceRequestBase.h: |
| |
| 2020-05-01 Jack Lee <shihchieh_lee@apple.com> |
| |
| Unreviewed, amend change log entry for r260831. |
| |
| * ChangeLog: |
| |
| 2020-05-01 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, another build fix after r260962. |
| |
| * page/Page.h: |
| |
| 2020-05-01 Daniel Bates <dabates@apple.com> |
| |
| Avoid unnecessary copying in AnimationTimeline and other clean ups |
| https://bugs.webkit.org/show_bug.cgi?id=211309 |
| |
| Reviewed by Simon Fraser. |
| |
| Return animations by const lvalue ref to avoid copying the Vectors. |
| Default the constructor and destructor implementations. Remove an |
| unnessary argument name from animationsForElement() and re-arrange |
| decls to make class definition more idiomatic. |
| |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::AnimationTimeline): Deleted. |
| (WebCore::AnimationTimeline::~AnimationTimeline): Deleted. |
| * animation/AnimationTimeline.h: |
| (WebCore::AnimationTimeline::relevantAnimations const): |
| (WebCore::AnimationTimeline::allAnimations const): |
| |
| 2020-05-01 Daniel Bates <dabates@apple.com> |
| |
| Change HitTestResult::NodeSet from set of RefPtrs to set of Refs |
| https://bugs.webkit.org/show_bug.cgi?id=211306 |
| |
| Reviewed by Simon Fraser. |
| |
| HitTestResult::listBasedTestResult() never returns a set with nullptrs in it. |
| So, change the set declaration from ListHashSet<RefPtr<Node>> to ListHashSet<Ref<Node>>. |
| This way people are not tempted to unnecessarily null check the nodes in the set. |
| |
| As I made this change to TreeScope::elementsFromPoint() I noticed that retargetToScope(), |
| which is called by it, returned a Node&. So, I changed it to return a Ref<Node>. That |
| required me to fix up caretRangeFromPoint(), which lead me to fix up nodeFromPoint() as well. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::caretRangeFromPoint): |
| * dom/EventPath.cpp: |
| (WebCore::RelatedNodeRetargeter::checkConsistency): |
| * dom/TreeScope.cpp: |
| (WebCore::TreeScope::retargetToScope const): |
| (WebCore::TreeScope::nodeFromPoint): |
| (WebCore::TreeScope::elementFromPoint): |
| (WebCore::TreeScope::elementsFromPoint): |
| * dom/TreeScope.h: |
| * page/Page.cpp: |
| (WebCore::Page::editableElementsInRect const): |
| * rendering/HitTestResult.cpp: |
| (WebCore::appendToNodeSet): |
| (WebCore::HitTestResult::HitTestResult): |
| (WebCore::HitTestResult::operator=): |
| (WebCore::HitTestResult::addNodeToListBasedTestResultCommon): |
| (WebCore::HitTestResult::append): |
| * rendering/HitTestResult.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::nodesFromRect const): |
| |
| 2020-05-01 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed build fix after r260962. |
| |
| * page/Page.cpp: |
| (WebCore::Page::setCORSDisablingPatterns): |
| * page/Page.h: |
| (WebCore::Page::setCORSDisablingPatterns): Deleted. |
| |
| 2020-05-01 Kenneth Russell <kbr@chromium.org> |
| |
| [WebGL2] Refactor texImage2D and texSubImage2D taking ImageBitmap, ImageData, Image, ArrayBufferView |
| https://bugs.webkit.org/show_bug.cgi?id=210766 |
| |
| Reviewed by Dean Jackson. |
| |
| Refactor the texture upload paths taking DOM sources and |
| ArrayBuffers so that texImage/texSubImage and 2D/3D textures are |
| handled with the same entry point. Hook up WebGL 2.0 pixel unpack |
| parameters for selecting sub-rectangles during texture uploads. |
| Refactor context initialization to support WebGL 2.0-specific code |
| paths. |
| |
| Remove duplicate code validating the type of the ArrayBufferView |
| passed to readPixels that was added in the patch for Bug 209515, |
| and validation code subsumed by ANGLE. |
| |
| With this patch, dozens more texture-related WebGL 2.0 conformance |
| tests are passing completely, including all of those under the |
| directories: |
| |
| webgl/2.0.0/conformance2/textures/ |
| canvas_sub_rectangle/ |
| image_data/ |
| |
| The svg_image/ tests in this directory demonstrate browser |
| inconsistencies in SVG handling, and are temporarily skipped. |
| These will be investigated in Bug 211220. |
| |
| Other conformance tests progress or change results, which is |
| expected until WebGL2RenderingContext is fully implemented. |
| |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::create): |
| (WebCore::WebGL2RenderingContext::WebGL2RenderingContext): |
| (WebCore::WebGL2RenderingContext::initializeNewContext): |
| (WebCore::WebGL2RenderingContext::resetUnpackParameters): |
| (WebCore::WebGL2RenderingContext::restoreUnpackParameters): |
| (WebCore::WebGL2RenderingContext::initializeShaderExtensions): |
| (WebCore::WebGL2RenderingContext::getTextureSourceSubRectangle): |
| (WebCore::WebGL2RenderingContext::pixelStorei): |
| (WebCore::WebGL2RenderingContext::texStorage2D): |
| (WebCore::WebGL2RenderingContext::texImage2D): |
| (WebCore::WebGL2RenderingContext::texImage3D): |
| (WebCore::WebGL2RenderingContext::texSubImage2D): |
| (WebCore::WebGL2RenderingContext::texSubImage3D): |
| (WebCore::WebGL2RenderingContext::initializeTransformFeedbackBufferCache): Deleted. |
| (WebCore::WebGL2RenderingContext::initializeSamplerCache): Deleted. |
| (WebCore::WebGL2RenderingContext::sliceTypedArrayBufferView): Deleted. |
| * html/canvas/WebGL2RenderingContext.h: |
| * html/canvas/WebGLRenderingContext.cpp: |
| (WebCore::WebGLRenderingContext::create): |
| (WebCore::WebGLRenderingContext::WebGLRenderingContext): |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::ScopedUnpackParametersResetRestore::ScopedUnpackParametersResetRestore): |
| (WebCore::ScopedUnpackParametersResetRestore::~ScopedUnpackParametersResetRestore): |
| (WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase): |
| (WebCore::WebGLRenderingContextBase::initializeNewContext): |
| (WebCore::WebGLRenderingContextBase::resetUnpackParameters): |
| (WebCore::WebGLRenderingContextBase::restoreUnpackParameters): |
| (WebCore::WebGLRenderingContextBase::compressedTexImage2D): |
| (WebCore::WebGLRenderingContextBase::compressedTexSubImage2D): |
| (WebCore::WebGLRenderingContextBase::validateSettableTexInternalFormat): |
| (WebCore::WebGLRenderingContextBase::copyTexSubImage2D): |
| (WebCore::WebGLRenderingContextBase::generateMipmap): |
| (WebCore::WebGLRenderingContextBase::getTexParameter): |
| (WebCore::WebGLRenderingContextBase::readPixels): |
| (WebCore::WebGLRenderingContextBase::sentinelEmptyRect): |
| (WebCore::WebGLRenderingContextBase::safeGetImageSize): |
| (WebCore::WebGLRenderingContextBase::getImageDataSize): |
| (WebCore::WebGLRenderingContextBase::getTexImageSourceSize): |
| (WebCore::WebGLRenderingContextBase::texImageSourceHelper): |
| (WebCore::WebGLRenderingContextBase::texImageArrayBufferViewHelper): |
| (WebCore::WebGLRenderingContextBase::texImageImpl): |
| (WebCore::WebGLRenderingContextBase::texImage2DBase): |
| (WebCore::WebGLRenderingContextBase::texSubImage2DBase): |
| (WebCore::WebGLRenderingContextBase::getTexImageFunctionName): |
| (WebCore::WebGLRenderingContextBase::validateTexFunc): |
| (WebCore::WebGLRenderingContextBase::texImage2D): |
| (WebCore::WebGLRenderingContextBase::texSubImage2D): |
| (WebCore::WebGLRenderingContextBase::validateArrayBufferType): |
| (WebCore::WebGLRenderingContextBase::validateTexFuncData): |
| (WebCore::WebGLRenderingContextBase::validateTexFuncParameters): |
| (WebCore::WebGLRenderingContextBase::addExtensionSupportedFormatsAndTypes): |
| (WebCore::WebGLRenderingContextBase::addExtensionSupportedFormatsAndTypesWebGL2): |
| (WebCore::WebGLRenderingContextBase::validateTexImageSourceFormatAndType): |
| (WebCore::WebGLRenderingContextBase::copyTexImage2D): |
| (WebCore::WebGLRenderingContextBase::drawImageIntoBuffer): |
| (WebCore::WebGLRenderingContextBase::texParameter): |
| (WebCore::WebGLRenderingContextBase::getUnpackPixelStoreParams const): |
| (WebCore::WebGLRenderingContextBase::validateTextureBinding): |
| (WebCore::WebGLRenderingContextBase::validateTexImageBinding): |
| (WebCore::WebGLRenderingContextBase::validateTexture2DBinding): |
| (WebCore::WebGLRenderingContextBase::validateSize): |
| (WebCore::WebGLRenderingContextBase::validateImageBitmap): |
| (WebCore::WebGLRenderingContextBase::maybeRestoreContext): |
| (WebCore::WebGLRenderingContextBase::texImageSource2D): Deleted. |
| (WebCore::WebGLRenderingContextBase::texImage2DImpl): Deleted. |
| (WebCore::WebGLRenderingContextBase::texSubImage2DImpl): Deleted. |
| * html/canvas/WebGLRenderingContextBase.h: |
| (WebCore::WebGLRenderingContextBase::getTextureSourceSize): |
| (WebCore::WebGLRenderingContextBase::validateTexImageSubRectangle): |
| * platform/graphics/IntRect.cpp: |
| (WebCore::IntRect::isValid const): |
| * platform/graphics/IntRect.h: |
| |
| 2020-05-01 Jack Lee <shihchieh_lee@apple.com> |
| |
| Nullptr crash in CompositeEditCommand::cloneParagraphUnderNewElement when indent |
| and align a paragraph. |
| https://bugs.webkit.org/show_bug.cgi?id=211273 |
| <rdar://problem/61885958> |
| |
| Reviewed by Geoffrey Garen. |
| |
| A load event can fire when we clone and append a paragraph. Check if the elements |
| are removed in the event and bail out. |
| |
| Test: fast/editing/indent-then-justifyFull-crash.html |
| |
| * editing/CompositeEditCommand.cpp: |
| (WebCore::CompositeEditCommand::cloneParagraphUnderNewElement): |
| |
| 2020-05-01 Jack Lee <shihchieh_lee@apple.com> |
| |
| Nullptr crash in EditCommand::EditCommand via CompositeEditCommand::removeNode |
| https://bugs.webkit.org/show_bug.cgi?id=207600 |
| <rdar://problem/56969450> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Second part of the fix. Remove m_frame in FrameSelection so it will not be |
| inadvertently used and cause this crash. |
| |
| No new tests, covered by existing test. |
| |
| * editing/AlternativeTextController.cpp: |
| (WebCore::AlternativeTextController::rootViewRectForRange const): |
| * editing/FrameSelection.cpp: |
| (WebCore::FrameSelection::FrameSelection): |
| (WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance): |
| (WebCore::FrameSelection::modify): |
| (WebCore::FrameSelection::selectFrameElementInParentIfFullySelected): |
| (WebCore::FrameSelection::setFocusedElementIfNeeded): |
| (WebCore::FrameSelection::shouldDeleteSelection const): |
| (WebCore::FrameSelection::shouldDeleteSelection): |
| (WebCore::FrameSelection::revealSelection): |
| (WebCore::FrameSelection:: shouldChangeSelection): |
| (WebCore::FrameSelection::shouldChangeSelection const): |
| * editing/FrameSelection.h: |
| * editing/atk/FrameSelectionAtk.cpp: |
| (WebCore::FrameSelection::notifyAccessibilityForSelectionChange): |
| * editing/mac/FrameSelectionMac.mm: |
| (WebCore::FrameSelection::notifyAccessibilityForSelectionChange): |
| |
| 2020-05-01 Darin Adler <darin@apple.com> |
| |
| REGRESSION (r260739): Crash when pasting into Mail |
| https://bugs.webkit.org/show_bug.cgi?id=211311 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Speculative fix. Would be much better to create a test case demonstrating it's correct. |
| |
| * editing/cocoa/HTMLConverter.mm: |
| (WebCore::editingAttributedString): Use container node when TextIterator::node |
| returns null. |
| |
| 2020-05-01 Don Olmstead <don.olmstead@sony.com> |
| |
| [GTK] Add additional exports to support hidden visibility |
| https://bugs.webkit.org/show_bug.cgi?id=211246 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * platform/ContentType.h: |
| * platform/graphics/cairo/RefPtrCairo.h: |
| * platform/gtk/GtkUtilities.h: |
| * platform/network/soup/CertificateInfo.h: |
| * platform/network/soup/SoupNetworkSession.h: |
| |
| 2020-05-01 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Introduce MainThreadNeverDestroyed / MainThreadLazyNeverDestroyed |
| https://bugs.webkit.org/show_bug.cgi?id=211264 |
| |
| Reviewed by Mark Lam. |
| |
| No behavior change. Adding assertions additionally. |
| |
| * Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp: |
| (WebCore::stringForPlaybackTargetAvailability): |
| * Modules/encryptedmedia/InitDataRegistry.cpp: |
| (WebCore::InitDataRegistry::cencName): |
| (WebCore::InitDataRegistry::keyidsName): |
| (WebCore::InitDataRegistry::webmName): |
| * Modules/mediacontrols/MediaControlsHost.cpp: |
| (WebCore::MediaControlsHost::automaticKeyword): |
| (WebCore::MediaControlsHost::forcedOnlyKeyword): |
| (WebCore::alwaysOnKeyword): |
| (WebCore::manualKeyword): |
| * Modules/mediastream/MediaStreamTrack.cpp: |
| (WebCore::MediaStreamTrack::kind const): |
| (WebCore::MediaStreamTrack::contentHint const): |
| * Modules/mediastream/RTCDataChannel.cpp: |
| (WebCore::blobKeyword): |
| (WebCore::arraybufferKeyword): |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::liveRegionRelevant const): |
| * dom/ConstantPropertyMap.cpp: |
| (WebCore::ConstantPropertyMap::nameForProperty const): |
| * dom/Document.cpp: |
| (WebCore::Document::validateCustomElementName): |
| * dom/InlineStyleSheetOwner.cpp: |
| (WebCore::isValidCSSContentType): |
| * dom/MutationRecord.cpp: |
| * dom/make_names.pl: |
| (printNamesHeaderFile): |
| (printNamesCppFile): |
| * html/Autocapitalize.cpp: |
| (WebCore::stringForAutocapitalizeType): |
| * html/Autofill.cpp: |
| (WebCore::isContactToken): |
| (WebCore::AutofillData::createFromHTMLFormControlElement): |
| * html/BaseCheckableInputType.cpp: |
| (WebCore::BaseCheckableInputType::fallbackValue const): |
| * html/BaseChooserOnlyDateAndTimeInputType.cpp: |
| (WebCore::BaseChooserOnlyDateAndTimeInputType::createShadowSubtree): |
| * html/ColorInputType.cpp: |
| (WebCore::ColorInputType::createShadowSubtree): |
| * html/FileInputType.cpp: |
| (WebCore::UploadButtonElement::UploadButtonElement): |
| * html/FormController.cpp: |
| (WebCore::FormKeyGenerator::formKey): |
| * html/HTMLAnchorElement.cpp: |
| (WebCore::HTMLAnchorElement::parseAttribute): |
| (WebCore::HTMLAnchorElement::isSystemPreviewLink const): |
| * html/HTMLButtonElement.cpp: |
| (WebCore::HTMLButtonElement::formControlType const): |
| * html/HTMLDetailsElement.cpp: |
| (WebCore::summarySlotName): |
| * html/HTMLElement.cpp: |
| (WebCore::toValidDirValue): |
| (WebCore::trueName): |
| (WebCore::falseName): |
| (WebCore::plaintextOnlyName): |
| (WebCore::HTMLElement::setAutocorrect): |
| * html/HTMLFieldSetElement.cpp: |
| (WebCore::HTMLFieldSetElement::formControlType const): |
| * html/HTMLFormElement.cpp: |
| (WebCore::HTMLFormElement::autocomplete const): |
| * html/HTMLImageElement.cpp: |
| (WebCore::HTMLImageElement::loadingForBindings const): |
| * html/HTMLKeygenElement.cpp: |
| (WebCore::HTMLKeygenElement::formControlType const): |
| * html/HTMLOptGroupElement.cpp: |
| (WebCore::HTMLOptGroupElement::formControlType const): |
| * html/HTMLOutputElement.cpp: |
| (WebCore::HTMLOutputElement::formControlType const): |
| * html/HTMLPlugInImageElement.cpp: |
| (WebCore::HTMLPlugInImageElement::partOfSnapshotOverlay const): |
| * html/HTMLSelectElement.cpp: |
| (WebCore::HTMLSelectElement::formControlType const): |
| * html/HTMLTableCellElement.cpp: |
| (WebCore::HTMLTableCellElement::scope const): |
| * html/HTMLTextAreaElement.cpp: |
| (WebCore::HTMLTextAreaElement::formControlType const): |
| * html/HTMLTextFormControlElement.cpp: |
| (WebCore::directionString): |
| (WebCore::HTMLTextFormControlElement::updateInnerTextElementEditability): |
| * html/InputMode.cpp: |
| (WebCore::InputModeNames::none): |
| (WebCore::InputModeNames::text): |
| (WebCore::InputModeNames::tel): |
| (WebCore::InputModeNames::url): |
| (WebCore::InputModeNames::email): |
| (WebCore::InputModeNames::numeric): |
| (WebCore::InputModeNames::decimal): |
| (WebCore::InputModeNames::search): |
| * html/InputTypeNames.cpp: |
| (WebCore::InputTypeNames::button): |
| (WebCore::InputTypeNames::checkbox): |
| (WebCore::InputTypeNames::color): |
| (WebCore::InputTypeNames::date): |
| (WebCore::InputTypeNames::datetime): |
| (WebCore::InputTypeNames::datetimelocal): |
| (WebCore::InputTypeNames::email): |
| (WebCore::InputTypeNames::file): |
| (WebCore::InputTypeNames::hidden): |
| (WebCore::InputTypeNames::image): |
| (WebCore::InputTypeNames::month): |
| (WebCore::InputTypeNames::number): |
| (WebCore::InputTypeNames::password): |
| (WebCore::InputTypeNames::radio): |
| (WebCore::InputTypeNames::range): |
| (WebCore::InputTypeNames::reset): |
| (WebCore::InputTypeNames::search): |
| (WebCore::InputTypeNames::submit): |
| (WebCore::InputTypeNames::telephone): |
| (WebCore::InputTypeNames::text): |
| (WebCore::InputTypeNames::time): |
| (WebCore::InputTypeNames::url): |
| (WebCore::InputTypeNames::week): |
| * html/MediaController.cpp: |
| (WebCore::playbackStateWaiting): |
| (WebCore::playbackStatePlaying): |
| (WebCore::playbackStateEnded): |
| * html/RangeInputType.cpp: |
| (WebCore::RangeInputType::createShadowSubtree): |
| * html/SearchInputType.cpp: |
| (WebCore::updateResultButtonPseudoType): |
| * html/TextFieldInputType.cpp: |
| (WebCore::TextFieldInputType::createShadowSubtree): |
| (WebCore::TextFieldInputType::createDataListDropdownIndicator): |
| (WebCore::TextFieldInputType::createContainer): |
| (WebCore::TextFieldInputType::createAutoFillButton): |
| * html/ValidationMessage.cpp: |
| (WebCore::ValidationMessage::buildBubbleTree): |
| * html/shadow/DetailsMarkerControl.cpp: |
| (WebCore::DetailsMarkerControl::DetailsMarkerControl): |
| * html/shadow/MediaControlTextTrackContainerElement.cpp: |
| (WebCore::MediaControlTextTrackContainerElement::MediaControlTextTrackContainerElement): |
| * html/shadow/ProgressShadowElement.cpp: |
| (WebCore::ProgressInnerElement::create): |
| (WebCore::ProgressBarElement::create): |
| (WebCore::ProgressValueElement::create): |
| * html/shadow/SliderThumbElement.cpp: |
| (WebCore::SliderThumbElement::resolveCustomStyle): |
| (WebCore::SliderContainerElement::resolveCustomStyle): |
| * html/shadow/SpinButtonElement.cpp: |
| (WebCore::SpinButtonElement::SpinButtonElement): |
| * html/shadow/TextControlInnerElements.cpp: |
| (WebCore::TextControlPlaceholderElement::TextControlPlaceholderElement): |
| (WebCore::SearchFieldCancelButtonElement::SearchFieldCancelButtonElement): |
| * html/shadow/YouTubeEmbedShadowElement.cpp: |
| (WebCore::YouTubeEmbedShadowElement::YouTubeEmbedShadowElement): |
| * html/shadow/mac/ImageControlsButtonElementMac.cpp: |
| (WebCore::ImageControlsButtonElementMac::tryCreate): |
| * html/shadow/mac/ImageControlsRootElementMac.cpp: |
| (WebCore::ImageControlsRootElement::tryCreate): |
| * html/track/AudioTrack.cpp: |
| (WebCore::AudioTrack::alternativeKeyword): |
| (WebCore::AudioTrack::descriptionKeyword): |
| (WebCore::AudioTrack::mainKeyword): |
| (WebCore::AudioTrack::mainDescKeyword): |
| (WebCore::AudioTrack::translationKeyword): |
| (WebCore::AudioTrack::commentaryKeyword): |
| * html/track/TextTrack.cpp: |
| (WebCore::TextTrack::subtitlesKeyword): |
| (WebCore::captionsKeyword): |
| (WebCore::descriptionsKeyword): |
| (WebCore::chaptersKeyword): |
| (WebCore::metadataKeyword): |
| (WebCore::forcedKeyword): |
| * html/track/TextTrackCue.cpp: |
| (WebCore::TextTrackCue::cueShadowPseudoId): |
| (WebCore::TextTrackCue::cueBoxShadowPseudoId): |
| (WebCore::TextTrackCue::cueBackdropShadowPseudoId): |
| (WebCore::TextTrackCue::rebuildDisplayTree): |
| * html/track/VTTRegion.cpp: |
| (WebCore::upKeyword): |
| (WebCore::VTTRegion::textTrackCueContainerScrollingClass): |
| (WebCore::VTTRegion::textTrackCueContainerShadowPseudoId): |
| (WebCore::VTTRegion::textTrackRegionShadowPseudoId): |
| * html/track/VideoTrack.cpp: |
| (WebCore::VideoTrack::alternativeKeyword): |
| (WebCore::VideoTrack::captionsKeyword): |
| (WebCore::VideoTrack::mainKeyword): |
| (WebCore::VideoTrack::signKeyword): |
| (WebCore::VideoTrack::subtitlesKeyword): |
| (WebCore::VideoTrack::commentaryKeyword): |
| * loader/cache/CachedResourceRequest.cpp: |
| (WebCore::CachedResourceRequest::initiatorName const): |
| * page/EventHandler.cpp: |
| (WebCore::focusDirectionForKey): |
| * page/Quirks.cpp: |
| (WebCore::Quirks::shouldBypassBackForwardCache const): |
| * page/animation/CompositeAnimation.cpp: |
| (WebCore::CompositeAnimation::updateKeyframeAnimations): |
| * platform/cocoa/PlaybackSessionModelMediaElement.mm: |
| (WebCore::PlaybackSessionModelMediaElement::eventNameAll): |
| * platform/cocoa/VideoFullscreenModelVideoElement.mm: |
| (WebCore::VideoFullscreenModelVideoElement::eventNameAll): |
| * platform/graphics/FontCache.cpp: |
| (WebCore::FontCache::alternateFamilyName): |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::applicationOctetStream): |
| (WebCore::textPlain): |
| * platform/graphics/avfoundation/CDMFairPlayStreaming.cpp: |
| (WebCore::CDMPrivateFairPlayStreaming::sinfName): |
| (WebCore::CDMPrivateFairPlayStreaming::skdName): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::metadataType): |
| * platform/graphics/cocoa/FontCacheCoreText.cpp: |
| (WebCore::FontCache::similarFont): |
| (WebCore::FontCache::platformAlternateFamilyName): |
| * platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp: |
| (WebCore::SystemFontDatabaseCoreText::systemFontParameters): |
| * platform/graphics/filters/SourceAlpha.cpp: |
| (WebCore::SourceAlpha::effectName): |
| * platform/graphics/filters/SourceGraphic.cpp: |
| (WebCore::SourceGraphic::effectName): |
| * platform/graphics/ios/FontCacheIOS.mm: |
| (WebCore::FontCache::getCustomFallbackFont): |
| * platform/graphics/texmap/TextureMapperShaderProgram.h: |
| * platform/graphics/win/FontCacheWin.cpp: |
| (WebCore::FontCache::lastResortFallbackFont): |
| (WebCore::FontCache::platformAlternateFamilyName): |
| * platform/network/cocoa/ResourceResponseCocoa.mm: |
| (WebCore::extractHTTPStatusText): |
| * rendering/ComplexLineLayout.cpp: |
| (WebCore::ComplexLineLayout::checkLinesForTextOverflow): |
| * rendering/RenderDeprecatedFlexibleBox.cpp: |
| (WebCore::RenderDeprecatedFlexibleBox::applyLineClamp): |
| * rendering/style/RenderStyle.cpp: |
| (WebCore::RenderStyle::hyphenString const): |
| (WebCore::RenderStyle::textEmphasisMarkString const): |
| * style/StyleAdjuster.cpp: |
| (WebCore::Style::Adjuster::adjustForSiteSpecificQuirks const): |
| * svg/SVGAnimateMotionElement.cpp: |
| (WebCore::SVGAnimateMotionElement::rotateMode const): |
| * svg/SVGAnimationElement.cpp: |
| (WebCore::SVGAnimationElement::setCalcMode): |
| (WebCore::SVGAnimationElement::setAttributeType): |
| (WebCore::SVGAnimationElement::isAdditive const): |
| (WebCore::SVGAnimationElement::isAccumulated const): |
| (WebCore::inheritsFromProperty): |
| * svg/SVGStyleElement.cpp: |
| (WebCore::SVGStyleElement::type const): |
| (WebCore::SVGStyleElement::media const): |
| * svg/animation/SVGSMILElement.cpp: |
| (WebCore::SVGSMILElement::parseClockValue): |
| (WebCore::SVGSMILElement::restart const): |
| (WebCore::SVGSMILElement::fill const): |
| (WebCore::SVGSMILElement::repeatCount const): |
| * svg/properties/SVGAnimationAdditiveValueFunctionImpl.cpp: |
| (WebCore::SVGAnimationColorFunction::colorFromString): |
| * svg/properties/SVGPropertyAnimator.h: |
| (WebCore::SVGPropertyAnimator::adjustForInheritance const): |
| |
| 2020-05-01 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r260243): [ Mac WK1 ] fast/media/mq-inverted-colors-live-update-for-listener.html is a flaky failure |
| https://bugs.webkit.org/show_bug.cgi?id=211154 |
| <rdar://problem/62555128> |
| |
| Reviewed by Darin Adler. |
| |
| Make MediaQueryList an ActiveDOMObject and make sure its JS wrapper stays alive as long as |
| it may fire change events and there is at least 1 change event listener. |
| |
| No new tests, already covered by existing tests. |
| |
| * css/MediaQueryList.cpp: |
| (WebCore::MediaQueryList::MediaQueryList): |
| (WebCore::MediaQueryList::create): |
| (WebCore::MediaQueryList::~MediaQueryList): |
| (WebCore::MediaQueryList::detachFromMatcher): |
| (WebCore::MediaQueryList::evaluate): |
| (WebCore::MediaQueryList::setMatches): |
| (WebCore::MediaQueryList::matches): |
| (WebCore::MediaQueryList::eventListenersDidChange): |
| (WebCore::MediaQueryList::activeDOMObjectName const): |
| (WebCore::MediaQueryList::virtualHasPendingActivity const): |
| * css/MediaQueryList.h: |
| * css/MediaQueryList.idl: |
| * css/MediaQueryMatcher.cpp: |
| (WebCore::MediaQueryMatcher::documentDestroyed): |
| |
| 2020-05-01 Don Olmstead <don.olmstead@sony.com> |
| |
| Use export macros on all platforms |
| https://bugs.webkit.org/show_bug.cgi?id=211293 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * platform/PlatformExportMacros.h: |
| |
| 2020-05-01 Eric Carlson <eric.carlson@apple.com> |
| |
| [MSE] Audio session category is sometimes not set correctly after changing video source |
| https://bugs.webkit.org/show_bug.cgi?id=211252 |
| <rdar://problem/61894737> |
| |
| Reviewed by Jer Noble. |
| |
| Test: media/media-source/media-source-change-source.html |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::mediaPlayerActiveSourceBuffersChanged): Call checkForAudioAndVideo. |
| (WebCore::HTMLMediaElement::audioTrackEnabledChanged): Ditto. |
| (WebCore::HTMLMediaElement::videoTrackSelectedChanged): Ditto. |
| (WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged): Ditto. |
| (WebCore::HTMLMediaElement::updatePlayState): Ditto. |
| (WebCore::HTMLMediaElement::checkForAudioAndVideo): New, update m_hasEverHadAudio and m_hasEverHadVideo |
| and call m_mediaSession->canProduceAudioChanged. |
| (WebCore::HTMLMediaElement::mediaType const): Put `hasVideo()` in a local variable since it |
| is used more than once. |
| * html/HTMLMediaElement.h: |
| |
| * platform/audio/cocoa/MediaSessionManagerCocoa.mm: |
| (WebCore::MediaSessionManagerCocoa::updateSessionState): Iterate over the list of media |
| sessions once, not five times. |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::addAudioRenderer): Call m_player->characteristicChanged() |
| rather than m_player->renderingModeChanged(). |
| |
| 2020-05-01 Peng Liu <peng.liu6@apple.com> |
| |
| A PiP window doesn’t actually dismiss after the browser navigates to a different page within the same domain |
| https://bugs.webkit.org/show_bug.cgi?id=211257 |
| |
| Reviewed by Jer Noble. |
| |
| When we suspend a video element (this will happen when the browser is navigating to another page |
| within the same domain), we need to request the corresponding video to exit fullscreen/PiP. |
| The operation should be done immediately because the video element won't response to events |
| after it is suspended. |
| |
| In r259095, we hold the start of exiting video fullscreen/PiP in HTMLMediaElement::exitFullscreen() |
| until the "webkitendfullscreen" event is dispatched/handled. This behavior does not work if |
| the video element is going to be suspended because the exiting fullscreen operation will be held |
| until the video element is resumed. Therefore, we need to handle that case separately by exiting |
| video fullscreen/PiP immediately. |
| |
| API test: PictureInPicture.ExitPiPOnSuspendVideoElement |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::exitFullscreen): |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (VideoFullscreenInterfaceAVKit::exitFullscreen): |
| |
| 2020-05-01 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Introduce struct RowHeight in TableFormattingContext::computeAndDistributeExtraVerticalSpace |
| https://bugs.webkit.org/show_bug.cgi?id=211275 |
| |
| Reviewed by Antti Koivisto. |
| |
| This is in preparation for available space distribution across row spans. |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| |
| 2020-05-01 Antti Koivisto <antti@apple.com> |
| |
| Specific dom node order of Shadow DOM (re)projection causes crash |
| https://bugs.webkit.org/show_bug.cgi?id=211159 |
| <rdar://problem/62626920> |
| |
| Reviewed by Zalan Bujtas. |
| |
| ComposedTreeIterator may traverse to nodes outside its root element if it is constructed |
| with a starting node that has no next sibling inside a slot. |
| |
| This leads to miscomputing RenderTreePosition::nextSibling() and eventual nullptr crash in |
| RenderTreeBuilder when adding a renderer (due to beforeChild renderer being outside the parent renderer). |
| |
| Test case by Elliott Marquez. |
| |
| Test: fast/shadow-dom/composed-tree-iterator-escape.html |
| |
| * dom/ComposedTreeIterator.cpp: |
| (WebCore::ComposedTreeIterator::Context::Context): |
| |
| When findind the end iterator for a tree context we need to look for a sibling in ancestors if |
| the current node has no siblings. |
| |
| 2020-05-01 Alexey Shvayka <shvaikalesh@gmail.com> |
| |
| [WebIDL] Interface prototype objects should define @@toStringTag |
| https://bugs.webkit.org/show_bug.cgi?id=211020 |
| |
| Reviewed by Darin Adler. |
| |
| WebIDL spec was recently updated [1] to define @@toStringTag on interface prototype objects. |
| This change aligns WebIDL with ECMA-262 built-ins and Blink's behavior. Gecko have also |
| expressed implementation commitment. |
| |
| This patch implements the spec change, making `X.prototype.toString()` return "[object X]" |
| instead of "[object XPrototype]", where X is WebIDL interface. This behavior is proven to |
| be web compatible (shipping in Chrome since Q2 2016) and matches class strings of iterator |
| prototype objects [2] introduced in r253855. |
| |
| [1]: https://github.com/heycam/webidl/pull/357 |
| [2]: https://heycam.github.io/webidl/#es-iterator-prototype-object |
| |
| Tests: fast/dom/prototype-chain.html |
| fast/dom/wrapper-classes.html |
| fast/workers/DedicatedWorkerGlobalScope-prototype-chain.html |
| imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-interface.any.js |
| imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/class-string-named-properties-object.window.js |
| |
| * bindings/js/JSDOMIterator.h: |
| (WebCore::IteratorTraits>::finishCreation): |
| * bindings/js/JSDOMWindowProperties.cpp: |
| (WebCore::JSDOMWindowProperties::finishCreation): |
| * bindings/js/JSDOMWindowProperties.h: |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateImplementation): |
| (GeneratePrototypeDeclaration): |
| (GenerateConstructorHelperMethods): |
| * bindings/scripts/test/*: Updated. |
| |
| 2020-05-01 Saam Barati <sbarati@apple.com> |
| |
| We can't cast toLength result to unsigned |
| https://bugs.webkit.org/show_bug.cgi?id=211205 |
| <rdar://problem/62625562> |
| |
| Reviewed by Yusuke Suzuki. |
| |
| * bridge/NP_jsobject.cpp: |
| |
| 2020-05-01 Antoine Quint <graouts@apple.com> |
| |
| REGRESSION: MotionMark 1.1 regressed due to r260016 |
| https://bugs.webkit.org/show_bug.cgi?id=211280 |
| <rdar://problem/61898830> |
| |
| Unreviewed. |
| |
| * html/canvas/CanvasRenderingContext2DBase.cpp: |
| (WebCore::CanvasRenderingContext2DBase::drawImage): |
| * platform/graphics/BitmapImage.cpp: |
| (WebCore::BitmapImage::draw): |
| * platform/graphics/GraphicsContext.cpp: |
| (WebCore::GraphicsContext::drawImage): |
| |
| 2020-05-01 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Move video frame holder to its own file |
| https://bugs.webkit.org/show_bug.cgi?id=211239 |
| |
| Reviewed by Alex Christensen. |
| |
| This class implementation is big enough for a new compilation unit, IMHO. |
| |
| * platform/GStreamer.cmake: |
| * platform/graphics/gstreamer/GStreamerVideoFrameHolder.cpp: Added. |
| (WebCore::GstVideoFrameHolder::GstVideoFrameHolder): |
| (WebCore::GstVideoFrameHolder::~GstVideoFrameHolder): |
| (WebCore::GstVideoFrameHolder::handoffVideoDmaBuf): |
| (WebCore::GstVideoFrameHolder::waitForCPUSync): |
| (WebCore::GstVideoFrameHolder::updateTexture): |
| (WebCore::GstVideoFrameHolder::platformLayerBuffer): |
| * platform/graphics/gstreamer/GStreamerVideoFrameHolder.h: Added. |
| (WebCore::GstVideoFrameHolder::size const): |
| (WebCore::GstVideoFrameHolder::hasAlphaChannel const): |
| (WebCore::GstVideoFrameHolder::flags const): |
| (WebCore::GstVideoFrameHolder::textureID const): |
| (WebCore::GstVideoFrameHolder::hasMappedTextures const): |
| (WebCore::GstVideoFrameHolder::videoFrame const): |
| (WebCore::GstVideoFrameHolder::hasDMABuf const): |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::GstVideoFrameHolder::GstVideoFrameHolder): Deleted. |
| (WebCore::GstVideoFrameHolder::~GstVideoFrameHolder): Deleted. |
| (WebCore::GstVideoFrameHolder::handoffVideoDmaBuf): Deleted. |
| (WebCore::GstVideoFrameHolder::waitForCPUSync): Deleted. |
| (WebCore::GstVideoFrameHolder::size const): Deleted. |
| (WebCore::GstVideoFrameHolder::hasAlphaChannel const): Deleted. |
| (WebCore::GstVideoFrameHolder::flags const): Deleted. |
| (WebCore::GstVideoFrameHolder::textureID const): Deleted. |
| (WebCore::GstVideoFrameHolder::hasMappedTextures const): Deleted. |
| (WebCore::GstVideoFrameHolder::videoFrame const): Deleted. |
| (WebCore::GstVideoFrameHolder::updateTexture): Deleted. |
| (WebCore::GstVideoFrameHolder::platformLayerBuffer): Deleted. |
| (WebCore::GstVideoFrameHolder::hasDMABuf const): Deleted. |
| |
| 2020-05-01 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK4] Disable arrow on context menu popover |
| https://bugs.webkit.org/show_bug.cgi?id=211241 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| No new tests needed. |
| |
| * platform/gtk/GtkVersioning.h: |
| (gdk_display_get_monitor_at_window): Add no-op stub for GTK3. |
| |
| 2020-04-30 Rob Buis <rbuis@igalia.com> |
| |
| Inline reportBlockedPortFailed and reportAuthenticationChallengeBlocked |
| https://bugs.webkit.org/show_bug.cgi?id=211250 |
| |
| Reviewed by Alex Christensen. |
| |
| These two static methods have only one caller each, so we can just |
| inline them at the call site since there is nothing tying them to FrameLoader. |
| |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::willSendRequest): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::reportBlockedPortFailed): Deleted. |
| (WebCore::FrameLoader::reportAuthenticationChallengeBlocked): Deleted. |
| * loader/FrameLoader.h: |
| * loader/ResourceLoader.cpp: |
| (WebCore::ResourceLoader::didBlockAuthenticationChallenge): |
| |
| 2020-04-30 Ross Kirsling <ross.kirsling@sony.com> |
| |
| TriState should be an enum class and use "Indeterminate" instead of "Mixed" |
| https://bugs.webkit.org/show_bug.cgi?id=211268 |
| |
| Reviewed by Mark Lam. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::queryCommandIndeterm): |
| (WebCore::Document::queryCommandState): |
| * editing/EditingStyle.cpp: |
| (WebCore::EditingStyle::triStateOfStyle const): |
| (WebCore::EditingStyle::hasStyle): |
| * editing/Editor.cpp: |
| (WebCore::Editor::selectionUnorderedListState const): |
| (WebCore::Editor::selectionOrderedListState const): |
| * editing/EditorCommand.cpp: |
| (WebCore::isStylePresent): |
| (WebCore::stateStyle): |
| (WebCore::stateTextWritingDirection): |
| (WebCore::stateNone): |
| (WebCore::stateStyleWithCSS): |
| (WebCore::Editor::Command::state const): |
| (WebCore::Editor::Command::value const): |
| * page/ContextMenuController.cpp: |
| (WebCore::ContextMenuController::checkOrEnableIfNeeded const): |
| |
| 2020-04-30 Simon Fraser <simon.fraser@apple.com> |
| |
| Clean up some EventHandler coordinate-related naming and fix ScrollableArea::lastKnownMousePosition() conversions |
| https://bugs.webkit.org/show_bug.cgi?id=211259 |
| |
| Reviewed by Zalan Bujtas. |
| |
| On EventHandler, rename m_lastKnownMousePosition, m_mouseDownPos and m_mouseDown for clarity. |
| |
| Rename ScrollableArea::lastKnownMousePosition() to be lastKnownMousePositionInView(). |
| Previously, lastKnownMousePosition() would fetch it from EventHandler, which simply stashed |
| event.position() (which is in a coordinate system that differs between WK1 and Wk2) which |
| was not relative to the EventHandler's frame. This cause mouseLocationInScrollerForScrollerImp: |
| to give wrong answers. |
| |
| Instead, lastKnownMousePositionInView() now specifically returns coordinates relative to the Frame. |
| This behavior change will be tested in future overlay scrollbar tests. |
| |
| Document::showPlaybackTargetPicker() was using FrameView::lastKnownMousePosition(), so to avoid |
| changing its (probably broken) behavior, have it call frame()->eventHandler().lastKnownMousePosition(). |
| |
| * dom/Document.cpp: |
| (WebCore::Document::showPlaybackTargetPicker): |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::clear): |
| (WebCore::EventHandler::handleMousePressEvent): |
| (WebCore::EventHandler::handleMouseDraggedEvent): |
| (WebCore::EventHandler::updateDragSourceActionsAllowed const): |
| (WebCore::EventHandler::dispatchDragStartEventOnSourceElement): |
| (WebCore::EventHandler::handleDrag): |
| (WebCore::EventHandler::mouseMovementExceedsThreshold const): |
| * page/EventHandler.h: |
| * page/FrameView.cpp: |
| (WebCore::FrameView::lastKnownMousePositionInView const): |
| (WebCore::FrameView::lastKnownMousePosition const): Deleted. |
| * page/FrameView.h: |
| * platform/PlatformMouseEvent.h: |
| * platform/ScrollableArea.h: |
| (WebCore::ScrollableArea::lastKnownMousePositionInView const): |
| (WebCore::ScrollableArea::lastKnownMousePosition const): Deleted. |
| * platform/mac/ScrollAnimatorMac.mm: |
| (-[WebScrollerImpPairDelegate mouseLocationInContentAreaForScrollerImpPair:]): |
| (-[WebScrollerImpPairDelegate scrollerImpPair:convertContentPoint:toScrollerImp:]): |
| (-[WebScrollerImpDelegate mouseLocationInScrollerForScrollerImp:]): |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::lastKnownMousePositionInView const): |
| (WebCore::RenderLayer::lastKnownMousePosition const): Deleted. |
| * rendering/RenderLayer.h: |
| * rendering/RenderListBox.cpp: |
| (WebCore::RenderListBox::lastKnownMousePositionInView const): |
| (WebCore::RenderListBox::lastKnownMousePosition const): Deleted. |
| * rendering/RenderListBox.h: |
| |
| 2020-04-30 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Some HTML element critical paths include AtomString materialization |
| https://bugs.webkit.org/show_bug.cgi?id=211223 |
| |
| Reviewed by Saam Barati. |
| |
| While measuring Speedometer2, I've noticed that every time we create some type of input element, we call AtomString multiple times while it is not necessary. |
| It turned out that this is because some places are using `AtomString("...", AtomString::ConstructFromLiteral)` instead of |
| `static NeverDestroyed<const AtomString> ...("...", AtomString::ConstructFromLiteral)`. Since HTML is in the main thread, we can just use `static NeverDestroyed<>`. |
| This patch fixes `AtomString()` calls by changing them to `NeverDestroyed<const AtomString>` if it is under WebCore/html directory. |
| And in this patch, we omit FTPDirectoryDocument, MediaDocument, and PluginDocument's fixes for now since their AtomString content has a bit different nature (some |
| pseudo CSS value ("-webkit-xxx") v.s. some particular CSS property value ("100%"). |
| |
| * html/ColorInputType.cpp: |
| (WebCore::ColorInputType::createShadowSubtree): |
| * html/FileInputType.cpp: |
| (WebCore::UploadButtonElement::UploadButtonElement): |
| * html/HTMLElement.cpp: |
| (WebCore::trueName): |
| (WebCore::falseName): |
| (WebCore::plaintextOnlyName): |
| (WebCore::HTMLElement::setContentEditable): |
| (WebCore::HTMLElement::setDraggable): |
| (WebCore::HTMLElement::setSpellcheck): |
| (WebCore::HTMLElement::setAutocorrect): |
| * html/HTMLTextFormControlElement.cpp: |
| (WebCore::HTMLTextFormControlElement::updateInnerTextElementEditability): |
| * html/RangeInputType.cpp: |
| (WebCore::RangeInputType::createShadowSubtree): |
| * html/SearchInputType.cpp: |
| (WebCore::updateResultButtonPseudoType): |
| * html/TextFieldInputType.cpp: |
| (WebCore::TextFieldInputType::createShadowSubtree): |
| (WebCore::TextFieldInputType::createDataListDropdownIndicator): |
| (WebCore::TextFieldInputType::createContainer): |
| (WebCore::TextFieldInputType::createAutoFillButton): |
| * html/ValidationMessage.cpp: |
| (WebCore::ValidationMessage::buildBubbleTree): |
| * html/shadow/DetailsMarkerControl.cpp: |
| (WebCore::DetailsMarkerControl::DetailsMarkerControl): |
| * html/shadow/MediaControlTextTrackContainerElement.cpp: |
| (WebCore::MediaControlTextTrackContainerElement::MediaControlTextTrackContainerElement): |
| * html/shadow/ProgressShadowElement.cpp: |
| (WebCore::ProgressInnerElement::create): |
| (WebCore::ProgressBarElement::create): |
| (WebCore::ProgressValueElement::create): |
| * html/shadow/ProgressShadowElement.h: |
| (WebCore::ProgressInnerElement::create): Deleted. |
| (WebCore::ProgressBarElement::create): Deleted. |
| (WebCore::ProgressValueElement::create): Deleted. |
| * html/shadow/SpinButtonElement.cpp: |
| (WebCore::SpinButtonElement::SpinButtonElement): |
| * html/shadow/TextControlInnerElements.cpp: |
| (WebCore::TextControlPlaceholderElement::TextControlPlaceholderElement): |
| (WebCore::SearchFieldCancelButtonElement::SearchFieldCancelButtonElement): |
| * html/shadow/YouTubeEmbedShadowElement.cpp: |
| (WebCore::YouTubeEmbedShadowElement::YouTubeEmbedShadowElement): |
| * html/shadow/mac/ImageControlsButtonElementMac.cpp: |
| (WebCore::ImageControlsButtonElementMac::tryCreate): |
| * html/shadow/mac/ImageControlsRootElementMac.cpp: |
| (WebCore::ImageControlsRootElement::tryCreate): |
| * html/track/TextTrackCue.cpp: |
| (WebCore::TextTrackCue::rebuildDisplayTree): |
| |
| 2020-04-30 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Optimize LocalAuthenticator |
| https://bugs.webkit.org/show_bug.cgi?id=183534 |
| <rdar://problem/43357408> |
| |
| Reviewed by Brent Fulgham. |
| |
| Covered by new API tests. |
| |
| * en.lproj/Localizable.strings: |
| * platform/LocalizedStrings.cpp: |
| (WebCore::getAssertionTouchIDPromptTitle): |
| (WebCore::genericTouchIDPromptTitle): |
| * platform/LocalizedStrings.h: |
| Improving the LocalAuthentication dialog titles for iOS. |
| |
| 2020-04-30 Kate Cheney <katherine_cheney@apple.com> |
| |
| clearApplicationBundleIdentifierTestingOverride() should set the bundle identifier to a null string, not an empty string |
| https://bugs.webkit.org/show_bug.cgi?id=211255 |
| <rdar://problem/62651110> |
| |
| Reviewed by John Wilander. |
| |
| No new tests, behavior confirmed by existing tests. |
| |
| Clearing the bundle identifier during tests should reset the override |
| value to be a null string so that the following calls to applicationBundleIdentifier() |
| use the [NSBundle mainBundle] bundleIdentifier] call. |
| |
| * platform/cocoa/RuntimeApplicationChecksCocoa.mm: |
| (WebCore::clearApplicationBundleIdentifierTestingOverride): |
| |
| 2020-04-30 Devin Rousso <drousso@apple.com> |
| |
| WebKit.WebContent process crashes when web developer tools are opened in Safari |
| https://bugs.webkit.org/show_bug.cgi?id=210794 |
| <rdar://problem/62214651> |
| |
| Reviewed by Brian Burg. |
| |
| Test: inspector/worker/dom-debugger-event-after-terminate-crash.html |
| |
| * inspector/agents/InspectorDOMDebuggerAgent.cpp: |
| (WebCore::InspectorDOMDebuggerAgent::willHandleEvent): |
| Don't `ASSERT(injectedScript.hasNoValue())` as it's possible for the event to be fired after |
| `Worker.prototype.terminate`, in which case `InjectedScriptManager::injectedScriptFor` will |
| now return an `InjectedScript` that would fail that `ASSERT`. |
| |
| 2020-04-30 Alex Christensen <achristensen@webkit.org> |
| |
| Add SPI to change a WKWebView's CORS disabling pattern after initialization |
| https://bugs.webkit.org/show_bug.cgi?id=211211 |
| <rdar://problem/61837474> |
| |
| Reviewed by Chris Dumez. |
| |
| * page/Page.h: |
| (WebCore::Page::setCORSDisablingPatterns): |
| |
| 2020-04-30 Chris Dumez <cdumez@apple.com> |
| |
| WebCore::systemHasBattery() is unnecessarily expensive on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=211240 |
| <rdar://problem/62619971> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Update WebCore::systemHasBattery() to return true unconditionally on |
| PLATFORM(IOS) and PLATFORM(WATCHOS) since iOS devices always have a |
| battery. Also return false unconditionally for PLATFORM(APPLETV). |
| |
| * platform/cocoa/SystemBattery.mm: |
| (WebCore::systemHasBattery): |
| |
| 2020-04-30 Andres Gonzalez <andresg_22@apple.com> |
| |
| Fix for crash in AXLogger. |
| https://bugs.webkit.org/show_bug.cgi?id=211236 |
| |
| Reviewed by Chris Fleizach. |
| |
| Covered by existing tests. |
| |
| Notifications may have a null AXCoreObject target, so must check for |
| nullity before streaming the object. |
| |
| * accessibility/AXLogger.cpp: |
| (WebCore::AXLogger::log): |
| |
| 2020-04-30 Charlie Turner <cturner@igalia.com> |
| |
| [clang 11] fix build errors due to -WWc++11-narrowing |
| https://bugs.webkit.org/show_bug.cgi?id=211193 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Fixes the following errors, |
| |
| Source/WebCore/html/MediaElementSession.cpp:1059:9: error: type 'WebCore::RenderMedia *' cannot be narrowed to 'bool' in initializer list [-Wc++11-narrowing] |
| m_element.renderer(), |
| ^~~~~~~~~~~~~~~~~~~~ |
| |
| Source/WebCore/style/StyleResolver.cpp:106:55: error: type 'const char [4]' cannot be narrowed to 'bool' in initializer list [-Wc++11-narrowing] |
| m_mediaQueryEvaluator = MediaQueryEvaluator { "all" }; |
| ^~~~~ |
| Source/WebCore/style/StyleResolver.cpp:106:55: note: insert an explicit cast to silence this issue |
| m_mediaQueryEvaluator = MediaQueryEvaluator { "all" }; |
| ^~~~~ |
| static_cast<bool>( ) |
| |
| * html/HTMLMediaElement.h: |
| (WebCore::HTMLMediaElement::hasRenderer const): |
| MediaElementSession was implicitly casting a pointer to a bool, |
| which is not allowed with modern Clang checks. Add a helper method |
| to encapsulate the now required static_cast<bool>. |
| * html/MediaElementSession.cpp: Use the new helper method to see |
| if the HTMLMediaElement has an associated renderer. |
| (WebCore::MediaElementSession::updateMediaUsageIfChanged): |
| * style/StyleResolver.cpp: This was calling MediaQueryEvaluator { |
| "all" }; and seemingly expecting to cast a const char[] to a bool, |
| or maybe String? It's confusing because of the MediaQueryEvaluator |
| API. If it was implicitly converting to bool then that could be |
| unintentional. Such casts are not allowed either now. The |
| MediaQueryEvaluator's default constructor says it returns true for |
| "all", which appears to be the original intent of this call, so I |
| replaced it with that. |
| (WebCore::Style::Resolver::Resolver): |
| |
| 2020-04-30 Simon Fraser <simon.fraser@apple.com> |
| |
| border-radius fails to clip iframe contents |
| https://bugs.webkit.org/show_bug.cgi?id=211199 |
| <rdar://problem/61945671> |
| |
| Reviewed by Zalan Bujtas. |
| |
| iframes need to use the same composited clipping strategy that we use for other |
| replaced elements with composited contents, like video and WebGL. To achieve this, |
| change GraphicsLayer to allow child GraphicsLayers to be parented in the contents |
| clipping layer, just like content layers are. (We don't want to do this unconditionally, |
| because it will change behavior for video with controls.) |
| |
| Add GraphicsLayer::contentsRectClipsDescendants(), and used it to run code that |
| creates the contents clipping (and optional shape) layers even when no contents |
| layer is present. Fix up the sublayer list building to parent layers from |
| children in the contents clipping layer. |
| |
| Tests: compositing/iframes/border-radius-composited-frame.html |
| compositing/iframes/border-uneven-radius-composited-frame.html |
| |
| * platform/graphics/GraphicsLayer.cpp: |
| (WebCore::GraphicsLayer::GraphicsLayer): |
| * platform/graphics/GraphicsLayer.h: |
| (WebCore::GraphicsLayer::contentsRectClipsDescendants const): |
| (WebCore::GraphicsLayer::setContentsRectClipsDescendants): |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::setContentsRectClipsDescendants): |
| (WebCore::GraphicsLayerCA::updateSublayerList): |
| (WebCore::GraphicsLayerCA::updateContentsRects): |
| (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): |
| * platform/graphics/ca/GraphicsLayerCA.h: |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateConfiguration): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::isCompositedSubframeRenderer): |
| * rendering/RenderLayerCompositor.h: |
| |
| 2020-04-30 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Adjust the available vertical space with the row span for cell layout |
| https://bugs.webkit.org/show_bug.cgi?id=211218 |
| |
| Reviewed by Antti Koivisto. |
| |
| The vertical available space for a cell should include all row heights it spans. |
| (can't include test, current table layout logic is incompatible with LFC -and FF/Chrome.) |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForCells): |
| |
| 2020-04-30 Philippe Normand <pnormand@igalia.com> |
| |
| [SOUP] http/tests/media/video-accept-encoding.html fails |
| https://bugs.webkit.org/show_bug.cgi?id=211228 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| The resource requests received by the network process always had |
| the accept-encoding setting enabled due to lack of IPC |
| (de)serialization for this boolean. |
| |
| The patch also enables soup release logging, set WEBKIT_DEBUG=Network=debug. |
| |
| * platform/network/soup/ResourceRequest.h: |
| (WebCore::ResourceRequest::encodeWithPlatformData const): |
| (WebCore::ResourceRequest::decodeWithPlatformData): |
| * platform/network/soup/SoupNetworkSession.cpp: |
| (WebCore::soupLogPrinter): |
| (WebCore::SoupNetworkSession::setupLogger): |
| |
| 2020-04-30 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4][X11] Add support for rendering web view contents |
| https://bugs.webkit.org/show_bug.cgi?id=211189 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Add PlatformDisplayX11::visual() to get the X visual used for rendering. |
| |
| * platform/graphics/x11/PlatformDisplayX11.cpp: |
| (WebCore::PlatformDisplayX11::visual const): |
| * platform/graphics/x11/PlatformDisplayX11.h: |
| |
| 2020-04-30 Andres Gonzalez <andresg_22@apple.com> |
| |
| Add logging of AXIsolatedTree and AXNotifications. |
| https://bugs.webkit.org/show_bug.cgi?id=211214 |
| |
| Reviewed by Chris Fleizach. |
| |
| - Added operator<< implementations for AXIsolatedTree and AX notifications. |
| - Added corresponding AXLogger::log overloads for the above types. |
| - To set the root node and the focused node we are now always using |
| setRootNodeID and setFocusedNodeID respectively. Therefore, before |
| returning the root or the focused nodes, it is necessary to applyPendingChanges. |
| |
| * accessibility/AXLogger.cpp: |
| (WebCore::AXLogger::add): Used for recursive logging of the hierarchy. |
| (WebCore::AXLogger::log): |
| (WebCore::operator<<): |
| * accessibility/AXLogger.h: |
| * accessibility/AXObjectCache.cpp: |
| Added logging of the isolated tree when it's generated and before and after updates. |
| (WebCore::AXObjectCache::isolatedTreeFocusedObject): |
| (WebCore::AXObjectCache::generateIsolatedTree): |
| (WebCore::AXObjectCache::updateIsolatedTree): |
| * accessibility/AXObjectCache.h: |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::focusedUIElement const): |
| * accessibility/isolatedtree/AXIsolatedTree.cpp: |
| (WebCore::AXIsolatedTree::createTreeForPageID): |
| (WebCore::AXIsolatedTree::removeTreeForPageID): |
| (WebCore::AXIsolatedTree::nodeForID const): |
| (WebCore::AXIsolatedTree::generateSubtree): |
| (WebCore::AXIsolatedTree::focusedNode): |
| (WebCore::AXIsolatedTree::rootNode): |
| (WebCore::AXIsolatedTree::setRootNodeID): |
| (WebCore::AXIsolatedTree::setFocusedNodeID): |
| (WebCore::AXIsolatedTree::applyPendingChanges): |
| (WebCore::AXIsolatedTree::focusedUIElement): Renamed focusedNode for naming consistency. |
| (WebCore::AXIsolatedTree::setRootNode): Deleted. Using setRootNodeID instead, |
| (WebCore::AXIsolatedTree::setFocusedNode): Deleted. Use setFocusedNodeID instead. |
| * accessibility/isolatedtree/AXIsolatedTree.h: |
| (WebCore::AXIsolatedTree::treeID const): |
| (WebCore::AXIsolatedTree::treeIdentifier const): renamed treeID for naming consistency. |
| |
| 2020-04-30 Philippe Normand <pnormand@igalia.com> |
| |
| Unreviewed, GStreamer build warning fix after r260755. |
| |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (webKitWebSrcMakeRequest): There is no need to capture src in the |
| closure, its protector is used instead. |
| |
| 2020-04-30 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] fast/mediastream/get-user-media-device-id.html failing |
| https://bugs.webkit.org/show_bug.cgi?id=190576 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| The test was failing due to deviceId invalid constraint, which led |
| me to rewrite the GStreamer Mock sources, removing various hacks |
| and appsrc usage, which is not needed because we rely on |
| audioSamplesAvailable and videoSamplesAvailable notifications. |
| |
| This patch also fixes the audio mock, which was generating silence |
| until now. |
| |
| * platform/GStreamer.cmake: |
| * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: |
| (WebCore::WebKitMediaStreamTrackObserver::WebKitMediaStreamTrackObserver): |
| * platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp: Removed. |
| * platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp: Removed. |
| * platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h: Removed. |
| * platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp: Added. |
| (WebCore::MockRealtimeAudioSource::create): |
| (WebCore::MockRealtimeAudioSourceGStreamer::createForMockAudioCapturer): |
| (WebCore::MockRealtimeAudioSourceGStreamer::MockRealtimeAudioSourceGStreamer): |
| (WebCore::MockRealtimeAudioSourceGStreamer::render): |
| (WebCore::MockRealtimeAudioSourceGStreamer::addHum): |
| (WebCore::MockRealtimeAudioSourceGStreamer::reconfigure): |
| * platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h: Copied from Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h. |
| * platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp: Added. |
| (WebCore::MockRealtimeVideoSource::create): |
| (WebCore::MockRealtimeVideoSourceGStreamer::createForMockDisplayCapturer): |
| (WebCore::MockRealtimeVideoSourceGStreamer::MockRealtimeVideoSourceGStreamer): |
| (WebCore::MockRealtimeVideoSourceGStreamer::updateSampleBuffer): |
| * platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h. |
| * platform/mock/MockRealtimeVideoSource.h: |
| |
| 2020-04-29 Simon Fraser <simon.fraser@apple.com> |
| |
| Use initializers in PlatformMouseEvent and WebEvent |
| https://bugs.webkit.org/show_bug.cgi?id=211217 |
| |
| Reviewed by Tim Horton. |
| |
| Use initializers im PlatformMouseEvent. |
| |
| * platform/PlatformMouseEvent.h: |
| (WebCore::PlatformMouseEvent::PlatformMouseEvent): |
| |
| 2020-04-29 Jer Noble <jer.noble@apple.com> |
| |
| Remove the debug ASSERT in ImageDecoderAVFObjC::storeSampleBuffer() |
| https://bugs.webkit.org/show_bug.cgi?id=211191 |
| <rdar://problem/62542285> |
| |
| Reviewed by Said Abou-Hallawa. |
| |
| r259594 added an iterator check and a RELEASE_LOG_ERROR for that check, making this ASSERT superfluous. |
| |
| * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm: |
| (WebCore::ImageDecoderAVFObjC::storeSampleBuffer): |
| |
| 2020-04-29 Simon Fraser <simon.fraser@apple.com> |
| |
| Simplify contents clipping layer geometry |
| https://bugs.webkit.org/show_bug.cgi?id=211162 |
| |
| Reviewed by Zalan Bujtas. |
| |
| GraphicsLayerCA uses a contents clipping layer, with an optional shape layer, to support |
| clipping replaced elements with composited contents, like video and WebGL canvas. |
| |
| A future patch will use this code path for composited subframes. To achieve this, |
| we need to host the layers of child GraphicsLayers under m_contentsClippingLayer, but |
| without the GraphicsLayer client having to do geometry math. We can do this by setting |
| the bounds origin of m_contentsClippingLayer to adjust for its position relative |
| to the GraphicsLayer origin. |
| |
| This patch does that, adjusting the position of the contents layer accordingly. |
| The shape mask layer also needs adjusting; its position has to be at the layer's |
| bounds origin, and the shape itself needs to have a zero origin. |
| |
| Tested by existing tests. |
| |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::updateSublayerList): |
| (WebCore::GraphicsLayerCA::updateClippingStrategy): |
| (WebCore::GraphicsLayerCA::updateContentsRects): |
| |
| 2020-04-29 Kenneth Russell <kbr@chromium.org> |
| |
| REGRESSION (r256784?): Shadertoy demo no longer works in Safari |
| https://bugs.webkit.org/show_bug.cgi?id=210994 |
| |
| Reviewed by Dean Jackson. |
| |
| Certain Shadertoy examples stopped working with the ANGLE backend |
| for WebGL because rendering to floating-point render targets was |
| no longer being enabled implicitly along with the |
| OES_texture_float extension. |
| |
| Add support for the WebGL 1.0 extensions |
| EXT_color_buffer_half_float and WEBGL_color_buffer_float, and the |
| WebGL 2.0 extension EXT_color_buffer_float. Enable these |
| implicitly for WebGL 1.0 in the OES_texture_float and |
| OES_texture_half_float extensions, restoring the previous |
| functionality. |
| |
| Translate 32-bit floating point texture formats appropriately for |
| the ANGLE backend. Fix some failures in previously-skipped |
| conformance tests. The new code passes the more stringent |
| top-of-tree WebGL 1.0.4 and 2.0.1 conformance tests related to |
| floating-point texture renderability, which are not yet in the |
| WebKit repository. |
| |
| * CMakeLists.txt: |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/JSDOMConvertWebGL.cpp: |
| (WebCore::convertToJSValue): |
| * html/canvas/EXTColorBufferFloat.cpp: Copied from Source/WebCore/html/canvas/OESTextureHalfFloat.cpp. |
| (WebCore::EXTColorBufferFloat::EXTColorBufferFloat): |
| (WebCore::EXTColorBufferFloat::getName const): |
| (WebCore::EXTColorBufferFloat::supported): |
| * html/canvas/EXTColorBufferFloat.h: Copied from Source/WebCore/html/canvas/OESTextureFloat.h. |
| * html/canvas/EXTColorBufferFloat.idl: Added. |
| * html/canvas/EXTColorBufferHalfFloat.cpp: Copied from Source/WebCore/html/canvas/OESTextureFloat.cpp. |
| (WebCore::EXTColorBufferHalfFloat::EXTColorBufferHalfFloat): |
| (WebCore::EXTColorBufferHalfFloat::getName const): |
| (WebCore::EXTColorBufferHalfFloat::supported): |
| * html/canvas/EXTColorBufferHalfFloat.h: Copied from Source/WebCore/html/canvas/OESTextureFloat.h. |
| * html/canvas/EXTColorBufferHalfFloat.idl: Added. |
| * html/canvas/OESTextureFloat.cpp: |
| (WebCore::OESTextureFloat::OESTextureFloat): |
| (WebCore::OESTextureFloat::supported): |
| * html/canvas/OESTextureFloat.h: |
| * html/canvas/OESTextureHalfFloat.cpp: |
| (WebCore::OESTextureHalfFloat::OESTextureHalfFloat): |
| (WebCore::OESTextureHalfFloat::supported): |
| * html/canvas/OESTextureHalfFloat.h: |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::getExtension): |
| (WebCore::WebGL2RenderingContext::getSupportedExtensions): |
| (WebCore::WebGL2RenderingContext::getParameter): |
| * html/canvas/WebGLColorBufferFloat.cpp: Copied from Source/WebCore/html/canvas/OESTextureFloat.cpp. |
| (WebCore::WebGLColorBufferFloat::WebGLColorBufferFloat): |
| (WebCore::WebGLColorBufferFloat::getName const): |
| (WebCore::WebGLColorBufferFloat::supported): |
| * html/canvas/WebGLColorBufferFloat.h: Copied from Source/WebCore/html/canvas/OESTextureFloat.h. |
| * html/canvas/WebGLColorBufferFloat.idl: Added. |
| * html/canvas/WebGLExtension.h: |
| * html/canvas/WebGLRenderingContext.cpp: |
| (WebCore::WebGLRenderingContext::getExtension): |
| (WebCore::WebGLRenderingContext::getSupportedExtensions): |
| (WebCore::WebGLRenderingContext::getParameter): |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::extensionIsEnabled): |
| (WebCore::WebGLRenderingContextBase::copyTexImage2D): |
| * html/canvas/WebGLRenderingContextBase.h: |
| * platform/graphics/angle/ExtensionsGLANGLE.cpp: |
| (WebCore::ExtensionsGLANGLE::adjustWebGL1TextureInternalFormat): |
| (WebCore::ExtensionsGLANGLE::texImage2DRobustANGLE): |
| * platform/graphics/angle/ExtensionsGLANGLE.h: |
| * platform/graphics/angle/GraphicsContextGLANGLE.cpp: |
| (WebCore::GraphicsContextGLOpenGL::texImage2DDirect): |
| |
| 2020-04-29 Zalan Bujtas <zalan@apple.com> |
| |
| Header is blank on https://nader.org |
| https://bugs.webkit.org/show_bug.cgi?id=205747 |
| <rdar://problem/58305910> |
| |
| Reviewed by Simon Fraser. |
| |
| Do not use stale containing block width value while computing preferred width. |
| |
| Test: fast/text/text-indent-inside-float.html |
| |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::computeInlinePreferredLogicalWidths const): |
| |
| 2020-04-29 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Take row span into account when checking for missing cells |
| https://bugs.webkit.org/show_bug.cgi?id=211184 |
| |
| Reviewed by Antti Koivisto. |
| |
| The tree builder looks for missing cells in the table grid and fills in the gaps with empty cells. |
| This patch takes row spanning into account and make sure we don't end up adding an extra, redundant cell. |
| |
| * layout/layouttree/LayoutTreeBuilder.cpp: |
| (WebCore::Layout::TreeBuilder::buildTableStructure): |
| |
| 2020-04-29 Youenn Fablet <youenn@apple.com> |
| |
| Update SWServer.cpp originURL after https://trac.webkit.org/changeset/260707 |
| https://bugs.webkit.org/show_bug.cgi?id=211169 |
| |
| Reviewed by Alex Christensen. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::originURL): |
| No need to dereference port since URL::setPort takes an Optional. |
| |
| 2020-04-29 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] FormattingContext::constraintsForInFlow/OutOfFlowContent should take const ContainerBox& |
| https://bugs.webkit.org/show_bug.cgi?id=211161 |
| |
| Reviewed by Antti Koivisto. |
| |
| Leaf boxes should not need to compute constraints (as by definition they don't have in/out-of-flow descendants). |
| |
| * layout/FormattingContext.cpp: |
| (WebCore::Layout::FormattingContext::layoutOutOfFlowContent): |
| * layout/FormattingContext.h: |
| * layout/FormattingContextGeometry.cpp: |
| (WebCore::Layout::FormattingContext::Geometry::constraintsForOutOfFlowContent): |
| (WebCore::Layout::FormattingContext::Geometry::constraintsForInFlowContent): |
| * layout/FormattingContextQuirks.cpp: |
| (WebCore::Layout::FormattingContext::Quirks::heightValueOfNearestContainingBlockWithFixedHeight): |
| * layout/blockformatting/BlockFormattingContext.cpp: |
| (WebCore::Layout::BlockFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForBoxAndAncestors): |
| * layout/blockformatting/BlockFormattingContextQuirks.cpp: |
| (WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight): |
| * layout/blockformatting/PrecomputedBlockMarginCollapse.cpp: |
| (WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedPositiveNegativeValues const): |
| * layout/inlineformatting/InlineFormattingContext.cpp: |
| (WebCore::Layout::InlineFormattingContext::layoutInFlowContent): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutCell): |
| |
| 2020-04-29 Joonghun Park <jh718.park@samsung.com> |
| |
| Unreviewed. Remove no longer used variable and the build warning below. |
| warning: unused variable ‘view’ [-Wunused-variable] |
| |
| No new tests, no new behaviour changes. |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::handleMousePressEvent): |
| |
| 2020-04-29 Alicia Boya García <aboya@igalia.com> |
| |
| PlatformMediaResourceLoader should be destroyed on the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=211155 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| PlatformMediaResourceLoader is only safe to use from the main thread. |
| A tricky detail is this includes its destruction. The same is true for |
| PlatformMediaResource. |
| |
| Both classes are ThreadSafeRefCounted<> classes and therefore |
| WTF::DestructionThread::Main can be used to ensure destruction is run |
| in the correct thread with no need for additional client code. |
| |
| * platform/graphics/PlatformMediaResourceLoader.h: |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (WebKitWebSrcPrivate::StreamingMembers::~StreamingMembers): |
| |
| 2020-04-29 Rob Buis <rbuis@igalia.com> |
| |
| Make PolicyChecker an inner class of FrameLoader |
| https://bugs.webkit.org/show_bug.cgi?id=211138 |
| |
| Reviewed by Alex Christensen. |
| |
| PolicyChecker HistoryController an inner class of FrameLoader, this allows us to move some methods |
| only used by PolicyChecker out of the FrameLoader public API. Because it is not possible to forward declare |
| an enum class in an inner class, move ShouldContinue out of the PolicyChecker class and rename it |
| to ShouldContinuePolicyCheck. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURL): |
| (WebCore::FrameLoader::load): |
| (WebCore::FrameLoader::loadPostRequest): |
| (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy): |
| * loader/FrameLoader.h: |
| * loader/FrameLoaderTypes.h: |
| * loader/MediaResourceLoader.cpp: |
| (WebCore::MediaResource::responseReceived): |
| * loader/PolicyChecker.cpp: |
| * loader/PolicyChecker.h: |
| * platform/graphics/PlatformMediaResourceLoader.h: |
| (WebCore::PlatformMediaResourceClient::responseReceived): |
| * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm: |
| (WebCore::PlatformResourceMediaLoader::responseReceived): |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (CachedResourceStreamingClient::responseReceived): |
| * platform/network/cocoa/WebCoreNSURLSession.mm: |
| (WebCore::WebCoreNSURLSessionDataTaskClient::responseReceived): |
| (-[WebCoreNSURLSessionDataTask resource:receivedResponse:completionHandler:]): |
| |
| 2020-04-29 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK] Misplaced right click menu on web page due to deprecated gtk_menu_popup() |
| https://bugs.webkit.org/show_bug.cgi?id=170553 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * platform/gtk/GtkVersioning.h: Add replacements for GtkPopover functions which are no longet available in GTK4. |
| (gtk_popover_menu_new): Added. |
| (gtk_popover_bind_model): Added. |
| (gtk_popover_set_relative_to): Added. |
| |
| 2020-04-29 Philippe Normand <pnormand@igalia.com> |
| |
| [GStreamer] Switch to audiointerleave |
| https://bugs.webkit.org/show_bug.cgi?id=211124 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| The audiointerleave element is a drop-in replacement of |
| interleave. It should behave a bit better in live. |
| |
| No new tests, existing webaudio tests cover this change. |
| |
| * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp: |
| (webKitWebAudioSrcConstructed): |
| (webKitWebAudioSrcChangeState): |
| |
| 2020-04-23 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebXR][WPE] Implement XRTest::simulateDeviceConnection() |
| https://bugs.webkit.org/show_bug.cgi?id=210912 |
| |
| Reviewed by Dean Jackson. |
| |
| This API gives tests the ability to spin up a simulated XR device which |
| is an XR device which from the point of view of the WebXR API behaves |
| like a normal XR device. These simulated XR devices can be controlled by |
| the associated FakeXRDevice object. |
| |
| No new tests as this is machinery required to execute tests when |
| implementing the WebXR API. |
| |
| * Modules/webxr/WebXRSystem.cpp: |
| (WebCore::WebXRSystem::WebXRSystem): Initialize the default inline device. |
| (WebCore::WebXRSystem::registerSimulatedXRDeviceForTesting): Add a newly |
| created simulated XR device to the list of available devices. Update |
| also the active immersive device and current inline device. |
| (WebCore::WebXRSystem::unregisterSimulatedXRDeviceForTesting): Remove |
| all simulated devices from the list of immersive XR devices. |
| * Modules/webxr/WebXRSystem.h: New DummyInlineDevice which represents |
| the default inline device which must not provide pose information. |
| * Modules/webxr/WebXRView.cpp: |
| (WebCore::WebXRView::WebXRView): Removed some methods that should be |
| really part of a fake XRView instance. |
| (WebCore::WebXRView::setProjectionMatrix): Add implementation. |
| (WebCore::WebXRView::eye const): Deleted. |
| (WebCore::WebXRView::projectionMatrix const): Deleted. |
| (WebCore::WebXRView::transform const): Deleted. |
| * Modules/webxr/WebXRView.h: |
| (WebCore::WebXRView::eye const): Implemented. |
| (WebCore::WebXRView::projectionMatrix const): Ditto. |
| (WebCore::WebXRView::transform const): Ditto. |
| (WebCore::WebXRView::setEye): Ditto. |
| (WebCore::WebXRView::setTransform): Ditto. |
| * Modules/webxr/XRReferenceSpaceType.h: Moved the definitions to PlatformXR. |
| * platform/xr/PlatformXR.cpp: |
| (PlatformXR::Instance::nextDeviceId): New method which returns uniquely |
| defined ids for XR devices. |
| (PlatformXR::Device::Device): |
| * platform/xr/PlatformXR.h: |
| (PlatformXR::Device::id const): New method. |
| (PlatformXR::Device::supports const): Ditto. |
| (PlatformXR::Device::setSupportedModes): Ditto. |
| (PlatformXR::Device::setEnabledFeatures): Ditto. |
| (PlatformXR::Device::operator== const): Ditto. |
| * testing/FakeXRViewInit.h: fieldOfView is optional. |
| * testing/WebFakeXRDevice.cpp: |
| (WebCore::FakeXRView::setFieldOfView): Implemented. |
| (WebCore::WebFakeXRDevice::setViews): Ditto. |
| (WebCore::WebFakeXRDevice::setViewerOrigin): Ditto. |
| (WebCore::WebFakeXRDevice::clearViewerOrigin): Ditto. |
| (WebCore::WebFakeXRDevice::setFloorOrigin): Ditoo. |
| (WebCore::WebFakeXRDevice::clearFloorOrigin): Ditto. |
| (WebCore::WebFakeXRDevice::parseRigidTransform): Added. |
| (WebCore::WebFakeXRDevice::parseView): Ditto. |
| * testing/WebFakeXRDevice.h: Defined FakeXRView class which wraps a |
| XRView adding some associated data as the field of view and viewport. |
| Also defined the SimulatedXRDevice which is an PlatformXR::Device with |
| some additional data useful for testing purpouses. |
| * testing/WebXRTest.cpp: |
| (WebCore::WebXRTest::simulateDeviceConnection): Create a new |
| FakeXRDevice with an associated simulated XR device with the data |
| provided by a FakeXRDeviceInit. |
| (WebCore::WebXRTest::disconnectAllDevices): Remove all simulated devices |
| from the list of immersive devices. |
| * testing/WebXRTest.h: Call simulateDeviceConnection with ScriptExecutionContext. |
| * testing/WebXRTest.idl: Ditto. |
| |
| 2020-04-29 Saam Barati <sbarati@apple.com> |
| |
| U_STRING_NOT_TERMINATED_WARNING ICU must be handled when using the output buffer as a C string |
| https://bugs.webkit.org/show_bug.cgi?id=211142 |
| <rdar://problem/62530860> |
| |
| Reviewed by Darin Adler. |
| |
| * editing/TextIterator.cpp: |
| (WebCore::normalizeCharacters): |
| * platform/text/LocaleICU.cpp: |
| (WebCore::LocaleICU::decimalSymbol): |
| (WebCore::LocaleICU::decimalTextAttribute): |
| (WebCore::getDateFormatPattern): |
| (WebCore::LocaleICU::createLabelVector): |
| (WebCore::getFormatForSkeleton): |
| * platform/text/LocaleToScriptMappingICU.cpp: |
| (WebCore::localeToScriptCodeForFontSelection): |
| * platform/text/TextCodecICU.cpp: |
| (WebCore::TextCodecICU::decode): |
| (WebCore::TextCodecICU::encode): |
| |
| 2020-04-29 Noam Rosenthal <noam@webkit.org> |
| |
| Add StringView::isAllSpecialCharacters() |
| https://bugs.webkit.org/show_bug.cgi?id=211150 |
| |
| Reviewed by Darin Adler. |
| |
| Uses new StringView::isAllSpecialCharacters() instead of creating a StringImpl. |
| |
| No new tests. |
| |
| * rendering/TextPainter.cpp: |
| (WebCore::TextPainter::paintTextOrEmphasisMarks): |
| |
| 2020-04-28 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Rendering update steps should use Seconds for the timestamps |
| https://bugs.webkit.org/show_bug.cgi?id=210990 |
| |
| Unreviewed. |
| |
| serviceRequestAnimationFrameCallbacks() should return rounded milliseconds. |
| This rounding was removed in r260736. So put it back. |
| |
| * dom/ScriptedAnimationController.cpp: |
| (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): |
| |
| 2020-04-28 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Add support for key events |
| https://bugs.webkit.org/show_bug.cgi?id=211128 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| * platform/gtk/GtkVersioning.h: |
| (gdk_event_get_keyval): |
| (gdk_event_get_keycode): |
| |
| 2020-04-28 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Text manipulation] Add a userInfo dictionary to _WKTextManipulationToken |
| https://bugs.webkit.org/show_bug.cgi?id=211151 |
| <rdar://problem/62329534> |
| |
| Reviewed by Darin Adler. |
| |
| Add an extensible mechanism for the text manipulation controller to send additional |
| metadata for each text manipulation token through to the WebKit client, for debugging |
| purposes. |
| |
| Test: TextManipulation.StartTextManipulationExtractsUserInfo |
| |
| * editing/TextManipulationController.cpp: |
| (WebCore::tokenInfo): |
| (WebCore::TextManipulationController::observeParagraphs): |
| * editing/TextManipulationController.h: |
| |
| Add TextManipulationTokenInfo, and add an optional TextManipulationTokenInfo member to |
| TextManipulationToken. For now, just send over the document URL, element tag name, and |
| the value of the role attribute. |
| |
| (WebCore::TextManipulationController::ManipulationTokenInfo::encode const): |
| (WebCore::TextManipulationController::ManipulationTokenInfo::decode): |
| (WebCore::TextManipulationController::ManipulationToken::encode const): |
| (WebCore::TextManipulationController::ManipulationToken::decode): |
| |
| 2020-04-28 Simon Fraser <simon.fraser@apple.com> |
| |
| Update the xcfilelists. |
| |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| |
| 2020-04-28 Simon Fraser <simon.fraser@apple.com> |
| |
| REGRESSION (r260808): Backdrops on music.apple.com are offset |
| https://bugs.webkit.org/show_bug.cgi?id=211153 |
| <rdar://problem/62543158> |
| |
| Reviewed by Zalan Bujtas. |
| |
| The border-radius code path failed to offset the rounded rect by contentOffsetInCompositingLayer(). |
| |
| Test: compositing/filters/backdrop-filter-rect-border-radius.html |
| |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateBackdropFiltersGeometry): |
| |
| 2020-04-28 Daniel Bates <dabates@apple.com> |
| |
| Modernize EndPointsAdjustmentMode enumeration and fix misspelled enumerator |
| https://bugs.webkit.org/show_bug.cgi?id=211141 |
| |
| Reviewed by Eric Carlson. |
| |
| Fix the misspelled enumerator DoNotAdjsutEndpoints. While I am here, make |
| EndPointsAdjustmentMode an enum class sized as a bool and simplify the naming |
| of its enumerators now that they have to be qualified. I also re-ordered them |
| so that DoNotAdjust is the first enumerator (it will have value 0). This doesn't |
| really matter, but I like it because it makes it so that this enumeration behaves |
| more like an equivalent boolean should casts be involved. |
| |
| * editing/FrameSelection.cpp: |
| (WebCore::FrameSelection::setSelectionByMouseIfDifferent): |
| * editing/FrameSelection.h: |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::updateSelectionForMouseDrag): |
| |
| 2020-04-28 Daniel Bates <dabates@apple.com> |
| |
| [WebKitLegacy] Implement -hidePlaceholder and -showPlaceholderIfNecessary in terms of setCanShowPlaceholder() |
| https://bugs.webkit.org/show_bug.cgi?id=211139 |
| |
| Reviewed by Simon Fraser. |
| |
| Remove hidePlaceholder() and showPlaceholderIfNecessary() as they are no longer needed. |
| Callers should use setCanShowPlaceholder() instead. |
| |
| * html/HTMLTextFormControlElement.cpp: |
| (WebCore::HTMLTextFormControlElement::hidePlaceholder): Deleted. |
| (WebCore::HTMLTextFormControlElement::showPlaceholderIfNecessary): Deleted. |
| * html/HTMLTextFormControlElement.h: |
| |
| 2020-04-28 ChangSeok Oh <changseok@webkit.org> |
| |
| [GTK] Fix build failures for ANGLE_WEBGL after r259589 |
| https://bugs.webkit.org/show_bug.cgi?id=211116 |
| |
| Reviewed by Alex Christensen. |
| |
| The compiler is unhappy with coverting GCGLint64 (long long int) to GLInt64 (long int). |
| Passing GCGLuint62 as GLuint64 is a similar issue. |
| |
| No new tests since no new functionalities. |
| |
| * platform/graphics/angle/ExtensionsGLANGLE.cpp: |
| (WebCore::ExtensionsGLANGLE::getInteger64vRobustANGLE): |
| (WebCore::ExtensionsGLANGLE::getInteger64i_vRobustANGLE): |
| (WebCore::ExtensionsGLANGLE::getBufferParameteri64vRobustANGLE): |
| (WebCore::ExtensionsGLANGLE::getQueryObjecti64vRobustANGLE): |
| (WebCore::ExtensionsGLANGLE::getQueryObjectui64vRobustANGLE): |
| * platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp: |
| (Nicosia::GC3DLayer::swapBuffersIfNeeded): Unaccelerated -> RenderingMode::Unaccelerated |
| |
| 2020-04-28 Noam Rosenthal <noam@webkit.org> |
| |
| Implement FCP (first contentful paint) |
| https://bugs.webkit.org/show_bug.cgi?id=208499 |
| |
| Reviewed by Simon Fraser. |
| |
| Added the necessary interface, extensions to the performance interface and observer, new runtime flag. |
| Detecting contentfulness after layout and before actual paint, by running a "dummy" paint, similar to |
| invalidateControlTints() / invalidateImagesWithAsyncDecodes(). Save the result to the GraphicsContext and then to the document. |
| This would run for every paint until we detect a contentful one. |
| |
| Note that it paints the entire frame contents, as FCP is not viewport-dependent. |
| Also, paint timing is currently disabled for LFC (layout formatting context), and will be dealt with later. |
| |
| Tests: http/tests/performance/paint-timing/performance-paint-timing-fcp-after-visually-non-empty-for-num-chars.html |
| http/tests/performance/paint-timing/performance-paint-timing-fcp-after-visually-non-empty-for-style.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-background-size.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-bg-image-set.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-bg-image-two-steps.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-canvas-context.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-gradient.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-invisible-3d-rotate-descendant.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-invisible-3d-rotate.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-invisible-scale-transition.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-invisible-scale.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-invisible-text.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-opacity-descendant.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-opacity.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-out-of-bounds-translate.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-out-of-bounds.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-pseudo-element-display.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-pseudo-element-image.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-pseudo-element-opacity.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-pseudo-element-text.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-pseudo-element-visibility.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-svg.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-text-input.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-typographic-pseudo.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-video-frame.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-video-poster.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-whitespace.html |
| imported/w3c/web-platform-tests/paint-timing/fcp-only/fcp-with-rtl.html |
| performance-api/paint-timing/paint-timing-apis.html |
| performance-api/paint-timing/paint-timing-frames.html |
| performance-api/paint-timing/paint-timing-with-worker.html |
| performance-api/paint-timing/performance-observer-first-contentful-paint.html |
| |
| * CMakeLists.txt: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/JSPerformanceEntryCustom.cpp: |
| (WebCore::toJSNewlyCreated): |
| * bindings/js/WebCoreBuiltinNames.h: |
| Add PerformancePaintTiming interface. https://w3c.github.io/paint-timing/#sec-PerformancePaintTiming |
| |
| * dom/Document.cpp: |
| * dom/Document.h: |
| (WebCore::Document::supportsPaintTiming const): |
| We only report paint timing for document that can access the top level security origin, to avoid leakage of information to sandboxed iframes. |
| |
| (WebCore::Document::enqueuePaintTimingEntryIfNeeded): |
| Enqueue a paint timing entry, according to https://w3c.github.io/paint-timing/#sec-reporting-paint-timing |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::paintContents): |
| Disable FCP fake-paint in LFC mode. |
| |
| * page/Page.cpp: |
| (WebCore::Page::doAfterUpdateRendering): |
| * page/Performance.cpp: |
| (WebCore::Performance::getEntries const): |
| (WebCore::Performance::getEntriesByType const): |
| (WebCore::Performance::getEntriesByName const): |
| (WebCore::Performance::reportFirstContentfulPaint): |
| * page/Performance.h: |
| Support first-contentful-paint reporting. |
| |
| * page/PerformanceEntry.cpp: |
| (WebCore::PerformanceEntry::parseEntryTypeString): |
| * page/PerformanceEntry.h: |
| (WebCore::PerformanceEntry::isPaint const): |
| * page/PerformanceObserver.cpp: |
| (WebCore::PerformanceObserver::supportedEntryTypes): |
| * page/PerformanceObserver.h: |
| * page/PerformanceObserver.idl: |
| * page/PerformancePaintTiming.h: Added. |
| (isType): |
| * page/PerformancePaintTiming.idl: Added. |
| Add paint performance entry type. |
| |
| * page/RuntimeEnabledFeatures.h: |
| (WebCore::RuntimeEnabledFeatures::setPaintTimingEnabled): |
| (WebCore::RuntimeEnabledFeatures::paintTimingEnabled const): |
| New runtime flag for paint timing. |
| |
| * platform/graphics/GraphicsContext.h: |
| (WebCore::GraphicsContext::detectingContentfulPaint const): |
| (WebCore::GraphicsContext::setContentfulPaintDetected): |
| (WebCore::GraphicsContext::contenfulPaintDetected const): |
| Add a flag in GraphicsContext where different render operations can report if they're contentful. |
| |
| * rendering/ContentfulPaintChecker.cpp: Added. |
| (WebCore::ContentfulPaintChecker::qualifiesForContentfulPaint): |
| * rendering/ContentfulPaintChecker.h: Added. |
| Run a "dummy" paint of the FrameView, to detect contentful elements. |
| |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::paintFillLayerExtended): |
| * rendering/RenderHTMLCanvas.cpp: |
| (WebCore::RenderHTMLCanvas::paintReplaced): |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::paintReplaced): |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::paintLayerContents): |
| * rendering/RenderVideo.cpp: |
| (WebCore::RenderVideo::paintReplaced): |
| * rendering/TextPainter.cpp: |
| (WebCore::TextPainter::paintTextOrEmphasisMarks): |
| * rendering/svg/RenderSVGRoot.cpp: |
| (WebCore::RenderSVGRoot::paintReplaced): |
| Report contentfulness when we reach anything that qualifies as contentful, |
| based on https://w3c.github.io/paint-timing/#contentful. |
| |
| 2020-04-28 Simon Fraser <simon.fraser@apple.com> |
| |
| MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin log with no error |
| https://bugs.webkit.org/show_bug.cgi?id=211145 |
| |
| Reviewed by Jer Noble. |
| |
| Don't log when MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin() returns 0. |
| |
| * platform/audio/cocoa/MediaSessionManagerCocoa.mm: |
| (WebCore::MediaSessionManagerCocoa::setNowPlayingInfo): |
| |
| 2020-04-28 Ross Kirsling <ross.kirsling@sony.com> |
| |
| [JSC] Align upon the name isCallable instead of isFunction |
| https://bugs.webkit.org/show_bug.cgi?id=211140 |
| |
| Reviewed by Darin Adler. |
| |
| * Modules/plugins/QuickTimePluginReplacement.mm: |
| (WebCore::QuickTimePluginReplacement::ensureReplacementScriptInjected): |
| * bindings/js/JSCustomElementRegistryCustom.cpp: |
| (WebCore::getCustomElementCallback): |
| * bindings/js/JSDOMConvertCallbacks.h: |
| (WebCore::Converter<IDLCallbackFunction<T>>::convert): |
| * bindings/js/JSDOMConvertScheduledAction.h: |
| (WebCore::Converter<IDLScheduledAction>::convert): |
| * bindings/js/JSDOMPromise.cpp: |
| (WebCore::DOMPromise::whenPromiseIsSettled): |
| * bindings/js/JSDOMWindowCustom.cpp: |
| (WebCore::JSDOMWindow::queueMicrotask): |
| * bindings/js/JSWorkerGlobalScopeCustom.cpp: |
| (WebCore::JSWorkerGlobalScope::queueMicrotask): |
| * bindings/js/ReadableStream.cpp: |
| (WebCore::ReadableStream::pipeTo): |
| (WebCore::ReadableStream::tee): |
| * bindings/js/ReadableStreamDefaultController.cpp: |
| (WebCore::ReadableStreamDefaultController::invoke): |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::callInWorld): |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateOverloadDispatcher): |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript): |
| * testing/Internals.cpp: |
| (WebCore::Internals::parserMetaData): |
| (WebCore::Internals::cloneArrayBuffer): |
| * worklets/PaintWorkletGlobalScope.cpp: |
| (WebCore::PaintWorkletGlobalScope::registerPaint): |
| |
| 2020-04-28 Simon Fraser <simon.fraser@apple.com> |
| |
| Rewrite GraphicsLayerCA::updateSublayerList() |
| https://bugs.webkit.org/show_bug.cgi?id=211137 |
| |
| Reviewed by Zalan Bujtas. |
| |
| This function was hard to understand, with aliasing of a layer list to handle |
| the various configurations. Future patches will add a bit more complexity here. |
| |
| Rewrite using lambdas, which makes it easier to follow. |
| |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::updateSublayerList): |
| |
| 2020-04-28 Christopher Reid <chris.reid@sony.com> |
| |
| [Win] Bundle Inspector Resources in Release builds |
| https://bugs.webkit.org/show_bug.cgi?id=210942 |
| |
| Reviewed by Fujii Hironori. |
| |
| * CMakeLists.txt: |
| |
| 2020-04-28 Rob Buis <rbuis@igalia.com> |
| |
| Remove downloadAttribute from DocumentLoader |
| https://bugs.webkit.org/show_bug.cgi?id=210493 |
| |
| Reviewed by Darin Adler. |
| |
| Remove downloadAttribute from DocumentLoader since this |
| can be obtained from the NavigationAction. |
| |
| * loader/DocumentLoader.h: |
| (WebCore::DocumentLoader::downloadAttribute const): |
| (WebCore::DocumentLoader::setDownloadAttribute): Deleted. |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURL): |
| (WebCore::FrameLoader::loadWithNavigationAction): |
| (WebCore::FrameLoader::loadPostRequest): |
| * loader/FrameLoader.h: |
| |
| 2020-04-28 Jack Lee <shihchieh_lee@apple.com> |
| |
| Nullptr crash in EditCommand::EditCommand via CompositeEditCommand::removeNode |
| https://bugs.webkit.org/show_bug.cgi?id=207600 |
| <rdar://problem/56969450> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Move FrameSelection and Editor objects from Frame to Document so when a document is detached |
| in nested command executions, the next EditCommand would not fail in constructor. |
| |
| Test: editing/inserting/insert-list-then-edit-command-crash.html |
| |
| * dom/Document.cpp: |
| (WebCore::m_selection): |
| (WebCore::Document::willBeRemovedFromFrame): |
| (WebCore::m_undoManager): Deleted. |
| (WebCore::Document::prepareForDestruction): Deleted. |
| * dom/Document.h: |
| (WebCore::Document::editor): |
| (WebCore::Document::editor const): |
| (WebCore::Document::selection): |
| (WebCore::Document::selection const): |
| * editing/AlternativeTextController.cpp: |
| (WebCore::AlternativeTextController::AlternativeTextController): |
| (WebCore::AlternativeTextController::stopPendingCorrection): |
| (WebCore::AlternativeTextController::isSpellingMarkerAllowed const): |
| (WebCore::AlternativeTextController::applyAutocorrectionBeforeTypingIfAppropriate): |
| (WebCore::AlternativeTextController::respondToUnappliedSpellCorrection): |
| (WebCore::AlternativeTextController::timerFired): |
| (WebCore::AlternativeTextController::handleAlternativeTextUIResult): |
| (WebCore::AlternativeTextController::rootViewRectForRange const): |
| (WebCore::AlternativeTextController::respondToChangedSelection): |
| (WebCore::AlternativeTextController::respondToAppliedEditing): |
| (WebCore::AlternativeTextController::respondToUnappliedEditing): |
| (WebCore::AlternativeTextController::editorClient): |
| (WebCore::AlternativeTextController::markPrecedingWhitespaceForDeletedAutocorrectionAfterCommand): |
| (WebCore::AlternativeTextController::processMarkersOnTextToBeReplacedByResult): |
| (WebCore::AlternativeTextController::respondToMarkerAtEndOfWord): |
| (WebCore::AlternativeTextController::alternativeTextClient): |
| (WebCore::AlternativeTextController::applyAlternativeTextToRange): |
| (WebCore::AlternativeTextController::insertDictatedText): |
| (WebCore::AlternativeTextController::applyDictationAlternative): |
| * editing/AlternativeTextController.h: |
| (WebCore::AlternativeTextController::UNLESS_ENABLED): |
| * editing/CompositeEditCommand.cpp: |
| (WebCore::EditCommandComposition::unapply): |
| (WebCore::EditCommandComposition::reapply): |
| (WebCore::CompositeEditCommand::willApplyCommand): |
| (WebCore::CompositeEditCommand::didApplyCommand): |
| (WebCore::CompositeEditCommand::targetRanges const): |
| (WebCore::CompositeEditCommand::moveParagraphs): |
| * editing/DeleteSelectionCommand.cpp: |
| (WebCore::DeleteSelectionCommand::saveTypingStyleState): |
| (WebCore::DeleteSelectionCommand::mergeParagraphs): |
| (WebCore::DeleteSelectionCommand::calculateTypingStyleAfterDelete): |
| (WebCore::DeleteSelectionCommand::doApply): |
| * editing/EditCommand.cpp: |
| (WebCore::EditCommand::EditCommand): |
| (WebCore::EditCommand::isEditingTextAreaOrTextInput const): |
| (WebCore::EditCommand::postTextStateChangeNotification): |
| (WebCore::EditCommand::frame): Deleted. |
| (WebCore::EditCommand::frame const): Deleted. |
| * editing/EditCommand.h: |
| * editing/Editing.cpp: |
| (WebCore::createDefaultParagraphElement): |
| * editing/EditingStyle.cpp: |
| (WebCore::StyleChange::StyleChange): |
| * editing/Editor.cpp: |
| (WebCore::ClearTextCommand::CreateAndApply): |
| (WebCore::TemporarySelectionChange::TemporarySelectionChange): |
| (WebCore::TemporarySelectionChange::~TemporarySelectionChange): |
| (WebCore::TemporarySelectionChange::setSelection): |
| (WebCore::Editor::selectionForCommand): |
| (WebCore::Editor::behavior const): |
| (WebCore::Editor::client const): |
| (WebCore::Editor::canEdit const): |
| (WebCore::Editor::canEditRichly const): |
| (WebCore::Editor::canDHTMLCut): |
| (WebCore::Editor::canDHTMLCopy): |
| (WebCore::Editor::canCopy const): |
| (WebCore::Editor::canPaste const): |
| (WebCore::Editor::canDelete const): |
| (WebCore::Editor::shouldSmartDelete): |
| (WebCore::Editor::deleteWithDirection): |
| (WebCore::Editor::deleteSelectionWithSmartDelete): |
| (WebCore::Editor::clearText): |
| (WebCore::Editor::replaceSelectionWithFragment): |
| (WebCore::Editor::selectedRange): |
| (WebCore::Editor::tryDHTMLCopy): |
| (WebCore::Editor::tryDHTMLCut): |
| (WebCore::Editor::shouldInsertText const): |
| (WebCore::Editor::hasBidiSelection const): |
| (WebCore::Editor::selectionUnorderedListState const): |
| (WebCore::Editor::selectionOrderedListState const): |
| (WebCore::Editor::increaseSelectionListLevel): |
| (WebCore::Editor::increaseSelectionListLevelOrdered): |
| (WebCore::Editor::increaseSelectionListLevelUnordered): |
| (WebCore::Editor::decreaseSelectionListLevel): |
| (WebCore::Editor::findEventTargetFromSelection const): |
| (WebCore::Editor::applyStyle): |
| (WebCore::Editor::applyParagraphStyle): |
| (WebCore::Editor::applyStyleToSelection): |
| (WebCore::Editor::applyParagraphStyleToSelection): |
| (WebCore::Editor::selectionStartHasStyle const): |
| (WebCore::Editor::selectionHasStyle const): |
| (WebCore::Editor::selectionStartCSSPropertyValue): |
| (WebCore::Editor::appliedEditing): |
| (WebCore::Editor::Editor): |
| (WebCore::Editor::clear): |
| (WebCore::Editor::insertText): |
| (WebCore::Editor::insertTextForConfirmedComposition): |
| (WebCore::Editor::insertTextWithoutSendingTextEvent): |
| (WebCore::Editor::insertLineBreak): |
| (WebCore::Editor::insertParagraphSeparator): |
| (WebCore::Editor::performCutOrCopy): |
| (WebCore::Editor::paste): |
| (WebCore::Editor::pasteAsQuotation): |
| (WebCore::Editor::renderLayerDidScroll): |
| (WebCore::Editor::setBaseWritingDirection): |
| (WebCore::Editor::baseWritingDirectionForSelectionStart const): |
| (WebCore::Editor::selectComposition): |
| (WebCore::SetCompositionScope::SetCompositionScope): |
| (WebCore::SetCompositionScope::~SetCompositionScope): |
| (WebCore::Editor::setComposition): |
| (WebCore::Editor::ignoreSpelling): |
| (WebCore::Editor::learnSpelling): |
| (WebCore::Editor::advanceToNextMisspelling): |
| (WebCore::Editor::misspelledWordAtCaretOrRange const): |
| (WebCore::Editor::isSelectionUngrammatical): |
| (WebCore::Editor::guessesForMisspelledWord const): |
| (WebCore::Editor::guessesForMisspelledOrUngrammatical): |
| (WebCore::Editor::markMisspellingsAfterTypingToWord): |
| (WebCore::Editor::isSpellCheckingEnabledInFocusedNode const): |
| (WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges): |
| (WebCore::Editor::markAndReplaceFor): |
| (WebCore::Editor::updateMarkersForWordsAffectedByEditing): |
| (WebCore::Editor::rangeForPoint): |
| (WebCore::Editor::revealSelectionAfterEditingOperation): |
| (WebCore::Editor::setIgnoreSelectionChanges): |
| (WebCore::Editor::getCompositionSelection const): |
| (WebCore::Editor::transpose): |
| (WebCore::Editor::changeSelectionAfterCommand): |
| (WebCore::Editor::selectedText const): |
| (WebCore::Editor::selectedTextForDataTransfer const): |
| (WebCore::Editor::insertTextPlaceholder): |
| (WebCore::Editor::removeTextPlaceholder): |
| (WebCore::Editor::shouldChangeSelection const): |
| (WebCore::Editor::computeAndSetTypingStyle): |
| (WebCore::Editor::findString): |
| (WebCore::Editor::countMatchesForText): |
| (WebCore::Editor::respondToChangedSelection): |
| (WebCore::Editor::shouldDetectTelephoneNumbers const): |
| (WebCore::Editor::scanSelectionForTelephoneNumbers): |
| (WebCore::Editor::editorUIUpdateTimerFired): |
| (WebCore::Editor::selectionStartHasMarkerFor const): |
| (WebCore::Editor::stringForCandidateRequest const): |
| (WebCore::Editor::contextRangeForCandidateRequest const): |
| (WebCore::Editor::fontAttributesAtSelectionStart const): |
| (WebCore::Editor::notifyClientOfAttachmentUpdates): |
| (WebCore::Editor::handleAcceptedCandidate): |
| (WebCore::Editor::unifiedTextCheckerEnabled const): |
| (WebCore::Editor::toggleOverwriteModeEnabled): |
| (WebCore::Editor::fontForSelection const): |
| (WebCore::Editor::canCopyExcludingStandaloneImages const): |
| (WebCore::Editor::document const): Deleted. |
| * editing/Editor.h: |
| (WebCore::TemporarySelectionChange::TemporarySelectionChange): |
| (WebCore::IgnoreSelectionChangeForScope::IgnoreSelectionChangeForScope): |
| (WebCore::Editor::document const): |
| * editing/EditorCommand.cpp: |
| (WebCore::executeSwapWithMark): |
| (WebCore::Editor::command): |
| (WebCore::Editor::Command::Command): |
| (WebCore::Editor::Command::execute const): |
| * editing/FrameSelection.cpp: |
| (WebCore::shouldAlwaysUseDirectionalSelection): |
| (WebCore::FrameSelection::FrameSelection): |
| (WebCore::FrameSelection::rootEditableElementOrDocumentElement const): |
| (WebCore::FrameSelection::setSelectionByMouseIfDifferent): |
| (WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance): |
| (WebCore::FrameSelection::setSelection): |
| (WebCore::updateSelectionByUpdatingLayoutOrStyle): |
| (WebCore::FrameSelection::setNeedsSelectionUpdate): |
| (WebCore::FrameSelection::updateAndRevealSelection): |
| (WebCore::FrameSelection::updateDataDetectorsForSelection): |
| (WebCore::FrameSelection::positionForPlatform const): |
| (WebCore::FrameSelection::nextWordPositionForPlatform): |
| (WebCore::FrameSelection::modifyMovingRight): |
| (WebCore::FrameSelection::modifyMovingLeft): |
| (WebCore::FrameSelection::modify): |
| (WebCore::FrameSelection::willBeRemovedFromFrame): |
| (WebCore::FrameSelection::absoluteCaretBounds): |
| (WebCore::FrameSelection::recomputeCaretRect): |
| (WebCore::FrameSelection::contains const): |
| (WebCore::FrameSelection::selectAll): |
| (WebCore::FrameSelection::focusedOrActiveStateChanged): |
| (WebCore::FrameSelection::isFocusedAndActive const): |
| (WebCore::shouldStopBlinkingDueToTypingCommand): |
| (WebCore::FrameSelection::updateAppearance): |
| (WebCore::FrameSelection::setCaretVisibility): |
| (WebCore::FrameSelection::setFocusedElementIfNeeded): |
| (WebCore::FrameSelection::shouldDeleteSelection const): |
| (WebCore::FrameSelection::selectionBounds const): |
| (WebCore::FrameSelection::getClippedVisibleTextRectangles const): |
| (WebCore::FrameSelection::currentForm const): |
| (WebCore::FrameSelection::revealSelection): |
| (WebCore::FrameSelection::setSelectionFromNone): |
| (WebCore::FrameSelection::shouldChangeSelection const): |
| (WebCore::FrameSelection::setShouldShowBlockCursor): |
| (WebCore::FrameSelection::appearanceUpdateTimerFired): |
| (WebCore::FrameSelection::updateAppearanceAfterLayoutOrStyleChange): |
| (WebCore::FrameSelection::selectRangeOnElement): |
| (WebCore::FrameSelection::setCaretBlinks): |
| (WebCore::FrameSelection::prepareForDestruction): Deleted. |
| * editing/FrameSelection.h: |
| * editing/InsertIntoTextNodeCommand.cpp: |
| (WebCore::InsertIntoTextNodeCommand::doApply): |
| * editing/InsertLineBreakCommand.cpp: |
| (WebCore::InsertLineBreakCommand::doApply): |
| * editing/InsertTextCommand.cpp: |
| (WebCore::InsertTextCommand::doApply): |
| * editing/ReplaceRangeWithTextCommand.cpp: |
| (WebCore::ReplaceRangeWithTextCommand::doApply): |
| * editing/ReplaceSelectionCommand.cpp: |
| (WebCore::ReplaceSelectionCommand::doApply): |
| * editing/SetSelectionCommand.cpp: |
| (WebCore::SetSelectionCommand::doApply): |
| (WebCore::SetSelectionCommand::doUnapply): |
| * editing/SpellChecker.cpp: |
| (WebCore::SpellChecker::SpellChecker): |
| (WebCore::SpellChecker::client const): |
| (WebCore::SpellChecker::isAsynchronousEnabled const): |
| (WebCore::SpellChecker::invokeRequest): |
| (WebCore::SpellChecker::didCheck): |
| (WebCore::SpellChecker::didCheckSucceed): |
| * editing/SpellChecker.h: |
| * editing/SpellingCorrectionCommand.cpp: |
| (WebCore::SpellingCorrectionCommand::doApply): |
| * editing/TypingCommand.cpp: |
| (WebCore::TypingCommand::deleteSelection): |
| (WebCore::TypingCommand::deleteKeyPressed): |
| (WebCore::TypingCommand::forwardDeleteKeyPressed): |
| (WebCore::TypingCommand::updateSelectionIfDifferentFromCurrentSelection): |
| (WebCore::TypingCommand::insertText): |
| (WebCore::TypingCommand::insertLineBreak): |
| (WebCore::TypingCommand::insertParagraphSeparatorInQuotedContent): |
| (WebCore::TypingCommand::insertParagraphSeparator): |
| (WebCore::TypingCommand::lastTypingCommandIfStillOpenForTyping): |
| (WebCore::TypingCommand::closeTyping): |
| (WebCore::TypingCommand::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping): |
| (WebCore::TypingCommand::markMisspellingsAfterTyping): |
| (WebCore::TypingCommand::willAddTypingToOpenCommand): |
| (WebCore::TypingCommand::typingAddedToOpenCommand): |
| (WebCore::TypingCommand::insertTextAndNotifyAccessibility): |
| (WebCore::TypingCommand::insertTextRunWithoutNewlines): |
| (WebCore::TypingCommand::insertLineBreakAndNotifyAccessibility): |
| (WebCore::TypingCommand::insertParagraphSeparatorAndNotifyAccessibility): |
| (WebCore::TypingCommand::insertParagraphSeparatorInQuotedContentAndNotifyAccessibility): |
| * editing/TypingCommand.h: |
| * editing/cocoa/EditorCocoa.mm: |
| (WebCore::Editor::selectionInHTMLFormat): |
| (WebCore::selectionAsAttributedString): |
| (WebCore::Editor::writeSelectionToPasteboard): |
| (WebCore::Editor::writeSelection): |
| (WebCore::Editor::selectionInWebArchiveFormat): |
| (WebCore::Editor::replaceSelectionWithAttributedString): |
| (WebCore::Editor::webContentFromPasteboard): |
| (WebCore::Editor::takeFindStringFromSelection): |
| * editing/gtk/EditorGtk.cpp: |
| (WebCore::Editor::pasteWithPasteboard): |
| (WebCore::Editor::writeSelectionToPasteboard): |
| (WebCore::Editor::webContentFromPasteboard): |
| * editing/ios/EditorIOS.mm: |
| (WebCore::Editor::setTextAlignmentForChangedBaseWritingDirection): |
| (WebCore::Editor::removeUnchangeableStyles): |
| (WebCore::Editor::pasteWithPasteboard): |
| (WebCore::Editor::insertDictationPhrases): |
| (WebCore::Editor::setDictationPhrasesAsChildOfElement): |
| (WebCore::Editor::setTextAsChildOfElement): |
| (WebCore::Editor::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping): |
| * editing/libwpe/EditorLibWPE.cpp: |
| (WebCore::Editor::writeSelectionToPasteboard): |
| (WebCore::Editor::pasteWithPasteboard): |
| * editing/mac/EditorMac.mm: |
| (WebCore::Editor::readSelectionFromPasteboard): |
| (WebCore::Editor::replaceNodeFromPasteboard): |
| (WebCore::Editor::selectionWillChange): |
| * editing/win/EditorWin.cpp: |
| (WebCore::Editor::pasteWithPasteboard): |
| (WebCore::Editor::webContentFromPasteboard): |
| * history/CachedFrame.cpp: |
| (WebCore::CachedFrame::destroy): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::willTransitionToCommitted): |
| (WebCore::FrameLoader::closeURL): |
| (WebCore::FrameLoader::didOpenURL): |
| (WebCore::FrameLoader::clear): |
| * page/Frame.cpp: |
| (WebCore::Frame::Frame): |
| (WebCore::Frame::setView): |
| (WebCore::Frame::setDocument): |
| (WebCore::Frame::requestDOMPasteAccess): |
| (WebCore::Frame::setPageAndTextZoomFactors): |
| * page/Frame.h: |
| * page/TextIndicator.cpp: |
| (WebCore::TextIndicator::createWithRange): |
| |
| 2020-04-28 Antti Koivisto <antti@apple.com> |
| |
| msn.com: Header flickers when scrolling articles |
| https://bugs.webkit.org/show_bug.cgi?id=211126 |
| <rdar://problem/56439177> |
| |
| Reviewed by Simon Fraser. |
| |
| Test: compositing/fixed-with-clip-stability.html |
| |
| In case of fixed positioned elements the decision to create backing depends on clip rect. |
| However RenderLayer::localClipRect() tests for backing in call to clippingRootForPainting(). This creates |
| instability since clipping depends on backing decision, and backing decision depends on clipping. |
| |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::localClipRect const): |
| |
| Specifically the result of clipExceedsBounds test here is affected by computed offsetFromRoot: |
| "clipRect.contains(cssClipRect)" test fails for zero sized clips with different offsets. |
| |
| Compute clipExceedsBounds by looking at the clip sizes only and ignoring the position (which should match). |
| |
| 2020-04-28 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Introduce FormattingContext::ConstraintsForOutOfFlowContent |
| https://bugs.webkit.org/show_bug.cgi?id=211125 |
| |
| Reviewed by Antti Koivisto. |
| |
| Horizontal and vertical out-of-flow constraints are always computed and used in pairs. |
| |
| * layout/FormattingContext.cpp: |
| (WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry): |
| (WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry): |
| (WebCore::Layout::FormattingContext::layoutOutOfFlowContent): |
| * layout/FormattingContext.h: |
| * layout/FormattingContextGeometry.cpp: |
| (WebCore::Layout::FormattingContext::Geometry::constraintsForOutOfFlowContent): |
| (WebCore::Layout::FormattingContext::Geometry::horizontalConstraintsForOutOfFlow): Deleted. |
| (WebCore::Layout::FormattingContext::Geometry::verticalConstraintsForOutOfFlow): Deleted. |
| * layout/LayoutContext.cpp: |
| (WebCore::Layout::LayoutContext::layoutFormattingContextSubtree): |
| * layout/LayoutUnits.h: |
| * layout/blockformatting/BlockFormattingContext.cpp: |
| (WebCore::Layout::BlockFormattingContext::layoutInFlowContent): |
| * layout/inlineformatting/InlineFormattingContext.cpp: |
| (WebCore::Layout::InlineFormattingContext::layoutInFlowContent): |
| |
| 2020-04-28 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC] Introduce FormattingContext::ConstraintsForInFlowContent |
| https://bugs.webkit.org/show_bug.cgi?id=211113 |
| |
| Reviewed by Antti Koivisto. |
| |
| This makes the layoutInFlowContent() related code look simpler. |
| |
| * layout/FormattingContext.cpp: |
| (WebCore::Layout::FormattingContext::layoutOutOfFlowContent): |
| * layout/FormattingContext.h: |
| * layout/LayoutContext.cpp: |
| (WebCore::Layout::LayoutContext::layoutFormattingContextSubtree): |
| * layout/blockformatting/BlockFormattingContext.cpp: |
| (WebCore::Layout::BlockFormattingContext::layoutInFlowContent): |
| * layout/blockformatting/BlockFormattingContext.h: |
| * layout/inlineformatting/InlineFormattingContext.cpp: |
| (WebCore::Layout::InlineFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::InlineFormattingContext::lineLayout): |
| * layout/inlineformatting/InlineFormattingContext.h: |
| * layout/integration/LayoutIntegrationLineLayout.cpp: |
| (WebCore::LayoutIntegration::LineLayout::layout): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::TableFormattingContext::layoutCell): |
| * layout/tableformatting/TableFormattingContext.h: |
| |
| 2020-04-28 Philippe Normand <pnormand@igalia.com> |
| |
| media/track/track-load-error-readyState.html passes only when accompanied by some other tests |
| https://bugs.webkit.org/show_bug.cgi?id=210976 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::resetToConsistentState): Reset caption |
| display mode, which might have been overriden by a previous test. |
| |
| 2020-04-28 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Non-unified build fixes late April 2020 edition |
| https://bugs.webkit.org/show_bug.cgi?id=211099 |
| |
| Unreviewed build fix. |
| |
| No new tests needed. |
| |
| * Modules/cache/DOMCacheStorage.cpp: Sprinkle DOMCacheEngine:: namespace prefixes as needed. |
| (WebCore::DOMCacheStorage::findCacheOrCreate): |
| (WebCore::DOMCacheStorage::retrieveCaches): |
| (WebCore::DOMCacheStorage::doOpen): |
| (WebCore::DOMCacheStorage::doRemove): |
| * bindings/js/JSExecStateInstrumentation.h: Ditto for JSC:: namespace prefixes. |
| (WebCore::JSExecState::instrumentFunction): |
| * dom/ScriptedAnimationController.h: Add missing ReducedResolutionSeconds.h header. |
| * editing/TextCheckingHelper.h: Add missing forward declaration for Position. |
| * html/URLSearchParams.h: Add missing ExceptionOr.h header. |
| |
| 2020-04-28 Charlie Turner <cturner@igalia.com> |
| |
| [EME][CDMProxy] Default initialize m_numDecryptorsWaitingForKey member |
| https://bugs.webkit.org/show_bug.cgi?id=210970 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| This was causing non-deterministic reads of the |
| m_numDecryptorsWaitingForKey member. Sometimes a waiting for key |
| event would fail to fire and cause test failures. I thought |
| std::atomic<int> would default initialize to zero, but after |
| spec-diving I realise now I was wrong about that. |
| |
| Test: encrypted-media/clearkey-mp4-waiting-for-a-key.https.html |
| |
| * platform/encryptedmedia/CDMProxy.h: |
| |
| 2020-04-28 Youenn Fablet <youenn@apple.com> |
| |
| RTCPeerConnection should not remove its created remote MediaStream objects until getting close |
| https://bugs.webkit.org/show_bug.cgi?id=211070 |
| |
| Reviewed by Alex Christensen. |
| |
| Remove no longer needed code. |
| This aligns with the spec and Firefox implementation. |
| Test: webrtc/direction-change.html |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| (WebCore::LibWebRTCMediaEndpoint::transceiverBackendFromSender): |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h: |
| |
| 2020-04-28 Youenn Fablet <youenn@apple.com> |
| |
| Ensure remote track event gets unmuted after the track event is fired |
| https://bugs.webkit.org/show_bug.cgi?id=211071 |
| |
| Reviewed by Alex Christensen. |
| |
| This code was made obsolete by the setMuted(false) call done just after firing the track event. |
| Given the setMuted(false) in addPendingTrackEvent was done asynchronously and was triggering firing the muted event asynchronously, |
| this change should not be observable from JS. |
| |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| (WebCore::LibWebRTCMediaEndpoint::addPendingTrackEvent): |
| |
| 2020-04-28 Rob Buis <rbuis@igalia.com> |
| |
| Make HistoryController an inner class of FrameLoader |
| https://bugs.webkit.org/show_bug.cgi?id=211090 |
| |
| Reviewed by Darin Adler. |
| |
| Make HistoryController an inner class of FrameLoader, this allows |
| us to move some methods only used by HistoryController out of the |
| FrameLoader public API. |
| |
| * loader/FrameLoader.h: |
| * loader/HistoryController.cpp: |
| * loader/HistoryController.h: |
| |
| 2020-04-27 Simon Fraser <simon.fraser@apple.com> |
| |
| Do correct clipping of composited replaced elements with border-radius |
| https://bugs.webkit.org/show_bug.cgi?id=211114 |
| |
| Reviewed by Zalan Bujtas. |
| |
| For replaced elements with composited content (video, WebGL), RenderLayerBacking |
| incorrectly used the rounded inner border rect to clip the contents. This doesn't match |
| painted replaced elements, which clip to the inside of the padding box. |
| |
| Fix by implementing RenderReplaced::roundedContentBoxRect() and calling it from compositing |
| code. Also add a helper to get the rounded border box rect, and call it in various places. |
| |
| Test: compositing/clipping/border-radius-on-webgl.html |
| |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::roundedBorderBoxRect const): |
| * rendering/RenderBox.h: |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateBackdropFiltersGeometry): |
| (WebCore::RenderLayerBacking::updateConfiguration): |
| (WebCore::RenderLayerBacking::updateGeometry): |
| (WebCore::RenderLayerBacking::updateContentsRects): |
| (WebCore::RenderLayerBacking::resetContentsRect): |
| (WebCore::RenderLayerBacking::updateChildClippingStrategy): |
| (WebCore::RenderLayerBacking::updateDirectlyCompositedBackgroundImage): |
| (WebCore::RenderLayerBacking::updateImageContents): |
| (WebCore::backgroundRectForBox): |
| * rendering/RenderLayerBacking.h: |
| * rendering/RenderReplaced.cpp: |
| (WebCore::RenderReplaced::roundedContentBoxRect const): |
| * rendering/RenderReplaced.h: |
| |
| 2020-04-27 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Timestamps should be the same for all rendering update steps |
| https://bugs.webkit.org/show_bug.cgi?id=207153 |
| |
| Reviewed by Simon Fraser. |
| |
| The HTML 5 event loop sepcs states that timestamps should be the same for |
| all rendering update steps. |
| |
| Specs link (step 9): |
| https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model |
| |
| This patch also fixes some issues in IntersectionObserver. |
| |
| Test: intersection-observer/intersection-observer-callback-timestamp.html |
| |
| * dom/Document.cpp: |
| (WebCore::Document::updateIntersectionObservations): |
| (WebCore::Document::notifyIntersectionObserversTimerFired): Deleted. |
| * dom/Document.h: |
| -- Handle the case when two floats are areEssentiallyEqual(). |
| -- Execute the IntersectionObserver immediately and do not wait until the |
| next CFRunLoop event since this does not implement the specs. |
| |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::freezeNowTimestamp): |
| (WebCore::DOMWindow::unfreezeNowTimestamp): |
| (WebCore::DOMWindow::frozenNowTimestamp const): |
| * page/DOMWindow.h: |
| Provide a frozen now() timestamp in seconds to be used internally only. |
| |
| * page/IntersectionObserver.cpp: |
| (WebCore::IntersectionObserver::nowTimestamp const): |
| Use the frozenNowTimestamp(). |
| |
| * page/Page.cpp: |
| (WebCore::Page::updateRendering): |
| Freeze the timestamps while serving the rendering update steps. |
| |
| 2020-04-27 Dean Jackson <dino@apple.com> |
| |
| getShaderPrecisionFormat returns the wrong values |
| https://bugs.webkit.org/show_bug.cgi?id=211013 |
| <rdar://problem/62378056> |
| |
| Reviewed by Darin Adler. |
| |
| Gregg pointed out that our code hardcodes values for |
| getShaderPrecisionFormat. The fix is simply to call into |
| the underlying GL function. |
| |
| Covered by the existing test: webgl/1.0.3/conformance/misc/shader-precision-format.html |
| |
| However, that just tests minimum values. Devices have different |
| actual results. |
| |
| * platform/graphics/angle/GraphicsContextGLANGLE.cpp: |
| (WebCore::GraphicsContextGLOpenGL::getShaderPrecisionFormat): |
| |
| 2020-04-27 Simon Fraser <simon.fraser@apple.com> |
| |
| Rename scrollableAreaForScrollLayerID to scrollableAreaForScrollingNodeID |
| https://bugs.webkit.org/show_bug.cgi?id=211091 |
| |
| Reviewed by Myles C. Maxfield. |
| |
| The argument to scrollableAreaForScrollLayerID() is a ScrollingNodeID, not a layerID. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::scrollableAreaForScrollingNodeID const): |
| (WebCore::FrameView::scrollableAreaForScrollLayerID const): Deleted. |
| * page/FrameView.h: |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll): |
| (WebCore::AsyncScrollingCoordinator::setActiveScrollSnapIndices): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::scrollableAreaForScrollingNodeID const): |
| (WebCore::RenderLayerCompositor::scrollableAreaForScrollLayerID const): Deleted. |
| * rendering/RenderLayerCompositor.h: |
| |
| 2020-04-27 Ryan Haddad <ryanhaddad@apple.com> |
| |
| [Cocoa] stop using out arguments for document attributes when converting to attributed strings |
| https://bugs.webkit.org/show_bug.cgi?id=211048 |
| |
| Unreviewed partial revert of r260739 to remove unexpected logging that broke Catalina-Release-WK2-Perf tests. |
| |
| * platform/network/cocoa/NetworkStorageSessionCocoa.mm: |
| (WebCore::policyProperties): |
| * platform/network/cocoa/ResourceRequestCocoa.mm: |
| (WebCore::siteForCookies): |
| |
| 2020-04-27 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Text manipulation should not aggregate text from different navigation anchor elements |
| https://bugs.webkit.org/show_bug.cgi?id=211081 |
| <rdar://problem/59553658> |
| |
| Reviewed by Megan Gardner. |
| |
| Tweak the item boundary heuristic in `TextManipulationController::observeParagraphs` to separate text in |
| links and list items under navigation elements (either nav elements, or elements with the "navigation" |
| accessibility role) into separate paragraphs. |
| |
| Also, extend the item boundary rule for button elements to apply to elements with the "button" |
| accessibility role as well. |
| |
| Test: TextManipulation.StartTextManipulationTreatsInlineBlockLinksAndButtonsAsParagraphs |
| TextManipulation.StartTextManipulationTreatsLinksInNavigationElementsAsParagraphs |
| |
| * editing/TextManipulationController.cpp: |
| (WebCore::TextManipulationController::observeParagraphs): |
| |
| 2020-04-27 Antoine Quint <graouts@apple.com> |
| |
| Clean up some useless includes of CSSAnimationController.h |
| https://bugs.webkit.org/show_bug.cgi?id=211066 |
| |
| Reviewed by Antti Koivisto. |
| |
| These files don't actually use any of the CSSAnimationController APIs. |
| |
| * page/ios/FrameIOS.mm: |
| * rendering/RenderObject.cpp: |
| |
| 2020-04-27 Antoine Quint <graouts@apple.com> |
| |
| Rename CSSAnimationController accessors from animation() to legacyAnimation() |
| https://bugs.webkit.org/show_bug.cgi?id=211082 |
| |
| Reviewed by Simon Fraser. |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::computeRenderStyleForProperty): |
| * dom/Document.cpp: |
| (WebCore::Document::resolveStyle): |
| (WebCore::Document::didBecomeCurrentDocumentInFrame): |
| (WebCore::Document::prepareForDestruction): |
| (WebCore::Document::implicitClose): |
| (WebCore::Document::resume): |
| * dom/Element.cpp: |
| (WebCore::Element::removedFromAncestor): |
| * dom/PseudoElement.cpp: |
| (WebCore::PseudoElement::clearHostElement): |
| * history/CachedFrame.cpp: |
| (WebCore::CachedFrame::destroy): |
| * page/Frame.cpp: |
| (WebCore::Frame::clearTimers): |
| (WebCore::Frame::resumeActiveDOMObjectsAndAnimations): |
| * page/Frame.h: |
| * page/FrameView.cpp: |
| (WebCore::FrameView::didDestroyRenderTree): |
| (WebCore::FrameView::updateLayoutAndStyleIfNeededRecursive): |
| * page/FrameViewLayoutContext.cpp: |
| (WebCore::FrameViewLayoutContext::layout): |
| * page/Page.cpp: |
| (WebCore::Page::handleLowModePowerChange): |
| (WebCore::Page::setIsVisibleInternal): |
| (WebCore::Page::hiddenPageCSSAnimationSuspensionStateChanged): |
| * page/animation/CSSAnimationController.cpp: |
| (WebCore::CSSAnimationControllerPrivate::updateThrottlingState): |
| (WebCore::CSSAnimationControllerPrivate::suspendAnimations): |
| (WebCore::CSSAnimationControllerPrivate::resumeAnimations): |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::currentTransform const): |
| (WebCore::RenderLayer::calculateClipRects const): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateGeometry): |
| (WebCore::RenderLayerBacking::notifyAnimationStarted): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::flushPendingLayerChanges): |
| (WebCore::RenderLayerCompositor::updateCompositingLayers): |
| (WebCore::RenderLayerCompositor::requiresCompositingForAnimation const): |
| (WebCore::RenderLayerCompositor::isRunningTransformAnimation const): |
| * rendering/RenderObject.h: |
| (WebCore::RenderObject::legacyAnimation const): |
| (WebCore::RenderObject::animation const): Deleted. |
| * rendering/updating/RenderTreeUpdater.cpp: |
| (WebCore::RenderTreeUpdater::tearDownRenderers): |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::TreeResolver::createAnimatedElementUpdate): |
| * testing/Internals.cpp: |
| (WebCore::Internals::numberOfActiveAnimations const): |
| (WebCore::Internals::animationsAreSuspended const): |
| (WebCore::Internals::animationsInterval const): |
| (WebCore::Internals::suspendAnimations const): |
| (WebCore::Internals::resumeAnimations const): |
| (WebCore::Internals::pauseAnimationAtTimeOnElement): |
| (WebCore::Internals::pauseAnimationAtTimeOnPseudoElement): |
| (WebCore::Internals::pauseTransitionAtTimeOnElement): |
| (WebCore::Internals::pauseTransitionAtTimeOnPseudoElement): |
| |
| 2020-04-27 Per Arne Vollan <pvollan@apple.com> |
| |
| [Cocoa] After r258891, r255119 can be reverted |
| https://bugs.webkit.org/show_bug.cgi?id=211083 |
| <rdar://problem/60714318> |
| |
| Unreviewed revert of r255119. |
| |
| Copying a MIME type map from the UI process to the WebContent process on startup is not needed anymore, |
| since r258891 will map the Launch Services database in the WebContent process. |
| |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::commonMimeTypesMap): |
| (WebCore::typesForCommonExtension): |
| (WebCore::overriddenMimeTypesMap): Deleted. |
| * platform/MIMETypeRegistry.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::mediaMIMETypeForExtension): Deleted. |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-04-27 Darin Adler <darin@apple.com> |
| |
| Improve performance of commonInclusiveAncestor for deeply nested nodes |
| https://bugs.webkit.org/show_bug.cgi?id=211078 |
| |
| Reviewed by Antti Koivisto. |
| |
| * dom/Node.cpp: |
| (WebCore::depth): Added. |
| (WebCore::commonInclusiveAncestor): Replaced implementation that walks the |
| parent chain of the second node repeatedly with one that walks the parent |
| chain of each node twice. |
| |
| 2020-04-27 Daniel Bates <dabates@apple.com> |
| |
| Caret may be placed in the wrong spot for text input context that is a form control |
| https://bugs.webkit.org/show_bug.cgi?id=210939 |
| <rdar://problem/61943089> |
| |
| Reviewed by Darin Adler. |
| |
| Add a helper function that returns the closest editable position inside an element |
| for a given point (if any). |
| |
| * editing/Editing.cpp: |
| (WebCore::closestEditablePositionInElementForAbsolutePoint): Added. |
| * editing/Editing.h: |
| |
| 2020-04-27 Alicia Boya García <aboya@igalia.com> |
| |
| [GStreamer] Rework WebKitWebSrc threading |
| https://bugs.webkit.org/show_bug.cgi?id=210284 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| WebKitWebSrc as it is in master has a number of race conditions |
| leading to occasional starvation (due to cancelling the wrong request) |
| or data corruption (due to pushing data from a cancelled request). |
| |
| The threading situation wasn't easy to follow, as it wasn't clear |
| access to what members should be protected by what mutex, in what |
| circumstances. Also, some parts of the design were also introducing |
| addicional complexity, such as the first request being sent from the |
| main thread whereas the rest were being sent from the streaming thread |
| or basesrc async start. |
| |
| In response, this patch reworks all the locking in WebKitWebSrc to use |
| WTF::DataMutex. This ensures all accesses to its (now explicit) |
| protected members are locked. The two mutexes and condition variables |
| have been simplified into one, as there was no obvious need or benefit |
| for two of each in this case. |
| |
| Requests have been numbered, which allows to safely and atomically |
| ignore results from cancelled requests, avoiding data corruption |
| races, and makes following them in debug logs much easier. |
| |
| The conditions for making and cancelling requests have been simplified |
| to a simpler and safer model: There is at most only one active request |
| at anytime, flushes cancel the request, and the first create() call |
| always makes the new request (both at startup and after a flush). |
| Debug asserts and notes about the flow of operations during basesrc |
| seeks have been provided. |
| |
| As this effort needed a review of the entire WebKitWebSrc, cleanups, |
| corrections and documentation comments have been provided where |
| appropriate. |
| |
| This patch introduces no visible behavior changes, just stability |
| improvements. |
| |
| * platform/graphics/gstreamer/GRefPtrGStreamer.h: |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: |
| (WebKitWebSrcPrivate::~WebKitWebSrcPrivate): |
| (webkit_web_src_class_init): |
| (webkitWebSrcReset): |
| (webKitWebSrcConstructed): |
| (webKitWebSrcSetProperty): |
| (webKitWebSrcGetProperty): |
| (webKitWebSrcSetContext): |
| (webKitWebSrcSendEvent): |
| (restartLoaderIfNeeded): |
| (stopLoaderIfNeeded): |
| (webKitWebSrcCreate): |
| (webKitWebSrcStart): |
| (webKitWebSrcMakeRequest): |
| (webKitWebSrcStop): |
| (webKitWebSrcGetSize): |
| (webKitWebSrcIsSeekable): |
| (webKitWebSrcDoSeek): |
| (webKitWebSrcQuery): |
| (webKitWebSrcUnLock): |
| (webKitWebSrcUnLockStop): |
| (webKitWebSrcSetUri): |
| (webKitWebSrcSetMediaPlayer): |
| (webKitSrcPassedCORSAccessCheck): |
| (CachedResourceStreamingClient::CachedResourceStreamingClient): |
| (CachedResourceStreamingClient::checkUpdateBlocksize): |
| (CachedResourceStreamingClient::responseReceived): |
| (CachedResourceStreamingClient::dataReceived): |
| (CachedResourceStreamingClient::accessControlCheckFailed): |
| (CachedResourceStreamingClient::loadFailed): |
| (CachedResourceStreamingClient::loadFinished): |
| (webKitSrcWouldTaintOrigin): |
| * platform/graphics/gstreamer/WebKitWebSourceGStreamer.h: |
| |
| 2020-04-26 Darin Adler <darin@apple.com> |
| |
| Replace more uses of live ranges with SimpleRange |
| https://bugs.webkit.org/show_bug.cgi?id=211058 |
| |
| Reviewed by Antti Koivisto. |
| |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::textUnderElement const): Use SimpleRange. |
| |
| * dom/BoundaryPoint.h: Moved makeBoundaryPointAfterNodeContents here so it |
| can be used more places. |
| |
| * dom/Node.cpp: |
| (WebCore::commonInclusiveAncestor): Moved the commonAncestorContainer function |
| here from Range, decided to use the "inclusive ancestor" naming from the |
| DOM specification, and used RefPtr for the result since it's part of our modern |
| safer design to always use smart pointers for return values. |
| * dom/Node.h: Added commonInclusiveAncestor. |
| |
| * dom/Position.cpp: |
| (WebCore::commonShadowIncludingAncestor): Call commonInclusiveAncestor. |
| |
| * dom/Range.cpp: |
| (WebCore::Range::commonAncestorContainer): Deleted. |
| (WebCore::Range::isPointInRange): Call commonInclusiveAncestor. |
| (WebCore::Range::comparePoint const): Ditto. |
| (WebCore::Range::compareBoundaryPoints): Ditto. |
| (WebCore::Range::collectSelectionRectsWithoutUnionInteriorLines const): Ditto. |
| * dom/Range.h: |
| (WebCore::Range::commonAncestorContainer const): Call commonInclusiveAncestor. |
| |
| * dom/SimpleRange.cpp: |
| (WebCore::makeBoundaryPointAfterNodeContents): Moved to BoundaryPoint.h. |
| |
| * editing/AlternativeTextController.cpp: |
| (WebCore::AlternativeTextController::respondToUnappliedSpellCorrection): Use |
| SimpleRange instead of live range. |
| (WebCore::AlternativeTextController::respondToUnappliedEditing): Ditto. |
| (WebCore::AlternativeTextController::markPrecedingWhitespaceForDeletedAutocorrectionAfterCommand): Ditto. |
| (WebCore::AlternativeTextController::processMarkersOnTextToBeReplacedByResult): Ditto. |
| |
| * editing/ChangeListTypeCommand.cpp: |
| (WebCore::listConversionTypeForSelection): use commonInclusiveAncestor. |
| |
| * editing/Editing.cpp: |
| (WebCore::isNodeVisiblyContainedWithin): Take a SimpleRange argument. |
| * editing/Editing.h: Updated for the above. |
| |
| * editing/Editor.cpp: |
| (WebCore::Editor::addRangeToKillRing): Take a SimpleRange argument. |
| (WebCore::Editor::shouldDetectTelephoneNumbers const): Made this const and |
| tweaked coding style a bit. |
| (WebCore::scanForTelephoneNumbers): Moved this, made it a non-member function, |
| renamed from scanRangeForTelephoneNumbers, use SimpleRange. |
| (WebCore::extendSelection): Added. Factored out some logic from the function below. |
| (WebCore::Editor::scanSelectionForTelephoneNumbers): Use SimpleRange. Removed |
| some unnecessary code that subtracts 1 and then adds 1 again. |
| * editing/Editor.h: Updated for the above. |
| |
| * editing/TextManipulationController.cpp: |
| (WebCore::TextManipulationController::replace): Use commonInclusiveAncestor. |
| |
| * editing/VisibleSelection.cpp: |
| (WebCore::makeSearchRange): Return a SimpleRange. |
| (WebCore::VisibleSelection::appendTrailingWhitespace): Use SimpleRange. |
| |
| * editing/WebContentReader.h: Use SimpleRange instead of a live range. |
| |
| * editing/cocoa/DataDetection.h: Use a struct, DetectedItem, for the return value |
| from the detection functions. Also changed DataDetectorTypes to an enum class so |
| it can be forward-declared instead of having to include this header. |
| * editing/cocoa/DataDetection.mm: |
| (WebCore::detectItem): Renamed from detectItemAtPositionWithRange. Return the |
| DetectedItem struct, with a SimpleRange rather than an out argument live range. |
| (WebCore::DataDetection::detectItemAroundHitTestResult): Ditto. |
| (WebCore::contains): Added a helper function for testing bits in the |
| DataDetectorType enum. Later we can make this better using OptionSet. |
| (WebCore::constructURLStringForResult): Refactored a bit, updated for the new |
| DataDetectorTypes enum class, and to use CFEqual instead of CFStringCompare. |
| (WebCore::DataDetection::detectContentInRange): Ditto. |
| |
| * editing/cocoa/EditorCocoa.mm: |
| (WebCore::Editor::webContentFromPasteboard): Use SimpleRange. |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::WebContentReader::readPlainText): Updated since context is SimpleRange. |
| * editing/gtk/EditorGtk.cpp: |
| (WebCore::createFragmentFromPasteboardData): Use SimpleRange. |
| (WebCore::Editor::webContentFromPasteboard): Use SimpleRange. |
| * editing/win/EditorWin.cpp: |
| (WebCore::Editor::webContentFromPasteboard): Use SimpleRange. |
| * editing/mac/EditorMac.mm: |
| (WebCore::Editor::replaceNodeFromPasteboard): Use SimpleRange. |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::checkLoadCompleteForThisFrame): Use SimpleRange. |
| * page/EventHandler.cpp: |
| (WebCore::targetNodeForClickEvent): Use commonInclusiveAncestor. Also updated |
| to return a RefPtr. |
| (WebCore::EventHandler::handleMouseReleaseEvent): Updated for the above. |
| |
| * page/Settings.yaml: Changed the default for DataDetectorTypes to be the empty |
| string rather than a named constant. |
| * page/SettingsBase.h: Forward-declare DataDetectorTypes instead of including |
| the DataDetection.h header. |
| |
| * page/TextIndicator.cpp: |
| (WebCore::TextIndicator::createWithRange): Take a SimpleRange. |
| (WebCore::TextIndicator::createWithSelectionInFrame): Ditto. |
| (WebCore::hasNonInlineOrReplacedElements): Ditto. |
| (WebCore::selectionRects): Ditto. Also renamed from getSelectionRectsForRange. |
| (WebCore::styleContainsComplexBackground): Tweaked implementation. |
| (WebCore::estimatedTextColorsForRange): Take a SimpleRange. |
| (WebCore::absoluteBoundingRectForRange): Ditto. |
| (WebCore::estimatedBackgroundColorForRange): Ditto. |
| (WebCore::containsOnlyWhiteSpaceText): Ditto. |
| (WebCore::initializeIndicator): Ditto. |
| * page/TextIndicator.h: Updated for the above. |
| |
| * page/mac/ServicesOverlayController.h: Use SimpleRange instead of a live |
| range for highlights. |
| * page/mac/ServicesOverlayController.mm: |
| (WebCore::ServicesOverlayController::Highlight::createForSelection): Take SimpleRange. |
| (WebCore::ServicesOverlayController::Highlight::createForTelephoneNumber): Ditto. |
| (WebCore::ServicesOverlayController::Highlight::Highlight): Ditto. |
| (WebCore::ServicesOverlayController::buildPhoneNumberHighlights): Ditto. |
| (WebCore::ServicesOverlayController::buildSelectionHighlight): Ditto. |
| (WebCore::ServicesOverlayController::telephoneNumberRangesForFocusedFrame): Ditto. |
| (WebCore::ServicesOverlayController::highlightsAreEquivalent): Ditto. |
| (WebCore::ServicesOverlayController::findTelephoneNumberHighlightContainingSelectionHighlight): Ditto. |
| (WebCore::ServicesOverlayController::handleClick): Ditto. |
| |
| * platform/ios/DragImageIOS.mm: |
| (WebCore::createDragImageForLink): Use SimpleRange. |
| (WebCore::createDragImageForSelection): Tweaked a bit. |
| |
| 2020-04-27 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Make it possible to build with GTK4 without errors |
| https://bugs.webkit.org/show_bug.cgi?id=210967 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| * platform/PlatformPasteboard.h: |
| * platform/graphics/DisplayRefreshMonitor.cpp: |
| (WebCore::DisplayRefreshMonitor::createDefaultDisplayRefreshMonitor): |
| * platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp: |
| * platform/graphics/gtk/DisplayRefreshMonitorGtk.h: |
| * platform/graphics/gtk/GdkCairoUtilities.cpp: |
| (WebCore::getDefaultCairoFontOptions): |
| * platform/gtk/CursorGtk.cpp: |
| (WebCore::createCustomCursor): |
| * platform/gtk/DragImageGtk.cpp: |
| (WebCore::dissolveDragImageToFraction): |
| * platform/gtk/GRefPtrGtk.cpp: |
| * platform/gtk/GRefPtrGtk.h: |
| * platform/gtk/GUniquePtrGtk.h: |
| * platform/gtk/GtkVersioning.h: |
| (gdk_event_copy): |
| (gtk_widget_size_allocate): |
| (gtk_widget_queue_resize_no_redraw): |
| (gdk_event_get_state): |
| (gdk_event_get_coords): |
| (gdk_event_get_root_coords): |
| (gdk_event_is_scroll_stop_event): |
| (gdk_event_get_scroll_direction): |
| (gdk_event_get_scroll_deltas): |
| (gdk_event_get_button): |
| * platform/gtk/PasteboardHelper.cpp: |
| * platform/gtk/PasteboardHelper.h: |
| * platform/gtk/PlatformKeyboardEventGtk.cpp: |
| (WebCore::PlatformKeyboardEvent::modifiersContainCapsLock): |
| * platform/gtk/PlatformPasteboardGtk.cpp: |
| (WebCore::PlatformPasteboard::PlatformPasteboard): |
| (WebCore::PlatformPasteboard::writeToClipboard): |
| (WebCore::PlatformPasteboard::readFromClipboard): |
| * platform/gtk/PlatformScreenGtk.cpp: |
| (WebCore::getCurrentScreenMonitor): |
| |
| 2020-04-27 Rob Buis <rbuis@igalia.com> |
| |
| Make loadURLIntoChildFrame private and non-exported |
| https://bugs.webkit.org/show_bug.cgi?id=211051 |
| |
| Reviewed by Darin Adler. |
| |
| Make loadURLIntoChildFrame private and non-exported to reduce the amount of public API functions |
| that start loads. In order to do this loadURLIntoChildFrame is being called from SubframeLoader |
| and SubframeLoader is made an inner class of FrameLoader. Because this simplifies createFrame (and |
| makes createFrame behave strictly like its name) url and referrer do not have to be passed. |
| |
| * html/HTMLObjectElement.cpp: |
| (WebCore::HTMLObjectElement::parametersForPlugin): |
| * loader/EmptyClients.cpp: |
| (WebCore::EmptyFrameLoaderClient::createFrame): |
| * loader/EmptyFrameLoaderClient.h: |
| * loader/FrameLoader.h: |
| * loader/FrameLoaderClient.h: |
| * loader/SubframeLoader.cpp: |
| (WebCore::FrameLoader::SubframeLoader::SubframeLoader): |
| (WebCore::FrameLoader::SubframeLoader::clear): |
| (WebCore::FrameLoader::SubframeLoader::requestFrame): |
| (WebCore::FrameLoader::SubframeLoader::resourceWillUsePlugin): |
| (WebCore::FrameLoader::SubframeLoader::pluginIsLoadable): |
| (WebCore::FrameLoader::SubframeLoader::requestPlugin): |
| (WebCore::FrameLoader::SubframeLoader::requestObject): |
| (WebCore::FrameLoader::SubframeLoader::createJavaAppletWidget): |
| (WebCore::FrameLoader::SubframeLoader::loadOrRedirectSubframe): |
| (WebCore::FrameLoader::SubframeLoader::loadSubframe): |
| (WebCore::FrameLoader::SubframeLoader::shouldUsePlugin): |
| (WebCore::FrameLoader::SubframeLoader::loadPlugin): |
| (WebCore::FrameLoader::SubframeLoader::completeURL const): |
| (WebCore::FrameLoader::SubframeLoader::shouldConvertInvalidURLsToBlank const): |
| (WebCore::SubframeLoader::SubframeLoader): Deleted. |
| (WebCore::SubframeLoader::clear): Deleted. |
| (WebCore::SubframeLoader::requestFrame): Deleted. |
| (WebCore::SubframeLoader::resourceWillUsePlugin): Deleted. |
| (WebCore::SubframeLoader::pluginIsLoadable): Deleted. |
| (WebCore::SubframeLoader::requestPlugin): Deleted. |
| (WebCore::SubframeLoader::requestObject): Deleted. |
| (WebCore::SubframeLoader::createJavaAppletWidget): Deleted. |
| (WebCore::SubframeLoader::loadOrRedirectSubframe): Deleted. |
| (WebCore::SubframeLoader::loadSubframe): Deleted. |
| (WebCore::SubframeLoader::shouldUsePlugin): Deleted. |
| (WebCore::SubframeLoader::loadPlugin): Deleted. |
| (WebCore::SubframeLoader::completeURL const): Deleted. |
| (WebCore::SubframeLoader::shouldConvertInvalidURLsToBlank const): Deleted. |
| * loader/SubframeLoader.h: |
| (WebCore::SubframeLoader::containsPlugins const): Deleted. |
| |
| 2020-04-27 Alberto Garcia <berto@igalia.com> |
| |
| [GTK] [2.28.0] The Yelp build crashes if DISPLAY is not set |
| https://bugs.webkit.org/show_bug.cgi?id=209431 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Don't create a PlatformDisplayLibWPE as a fallback when using |
| Wayland or X11. |
| |
| * platform/graphics/PlatformDisplay.cpp: |
| (WebCore::PlatformDisplay::createPlatformDisplay): |
| |
| 2020-04-27 Claudio Saavedra <csaavedra@igalia.com> |
| |
| Unreviewed compile-warning fix. |
| |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::create): |
| |
| 2020-04-27 Diego Pino Garcia <dpino@igalia.com> |
| |
| Unreviewed, GTK LTS build fix after r260744 |
| https://bugs.webkit.org/show_bug.cgi?id=211069 |
| |
| * bindings/js/JSDOMBuiltinConstructor.h: |
| (WebCore::JSDOMBuiltinConstructor<JSClass>::getConstructData): |
| |
| 2020-04-27 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK4] GdkRGBA has float members instead of double |
| |
| Unreviewed warning fix. |
| |
| * platform/graphics/gtk/ColorGtk.cpp: |
| (WebCore::Color::operator GdkRGBA const): |
| |
| 2020-04-27 Ross Kirsling <ross.kirsling@sony.com> |
| |
| [JSC] CallData/ConstructData should include CallType/ConstructType |
| https://bugs.webkit.org/show_bug.cgi?id=211059 |
| |
| Reviewed by Darin Adler. |
| |
| * Modules/plugins/QuickTimePluginReplacement.mm: |
| (WebCore::QuickTimePluginReplacement::installReplacement): |
| * bindings/js/JSCallbackData.cpp: |
| (WebCore::JSCallbackData::invokeCallback): |
| * bindings/js/JSCustomElementInterface.cpp: |
| (WebCore::constructCustomElementSynchronously): |
| (WebCore::JSCustomElementInterface::upgradeElement): |
| (WebCore::JSCustomElementInterface::invokeCallback): |
| * bindings/js/JSCustomXPathNSResolver.cpp: |
| (WebCore::JSCustomXPathNSResolver::lookupNamespaceURI): |
| * bindings/js/JSDOMBuiltinConstructor.h: |
| (WebCore::JSDOMBuiltinConstructor<JSClass>::getConstructData): |
| * bindings/js/JSDOMBuiltinConstructorBase.cpp: |
| (WebCore::JSDOMBuiltinConstructorBase::callFunctionWithCurrentArguments): |
| * bindings/js/JSDOMConstructor.h: |
| (WebCore::JSDOMConstructor<JSClass>::getConstructData): |
| * bindings/js/JSDOMConstructorBase.cpp: |
| (WebCore::JSDOMConstructorBase::getCallData): |
| * bindings/js/JSDOMConstructorBase.h: |
| * bindings/js/JSDOMConstructorNotConstructable.h: |
| * bindings/js/JSDOMIterator.h: |
| (WebCore::iteratorForEach): |
| * bindings/js/JSDOMMapLike.cpp: |
| (WebCore::clearBackingMap): |
| (WebCore::setToBackingMap): |
| (WebCore::forwardFunctionCallToBackingMap): |
| (WebCore::forwardForEachCallToBackingMap): |
| * bindings/js/JSDOMNamedConstructor.h: |
| (WebCore::JSDOMNamedConstructor<JSClass>::getConstructData): |
| * bindings/js/JSDOMPromise.cpp: |
| (WebCore::DOMPromise::whenPromiseIsSettled): |
| * bindings/js/JSDOMPromiseDeferred.cpp: |
| (WebCore::createRejectedPromiseWithTypeError): |
| * bindings/js/JSDOMSetLike.cpp: |
| (WebCore::clearBackingSet): |
| (WebCore::addToBackingSet): |
| (WebCore::forwardFunctionCallToBackingSet): |
| (WebCore::forwardForEachCallToBackingSet): |
| * bindings/js/JSErrorHandler.cpp: |
| (WebCore::JSErrorHandler::handleEvent): |
| * bindings/js/JSEventListener.cpp: |
| (WebCore::JSEventListener::handleEvent): |
| * bindings/js/JSExecState.cpp: |
| (WebCore::functionCallHandlerFromAnyThread): |
| * bindings/js/JSExecState.h: |
| (WebCore::JSExecState::call): |
| (WebCore::JSExecState::profiledCall): |
| * bindings/js/JSExecStateInstrumentation.h: |
| (WebCore::JSExecState::instrumentFunction): |
| (WebCore::JSExecState::instrumentFunctionInternal): Deleted. |
| (WebCore::JSExecState::instrumentFunctionCall): Deleted. |
| (WebCore::JSExecState::instrumentFunctionConstruct): Deleted. |
| * bindings/js/JSNavigatorCustom.cpp: |
| (WebCore::JSNavigator::getUserMedia): |
| * bindings/js/JSPluginElementFunctions.cpp: |
| (WebCore::callPlugin): |
| (WebCore::pluginElementCustomGetCallData): |
| * bindings/js/JSPluginElementFunctions.h: |
| * bindings/js/ReadableStream.cpp: |
| (WebCore::ReadableStream::create): |
| (WebCore::ReadableStreamInternal::callFunction): |
| (WebCore::ReadableStream::lock): |
| * bindings/js/ReadableStreamDefaultController.cpp: |
| (WebCore::readableStreamCallFunction): |
| * bindings/js/ScheduledAction.cpp: |
| (WebCore::ScheduledAction::executeFunctionInContext): |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::callInWorld): |
| (WebCore::ScriptController::executeAsynchronousUserAgentScriptInWorld): |
| * bindings/scripts/CodeGeneratorJS.pm: |
| (GenerateHeader): |
| (GeneratePluginCall): |
| (GenerateLegacyCallerDefinitions): |
| * bindings/scripts/test/JS/JSTestObj.cpp: |
| (WebCore::JSTestObj::getCallData): |
| * bindings/scripts/test/JS/JSTestObj.h: |
| * bindings/scripts/test/JS/JSTestPluginInterface.cpp: |
| (WebCore::JSTestPluginInterface::getCallData): |
| * bindings/scripts/test/JS/JSTestPluginInterface.h: |
| * bridge/NP_jsobject.cpp: |
| * bridge/objc/WebScriptObject.mm: |
| (-[WebScriptObject callWebScriptMethod:withArguments:]): |
| * bridge/objc/objc_runtime.h: |
| * bridge/objc/objc_runtime.mm: |
| (JSC::Bindings::ObjcFallbackObjectImp::getCallData): |
| * bridge/runtime_object.cpp: |
| (JSC::Bindings::RuntimeObject::getCallData): |
| (JSC::Bindings::RuntimeObject::getConstructData): |
| * bridge/runtime_object.h: |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::updateCaptionContainer): |
| (WebCore::HTMLMediaElement::didAddUserAgentShadowRoot): |
| (WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange): |
| (WebCore::HTMLMediaElement::getCurrentMediaControlsStatus): |
| * html/HTMLPlugInImageElement.cpp: |
| (WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot): |
| * testing/Internals.cpp: |
| (WebCore::Internals::cloneArrayBuffer): |
| |
| 2020-04-27 Diego Pino Garcia <dpino@igalia.com> |
| |
| Unreviewed, reverting r260672. |
| |
| [GTK] WebInspector tests are timing out after r260672 |
| |
| Reverted changeset: |
| |
| "[Win] Bundle Inspector Resources in Release builds" |
| https://bugs.webkit.org/show_bug.cgi?id=210942 |
| https://trac.webkit.org/changeset/260672 |
| |
| 2020-04-27 Kenneth Russell <kbr@chromium.org> |
| |
| Build failure in WebGL2RenderingContext after r260588 |
| https://bugs.webkit.org/show_bug.cgi?id=211057 |
| |
| Reviewed by Darin Adler. |
| |
| Fix non-ANGLE build failure in WebGL2RenderingContext after |
| r260588. |
| |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::texStorage2D): |
| |
| 2020-04-26 Darin Adler <darin@apple.com> |
| |
| [Cocoa] stop using out arguments for document attributes when converting to attributed strings |
| https://bugs.webkit.org/show_bug.cgi?id=211048 |
| |
| Reviewed by Sam Weinig. |
| |
| * DerivedSources-input.xcfilelist: Building modified this file automatically. Uploading |
| the new version. |
| |
| * WebCore.xcodeproj/project.pbxproj: Added AttributedString.h. |
| * editing/cocoa/AttributedString.h: Added. Moved this from WebKit, but removed a lot of |
| inessentials. |
| * editing/cocoa/DictionaryLookup.mm: Removed unneeded include. |
| * editing/cocoa/EditorCocoa.mm: |
| (WebCore::selectionAsAttributedString): Updated for change to the return value of the |
| attributedString function, and use init instead of initWithString:@"". |
| |
| * editing/cocoa/HTMLConverter.h: Changed to an Objective-C-only header, omitting things |
| like #pramga once. Return the AttributedString struct from the functions instead of |
| using an out argument for document attributes. |
| * editing/cocoa/HTMLConverter.mm: |
| (HTMLConverter::convert): Return an AttributedString and drop the out argument. |
| (WebCore::attributedString): Ditto. |
| (WebCore::editingAttributedString): Ditto. Also refactor a little bit. |
| |
| * editing/ios/EditorIOS.mm: Removed unneeded include. |
| * editing/mac/DictionaryLookupLegacy.mm: Removed unneeded include. |
| |
| * editing/mac/EditorMac.mm: |
| (WebCore::Editor::dataSelectionForPasteboard): Updated since attributedString |
| now returns a structure. |
| |
| * platform/network/cocoa/NetworkStorageSessionCocoa.mm: |
| (WebCore::policyProperties): Use init instead of initWithString:@"". |
| * platform/network/cocoa/ResourceRequestCocoa.mm: |
| (WebCore::siteForCookies): Use init instead of initWithString:@"". |
| |
| 2020-04-26 Yoshiaki Jitsukawa <yoshiaki.jitsukawa@sony.com> |
| |
| [PlayStation] Enable TestWTF and TestWebCore |
| https://bugs.webkit.org/show_bug.cgi?id=208849 |
| |
| Reviewed by Don Olmstead. |
| |
| * PlatformPlayStation.cmake: |
| Add WebCore_CopySharedLibs to install dependencies. |
| |
| 2020-04-26 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Rendering update steps should use Seconds for the timestamps |
| https://bugs.webkit.org/show_bug.cgi?id=210990 |
| |
| Reviewed by Daniel Bates. |
| |
| Make DOMWindow::nowTimestamp() return ReducedResolutionSeconds and change |
| the callers accordingly. ReducedResolutionSeconds is a new type but it's |
| just an alias of the type Seconds. It indicates that the returned value |
| is a web-safe seconds. |
| |
| * Headers.cmake: |
| * WebCore.xcodeproj/project.pbxproj: |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::suspendAnimations): |
| (WebCore::DocumentTimeline::liveCurrentTime const): |
| (WebCore::DocumentTimeline::cacheCurrentTime): |
| (WebCore::DocumentTimeline::documentWillUpdateAnimationsAndSendEvents): |
| * animation/DocumentTimeline.h: |
| * animation/DocumentTimelinesController.cpp: |
| (WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents): |
| * animation/DocumentTimelinesController.h: |
| * dom/Document.cpp: |
| (WebCore::Document::serviceRequestAnimationFrameCallbacks): |
| (WebCore::Document::updateIntersectionObservations): |
| * dom/Document.h: |
| * dom/ScriptedAnimationController.cpp: |
| (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): |
| (WebCore::ScriptedAnimationController::scheduleAnimation): |
| * dom/ScriptedAnimationController.h: |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::getVideoPlaybackQuality): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::nowTimestamp const): |
| * page/DOMWindow.h: |
| * page/IntersectionObserver.cpp: |
| (WebCore::IntersectionObserver::nowTimestamp const): |
| (WebCore::IntersectionObserver::createTimestamp const): Deleted. |
| * page/IntersectionObserver.h: |
| * page/Page.cpp: |
| (WebCore::Page::updateRendering): |
| * page/Performance.cpp: |
| (WebCore::Performance::now const): |
| (WebCore::Performance::nowInReducedResolutionSeconds const): |
| * page/Performance.h: |
| * page/ReducedResolutionSeconds.h: Added. |
| |
| 2020-04-26 Alexey Shvayka <shvaikalesh@gmail.com> |
| |
| InternalFunction::createSubclassStructure should use newTarget's globalObject |
| https://bugs.webkit.org/show_bug.cgi?id=202599 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| Accounts for InternalFunction::createSubclassStructure() signature change and |
| utilizes getFunctionRealm() helper to handle cross-realm JSBoundFunction and |
| ProxyObject instances as NewTarget value. |
| |
| Tests: web-platform-tests/WebIDL/ecmascript-binding/constructors.html |
| web-platform-tests/custom-elements/htmlconstructor/newtarget.html |
| |
| * bindings/js/JSDOMWrapperCache.h: |
| (WebCore::setSubclassStructureIfNeeded): |
| * bindings/js/JSHTMLElementCustom.cpp: |
| (WebCore::constructJSHTMLElement): |
| |
| 2020-04-26 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Use `static Lock` instead of `static NeverDestroyed<Lock>` |
| https://bugs.webkit.org/show_bug.cgi?id=211036 |
| |
| Reviewed by Darin Adler. |
| |
| * platform/GenericTaskQueue.cpp: |
| (WebCore::TaskDispatcher<Timer>::sharedLock): |
| |
| 2020-04-26 Peng Liu <peng.liu6@apple.com> |
| |
| Remove unused class PlaybackSessionInterface |
| https://bugs.webkit.org/show_bug.cgi?id=211031 |
| |
| Reviewed by Daniel Bates. |
| |
| No new tests, no functional changes. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/cocoa/PlaybackSessionInterface.h: Removed. |
| * platform/cocoa/PlaybackSessionModelMediaElement.h: |
| * platform/ios/PlaybackSessionInterfaceAVKit.h: |
| * platform/mac/PlaybackSessionInterfaceMac.h: |
| |
| 2020-04-26 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Compute and distribute extra vertical space for rows |
| https://bugs.webkit.org/show_bug.cgi?id=211046 |
| |
| Reviewed by Antti Koivisto. |
| |
| When the table computed height is bigger than the sum of the row heigts, we need to distribute the extra vertical |
| space among the non-fixed height rows. The distribution is based on the preferred height of those non-fixed rows. |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| |
| 2020-04-11 Darin Adler <darin@apple.com> |
| |
| Stop using live ranges in functions that return range of the selection |
| https://bugs.webkit.org/show_bug.cgi?id=210396 |
| |
| Reviewed by Sam Weinig. |
| |
| - Added makeRangeSelectingNode, to create a range that selects a node |
| and all its descendants. |
| - Improved intersectingNodes so it can now easily be used in a while loop |
| style as well as the range-for loop style. Also made it more robust |
| against tree changes while iterating; it will now always stop at the |
| end of the document. |
| - Changed functions that work with selection to get a SimpleRange, and |
| then either do all the work without a live range, or call createLiveRange |
| right where it's needed, making it clearer when we can delete that |
| call later as we cut down live ranges even more. |
| |
| * accessibility/AccessibilityObject.cpp: |
| (WebCore::AccessibilityObject::selectionRange const): Return a SimpleRange |
| instead of a live range. |
| (WebCore::AccessibilityObject::findTextRanges const): Use createLiveRange |
| on the result of selectionRange since this still mostly uses live ranges. |
| * accessibility/AccessibilityObject.h: Updated for the above. |
| |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::documentBasedSelectedTextRange const): |
| Updated to create a live range only in the one place we need to call a |
| Range class member function. |
| |
| * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: |
| (-[WebAccessibilityObjectWrapper textMarkerRangeForSelection]): |
| Use createLiveRange here. |
| |
| * dom/SimpleRange.cpp: |
| (WebCore::makeRangeSelectingNode): Added. For use when we need to make |
| a range that selects a node, not just the node's contents. |
| (WebCore::firstIntersectingNode): Renamed from IntersectingNodeRange::first |
| since this is now used in the iterator class, not the range class. Also |
| letting it be a non-member function so we can tweak it without touching |
| the haeder file. |
| (WebCore::nodePastLastIntersectingNode): Ditto. |
| (WebCore::IntersectingNodeIterator::IntersectingNodeIterator): Changed |
| this constructor to take a SimpleRange. To add the advanceSkippingChildren |
| feature, had to build the termination condition into the iterator rather |
| than basing it on the value of the sentinel. |
| (WebCore::IntersectingNodeIterator::advance): Added. Contains the logic |
| from the ++ operator, so it can be called in a more straightforward way |
| when this is being used with a while loop rather than a range-for loop. |
| (WebCore::IntersectingNodeIterator::advanceSkippingChildren): Added. |
| * dom/SimpleRange.h: Updated for the changes to IntersectingNodeIterator |
| and IntersectingNodeRange. |
| |
| * editing/AlternativeTextController.cpp: |
| (WebCore::AlternativeTextController::timerFired): Use createLiveRange. |
| |
| * editing/CompositeEditCommand.cpp: |
| (WebCore::CompositeEditCommand::targetRanges const): Use WTFMove in |
| a place where the old code was copying instead. |
| |
| * editing/DeleteSelectionCommand.cpp: |
| (WebCore::DeleteSelectionCommand::makeStylingElementsDirectChildrenOfEditableRootToPreventStyleLoss): |
| Use intersectingNodes to make the function's logic easier to understand. |
| |
| * editing/Editing.cpp: |
| (WebCore::visibleImageElementsInRangeWithNonLoadedImages): Changed |
| the argument type to SimpleRange. |
| * editing/Editing.h: Updated for the change above. |
| |
| * editing/EditingStyle.cpp: |
| (WebCore::EditingStyle::styleAtSelectionStart): Use createLiveRange. |
| |
| * editing/Editor.cpp: |
| (WebCore::Editor::selectedRange): Use createLiveRange. |
| (WebCore::Editor::applyStyleToSelection): Ditto. |
| (WebCore::Editor::applyParagraphStyleToSelection): Ditto. |
| (WebCore::Editor::insertTextWithoutSendingTextEvent): Ditto. |
| (WebCore::Editor::insertLineBreak): Ditto. |
| (WebCore::Editor::insertParagraphSeparator): Ditto. |
| (WebCore::Editor::ignoreSpelling): Remove use of live range. |
| (WebCore::Editor::learnSpelling): Ditto. |
| (WebCore::Editor::misspelledWordAtCaretOrRange const): Ditto. |
| (WebCore::Editor::isSelectionUngrammatical): Ditto. |
| (WebCore::Editor::guessesForMisspelledOrUngrammatical): Ditto. |
| (WebCore::Editor::markMisspellingsAfterTypingToWord): Use createLiveRange. |
| (WebCore::Editor::markMisspellingsOrBadGrammar): Ditto. |
| (WebCore::Editor::markMisspellingsAndBadGrammar): Ditto. |
| (WebCore::Editor::rangeForPoint): Ditto. |
| (WebCore::Editor::insertTextPlaceholder): Ditto. |
| (WebCore::Editor::shouldChangeSelection const): Ditto. |
| (WebCore::Editor::findString): Ditto. |
| (WebCore::Editor::rangeOfString): Ditto. |
| (WebCore::Editor::scanSelectionForTelephoneNumbers): Ditto. |
| (WebCore::Editor::editorUIUpdateTimerFired): Remove use of live range. |
| (WebCore::candidateRangeForSelection): Deleted. |
| (WebCore::Editor::stringForCandidateRequest const): Use createLiveRange |
| and merged in the logic from candidateRangeForSelection. |
| (WebCore::Editor::fontForSelection const): Remove use of live range. |
| |
| * editing/EditorCommand.cpp: |
| (WebCore::expandSelectionToGranularity): Use createLiveRange. |
| (WebCore::executeDeleteToMark): Ditto. |
| (WebCore::executeSelectToMark): Ditto. |
| (WebCore::valueFormatBlock): Ditto. |
| |
| * editing/FrameSelection.cpp: |
| (WebCore::FrameSelection::respondToNodeModification): Use createLiveRange. |
| (WebCore::FrameSelection::shouldDeleteSelection const): Ditto. |
| (WebCore::FrameSelection::getClippedVisibleTextRectangles const): Do the work |
| without a live range. |
| (WebCore::FrameSelection::expandSelectionToElementContainingCaretSelection): Ditto. |
| (WebCore::FrameSelection::elementRangeContainingCaretSelection const): Changed |
| to return a SimpleRange rather than a live range. Also removed redundant checks |
| and renamed locals to streamline the function. |
| (WebCore::FrameSelection::wordRangeContainingCaretSelection): Return a |
| SimpleRange instead of a live range. |
| (WebCore::FrameSelection::rangeByMovingCurrentSelection const): Ditto. |
| (WebCore::FrameSelection::rangeByExtendingCurrentSelection const): Ditto. |
| (WebCore::FrameSelection::rangeByAlteringCurrentSelection const): Ditto. |
| * editing/FrameSelection.h: Removed the toNormalizedRange function, since the |
| VisibleSelection class has a comment claiming most callers should not call it. |
| Updated forthe other changes above. |
| |
| * editing/InsertListCommand.cpp: |
| (WebCore::InsertListCommand::doApply): Use createLiveRange. |
| * editing/ReplaceSelectionCommand.cpp: |
| (WebCore::ReplacementFragment::ReplacementFragment): Ditto. |
| |
| * editing/TextCheckingHelper.cpp: |
| (WebCore::TextCheckingHelper::TextCheckingHelper): Remove use of live range, |
| changing the type of m_range to SimpleRange. |
| (WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar): Reduce use |
| of live range. |
| (WebCore::TextCheckingHelper::findFirstGrammarDetail const): Use createLiveRange. |
| (WebCore::TextCheckingHelper::findFirstBadGrammar const): Ditto. |
| (WebCore::TextCheckingHelper::isUngrammatical const): Remove use of live range. |
| (WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange const): |
| Use createLiveRange. |
| (WebCore::TextCheckingHelper::unifiedTextCheckerEnabled const): Updated for |
| different interface to get the document for a SimpleRange. |
| * editing/TextCheckingHelper.h: Change constructor to take a SimpleRange. |
| |
| * editing/TypingCommand.cpp: |
| (WebCore::TypingCommand::deleteKeyPressed): Use createLiveRange. |
| (WebCore::TypingCommand::forwardDeleteKeyPressed): Ditto. |
| |
| * editing/VisibleSelection.cpp: |
| (WebCore::VisibleSelection::firstRange const): Return a SimpleRange. |
| (WebCore::VisibleSelection::toNormalizedRange const): Ditto. |
| * editing/VisibleSelection.h: Updated for the above. |
| |
| * editing/cocoa/DictionaryLookup.mm: Removed an uneeded check of the |
| selection range against null. Code already guards against null endpoints. |
| |
| * editing/cocoa/EditorCocoa.mm: |
| (WebCore::selectionAsAttributedString): Added. Uses the attributedString |
| function with it's new argument and return value types. There's no longer |
| a special function for the selection in the HTMLConverter header, so we |
| put it here instead. |
| (WebCore::Editor::writeSelectionToPasteboard): Updated to use the function |
| above and to deal with RetainPtr. |
| (WebCore::Editor::writeSelection): Ditto. |
| |
| * editing/cocoa/HTMLConverter.h: Removed attributedStringFromSelection and |
| attributedStringBetweenStartAndEnd. Renamed attributedStringFromRange to |
| just attributedString and renamed editingAttributedStringFromRange to |
| just editingAttributedString. Also renamed IncludeImagesInAttributedString |
| to just IncludeImages. |
| * editing/cocoa/HTMLConverter.mm: |
| (HTMLConverter::HTMLConverter): Use a SimpleRange rther than two Position |
| arguments to the constructor. |
| (HTMLConverter::convert): Use RetainPtr for the return value and the |
| optional out argument. |
| (WebCore::attributedStringFromSelection): Deleted. |
| (WebCore::attributedStringBetweenStartAndEnd): Deleted. |
| (WebCore::attributedString): Renamed the version that takes a range and |
| made it take a SimpleRange, not a live range. |
| (WebCore::editingAttributedString): Ditto. |
| |
| * editing/mac/EditorMac.mm: |
| (WebCore::Editor::dataSelectionForPasteboard): Updated for changes to |
| attributedString. |
| |
| * html/HTMLTextAreaElement.cpp: |
| (WebCore::HTMLTextAreaElement::handleBeforeTextInsertedEvent const): |
| Changed to not use live ranges any more. |
| |
| * page/ContextMenuController.cpp: |
| (WebCore::ContextMenuController::contextMenuItemSelected): |
| Use createLiveRange. |
| |
| * page/DOMSelection.cpp: |
| (WebCore::DOMSelection::getRangeAt): Use createLiveRange. |
| (WebCore::DOMSelection::addRange): Use Ditto. |
| (WebCore::DOMSelection::deleteFromDocument): Ditto. |
| |
| * page/DragController.cpp: |
| (WebCore::setSelectionToDragCaret): Removed in/out argument that was |
| used to update a range that was never looked at afterward. |
| (WebCore::DragController::concludeEditDrag): Use createLiveRange. |
| (WebCore::DragController::draggableElement const): Ditto. |
| (WebCore::DragController::startDrag): Ditto. |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::dispatchMouseEvent): Use createLiveRange. |
| (WebCore::EventHandler::sendContextMenuEventForKey): Ditto. |
| (WebCore::EventHandler::didStartDrag): Remove use of live range. |
| |
| * page/Page.cpp: |
| (WebCore::Page::findStringMatchingRanges): Use createLiveRange. |
| * page/TextIndicator.cpp: |
| (WebCore::TextIndicator::createWithRange): Ditto. |
| (WebCore::TextIndicator::createWithSelectionInFrame): Ditto. |
| |
| * page/mac/ServicesOverlayController.mm: |
| (WebCore::ServicesOverlayController::buildSelectionHighlight): |
| Use createLiveRange. |
| (WebCore::ServicesOverlayController::findTelephoneNumberHighlightContainingSelectionHighlight): |
| Use createLiveRange. |
| |
| * rendering/HitTestResult.cpp: |
| (WebCore::HitTestResult::selectedText const): Remove use of |
| live range. |
| |
| 2020-04-26 Darin Adler <darin@apple.com> |
| |
| Remove unnecessary inlining and templates for URL decomposition DOM functions |
| https://bugs.webkit.org/show_bug.cgi?id=211025 |
| |
| Reviewed by Alex Christensen. |
| |
| * Headers.cmake: Renamed URLUtils.h to URLDecomposition.h. |
| * Modules/cache/DOMCacheStorage.cpp: Updated include and using namespace. |
| * Sources.txt: Added URLDecomposition.cpp. |
| * WebCore.xcodeproj/project.pbxproj: Added URLDecomposition.cpp and |
| renamed URLUtils.h to URLDecomposition.h. |
| |
| * html/DOMURL.h: Removed the WEBCORE_EXPORT on this class. Added final. |
| Derive from URLDecomposition instead of URLUtils. Changed return type of |
| href to const&. Moved toJSON here from URLUtils. Added overrides of the |
| fullURL and setFullURL functions for URLDecomposition. |
| |
| * html/DOMURL.idl: Removed ImplementationLacksVTable. |
| |
| * html/HTMLAnchorElement.cpp: |
| (WebCore::HTMLAnchorElement::HTMLAnchorElement): Moved initialization of |
| boolean data members to the class definition. |
| |
| * html/HTMLAnchorElement.h: Derive from URLDecomposition instead of |
| URLUtils. Added overrides of the fullURL and setFullURL functions for |
| URLDecomposition. Initialize data members here in the class definition. |
| |
| * html/HTMLMediaElement.cpp: Removed unnecessary include of DOMURL.h. |
| |
| * html/URLDecomposition.cpp: Added. Contains most of the code from |
| the URLUtils class template, which no longer needs to be in a header. |
| |
| * html/URLDecomposition.h: Renamed URLUtils.h to this. It's now an |
| abstract base class rather than a class template using the curiously |
| recurring template pattern. |
| |
| * html/URLSearchParams.h: Forward-declare DOMURL rather than including |
| the DOMURL.h header. |
| |
| * html/URLUtils.h: Removed. Renamed to URLDecompostion.h. |
| |
| * page/DOMWindow.cpp: Removed unneeded include of DOMURL.h. |
| * testing/Internals.cpp: Added include of DOMURL.h. |
| |
| 2020-04-26 Cathie Chen <cathiechen@igalia.com> |
| |
| fast/scrolling/scroll-behavior-invalidate-if-disabled.html is a flaky failure |
| https://bugs.webkit.org/show_bug.cgi?id=210917 |
| |
| Reviewed by Darin Adler. |
| |
| The flaky failure is caused by reusing the CSSPropertyInfo value cached propertyInfoCache |
| after experimental flags changed. Add propertyInfoFromJavaScriptCSSPropertyName |
| to perform disabled checking after parsing. If the property is disabled, it will return |
| an invalid CSSPropertyInfo instead. |
| |
| * css/CSSStyleDeclaration.cpp: |
| (WebCore::CSSStyleDeclaration::getCSSPropertyIDFromJavaScriptPropertyName): |
| (WebCore::CSSStyleDeclaration::namedItem): |
| (WebCore::CSSStyleDeclaration::setNamedItem): |
| |
| 2020-04-25 Ross Kirsling <ross.kirsling@sony.com> |
| |
| [JSC] isCallable is redundant with isFunction |
| https://bugs.webkit.org/show_bug.cgi?id=211037 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| * bindings/js/JSDOMConvertScheduledAction.h: |
| (WebCore::Converter<IDLScheduledAction>::convert): |
| * worklets/PaintWorkletGlobalScope.cpp: |
| (WebCore::PaintWorkletGlobalScope::registerPaint): |
| Don't use getCallData if you don't need CallData. |
| |
| 2020-04-25 Alex Christensen <achristensen@webkit.org> |
| |
| Build fix. |
| https://bugs.webkit.org/show_bug.cgi?id=210521 |
| |
| * Modules/applepay/ApplePaySetupFeature.mm: |
| |
| 2020-04-25 Alex Christensen <achristensen@webkit.org> |
| |
| Move ApplePay code from WebKitAdditions to WebCore and WebKit |
| https://bugs.webkit.org/show_bug.cgi?id=210521 |
| |
| I accidentally committed an older version of the patch. |
| This is the diff between the two to fix the internal build. |
| |
| 2020-04-25 Alex Christensen <achristensen@webkit.org> |
| |
| Move ApplePay code from WebKitAdditions to WebCore and WebKit |
| https://bugs.webkit.org/show_bug.cgi?id=210521 |
| |
| Reviewed by Andy Estes. |
| |
| Only 4 minor modifications were necessary, as follows: |
| |
| 1. PaymentSetupFeatures's RetainPtr<NSArray<PKPaymentSetupFeature *>> was changed to RetainPtr<NSArray> to work with C++. |
| 2. WebPaymentCoordinatorProxyAdditions messages were moved to WebPaymentCoordinatorProxy, removing the need for |
| the extra message receiver, the Optional<WebPaymentCoordinatorProxyAdditions>, and the finishConstruction. |
| 3. WebMediaSessionManager.cpp's macros that collided with other macros were renamed. This was necessary because of different source unification. |
| 4. PaymentSetupFeatures.h was renamed to ApplePayPaymentSetupFeatures.h to be able to build with PaymentSetupFeatures.h in the SDK. |
| |
| The rest is just copy and paste. |
| |
| There isn't a good way to land this without breaking the build without removing the files from WebKitAdditions at the same time, |
| so I'll do the two at the same time late at night to not cause disruption. |
| |
| * DerivedSources.make: |
| * Modules/applepay/ApplePayInstallmentConfiguration.h: Added. |
| * Modules/applepay/ApplePayInstallmentConfiguration.idl: Added. |
| * Modules/applepay/ApplePayPayment.h: |
| * Modules/applepay/ApplePayPayment.idl: |
| * Modules/applepay/ApplePayPaymentMethod.h: |
| * Modules/applepay/ApplePayPaymentMethod.idl: |
| * Modules/applepay/ApplePayPaymentMethodUpdate.h: |
| * Modules/applepay/ApplePayPaymentMethodUpdate.idl: |
| * Modules/applepay/ApplePayRequestBase.cpp: |
| (WebCore::finishConverting): |
| (WebCore::requiresSupportedNetworks): |
| * Modules/applepay/ApplePayRequestBase.h: |
| * Modules/applepay/ApplePaySession.cpp: |
| (WebCore::finishConverting): |
| * Modules/applepay/ApplePaySessionPaymentRequest.h: |
| (WebCore::ApplePaySessionPaymentRequest::installmentConfiguration const): |
| (WebCore::ApplePaySessionPaymentRequest::setInstallmentConfiguration): |
| * Modules/applepay/ApplePaySetup.cpp: Added. |
| (WebCore::shouldDiscloseFeatures): |
| (WebCore::ApplePaySetup::getSetupFeatures): |
| (WebCore::ApplePaySetup::begin): |
| (WebCore::ApplePaySetup::ApplePaySetup): |
| (WebCore::ApplePaySetup::stop): |
| (WebCore::ApplePaySetup::suspend): |
| * Modules/applepay/ApplePaySetup.h: Added. |
| (WebCore::ApplePaySetup::create): |
| * Modules/applepay/ApplePaySetup.idl: Added. |
| * Modules/applepay/ApplePaySetupFeature.h: Added. |
| (WebCore::ApplePaySetupFeature::create): |
| (WebCore::ApplePaySetupFeature::platformFeature const): |
| * Modules/applepay/ApplePaySetupFeature.idl: Added. |
| * Modules/applepay/ApplePaySetupFeature.mm: Added. |
| (WebCore::ApplePaySetupFeature::type const): |
| (WebCore::ApplePaySetupFeature::state const): |
| (WebCore::ApplePaySetupFeature::supportsInstallments const): |
| (WebCore::ApplePaySetupFeature::ApplePaySetupFeature): |
| * Modules/applepay/ApplePaySetupFeatureType.h: Added. |
| * Modules/applepay/ApplePaySetupFeatureType.idl: Added. |
| * Modules/applepay/PaymentCoordinatorClient.h: |
| (WebCore::PaymentCoordinatorClient::getSetupFeatures): |
| (WebCore::PaymentCoordinatorClient::beginApplePaySetup): |
| (WebCore::PaymentCoordinatorClient::endApplePaySetup): |
| * Modules/applepay/PaymentInstallmentConfiguration.h: Added. |
| * Modules/applepay/PaymentInstallmentConfiguration.mm: Added. |
| (WebCore::toDecimalNumber): |
| (WebCore::platformFeatureType): |
| (WebCore::createPlatformConfiguration): |
| (WebCore::PaymentInstallmentConfiguration::PaymentInstallmentConfiguration): |
| (WebCore::PaymentInstallmentConfiguration::platformConfiguration const): |
| * Modules/applepay/PaymentMethodUpdate.h: |
| * Modules/applepay/cocoa/PaymentCocoa.mm: |
| (WebCore::finishConverting): |
| * Modules/applepay/cocoa/PaymentMethodCocoa.mm: |
| (WebCore::finishConverting): |
| * Modules/applepay/cocoa/PaymentMethodUpdateCocoa.mm: |
| (WebCore::PaymentMethodUpdate::setInstallmentGroupIdentifier): |
| * Modules/applepay/cocoa/PaymentSessionErrorCocoa.mm: |
| (WebCore::additionalError): |
| * Modules/applepay/paymentrequest/ApplePayRequest.idl: |
| * Modules/mediasession/WebMediaSessionManager.cpp: |
| (WebCore::WebMediaSessionManager::setMockMediaPlaybackTargetPickerEnabled): |
| (WebCore::WebMediaSessionManager::setMockMediaPlaybackTargetPickerState): |
| (WebCore::WebMediaSessionManager::mockMediaPlaybackTargetPickerDismissPopup): |
| (WebCore::WebMediaSessionManager::addPlaybackTargetPickerClient): |
| (WebCore::WebMediaSessionManager::removePlaybackTargetPickerClient): |
| (WebCore::WebMediaSessionManager::removeAllPlaybackTargetPickerClients): |
| (WebCore::WebMediaSessionManager::showPlaybackTargetPicker): |
| (WebCore::WebMediaSessionManager::clientStateDidChange): |
| (WebCore::WebMediaSessionManager::setPlaybackTarget): |
| (WebCore::WebMediaSessionManager::externalOutputDeviceAvailableDidChange): |
| (WebCore::WebMediaSessionManager::playbackTargetPickerWasDismissed): |
| (WebCore::WebMediaSessionManager::configurePlaybackTargetClients): |
| (WebCore::WebMediaSessionManager::configurePlaybackTargetMonitoring): |
| (WebCore::WebMediaSessionManager::configureWatchdogTimer): |
| (WebCore::WebMediaSessionManager::watchdogTimerFired): |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/cocoa/WebCoreAdditions.mm: |
| |
| 2020-04-25 Simon Fraser <simon.fraser@apple.com> |
| |
| Commit the scrolling tree from the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=211026 |
| <rdar://problem/62374855> |
| |
| Reviewed by Darin Adler. |
| |
| ScrollingCoordinatorMac::commitTreeStateIfNeeded() passed the new state tree to |
| the scrolling thread which then did the commit (which updates the scrolling tree |
| from the state tree). However, applyLayerPositions() immediately waited for that |
| commit to complete, blocking the main thread anyway. |
| |
| We might as well just commit the scrolling tree on the main thread. ScrollingTree::commitTreeState() |
| locks m_treeMutex, so this is still safe. Lock contention with the scrolling or event dispatcher |
| threads should be rare; those threads are both mostly responsive. |
| |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::scrollingTreeAsText const): |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::commitTreeState): |
| * page/scrolling/ScrollingTree.h: |
| (WebCore::ScrollingTree::waitForScrollingTreeCommit): Deleted. |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::commitTreeState): Deleted. |
| (WebCore::ThreadedScrollingTree::incrementPendingCommitCount): Deleted. |
| (WebCore::ThreadedScrollingTree::decrementPendingCommitCount): Deleted. |
| (WebCore::ThreadedScrollingTree::waitForPendingCommits): Deleted. |
| (WebCore::ThreadedScrollingTree::waitForScrollingTreeCommit): Deleted. |
| (WebCore::ThreadedScrollingTree::applyLayerPositions): Deleted. |
| * page/scrolling/ThreadedScrollingTree.h: |
| * page/scrolling/mac/ScrollingCoordinatorMac.mm: |
| (WebCore::ScrollingCoordinatorMac::commitTreeStateIfNeeded): |
| * page/scrolling/nicosia/ScrollingCoordinatorNicosia.cpp: |
| (WebCore::ScrollingCoordinatorNicosia::commitTreeState): |
| |
| 2020-04-25 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Use static initialized Lock instead of LazyNeverDestroyed<Lock> |
| https://bugs.webkit.org/show_bug.cgi?id=211010 |
| |
| Reviewed by Mark Lam. |
| |
| WTF::Lock can be static-initialized, so no need to use LazyNeverDestroyed<Lock>. |
| |
| * Modules/webgpu/WebGPUDevice.cpp: |
| (WebCore::WebGPUDevice::instancesMutex): |
| * Modules/webgpu/WebGPUPipeline.cpp: |
| (WebCore::WebGPUPipeline::instancesMutex): |
| * html/canvas/CanvasRenderingContext.cpp: |
| (WebCore::CanvasRenderingContext::instancesMutex): |
| * html/canvas/WebGLProgram.cpp: |
| (WebCore::WebGLProgram::instancesMutex): |
| |
| 2020-04-25 Darin Adler <darin@apple.com> |
| |
| [Cocoa] Deal with another round of Xcode upgrade checks |
| https://bugs.webkit.org/show_bug.cgi?id=211027 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| * WebCore.xcodeproj/project.pbxproj: Bump the upgrade check version. |
| |
| 2020-04-25 Alex Christensen <achristensen@webkit.org> |
| |
| Prepare to remove automatic URL->String conversion operators |
| https://bugs.webkit.org/show_bug.cgi?id=211007 |
| |
| Reviewed by Darin Adler. |
| |
| * Modules/cache/DOMCache.cpp: |
| (WebCore::DOMCache::requestFromInfo): |
| * Modules/fetch/FetchRequest.cpp: |
| (WebCore::FetchRequest::urlString const): |
| * Modules/fetch/FetchResponse.cpp: |
| (WebCore::FetchResponse::fetch): |
| * Modules/websockets/WebSocket.cpp: |
| (WebCore::WebSocket::create): |
| * accessibility/AccessibilityImageMapLink.cpp: |
| (WebCore::AccessibilityImageMapLink::stringValueForMSAA const): |
| * bindings/IDLTypes.h: |
| (WebCore::IDLString::isNullValue): |
| * bindings/js/CachedScriptSourceProvider.h: |
| (WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider): |
| * bindings/js/JSDOMConvertStrings.h: |
| (WebCore::JSConverter<IDLDOMString>::convert): |
| (WebCore::Converter<IDLUSVString>::convert): |
| (WebCore::JSConverter<IDLUSVString>::convert): |
| * bindings/js/ScriptController.cpp: |
| (WebCore::ScriptController::evaluateInWorld): |
| (WebCore::ScriptController::evaluateModule): |
| (WebCore::ScriptController::callInWorld): |
| (WebCore::ScriptController::executeIfJavaScriptURL): |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneSerializer::dumpIfTerminal): |
| (WebCore::CloneSerializer::write): |
| * css/CSSCursorImageValue.cpp: |
| (WebCore::CSSCursorImageValue::updateCursorElement): |
| * css/CSSImageValue.cpp: |
| (WebCore::CSSImageValue::customCSSText const): |
| (WebCore::CSSImageValue::createDeprecatedCSSOMWrapper const): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::consumeFontFaceSrcURI): |
| * dom/Document.cpp: |
| (WebCore::Document::processHttpEquiv): |
| * dom/ExtensionStyleSheets.cpp: |
| (WebCore::createExtensionsStyleSheet): |
| * dom/InlineStyleSheetOwner.cpp: |
| (WebCore::InlineStyleSheetOwner::createSheet): |
| * dom/ScriptElement.cpp: |
| (WebCore::ScriptElement::requestModuleScript): |
| (WebCore::ScriptElement::executeClassicScript): |
| * dom/StyledElement.cpp: |
| (WebCore::StyledElement::styleAttributeChanged): |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::sanitizeMarkupWithArchive): |
| (WebCore::WebContentReader::readWebArchive): |
| * html/HTMLFormControlElement.cpp: |
| (WebCore::HTMLFormControlElement::formAction const): |
| * html/HTMLFrameElementBase.cpp: |
| (WebCore::HTMLFrameElementBase::canLoadURL const): |
| * html/HTMLLinkElement.cpp: |
| (WebCore::HTMLLinkElement::shouldLoadLink): |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::selectNextSourceChild): |
| * html/HTMLPlugInImageElement.cpp: |
| (WebCore::HTMLPlugInImageElement::canLoadURL const): |
| * html/parser/XSSAuditor.cpp: |
| (WebCore::XSSAuditor::filterToken): |
| * inspector/InspectorAuditResourcesObject.cpp: |
| (WebCore::InspectorAuditResourcesObject::getResources): |
| * inspector/InspectorStyleSheet.cpp: |
| (WebCore::buildArrayForGroupings): |
| * inspector/NetworkResourcesData.cpp: |
| (WebCore::NetworkResourcesData::responseReceived): |
| * inspector/agents/InspectorNetworkAgent.cpp: |
| (WebCore::InspectorNetworkAgent::buildObjectForCachedResource): |
| (WebCore::InspectorNetworkAgent::willSendRequest): |
| * inspector/agents/InspectorPageAgent.cpp: |
| (WebCore::InspectorPageAgent::getCookies): |
| (WebCore::InspectorPageAgent::searchInResources): |
| (WebCore::InspectorPageAgent::buildObjectForFrameTree): |
| * inspector/agents/InspectorWorkerAgent.cpp: |
| (WebCore::InspectorWorkerAgent::connectToWorkerInspectorProxy): |
| * inspector/agents/WebConsoleAgent.cpp: |
| (WebCore::WebConsoleAgent::didFailLoading): |
| * inspector/agents/worker/ServiceWorkerAgent.cpp: |
| (WebCore::ServiceWorkerAgent::getInitializationInfo): |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::subresources const): |
| * loader/DocumentLoader.h: |
| (WebCore::DocumentLoader::clientRedirectDestinationForHistory const): |
| (WebCore::DocumentLoader::serverRedirectDestinationForHistory const): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::submitForm): |
| (WebCore::FrameLoader::receivedFirstData): |
| (WebCore::FrameLoader::loadInSameDocument): |
| (WebCore::FrameLoader::loadedResourceFromMemoryCache): |
| (WebCore::createWindow): |
| * loader/HistoryController.cpp: |
| (WebCore::HistoryController::currentItemShouldBeReplaced const): |
| * loader/ImageLoader.cpp: |
| (WebCore::ImageLoader::updateFromElement): |
| (WebCore::ImageLoader::dispatchPendingBeforeLoadEvent): |
| * loader/LinkLoader.cpp: |
| (WebCore::LinkLoader::preloadIfNeeded): |
| (WebCore::LinkLoader::prefetchIfNeeded): |
| * loader/MixedContentChecker.cpp: |
| (WebCore::MixedContentChecker::checkFormForMixedContent const): |
| * loader/NavigationScheduler.cpp: |
| (WebCore::NavigationScheduler::shouldScheduleNavigation const): |
| (WebCore::NavigationScheduler::scheduleLocationChange): |
| * loader/PingLoader.cpp: |
| (WebCore::PingLoader::loadImage): |
| (WebCore::PingLoader::sendPing): |
| * loader/ResourceLoadNotifier.cpp: |
| (WebCore::ResourceLoadNotifier::dispatchWillSendRequest): |
| * loader/SubframeLoader.cpp: |
| (WebCore::SubframeLoader::requestObject): |
| * loader/TextTrackLoader.cpp: |
| (WebCore::TextTrackLoader::load): |
| * loader/appcache/ApplicationCache.cpp: |
| (WebCore::ApplicationCache::addResource): |
| (WebCore::ApplicationCache::resourceForRequest): |
| * loader/appcache/ApplicationCacheGroup.cpp: |
| (WebCore::ApplicationCacheGroup::selectCache): |
| (WebCore::ApplicationCacheGroup::finishedLoadingMainResource): |
| (WebCore::ApplicationCacheGroup::didFinishLoadingEntry): |
| (WebCore::ApplicationCacheGroup::didFailLoadingEntry): |
| (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): |
| * loader/appcache/ApplicationCacheHost.cpp: |
| (WebCore::ApplicationCacheHost::shouldLoadResourceFromApplicationCache): |
| (WebCore::ApplicationCacheHost::getApplicationCacheFallbackResource): |
| * loader/appcache/ApplicationCacheStorage.cpp: |
| (WebCore::ApplicationCacheStorage::loadCacheGroup): |
| (WebCore::ApplicationCacheStorage::findOrCreateCacheGroup): |
| (WebCore::ApplicationCacheStorage::findInMemoryCacheGroup const): |
| (WebCore::ApplicationCacheStorage::cacheGroupForURL): |
| (WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL): |
| (WebCore::ApplicationCacheStorage::cacheGroupDestroyed): |
| (WebCore::ApplicationCacheStorage::cacheGroupMadeObsolete): |
| (WebCore::ApplicationCacheStorage::store): |
| (WebCore::ApplicationCacheStorage::deleteCacheForOrigin): |
| * loader/archive/ArchiveResourceCollection.cpp: |
| (WebCore::ArchiveResourceCollection::addAllResources): |
| (WebCore::ArchiveResourceCollection::addResource): |
| (WebCore::ArchiveResourceCollection::archiveResourceForURL): |
| * loader/cache/CachedCSSStyleSheet.cpp: |
| (WebCore::CachedCSSStyleSheet::didAddClient): |
| (WebCore::CachedCSSStyleSheet::checkNotify): |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::cachedResource const): |
| (WebCore::CachedResourceLoader::requestResource): |
| (WebCore::CachedResourceLoader::determineRevalidationPolicy const): |
| (WebCore::CachedResourceLoader::notifyFinished): |
| * loader/cache/CachedXSLStyleSheet.cpp: |
| (WebCore::CachedXSLStyleSheet::didAddClient): |
| (WebCore::CachedXSLStyleSheet::checkNotify): |
| * page/ContextMenuController.cpp: |
| (WebCore::ContextMenuController::checkOrEnableIfNeeded const): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::setLocation): |
| (WebCore::DOMWindow::createWindow): |
| (WebCore::DOMWindow::open): |
| * page/Location.cpp: |
| (WebCore::Location::reload): |
| * page/PageSerializer.cpp: |
| (WebCore::PageSerializer::retrieveResourcesForProperties): |
| * page/SecurityOrigin.cpp: |
| (WebCore::SecurityOrigin::shouldIgnoreHost): |
| * page/SecurityPolicy.cpp: |
| (WebCore::SecurityPolicy::shouldInheritSecurityOriginFromOwner): |
| (WebCore::SecurityPolicy::isBaseURLSchemeAllowed): |
| * page/csp/ContentSecurityPolicy.cpp: |
| (WebCore::ContentSecurityPolicy::reportViolation const): |
| * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h: |
| (WebCore::MediaPlayerPrivateAVFoundation::assetURL const): |
| * platform/network/BlobRegistryImpl.cpp: |
| (WebCore::BlobRegistryImpl::writeBlobToFilePath): |
| * platform/network/mac/ResourceErrorMac.mm: |
| (WebCore::ResourceError::platformLazyInit): |
| * storage/StorageEventDispatcher.cpp: |
| (WebCore::StorageEventDispatcher::dispatchSessionStorageEvents): |
| (WebCore::StorageEventDispatcher::dispatchLocalStorageEvents): |
| * svg/SVGImageLoader.cpp: |
| (WebCore::SVGImageLoader::sourceURI const): |
| * workers/WorkerScriptLoader.cpp: |
| (WebCore::WorkerScriptLoader::loadSynchronously): |
| * workers/service/ServiceWorkerRegistration.cpp: |
| (WebCore::ServiceWorkerRegistration::scope const): |
| * workers/service/ServiceWorkerRegistrationKey.cpp: |
| (WebCore::ServiceWorkerRegistrationKey::hash const): |
| (WebCore::ServiceWorkerRegistrationKey::isMatching const): |
| * workers/service/context/ServiceWorkerDebuggable.cpp: |
| (WebCore::ServiceWorkerDebuggable::ServiceWorkerDebuggable): |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::startScriptFetch): |
| * xml/XMLHttpRequest.cpp: |
| (WebCore::XMLHttpRequest::send): |
| |
| 2020-04-25 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Add vertical-align: baseline support |
| https://bugs.webkit.org/show_bug.cgi?id=211024 |
| |
| Reviewed by Antti Koivisto. |
| |
| Adjust the padding with the baseline offset when the cell is baseline aligned (as opposed to the initial value of 'middle'). |
| |
| Test: fast/layoutformattingcontext/table-basic-row-vertical-align-baseline.html |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForCells): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| * layout/tableformatting/TableGrid.h: |
| (WebCore::Layout::TableGrid::Cell::setBaselineOffset): |
| (WebCore::Layout::TableGrid::Cell::baselineOffset const): |
| |
| 2020-04-25 Darin Adler <darin@apple.com> |
| |
| Move URL to use StringView when returning substrings of the URL |
| https://bugs.webkit.org/show_bug.cgi?id=210431 |
| |
| Reviewed by Anders Carlsson. |
| |
| * Modules/cache/DOMCacheEngine.cpp: |
| (WebCore::DOMCacheEngine::matchURLs): Removed unneeded calls to hasQuery. |
| |
| * Modules/fetch/FetchRequest.cpp: |
| (WebCore::FetchRequest::initializeWith): Use hasCredentials. |
| * Modules/fetch/FetchResponse.cpp: |
| (WebCore::FetchResponse::redirect): Use hasCredentials. |
| * Modules/paymentrequest/PaymentRequest.cpp: |
| (WebCore::isValidURLBasedPaymentMethodIdentifier): Use hasCredentials. |
| |
| * Modules/plugins/YouTubePluginReplacement.cpp: |
| (WebCore::createYouTubeURL): Take StringView. |
| (WebCore::queryKeysAndValues): Take StringView. |
| (WebCore::processAndCreateYouTubeURL): Use auto since URL pieces are |
| now returned as StringView. |
| (WebCore::YouTubePluginReplacement::youTubeURLFromAbsoluteURL): |
| Use StringView and makeString rather than StringBuilder. |
| |
| * Modules/websockets/WebSocketHandshake.cpp: |
| (WebCore::resourceName): Use queryWithLeadingQuestionMark. |
| |
| * accessibility/AccessibilityRenderObject.cpp: |
| (WebCore::AccessibilityRenderObject::internalLinkElement const): |
| Use StringView. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::setURL): Use setHostAndPort. |
| |
| * dom/Element.cpp: |
| (WebCore::Element::findAnchorElementForLink): Update since |
| fragmentIdentifier returns StringView. |
| |
| * dom/TreeScope.cpp: Added a comment. |
| |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| (WebCore::replaceRichContentWithAttachments): Update since |
| lastPathComponent returns a StringView. Also got rid of some strange |
| use of AtomString that was not necessary and used WTFMove more. |
| |
| * editing/ios/EditorIOS.mm: |
| (WebCore::Editor::writeImageToPasteboard): Update since |
| lastPathComponent returns a StringView. |
| |
| * html/HTMLAttachmentElement.cpp: |
| (WebCore::HTMLAttachmentElement::attachmentTitleForDisplay const): |
| Use makeString instead of StringBuilder, and StringView instead of |
| String for name and extension values. |
| |
| * html/HTMLPlugInElement.cpp: |
| (WebCore::pluginReplacementForType): Update since lastPathComponent |
| returns a StringView. |
| |
| * html/MediaFragmentURIParser.cpp: |
| (WebCore::MediaFragmentURIParser::parseFragments): Update since |
| fragmentIdentifier returns a StringView. |
| |
| * html/URLUtils.h: Changed many functions to take a StringView, changed |
| various other functions to call toString, since the underlying URL |
| function now returns a StringView. Updated names since "pass" is now |
| "password". |
| (WebCore::countASCIIDigits): Added. Replaces unusual function |
| named parsePortFromStringPosition because we can use StringView now |
| and so don't need such an unusual function. |
| |
| * loader/AdClickAttribution.cpp: |
| (WebCore::AdClickAttribution::parseConversionRequest): Use hasCredentials. |
| Also removed unnecessary use of ASCIILiteral that hurts performance |
| a tiny bit. |
| (WebCore::AdClickAttribution::urlForTesting const): Use makeString |
| instead of StringBuilder. |
| |
| * loader/CrossOriginAccessControl.cpp: |
| (WebCore::validateCrossOriginRedirectionURL): Use hasCredentials. |
| * loader/DocumentThreadableLoader.cpp: |
| (WebCore::DocumentThreadableLoader::loadRequest): Use hasCredentials. |
| |
| * loader/FormSubmission.cpp: |
| (WebCore::appendMailtoPostFormDataToURL): Update since query returns |
| StringView. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadInSameDocument): Use equalRespectingNullity on |
| fragment identifiers to preserve behavior, since at this time |
| StringView == StringView does not respect nullity, but String == String does. |
| |
| * loader/appcache/ApplicationCacheHost.cpp: |
| (WebCore::ApplicationCacheHost::createFileURL): Use fileURLWithFileSystemPath. |
| |
| * loader/appcache/ManifestParser.cpp: |
| (WebCore::manifestPath): Return a StringView. |
| (WebCore::parseManifest): Use StringView. |
| |
| * loader/cache/CachedFont.cpp: |
| (WebCore::CachedFont::calculateItemInCollection const): Update since |
| fragmentIdentifer returns a StringView. |
| * loader/cache/CachedResourceRequest.cpp: |
| (WebCore::CachedResourceRequest::splitFragmentIdentifierFromRequestURL): Ditto. |
| * page/FrameView.cpp: |
| (WebCore::FrameView::scrollToFragment): Ditto. |
| (WebCore::FrameView::scrollToFragmentInternal): Updated log message. |
| |
| * page/History.cpp: |
| (WebCore::History::stateObjectAdded): Updated for URL::password name change |
| and to use the new stringWithoutQueryOrFragmentIdentifier rather than the |
| old equalIgnoringQueryAndFragment. |
| |
| * page/Location.cpp: |
| (WebCore::Location::href const): Use removeCredentials. |
| (WebCore::Location::port const): Streamlined. |
| (WebCore::Location::pathname const): Use an ASCIILiteral. |
| (WebCore::Location::search const): Use queryWithLeadingQuestionMark. |
| (WebCore::Location::hash const): Use fragmentIdentifierWithLeadingNumberSign. |
| (WebCore::Location::setPort): Use parseUInt16. |
| |
| * page/UserContentURLPattern.cpp: Coding style tweaks. |
| |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::appendFileExtensionIfNecessary): |
| Use contains instead of reverseFind to check for a period in the filename. |
| |
| * platform/graphics/MediaPlayer.cpp: |
| (WebCore::MediaPlayer::load): Updated since lastPathComponent is a StringView. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::convertToInternalProtocol): Updated to use makeString since |
| setProtocol takes a StringView. |
| |
| * platform/network/ResourceHandleInternal.h: Renamed m_pass to m_password |
| and call password instead of pass. |
| |
| * platform/network/ResourceRequestBase.cpp: |
| (WebCore::ResourceRequestBase::removeCredentials): Use removeCredentials. |
| |
| * platform/network/cf/ResourceHandleCFNet.cpp: |
| (WebCore::ResourceHandle::createCFURLConnection): Updated for m_password |
| name change. |
| (WebCore::ResourceHandle::willSendRequest): Updated for m_password and |
| password name changes. |
| (WebCore::ResourceHandle::tryHandlePasswordBasedAuthentication): Ditto. |
| |
| * platform/network/curl/CurlProxySettings.cpp: |
| (WebCore::CurlProxySettings::setUserPass): Updated for setPassword name change. |
| (WebCore::createProxyUrl): Use hasCredentials, updated for password name change. |
| * platform/network/curl/CurlProxySettings.h: |
| (WebCore::CurlProxySettings::password const): Updated for password name change. |
| |
| * platform/network/curl/ResourceHandleCurl.cpp: |
| (WebCore::ResourceHandle::didReceiveAuthenticationChallenge): Updated for |
| m_password name change. |
| (WebCore::ResourceHandle::getCredential): Ditto. |
| (WebCore::ResourceHandle::willSendRequest): Updated for m_password and |
| password name changes. |
| |
| * platform/network/mac/ResourceHandleMac.mm: |
| (WebCore::ResourceHandle::createNSURLConnection): Updated for m_password |
| and setPassword name changes. |
| (WebCore::ResourceHandle::willSendRequest): Ditto. |
| (WebCore::ResourceHandle::tryHandlePasswordBasedAuthentication): Ditto. |
| |
| * platform/network/soup/ResourceRequestSoup.cpp: |
| (WebCore::ResourceRequest::createSoupURI const): Updated for password name change. |
| * platform/network/soup/URLSoup.cpp: |
| (WebCore::soupURIToURL): Updated for setPassword name change. |
| |
| * platform/win/PasteboardWin.cpp: |
| (WebCore::writeURL): Updated since lastPathComponent returns a StringView. |
| (WebCore::filesystemPathFromUrlOrTitle): Ditto. |
| (WebCore::Pasteboard::write): Ditto. |
| |
| * style/StyleBuilderState.cpp: |
| (WebCore::Style::BuilderState::createFilterOperations): Updated since |
| fragmentIdentifier returns a StringView. |
| |
| * workers/WorkerLocation.cpp: |
| (WebCore::WorkerLocation::port const): Streamlined. |
| (WebCore::WorkerLocation::pathname const): Use an ASCIILiteral. |
| (WebCore::WorkerLocation::search const): Use queryWithLeadingQuestionMark. |
| (WebCore::WorkerLocation::hash const): Use fragmentIdentifierWithLeadingNumberSign. |
| |
| * workers/service/ServiceWorkerRegistrationKey.cpp: |
| (WebCore::ServiceWorkerRegistrationKey::ServiceWorkerRegistrationKey): |
| Updated for hasFragmentIdentifier name change. |
| |
| * workers/service/context/ServiceWorkerThreadProxy.cpp: |
| (WebCore::topOriginURL): Simplified code to set port. |
| * workers/service/server/SWServer.cpp: |
| (WebCore::originURL): Ditto. |
| |
| * xml/XMLHttpRequest.cpp: |
| (WebCore::XMLHttpRequest::open): Updated for setPassword name change. |
| |
| 2020-04-25 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: Improve tracking of Element* pointers in AXObjectCache with WeakHashSet |
| https://bugs.webkit.org/show_bug.cgi?id=210879 |
| |
| Reviewed by Daniel Bates. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::remove): |
| (WebCore::AXObjectCache::handleFocusedUIElementChanged): |
| (WebCore::filterListForRemoval): |
| (WebCore::AXObjectCache::performDeferredCacheUpdate): |
| * accessibility/AXObjectCache.h: |
| |
| 2020-04-25 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] KeyframeEffect should ensure its target remains alive |
| https://bugs.webkit.org/show_bug.cgi?id=211019 |
| |
| Reviewed by Daniel Bates. |
| |
| Test: webanimations/keyframe-effect-target-kept-alive.html |
| |
| Make KeyframeEffect::m_target a RefPtr so that assigning an element to effect.target guarantees that element |
| is kept alive even if there are no other references to that element. |
| |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::KeyframeEffect): |
| (WebCore::KeyframeEffect::setTarget): |
| * animation/KeyframeEffect.h: |
| |
| 2020-04-25 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Cleanup TableFormattingContext::layoutInFlowContent |
| https://bugs.webkit.org/show_bug.cgi?id=211023 |
| |
| Reviewed by Sam Weinig. |
| |
| Move some code to dedicated functions. |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForCells): |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForRows): |
| (WebCore::Layout::TableFormattingContext::setUsedGeometryForSections): |
| (WebCore::Layout::TableFormattingContext::layoutCell): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| (WebCore::Layout::TableFormattingContext::initializeDisplayBoxToBlank const): Deleted. |
| (WebCore::Layout::TableFormattingContext::setComputedGeometryForRows): Deleted. |
| (WebCore::Layout::TableFormattingContext::setComputedGeometryForSections): Deleted. |
| * layout/tableformatting/TableFormattingContext.h: |
| * layout/tableformatting/TableFormattingContextGeometry.cpp: |
| (WebCore::Layout::TableFormattingContext::Geometry::cellHeigh const): |
| (WebCore::Layout::TableFormattingContext::Geometry::computedColumnWidth const): |
| (WebCore::Layout::TableFormattingContext::Geometry::tableCellHeightAndMargin const): Deleted. |
| |
| 2020-04-25 Joonghun Park <jh718.park@samsung.com> |
| |
| Unreviewed. Remove the build warning below since r260247. |
| warning: unused parameter ‘foo’ [-Wunused-parameter] |
| |
| No new tests, no new behaviors. |
| |
| * testing/Internals.cpp: |
| (WebCore::Internals::hasSandboxIOKitOpenAccessToClass): |
| |
| 2020-04-24 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Unable to sign up on twitter.com |
| https://bugs.webkit.org/show_bug.cgi?id=211003 |
| <rdar://problem/58804852> |
| |
| Reviewed by Darin Adler. |
| |
| This is similar to the bug we had on nytimes.com and that was fixed in |
| r258767. However, instead of a 'resize' event, it is a 'change' event |
| on a MediaQueryList that is getting twitter.com in a bad state. |
| |
| The issue is that when we home out of Safari, SpringBoard takes does |
| a snapshot sequence at various sizes / orientations and this causes |
| many JS events to get fired (e.g. 'resize', 'orientationchange', |
| 'change', ...), which can get some sites in a bad state. To address |
| the issue, we now prevent firing of ALL JS events during the |
| SpringBoard snapshot, instead of merely preventing the 'resize' ones. |
| |
| * dom/EventTarget.cpp: |
| (WebCore::EventTarget::fireEventListeners): |
| * page/FrameView.cpp: |
| (WebCore::FrameView::sendResizeEventIfNeeded): |
| * page/Page.h: |
| (WebCore::Page::shouldFireEvents const): |
| (WebCore::Page::setShouldFireEvents): |
| (WebCore::Page::shouldFireResizeEvents const): Deleted. |
| (WebCore::Page::setShouldFireResizeEvents): Deleted. |
| |
| 2020-04-24 Saam Barati <sbarati@apple.com> |
| |
| Return BigInt32 whenever we can |
| https://bugs.webkit.org/show_bug.cgi?id=210922 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneDeserializer::readBigInt): |
| |
| 2020-04-24 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| [WTF] allThreads registration is racy with allThreads unregistration |
| https://bugs.webkit.org/show_bug.cgi?id=210995 |
| <rdar://problem/61609690> |
| |
| Reviewed by Keith Miller. |
| |
| * page/cocoa/ResourceUsageThreadCocoa.mm: |
| (WebCore::ResourceUsageThread::platformCollectCPUData): |
| |
| 2020-04-24 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Make some more adjustments to TextManipulationController's paragraph boundary heuristic |
| https://bugs.webkit.org/show_bug.cgi?id=210993 |
| <rdar://problem/61571299> |
| |
| Reviewed by Tim Horton. |
| |
| Adjust the heuristic added in r260583 to account for a few more common scenarios where we currently consider |
| text as a part of the same paragraph. This can lead to many issues during text manipulation where text is moved |
| between these elements, when it should not be. |
| |
| The new scenarios include block and inline-block links, as well as button elements. |
| |
| Test: TextManipulation.StartTextManipulationTreatsInlineBlockLinksAndButtonsAsParagraphs |
| |
| * editing/TextManipulationController.cpp: |
| (WebCore::TextManipulationController::observeParagraphs): |
| |
| Additionally rename "paragraph boundary element" to "item boundary element", to avoid colliding with the |
| existing notion of paragraph boundaries in editing code. |
| |
| 2020-04-24 Christopher Reid <chris.reid@sony.com> |
| |
| [Win] Bundle Inspector Resources in Release builds |
| https://bugs.webkit.org/show_bug.cgi?id=210942 |
| |
| Reviewed by Fujii Hironori. |
| |
| * CMakeLists.txt: |
| |
| 2020-04-24 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Ensure calling Web Animations APIs override future CSS Animations style properties |
| https://bugs.webkit.org/show_bug.cgi?id=210988 |
| |
| Reviewed by Dean Jackson. |
| |
| The CSS Animations Level 2 spec specifies how the Web Animations APIs and the CSS Animations style |
| properties should interact in https://drafts.csswg.org/css-animations-2/#animations. This patch |
| implements the specified behavior and this is reflected by progress on the relevant WPT tests. |
| |
| The gist of this change is that once a Web Animations API is called on an animation created using |
| CSS Animations, any changes made to related CSS Animations style properties on the target element |
| will be ignored so that the overrides applied via the Web Animations API remain in effect. |
| |
| For instance, calling pause() or play() in a way that changes the playback state of the CSS Animation |
| will mean that future changes to the CSS animation-play-state property are ignored. |
| |
| To do this we make more IDL properties and methods use dedicated methods to distinguish between the |
| bindings entry-point and internal usage of the same methods to integrate the behavior only when the |
| API itself is being used. |
| |
| * animation/AnimationEffect.cpp: |
| (WebCore::AnimationEffect::getBindingsTiming const): Ensure we flush styles when animation.effect.getTiming() |
| is called. |
| (WebCore::AnimationEffect::getBindingsComputedTiming const): Ensure we flush styles when |
| animation.effect.getComputedTiming() is called. |
| (WebCore::AnimationEffect::bindingsUpdateTiming): Notify the associated CSSAnimation object, if any, when |
| animation.effect.updateTiming() is called such that the CSSAnimation may apply the relevant overrides. |
| * animation/AnimationEffect.h: |
| * animation/AnimationEffect.idl: |
| * animation/CSSAnimation.cpp: |
| (WebCore::CSSAnimation::syncPropertiesWithBackingAnimation): Only apply new values of CSS Animations style |
| properties if there are no overrides for them resulting from calling related Web Animations APIs. |
| (WebCore::CSSAnimation::bindingsPlay): Mark animation-play-state as overridden if play() is called. |
| (WebCore::CSSAnimation::bindingsPause): Mark animation-play-state as overridden if pause() is called. |
| (WebCore::CSSAnimation::setBindingsEffect): Mark all animation style properties, except for animation-name |
| and animation-play-state as overridden if animation.effect is set. |
| (WebCore::CSSAnimation::setBindingsStartTime): Mark animation-play-state as overridden if animation.startTime |
| is set. |
| (WebCore::CSSAnimation::bindingsReverse): Mark animation-play-state as overridden if reverse() is called. |
| (WebCore::CSSAnimation::effectTimingWasUpdatedUsingBindings): Mark each CSS property associated with a key |
| found on the timing object passed to animation.effect.updateTiming() as overridden. |
| (WebCore::CSSAnimation::effectKeyframesWereSetUsingBindings): Mark animation-timing-function as overridden |
| if animation.effect.setKeyframes() is called. |
| * animation/CSSAnimation.h: |
| * animation/DeclarativeAnimation.cpp: |
| (WebCore::DeclarativeAnimation::bindingsStartTime const): |
| (WebCore::DeclarativeAnimation::setBindingsStartTime): |
| (WebCore::DeclarativeAnimation::startTime const): Deleted. |
| (WebCore::DeclarativeAnimation::setStartTime): Deleted. |
| * animation/DeclarativeAnimation.h: |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::getBindingsKeyframes): Ensure we flush styles when animation.effect.getKeyframes() |
| is called. |
| (WebCore::KeyframeEffect::getKeyframes): Only use the CSS-originated animation path if we don't have JS-originated |
| keyframes. |
| (WebCore::KeyframeEffect::setBindingsKeyframes): Notify the associated CSSAnimation object, if any, when |
| animation.effect.setKeyframes() is called such that the CSSAnimation may apply the relevant overrides. |
| (WebCore::KeyframeEffect::processKeyframes): Correctly return early if part of the processing yields an exception. |
| * animation/KeyframeEffect.h: |
| * animation/KeyframeEffect.idl: |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::setBindingsEffect): |
| (WebCore::WebAnimation::setBindingsStartTime): |
| (WebCore::WebAnimation::bindingsReverse): |
| * animation/WebAnimation.h: |
| (WebCore::WebAnimation::bindingsEffect const): |
| (WebCore::WebAnimation::bindingsStartTime const): |
| * animation/WebAnimation.idl: |
| |
| 2020-04-24 Chris Dumez <cdumez@apple.com> |
| |
| ASSERTION FAILED: m_wrapper under HTMLMediaElement::setIsPlayingToWirelessTarget |
| https://bugs.webkit.org/show_bug.cgi?id=210983 |
| <rdar://problem/61611994> |
| |
| Reviewed by Eric Carlson. |
| |
| The issue was that we were trying to fire a JS event as a result of ActiveDOMObject::stop() |
| getting called, which is not allowed. To address the issue, we avoid firing the event if |
| the context is already stopped. |
| |
| No new tests, already covered by: |
| media/modern-media-controls/placard-support/placard-support-airplay-fullscreen.html |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::setIsPlayingToWirelessTarget): |
| |
| 2020-04-24 Tim Horton <timothy_horton@apple.com> |
| |
| iPad: "Pocket City" interaction does not work with trackpad |
| https://bugs.webkit.org/show_bug.cgi?id=210985 |
| <rdar://problem/62273077> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * platform/RuntimeApplicationChecks.h: |
| * platform/cocoa/RuntimeApplicationChecksCocoa.mm: |
| (WebCore::IOSApplication::isPocketCity): |
| |
| 2020-04-24 Tomoki Imai <Tomoki.Imai@sony.com> |
| |
| [OpenSSL] Implement WebCrypto APIs for HMAC |
| https://bugs.webkit.org/show_bug.cgi?id=210902 |
| |
| Reviewed by Don Olmstead. |
| |
| Support WebCrypto HMAC sign/verify with OpenSSL. |
| The design and some functions are inherited from the other ports. |
| |
| * crypto/openssl/CryptoAlgorithmHMACOpenSSL.cpp: |
| (WebCore::HMACAlgorithm): Added. Helper function to map CryptoAlgorithmIdentifier to OpenSSL EVP_MD type. |
| (WebCore::calculateSignature): Added. Helper function to calculate the signature for sign/verify. |
| (WebCore::CryptoAlgorithmHMAC::platformSign): Implemented, mostly same as the other ports. |
| (WebCore::CryptoAlgorithmHMAC::platformVerify): Implemented, mostly same as the other ports. |
| * crypto/openssl/CryptoAlgorithmRegistryOpenSSL.cpp: |
| (WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms): Added CryptoAlgorithmHMAC support. |
| * crypto/openssl/OpenSSLCryptoUniquePtr.h: Added specialized unique_ptrs for EVP_MD_CTX and EVP_PKEY. |
| (WebCore::OpenSSLCryptoPtrDeleter<EVP_MD_CTX>::operator() const): |
| (WebCore::OpenSSLCryptoPtrDeleter<EVP_PKEY>::operator() const): |
| |
| 2020-04-24 Brian Burg <bburg@apple.com> |
| |
| Web Automation: timeout underneath Automation.evaluateJavaScriptFunction in Selenium test frame_switching_tests.py::testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs[Safari] |
| https://bugs.webkit.org/show_bug.cgi?id=210162 |
| <rdar://problem/60561009> |
| |
| Reviewed by Devin Rousso. |
| |
| * page/DOMWindow.h: Expose DOMWindow::{register, unregister}Observer. |
| |
| 2020-04-24 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Take first in-flow table-row baseline into account when computing cell baseline |
| https://bugs.webkit.org/show_bug.cgi?id=210972 |
| |
| Reviewed by Antti Koivisto. |
| |
| Check if the cell has a nested table and use its first row as the baseline for the cell (unless there's an IFC before). |
| |
| Test: fast/layoutformattingcontext/table-basic-row-baseline-with-nested-table.html |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutCell): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| * layout/tableformatting/TableFormattingContext.h: |
| * layout/tableformatting/TableFormattingContextGeometry.cpp: |
| (WebCore::Layout::TableFormattingContext::Geometry::usedBaselineForCell): |
| * layout/tableformatting/TableGrid.h: |
| (WebCore::Layout::TableGrid::Row::setBaselineOffset): |
| (WebCore::Layout::TableGrid::Row::baselineOffset const): |
| |
| 2020-04-24 Antti Koivisto <antti@apple.com> |
| |
| Nullptr crash in objc_msgSend under WebCore::genericFamily |
| https://bugs.webkit.org/show_bug.cgi?id=210911 |
| <rdar://problem/61510208> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Speculative fix. |
| |
| * platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp: |
| (WebCore::genericFamily): |
| |
| Test that CTFontDescriptorCopyAttribute is really returning CFStringRef. |
| Also explicitly return String from lambda to clarify lifetimes. |
| |
| 2020-04-24 Simon Fraser <simon.fraser@apple.com> |
| |
| Move some post-renderingUpdate code into WebCore |
| https://bugs.webkit.org/show_bug.cgi?id=210952 |
| |
| Reviewed by Antti Koivisto. |
| |
| Factor some code called by the various DrawingArea subclasses into Page::finalizeRenderingUpdate(), |
| with some flags to control behavior that differs between drawing areas. |
| |
| ScrollingCoordinator::commitTreeStateIfNeeded() is a no-op for RemoteScrollingCoordinator so |
| it's fine to always call it. |
| |
| * page/Page.cpp: |
| (WebCore::Page::passiveTouchEventListenerRectsForTesting): |
| (WebCore::Page::finalizeRenderingUpdate): |
| * page/Page.h: |
| |
| 2020-04-24 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Add missing HTMLNames:: namespace prefix to usage of liTag object |
| |
| Unreviewed build fix. |
| |
| No new tests needed. |
| |
| * editing/TextManipulationController.cpp: |
| (WebCore::TextManipulationController::observeParagraphs): |
| |
| 2020-04-23 Rob Buis <rbuis@igalia.com> |
| |
| Make CachedResourceLoader more conforming to Fetch specification |
| https://bugs.webkit.org/show_bug.cgi?id=210925 |
| |
| Reviewed by Alex Christensen. |
| |
| Make CachedResourceLoader more conforming to Fetch specification |
| by fixing links, re-ordering steps to match main fetch [1] and do |
| early exit code paths earlier. |
| |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::requestImage): adjust to parameter change. |
| (WebCore::CachedResourceLoader::canRequest): replace CachedResourceRequest param with ResourceLoaderOptions. |
| (WebCore::CachedResourceLoader::prepareFetch): fix comment. |
| (WebCore::CachedResourceLoader::requestResource): re-order. |
| * loader/cache/CachedResourceLoader.h: |
| |
| 2020-04-23 Simon Fraser <simon.fraser@apple.com> |
| |
| Move the storage of DisplayID from Chrome to Page |
| https://bugs.webkit.org/show_bug.cgi?id=210943 |
| |
| Reviewed by Tim Horton. |
| |
| The less Chrome knows about Frames and Documents the better. At some point Page is going |
| to talk to ScrollingCoordinator in this callback too. |
| |
| * page/Chrome.cpp: |
| (WebCore::Chrome::displayID const): |
| (WebCore::Chrome::windowScreenDidChange): |
| * page/Chrome.h: |
| * page/Page.cpp: |
| (WebCore::Page::windowScreenDidChange): |
| * page/Page.h: |
| (WebCore::Page::displayID const): |
| |
| 2020-04-23 Simon Fraser <simon.fraser@apple.com> |
| |
| EventHandler::selectCursor() has broken resize over coordinate conversion code |
| https://bugs.webkit.org/show_bug.cgi?id=210778 |
| |
| Reviewed by Zalan Bujtas. |
| |
| EventHandler::selectCursor() appeared to make a local hit-test point from window |
| to content coordinates, which made no sense, but this happened to work because |
| RenderLayer::hitTestLayer() set the HitTestResult localPoint to a global point |
| if you hit the resizer. |
| |
| Clean up this mess by having all resizer-related geometry queries be in local coordinates. |
| |
| As a bonus, actually set the cursor to a resize cursor when over the resizer. |
| |
| Test: fast/events/cursors/mouse-cursor-over-resizer.html |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::selectCursor): |
| (WebCore::EventHandler::handleMousePressEvent): |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::resize): |
| (WebCore::RenderLayer::offsetFromResizeCorner const): |
| (WebCore::RenderLayer::isPointInResizeControl const): |
| (WebCore::RenderLayer::hitTestLayer): |
| (WebCore::RenderLayer::hitTestResizerInFragments const): |
| * rendering/RenderLayer.h: |
| |
| 2020-04-23 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Text manipulation does not account for text in fully clipped containers |
| https://bugs.webkit.org/show_bug.cgi?id=210940 |
| <rdar://problem/61137648> |
| |
| Reviewed by Tim Horton. |
| |
| Allow text manipulation to find both text in `visibility: hidden;` containers, as well as text in fully clipped |
| overflow containers. In both cases, renderers exist for these nodes, but TextIterator ignores them by default. |
| If these containers become visible in the future, we don't want to skip out on performing text manipulation on |
| them. |
| |
| An alternative would be to detect when any element that has not undergone text manipulation has become visible |
| (i.e. no longer clipped by an ancestor), but this is likely more complicated (and possibly less performant) than |
| just eagerly extracting text from hidden containers, once they gain renderers. |
| |
| TextManipulation.StartTextManipulationIncludesFullyClippedText |
| |
| * editing/TextManipulationController.cpp: |
| (WebCore::ParagraphContentIterator::ParagraphContentIterator): |
| (WebCore::TextManipulationController::didCreateRendererForElement): |
| (WebCore::TextManipulationController::scheduleObservationUpdate): |
| (WebCore::TextManipulationController::scheduleObservartionUpdate): Deleted. |
| |
| While I'm here, also rename scheduleObservartionUpdate to scheduleObservationUpdate. |
| |
| * editing/TextManipulationController.h: |
| |
| 2020-04-23 Alex Christensen <achristensen@webkit.org> |
| |
| Allow credentials for same-origin css mask images |
| https://bugs.webkit.org/show_bug.cgi?id=210895 |
| <rdar://problem/60093888> |
| |
| Reviewed by Brent Fulgham. |
| |
| Test: http/tests/security/css-mask-image-credentials.html |
| |
| r230006 went a step too far in restricting what is allowed with css mask images. |
| Basic authentication credentials should be allowed with such requests as they are in Chrome and Firefox. |
| This can be seen by doing run-webkit-httpd then opening http://127.0.0.1:8000/security/css-mask-image-credentials.html |
| In Chrome and Firefox you'll see it forward to a page that has a blue square. |
| In Safari before this change you'll see a yellow square and a basic authentication prompt. |
| In Safari after this change you'll see the same blue square you see in Chrome and Firefox. |
| |
| * style/StylePendingResources.cpp: |
| (WebCore::Style::loadPendingImage): |
| |
| 2020-04-23 Alex Christensen <achristensen@webkit.org> |
| |
| Jesus Calling app needs more WebSQL |
| https://bugs.webkit.org/show_bug.cgi?id=210889 |
| <rdar://problem/61795507> |
| |
| Reviewed by Chris Dumez. |
| |
| Manually verified this fixes the issue in the radar. |
| |
| * bindings/js/JSDOMWindowCustom.cpp: |
| (WebCore::jsDOMWindowInstanceFunctionOpenDatabaseBody): |
| |
| 2020-04-23 Rob Buis <rbuis@igalia.com> |
| |
| Move applyUserAgentIfNeeded calls to a more central place |
| https://bugs.webkit.org/show_bug.cgi?id=209587 |
| |
| Reviewed by Darin Adler. |
| |
| Make main resource loads stop calling applyUserAgentIfNeeded |
| and instead do it in the CachedResourceLoader. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::addExtraFieldsToRequest): |
| (WebCore::FrameLoader::loadResourceSynchronously): |
| * loader/appcache/ApplicationCacheGroup.cpp: |
| (WebCore::ApplicationCacheGroup::createRequest): |
| * loader/cache/CachedResourceLoader.cpp: |
| (WebCore::CachedResourceLoader::updateHTTPRequestHeaders): |
| (WebCore::CachedResourceLoader::requestResource): |
| * loader/cache/CachedResourceLoader.h: |
| * loader/cache/CachedResourceRequest.cpp: |
| (WebCore::CachedResourceRequest::updateReferrerAndOriginHeaders): |
| (WebCore::CachedResourceRequest::updateUserAgentHeader): |
| (WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): Deleted. |
| * loader/cache/CachedResourceRequest.h: |
| |
| 2020-04-23 Kenneth Russell <kbr@chromium.org> |
| |
| [WebGL2] Update texture packing code for software uploads from DOM |
| https://bugs.webkit.org/show_bug.cgi?id=209515 |
| |
| Reviewed by Dean Jackson. |
| |
| Update the bottommost DOM-to-texture packing code in |
| GraphicsContextGLOpenGL and FormatConverter to full WebGL 2.0 |
| capability. Reorganize some code to make side-by-side comparisons |
| easier with other WebGL 2.0 implementations. |
| |
| Added NEEDS_PORT comments to areas in the calling code which need |
| particular attention in subsequent patches. Roughly two more |
| patches will be needed on top of this one in order to fully pass |
| the associated conformance tests. |
| |
| Fix a bug in the non-ANGLE ENABLE(WEBGL2) code path which |
| accidentally disabled WebGL entirely in this configuration. |
| |
| Covered by the WebGL 2.0 conformance tests. |
| |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::create): |
| (WebCore::WebGLRenderingContextBase::copyTexSubImage2D): |
| (WebCore::WebGLRenderingContextBase::readPixels): |
| (WebCore::WebGLRenderingContextBase::texImageSource2D): |
| (WebCore::WebGLRenderingContextBase::texImage2DImpl): |
| (WebCore::WebGLRenderingContextBase::texImage2D): |
| (WebCore::WebGLRenderingContextBase::texSubImage2DImpl): |
| (WebCore::WebGLRenderingContextBase::texSubImage2D): |
| (WebCore::WebGLRenderingContextBase::validateTexFuncData): |
| (WebCore::WebGLRenderingContextBase::getPackPixelStoreParams const): |
| (WebCore::WebGLRenderingContextBase::getUnpackPixelStoreParams const): |
| * html/canvas/WebGLRenderingContextBase.h: |
| * platform/graphics/FormatConverter.cpp: |
| (WebCore::convertFloatToHalfFloat): |
| (WebCore::float>): |
| (WebCore::uint8_t>): |
| (WebCore::uint16_t>): |
| (WebCore::int8_t>): |
| (WebCore::int16_t>): |
| (WebCore::uint32_t>): |
| (WebCore::int32_t>): |
| (WebCore::FormatConverter::convert): |
| * platform/graphics/FormatConverter.h: |
| (WebCore::FormatConverter::FormatConverter): |
| * platform/graphics/GraphicsContextGL.h: |
| (WebCore::GraphicsContextGL::hasAlpha): |
| (WebCore::GraphicsContextGL::hasColor): |
| * platform/graphics/opengl/GraphicsContextGLOpenGL.cpp: |
| (WebCore::GraphicsContextGLOpenGL::texImage2DResourceSafe): |
| (WebCore::GraphicsContextGLOpenGL::computeFormatAndTypeParameters): |
| (WebCore::GraphicsContextGLOpenGL::computeImageSizeInBytes): |
| (WebCore::GraphicsContextGLOpenGL::PixelStoreParams::PixelStoreParams): |
| (WebCore::GraphicsContextGLOpenGL::packImageData): |
| (WebCore::GraphicsContextGLOpenGL::extractImageData): |
| (WebCore::GraphicsContextGLOpenGL::extractTextureData): |
| (WebCore::TexelBytesForFormat): |
| (WebCore::GraphicsContextGLOpenGL::packPixels): |
| * platform/graphics/opengl/GraphicsContextGLOpenGL.h: |
| |
| 2020-04-23 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Add a heuristic for text manipulation to treat some list items as paragraph boundaries |
| https://bugs.webkit.org/show_bug.cgi?id=210915 |
| <rdar://problem/61907080> |
| |
| Reviewed by Megan Gardner. |
| |
| Adds a mechanism to allow text manipulation to emit an item containing the current list of text manipulation |
| tokens early, in the case where the paragraph content iterator crosses the boundary of an element that encloses |
| a paragraph. Currently, the only enclosing paragraph element will be list items that have `display: block;`, |
| which we can take as a hint that the text in these list items should be vended as separate items, rather than as |
| tokens in a single item. |
| |
| This may be extended in the future to other situations by adjusting logic in `isEnclosingParagraphElement`. |
| |
| Test: TextManipulation.StartTextManipulationBreaksParagraphInBetweenListItems |
| |
| * editing/TextManipulationController.cpp: |
| (WebCore::TextManipulationController::observeParagraphs): |
| |
| 2020-04-23 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Add support for basic baseline align inside a table row |
| https://bugs.webkit.org/show_bug.cgi?id=210918 |
| |
| Reviewed by Antti Koivisto. |
| |
| Test: fast/layoutformattingcontext/table-basic-row-baseline-align.html |
| |
| The minimum height of a row is defined as the height of an hypothetical linebox containing |
| the cells originating in the row. In this hypothetical linebox, we use baseline alignment to |
| align the cells vertically. |
| Use these vertically aligned cells to compute the final row height. |
| |
| * layout/displaytree/DisplayBox.h: |
| (WebCore::Display::Box::verticalMarginBorderAndPadding const): |
| (WebCore::Display::Box::setVerticalPadding): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::TableFormattingContext::layoutCell): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| * layout/tableformatting/TableFormattingContext.h: |
| |
| 2020-04-23 Sihui Liu <sihui_liu@apple.com> |
| |
| TextManipulationController should set range of paragraph using token's positions |
| https://bugs.webkit.org/show_bug.cgi?id=210866 |
| <rdar://problem/60646283> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Set the range of paragraph using positions of first token and last token in the paragraph because: |
| 1. Accurate range makes token matching in TextManipulationController::replace() easier, as TextIterator could |
| visit different positions with different ranges or different conditions. For example, in our previous |
| implementation, start of a paragraph can be set as the first visible position of document, while position of |
| first token is after that. Then in replace(), TextManipulationController may extract a word before the position |
| of first token and return error. See added test TextManipulation.CompleteTextManipulationCorrectParagraphRange. |
| 2. TextManipulationController can handle fewer content and this is less error-prone. For example, svg elements |
| before/after the paragraph text will not be identified as tokens [] in a paragraph now. See updated API tests |
| for example. |
| |
| New test: TextManipulation.CompleteTextManipulationCorrectParagraphRange |
| |
| * editing/TextManipulationController.cpp: |
| (WebCore::ParagraphContentIterator::moveCurrentNodeForward): m_currentNodeForFindingInvisibleContent should not |
| be advanced if it is already at the end. |
| (WebCore::containsOnlyHTMLSpaces): |
| (WebCore::TextManipulationController::observeParagraphs):Set the paragraph start as the position of the first |
| token and end as the position of last token. If the paragraph is split with <br>, the end will be extended to |
| position of <br> so that we can add this node back later; otherwise, <br> can be removed after original |
| text of paragraph is removed in TextManipulationController::replace(). Also, stop identifying spaces as tokens |
| because non-text Node can emit spaces. |
| (WebCore::TextManipulationController::replace): Only identify tokens from content with meaningful text. |
| |
| 2020-04-23 Chris Dumez <cdumez@apple.com> |
| |
| [ Mac wk2 ] imported/w3c/web-platform-tests/notifications/event-onclose.html is flaky failing. |
| https://bugs.webkit.org/show_bug.cgi?id=209483 |
| <rdar://problem/60830377> |
| |
| Reviewed by Geoff Garen. |
| |
| Align garbage collection of Notification JS wrapper with the specification: |
| - https://notifications.spec.whatwg.org/#garbage-collection [1] |
| |
| In particular, the following changes were made: |
| 1. Instead of using the legacy setPendingActivity() / unsetPendingActivity(), override |
| ActiveDOMObject::virtualHasPendingActivity() to implement the behavior documented |
| in the specification. |
| 2. Keep the wrapper alive as long as the notification is showing and as long as there |
| are relevant event listeners, as per [1]. Previously, we failed to check for event |
| listeners, which was suboptimal. |
| 3. Update the constructor to queue a task on the event loop in order to show the |
| notification asynchronously, instead of relying on a SuspendableTimer for this |
| purpose. Previously, the JS wrapper could get collected between construction and |
| the notification getting shown, which was leading to the test flakiness. |
| |
| No new tests, unskipped existing test. |
| |
| * Modules/notifications/Notification.cpp: |
| (WebCore::Notification::Notification): |
| (WebCore::Notification::show): |
| (WebCore::Notification::finalize): |
| (WebCore::Notification::dispatchShowEvent): |
| (WebCore::Notification::dispatchClickEvent): |
| (WebCore::Notification::dispatchCloseEvent): |
| (WebCore::Notification::dispatchErrorEvent): |
| (WebCore::Notification::eventListenersDidChange): |
| (WebCore::Notification::virtualHasPendingActivity const): |
| * Modules/notifications/Notification.h: |
| |
| 2020-04-23 Andres Gonzalez <andresg_22@apple.com> |
| |
| Correction for patch 397001. |
| https://bugs.webkit.org/show_bug.cgi?id=210914 |
| |
| Reviewed by Chris Fleizach. |
| |
| - No need to check for isEmpty when retrieving the primary screen size, |
| as pointed out by Darin Adler in bug 210760, patch 397001. |
| - Added some helpful AXLOGing. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper primaryScreenHeight]): |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): |
| (-[WebAccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]): |
| |
| 2020-04-23 Don Olmstead <don.olmstead@sony.com> |
| |
| [CMake] Add WebKit::WebCoreTestSupport target |
| https://bugs.webkit.org/show_bug.cgi?id=210867 |
| |
| Unreviewed build fix. |
| |
| Make the dependencies explicit. |
| |
| * CMakeLists.txt: |
| |
| 2020-04-22 Simon Fraser <simon.fraser@apple.com> |
| |
| In the scrolling tree, separate wheel event handling from layer updating |
| https://bugs.webkit.org/show_bug.cgi?id=210899 |
| |
| Reviewed by Antti Koivisto. |
| |
| Working towards webkit.org/b/210884, it needs to be possible to have the scrolling |
| tree handle a wheelEvent and update its internal state about scroll positions, but not |
| immediately map those scroll positions onto CALayers. |
| |
| To achieve this, have ScrollingTreeScrollingNode::currentScrollPositionChanged() |
| not call applyLayerPositions(), or notifyRelatedNodesAfterScrollPositionChange() which |
| just applies layer positions on related nodes. |
| |
| Instead, at the end of wheel event handling, do a full scrolling tree traversal and update |
| all the layer positions there. |
| |
| Delegated scrolling (iOS) still needs notifyRelatedNodesAfterScrollPositionChange() so it |
| can't be removed. |
| |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::handleWheelEvent): |
| (WebCore::ScrollingTree::applyLayerPositions): |
| (WebCore::ScrollingTree::applyLayerPositionsInternal): |
| * page/scrolling/ScrollingTree.h: |
| * page/scrolling/ScrollingTreeScrollingNode.cpp: |
| (WebCore::ScrollingTreeScrollingNode::currentScrollPositionChanged): |
| |
| 2020-04-23 Charlie Turner <cturner@igalia.com> |
| |
| [EME][CDMProxy] Sort key status array lexicographically by key IDs |
| https://bugs.webkit.org/show_bug.cgi?id=210659 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| This is required by section 6.1 of |
| https://www.w3.org/TR/encrypted-media/. |
| |
| Test: encrypted-media/clearkey-keystatuses.https.html |
| |
| * platform/encryptedmedia/CDMProxy.cpp: |
| (WebCore::KeyStore::add): We could use a set here and keep it |
| sorted by design, but this is more complexity than needed. The |
| store has for practical purposes an upper limit of 2 |
| items. Sorting such a vector lowers to either a noop or a swap. So |
| the simple approach here wins over using some kind of self-sorting |
| set structure. I also considered only sorting on-demand, since it |
| only has to appear sorted from the perspective of JS, we could |
| sort the array in convertToJSKeyStatusVector. However, that is |
| semantically a const method, so sorting here felt too surprising. |
| * platform/encryptedmedia/CDMProxy.h: |
| (WebCore::Key::operator<): Add a lexicographic comparator to |
| Key. |
| |
| 2020-04-23 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] excessive wakeups/polling due to gdk_frame_clock_begin_updating |
| https://bugs.webkit.org/show_bug.cgi?id=210561 |
| |
| Reviewed by Žan Doberšek. |
| |
| The problem is that we are destroying the display refresh monitor from the frame clock update callback, and GTK |
| schedules another update from the callback itself in some cases, which ends up happening forever. We were |
| assuming that destroying the window of immediately destroy the frame clock as well, but the paint source idle |
| keeps a reference of the frame clock. At the end of the source idle callback the source is scheduled again, |
| taking a new reference. We need to call gdk_frame_clock_end_updating() to ensure the idle is not scheduled |
| again. |
| |
| * platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp: |
| (WebCore::DisplayRefreshMonitorGtk::~DisplayRefreshMonitorGtk): Disconnect the update signal and call |
| gdk_frame_clock_end_updating(). |
| (WebCore::DisplayRefreshMonitorGtk::requestRefreshCallback): Toplevel window should always have a frame clock, |
| so remove the early return and add an assert instead. |
| |
| 2020-04-23 Youenn Fablet <youenn@apple.com> |
| |
| getDisplayMedia is not respecting aspect ratio with max constraints |
| https://bugs.webkit.org/show_bug.cgi?id=210858 |
| |
| Reviewed by Eric Carlson. |
| |
| Add computation of exact frame size to respect aspect ratio in DisplayCaptureSourceCocoa::updateFrameSize. |
| Refactor code to have one source class DisplayCaptureSourceCocoa and specific capturer for screen and window. |
| This simplifies code and allows reusing DisplayCaptureSourceCocoa with a mock capturer. |
| Update mock code to use DisplayCaptureSourceCocoa. |
| |
| Tests: fast/mediastream/getDisplayMedia-max-constraints.html |
| fast/mediastream/getDisplayMedia-max-constraints1.html |
| fast/mediastream/getDisplayMedia-max-constraints2.html |
| fast/mediastream/getDisplayMedia-max-constraints3.html |
| |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp: |
| (WebCore::DisplayCaptureManagerCocoa::updateDisplayCaptureDevices): |
| (WebCore::DisplayCaptureManagerCocoa::updateWindowCaptureDevices): |
| (WebCore::DisplayCaptureManagerCocoa::screenCaptureDeviceWithPersistentID): |
| (WebCore::DisplayCaptureManagerCocoa::windowCaptureDeviceWithPersistentID): |
| * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp: |
| (WebCore::DisplayCaptureSourceCocoa::create): |
| (WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): |
| (WebCore::DisplayCaptureSourceCocoa::~DisplayCaptureSourceCocoa): |
| (WebCore::DisplayCaptureSourceCocoa::capabilities): |
| (WebCore::DisplayCaptureSourceCocoa::settings): |
| (WebCore::DisplayCaptureSourceCocoa::startProducingData): |
| (WebCore::DisplayCaptureSourceCocoa::stopProducingData): |
| (WebCore::DisplayCaptureSourceCocoa::updateFrameSize): |
| (WebCore::DisplayCaptureSourceCocoa::emitFrame): |
| (WebCore::DisplayCaptureSourceCocoa::Capturer::setLogger): |
| (WebCore::DisplayCaptureSourceCocoa::Capturer::logChannel const): |
| * platform/mediastream/mac/DisplayCaptureSourceCocoa.h: |
| * platform/mediastream/mac/MockRealtimeVideoSourceMac.h: |
| * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm: |
| (WebCore::MockRealtimeVideoSourceMac::createForMockDisplayCapturer): |
| * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp: |
| * platform/mediastream/mac/ScreenDisplayCapturerMac.h: Added. |
| * platform/mediastream/mac/ScreenDisplayCapturerMac.mm: Added. |
| (WebCore::ScreenDisplayCapturerMac::create): |
| (WebCore::ScreenDisplayCapturerMac::ScreenDisplayCapturerMac): |
| (WebCore::ScreenDisplayCapturerMac::~ScreenDisplayCapturerMac): |
| (WebCore::ScreenDisplayCapturerMac::createDisplayStream): |
| (WebCore::ScreenDisplayCapturerMac::start): |
| (WebCore::ScreenDisplayCapturerMac::stop): |
| (WebCore::ScreenDisplayCapturerMac::generateFrame): |
| (WebCore::ScreenDisplayCapturerMac::startDisplayStream): |
| (WebCore::ScreenDisplayCapturerMac::commitConfiguration): |
| (WebCore::ScreenDisplayCapturerMac::displayWasReconfigured): |
| (WebCore::ScreenDisplayCapturerMac::displayReconfigurationCallBack): |
| (WebCore::ScreenDisplayCapturerMac::newFrame): |
| (WebCore::ScreenDisplayCapturerMac::screenCaptureDeviceWithPersistentID): |
| (WebCore::ScreenDisplayCapturerMac::screenCaptureDevices): |
| * platform/mediastream/mac/WindowDisplayCapturerMac.h: Added. |
| * platform/mediastream/mac/WindowDisplayCapturerMac.mm: ddedAdded. |
| (WebCore::WindowDisplayCapturerMac::create): |
| (WebCore::WindowDisplayCapturerMac::WindowDisplayCapturerMac): |
| (WebCore::WindowDisplayCapturerMac::windowImage): |
| (WebCore::WindowDisplayCapturerMac::generateFrame): |
| (WebCore::WindowDisplayCapturerMac::windowCaptureDeviceWithPersistentID): |
| (WebCore::WindowDisplayCapturerMac::windowCaptureDevices): |
| * platform/mock/MockRealtimeMediaSourceCenter.cpp: |
| (WebCore::MockDisplayCapturer::MockDisplayCapturer): |
| (WebCore::MockDisplayCapturer::start): |
| (WebCore::MockDisplayCapturer::generateFrame): |
| * platform/mock/MockRealtimeVideoSource.h: |
| (isType): |
| |
| 2020-04-22 Simon Fraser <simon.fraser@apple.com> |
| |
| Make it possible to eagerly apply scrolling tree state from the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=210883 |
| |
| Reviewed by Tim Horton. |
| |
| Work towards fixing webkit.org/b/210884: at the beginning of Page::updateRendering(), |
| we are going to need to pull the current state of the scrolling tree back to the |
| main thread, so that JS-exposed scroll offsets match scrolling tree state. |
| |
| To this end, expose a scrolling tree traversal function from ScrollingTree, which |
| takes the lock and then calls a visitor function for each node. For scrolling nodes, |
| the visitor gets the scroll position and optional layout viewport origin. These |
| match the data passed back currently via AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll(). |
| |
| The new code is not called yet. |
| |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::synchronizeStateFromScrollingTree): |
| * page/scrolling/AsyncScrollingCoordinator.h: |
| * page/scrolling/ScrollingCoordinator.h: |
| (WebCore::ScrollingCoordinator::synchronizeStateFromScrollingTree): |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::traverseScrollingTree): |
| (WebCore::ScrollingTree::traverseScrollingTreeRecursive): |
| * page/scrolling/ScrollingTree.h: |
| * page/scrolling/ScrollingTreeScrollingNode.cpp: |
| (WebCore::ScrollingTreeScrollingNode::currentScrollPositionChanged): applyLayerPositions() calls these two |
| functions, so just call it instead. |
| |
| 2020-04-22 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r260535. |
| https://bugs.webkit.org/show_bug.cgi?id=210897 |
| |
| Causes crashes in WK1 (Requested by smfr on #webkit). |
| |
| Reverted changeset: |
| |
| "[ Mac wk2 ] imported/w3c/web-platform-tests/notifications |
| /event-onclose.html is flaky failing." |
| https://bugs.webkit.org/show_bug.cgi?id=209483 |
| https://trac.webkit.org/changeset/260535 |
| |
| 2020-04-22 Darin Adler <darin@apple.com> |
| |
| [Cocoa] Build with UChar as char16_t even in builds that use Apple's internal SDK |
| https://bugs.webkit.org/show_bug.cgi?id=210845 |
| |
| Reviewed by Anders Carlsson. |
| |
| * Configurations/WebCore.xcconfig: Move ICU-configuring macros to Platform.h. |
| |
| * Modules/websockets/WebSocket.cpp: |
| (WebCore::WebSocket::connect): Get rid of an obsolete cast to unsigned to work |
| around uint16_t not being treated as a number by makeString. |
| |
| * rendering/svg/SVGTextLayoutEngineBaseline.cpp: |
| (WebCore::SVGTextLayoutEngineBaseline::calculateGlyphOrientationAngle const): |
| Remove deprecated U_EA_COUNT. |
| |
| 2020-04-22 Andres Gonzalez <andresg_22@apple.com> |
| |
| Add logging to core accessibility. |
| https://bugs.webkit.org/show_bug.cgi?id=210564 |
| <rdar://problem/61863477> |
| |
| Reviewed by Simon Fraser and Chris Fleizach. |
| |
| - Use LOG and LOG_WITH_STREAM macros instead of WTF::Logger directly. |
| - Added logging of AXCoreObjects. |
| |
| * accessibility/AXLogger.cpp: |
| (WebCore::AXLogger::AXLogger): |
| (WebCore::AXLogger::~AXLogger): |
| (WebCore::AXLogger::log): |
| (WebCore::operator<<): |
| * accessibility/AXLogger.h: |
| * accessibility/AccessibilityObjectInterface.h: |
| |
| 2020-04-22 Daniel Bates <dabates@apple.com> |
| |
| Support toggling debug overlay for touch action region and editable element region independent from non-fast scrollable region |
| https://bugs.webkit.org/show_bug.cgi?id=210774 |
| |
| Reviewed by Dean Jackson. |
| |
| Break out the touch action region and editable element region debug overlays into their own |
| flags that can be passed to Settings::setVisibleDebugOverlayRegions() to toggle these overlays, |
| respectively. Currently both of these overlays piggyback on whether the engine will paint the |
| non-fast scrollable region. |
| |
| * page/SettingsBase.h: Add two more enumerators. |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::invalidateEventRegion const): Update the code to be more precise now that |
| we can target the update paint overlay hack to when we are painting touch-action or editable |
| element regions. |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::paintDebugOverlays): Condition the painting of touch action region |
| on one enumerator and the painting of editable element region on another. |
| (WebCore::RenderLayerBacking::paintContents): Update the code to be more precise. |
| |
| 2020-04-22 Chris Dumez <cdumez@apple.com> |
| |
| [ Mac wk2 ] imported/w3c/web-platform-tests/notifications/event-onclose.html is flaky failing. |
| https://bugs.webkit.org/show_bug.cgi?id=209483 |
| <rdar://problem/60830377> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Align garbage collection of Notification JS wrapper with the specification: |
| - https://notifications.spec.whatwg.org/#garbage-collection [1] |
| |
| In particular, the following changes were made: |
| 1. Instead of using the legacy setPendingActivity() / unsetPendingActivity(), override |
| ActiveDOMObject::virtualHasPendingActivity() to implement the behavior documented |
| in the specification. |
| 2. Keep the wrapper alive as long as the notification is showing and as long as there |
| are relevant event listeners, as per [1]. Previously, we failed to check for event |
| listeners, which was suboptimal. |
| 3. Update the constructor to queue a task on the event loop in order to show the |
| notification asynchronously, instead of relying on a SuspendableTimer for this |
| purpose. Previously, the JS wrapper could get collected between construction and |
| the notification getting shown, which was leading to the test flakiness. |
| |
| No new tests, unskipped existing test. |
| |
| * Modules/notifications/Notification.cpp: |
| (WebCore::Notification::Notification): |
| (WebCore::Notification::show): |
| (WebCore::Notification::finalize): |
| (WebCore::Notification::dispatchShowEvent): |
| (WebCore::Notification::dispatchClickEvent): |
| (WebCore::Notification::dispatchCloseEvent): |
| (WebCore::Notification::dispatchErrorEvent): |
| (WebCore::Notification::eventListenersDidChange): |
| (WebCore::Notification::virtualHasPendingActivity const): |
| * Modules/notifications/Notification.h: |
| |
| 2020-04-22 Don Olmstead <don.olmstead@sony.com> |
| |
| [CMake] Add WebKit::WebCoreTestSupport target |
| https://bugs.webkit.org/show_bug.cgi?id=210867 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Add the WebKit::WebCoreTestSupport target. Modify WebCoreTestSupport to only |
| have a dependency on WebCore if WebCore is built as a shared library. |
| |
| * CMakeLists.txt: |
| |
| 2020-04-22 Eric Carlson <eric.carlson@apple.com> |
| |
| fast/events/event-handler-detached-document-dispatchEvent.html is crashing |
| https://bugs.webkit.org/show_bug.cgi?id=210859 |
| <rdar://problem/62072269> |
| |
| Reviewed by Jer Noble. |
| |
| A media session may not have a Page when it is created, so register with the MediaUsageManager |
| in inActiveDocumentChanged if necessary. |
| |
| No new tests, fixes an existing test. |
| |
| * html/MediaElementSession.cpp: |
| (WebCore::MediaElementSession::MediaElementSession): |
| (WebCore::MediaElementSession::~MediaElementSession): |
| (WebCore::MediaElementSession::addedMediaUsageManagerSessionIfNecessary): |
| (WebCore::MediaElementSession::inActiveDocumentChanged): |
| (WebCore::MediaElementSession::updateMediaUsageIfChanged): |
| * html/MediaElementSession.h: |
| |
| 2020-04-22 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION (r249160): Deleting newline after pasting text ending in a newline results in a discontinuity |
| https://bugs.webkit.org/show_bug.cgi?id=210677 |
| <rdar://problem/61954169> |
| |
| Reviewed by Zalan Bujtas. |
| |
| Test: fast/text/delete-line-break-in-pre.html |
| |
| * rendering/RenderTextLineBoxes.cpp: |
| (WebCore::RenderTextLineBoxes::dirtyRange): |
| |
| r249160 changed InlineTextBox end offset to be consistently first-past-end. |
| The code here that updates lineBreakPos needs to take this into account too. |
| |
| 2020-04-22 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Coordinate "update animations and send events" procedure across multiple timelines |
| https://bugs.webkit.org/show_bug.cgi?id=202109 |
| <rdar://problem/59470821> |
| |
| Reviewed by Dean Jackson. |
| |
| So far, although we did manage multiple animation timelines per document, we mostly operated |
| under the assumption that there really was a single timeline. In this patch we make the |
| "update animations and send events" procedure, which is central to the lifecycle of animations, |
| work with multiple timelines such that a single microtask checkpoint is performed even with multiple |
| timelines, whereas we would perform one per timeline before. To do this, we move much of the logic |
| DocumentTimeline::updateAnimationsAndSendEvents() to DocumentTimelinesController where each step is |
| run across each timeline, rather than running all steps for each timeline one after the other, |
| respecting the single microtask checkpoint in the middle of the process. |
| |
| To minimize code churn at this stage, we still keep a fair bit of logic in DocumentTimeline and, |
| while we remove updateAnimationsAndSendEvents(), internalUpdateAnimationsAndSendEvents() and |
| updateCurrentTime(), we expose three methods that allow to run the pre-flight sequence in |
| documentWillUpdateAnimationsAndSendEvents(), collect pending events in |
| prepareForPendingAnimationEventsDispatch() and run the post-flight sequence |
| in documentDidUpdateAnimationsAndSendEvents(). |
| |
| None of the logic changes, this is just moving code around. In the future, more patches will move |
| code from DocumentTimeline up to DocumentTimelinesController such that events are enqueued there, |
| and animation scheduling as well. But this already lets us pass a new test that used to flakily |
| reject promises in the WPT test web-animations/timing-model/timelines/update-and-send-events.html. |
| |
| * animation/AnimationTimeline.h: |
| (WebCore::AnimationTimeline::relevantAnimations const): |
| (WebCore::AnimationTimeline::allAnimations const): |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::documentWillUpdateAnimationsAndSendEvents): |
| (WebCore::DocumentTimeline::documentDidUpdateAnimationsAndSendEvents): |
| (WebCore::DocumentTimeline::prepareForPendingAnimationEventsDispatch): |
| (WebCore::DocumentTimeline::updateCurrentTime): Deleted. |
| (WebCore::DocumentTimeline::updateAnimationsAndSendEvents): Deleted. |
| (WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): Deleted. |
| * animation/DocumentTimeline.h: |
| * animation/DocumentTimelinesController.cpp: |
| (WebCore::DocumentTimelinesController::DocumentTimelinesController): |
| (WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents): |
| * animation/DocumentTimelinesController.h: |
| * animation/WebAnimationTypes.h: |
| * dom/Document.cpp: |
| (WebCore::Document::ensureTimelinesController): |
| |
| 2020-04-22 Eric Carlson <eric.carlson@apple.com> |
| |
| [iOS] Add a quirk to keep gizmodo videos visible when playing in fullscreen. |
| https://bugs.webkit.org/show_bug.cgi?id=210857 |
| <rdar://problem/58875327> |
| |
| Reviewed by Jer Noble. |
| |
| * page/Quirks.cpp: |
| (WebCore::Quirks::needsFullscreenDisplayNoneQuirk const): |
| * page/Quirks.h: |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer): Drive-by fix: always |
| set the layer name to make debugging in release builds easier. |
| |
| * platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm: |
| (WebCore::VideoLayerManagerObjC::setVideoLayer): Ditto. |
| |
| * style/StyleAdjuster.cpp: |
| (WebCore::Style::Adjuster::adjustForSiteSpecificQuirks const): Change `display:none` into |
| `display:block` on div with class "instream-native-video--mobile" when child video |
| element with id "vjs_video_3_html5_api" is in fullscreen. |
| |
| 2020-04-22 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, commit updated xcfilelist files. |
| |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| |
| 2020-04-22 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, reverting r259116. |
| |
| Broke login flow on some apple-internal sites |
| (rdar://problem/61905262) |
| |
| Reverted changeset: |
| |
| "Move applyUserAgentIfNeeded calls to a more central place" |
| https://bugs.webkit.org/show_bug.cgi?id=209587 |
| https://trac.webkit.org/changeset/259116 |
| |
| 2020-04-22 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Introduce TableFormattingContext::computeAndDistributeExtraVerticalSpace |
| https://bugs.webkit.org/show_bug.cgi?id=210830 |
| |
| Reviewed by Antti Koivisto. |
| |
| Add a dedicated function to compute preferred heights for the table rows. |
| This is in preparation for the 2 pass layout required to finalize row height. |
| |
| * layout/FormattingContext.cpp: |
| (WebCore::Layout::FormattingContext::computeBorderAndPadding): |
| * layout/FormattingContext.h: |
| * layout/FormattingContextGeometry.cpp: |
| (WebCore::Layout::FormattingContext::Geometry::computedPadding const): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::TableFormattingContext::layoutCell): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace): |
| (WebCore::Layout::TableFormattingContext::setComputedGeometryForRows): |
| (WebCore::Layout::TableFormattingContext::setComputedGeometryForSections): |
| (WebCore::Layout::TableFormattingContext::positionTableCells): Deleted. |
| * layout/tableformatting/TableFormattingContext.h: |
| |
| 2020-04-22 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK4] Several fixes to GdkEvent APIs for GTK4 |
| https://bugs.webkit.org/show_bug.cgi?id=210856 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| No tests needed. |
| |
| Several fixes to GdkEvent API changes for GTK4. This is far from |
| complete but it allows the GTK4 build to move forward. When |
| possible, add GTK3-API replacements to GtkVersioning.h to avoid |
| #ifdef blocks, where the API changes are too complex, just #ifdef. |
| |
| * platform/gtk/GtkUtilities.cpp: |
| (WebCore::wallTimeForEvent): |
| * platform/gtk/GtkVersioning.h: |
| (gdk_event_get_state): |
| (gdk_event_get_coords): |
| (gdk_event_get_root_coords): |
| (gdk_event_is_scroll_stop_event): |
| (gdk_event_get_scroll_direction): |
| (gdk_event_get_scroll_deltas): |
| (gdk_event_get_button): |
| (gdk_keymap_get_for_display): Deleted as it was wrong and |
| it's not needed. |
| * platform/gtk/PlatformKeyboardEventGtk.cpp: |
| (WebCore::PlatformKeyboardEvent::currentCapsLockState): |
| (WebCore::PlatformKeyboardEvent::getCurrentModifierState): |
| (WebCore::PlatformKeyboardEvent::modifiersContainCapsLock): |
| * platform/gtk/PlatformWheelEventGtk.cpp: |
| (WebCore::PlatformWheelEvent::PlatformWheelEvent): |
| |
| 2020-04-22 Youenn Fablet <youenn@apple.com> |
| |
| Simplify SWServerWorker::whenActivated logic |
| https://bugs.webkit.org/show_bug.cgi?id=210795 |
| |
| Reviewed by Alex Christensen. |
| |
| Improve logging and ensure whenActivated can be called whatever the worker state is. |
| No change of behavior. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::didFinishInstall): |
| (WebCore::SWServer::fireInstallEvent): |
| (WebCore::SWServer::fireActivateEvent): |
| * workers/service/server/SWServerWorker.cpp: |
| (WebCore::SWServerWorker::whenActivated): |
| |
| 2020-04-22 Enrique Ocaña González <eocanha@igalia.com> |
| |
| [GStreamer][MSE] Youtube 'live stream'/H264 URLs fail to play, VP8/9 URLs play OK |
| https://bugs.webkit.org/show_bug.cgi?id=209119 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| The fix consists of removing the initial avoiding of seeking and just |
| issuing the proper segment instead of seeking (seeks in GStreamer can't |
| be done before prerolling anyway). Appsrc doesn't make easy to emit our |
| own custom segment, so what I did was to use a segment fixer probe to |
| modify the original [0, infinity] segment issued by appsrc and use |
| a [startTime, stopTime] with proper values depending on the seek target |
| and rate. |
| |
| Covered by existing tests. |
| |
| * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: |
| (WebCore::checkShouldDelaySeek): Don't hold seeks on startup, when changing from READY to PAUSED. |
| (WebCore::MediaPlayerPrivateGStreamerMSE::doSeek): Refactored seek delay condition. Also, don't do a regular |
| gst_element_seek() for initial seeks, just proceed with a special case in that situation. |
| * platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp: |
| (initialSeekSegmentFixerProbe): Probe that fixes the segment. |
| (webKitMediaSrcPrepareInitialSeek): Behave much like a regular seek, but also compute the right GstSegment, install |
| the segment fixer probe and setReadyForMoreSamples() on the SourceBufferPrivates. |
| * platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.h: |
| |
| 2020-04-21 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebXR] Test IDLs and stubs |
| https://bugs.webkit.org/show_bug.cgi?id=209859 |
| |
| Reviewed by Dean Jackson and Youenn Fablet. |
| |
| WebXR testing is hard as it might involve interaction with actual |
| devices. That's why the WebXR testing |
| API (https://immersive-web.github.io/webxr-test-api/) was |
| proposed. In fact, all the current WebXR tests from |
| web-platform-tests are using that testing API. This new testing |
| API supplements navigator.xr and is accessed through |
| navigator.xr.test. |
| |
| In order not to expose the API to the web we're adding the XRTest |
| interface to Internals instead. The mapping from internals.xrTest to |
| navigator.xr.test happens in the WPT code. |
| |
| We're adding the required IDLs and very basic (mostly empty) |
| implementations for testing methods. We're adding testing |
| infrastructure, adding tests make no sense for this change. |
| |
| * CMakeLists.txt: Added new files. |
| * DerivedSources.make: Ditto. |
| * Modules/webxr/NavigatorWebXR.h: Export API to be used in testing code. |
| * Modules/webxr/WebXRSystem.h: Export ::from and ::xr methods. |
| * WebCore.xcodeproj/project.pbxproj: Ditto. |
| * bindings/js/WebCoreBuiltinNames.h: Added some new macros. |
| * testing/FakeXRBoundsPoint.h: Added. |
| * testing/FakeXRBoundsPoint.idl: Added. |
| * testing/FakeXRButtonStateInit.h: Added. |
| * testing/FakeXRButtonStateInit.idl: Added. |
| * testing/FakeXRInputSourceInit.h: Added. |
| * testing/FakeXRInputSourceInit.idl: Added. |
| * testing/FakeXRRigidTransformInit.h: Added. |
| * testing/FakeXRRigidTransformInit.idl: Added. |
| * testing/FakeXRViewInit.h: Added. |
| * testing/FakeXRViewInit.idl: Added. |
| * testing/Internals.cpp: |
| (WebCore::Internals::xrTest): Added WebXRTest to Internals. |
| * testing/Internals.h: Added xrTest() accessor. |
| * testing/Internals.idl: Added xrTest attribute. |
| * testing/WebFakeXRDevice.cpp: Added. |
| (WebCore::WebFakeXRDevice::setViews): |
| (WebCore::WebFakeXRDevice::disconnect): |
| (WebCore::WebFakeXRDevice::setViewerOrigin): |
| (WebCore::WebFakeXRDevice::clearViewerOrigin): |
| (WebCore::WebFakeXRDevice::simulateVisibilityChange): |
| (WebCore::WebFakeXRDevice::setBoundsGeometry): |
| (WebCore::WebFakeXRDevice::setFloorOrigin): |
| (WebCore::WebFakeXRDevice::clearFloorOrigin): |
| (WebCore::WebFakeXRDevice::simulateResetPose): |
| (WebCore::WebFakeXRDevice::simulateInputSourceConnection): |
| * testing/WebFakeXRDevice.h: Added. |
| * testing/WebFakeXRDevice.idl: Added. |
| * testing/WebFakeXRInputController.cpp: Added. |
| (WebCore::WebFakeXRInputController::setHandedness): |
| (WebCore::WebFakeXRInputController::setTargetRayMode): |
| (WebCore::WebFakeXRInputController::setProfiles): |
| (WebCore::WebFakeXRInputController::setGripOrigin): |
| (WebCore::WebFakeXRInputController::clearGripOrigin): |
| (WebCore::WebFakeXRInputController::setPointerOrigin): |
| (WebCore::WebFakeXRInputController::disconnect): |
| (WebCore::WebFakeXRInputController::reconnect): |
| (WebCore::WebFakeXRInputController::startSelection): |
| (WebCore::WebFakeXRInputController::endSelection): |
| (WebCore::WebFakeXRInputController::simulateSelect): |
| (WebCore::WebFakeXRInputController::setSupportedButtons): |
| (WebCore::WebFakeXRInputController::updateButtonState): |
| * testing/WebFakeXRInputController.h: Added. |
| * testing/WebFakeXRInputController.idl: Added. |
| * testing/WebXRTest.cpp: Added. |
| (WebCore::WebXRTest::simulateDeviceConnection const): |
| (WebCore::WebXRTest::simulateUserActivation): |
| (WebCore::WebXRTest::disconnectAllDevices): |
| * testing/WebXRTest.h: Added. |
| (WebCore::WebXRTest::create): |
| * testing/WebXRTest.idl: Added. |
| * testing/XRSimulateUserActivationFunction.h: Added. |
| * testing/XRSimulateUserActivationFunction.idl: Ditto. |
| |
| 2020-04-21 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Add a supporting object for Document to manage timelines |
| https://bugs.webkit.org/show_bug.cgi?id=210817 |
| |
| Reviewed by Dean Jackson. |
| |
| Add a new DocumentTimelinesController object owned by Document to manage DocumentTimelines created for it. This simple piece of refactoring is the first |
| step towards a coordinated "update animations and send events" procedure where all timelines are updated at once with a single microtask checkpoint instead |
| of each timeline running one. |
| |
| No change in behavior, so no new tests. |
| |
| * Headers.cmake: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::DocumentTimeline): |
| (WebCore::DocumentTimeline::~DocumentTimeline): |
| (WebCore::DocumentTimeline::controller const): |
| (WebCore::DocumentTimeline::detachFromDocument): |
| * animation/DocumentTimeline.h: |
| * animation/DocumentTimelinesController.cpp: Added. |
| (WebCore::DocumentTimelinesController::DocumentTimelinesController): |
| (WebCore::DocumentTimelinesController::~DocumentTimelinesController): |
| (WebCore::DocumentTimelinesController::addTimeline): |
| (WebCore::DocumentTimelinesController::removeTimeline): |
| (WebCore::DocumentTimelinesController::detachFromDocument): |
| (WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents): |
| * animation/DocumentTimelinesController.h: Added. |
| * dom/Document.cpp: |
| (WebCore::Document::commonTeardown): |
| (WebCore::Document::ensureTimelinesController): |
| (WebCore::Document::updateAnimationsAndSendEvents): Deleted. |
| (WebCore::Document::addTimeline): Deleted. |
| (WebCore::Document::removeTimeline): Deleted. |
| * dom/Document.h: |
| (WebCore::Document::timelinesController const): |
| * page/Page.cpp: |
| (WebCore::Page::updateRendering): |
| |
| 2020-04-21 Cathie Chen <cathiechen@igalia.com> |
| |
| REGRESSION (r254790): No longer get smooth scrolling on music.apple.com |
| https://bugs.webkit.org/show_bug.cgi?id=210634 |
| |
| Reviewed by Darin Adler. |
| |
| The page uses the access of "scrollBehavior" in CSSStyleDeclaration as the support of scroll-behavior. |
| If supported, it will use scroll-behavior. Otherwise, it will perform a JS smooth scroll. |
| Currently, "scrollBehavior" is still available when CSSOMViewSmoothScrolling is off, only the value |
| "smooth" is invalidated. |
| In order to fix this, CSSStyleDeclaration will take account of CSSOMViewSmoothScrolling in Settings. |
| This patch also tries to provide an interface which let flags in Settings can enable/disable a property. |
| However, it is not complete, for there are some scenarios that Settings isn't accessible. By adding |
| "settings-flag" to CSSProperties.json, it would be effective to control the property access in CSSStyleDeclaration. |
| |
| Tests: fast/scrolling/scroll-behavior-invalidate-if-disabled.html |
| fast/scrolling/scroll-behavior-validate-if-enabled.html |
| |
| * css/CSSProperties.json: |
| * css/CSSStyleDeclaration.cpp: |
| (WebCore::CSSStyleDeclaration::getCSSPropertyIDFromJavaScriptPropertyName): |
| (WebCore::CSSStyleDeclaration::namedItem): |
| (WebCore::CSSStyleDeclaration::setNamedItem): |
| (WebCore::CSSStyleDeclaration::supportedPropertyNames const): |
| * css/makeprop.pl: |
| (addProperty): |
| * css/parser/CSSPropertyParser.cpp: |
| (WebCore::cssPropertyID): |
| * inspector/InspectorStyleSheet.cpp: |
| (WebCore::InspectorStyle::collectProperties const): |
| * inspector/agents/InspectorCSSAgent.cpp: |
| (WebCore::InspectorCSSAgent::getSupportedCSSProperties): |
| |
| 2020-04-21 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Canonicalize JSBigInt generated by structured-cloning by calling rightTrim |
| https://bugs.webkit.org/show_bug.cgi?id=210816 |
| |
| Reviewed by Keith Miller and Darin Adler. |
| |
| Let's assume that the serialized data is slightly different. JSBigInt's internal representation has various invariants. For example, if JSBigInt is zero, it should have zero length, |
| and its sign should be false. But there are various ways of representing zero JSBigInt in serialization format. For example, we can set sign = true, length = 0. Current code strongly |
| assumes that dumped data meets this JSBigInt's internal invariant. This is not good: for example, if we add a new invariant into JSBigInt, already serialized data would not meet this |
| invariant. |
| In this patch, we call `JSBigInt::rightTrim(VM&)` when finishing JSBigInt deserialization. This means that we canonicalize JSBigInt when finishing creation, and this makes this serialization |
| format free from JSBigInt's internal invariants. This makes JSBigInt serialization/deserialization robust. And we also add lengthInUint64 == 0 path not to call rightTrim when it is zero. |
| This makes deserialization robust for zero-length & signed corrupted JSBigInt zero. |
| |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneSerializer::dumpBigInt32Data): |
| (WebCore::CloneDeserializer::readBigInt): |
| |
| 2020-04-21 Peng Liu <peng.liu6@apple.com> |
| |
| platform/mac/media/audio-session-category-audio-autoplay.html is timing out |
| https://bugs.webkit.org/show_bug.cgi?id=210826 |
| |
| Reviewed by Jer Noble. |
| |
| For WebKitLegacy, AudioSession::setCategory() needs to set the category when |
| m_routingArbitrationClient is nullptr. This patch also fixes an error regarding |
| setupArbitrationOngoing. |
| |
| * platform/audio/mac/AudioSessionMac.mm: |
| (WebCore::AudioSession::setCategory): |
| |
| 2020-04-21 Peng Liu <peng.liu6@apple.com> |
| |
| Fix MACCATALYST build failures |
| https://bugs.webkit.org/show_bug.cgi?id=210815 |
| |
| Reviewed by Tim Horton. |
| |
| No new tests, no functional change. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * platform/ios/WebVideoFullscreenControllerAVKit.mm: |
| |
| 2020-04-19 Darin Adler <darin@apple.com> |
| |
| [Cocoa] Use createNSArray in many more places that build NSArray objects from C++ collections |
| https://bugs.webkit.org/show_bug.cgi?id=210702 |
| |
| Reviewed by Alex Christensen. |
| |
| * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityFlowToElements]): Use createNSArray. |
| (-[WebAccessibilityObjectWrapper textRectsFromMarkers:withText:]): Ditto. |
| (-[WebAccessibilityObjectWrapper rectsForSelectionRects:]): Deleted. Merged into |
| the method above. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperBase.h: Take const references |
| instead of references when passing Path and FloatRect. |
| * accessibility/mac/WebAccessibilityObjectWrapperBase.mm: |
| (convertMathPairsToNSArray): Use createNSArray. Also use arrays on the stack |
| to create NSDictionary rather than using NSMutableDictionary. |
| (addChildToArray): Deleted. |
| (convertToNSArray): Uses createNSArray. Rolled addChildToArray in. |
| (-[WebAccessibilityObjectWrapperBase convertPathToScreenSpace:]): Take const |
| reference instead of reference. |
| (-[WebAccessibilityObjectWrapperBase convertRectToSpace:space:]): Ditto. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): |
| Use createNSArray. |
| * editing/cocoa/FontAttributesCocoa.mm: |
| (WebCore::FontAttributes::createDictionary const): Ditto. |
| * page/ios/FrameIOS.mm: |
| (WebCore::Frame::interpretationsForCurrentRoot const): Ditto. |
| * platform/cocoa/SearchPopupMenuCocoa.mm: |
| (WebCore::saveRecentSearches): Ditto. |
| * platform/cocoa/SharedBufferCocoa.mm: |
| (WebCore::SharedBuffer::createNSDataArray const): Ditto. |
| * platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: |
| (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense): Ditto. |
| * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm: |
| (WebCore::CDMSessionAVContentKeySession::update): Ditto. |
| * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm: |
| (WebCore::CDMSessionAVStreamSession::update): Ditto. |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL): Ditto. |
| * platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm: |
| (WebCore::PlatformCAAnimationCocoa::setValues): Ditto. |
| (WebCore::PlatformCAAnimationCocoa::setKeyTimes): Ditto. |
| (WebCore::PlatformCAAnimationCocoa::setTimingFunctions): Ditto. |
| |
| * platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm: |
| (WebCore::PlatformCAFilters::setFiltersOnLayer): Moved almost the whole |
| function into a call to createNSArray. Removed the default case from |
| the switch so we get a warning if we miss any filter operation types. |
| |
| * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: |
| (WebCore::PlatformCALayerCocoa::setSublayers): Use createNSArray. |
| * platform/ios/PlatformPasteboardIOS.mm: |
| (WebCore::PlatformPasteboard::write): Ditto. |
| * platform/ios/PlaybackSessionInterfaceAVKit.mm: |
| (WebCore::mediaSelectionOptions): Ditto. |
| * platform/mac/PlatformPasteboardMac.mm: |
| (WebCore::PlatformPasteboard::write): Ditto. |
| * platform/mac/WebPlaybackControlsManager.mm: |
| (mediaSelectionOptions): Ditto. |
| * platform/network/cocoa/NetworkStorageSessionCocoa.mm: |
| (WebCore::NetworkStorageSession::setCookies): Ditto. |
| * platform/network/cocoa/ResourceRequestCocoa.mm: |
| (WebCore::ResourceRequest::doUpdatePlatformRequest): Ditto. |
| |
| * platform/network/cocoa/WebCoreNSURLSession.h: |
| Use the Objective-C type WebCoreNSURLSessionDataTask in the _dataTasks |
| set rather than using CFTypeRef. |
| |
| * platform/network/cocoa/WebCoreNSURLSession.mm: |
| (-[WebCoreNSURLSession dealloc]): Remove now-unneeded typecast. |
| (-[WebCoreNSURLSession taskCompleted:]): Ditto. |
| (-[WebCoreNSURLSession finishTasksAndInvalidate]): Use a more idiomatic |
| form of capturing strongSelf in a lambda. |
| (-[WebCoreNSURLSession invalidateAndCancel]): Updated the type on a |
| local variable and removed now-unneeded typecast. |
| (-[WebCoreNSURLSession getTasksWithCompletionHandler:]): Use RetainPtr |
| to cut down on autorelease. Use createNSArray, taking advantage of the |
| fact that it works on HashSet. Removed now-unneeded typecast. |
| (-[WebCoreNSURLSession getAllTasksWithCompletionHandler:]): Ditto. |
| (-[WebCoreNSURLSession dataTaskWithRequest:]): Remove now-unneeded typecast. |
| (-[WebCoreNSURLSession dataTaskWithURL:]): Ditto. |
| |
| 2020-04-21 Alexey Shvayka <shvaikalesh@gmail.com> |
| |
| The visibilitychange event should bubble |
| https://bugs.webkit.org/show_bug.cgi?id=210829 |
| |
| Reviewed by Darin Adler. |
| |
| This change makes `visibilitychange` event bubble as per spec [1], aligning WebKit |
| with Blink and Gecko. Also fixes broken spec link to `visibilityState` attribute. |
| |
| [1] https://w3c.github.io/page-visibility/#dfn-now-visible-algorithm (step 2) |
| |
| Test: fast/events/page-visibility-transition-test.html |
| |
| * dom/Document.cpp: |
| (WebCore::Document::visibilityStateChanged): |
| (WebCore::Document::visibilityState const): |
| |
| 2020-04-21 Simon Fraser <simon.fraser@apple.com> |
| |
| Composited layers are misplaced inside RTL overflow scroller with visible scrollbar |
| https://bugs.webkit.org/show_bug.cgi?id=210820 |
| |
| Reviewed by Zalan Bujtas. |
| |
| RenderLayerBacking::computeParentGraphicsLayerRect() used renderBox.paddingBoxRectIncludingScrollbar() |
| to position layers inside composited overflow scroll, but this is wrong if the RTL left-side |
| scrollbar takes space. |
| |
| Fix by making some static functions that we can call from the various places that ask |
| about box geometry, and using them. |
| |
| Test: compositing/scrolling/async-overflow-scrolling/position-inside-rtl-overflow.html |
| |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::overflowClipRect const): |
| (WebCore::RenderBox::clipRect const): |
| (WebCore::RenderBox::overflowClipRect): Deleted. |
| (WebCore::RenderBox::clipRect): Deleted. |
| * rendering/RenderBox.h: |
| (WebCore::RenderBox::overflowClipRectForChildLayers const): |
| (WebCore::RenderBox::overflowClipRectForChildLayers): Deleted. |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::scrollContainerLayerBox): |
| (WebCore::clippingLayerBox): |
| (WebCore::overflowControlsHostLayerBox): |
| (WebCore::RenderLayerBacking::computeParentGraphicsLayerRect const): |
| (WebCore::RenderLayerBacking::updateGeometry): |
| (WebCore::clipBox): Deleted. |
| * rendering/RenderTable.cpp: |
| (WebCore::RenderTable::overflowClipRect const): |
| (WebCore::RenderTable::overflowClipRect): Deleted. |
| * rendering/RenderTable.h: |
| |
| 2020-04-21 Simon Fraser <simon.fraser@apple.com> |
| |
| [Async overflow scroll] Overflow that's hidden on one axis is scrollable on that axis |
| https://bugs.webkit.org/show_bug.cgi?id=210771 |
| <rdar://problem/62080331> |
| |
| Reviewed by Tim Horton. |
| |
| eventCanScrollContents() should check the presence of enabled scrollbars, like |
| ScrollAnimator::handleWheelEvent() does. |
| |
| Test: fast/scrolling/mac/async-scroll-overflow-hidden-on-one-axis.html |
| |
| * page/scrolling/ScrollingTreeScrollingNode.cpp: |
| (WebCore::ScrollingTreeScrollingNode::eventCanScrollContents const): |
| |
| 2020-04-21 Daniel Bates <dabates@apple.com> |
| |
| [iOS] -_didFinishTextInteractionInTextInputContext should only zoom to reveal focused element if it changed |
| https://bugs.webkit.org/show_bug.cgi?id=210697 |
| <rdar://problem/60997530> |
| |
| Reviewed by Wenson Hsieh. |
| |
| For now, add a comment about the return value of setFocusedElement: it returns |
| whether focus was blocked. If focused wasn't blocked then it will return true |
| even if the element wasn't actually focused. For example, it will return true |
| for non-focusable elements: <input disabled>. |
| |
| I was tempted to fix setFocusedElement() to return true when it actually focused |
| the element or if the element was already focused, but I decided to defer this |
| until I audit the callers and run some tests. |
| |
| * dom/Document.h: |
| |
| 2020-04-21 Andres Gonzalez <andresg_22@apple.com> |
| |
| Fix for remoteParentObject and platformWidget not being stored properly in the AXIsolatedObject attributes variant. |
| https://bugs.webkit.org/show_bug.cgi?id=210809 |
| |
| Reviewed by Chris Fleizach. |
| |
| Adding these properties to the AXIsolatedObject attributes variant as |
| WeakPtr<void*> fails. So they are now cached as member variables. |
| |
| * accessibility/isolatedtree/AXIsolatedObject.cpp: |
| (WebCore::AXIsolatedObject::initializeAttributeData): |
| (WebCore::AXIsolatedObject::platformWidget const): |
| * accessibility/isolatedtree/AXIsolatedObject.h: |
| (WebCore::AXIsolatedObject::propertyValue const): Deleted. |
| * accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm: |
| (WebCore::AXIsolatedObject::initializePlatformProperties): |
| (WebCore::AXIsolatedObject::remoteParentObject const): |
| |
| 2020-04-20 Simon Fraser <simon.fraser@apple.com> |
| |
| Horizontal overflow overlay scrollbar is misplaced in RTL |
| https://bugs.webkit.org/show_bug.cgi?id=210673 |
| <rdar://problem/61950751> |
| |
| Reviewed by Antti Koivisto. |
| |
| Code for positioning RenderLayer overflow controls (scrollbars and scroll corner) |
| was scattered across lots of different functions, making it hard to follow, |
| and prone to bugs. |
| |
| Fix by making one source of truth, overflowControlsRects(), which computes |
| rects for the two scrollbars, the "scroll corner" (the square in the corner which |
| shows, only for non-overlay scrollbars, when both scrollbars or the resize control |
| is visible), and the resize control which shows when style specifies the "resize" property. |
| |
| Call this function in all the places that need to know about overflow control |
| geometry. RenderLayer::hitTestResizerInFragments() is a little tricky because it wants |
| the resize control relative to the fragment rect; achieve this by computing the position |
| of the resizer rect relative to the border box, then shifting it into position relative |
| to the fragment bounds (which include border). |
| |
| Test: compositing/overflow/rtl-scrollbar-layer-positioning.html |
| |
| * page/EventHandler.cpp: |
| (WebCore::EventHandler::selectCursor): |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::scrollCornerRect const): |
| (WebCore::RenderLayer::overflowControlsRects const): |
| (WebCore::RenderLayer::scrollbarOffset const): |
| (WebCore::RenderLayer::invalidateScrollbarRect): |
| (WebCore::RenderLayer::positionOverflowControls): |
| (WebCore::RenderLayer::overflowControlsIntersectRect const): |
| (WebCore::RenderLayer::paintResizer): |
| (WebCore::RenderLayer::isPointInResizeControl const): |
| (WebCore::RenderLayer::hitTestOverflowControls): |
| (WebCore::RenderLayer::hitTestResizerInFragments const): |
| (WebCore::cornerStart): Deleted. |
| (WebCore::cornerRect): Deleted. |
| (WebCore::resizerCornerRect): Deleted. |
| (WebCore::RenderLayer::scrollCornerAndResizerRect const): Deleted. |
| (WebCore::RenderLayer::rectForHorizontalScrollbar const): Deleted. |
| (WebCore::RenderLayer::rectForVerticalScrollbar const): Deleted. |
| (WebCore::RenderLayer::verticalScrollbarStart const): Deleted. |
| (WebCore::RenderLayer::horizontalScrollbarStart const): Deleted. |
| * rendering/RenderLayer.h: |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::requiresScrollCornerLayer const): |
| (WebCore::RenderLayerBacking::positionOverflowControlsLayers): |
| (WebCore::RenderLayerBacking::paintContents): |
| |
| 2020-04-21 Sergio Villar Senin <svillar@igalia.com> |
| |
| Unreviewed, reverting r260432. |
| |
| Broke WPE build |
| |
| Reverted changeset: |
| |
| "[WebXR] Test IDLs and stubs" |
| https://bugs.webkit.org/show_bug.cgi?id=209859 |
| https://trac.webkit.org/changeset/260432 |
| |
| 2020-04-21 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r256808): “A problem repeatedly occurred” when attempting to load https://bungalow.com/listings/bay-area |
| https://bugs.webkit.org/show_bug.cgi?id=210801 |
| <rdar://problem/61658940> |
| |
| Reviewed by Antti Koivisto. |
| |
| Even though the page uses the 'async' attribute on the mapbox-gl.js script, deferring the execution of this |
| script gets the page into a bad state, causing it to use a lot of CPU & memory until the process crashes. |
| Since we don't have any other evidence of breakage from r256808 yet and since r256808 was a massive PLT |
| progression, I am opting to add a quirk to disable the async script optimization on bungalow.com for now. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::shouldDeferAsynchronousScriptsUntilParsingFinishes const): |
| * page/Quirks.cpp: |
| (WebCore::Quirks::shouldBypassAsyncScriptDeferring const): |
| * page/Quirks.h: |
| * platform/RegistrableDomain.h: |
| (WebCore::RegistrableDomain::operator== const): |
| |
| 2020-04-16 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebXR] Test IDLs and stubs |
| https://bugs.webkit.org/show_bug.cgi?id=209859 |
| |
| Reviewed by Dean Jackson and Youenn Fablet. |
| |
| WebXR testing is hard as it might involve interaction with actual |
| devices. That's why the WebXR testing |
| API (https://immersive-web.github.io/webxr-test-api/) was |
| proposed. In fact, all the current WebXR tests from |
| web-platform-tests are using that testing API. This new testing |
| API supplements navigator.xr and is accessed through |
| navigator.xr.test. |
| |
| In order not to expose the API to the web we're adding the XRTest |
| interface to Internals instead. The mapping from internals.xrTest to |
| navigator.xr.test happens in the WPT code. |
| |
| We're adding the required IDLs and very basic (mostly empty) |
| implementations for testing methods. We're adding testing |
| infrastructure, adding tests make no sense for this change. |
| |
| * CMakeLists.txt: Added new files. |
| * DerivedSources.make: Ditto. |
| * Modules/webxr/NavigatorWebXR.h: Export API to be used in testing code. |
| * Modules/webxr/WebXRSystem.h: Export ::from and ::xr methods. |
| * Sources.txt: Added new files. |
| * WebCore.xcodeproj/project.pbxproj: Ditto. |
| * bindings/js/WebCoreBuiltinNames.h: Added some new macros. |
| * testing/FakeXRBoundsPoint.h: Added. |
| * testing/FakeXRBoundsPoint.idl: Added. |
| * testing/FakeXRButtonStateInit.h: Added. |
| * testing/FakeXRButtonStateInit.idl: Added. |
| * testing/FakeXRInputSourceInit.h: Added. |
| * testing/FakeXRInputSourceInit.idl: Added. |
| * testing/FakeXRRigidTransformInit.h: Added. |
| * testing/FakeXRRigidTransformInit.idl: Added. |
| * testing/FakeXRViewInit.h: Added. |
| * testing/FakeXRViewInit.idl: Added. |
| * testing/Internals.cpp: |
| (WebCore::Internals::xrTest): Added WebXRTest to Internals. |
| * testing/Internals.h: Added xrTest() accessor. |
| * testing/Internals.idl: Added xrTest attribute. |
| * testing/WebFakeXRDevice.cpp: Added. |
| (WebCore::WebFakeXRDevice::setViews): |
| (WebCore::WebFakeXRDevice::disconnect): |
| (WebCore::WebFakeXRDevice::setViewerOrigin): |
| (WebCore::WebFakeXRDevice::clearViewerOrigin): |
| (WebCore::WebFakeXRDevice::simulateVisibilityChange): |
| (WebCore::WebFakeXRDevice::setBoundsGeometry): |
| (WebCore::WebFakeXRDevice::setFloorOrigin): |
| (WebCore::WebFakeXRDevice::clearFloorOrigin): |
| (WebCore::WebFakeXRDevice::simulateResetPose): |
| (WebCore::WebFakeXRDevice::simulateInputSourceConnection): |
| * testing/WebFakeXRDevice.h: Added. |
| * testing/WebFakeXRDevice.idl: Added. |
| * testing/WebFakeXRInputController.cpp: Added. |
| (WebCore::WebFakeXRInputController::setHandedness): |
| (WebCore::WebFakeXRInputController::setTargetRayMode): |
| (WebCore::WebFakeXRInputController::setProfiles): |
| (WebCore::WebFakeXRInputController::setGripOrigin): |
| (WebCore::WebFakeXRInputController::clearGripOrigin): |
| (WebCore::WebFakeXRInputController::setPointerOrigin): |
| (WebCore::WebFakeXRInputController::disconnect): |
| (WebCore::WebFakeXRInputController::reconnect): |
| (WebCore::WebFakeXRInputController::startSelection): |
| (WebCore::WebFakeXRInputController::endSelection): |
| (WebCore::WebFakeXRInputController::simulateSelect): |
| (WebCore::WebFakeXRInputController::setSupportedButtons): |
| (WebCore::WebFakeXRInputController::updateButtonState): |
| * testing/WebFakeXRInputController.h: Added. |
| * testing/WebFakeXRInputController.idl: Added. |
| * testing/WebXRTest.cpp: Added. |
| (WebCore::WebXRTest::simulateDeviceConnection const): |
| (WebCore::WebXRTest::simulateUserActivation): |
| (WebCore::WebXRTest::disconnectAllDevices): |
| * testing/WebXRTest.h: Added. |
| (WebCore::WebXRTest::create): |
| * testing/WebXRTest.idl: Added. |
| * testing/XRSimulateUserActivationFunction.h: Added. |
| * testing/XRSimulateUserActivationFunction.idl: Ditto. |
| |
| 2020-04-21 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK4] Adapt to GtkIconTheme API changes |
| https://bugs.webkit.org/show_bug.cgi?id=210745 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| No new tests needed. |
| |
| GtkIconTheme changes in GTK and since we're no longer following |
| the theme we can drop the missing image from the icon theme, so remove |
| now unnecessary code. |
| |
| * platform/graphics/gtk/ImageGtk.cpp: |
| (WebCore::Image::loadPlatformResource): Directly load image from compiled |
| GResource. |
| (WebCore::loadResourceSharedBuffer): Deleted. |
| (WebCore::loadMissingImageIconFromTheme): Deleted. |
| |
| 2020-04-21 Rob Buis <rbuis@igalia.com> |
| |
| Exit early in FrameLoader::loadURL when redirecting to another frame |
| https://bugs.webkit.org/show_bug.cgi?id=210751 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Exit early in FrameLoader::loadURL when redirecting to another frame, previously we were preparing |
| request needlessly, doing it twice in case of frame redirecting. Also move some variables to |
| where they are actually used. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURL): |
| * loader/FrameLoader.h: |
| |
| 2020-04-21 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Remove PlatformMouseEventGtk |
| https://bugs.webkit.org/show_bug.cgi?id=210743 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| It's unused, we no longer create PlatformMouseEvent from a GdkEvent since WebKit2. |
| |
| * SourcesGTK.txt: |
| * platform/PlatformMouseEvent.h: |
| * platform/gtk/PlatformMouseEventGtk.cpp: Removed. |
| |
| 2020-04-21 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK4] Fix platform GDK includes |
| https://bugs.webkit.org/show_bug.cgi?id=210746 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * platform/graphics/PlatformDisplay.cpp: Wayland, X11, etc. |
| platform includes changed path, so update accordingly. |
| |
| 2020-04-21 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Non-unified build fixes late February 2020 edition |
| https://bugs.webkit.org/show_bug.cgi?id=210767 |
| |
| Unreviewed build fix. |
| |
| No new tests needed. |
| |
| * css/MediaQueryListEvent.cpp: Add missing wtf/IsoMallocInlines.h header. |
| * css/MediaQueryMatcher.cpp: Add missing MediaQueryListEvent.h header. |
| * platform/graphics/FloatQuad.cpp: Add missing wtf/text/TextStream.h header. |
| |
| 2020-04-20 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Classes marked final should not use protected access specifier |
| https://bugs.webkit.org/show_bug.cgi?id=210775 |
| |
| Reviewed by Daniel Bates. |
| |
| * Modules/applepay/ApplePayPaymentMethodSelectedEvent.h: |
| * Modules/applepay/ApplePayValidateMerchantEvent.h: |
| * Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.h: |
| * Modules/webaudio/BiquadDSPKernel.h: |
| * Modules/webaudio/WaveShaperDSPKernel.h: |
| * Modules/websockets/WebSocketChannel.h: |
| * Modules/websockets/WorkerThreadableWebSocketChannel.h: |
| * Modules/webxr/WebXRSession.h: |
| * Modules/webxr/WebXRSystem.h: |
| * accessibility/AccessibilityARIAGridCell.h: |
| * accessibility/AccessibleSetValueEvent.h: |
| * animation/CSSAnimation.h: |
| * bindings/js/ReadableStream.h: |
| * bridge/objc/objc_runtime.h: |
| * bridge/runtime_array.h: |
| * css/CSSImageSetValue.h: |
| * html/HTMLKeygenElement.cpp: |
| * html/canvas/WebGLBuffer.h: |
| * html/canvas/WebGLFramebuffer.h: |
| * html/canvas/WebGLProgram.h: |
| * html/canvas/WebGLQuery.h: |
| * html/canvas/WebGLRenderbuffer.h: |
| * html/canvas/WebGLSampler.h: |
| * html/canvas/WebGLSync.h: |
| * html/canvas/WebGLTransformFeedback.h: |
| * html/canvas/WebGLUniformLocation.h: |
| * html/shadow/TextControlInnerElements.h: |
| * inspector/InspectorStyleSheet.h: |
| * inspector/WebInjectedScriptManager.h: |
| * loader/cache/CachedCSSStyleSheet.h: |
| * page/Frame.h: |
| * page/FrameView.h: |
| * page/PageConsoleClient.h: |
| * page/animation/KeyframeAnimation.h: |
| * page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.h: |
| * platform/audio/AudioBus.h: |
| * platform/cocoa/PlaybackSessionModelMediaElement.h: |
| * platform/graphics/BitmapImage.h: |
| * platform/graphics/CrossfadeGeneratedImage.h: |
| * platform/graphics/NamedImageGeneratedImage.h: |
| * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h: |
| * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: |
| * platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.h: |
| * platform/graphics/ca/win/PlatformCAAnimationWin.h: |
| * platform/graphics/cg/ImageDecoderCG.h: |
| * platform/graphics/iso/ISOOriginalFormatBox.h: |
| * platform/graphics/iso/ISOProtectionSchemeInfoBox.h: |
| * platform/graphics/iso/ISOSchemeInformationBox.h: |
| * platform/graphics/iso/ISOSchemeTypeBox.h: |
| * platform/graphics/iso/ISOTrackEncryptionBox.h: |
| * platform/graphics/iso/ISOVTTCue.cpp: |
| * platform/graphics/iso/ISOVTTCue.h: |
| * platform/graphics/win/ImageDecoderDirect2D.h: |
| * platform/mediastream/mac/AVCaptureDeviceManager.h: |
| * platform/mock/mediasource/MockBox.h: |
| * platform/mock/mediasource/MockSourceBufferPrivate.cpp: |
| * rendering/RenderFullScreen.h: |
| * rendering/RenderGrid.h: |
| * rendering/RenderMultiColumnSet.h: |
| * rendering/RenderRuby.h: |
| * rendering/RenderScrollbarPart.h: |
| * rendering/RenderScrollbarTheme.h: |
| * rendering/RenderTableCell.h: |
| * rendering/RenderTableSection.h: |
| * rendering/RenderThemeIOS.h: |
| * rendering/RenderView.h: |
| * rendering/svg/RenderSVGResourceClipper.h: |
| * svg/SVGTextPathElement.h: |
| * workers/WorkerConsoleClient.h: |
| * worklets/Worklet.h: |
| |
| 2020-04-20 Peng Liu <peng.liu6@apple.com> |
| |
| Fix build failures when video fullscreen and picture-in-picture is disabled |
| https://bugs.webkit.org/show_bug.cgi?id=210777 |
| |
| Reviewed by Eric Carlson. |
| |
| Wrap video fullscreen and picture-in-picture related code with "#if ENABLE(VIDEO_PRESENTATION_MODE)". |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoLayerGravity): |
| * platform/graphics/avfoundation/objc/VideoLayerManagerObjC.h: |
| * platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm: |
| (WebCore::VideoLayerManagerObjC::setVideoLayer): |
| (WebCore::VideoLayerManagerObjC::requiresTextTrackRepresentation const): |
| (WebCore::VideoLayerManagerObjC::syncTextTrackBounds): |
| (WebCore::VideoLayerManagerObjC::setTextTrackRepresentation): |
| |
| 2020-04-20 Nikos Mouchtaris <nmouchtaris@apple.com> |
| |
| WK2 Quicklook for attachments |
| https://bugs.webkit.org/show_bug.cgi?id=208891 |
| |
| Reviewed by Darin Adler. |
| |
| Added to HTMLAttachmentElement to have member image representing |
| QuickLook thumbnail. Added code to render this image on both iOS and Mac. |
| |
| No new tests. Test will be added after additions to test infrastructure. |
| |
| * html/HTMLAttachmentElement.cpp: |
| (WebCore::HTMLAttachmentElement::updateThumbnailRepresentation): |
| Allow setting of thumbnail member. |
| * html/HTMLAttachmentElement.h: |
| * rendering/RenderThemeIOS.mm: |
| Added rendering of image member of attachment element. |
| (WebCore::RenderAttachmentInfo::RenderAttachmentInfo): |
| (WebCore::paintAttachmentIcon): |
| (WebCore::RenderThemeIOS::paintAttachment): |
| * rendering/RenderThemeMac.mm: |
| (WebCore::paintAttachmentIcon): |
| |
| 2020-04-20 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Add more structure-cloning tests for BigInt |
| https://bugs.webkit.org/show_bug.cgi?id=210765 |
| |
| Reviewed by Mark Lam. |
| |
| This patch adds safe-guard for future JSC primitive extension for structure-cloning. |
| We throw DataCloneError if we see unknown primitive value, which can happen if JSC |
| extends primitive value. |
| |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneSerializer::dumpImmediate): |
| (WebCore::CloneSerializer::dumpIfTerminal): |
| |
| 2020-04-20 Simon Fraser <simon.fraser@apple.com> |
| |
| Scrolling with background-attachment: fixed needs to trigger repaints |
| https://bugs.webkit.org/show_bug.cgi?id=193893 |
| <rdar://problem/47587017> |
| |
| Reviewed by Dean Jackson. |
| |
| When scrolling an overflow scroll which has "background-atttachment:fixed" in the content, |
| the node will have non-empty synchronous scrolling reasons. In this case we need to |
| send the scroll to the main thread, and trigger a repaint on scroll. |
| |
| If handling the wheel event on the scrolling thread determines that the scroll must be sent |
| to the main thread, EventDispatcher::wheelEvent() does so in the callback function. |
| |
| To trigger the repaint, RenderLayer::scrollTo() asks the composited layers backing whether |
| the node has synchronous scrolling reasons; this is implemented by asking the scrolling |
| coordinator. |
| |
| Test: scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-repaint.html |
| |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::hasSynchronousScrollingReasons const): |
| * page/scrolling/AsyncScrollingCoordinator.h: |
| * page/scrolling/ScrollingCoordinator.h: |
| (WebCore::ScrollingCoordinator::hasSynchronousScrollingReasons const): |
| * page/scrolling/ScrollingStateScrollingNode.h: |
| (WebCore::ScrollingStateScrollingNode::hasSynchronousScrollingReasons const): |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::handleWheelEvent): |
| * page/scrolling/ScrollingTreeScrollingNode.h: |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged): |
| * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeOverflowScrollingNodeMac::handleWheelEvent): Return SendToMainThread if this node |
| needs to do synchronous scrolling. |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::scrollTo): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::needsRepaintOnCompositedScroll const): |
| (WebCore::RenderLayerBacking::setRequiresOwnBackingStore): |
| (WebCore::RenderLayerBacking::setContentsNeedDisplay): |
| * rendering/RenderLayerBacking.h: |
| |
| 2020-04-20 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| MSVC: LayoutUnits.h(248): warning C4245: 'argument': conversion from 'const int' to 'size_t', signed/unsigned mismatch |
| https://bugs.webkit.org/show_bug.cgi?id=210592 |
| |
| Reviewed by Zalan Bujtas. |
| |
| * layout/LayoutUnits.h: |
| (WTF::HashTraits<WebCore::Layout::SlotPosition>::emptyValue): |
| (WTF::HashTraits<WebCore::Layout::SlotPosition>::constructDeletedValue): |
| (WTF::HashTraits<WebCore::Layout::SlotPosition>::isDeletedValue): |
| Use std::numeric_limits<size_t>::max() for empty and deleted |
| values instead of WebCore::intMinForLayoutUnit. |
| |
| 2020-04-20 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Text manipulation sometimes fails to replace text in title elements |
| https://bugs.webkit.org/show_bug.cgi?id=210750 |
| <rdar://problem/61066103> |
| |
| Reviewed by Tim Horton and Darin Adler. |
| |
| Internal clients using WebKit text manipulation APIs currently fail to replace text in title and option elements |
| in the case where text manipulation has been completed with more than one token. These are elements for which we |
| want to replace the entire text as a single token, even if the text manipulation client ends up breaking the |
| token into multiple chunks. |
| |
| To handle this case, pull the `title || option` check out into a helper function, and consult it when completing |
| text manipulation in the case where the manipulation data lacks either start or end positions. If |
| `canPerformTextManipulationByReplacingEntireTextContent` is true and there are multiple replacement tokens, |
| allow ourselves to process the replacement by combining the replacement tokens into a space-separated string. |
| |
| Test: TextManipulation.CompleteTextManipulationShouldReplaceTextContentWithMultipleTokens |
| |
| * editing/TextManipulationController.cpp: |
| (WebCore::canPerformTextManipulationByReplacingEntireTextContent): |
| (WebCore::TextManipulationController::observeParagraphs): |
| (WebCore::TextManipulationController::replace): |
| |
| 2020-04-20 Andres Gonzalez <andresg_22@apple.com> |
| |
| The rect for the primary screen should be retrieved on the main thread. |
| https://bugs.webkit.org/show_bug.cgi?id=210760 |
| |
| Reviewed by Chris Fleizach. |
| |
| - Call to screenRectForPrimaryScreen is dispatched to main thread. |
| - This value is cached since it is very unlikely to change in normal |
| usage and this would avoid hitting the main thread repeatedly. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper primaryScreenHeight]): |
| |
| 2020-04-15 Sergio Villar Senin <svillar@igalia.com> |
| |
| [WebXR] Update WebXRSession and WebXRSystem interfaces |
| https://bugs.webkit.org/show_bug.cgi?id=210553 |
| |
| Reviewed by Žan Doberšek. |
| |
| Update WebXRSession and WebXRSystem to the latest changes in the specs. |
| |
| * Modules/webxr/WebXRSession.idl: Added 3 new events. |
| * Modules/webxr/WebXRSystem.idl: Interface name is XR not XRSystem. |
| * bindings/js/WebCoreBuiltinNames.h: Renamed macro. |
| * dom/EventNames.h: Added 3 new events. |
| |
| 2020-04-20 Chris Dumez <cdumez@apple.com> |
| |
| Sending beacons when Fetch KeepAlive feature is disabled crashes the WebProcess |
| https://bugs.webkit.org/show_bug.cgi?id=210753 |
| <rdar://problem/61896221> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Test: http/wpt/beacon/beacon-legacy-code-path.html |
| |
| * testing/InternalSettings.cpp: |
| (WebCore::InternalSettings::Backup::Backup): |
| (WebCore::InternalSettings::Backup::restoreTo): |
| (WebCore::InternalSettings::setFetchAPIKeepAliveEnabled): |
| * testing/InternalSettings.h: |
| * testing/InternalSettings.idl: |
| Add internal settings to disable Fetch Keep Alive for layout testing. |
| |
| 2020-04-20 Youenn Fablet <youenn@apple.com> |
| |
| MediaPlayerPrivateMediaStreamAVFObjC should start play a newly added audio track if it is playing |
| https://bugs.webkit.org/show_bug.cgi?id=210740 |
| |
| Reviewed by Eric Carlson. |
| |
| Before the patch, MediaPlayerPrivateMediaStreamAVFObjC was not calling play on the audio renderer when the audio renderer |
| was added after the MediaPlayerPrivateMediaStreamAVFObjC was asked to play. |
| This patch makes it so that, on configuration of an audio track, it will be asked to play if its MediaPlayerPrivateMediaStreamAVFObjC is playing. |
| Add internals API to be able to write a test. |
| |
| Test: fast/mediastream/play-newly-added-audio-track.html |
| |
| * html/track/AudioTrack.h: |
| * html/track/AudioTrack.idl: |
| * platform/graphics/AudioTrackPrivate.h: |
| (WebCore::AudioTrackPrivate::isBackedByMediaStreamTrack const): |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: |
| (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks): |
| * platform/mediastream/AudioTrackPrivateMediaStream.cpp: |
| (WebCore::AudioTrackPrivateMediaStream::play): |
| * platform/mediastream/AudioTrackPrivateMediaStream.h: |
| (isType): |
| * testing/Internals.cpp: |
| (WebCore::Internals::isMockRealtimeMediaSourceCenterEnabled): |
| (WebCore::Internals::shouldAudioTrackPlay): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-04-20 Youenn Fablet <youenn@apple.com> |
| |
| Use a WeakHashSet to store MediaStreamPrivate observers |
| https://bugs.webkit.org/show_bug.cgi?id=210494 |
| |
| Reviewed by Eric Carlson. |
| |
| Remove observers from the MediaStream and migrate existing client (MediaRecorder) to MediaStreamPrivate::Observer. |
| Make use of WeakHashSet in MediaStreamPrivate to improve robustness of the code. |
| Any time the MediaStreamPrivate tracks are modified, observers will be notified. |
| MediaStream needs now to decide when to send an event when its MediaStreamPrivate notifies of new/deleted tracks, |
| Modernize a bit the code to use more references. |
| Covered by existing tests. |
| |
| * Modules/mediarecorder/MediaRecorder.cpp: |
| (WebCore::MediaRecorder::MediaRecorder): |
| (WebCore::MediaRecorder::~MediaRecorder): |
| (WebCore::MediaRecorder::handleTrackChange): |
| * Modules/mediarecorder/MediaRecorder.h: |
| * Modules/mediastream/MediaStream.cpp: |
| (WebCore::createTrackPrivateVector): |
| (WebCore::MediaStream::MediaStream): |
| (WebCore::MediaStream::~MediaStream): |
| (WebCore::MediaStream::addTrack): |
| (WebCore::MediaStream::removeTrack): |
| (WebCore::MediaStream::getTrackById): |
| (WebCore::MediaStream::didAddTrack): |
| (WebCore::MediaStream::didRemoveTrack): |
| (WebCore::MediaStream::addTrackFromPlatform): |
| (WebCore::MediaStream::internalAddTrack): |
| (WebCore::MediaStream::internalTakeTrack): |
| * Modules/mediastream/MediaStream.h: |
| * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: |
| (WebCore::LibWebRTCMediaEndpoint::removeRemoteTrack): |
| * platform/mediastream/MediaStreamPrivate.cpp: |
| (WebCore::MediaStreamPrivate::MediaStreamPrivate): |
| (WebCore::MediaStreamPrivate::addObserver): |
| (WebCore::MediaStreamPrivate::removeObserver): |
| (WebCore::MediaStreamPrivate::forEachObserver): |
| (WebCore::MediaStreamPrivate::computeActiveState): |
| (WebCore::MediaStreamPrivate::updateActiveState): |
| (WebCore::MediaStreamPrivate::addTrack): |
| (WebCore::MediaStreamPrivate::removeTrack): |
| (WebCore::MediaStreamPrivate::trackEnded): |
| * platform/mediastream/MediaStreamPrivate.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::removeMediaStreamTrack): |
| |
| 2020-04-19 Simon Fraser <simon.fraser@apple.com> |
| |
| Content disappears on CSS parallax example |
| https://bugs.webkit.org/show_bug.cgi?id=210732 |
| <rdar://problem/61997636> |
| |
| Reviewed by Darin Adler. |
| |
| If scrolling affects the computation of coverage rect of a TiledBacking, we plumb |
| that expanded coverage back into TransformState which is maintained during GraphicsLayer flushing, |
| and it's used to compute coverage rect for descendants. |
| |
| It's passed into TransformState::setLastPlanarSecondaryQuad(), which has to map it back into |
| the coordinate system of the last flattening ancestor. However, TransformState::mapQuad() |
| had a missing return and the quad mapping was wrong. The new code is now the same as |
| TransformState::mappedPoint() (you can see where the copy/paste error came from). |
| |
| Test: compositing/tiling/coverage-adjustment-secondary-quad-mapping.html |
| |
| * platform/graphics/transforms/TransformState.cpp: |
| (WebCore::TransformState::mapQuad const): |
| (WebCore::TransformState::flattenWithTransform): |
| |
| 2020-04-20 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Add support for border-collapse: collapse. |
| https://bugs.webkit.org/show_bug.cgi?id=210747 |
| |
| Reviewed by Antti Koivisto. |
| |
| Test: fast/layoutformattingcontext/table-flex-width-border-collapse.html |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::ensureTableGrid): |
| |
| 2020-04-20 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Oversized caret and selection rects in text fields on ganji.com and netflix.com/login |
| https://bugs.webkit.org/show_bug.cgi?id=210622 |
| <rdar://problem/45945636> |
| |
| Reviewed by Darin Adler. |
| |
| Currently, selection and caret rects in text fields on some web pages can be excessively tall. This patch makes |
| a small adjustment to allow the top of the caret or selection rect to snap to the top of the inline box instead |
| of being at the end of the previous line, in the case where there is no previous inline box. |
| |
| In the case where we compute the caret rect for an empty renderer (i.e. no children), we make an additional |
| tweak so that the caret rect's height is based on the computed font height instead of line height, and then we |
| ensure that the caret is (logically) vertically centered. |
| |
| See below for more details. |
| |
| Test: editing/selection/selection-and-caret-do-not-extend-to-line-height.html |
| |
| * rendering/RenderBlockFlow.cpp: |
| (WebCore::RenderBlockFlow::positionForPointWithInlineChildren): |
| |
| Specify ForHitTesting::Yes when asking for selectionTop(). |
| |
| * rendering/RenderBoxModelObject.cpp: |
| (WebCore::RenderBoxModelObject::localCaretRectForEmptyElement): |
| |
| Use FontMetric's height when computing the height of the caret rect, and then center it vertically in the |
| renderer. |
| |
| * rendering/RenderReplaced.cpp: |
| (WebCore::RenderReplaced::positionForPoint): |
| |
| Specify ForHitTesting::Yes when asking for selectionTop(). See below for more information. |
| |
| * rendering/RenderTextLineBoxes.cpp: |
| (WebCore::RenderTextLineBoxes::positionForPoint const): |
| * rendering/RootInlineBox.cpp: |
| (WebCore::RootInlineBox::selectionTop const): |
| |
| When computing selectionTop(), we currently fall back to using the top of the containing RenderBlockFlow |
| (`blockFlow().borderAndPaddingBefore()`) in the case where there is no previous root box. However, this can lead |
| to selection and caret rects being taller than expected; instead, we can use the max of the `selectionTop` |
| (that is, the top of the line box, adjusted for annotations) and the top of the RenderBlockFlow. This has the |
| effect of allowing the caret and selection to visually snap to the top of a run of text, provided there is not |
| already a line of text that precedes it. Taking the maximum of the two values ensures that we don't |
| unintentionally make the selection or caret rects even larger, if the line top is above the top of the block. |
| |
| Note that we also avoid shrinking the selection and caret rects when hit-testing renderers for positions and |
| ranges. This allows users to still click and drag to select text in the extra line-height area above a piece of |
| text, even if the selection is only painted over the text (and not in the region containing the line-height). |
| This behavior was established in the fix for webkit.org/b/14911, and is covered by the layout test |
| `editing/selection/inline-closest-leaf-child.html`. |
| |
| * rendering/RootInlineBox.h: |
| |
| 2020-04-20 Darin Adler <darin@apple.com> |
| |
| Use #import instead of #include in Objective-C and don't use #pragma once |
| https://bugs.webkit.org/show_bug.cgi?id=210724 |
| |
| Reviewed by David Kilzer. |
| |
| * page/cocoa/SettingsBaseCocoa.mm: |
| (WebCore::sansSerifTraditionalHanFontFamily): Deleted. |
| (WebCore::sansSerifSimplifiedHanFontFamily): Deleted. |
| (WebCore::SettingsBase::initializeDefaultFontFamilies): Just use font name |
| strings directly since there are no conditionals any more. |
| |
| * Modules/applepay/PaymentRequestValidator.mm: |
| * Modules/applepay/cocoa/PaymentContactCocoa.mm: |
| * accessibility/ios/WebAccessibilityObjectWrapperIOS.h: |
| * accessibility/mac/AXObjectCacheMac.mm: |
| * accessibility/mac/WebAccessibilityObjectWrapperBase.h: |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.h: |
| * bridge/objc/WebScriptObjectPrivate.h: |
| * bridge/objc/objc_class.mm: |
| * bridge/testbindings.mm: |
| * crypto/mac/SerializedCryptoKeyWrapMac.mm: |
| * editing/cocoa/WebArchiveResourceFromNSAttributedString.h: |
| * editing/cocoa/WebArchiveResourceWebResourceHandler.h: |
| * editing/cocoa/WebContentReaderCocoa.mm: |
| * history/mac/HistoryItemMac.mm: |
| * loader/cocoa/DiskCacheMonitorCocoa.mm: |
| * loader/cocoa/SubresourceLoaderCocoa.mm: |
| * loader/mac/ResourceLoaderMac.mm: |
| * page/cocoa/MemoryReleaseCocoa.mm: |
| * page/cocoa/ResourceUsageOverlayCocoa.mm: |
| * page/cocoa/ResourceUsageThreadCocoa.mm: |
| * page/ios/WebEventRegion.h: |
| * page/mac/ChromeMac.mm: |
| * page/mac/EventHandlerMac.mm: |
| * page/mac/WheelEventDeltaFilterMac.mm: |
| * page/scrolling/cocoa/ScrollingStateNode.mm: |
| * page/scrolling/mac/ScrollingCoordinatorMac.mm: |
| * page/scrolling/mac/ScrollingMomentumCalculatorMac.mm: |
| * page/scrolling/mac/ScrollingStateScrollingNodeMac.mm: |
| * page/scrolling/mac/ScrollingThreadMac.mm: |
| * page/scrolling/mac/ScrollingTreeMac.mm: |
| * platform/audio/cocoa/MediaSessionManagerCocoa.mm: |
| * platform/audio/mac/AudioSampleDataSource.mm: |
| * platform/cocoa/DataDetectorsCoreSoftLink.mm: |
| * platform/cocoa/PasteboardCocoa.mm: |
| * platform/cocoa/ScrollSnapAnimatorState.mm: |
| * platform/cocoa/SystemVersion.mm: |
| * platform/gamepad/cocoa/GameControllerGamepad.mm: |
| * platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm: |
| * platform/graphics/avfoundation/MediaSelectionGroupAVFObjC.mm: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm: |
| * platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm: |
| * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: |
| * platform/graphics/ca/cocoa/WebSystemBackdropLayer.h: |
| * platform/graphics/ca/cocoa/WebTiledBackingLayer.h: |
| * platform/graphics/ca/cocoa/WebVideoContainerLayer.h: |
| * platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: |
| * platform/graphics/cocoa/IOSurfacePoolCocoa.mm: |
| * platform/graphics/cocoa/TextTrackRepresentationCocoa.mm: |
| * platform/graphics/cocoa/WebGLLayer.h: |
| * platform/graphics/cocoa/WebGLLayer.mm: |
| * platform/graphics/cocoa/WebGPULayer.h: |
| * platform/graphics/cocoa/WebGPULayer.mm: |
| * platform/graphics/cv/ImageRotationSessionVT.mm: |
| * platform/graphics/cv/ImageTransferSessionVT.mm: |
| * platform/graphics/cv/TextureCacheCV.mm: |
| * platform/graphics/gpu/cocoa/GPUBufferMetal.mm: |
| * platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm: |
| * platform/graphics/mac/ComplexTextControllerCoreText.mm: |
| * platform/graphics/mac/FloatPointMac.mm: |
| * platform/graphics/mac/FloatSizeMac.mm: |
| * platform/graphics/mac/IntPointMac.mm: |
| * platform/graphics/mac/IntSizeMac.mm: |
| * platform/graphics/mac/WebLayer.h: |
| * platform/graphics/mac/WebLayer.mm: |
| * platform/ios/LegacyTileCache.mm: |
| * platform/ios/LegacyTileGrid.mm: |
| * platform/ios/LegacyTileGridTile.mm: |
| * platform/ios/LegacyTileLayer.h: |
| * platform/ios/LegacyTileLayer.mm: |
| * platform/ios/LegacyTileLayerPool.mm: |
| * platform/ios/LocalCurrentTraitCollection.mm: |
| * platform/ios/LocalizedDeviceModel.mm: |
| * platform/ios/ScrollbarThemeIOS.mm: |
| * platform/ios/WebCoreMotionManager.h: |
| * platform/ios/WebItemProviderPasteboard.mm: |
| * platform/ios/WebVideoFullscreenControllerAVKit.h: |
| * platform/mac/LocalCurrentGraphicsContext.mm: |
| * platform/mac/LocalDefaultSystemAppearance.mm: |
| * platform/mac/LoggingMac.mm: |
| * platform/mac/PlatformEventFactoryMac.mm: |
| * platform/mac/RemoteCommandListenerMac.mm: |
| * platform/mac/ScrollAnimatorMac.mm: |
| * platform/mac/SerializedPlatformDataCueMac.mm: |
| * platform/mac/WebCoreFullScreenPlaceholderView.mm: |
| * platform/mac/WebCoreFullScreenWarningView.h: |
| * platform/mac/WebCoreFullScreenWarningView.mm: |
| * platform/mac/WebCoreFullScreenWindow.h: |
| * platform/mac/WebCoreObjCExtras.mm: |
| * platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm: |
| * platform/mediasession/mac/MediaSessionInterruptionProviderMac.mm: |
| * platform/mediastream/ios/AVAudioSessionCaptureDevice.mm: |
| * platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm: |
| * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm: |
| * platform/mediastream/mac/RealtimeMediaSourceCenterMac.mm: |
| * platform/mediastream/mac/RealtimeVideoUtilities.mm: |
| * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm: |
| * platform/network/cocoa/CertificateInfoCocoa.mm: |
| * platform/network/cocoa/WebCoreNSURLSession.h: |
| * platform/network/mac/BlobDataFileReferenceMac.mm: |
| * platform/network/mac/CredentialStorageMac.mm: |
| * platform/network/mac/SynchronousLoaderClient.mm: |
| * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h: |
| * platform/text/cocoa/LocaleCocoa.mm: |
| * testing/ServiceWorkerInternals.mm: |
| * testing/cocoa/WebViewVisualIdentificationOverlay.h: |
| More #import, less #pragma once. |
| |
| 2020-04-20 Youenn Fablet <youenn@apple.com> |
| |
| Safari doesn't apply frameRate limit when request stream from Camera |
| https://bugs.webkit.org/show_bug.cgi?id=210186 |
| <rdar://problem/61452794> |
| |
| Reviewed by Eric Carlson. |
| |
| Add support to RealtimeVideoSource to decimate the video samples based on the observed frame rate of its capture source. |
| This allows supporting two tracks using the same capture device, one track being low frame rate and the other one high frame rate. |
| |
| Clean-up refactoring to make RealtimeVideoSource directly inherit from RealtimeVideoCaptureSource. |
| Migrate size and format of frame adaptation from RealtimeVideoCaptureSource to RealtimeVideoSource. |
| Fix mock capture source to update its frame rate when asked by applyConstraints. |
| |
| Tests: fast/mediastream/mediastreamtrack-video-frameRate-clone-decreasing.html |
| fast/mediastream/mediastreamtrack-video-frameRate-clone-increasing.html |
| fast/mediastream/mediastreamtrack-video-frameRate-decreasing.html |
| fast/mediastream/mediastreamtrack-video-frameRate-increasing.html |
| |
| * platform/mediastream/RealtimeVideoCaptureSource.cpp: |
| (WebCore::RealtimeVideoCaptureSource::dispatchMediaSampleToObservers): |
| (WebCore::RealtimeVideoCaptureSource::clientUpdatedSizeAndFrameRate): |
| * platform/mediastream/RealtimeVideoCaptureSource.h: |
| (WebCore::RealtimeVideoCaptureSource::observedFrameRate const): |
| * platform/mediastream/RealtimeVideoSource.cpp: |
| (WebCore::RealtimeVideoSource::RealtimeVideoSource): |
| (WebCore::m_source): |
| (WebCore::RealtimeVideoSource::adaptVideoSample): |
| (WebCore::RealtimeVideoSource::videoSampleAvailable): |
| * platform/mediastream/RealtimeVideoSource.h: |
| * platform/mock/MockRealtimeVideoSource.cpp: |
| (WebCore::MockRealtimeVideoSource::setFrameRateWithPreset): |
| * testing/Internals.cpp: |
| (WebCore::Internals::observeMediaStreamTrack): |
| |
| 2020-04-20 Antoine Quint <graouts@apple.com> |
| |
| WebAnimations API doesn't properly apply keyframe easings to transforms |
| https://bugs.webkit.org/show_bug.cgi?id=210526 |
| <rdar://problem/61800424> |
| |
| Reviewed by Antti Koivisto. |
| |
| GraphicsLayerCA has code that determines whether an animation can be accelerated looking at the timing function of its keyframes and excluding |
| animations that use a steps timing function as one of its values. However, we we would fail to set the timing function on the KeyframeValue for |
| each keyframe in the KeyframeList we create for a JS-originated animation. We now do this correctly. |
| |
| Test: webanimations/transform-animation-with-steps-timing-function-not-accelerated.html |
| |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::updateBlendingKeyframes): |
| |
| 2020-04-20 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| StructuredClone algorithm should be aware of BigInt |
| https://bugs.webkit.org/show_bug.cgi?id=210728 |
| |
| Reviewed by Mark Lam. |
| |
| This patch adds structured-cloning for BigInt and BigIntObject. |
| The logic is adding BigIntTag & BigIntObjectTag. And then we put content of BigInt with length. |
| And deserialization reads them to reconstruct BigInt or BigIntObject. |
| |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneSerializer::dumpImmediate): |
| (WebCore::CloneSerializer::dumpBigIntData): |
| (WebCore::CloneSerializer::dumpBigInt32Data): |
| (WebCore::CloneSerializer::dumpHeapBigIntData): |
| (WebCore::CloneSerializer::dumpIfTerminal): |
| (WebCore::CloneDeserializer::readBigInt): |
| (WebCore::CloneDeserializer::readTerminal): |
| |
| 2020-04-20 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][WPE] Enable resource load statistics |
| https://bugs.webkit.org/show_bug.cgi?id=210184 |
| |
| Reviewed by Žan Doberšek. |
| |
| * platform/network/soup/NetworkStorageSessionSoup.cpp: |
| (WebCore::NetworkStorageSession::setCookiesFromDOM const): Return early if cookies are blocked and update the |
| persistent cookies expiration if needed. |
| (WebCore::NetworkStorageSession::deleteCookiesForHostnames): Implement this when receiving |
| IncludeHttpOnlyCookies parameter. |
| (WebCore::NetworkStorageSession::hasCookies const): Implement this. |
| (WebCore::NetworkStorageSession::getRawCookies const): Honor shouldAskITP parameter. |
| (WebCore::cookiesForSession): Ditto. |
| (WebCore::NetworkStorageSession::cookiesForDOM const): Ditto. |
| (WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const): Ditto. |
| |
| 2020-04-19 Simon Fraser <simon.fraser@apple.com> |
| |
| Use Optional<FloatQuad> in TransformState |
| https://bugs.webkit.org/show_bug.cgi?id=144226 |
| |
| Reviewed by Sam Weinig. |
| |
| Use Optional<> instead of pointers in TransformState, make it loggable, make FloatQuad loggable. |
| |
| * platform/graphics/FloatQuad.cpp: |
| (WebCore::operator<<): |
| * platform/graphics/FloatQuad.h: |
| * platform/graphics/ca/GraphicsLayerCA.cpp: |
| (WebCore::GraphicsLayerCA::flushCompositingState): |
| (WebCore::GraphicsLayerCA::computeVisibleAndCoverageRect const): |
| (WebCore::GraphicsLayerCA::recursiveCommitChanges): |
| * platform/graphics/transforms/TransformState.cpp: |
| (WebCore::TransformState::operator=): |
| (WebCore::TransformState::mappedSecondaryQuad const): |
| (WebCore::TransformState::setLastPlanarSecondaryQuad): |
| (WebCore::TransformState::flattenWithTransform): |
| (WebCore::operator<<): |
| * platform/graphics/transforms/TransformState.h: |
| (WebCore::TransformState::setSecondaryQuad): |
| (WebCore::TransformState::lastPlanarSecondaryQuad const): |
| (WebCore::TransformState::isMappingSecondaryQuad const): |
| (WebCore::TransformState::accumulatedTransform const): |
| |
| 2020-04-19 Rob Buis <rbuis@igalia.com> |
| |
| Remove unneeded code from FrameLoader::loadURL |
| https://bugs.webkit.org/show_bug.cgi?id=210696 |
| |
| Reviewed by Darin Adler. |
| |
| Remove unneeded code from FrameLoader::loadURL, since the only way the load type can be Reload |
| is if loadFrameRequest set it, and the only way loadFrameRequest can set it is if cachePolicy |
| is ReloadIgnoringCacheData, so no need to set it again in FrameLoader::loadURL. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURL): |
| |
| 2020-04-19 Brady Eidson <beidson@apple.com> |
| |
| Add WKScriptMessageHandler API that asynchronously responds with a promise. |
| rdar://problem/57243492 and https://bugs.webkit.org/show_bug.cgi?id=206398 |
| |
| Reviewed by Andy Estes. |
| |
| Covered by new API tests. |
| |
| Updated for moving an #include into implementation files: |
| * bindings/js/JSDOMPromiseDeferred.cpp: |
| * bindings/js/JSDOMPromiseDeferred.h: |
| * html/HTMLMediaElement.cpp: |
| * page/DOMWindow.cpp: |
| * workers/service/ServiceWorkerGlobalScope.cpp: |
| |
| * page/UserMessageHandler.cpp: |
| (WebCore::UserMessageHandler::postMessage): Return a promise to be fulfilled by the API client. |
| * page/UserMessageHandler.h: |
| * page/UserMessageHandler.idl: |
| * page/UserMessageHandlerDescriptor.h: |
| |
| 2020-04-19 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Add column spanning support for flexible table width |
| https://bugs.webkit.org/show_bug.cgi?id=210713 |
| |
| Reviewed by Antti Koivisto. |
| |
| Test: fast/layoutformattingcontext/table-flex-width-colspans.html |
| |
| This patch slightly changes the extra space distribution logic by using either the minimum or |
| the maximum width as the base initial width for the columns. |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::TableFormattingContext::computeColumnWidths): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): Deleted. |
| * layout/tableformatting/TableFormattingContext.h: |
| |
| 2020-04-19 Emilio Cobos Álvarez <emilio@crisal.io> |
| |
| Don't use the inherited custom properties to store environment variables. |
| https://bugs.webkit.org/show_bug.cgi?id=210707 |
| |
| Reviewed by Antti Koivisto. |
| |
| It leaks this implementation detail when enumerating the computed style. |
| |
| Tests: imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml.xhtml |
| imported/w3c/web-platform-tests/css/cssom/getComputedStyle-logical-enumeration.html |
| |
| * css/CSSVariableReferenceValue.cpp: |
| (WebCore::resolveVariableReference): |
| (WebCore::resolveTokenRange): |
| * style/StyleResolveForDocument.cpp: |
| (WebCore::Style::resolveForDocument): |
| |
| 2020-04-19 Antti Koivisto <antti@apple.com> |
| |
| [CSS selectors] :is() / :where() should not allow pseudo-elements at parse-time |
| https://bugs.webkit.org/show_bug.cgi?id=210701 |
| |
| Reviewed by Anders Carlsson. |
| |
| https://drafts.csswg.org/selectors/#matches: |
| |
| "Pseudo-elements cannot be represented by the matches-any pseudo-class; they are not valid within :is()." |
| |
| Test: fast/selectors/pseudo-element-in-is-where.html |
| |
| * css/parser/CSSSelectorParser.cpp: |
| (WebCore::CSSSelectorParser::consumePseudo): |
| |
| 2020-04-19 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Take border spacing into account when distributing column spanners width. |
| https://bugs.webkit.org/show_bug.cgi?id=210712 |
| |
| Reviewed by Antti Koivisto. |
| |
| While distributing the column spanner extra space among individual columns, |
| the spacing between these columns (set by border-spacing) should be taken into |
| account and subtract it from the width to distribute. |
| |
| <table style="border-spacing: 50px"><tr><td colspan=2>long long text</td></tr><tr><td>lo</td><td>xt</td><tr></table> |
| [long long text] |
| [lo] [xt] |
| The individual columns don't require any extra space from the spanner. |
| |
| * layout/FormattingContext.h: |
| (WebCore::Layout::FormattingContext::IntrinsicWidthConstraints::operator+=): |
| (WebCore::Layout::FormattingContext::IntrinsicWidthConstraints::operator-=): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints): |
| (WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): |
| * layout/tableformatting/TableGrid.h: |
| (WebCore::Layout::TableGrid::horizontalSpacing const): |
| (WebCore::Layout::TableGrid::totalHorizontalSpacing const): Deleted. |
| |
| 2020-04-19 Emilio Cobos Álvarez <emilio@crisal.io> |
| |
| Fix the logic to decide whether a property is enumerated in a computed style declaration. |
| https://bugs.webkit.org/show_bug.cgi?id=210695 |
| |
| Reviewed by Antti Koivisto. |
| |
| Fix the logic to decide whether a property is enumerated in a computed |
| style declaration. |
| |
| Logical properties don't need stylebuilder code, but still should be |
| generated. Using the specification->category for this seems a bit |
| hacky, but unclear if it's worse than adding a new flag. |
| |
| Tests: fast/css/getComputedStyle/computed-style-enumeration.html |
| imported/w3c/web-platform-tests/css/cssom/getComputedStyle-logical-enumeration.html |
| |
| * css/makeprop.pl: |
| (skippedFromComputedStyle): |
| (isLogical): |
| (sortWithPrefixedPropertiesLast): |
| |
| 2020-04-18 Antti Koivisto <antti@apple.com> |
| |
| [CSS selectors] Support :where() pseudo class |
| https://bugs.webkit.org/show_bug.cgi?id=210690 |
| |
| Reviewed by Sam Weinig. |
| |
| "The Specificity-adjustment pseudo-class, :where(), is a functional pseudo-class with the same |
| syntax and functionality as :is(). Unlike :is(), neither the :where pseudo-class, nor any of |
| its arguments contribute to the specificity of the selector—its specificity is always zero. |
| |
| This is useful for introducing filters in a selector while keeping the associated style |
| declarations easy to override." |
| |
| https://drafts.csswg.org/selectors-4/#zero-matches |
| |
| In terms of implementation this is just another alias for :is() with different (always 0) specificity. |
| |
| Test: fast/selectors/where-specificity.html |
| |
| * css/CSSSelector.cpp: |
| (WebCore::simpleSelectorSpecificityInternal): |
| |
| Here is where it differs from PseudoClassIs. |
| |
| (WebCore::CSSSelector::selectorText const): |
| * css/CSSSelector.h: |
| * css/SelectorChecker.cpp: |
| (WebCore::SelectorChecker::checkOne const): |
| * css/SelectorPseudoClassAndCompatibilityElementMap.in: |
| * css/parser/CSSSelectorParser.cpp: |
| (WebCore::isOnlyPseudoClassFunction): |
| (WebCore::CSSSelectorParser::consumePseudo): |
| * cssjit/SelectorCompiler.cpp: |
| (WebCore::SelectorCompiler::addPseudoClassType): |
| |
| 2020-04-18 Rob Buis <rbuis@igalia.com> |
| |
| Reduce parameter list of the FrameLoadRequest constructor |
| https://bugs.webkit.org/show_bug.cgi?id=210668 |
| |
| Reviewed by Darin Adler. |
| |
| Reduce parameter list of the FrameLoadRequest constructor by |
| instead using various setters. By choosing the most common |
| defaults the actual number of setters to call are minimized. |
| |
| * inspector/InspectorFrontendClientLocal.cpp: |
| (WebCore::InspectorFrontendClientLocal::openInNewTab): |
| * inspector/agents/InspectorPageAgent.cpp: |
| (WebCore::InspectorPageAgent::navigate): |
| * loader/DocumentLoader.cpp: |
| (WebCore::DocumentLoader::handleProvisionalLoadFailureFromContentFilter): |
| * loader/FrameLoadRequest.cpp: |
| (WebCore::FrameLoadRequest::FrameLoadRequest): |
| * loader/FrameLoadRequest.h: |
| (WebCore::FrameLoadRequest::FrameLoadRequest): |
| (WebCore::FrameLoadRequest::disableShouldReplaceDocumentIfJavaScriptURL): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::changeLocation): |
| (WebCore::FrameLoader::loadURLIntoChildFrame): |
| * loader/NavigationScheduler.cpp: |
| (WebCore::NavigationScheduler::scheduleLocationChange): |
| * page/ContextMenuController.cpp: |
| (WebCore::openNewWindow): |
| (WebCore::ContextMenuController::contextMenuItemSelected): |
| * page/DOMWindow.cpp: |
| (WebCore::DOMWindow::createWindow): |
| * page/DragController.cpp: |
| (WebCore::DragController::performDragOperation): |
| |
| 2020-04-18 David Kilzer <ddkilzer@apple.com> |
| |
| Attempt #3 to fix tvOS build |
| |
| Unreviewed. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer): |
| (WebCore::MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback): |
| - Use !PLATFORM(APPLETV) to comment out functions declared within |
| ENABLE(VIDEO_PRESENTATION_MODE) from r260307 and r260308. |
| |
| 2020-04-18 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| [WTF] Move DataRef.h from WebCore to WTF to utilize it in JSC |
| https://bugs.webkit.org/show_bug.cgi?id=210689 |
| |
| Reviewed by Anders Carlsson. |
| |
| No behavior change, just moving header from WebCore to WTF. |
| |
| * Headers.cmake: |
| * WebCore.xcodeproj/project.pbxproj: |
| * rendering/style/NinePieceImage.h: |
| * rendering/style/RenderStyle.h: |
| * rendering/style/SVGRenderStyle.h: |
| * rendering/style/StyleRareInheritedData.cpp: |
| * rendering/style/StyleRareInheritedData.h: |
| * rendering/style/StyleRareNonInheritedData.h: |
| |
| 2020-04-18 David Kilzer <ddkilzer@apple.com> |
| |
| Attempt #2 to fix tvOS build |
| |
| Unreviewed. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: |
| - Add #if ENABLE(VIDEO_PRESENTATION_MODE)/#endif to protect |
| methods defined in MediaPlayerPrivate.h. |
| - The previous commit was (r260307) also to fix tvOS, not watchOS. |
| |
| 2020-04-18 David Kilzer <ddkilzer@apple.com> |
| |
| Attempt to fix watchOS build |
| |
| Unreviewed. |
| |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: |
| - Add #if ENABLE(VIDEO_PRESENTATION_MODE)/#endif to protect |
| methods defined in MediaPlayerPrivate.h. |
| |
| 2020-04-17 Simon Fraser <simon.fraser@apple.com> |
| |
| Group overflow controls layers into a single container layer |
| https://bugs.webkit.org/show_bug.cgi?id=210675 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Overflow control layers are going to change z-order in a future change. To make this |
| easier, group the overflow controls layer into their own container layer. |
| |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateDebugIndicators): |
| (WebCore::RenderLayerBacking::updateGeometry): Size the overflow controls layer using paddingBoxRectIncludingScrollbar(). |
| (WebCore::RenderLayerBacking::updateInternalHierarchy): New parenting. |
| (WebCore::RenderLayerBacking::updateOverflowControlsLayers): Some refactoring with a nice lambda. |
| (WebCore::RenderLayerBacking::positionOverflowControlsLayers): Lovely lambda here. Nice. |
| * rendering/RenderLayerBacking.h: |
| |
| 2020-04-17 Kate Cheney <katherine_cheney@apple.com> |
| |
| Enable service workers for app-bound domains |
| https://bugs.webkit.org/show_bug.cgi?id=210451 |
| <rdar://problem/61479474> |
| |
| Reviewed by Brent Fulgham. |
| |
| SWServer now retrieves the app-bound domains from the UI Process and |
| only continues with the load if the proper entitlement is present |
| or the load is coming from an app-bound domain. |
| |
| * workers/service/server/SWServer.cpp: |
| (WebCore::SWServer::addRegistrationFromStore): |
| (WebCore::SWServer::SWServer): |
| (WebCore::SWServer::validateRegistrationDomain): |
| (WebCore::SWServer::scheduleJob): |
| * workers/service/server/SWServer.h: |
| |
| 2020-04-17 Dean Jackson <dino@apple.com> |
| |
| [WebGL] Confirm there are no errors when setting up framebuffers |
| https://bugs.webkit.org/show_bug.cgi?id=210632 |
| <rdar://problem/61916680> |
| |
| Reviewed by Simon Fraser. |
| |
| We're seeing crashes on macOS inside GraphicsContextGL::reshape(). |
| Specifically when we submit work at the end of the function via |
| glFlush. |
| |
| At the moment the cause is a mystery, because we should bail out |
| before then if the multisample renderbuffer was not complete. In |
| the hope that it helps somewhat, add a call to glGetError to double |
| check that there isn't anything horribly wrong before we talk to |
| the GPU. |
| |
| * html/canvas/WebGL2RenderingContext.cpp: |
| (WebCore::WebGL2RenderingContext::WebGL2RenderingContext): If the underlying |
| GCGL context was marked as "LOST" during initialization, skip the rest of our |
| initialization. |
| * html/canvas/WebGLRenderingContext.cpp: Ditto. |
| (WebCore::WebGLRenderingContext::WebGLRenderingContext): |
| * html/canvas/WebGLRenderingContextBase.cpp: Ditto. |
| (WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase): |
| |
| * platform/graphics/angle/GraphicsContextGLANGLE.cpp: Check for a GL error during |
| setup and, if there is one, skip directly into a LOST state. |
| (WebCore::GraphicsContextGLOpenGL::reshape): |
| * platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp: |
| (WebCore::GraphicsContextGLOpenGL::reshape): |
| |
| 2020-04-17 Peng Liu <peng.liu6@apple.com> |
| |
| Cleanup the macros for video fullscreen and picture-in-picture |
| https://bugs.webkit.org/show_bug.cgi?id=210638 |
| |
| Reviewed by Eric Carlson. |
| |
| A follow-up patch to fix build failures of r260259. |
| |
| * platform/ios/VideoFullscreenInterfaceAVKit.h: |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| * platform/ios/WebVideoFullscreenControllerAVKit.mm: |
| |
| 2020-04-17 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r234105): [iOS] WKColorButton leaks a UIColor |
| <https://webkit.org/b/210658> |
| <rdar://problem/61938137> |
| |
| Reviewed by Darin Adler. |
| |
| * html/ColorInputType.cpp: |
| (WebCore::ColorInputType::isKeyboardFocusable const): |
| * page/Chrome.cpp: |
| (WebCore::Chrome::createColorChooser): |
| - Drive-by fix of unreachable code on PLATFORM(IOS_FAMILY). |
| |
| 2020-04-17 Don Olmstead <don.olmstead@sony.com> |
| |
| [CMake] Add WebKit::WebCore target |
| https://bugs.webkit.org/show_bug.cgi?id=210445 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Add a WebKit::WebCore target. Remove the WebCoreHeaderInterface target since |
| the WebKit::WebCore target is functionaly the same. |
| |
| * CMakeLists.txt: |
| |
| 2020-04-17 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, reverting r260245. |
| |
| The tests added with this change are frequently failing on |
| macOS bots. |
| |
| Reverted changeset: |
| |
| "Safari doesn't apply frameRate limit when request stream from |
| Camera" |
| https://bugs.webkit.org/show_bug.cgi?id=210186 |
| https://trac.webkit.org/changeset/260245 |
| |
| 2020-04-17 Per Arne Vollan <pvollan@apple.com> |
| |
| Unreviewed build fix. |
| |
| * platform/cocoa/AGXCompilerService.cpp: |
| |
| 2020-04-17 Antoine Quint <graouts@apple.com> |
| |
| Stop including style rules related to media controls in the UA style sheet when Modern Media Controls are enabled |
| https://bugs.webkit.org/show_bug.cgi?id=210606 |
| |
| Reviewed by Antti Koivisto and Daniel Bates. |
| |
| There is no need to insert style rules related to media controls in the UA stylesheet when Modern Media Controls are enabled. |
| There is one rule from mediaControlsApple.css for the default sizing of <audio> that makes sense broadly for content on the Web |
| so we move that to html.css. We also set the background-color property for media documents in html.css. |
| |
| * Modules/mediacontrols/mediaControlsApple.css: |
| (audio): Deleted. |
| (body:-webkit-full-page-media): Deleted. |
| * Modules/mediacontrols/mediaControlsiOS.css: |
| (body:-webkit-full-page-media): Deleted. |
| * Modules/modern-media-controls/controls/media-document.css: |
| (:host(.media-document)): |
| * css/html.css: |
| (body:-webkit-full-page-media): |
| (audio): |
| * css/mediaControls.css: |
| (body:-webkit-full-page-media): Deleted. |
| * style/UserAgentStyle.cpp: |
| (WebCore::Style::UserAgentStyle::ensureDefaultStyleSheetsForElement): |
| |
| 2020-04-17 Peng Liu <peng.liu6@apple.com> |
| |
| Cleanup the macros for video fullscreen and picture-in-picture |
| https://bugs.webkit.org/show_bug.cgi?id=210638 |
| |
| Reviewed by Eric Carlson. |
| |
| Replace some "#if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))" |
| and all "#if (PLATFORM(IOS_FAMILY) && HAVE(AVKIT)) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))" |
| with "#if ENABLE(VIDEO_PRESENTATION_MODE)". |
| |
| No new tests, no functional change. |
| |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::mediaEngineWasUpdated): |
| (WebCore::HTMLMediaElement::setVideoFullscreenStandby): |
| * html/HTMLMediaElement.h: |
| * html/HTMLVideoElement.cpp: |
| * html/HTMLVideoElement.h: |
| * platform/PictureInPictureSupport.h: |
| * platform/cocoa/VideoFullscreenChangeObserver.h: |
| * platform/cocoa/VideoFullscreenModel.h: |
| * platform/cocoa/VideoFullscreenModelVideoElement.h: |
| * platform/cocoa/VideoFullscreenModelVideoElement.mm: |
| * platform/graphics/MediaPlayer.cpp: |
| * platform/graphics/MediaPlayer.h: |
| * platform/graphics/MediaPlayerPrivate.h: |
| * platform/ios/VideoFullscreenInterfaceAVKit.mm: |
| (WebCore::supportsPictureInPicture): |
| |
| 2020-04-17 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Resolve the minimum width for overlapping spanner columns |
| https://bugs.webkit.org/show_bug.cgi?id=210654 |
| |
| Reviewed by Antti Koivisto. |
| |
| The extra horizontal space distribution is based on the columns' minimum widths. |
| In case of column spanners, first we need to distribute the spanner's minimum |
| width across the columns using the non-spanning minimum widths as the distribution ratio. |
| When there's no non-spanning minimum width for a column (all rows have column spanners for tbis particular column) |
| the minimum width gets distributed equally across the spanned columns. This distribution starts with the shortest columns spans |
| so that we can use these resolved column widths to compute the wider ones. |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): |
| |
| 2020-04-17 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK] Update for GdkKeymap API changes |
| https://bugs.webkit.org/show_bug.cgi?id=210642 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| No new tests needed. |
| |
| gdk_keymap_get_default() is deprecated in GTK+ 3.22, so use |
| gdk_keymap_get_for_display() instead. Since in GTK4 this method is |
| removed to gdk_display_get_keymap(), add a helper to |
| GtkVersioning.h to avoid cluttering with ifdefs all over the |
| place. |
| |
| * platform/gtk/GtkVersioning.h: |
| (gdk_keymap_get_for_display): |
| * platform/gtk/PlatformKeyboardEventGtk.cpp: |
| (WebCore::PlatformKeyboardEvent::currentCapsLockState): |
| (WebCore::PlatformKeyboardEvent::modifiersContainCapsLock): |
| |
| 2020-04-17 Oriol Brufau <obrufau@igalia.com> |
| |
| Revert "[css-grid] Exclude implicit grid tracks from the resolved value" |
| https://bugs.webkit.org/show_bug.cgi?id=210617 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| Revert r254561 since it appears to be breaking site authoring tools |
| which were relying on the previous behaviour. |
| |
| Tests: fast/css-grid-layout/grid-auto-columns-rows-get-set.html |
| fast/css-grid-layout/grid-columns-rows-get-set.html |
| fast/css-grid-layout/grid-template-shorthand-get-set.html |
| fast/css-grid-layout/mark-as-infinitely-growable.html |
| fast/css-grid-layout/named-grid-lines-computed-style-implicit-tracks.html |
| fast/css-grid-layout/negative-growth-share-as-infinity-crash.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-flexible-lengths-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-grid-template-columns-rows-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-named-grid-lines-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-repeat-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-support-flexible-lengths-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-support-grid-template-columns-rows-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-support-named-grid-lines-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-support-repeat-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.html |
| imported/w3c/web-platform-tests/css/css-grid/grid-layout-properties.html |
| imported/w3c/web-platform-tests/css/css-grid/parsing/grid-template-columns-computed-withcontent.html |
| imported/w3c/web-platform-tests/css/css-grid/parsing/grid-template-rows-computed-withcontent.html |
| |
| * css/CSSComputedStyleDeclaration.cpp: |
| (WebCore::valueForGridTrackList): |
| * rendering/RenderGrid.cpp: |
| (WebCore::RenderGrid::trackSizesForComputedStyle const): |
| |
| 2020-04-17 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Deny iokit open access to graphics related classes |
| https://bugs.webkit.org/show_bug.cgi?id=210616 |
| |
| Reviewed by Darin Adler. |
| |
| Deny iokit open access to graphics related classes in the WebContent process on iOS, but issue |
| extensions for these for some devices which still need access to them. |
| |
| API test: WebKit.IOKitOpenSandboxAccessForDeviceWithAGXCompilerService |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/cocoa/AGXCompilerService.cpp: Added. |
| (WebCore::setDeviceHasAGXCompilerServiceForTesting): |
| (WebCore::deviceHasAGXCompilerService): |
| * platform/cocoa/AGXCompilerService.h: Added. |
| * testing/Internals.cpp: |
| (WebCore::Internals::hasSandboxIOKitOpenAccessToClass): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| * testing/Internals.mm: |
| (WebCore::Internals::hasSandboxIOKitOpenAccessToClass): |
| |
| 2020-04-17 Youenn Fablet <youenn@apple.com> |
| |
| Safari doesn't apply frameRate limit when request stream from Camera |
| https://bugs.webkit.org/show_bug.cgi?id=210186 |
| <rdar://problem/61452794> |
| |
| Reviewed by Eric Carlson. |
| |
| Add support to RealtimeVideoSource to decimate the video samples based on the observed frame rate of its capture source. |
| This allows supporting two tracks using the same capture device, one track being low frame rate and the other one high frame rate. |
| |
| Clean-up refactoring to make RealtimeVideoSource directly inherit from RealtimeVideoCaptureSource. |
| Migrate size and format of frame adaptation from RealtimeVideoCaptureSource to RealtimeVideoSource. |
| Fix mock capture source to update its frame rate when asked by applyConstraints. |
| |
| Tests: fast/mediastream/mediastreamtrack-video-frameRate-clone-decreasing.html |
| fast/mediastream/mediastreamtrack-video-frameRate-clone-increasing.html |
| fast/mediastream/mediastreamtrack-video-frameRate-decreasing.html |
| fast/mediastream/mediastreamtrack-video-frameRate-increasing.html |
| |
| * platform/mediastream/RealtimeVideoCaptureSource.cpp: |
| (WebCore::RealtimeVideoCaptureSource::dispatchMediaSampleToObservers): |
| (WebCore::RealtimeVideoCaptureSource::clientUpdatedSizeAndFrameRate): |
| * platform/mediastream/RealtimeVideoCaptureSource.h: |
| (WebCore::RealtimeVideoCaptureSource::observedFrameRate const): |
| * platform/mediastream/RealtimeVideoSource.cpp: |
| (WebCore::RealtimeVideoSource::RealtimeVideoSource): |
| (WebCore::m_source): |
| (WebCore::RealtimeVideoSource::adaptVideoSample): |
| (WebCore::RealtimeVideoSource::videoSampleAvailable): |
| * platform/mediastream/RealtimeVideoSource.h: |
| * platform/mock/MockRealtimeVideoSource.cpp: |
| (WebCore::MockRealtimeVideoSource::setFrameRateWithPreset): |
| * testing/Internals.cpp: |
| (WebCore::Internals::observeMediaStreamTrack): |
| |
| 2020-04-17 Alexey Shvayka <shvaikalesh@gmail.com> |
| |
| MediaQueryList should extend EventTarget |
| https://bugs.webkit.org/show_bug.cgi?id=203288 |
| |
| Reviewed by Darin Adler. |
| |
| Initially, CSSOM View Module specification [1] had a custom callback mechanism with addListener() and removeListener(), |
| and the callback was invoked with the associated MediaQueryList as argument. |
| |
| Now the normal event mechanism [2] is used instead. For backwards compatibility, addListener() and removeListener() |
| methods are basically aliases for addEventListener() and removeEventListener(), respectively, and the "change" event |
| masquerades as a MediaQueryList. |
| |
| This patch implements new event mechanism, aligning WebKit with Blink and SpiderMonkey, and also fixes |
| a few minor spec incompatibilities: mandatory listener argument, "handleEvent" support, and listeners call order. |
| |
| [1]: https://www.w3.org/TR/2011/WD-cssom-view-20110804/#mediaquerylist |
| [2]: https://www.w3.org/TR/cssom-view-1/#mediaquerylist |
| |
| Tests: fast/media/media-query-list-07.html |
| web-platform-tests/css/cssom-view/MediaQueryList-addListener-handleEvent.html |
| web-platform-tests/css/cssom-view/MediaQueryList-addListener-removeListener.html |
| web-platform-tests/css/cssom-view/MediaQueryList-extends-EventTarget.html |
| web-platform-tests/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html |
| web-platform-tests/css/cssom-view/MediaQueryListEvent.html |
| web-platform-tests/css/cssom-view/idlharness.html |
| web-platform-tests/css/cssom-view/matchMedia.html |
| |
| * CMakeLists.txt: |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * bindings/js/WebCoreBuiltinNames.h: |
| * bindings/scripts/test/JS/*: Updated. |
| * css/MediaQueryList.cpp: |
| (WebCore::MediaQueryList::MediaQueryList): |
| (WebCore::MediaQueryList::create): |
| (WebCore::MediaQueryList::~MediaQueryList): |
| (WebCore::MediaQueryList::addListener): |
| (WebCore::MediaQueryList::removeListener): |
| * css/MediaQueryList.h: |
| * css/MediaQueryList.idl: |
| * css/MediaQueryListEvent.cpp: Added. |
| (WebCore::MediaQueryListEvent::MediaQueryListEvent): |
| * css/MediaQueryListEvent.h: Added. |
| * css/MediaQueryListEvent.idl: Added. |
| * css/MediaQueryListListener.h: Removed. |
| * css/MediaQueryListListener.idl: Removed. |
| * css/MediaQueryMatcher.cpp: |
| (WebCore::MediaQueryMatcher::documentDestroyed): |
| (WebCore::MediaQueryMatcher::addMediaQueryList): |
| (WebCore::MediaQueryMatcher::removeMediaQueryList): |
| (WebCore::MediaQueryMatcher::matchMedia): |
| (WebCore::MediaQueryMatcher::evaluateAll): |
| (WebCore::MediaQueryMatcher::addListener): Deleted. |
| (WebCore::MediaQueryMatcher::removeListener): Deleted. |
| * css/MediaQueryMatcher.h: |
| * dom/EventNames.in: |
| * dom/EventTarget.h: |
| (WebCore::EventTarget::removeEventListener): |
| * dom/EventTargetFactory.in: |
| |
| 2020-04-17 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Unreviewed build fix after r260123 |
| |
| No new tests needed. |
| |
| * platform/gtk/CursorGtk.cpp: |
| (WebCore::createCustomCursor): Pass missing pixel buffer data pointer to gdk_memory_texture_new(). |
| |
| 2020-04-17 Youenn Fablet <youenn@apple.com> |
| |
| Make use of WeakHashSet for MediaStreamTrackPrivate and RealtimeMediaSource observers |
| https://bugs.webkit.org/show_bug.cgi?id=210492 |
| |
| Reviewed by Geoffrey Garen. |
| |
| We are making use of WeakHashSet to improve the robustness of the code. |
| For that purpose we use the new WeakHashSet::forEach method. |
| No change of behavior. |
| |
| * Modules/mediarecorder/MediaRecorder.h: |
| * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h: |
| * platform/mediastream/MediaStreamPrivate.cpp: |
| (WebCore::MediaStreamPrivate::forEachObserver const): |
| * platform/mediastream/MediaStreamTrackPrivate.cpp: |
| (WebCore::MediaStreamTrackPrivate::forEachObserver): |
| (WebCore::MediaStreamTrackPrivate::addObserver): |
| (WebCore::MediaStreamTrackPrivate::removeObserver): |
| (WebCore::MediaStreamTrackPrivate::forEachObserver const): Deleted. |
| * platform/mediastream/MediaStreamTrackPrivate.h: |
| (WebCore::MediaStreamTrackPrivate::hasObserver const): Deleted. |
| * platform/mediastream/RealtimeMediaSource.cpp: |
| (WebCore::RealtimeMediaSource::addAudioSampleObserver): |
| (WebCore::RealtimeMediaSource::removeAudioSampleObserver): |
| (WebCore::RealtimeMediaSource::addObserver): |
| (WebCore::RealtimeMediaSource::removeObserver): |
| (WebCore::RealtimeMediaSource::forEachObserver): |
| (WebCore::RealtimeMediaSource::notifyMutedObservers): |
| (WebCore::RealtimeMediaSource::requestToEnd): |
| (WebCore::RealtimeMediaSource::forEachObserver const): Deleted. |
| (WebCore::RealtimeMediaSource::notifyMutedObservers const): Deleted. |
| * platform/mediastream/RealtimeMediaSource.h: |
| * platform/mediastream/RealtimeOutgoingVideoSource.h: |
| |
| 2020-04-17 Rob Buis <rbuis@igalia.com> |
| |
| Move allowPlugins to FrameLoader |
| https://bugs.webkit.org/show_bug.cgi?id=205876 |
| |
| Reviewed by Darin Adler. |
| |
| Move allowPlugins to FrameLoader to reduce |
| pointer dereferences and lessen dependency |
| on SubframeLoader. Also rename to |
| arePluginsEnabled since the method is asking |
| the Setting with the same name. |
| |
| * dom/DOMImplementation.cpp: |
| (WebCore::DOMImplementation::createDocument): |
| * html/HTMLElement.cpp: |
| (WebCore::HTMLElement::rendererIsEverNeeded): |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::arePluginsEnabled): |
| * loader/FrameLoader.h: |
| * loader/SubframeLoader.cpp: |
| (WebCore::SubframeLoader::createJavaAppletWidget): |
| (WebCore::SubframeLoader::allowPlugins): Deleted. |
| * loader/SubframeLoader.h: |
| * plugins/DOMMimeType.cpp: |
| (WebCore::DOMMimeType::enabledPlugin const): |
| |
| 2020-04-17 Tomoki Imai <Tomoki.Imai@sony.com> |
| |
| Fix an integer overflow in WebCrypto AES-CTR Mac implementation, which may detect a false loop |
| https://bugs.webkit.org/show_bug.cgi?id=210540 |
| |
| (1 << counterLength) causes an integer overflow, and the undefined behavior. |
| The longest valid counterLength on 64 bit machine is 63, |
| and the literal 1 is considered as 32-bit signed integer. |
| Left shifting 1 beyond or to sign-bit is undefined behavior in C++ spec. |
| - https://en.cppreference.com/w/cpp/language/integer_literal |
| - https://en.cppreference.com/w/cpp/language/operator_arithmetic#Bitwise_shift_operators |
| |
| This issue is originally found in https://bugs.webkit.org/show_bug.cgi?id=208186#c2 |
| |
| Reviewed by Jiewen Tan. |
| |
| Test: crypto/subtle/aes-ctr-import-key-encrypt.html |
| |
| * crypto/mac/CryptoAlgorithmAES_CTRMac.cpp: |
| (WebCore::transformAES_CTR): |
| |
| 2020-04-16 Simon Fraser <simon.fraser@apple.com> |
| |
| Scrolling-tree hit-testing is off by top content inset |
| https://bugs.webkit.org/show_bug.cgi?id=210629 |
| <rdar://problem/61848883> |
| |
| Reviewed by Tim Horton. |
| |
| r259936 added a point conversion from the superlayer of the root content layer, |
| to fix RTL, but this also pulled in top content inset, which we don't want. |
| |
| Instead, do the RTL fix by factoring in scroll origin. |
| |
| Test: fast/scrolling/mac/async-scroll-overflow-top-inset.html |
| |
| * page/scrolling/ScrollingTreeScrollingNode.h: |
| * page/scrolling/mac/ScrollingTreeMac.mm: |
| (ScrollingTreeMac::scrollingNodeForPoint): |
| |
| 2020-04-16 Sergio Villar Senin <svillar@igalia.com> |
| |
| Unreviewed build fix for non unified builds. |
| |
| * html/OffscreenCanvas.cpp: Added missing include. |
| * html/canvas/CanvasRenderingContext2DBase.cpp: Ditto. |
| * layout/tableformatting/TableFormattingContextGeometry.cpp: Ditto. |
| * workers/WorkerAnimationController.cpp: |
| (WebCore::WorkerAnimationController::requestAnimationFrame): Added namespace. |
| * workers/WorkerAnimationController.h: Added missing include. |
| |
| 2020-04-16 Simon Fraser <simon.fraser@apple.com> |
| |
| A slow-starting swipe always latches on the root node |
| https://bugs.webkit.org/show_bug.cgi?id=210618 |
| |
| Reviewed by Tim Horton. |
| |
| If the first event in a wheel event gesture had zero delta, scrolling thread logic would |
| always latch on the root node and the rest of the gesture would scroll the document. |
| |
| Fix by not latching for events with zero delta. |
| |
| Test: scrollingcoordinator/mac/latching/zero-delta-began-should-not-latch.html |
| |
| * page/scrolling/ScrollingTreeLatchingController.cpp: |
| (WebCore::ScrollingTreeLatchingController::nodeDidHandleEvent): |
| * page/scrolling/ScrollingTreeScrollingNode.cpp: |
| (WebCore::ScrollingTreeScrollingNode::canScrollWithWheelEvent const): |
| (WebCore::ScrollingTreeScrollingNode::eventCanScrollContents const): |
| (WebCore::ScrollingTreeScrollingNode::scrollLimitReached const): Deleted. |
| * page/scrolling/ScrollingTreeScrollingNode.h: |
| * platform/PlatformWheelEvent.h: |
| (WebCore::PlatformWheelEvent::shouldConsiderLatching const): FIXME comment. Ideally this would |
| check delta() that that's too scarey at the moment. |
| |
| 2020-04-16 Jer Noble <jer.noble@apple.com> |
| |
| Unreviewed build-fix after r260182; guard call to fullscreenManager() for ports which do not |
| ENABLE(FULLSCREEN_API). |
| |
| * html/MediaElementSession.cpp: |
| (WebCore::MediaElementSession::updateMediaUsageIfChanged): |
| |
| 2020-04-16 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK] Deprecation-guards fixes |
| https://bugs.webkit.org/show_bug.cgi?id=210600 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| No new tests needed. |
| |
| * platform/gtk/RenderThemeGadget.cpp: |
| (WebCore::RenderThemeGadget::backgroundColor const): Add missing |
| deprecation guards for deprecated GtkStyleContext API. |
| * platform/gtk/ThemeGtk.cpp: |
| (WebCore::ThemeGtk::ensurePlatformColors const): Switch to WK |
| deprecation guards from glib ones. |
| |
| 2020-04-16 Jack Lee <shihchieh_lee@apple.com> |
| |
| ASSERTION FAILED: candidate.isCandidate() in WebCore::canonicalizeCandidate |
| https://bugs.webkit.org/show_bug.cgi?id=130844 |
| <rdar://59535009> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Call Position::isCandidate() in PositionIterator::isCandidate so behavior of |
| candidate search become identical in both classes. |
| |
| Test: editing/inserting/insert-in-br.html |
| |
| * dom/PositionIterator.cpp: |
| (WebCore::PositionIterator::isCandidate const): |
| |
| 2020-04-16 Rob Buis <rbuis@igalia.com> |
| |
| Remove outdated comment from FrameLoader |
| https://bugs.webkit.org/show_bug.cgi?id=210607 |
| |
| Reviewed by Darin Adler. |
| |
| Remove comment from FrameLoader that is not valid/important anymore because |
| addExtraFieldsToRequest does not set the Origin header since r259036. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadDifferentDocumentItem): |
| |
| 2020-04-16 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: Need method for setting selected range from NSRange |
| https://bugs.webkit.org/show_bug.cgi?id=210593 |
| |
| Reviewed by Darin Adler. |
| |
| Allow setSelection to work outside of text controls. |
| |
| Test: accessibility/ios-simulator/non-textcontrol-set-selection.html |
| |
| * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: |
| (-[WebAccessibilityObjectWrapper _accessibilitySetSelectedTextRange:]): |
| |
| 2020-04-16 Jer Noble <jer.noble@apple.com> |
| |
| [macOS] Update ScreenTime as playback state changes |
| https://bugs.webkit.org/show_bug.cgi?id=210518 |
| <rdar://problem/61181092> |
| |
| Reviewed by Eric Carlson. |
| |
| Follow up to r260182; Pass a WeakPtr into our task queue in sessionWillEndPlayback rather than a bare pointer. |
| |
| * platform/audio/cocoa/MediaSessionManagerCocoa.mm: |
| (WebCore::MediaSessionManagerCocoa::sessionWillEndPlayback): |
| |
| 2020-04-16 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Captured ThreadedScrollingTree should check its m_scrollingCoordinator before calling its methods |
| https://bugs.webkit.org/show_bug.cgi?id=210570 |
| |
| Reviewed by Simon Fraser. |
| |
| m_scrollingCoordinator may be nullified before asynchronously calling its |
| method scheduleUpdateScrollPositionAfterAsyncScroll(). Check if it is |
| not null before calling this method. |
| |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll): |
| |
| 2020-04-16 Zalan Bujtas <zalan@apple.com> |
| |
| Crash in IndefiniteSizeStrategy::recomputeUsedFlexFractionIfNeeded when min-size can not be resolved |
| https://bugs.webkit.org/show_bug.cgi?id=210584 |
| <rdar://problem/56685237> |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| Use the initial value of 0 when the min-height can't be resolved. |
| |
| Test: fast/css-grid-layout/crash-when-min-height-cant-be-resolved.html |
| |
| * rendering/GridTrackSizingAlgorithm.cpp: |
| (WebCore::IndefiniteSizeStrategy::recomputeUsedFlexFractionIfNeeded const): |
| |
| 2020-04-16 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Non-unified build fixes mid April 2020 edition |
| https://bugs.webkit.org/show_bug.cgi?id=210599 |
| |
| Unreviewed build fix. |
| |
| No new tests needed. |
| |
| * bindings/js/JSNavigatorCustom.cpp: Add missing JavaScriptCore/JSCJSValue.h header. |
| (WebCore::JSNavigator::getUserMedia): Prefix with the JSC:: namespace where needed. |
| * dom/ShadowRoot.cpp: Add missing WebAnimation.h header. |
| * dom/SimpleRange.cpp: Add missing NodeTraversal.h header. |
| * editing/RemoveNodePreservingChildrenCommand.cpp: Add missing Editing.h header. |
| * page/MemoryRelease.cpp: Add missing JavaScriptCore/VM.h header. |
| * page/PageConfiguration.cpp: Add missing UserContentURLPattern.h header. |
| * page/scrolling/ScrollingTree.h: Add missing EventTrackingRegions.h header. |
| * page/scrolling/ScrollingTreeLatchingController.cpp: Add missing Logging.h header. |
| * page/scrolling/ScrollingTreeLatchingController.h: Add missing ScrollTypes.h header, |
| and forward declaration for WebCore::PlatformWheelEvent. |
| * workers/service/server/SWServerJobQueue.cpp: Add missing Logging.h header. |
| |
| 2020-04-16 Simon Fraser <simon.fraser@apple.com> |
| |
| [Async overflow scrolling] Slow-repaint overflow scroll have force their enclosing scrollers to be slow too |
| https://bugs.webkit.org/show_bug.cgi?id=210591 |
| |
| Reviewed by Antti Koivisto. |
| |
| If an overflow:scroll has background-attachment:fixed in the contents, then both it and all its containing-block |
| scrolling ancestors have to be slow-scrolling too, because scrolling any of them affects the local geometry |
| of the fixed backgrounds which paint on scroll. |
| |
| Implement this by having the scrolling tree do a post-commit pass over the nodes with sync scrolling reasons |
| (which we collect during the commit phase). For each slow-scrolling node, walk its ancestor chain (via |
| proxy nodes when necessary) and mark the scrolling node ancestors with the "DescendantScrollersHaveSynchronousScrolling" |
| reason. |
| |
| For testing, expose internals.scrollingTreeAsText(), which needs a bit of synchronization via |
| waitForScrollingTreeCommit() since the commit happens on the scrolling thread. |
| |
| Tests: scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-non-cb-overflow.html |
| scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow.html |
| scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-nested-overflow2.html |
| |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::scrollingStateTreeAsText const): |
| (WebCore::AsyncScrollingCoordinator::scrollingTreeAsText const): |
| * page/scrolling/AsyncScrollingCoordinator.h: |
| * page/scrolling/ScrollingCoordinator.cpp: |
| (WebCore::ScrollingCoordinator::scrollingStateTreeAsText const): |
| (WebCore::ScrollingCoordinator::scrollingTreeAsText const): |
| (WebCore::ScrollingCoordinator::synchronousScrollingReasonsAsText): |
| * page/scrolling/ScrollingCoordinator.h: |
| * page/scrolling/ScrollingCoordinatorTypes.h: |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::commitTreeState): |
| (WebCore::ScrollingTree::updateTreeFromStateNodeRecursive): |
| (WebCore::ScrollingTree::propagateSynchronousScrollingReasons): |
| (WebCore::ScrollingTree::updateTreeFromStateNode): Deleted. |
| * page/scrolling/ScrollingTree.h: |
| (WebCore::ScrollingTree::waitForScrollingTreeCommit): |
| * page/scrolling/ScrollingTreeScrollingNode.cpp: |
| (WebCore::ScrollingTreeScrollingNode::commitStateAfterChildren): |
| * page/scrolling/ScrollingTreeScrollingNode.h: |
| * page/scrolling/ThreadedScrollingTree.cpp: |
| (WebCore::ThreadedScrollingTree::waitForScrollingTreeCommit): |
| * page/scrolling/ThreadedScrollingTree.h: |
| * testing/Internals.cpp: |
| (WebCore::Internals::scrollingTreeAsText const): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-04-16 Claudio Saavedra <csaavedra@igalia.com> |
| |
| Clean a couple of unused-parameters warnings |
| https://bugs.webkit.org/show_bug.cgi?id=210596 |
| |
| Unreviewed. |
| |
| No new tests needed. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::wouldTaintOrigin const): Remove |
| a spurious UNUSED_PARAM() for an actually used parameter. |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::updateSecurityDiscCharacters): |
| |
| 2020-04-16 Eric Carlson <eric.carlson@apple.com> |
| |
| [macOS] Update ScreenTime as playback state changes |
| https://bugs.webkit.org/show_bug.cgi?id=210518 |
| <rdar://problem/61181092> |
| |
| Reviewed by Jer Noble. |
| |
| Test: media/media-usage-state.html |
| |
| Pass media element state to the UI process whenever it changes. |
| |
| * Headers.cmake: |
| * WebCore.xcodeproj/project.pbxproj: |
| * html/HTMLMediaElement.cpp: |
| (WebCore::HTMLMediaElement::HTMLMediaElement): |
| (WebCore::HTMLMediaElement::mediaSessionUniqueIdentifier const): |
| * html/HTMLMediaElement.h: |
| * html/MediaElementSession.cpp: |
| (WebCore::MediaElementSession::MediaElementSession): |
| (WebCore::MediaElementSession::~MediaElementSession): |
| (WebCore::MediaElementSession::updateMediaUsageIfChanged): |
| * html/MediaElementSession.h: |
| * page/ChromeClient.h: |
| (WebCore::ChromeClient::addMediaUsageManagerSession): |
| (WebCore::ChromeClient::updateMediaUsageManagerSessionState): |
| (WebCore::ChromeClient::removeMediaUsageManagerSession): |
| * platform/audio/PlatformMediaSession.cpp: |
| (WebCore::PlatformMediaSession::PlatformMediaSession): |
| * platform/audio/PlatformMediaSession.h: |
| (WebCore::PlatformMediaSession::updateMediaUsageIfChanged): |
| (WebCore::PlatformMediaSession::mediaSessionIdentifier const): |
| * platform/audio/PlatformMediaSessionManager.cpp: |
| (WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary): |
| * platform/audio/PlatformMediaSessionManager.h: |
| (WebCore::PlatformMediaSessionManager::scheduleUpdateSessionStatus): |
| (WebCore::PlatformMediaSessionManager::sessionDidEndRemoteScrubbing): |
| (WebCore::PlatformMediaSessionManager::scheduleUpdateNowPlayingInfo): Deleted. |
| * platform/audio/cocoa/MediaSessionManagerCocoa.h: |
| * platform/audio/cocoa/MediaSessionManagerCocoa.mm: |
| (WebCore::MediaSessionManagerCocoa::scheduleUpdateSessionStatus): |
| (WebCore::MediaSessionManagerCocoa::sessionWillBeginPlayback): |
| (WebCore::MediaSessionManagerCocoa::sessionDidEndRemoteScrubbing): |
| (WebCore::MediaSessionManagerCocoa::removeSession): |
| (WebCore::MediaSessionManagerCocoa::sessionWillEndPlayback): |
| (WebCore::MediaSessionManagerCocoa::clientCharacteristicsChanged): |
| (WebCore::MediaSessionManagerCocoa::sessionCanProduceAudioChanged): |
| (WebCore::MediaSessionManagerCocoa::scheduleUpdateNowPlayingInfo): Deleted. |
| * platform/audio/ios/MediaSessionManagerIOS.mm: |
| (WebCore::MediaSessionManageriOS::resetRestrictions): |
| (WebCore::MediaSessionManageriOS::sessionWillBeginPlayback): |
| * platform/graphics/MediaUsageInfo.h: Added. |
| (WebCore::MediaUsageInfo::operator== const): |
| (WebCore::MediaUsageInfo::operator!= const): |
| (WebCore::MediaUsageInfo::encode const): |
| (WebCore::MediaUsageInfo::decode): |
| * testing/Internals.cpp: |
| (WebCore::Internals::setMediaElementRestrictions): |
| (WebCore::Internals::mediaUsageState const): |
| * testing/Internals.h: |
| * testing/Internals.idl: |
| |
| 2020-04-16 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| [JSC] Implement JSMapIterator/JSSetIterator with JSInternalFieldObjectImpl |
| https://bugs.webkit.org/show_bug.cgi?id=210023 |
| |
| Reviewed by Keith Miller. |
| |
| * bindings/js/SerializedScriptValue.cpp: |
| (WebCore::CloneSerializer::serialize): |
| |
| 2020-04-16 Philippe Normand <pnormand@igalia.com> |
| |
| Unreviewed, fix GStreamer build warnings. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::cdmInstanceDetached): |
| * platform/graphics/gstreamer/mse/AppendPipeline.cpp: |
| (WebCore::AppendPipeline::handleErrorConditionFromStreamingThread): |
| |
| 2020-04-16 Carlos Alberto Lopez Perez <clopez@igalia.com> |
| |
| [GTK] MiniBrowser opens new windows too small causing failures on some WPT tests |
| https://bugs.webkit.org/show_bug.cgi?id=210206 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Some WPT tests (when executed with the WPT runner via WebDriver) |
| open new browser windows via JavaScript invoking Window.open() |
| and then run the test on this new window. |
| The size of the new window is not specified, and we were failing |
| to provide a default window size, so it was using the minimum of |
| 100x100 which its just too small for some test that later call |
| document.elementFromPoint() on some coordinates |
| that are outside of that size. |
| |
| To fix that provide the size of the default GTK window to WebCore |
| if the application sets one via gtk_window_set_default_size(). |
| And if not, then use the size of the previous window. |
| |
| Also change the way we position the new window to work better when |
| the system uses more than one monitor. Previously to get the default |
| coordinates of the new window we were using gdk_display_get_monitor() |
| with just the first monitor available. |
| This causes issues in the calculation of the available space when |
| using several monitors. Instead get the monitor in use by looking |
| at the current GDK root window. |
| |
| Tests: TestWebKitAPI/WebKit2Gtk/TestUIClient:/webkit/WebKitWebView/open-window-default-size |
| and TestWebKitAPI/WebKit2Gtk/TestUIClient:/webkit/WebKitWebView/open-window-no-default-size |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::createWindow): |
| * platform/gtk/PlatformScreenGtk.cpp: |
| (WebCore::getCurrentScreenMonitor): |
| (WebCore::screenRect): |
| (WebCore::screenAvailableRect): |
| |
| 2020-04-16 Tomoki Imai <Tomoki.Imai@sony.com> |
| |
| TextureMapper renders video element with "object-fit: cover" incorrectly |
| https://bugs.webkit.org/show_bug.cgi?id=210544 |
| |
| Reviewed by Žan Doberšek. |
| |
| Propagate GraphicsLayer::contentsClippingRect information to TextureMapperLayer |
| to properly clip the outside of DOM element when the element has "object-fit: cover". |
| |
| Unfortunately, the test is disabled on WebKitGTK due to bug 177536, bug 163528. |
| Test: compositing/video/video-object-fit.html |
| |
| * platform/graphics/nicosia/NicosiaPlatformLayer.h: |
| (Nicosia::CompositionLayer::flushState): |
| * platform/graphics/texmap/TextureMapperLayer.cpp: |
| (WebCore::TextureMapperLayer::paintSelf): Clip using propagated contentsClippingRect when rendering m_contentsLayer. |
| (WebCore::TextureMapperLayer::setContentsClippingRect): |
| * platform/graphics/texmap/TextureMapperLayer.h: |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: |
| (WebCore::CoordinatedGraphicsLayer::setContentsClippingRect): |
| (WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly): |
| * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h: |
| |
| 2020-04-15 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| [Cocoa] Password obscuring dots drawn with the system font are too small |
| https://bugs.webkit.org/show_bug.cgi?id=209692 |
| <rdar://problem/60788385> |
| |
| Reviewed by Darin Adler. |
| |
| The system font's U+2022 BULLET glyph got smaller. Instead, we should match |
| the native platform's behavior of using U+F79A. However, U+F79A is a PUA |
| character, meaning different fonts will draw it in arbitrary different ways. |
| Therefore, we should only use this character if we're drawing it with the |
| system font. Otherwise, we can take the old codepath and use U+2022 BULLET. |
| |
| Tests: fast/text/text-security-disc-bullet-pua.html |
| platform/mac/fast/text/text-security-disc-bullet-pua-mac.html |
| platform/ios/fast/text/text-security-disc-bullet-pua-ios-new.html |
| platform/ios/fast/text/text-security-disc-bullet-pua-ios-old.html |
| |
| * rendering/InlineTextBox.cpp: |
| (WebCore::InlineTextBox::text const): |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::constructTextRun): |
| * rendering/SimpleLineLayout.cpp: |
| (WebCore::SimpleLineLayout::canUseForStyle): |
| * rendering/SimpleLineLayoutCoverage.cpp: |
| (WebCore::SimpleLineLayout::printReason): |
| * rendering/SimpleLineLayoutCoverage.h: |
| * rendering/style/RenderStyle.cpp: |
| (WebCore::RenderStyle::computeTextSecurityDiscShouldUsePUACodePoint const): |
| * rendering/style/RenderStyle.h: |
| |
| 2020-04-15 Jer Noble <jer.noble@apple.com> |
| |
| REGRESSION (r260102): ASSERTION FAILED: m_arbitrators.contains(proxy) in WebKit::SharedArbitrator::endRoutingArbitrationForArbitrator |
| https://bugs.webkit.org/show_bug.cgi?id=210589 |
| <rdar://problem/61844208> |
| |
| Reviewed by Eric Carlson. |
| |
| Track whether the session successfully entered routing arbitration and only call |
| leaveRoutingAbritration() if entering was sucessful. |
| |
| * platform/audio/mac/AudioSessionMac.mm: |
| (WebCore::AudioSession::setCategory): |
| |
| 2020-04-15 Simon Fraser <simon.fraser@apple.com> |
| |
| [Async overflow scroll] background-attachment:fixed needs to disable async overflow scrolling |
| https://bugs.webkit.org/show_bug.cgi?id=210581 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Start setting synchronousScrollingReasons on overflow scrolling nodes if the scrolling would move content |
| that has background-attachment:fixed (we can't use async scrolling there, because such content needs painting |
| on each scroll). |
| |
| When style changes, we call FrameView::{add|remove}SlowRepaintObject(). That sets the "needsScrollingTreeUpdate" |
| compositing bit on the enclosing RenderLayer (note, any RenderLayer, not necessarily a scrolling one). |
| Setting that bit will ensure that RenderLayerCompositor does an "update backing and hierarchy" traversal, |
| and during this traversal, if we see a layer with the bit set, scrollingTreeState.needSynchronousScrollingReasonsUpdate |
| becomes true. At the end of the traversal this is used as a signal to call updateSynchronousScrollingNodes(). |
| |
| updateSynchronousScrollingNodes() needs to clear synchronousScrollingReasons on nodes that no longer need |
| to slow-scroll, and set it on those that do. To achieve this we use the set of slow-repaint renders from |
| FrameView, and the set of layers with scrolling nodes from RenderLayerCompositor, starting with the set of |
| all nodes, and pruning those known to be slow. synchronousScrollingReasons are cleared on the remainder. |
| |
| Tests: scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-dynamic.html |
| scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow.html |
| scrollingcoordinator/mac/fixed-backgrounds/fixed-background-on-overflow.html |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::addSlowRepaintObject): |
| (WebCore::FrameView::removeSlowRepaintObject): |
| * page/FrameView.h: |
| * page/scrolling/AsyncScrollingCoordinator.cpp: |
| (WebCore::AsyncScrollingCoordinator::setSynchronousScrollingReasons): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::updateCompositingLayers): |
| (WebCore::RenderLayerCompositor::updateBackingAndHierarchy): |
| (WebCore::RenderLayerCompositor::updateSynchronousScrollingNodes): |
| * rendering/RenderLayerCompositor.h: |
| |
| 2020-04-15 Andres Gonzalez <andresg_22@apple.com> |
| |
| Add logging to core accessibility. |
| https://bugs.webkit.org/show_bug.cgi?id=210564 |
| |
| Reviewed by Chris Fleizach. |
| |
| Added AXLogger class and AXTRACE macro. Used them in AXIsolatedTree. |
| |
| * Headers.cmake: |
| * Sources.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * accessibility/AXLogger.cpp: Added. |
| (WebCore::AXLogger::AXLogger): |
| (WebCore::AXLogger::~AXLogger): |
| * accessibility/AXLogger.h: Added. |
| * accessibility/isolatedtree/AXIsolatedTree.cpp: |
| (WebCore::AXIsolatedTree::AXIsolatedTree): |
| (WebCore::AXIsolatedTree::~AXIsolatedTree): |
| (WebCore::AXIsolatedTree::create): |
| (WebCore::AXIsolatedTree::nodeInTreeForID): |
| (WebCore::AXIsolatedTree::treeForID): |
| (WebCore::AXIsolatedTree::createTreeForPageID): |
| (WebCore::AXIsolatedTree::removeTreeForPageID): |
| (WebCore::AXIsolatedTree::treeForPageID): |
| (WebCore::AXIsolatedTree::nodeForID const): |
| (WebCore::AXIsolatedTree::objectsForIDs const): |
| (WebCore::AXIsolatedTree::generateSubtree): |
| (WebCore::AXIsolatedTree::createSubtree): |
| (WebCore::AXIsolatedTree::updateNode): |
| (WebCore::AXIsolatedTree::updateSubtree): |
| (WebCore::AXIsolatedTree::updateChildren): |
| (WebCore::AXIsolatedTree::focusedUIElement): |
| (WebCore::AXIsolatedTree::rootNode): |
| (WebCore::AXIsolatedTree::setRootNode): |
| (WebCore::AXIsolatedTree::setFocusedNode): |
| (WebCore::AXIsolatedTree::setFocusedNodeID): |
| (WebCore::AXIsolatedTree::removeNode): |
| (WebCore::AXIsolatedTree::removeSubtree): |
| (WebCore::AXIsolatedTree::appendNodeChanges): |
| (WebCore::AXIsolatedTree::applyPendingChanges): |
| * platform/Logging.h: |
| |
| 2020-04-15 Simon Fraser <simon.fraser@apple.com> |
| |
| Lay the groundwork for SynchronousScrollingReason on overflow nodes |
| https://bugs.webkit.org/show_bug.cgi?id=210565 |
| |
| Reviewed by Tim Horton. |
| |
| Make setSynchronousScrollingReasons() public on ScrollingCoordinator because we're going |
| to be calling it for overflow scrolling nodes. |
| |
| Call ScrollingCoordinator::slowRepaintObjectsDidChange() not just when we go between |
| none some some slow-repaint objects, but whenever the set changes. slowRepaintObjectsDidChange() |
| is lightweight. |
| |
| Minor cleanup in FrameView to avoid testing Page* nullness every time. |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::prepareForDetach): |
| (WebCore::FrameView::isScrollSnapInProgress const): |
| (WebCore::FrameView::usesAsyncScrolling const): |
| (WebCore::FrameView::addSlowRepaintObject): |
| (WebCore::FrameView::removeSlowRepaintObject): |
| (WebCore::FrameView::addViewportConstrainedObject): |
| (WebCore::FrameView::removeViewportConstrainedObject): |
| (WebCore::FrameView::scrollingCoordinator const): |
| (WebCore::FrameView::shouldUpdateCompositingLayersAfterScrolling const): |
| (WebCore::FrameView::isRubberBandInProgress const): |
| (WebCore::FrameView::requestScrollPositionUpdate): |
| (WebCore::FrameView::layoutOrVisualViewportChanged): |
| (WebCore::FrameView::performPostLayoutTasks): |
| (WebCore::FrameView::scrollableAreaSetChanged): |
| (WebCore::FrameView::wheelEvent): |
| (WebCore::FrameView::setScrollPinningBehavior): |
| * page/FrameView.h: |
| * page/scrolling/ScrollingCoordinator.cpp: |
| (WebCore::ScrollingCoordinator::slowRepaintObjectsDidChange): |
| (WebCore::ScrollingCoordinator::synchronousScrollingReasonsForFrameView const): |
| (WebCore::ScrollingCoordinator::updateSynchronousScrollingReasons): |
| (WebCore::ScrollingCoordinator::shouldUpdateScrollLayerPositionSynchronously const): |
| (WebCore::ScrollingCoordinator::synchronousScrollingReasonsAsText const): |
| (WebCore::ScrollingCoordinator::frameViewHasSlowRepaintObjectsDidChange): Deleted. |
| (WebCore::ScrollingCoordinator::synchronousScrollingReasons const): Deleted. |
| * page/scrolling/ScrollingCoordinator.h: |
| (WebCore::ScrollingCoordinator::setSynchronousScrollingReasons): |
| * rendering/RenderLayerCompositor.cpp: |
| (WebCore::RenderLayerCompositor::updateBacking): |
| |
| 2020-04-15 Jack Lee <shihchieh_lee@apple.com> |
| |
| ASSERTION FAILED: !selectionToDelete.isNone() in TypingCommand::forwardDeleteKeyPressed |
| when deleting a UserSelect::None element. |
| https://bugs.webkit.org/show_bug.cgi?id=210530 |
| <rdar://problem/58591480> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Quit forwardDeleteKeyPressed() if FrameSelection::modify() returns empty selection. |
| |
| Test: editing/deleting/forward-delete-UserSelect-None-element.html |
| |
| * editing/TypingCommand.cpp: |
| (WebCore::TypingCommand::forwardDeleteKeyPressed): |
| |
| 2020-04-15 Peng Liu <peng.liu6@apple.com> |
| |
| Video elements don't return to the correct position when exiting fullscreen |
| https://bugs.webkit.org/show_bug.cgi?id=210529 |
| |
| Reviewed by Jer Noble. |
| |
| Add WEBCORE_EXPORT to the function setNeedsDOMWindowResizeEvent(). |
| |
| * dom/Document.h: |
| |
| 2020-04-15 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iPadOS] Some pages indefinitely zoom in and out due to idempotent text autosizing |
| https://bugs.webkit.org/show_bug.cgi?id=210551 |
| <rdar://problem/56820674> |
| |
| Reviewed by Tim Horton. |
| |
| Rename m_initialScale and initialScale() on Page to m_initialScaleIgnoringContentSize and |
| initialScaleIgnoringContentSize(), respectively. See WebKit/ChangeLog for more details. |
| |
| Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html |
| |
| * page/Page.cpp: |
| (WebCore::Page::setInitialScaleIgnoringContentSize): |
| (WebCore::Page::setInitialScale): Deleted. |
| * page/Page.h: |
| (WebCore::Page::initialScaleIgnoringContentSize const): |
| (WebCore::Page::initialScale const): Deleted. |
| * style/StyleAdjuster.cpp: |
| (WebCore::Style::Adjuster::adjustmentForTextAutosizing): |
| |
| 2020-04-15 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r258977): Crash under Document::visibilityStateChanged |
| https://bugs.webkit.org/show_bug.cgi?id=210555 |
| |
| Reviewed by Youenn Fablet. |
| |
| Re-introduce null check of page in Document::visibilityStateChanged() which got inadvertently |
| dropped in r258977. |
| |
| * dom/Document.cpp: |
| (WebCore::Document::visibilityStateChanged): |
| |
| 2020-04-15 Zalan Bujtas <zalan@apple.com> |
| |
| REGRESSION( r260114): [ Mac and iOS ] imported/w3c/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html is failing. |
| https://bugs.webkit.org/show_bug.cgi?id=210549 |
| <rdar://problem/61828495> |
| |
| Unreviewed. |
| |
| Partial revert of r260114. See webkit.org/b/210559 for details. |
| |
| * dom/ScriptedAnimationController.cpp: |
| (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): |
| |
| 2020-04-15 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Add support for `pseudoElement` on `KeyframeEffect` and `KeyframeEffectOptions` |
| https://bugs.webkit.org/show_bug.cgi?id=207290 |
| <rdar://problem/59199003> |
| |
| Reviewed by Antti Koivisto. |
| |
| We add the required IDL bindings such that JS-originated Web Animations can target pseudo-elements, either via the KeyframeEffect.pseudoElement |
| property, or via the KeyframeEffectOptions.pseudoElement property, which is set on the object passed to the KeyframeEffect constrcutor and |
| Element.animate(). |
| |
| This means that a PseudoElement can be targeted by an animation even if it's not been created through style resolution by virtue of a ::before |
| or ::after selector and a "content" style rule. This means that when either the "target" or "pseudoElement" property of KeyframeEffect is set, |
| we ensure a PseudoElement is created and set on the host element if required. And additionally, we ensure that during style resolution, animations |
| are applied to such pseudo-elements with a new PseudoElement::isTargetedByKeyframeEffectRequiringPseudoElement() method that indicates that a |
| JS-originated KeyframeEffect targets this pseudo-element. |
| |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::create): Handle the new KeyframeEffectOptions.pseudoElement property in the KeyframeEffect constructor. |
| (WebCore::KeyframeEffect::targetsPseudoElement const): Indicates whether this effect targets a pseudo-element and not a regular |
| element or a null target. |
| (WebCore::KeyframeEffect::targetElementOrPseudoElement const): Use the new targetsPseudoElement() method to determine whether a |
| pseudo-element is targeted. We also remove an assertion that only made sense when m_pseudoId could only be set via a CSS-originated |
| animation and another one when the only possible m_pseudoId values were PseudoId::Before and PseudoId::After. |
| (WebCore::KeyframeEffect::setTarget): Call the new didChangeTargetElementOrPseudoElement() method if the provided value differs |
| from the stored value for m_target. |
| (WebCore::KeyframeEffect::pseudoElement const): Return the matching normalized string with a `::` prefix for m_pseudoId if the target |
| is a pseudo-element. Note that PseudoElement::pseudoElementNameForEvents() will only return a string for "::before" and "::after" since |
| we only know how to animate these pseudo-elements. |
| (WebCore::KeyframeEffect::setPseudoElement): Determine a matching PseudoId, if any, for the provided string, and call the new |
| didChangeTargetElementOrPseudoElement() method if the provided value differs from the stored value for m_pseudoId. |
| (WebCore::KeyframeEffect::didChangeTargetElementOrPseudoElement): New method called when either m_target or m_pseudoId is changed |
| such that we can ensure the required PseudoElement is created if the animation targets a pseudo-element. Then we run the same logic |
| that we used to in KeyframeEffect::setTarget(). |
| (WebCore::KeyframeEffect::requiresPseudoElement const): Indicates whether a PseudoElement must remain created for this KeyframeEffect, |
| which is only necessary for JS-originated effects targeting a pseudo-element. |
| * animation/KeyframeEffect.h: |
| * animation/KeyframeEffect.idl: |
| * animation/KeyframeEffectOptions.h: |
| * animation/KeyframeEffectOptions.idl: |
| * animation/KeyframeEffectStack.cpp: |
| (WebCore::KeyframeEffectStack::requiresPseudoElement const): Indicates whether one or more JS-originated keyframe effects in the stack target |
| the PseudoElement owning this stack. |
| * animation/KeyframeEffectStack.h: |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::commitStyles): Use KeyframeEffect::targetsPseudoElement() to determine whether the animation's effect's target is a |
| pseudo-element, in which case we need to throw a NoModificationAllowedError exception. |
| * dom/PseudoElement.cpp: |
| (WebCore::PseudoElement::rendererIsNeeded): Return true also when one or more JS-originated keyframe effects in the stack target this pseudo-element. |
| (WebCore::PseudoElement::isTargetedByKeyframeEffectRequiringPseudoElement): Return true when one or more JS-originated keyframe effects in the stack |
| target this pseudo-element. |
| * dom/PseudoElement.h: |
| * rendering/updating/RenderTreeUpdaterGeneratedContent.cpp: |
| (WebCore::createContentRenderers): Remove the assertion that the "content" property was set since it's valid for this function to now be called |
| due to JS-originated keyframe effects targeting the given pseudo-element. Instead we add an assertion that there are such keyframe effects in |
| case no "content" property was set. |
| (WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement): Only remove pseudo-elements if there are no JS-originated keyframe effects |
| targeting the specified pseudo-element. |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::TreeResolver::resolvePseudoStyle): Allow animated style resolution for pseudo-elements targeted by JS-originated keyframe effects. |
| |
| 2020-04-15 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Fix use of gtk init functions |
| https://bugs.webkit.org/show_bug.cgi?id=210550 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Add gtk_init and gtk_init_check receiving parameters to GtkVersioning. |
| |
| * PlatformGTK.cmake: |
| * platform/graphics/PlatformDisplay.cpp: |
| * platform/gtk/GtkVersioning.h: |
| (gtk_init): |
| (gtk_init_check): |
| |
| 2020-04-15 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| import.meta.url: baseURL for a module script should be response URL, not request URL |
| https://bugs.webkit.org/show_bug.cgi?id=205294 |
| |
| Reviewed by Youenn Fablet. |
| |
| The module should expose response URL as `import.meta.url` instead of request URL. |
| If redirection happens, this URL should be redirected one. |
| |
| * bindings/js/ScriptModuleLoader.cpp: |
| (WebCore::ScriptModuleLoader::resolve): |
| (WebCore::ScriptModuleLoader::responseURLFromRequestURL): |
| (WebCore::ScriptModuleLoader::createImportMetaProperties): |
| (WebCore::ScriptModuleLoader::notifyFinished): |
| * bindings/js/ScriptModuleLoader.h: |
| |
| 2020-04-15 Jer Noble <jer.noble@apple.com> |
| |
| isNullFunctionPointer() can fail for symbols not explicitly marked as weakly linked. |
| https://bugs.webkit.org/show_bug.cgi?id=210532 |
| |
| Reviewed by Tim Horton. |
| |
| Symbols whose declarations are explicitly marked as weakly imported are guaranteed to be |
| NULL when the library containing those symbols is not available at runtime, or when the |
| symbol itself isn't present in the version of the library which is available at runtime. For |
| symbols which are not explicitly marked as weakly imported (because, e.g., the framework |
| itself is weakly imported), this technique can fail. Rather than test the nullity of a |
| random static C++ class method with isNullFunctionPointer(), explicitly mark as weak_import |
| a utility method added by the WebKit project, which conveniently is already used from within |
| LibWebRTCProviderCocoa, and test the nullity of that method instead. |
| |
| * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp: |
| (WebCore::LibWebRTCProvider::webRTCAvailable): |
| |
| 2020-04-15 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK] Make PlatformScreen::screenDPI() GTK4-ready |
| https://bugs.webkit.org/show_bug.cgi?id=210543 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| No new tests needed. |
| |
| This method is using deprecated and removed APIs |
| from GDK. Guard the removed API usage so that it's only |
| used in GTK3 and update to use the replacement APIs otherwise. |
| |
| Also, make it to also use the gtk-xft-dpi GtkSettings property. |
| This method is mostly used in response to a change in this |
| property, so ignoring its value doesn't seem a good idea. |
| |
| The following priority is used: |
| |
| 1. (GTK3 only) query gdk_screen_get_resolution(). |
| 2. Use the GtkSettings::gtk-xft-dpi property. |
| 3. Calculate the actual DPI from the monitor 0's properties. |
| 4. If none of these succeed, use the default DPI, 96. |
| |
| * platform/gtk/PlatformScreenGtk.cpp: |
| (WebCore::screenDPI): |
| |
| 2020-04-15 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Remove IconGtk |
| https://bugs.webkit.org/show_bug.cgi?id=210546 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| It's currently unused in GTK port since we never show an icon for file uploads. |
| |
| * SourcesGTK.txt: |
| * platform/graphics/Icon.cpp: |
| * platform/graphics/Icon.h: |
| * platform/graphics/gtk/IconGtk.cpp: Removed. |
| |
| 2020-04-15 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK4] Provide an alternative to gtk_widget_{get,is}_toplevel() |
| https://bugs.webkit.org/show_bug.cgi?id=210463 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Adapt utility functions to GTK4, and provide replacement implementations for the |
| gtk_widget_get_tolevel() and gtk_widget_is_toplevel() functions for GTK4 builds. |
| |
| No new tests needed. |
| |
| * platform/gtk/GtkUtilities.cpp: |
| (WebCore::gtkWindowGetOrigin): Added. |
| (WebCore::convertWidgetPointToScreenPoint): Move code used to find the window position |
| into a separate function, and use it to avoid the USE(GTK4) conditional here. |
| (WebCore::widgetIsOnscreenToplevelWindow): Adapt to make it work with GTK4. |
| * platform/gtk/GtkVersioning.h: Added. |
| (gtk_widget_is_toplevel): Alternative implementation for GTK4. |
| (gtk_widget_get_toplevel): Ditto. |
| (gtk_window_get_position): Ditto. |
| |
| 2020-04-15 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK4] Adapt to cursor API changes |
| https://bugs.webkit.org/show_bug.cgi?id=210453 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| No new tests needed. |
| |
| * platform/gtk/CursorGtk.cpp: |
| (WebCore::fallbackCursor): Utility function which returns the "default" cursor for GTK4. |
| (WebCore::createNamedCursor): Adapt to the changes in the gdk_cursor_new_from_name(). |
| (WebCore::createCustomCursor): Create a GdkTexture directly when the given Cairo surface is |
| in one of the pixel formats supported by gdk_memory_texture_new(), otherwise convert first; |
| then create a GdkCursor from the GdkTexture. |
| |
| 2020-04-14 Simon Fraser <simon.fraser@apple.com> |
| |
| [Async overflow scroll] Backgrounds missing on gmail sometimes |
| https://bugs.webkit.org/show_bug.cgi?id=210506 |
| <rdar://problem/60523869> |
| |
| Reviewed by Zalan Bujtas. |
| |
| When painting the scrolled contents layers of accelerated overflow:scroll, RenderBlock::paint() |
| needs to not short-circuit when the dirty rect is outside a clipping rect, because accelerated |
| overflow involves overdraw for tiles outside the visible area. |
| |
| There were two code paths that made this mostly work: overflowRectForPaintRejection() tested for |
| usesCompositedScrolling(), and the #if PLATFORM(IOS_FAMILY) made it work on iOS. |
| |
| For content involving flexbox, overflowRectForPaintRejection() gave the wrong answer because |
| flex layout would sometimes clear m_overflow, even on an overflow:scroll element. |
| |
| So remove overflowRectForPaintRejection(), and instead revert to the simple visualOverflowRect(), |
| but first check a bit that's passed down from compositing code that indicates that |
| we're painting the contents of composited scroll |
| |
| Test: compositing/scrolling/async-overflow-scrolling/mac/overflow-in-flex-empty-tiles.html |
| |
| * rendering/PaintPhase.h: |
| * rendering/RenderBlock.cpp: |
| (WebCore::RenderBlock::paint): |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::overflowRectForPaintRejection const): Deleted. |
| * rendering/RenderBox.h: |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::paintLayerContents): |
| (WebCore::RenderLayer::paintForegroundForFragments): |
| |
| 2020-04-14 Zalan Bujtas <zalan@apple.com> |
| |
| Content expanding is broken on icourse163.org |
| https://bugs.webkit.org/show_bug.cgi?id=210510 |
| <rdar://problem/45951820> |
| |
| Reviewed by Simon Fraser. |
| |
| www.icourse163.org's animation code expects a decimal point in the rAF timestamp (millisecond resolution). |
| |
| * dom/ScriptedAnimationController.cpp: |
| (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): |
| * page/Quirks.cpp: |
| (WebCore::Quirks::needsMillisecondResolutionForHighResTimeStamp const): |
| * page/Quirks.h: |
| |
| 2020-04-14 Peng Liu <peng.liu6@apple.com> |
| |
| Adopt interface AVAudioRoutingArbiter for Mac |
| https://bugs.webkit.org/show_bug.cgi?id=210167 |
| |
| Reviewed by Eric Carlson. |
| |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/audio/ios/AudioSessionIOS.mm: |
| (WebCore::AudioSession::setCategory): |
| (WebCore::categoryName): Deleted. |
| * platform/audio/mac/AudioSessionMac.mm: Renamed from Source/WebCore/platform/audio/mac/AudioSessionMac.cpp. |
| (WebCore::AudioSession::setCategory): |
| (WebCore::AudioSession::categoryOverride const): |
| (WebCore::AudioSession::setCategoryOverride): |
| |
| Fix unified build failures. |
| * platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.h: |
| |
| 2020-04-14 Youenn Fablet <youenn@apple.com> |
| |
| ReadableStreamDefaultController::enqueue should check for worker terminated exception |
| https://bugs.webkit.org/show_bug.cgi?id=210485 |
| |
| Reviewed by Mark Lam. |
| |
| Make sure to not assert in case of enqueue exception if we are in a terminating worker. |
| This is covered by WPT fetch/api/basic/stream-response.any.worker.html and fetch/api/basic/stream-safe-creation.any.worker.html. |
| |
| * bindings/js/ReadableStreamDefaultController.h: |
| (WebCore::ReadableStreamDefaultController::enqueue): |
| |
| 2020-04-14 Youenn Fablet <youenn@apple.com> |
| |
| Protect MediaStreamTrackPrivate and RealtimeMediaSource when iterating its observers |
| https://bugs.webkit.org/show_bug.cgi?id=210488 |
| |
| Reviewed by Eric Carlson. |
| |
| Making sure explicitly that the track private and source remain alive while looping from its observers. |
| |
| * platform/mediastream/MediaStreamTrackPrivate.cpp: |
| (WebCore::MediaStreamTrackPrivate::forEachObserver const): |
| * platform/mediastream/RealtimeMediaSource.cpp: |
| (WebCore::RealtimeMediaSource::forEachObserver const): |
| |
| 2020-04-14 James Craig <jcraig@apple.com> |
| |
| AX: Smart Invert doesn't handle the picture elements on foxnews.com |
| <https://webkit.org/b/210472> |
| |
| Reviewed by Chris Fleizach. |
| |
| Tests: accessibilty/smart-invert.html |
| accessibilty/smart-invert-reference.html |
| |
| Filled out more variants in the test cases, and removed the unnecessary :not() selector. |
| |
| * css/html.css: |
| (@media (inverted-colors) img, picture, video): |
| (@media (inverted-colors) img:not(picture>img), picture, video): Deleted. |
| |
| 2020-04-14 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iPadOS] Wikipedia articles lay out incorrectly in 1/3 multitasking window |
| https://bugs.webkit.org/show_bug.cgi?id=210501 |
| <rdar://problem/54856323> |
| |
| Reviewed by Tim Horton. |
| |
| In a 1/3 multitasking window, Safari currently uses the `-[WKWebView _allowsViewportShrinkToFit]` SPI to force |
| pages to shrink down by fitting the content width to the view width. This legacy method of shrinking to fit |
| involves laying the page out at the normal view width (320px in 1/3 multitasking), and then scaling the page |
| down such that any amount of horizontal overflow fits within the view. |
| |
| In iOS 13, a new style of shrinking to fit was introduced in support of two new features: page zoom controls |
| (accessible via the page formatting menu), and on-by-default page scaling when loading desktop sites on certain |
| models of iPad where the page width is less than cutoffs of 1112px (in landscape) and 1024px (in portrait). This |
| new method of shrinking to fit involves laying out at a larger width (computed from a combination of the minimum |
| effective device width and layout size scale factor), and scaling to fit the effective layout size scale factor |
| instead of the entire contents of the page. This means that while we may still get horizontal scrolling after |
| shrinking to fit, the overall layout of the page is preserved. |
| |
| Currently, in 1/3 multitasking, Safari still relies on the former to scale pages down to fit, which means that |
| Wikipedia articles (among other websites) do not lay out sensibly. Moreover, even if Safari adopted the second |
| mechanism for shrinking to fit, layout issues would still exist (albeit to a lesser degree), since we'd still |
| attempt to shrink the content width down to fit due to the fact that the desktop version of Wikipedia doesn't |
| have a meta viewport. While we wouldn't get a broken layout, we'd still have a blank column running down the |
| right side of the page, which is less than ideal. |
| |
| It's clear that in this case, attempting to shrink page content down to fit the view is suboptimal (at best, it |
| leads to a large portion of the page being blank; at worst, it completely breaks page layout). To address this |
| bug for now, add a parallel minimumEffectiveDeviceWidth value that takes effect when ignoring scaling |
| constraints (i.e. when we're in a multitasking window), and scale the page down to fit this value instead of |
| fitting the full content width when computing initial scale in `ViewportConfiguration::initialScaleFromSize`. |
| Maintaining this value separately from m_minimumEffectiveDeviceWidth makes it much easier to ensure that the |
| effects of this change are only ever active when the quirk is applied, and also when the view is embedded in a |
| multitasking window. |
| |
| * page/Quirks.cpp: |
| (WebCore::Quirks::shouldLayOutAtMinimumWindowWidthWhenIgnoringScalingConstraints const): |
| |
| Introduce a quirk to fix layout issues in multitasking mode on the desktop version of Wikipedia. |
| |
| * page/Quirks.h: |
| * page/ViewportConfiguration.cpp: |
| (WebCore::ViewportConfiguration::initialScaleFromSize const): |
| (WebCore::ViewportConfiguration::setMinimumEffectiveDeviceWidth): |
| (WebCore::ViewportConfiguration::setMinimumEffectiveDeviceWidthWhenIgnoringScalingConstraints): |
| * page/ViewportConfiguration.h: |
| |
| Add a minimum effective device width value that only takes effect when ignoring scaling constraints, and update |
| `shouldIgnoreMinimumEffectiveDeviceWidth()` and `minimumEffectiveDeviceWidth()` to not always return `true` and |
| `0` (respectively) when ignoring scaling constraints, if m_minimumEffectiveDeviceWidthWhenIgnoringScalingConstraints |
| is set. |
| |
| (WebCore::ViewportConfiguration::minimumEffectiveDeviceWidth const): |
| (WebCore::ViewportConfiguration::shouldIgnoreMinimumEffectiveDeviceWidth const): |
| (WebCore::ViewportConfiguration::shouldShrinkToFitMinimumEffectiveDeviceWidthWhenIgnoringScalingConstraints const): |
| |
| 2020-04-14 Antoine Quint <graouts@apple.com> |
| |
| Factor PseudoElement creation calls into a single Element::ensurePseudoElement(pseudoId) method |
| https://bugs.webkit.org/show_bug.cgi?id=210495 |
| |
| Reviewed by Antti Koivisto. |
| |
| To support webkit.org/b/207290 we need a way to ensure a PseudoElement is available for ::before and ::after |
| pseudo-elements on a given Element. We now use a Element::ensurePseudoElement(pseudoId) method to do this and |
| replace existing places where we would do something similar. |
| |
| * dom/Element.cpp: |
| (WebCore::Element::ensurePseudoElement): |
| * dom/Element.h: |
| * rendering/updating/RenderTreeUpdaterGeneratedContent.cpp: |
| (WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement): |
| * style/StyleTreeResolver.cpp: |
| (WebCore::Style::TreeResolver::resolvePseudoStyle): |
| |
| 2020-04-14 Simon Fraser <simon.fraser@apple.com> |
| |
| Scroll snap in subframes is often broken |
| https://bugs.webkit.org/show_bug.cgi?id=210503 |
| |
| Reviewed by Darin Adler. |
| |
| RenderBox::findEnclosingScrollableContainer() incorrectly consulted the scrollability |
| of the main frame, causing snapping in subframes to be broken any time the main frame |
| was not scrollable. |
| |
| Test: tiled-drawing/scrolling/scroll-snap/scroll-snap-async-iframe.html |
| |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::findEnclosingScrollableContainer const): |
| |
| 2020-04-14 Andres Gonzalez <andresg_22@apple.com> |
| |
| Make WTR::AccessibilityUIElements calls to accessibilitySetValue run on AX secondary thread. web content |
| https://bugs.webkit.org/show_bug.cgi?id=210500 |
| |
| Reviewed by Chris Fleizach. |
| |
| Removed _accessibilitySetTestValue since it is no longer used, use |
| _accessibilitySetValue instead. |
| |
| * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: |
| (-[WebAccessibilityObjectWrapper _accessibilitySetTestValue:forAttribute:]): Deleted. |
| |
| 2020-04-14 David Kilzer <ddkilzer@apple.com> |
| |
| Add WARN_UNUSED_RETURN to decode methods in Source/WebCore |
| <https://webkit.org/b/210416> |
| <rdar://problem/61693462> |
| |
| Reviewed by Alex Christensen. |
| |
| * Modules/geolocation/GeolocationPositionData.h: |
| * Modules/indexeddb/IDBGetAllResult.h: |
| * Modules/indexeddb/IDBGetResult.h: |
| * Modules/indexeddb/IDBKeyData.h: |
| * Modules/indexeddb/IDBKeyRangeData.h: |
| * Modules/indexeddb/server/IDBSerialization.cpp: |
| (WebCore::decodeKey): |
| * Modules/indexeddb/shared/IDBCursorInfo.h: |
| * Modules/indexeddb/shared/IDBCursorRecord.h: |
| * Modules/indexeddb/shared/IDBDatabaseInfo.h: |
| * Modules/indexeddb/shared/IDBError.h: |
| * Modules/indexeddb/shared/IDBGetAllRecordsData.h: |
| * Modules/indexeddb/shared/IDBGetRecordData.h: |
| * Modules/indexeddb/shared/IDBIndexInfo.h: |
| * Modules/indexeddb/shared/IDBIterateCursorData.h: |
| * Modules/indexeddb/shared/IDBObjectStoreInfo.h: |
| * Modules/indexeddb/shared/IDBRequestData.h: |
| * Modules/indexeddb/shared/IDBResourceIdentifier.h: |
| * Modules/indexeddb/shared/IDBTransactionInfo.h: |
| * Modules/mediasource/SourceBuffer.cpp: |
| (WebCore::decodeTimeComparator): |
| * dom/EventInit.h: |
| * dom/ExceptionData.h: |
| * dom/SecurityPolicyViolationEvent.h: |
| * editing/FontAttributeChanges.h: |
| * editing/FontShadow.h: |
| * loader/CanvasActivityRecord.h: |
| * loader/FetchOptions.h: |
| (WebCore::FetchOptions::decodePersistent): |
| * platform/ContentFilterUnblockHandler.h: |
| * platform/DragItem.h: |
| * platform/KeyedCoding.h: |
| * platform/LinkIcon.h: |
| * platform/ThreadSafeDataBuffer.h: |
| * platform/audio/mac/CAAudioStreamDescription.h: |
| * platform/cf/KeyedDecoderCF.h: |
| * platform/generic/KeyedDecoderGeneric.h: |
| * platform/glib/KeyedDecoderGlib.h: |
| * platform/graphics/Region.h: |
| * platform/graphics/RemoteVideoSample.h: |
| (WebCore::RemoteVideoSample::decode): |
| * platform/mediastream/MediaConstraints.h: |
| (WebCore::MediaConstraint::decode): |
| (WebCore::NumericConstraint::decode): |
| (WebCore::StringConstraint::decode): |
| * platform/mediastream/RealtimeMediaSourceCapabilities.h: |
| * platform/mediastream/RealtimeMediaSourceSettings.h: |
| * platform/mediastream/RealtimeMediaSourceSupportedConstraints.h: |
| * platform/network/HTTPHeaderMap.h: |
| * platform/network/NetworkLoadMetrics.h: |
| * platform/network/ResourceRequestBase.h: |
| * platform/network/ResourceResponseBase.h: |
| (WebCore::ResourceResponseBase::decode): |
| * platform/network/SameSiteInfo.h: |
| * platform/network/SocketStreamError.h: |
| * platform/network/curl/ResourceRequest.h: |
| * platform/network/soup/ResourceRequest.h: |
| * platform/network/soup/ResourceResponse.h: |
| * rendering/EventRegion.h: |
| * workers/service/ServiceWorkerFetchResult.h: |
| - Add WARN_UNUSED_RETURN to all decode functions. |
| |
| 2020-04-14 Antoine Quint <graouts@apple.com> |
| |
| [Web Animations] Store an Element / PseudoId pair to define the KeyframeEffect target |
| https://bugs.webkit.org/show_bug.cgi?id=210491 |
| |
| Reviewed by Antti Koivisto. |
| |
| In preparation for webkit.org/b/207290 where we will expose the `pseudoElement` JS API on KeyframeEffect we now |
| use an Element / PseudoId (m_target / m_pseudoId) pair to specify an effect's target. In the cases where it matters, |
| such as accessing the various animation collections exposed through Element and the KeyframeEffectStack, we now use |
| the new KeyframeEffect::targetElementOrPseudoElement() method to access the Element or PseudoElement targeted with |
| the Element / PseudoId pair. |
| |
| * animation/AnimationTimeline.cpp: |
| (WebCore::AnimationTimeline::removeAnimation): |
| * animation/DeclarativeAnimation.cpp: |
| (WebCore::DeclarativeAnimation::initialize): |
| * animation/DocumentTimeline.cpp: |
| (WebCore::DocumentTimeline::transitionDidComplete): |
| (WebCore::DocumentTimeline::animationAcceleratedRunningStateDidChange): |
| * animation/KeyframeEffect.cpp: |
| (WebCore::KeyframeEffect::create): |
| (WebCore::KeyframeEffect::KeyframeEffect): |
| (WebCore::KeyframeEffect::copyPropertiesFromSource): |
| (WebCore::KeyframeEffect::getKeyframes): |
| (WebCore::KeyframeEffect::forceLayoutIfNeeded): |
| (WebCore::KeyframeEffect::computeCSSAnimationBlendingKeyframes): |
| (WebCore::KeyframeEffect::computeCSSTransitionBlendingKeyframes): |
| (WebCore::KeyframeEffect::animationTimelineDidChange): |
| (WebCore::KeyframeEffect::updateEffectStackMembership): |
| (WebCore::KeyframeEffect::targetElementOrPseudoElement const): |
| (WebCore::KeyframeEffect::setTarget): |
| (WebCore::KeyframeEffect::apply): |
| (WebCore::KeyframeEffect::invalidate): |
| (WebCore::KeyframeEffect::getAnimatedStyle): |
| (WebCore::KeyframeEffect::applyPendingAcceleratedActions): |
| (WebCore::KeyframeEffect::document const): |
| (WebCore::KeyframeEffect::renderer const): |
| * animation/KeyframeEffect.h: |
| * animation/KeyframeEffectStack.cpp: |
| (WebCore::KeyframeEffectStack::addEffect): |
| * animation/WebAnimation.cpp: |
| (WebCore::WebAnimation::setEffectInternal): |
| (WebCore::WebAnimation::setTimeline): |
| (WebCore::WebAnimation::persist): |
| * dom/Document.cpp: |
| (WebCore::Document::matchingAnimations): |
| * inspector/agents/InspectorAnimationAgent.cpp: |
| (WebCore::buildObjectForKeyframes): |
| (WebCore::InspectorAnimationAgent::requestEffectTarget): |
| |
| 2020-04-14 Simon Fraser <simon.fraser@apple.com> |
| |
| [Async overflow scroll] Custom scrollbars on gmail don't show |
| https://bugs.webkit.org/show_bug.cgi?id=210438 |
| <rdar://problem/61722541> |
| |
| Reviewed by Tim Horton. |
| |
| Custom scrollbars painted into the backing store of the scrolling element, but that |
| might have become an empty "simple container layer" causing the scroll bars to not |
| be painted anywhere. |
| |
| Fix by making compositing layers for custom scrollbars. This is better than giving |
| backing store to the scroller's element, because that might be huge. |
| |
| Test: scrollbars/async-overflow-custom-scrollbar.html |
| |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::requiresLayerForScrollbar const): |
| (WebCore::RenderLayerBacking::requiresHorizontalScrollbarLayer const): |
| (WebCore::RenderLayerBacking::requiresVerticalScrollbarLayer const): |
| (WebCore::RenderLayerBacking::requiresScrollCornerLayer const): |
| * rendering/RenderLayerBacking.h: |
| |
| 2020-04-14 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK] Adapt to GdkVisual deprecation and removal |
| https://bugs.webkit.org/show_bug.cgi?id=210489 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| No new tests needed. |
| |
| Update the GdkVisual used to get the screen depth per component in |
| GTK3 and use default values for GTK4, as visuals as an abstraction |
| are gone from GTK4. The use in WK is very limited so there's no |
| much gain from peeking into backend-specific values. |
| |
| * platform/gtk/PlatformScreenGtk.cpp: |
| (WebCore::screenDepth): Guard GdkVisual call and leave |
| default value for GTK4. |
| (WebCore::screenDepthPerComponent): Update API and ditto. |
| |
| 2020-04-14 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][WPE] Scrollbar handle has no minimum size |
| https://bugs.webkit.org/show_bug.cgi?id=209962 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Set a minimum thumb length. |
| |
| * platform/adwaita/ScrollbarThemeAdwaita.cpp: |
| (WebCore::ScrollbarThemeAdwaita::minimumThumbLength): |
| |
| 2020-04-14 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] New scrollbar click behavior |
| https://bugs.webkit.org/show_bug.cgi?id=210002 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Use the same bahavior for mouse events when not rendering native scrollbars. |
| |
| * platform/gtk/ScrollbarThemeGtk.cpp: |
| (WebCore::ScrollbarThemeGtk::handleMousePressEvent): |
| |
| 2020-04-14 Antti Koivisto <antti@apple.com> |
| |
| [CSS Selectors] Selectors Level 4 specificity calculation for pseudo classes |
| https://bugs.webkit.org/show_bug.cgi?id=210419 |
| |
| Reviewed by Simon Fraser. |
| |
| CSS selector specification drafts at some point had a concept of "dynamic specificity" where |
| the specificity of a selector depended on the element it matched. It was only ever used with |
| :matches and :nth-child pseudo classes and has subsequently been removed. Selector specificity |
| can now always be computed statically. |
| |
| There is a ton of code to support this obsolete feature. Remove it. |
| |
| https://drafts.csswg.org/selectors-4/#specificity-rules |
| |
| "The specificity of an :is(), :not(), or :has() pseudo-class is replaced by the specificity |
| of the most specific complex selector in its selector list argument. |
| |
| Analogously, the specificity of an :nth-child() or :nth-last-child() selector is the specificity |
| of the pseudo class itself (counting as one pseudo-class selector) plus the specificity of the |
| most specific complex selector in its selector list argument (if any)." |
| |
| * css/html.css: |
| |
| Reorganize a :matches rule into a selector list to keep the exact specificites. |
| It matters here to select between listbox and menulist correctly based on the 'size' and 'multiple' attributes. |
| |
| * css/CSSSelector.cpp: |
| (WebCore::selectorSpecificity): |
| (WebCore::maxSpecificity): |
| (WebCore::simpleSelectorSpecificityInternal): |
| (WebCore::CSSSelector::simpleSelectorSpecificity const): |
| |
| Also handle nth here. |
| |
| (WebCore::CSSSelector::specificity const): |
| (WebCore::simpleSelectorFunctionalPseudoClassStaticSpecificity): Deleted. |
| (WebCore::functionalPseudoClassStaticSpecificity): Deleted. |
| (WebCore::staticSpecificityInternal): Deleted. |
| (WebCore::CSSSelector::staticSpecificity const): Deleted. |
| |
| Rename to just computeSpecificity(), there is no other kind than static. |
| |
| * css/CSSSelector.h: |
| * css/SelectorChecker.cpp: |
| (WebCore::SelectorChecker::match const): |
| (WebCore::SelectorChecker::matchHostPseudoClass const): |
| (WebCore::SelectorChecker::matchRecursively const): |
| (WebCore::SelectorChecker::checkOne const): |
| (WebCore::SelectorChecker::matchSelectorList const): |
| |
| SelectorChecker doesn't need to deal with specificity anymore. |
| |
| * css/SelectorChecker.h: |
| * cssjit/SelectorCompiler.cpp: |
| (WebCore::SelectorCompiler::addNthChildType): |
| (WebCore::SelectorCompiler::addPseudoClassType): |
| (WebCore::SelectorCompiler::constructFragmentsInternal): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeFunctionCallValueMatching): |
| |
| Neither does SelectorCompiler. |
| |
| * cssjit/SelectorCompiler.h: |
| * dom/SelectorQuery.cpp: |
| (WebCore::SelectorDataList::selectorMatches const): |
| (WebCore::SelectorDataList::selectorClosest const): |
| * inspector/InspectorStyleSheet.cpp: |
| (WebCore::buildObjectForSelectorHelper): |
| (WebCore::selectorsFromSource): |
| (WebCore::InspectorStyleSheet::buildObjectForSelector): |
| (WebCore::InspectorStyleSheet::buildObjectForSelectorList): |
| (WebCore::InspectorStyleSheet::buildObjectForRule): |
| (WebCore::InspectorStyleSheet::buildArrayForRuleList): |
| (WebCore::hasDynamicSpecificity): Deleted. |
| * inspector/InspectorStyleSheet.h: |
| * inspector/agents/InspectorCSSAgent.cpp: |
| (WebCore::InspectorCSSAgent::setRuleSelector): |
| (WebCore::InspectorCSSAgent::addRule): |
| (WebCore::InspectorCSSAgent::buildObjectForRule): |
| (WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList): |
| * inspector/agents/InspectorDOMAgent.cpp: |
| (WebCore::InspectorDOMAgent::highlightSelector): |
| * style/ElementRuleCollector.cpp: |
| (WebCore::Style::ElementRuleCollector::ruleMatches): |
| |
| Switch to get the specificity from the selector instead of computing it during selector checking. |
| |
| * style/ElementRuleCollector.h: |
| |
| 2020-04-14 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GLIB] Fix race condition in FileMonitor implementation |
| https://bugs.webkit.org/show_bug.cgi?id=210483 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| This is causing flaky timeouts when running resource load statistics layout tests. The problem is that we assume |
| FileMonitor has the last reference of the platform monitor and it's deleted on g_object_unref(), but GLib keeps |
| another reference that is released later on a different thread if the monitor is still active. We just need to |
| ensure we cancel the monitor before calling g_object_unref(). |
| |
| * platform/FileMonitor.h: |
| * platform/glib/FileMonitorGLib.cpp: |
| (WebCore::FileMonitor::~FileMonitor): |
| (WebCore::FileMonitor::didChange): |
| (WebCore::FileMonitor::cancel): |
| |
| 2020-04-14 Charlie Turner <cturner@igalia.com> |
| |
| [EME][CDMProxy] Fix waitingForKey logic |
| https://bugs.webkit.org/show_bug.cgi?id=210437 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| startedWaitingForKey() was incorrectly flagged. It needs to signal on |
| the 0->1 transition, here it was only signalling on N->N+1 where N>0. |
| |
| Also break ASSERTs into separate statements, it makes it easier in a |
| crash dump to see which conjuct fired. |
| |
| Test: imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-waiting-for-a-key.https.html |
| |
| * platform/encryptedmedia/CDMProxy.cpp: |
| (WebCore::CDMInstanceProxy::startedWaitingForKey): |
| (WebCore::CDMInstanceProxy::stoppedWaitingForKey): |
| |
| 2020-04-14 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Bring back support for rendering scrollbars using the system appearance |
| https://bugs.webkit.org/show_bug.cgi?id=209805 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Bring back ScrollbarThemeGtk, RenderThemeGadget and RenderThemeWidget (renamed as RenderThemeScrollbar), |
| including only the code needed to render the scrollbars. ScrollbarThemeGtk inherits from ScrollbarThemeAdwaita |
| that is used when system appearance is disabled. |
| |
| * PlatformGTK.cmake: |
| * SourcesGTK.txt: |
| * platform/adwaita/ScrollbarThemeAdwaita.cpp: |
| * platform/adwaita/ScrollbarThemeAdwaita.h: |
| * platform/gtk/RenderThemeGadget.cpp: Added. |
| (WebCore::RenderThemeGadget::create): |
| (WebCore::createStyleContext): |
| (WebCore::appendElementToPath): |
| (WebCore::RenderThemeGadget::RenderThemeGadget): |
| (WebCore::RenderThemeGadget::marginBox const): |
| (WebCore::RenderThemeGadget::borderBox const): |
| (WebCore::RenderThemeGadget::paddingBox const): |
| (WebCore::RenderThemeGadget::contentsBox const): |
| (WebCore::RenderThemeGadget::color const): |
| (WebCore::RenderThemeGadget::backgroundColor const): |
| (WebCore::RenderThemeGadget::opacity const): |
| (WebCore::RenderThemeGadget::state const): |
| (WebCore::RenderThemeGadget::setState): |
| (WebCore::RenderThemeGadget::minimumSize const): |
| (WebCore::RenderThemeGadget::preferredSize const): |
| (WebCore::RenderThemeGadget::render): |
| (WebCore::RenderThemeBoxGadget::RenderThemeBoxGadget): |
| (WebCore::RenderThemeBoxGadget::preferredSize const): |
| (WebCore::RenderThemeScrollbarGadget::RenderThemeScrollbarGadget): |
| (WebCore::RenderThemeScrollbarGadget::renderStepper): |
| * platform/gtk/RenderThemeGadget.h: Added. |
| (WebCore::RenderThemeGadget::context const): |
| * platform/gtk/RenderThemeScrollbar.cpp: Added. |
| (WebCore::widgetMap): |
| (WebCore::RenderThemeScrollbar::getOrCreate): |
| (WebCore::RenderThemeScrollbar::clearCache): |
| (WebCore::RenderThemeScrollbar::RenderThemeScrollbar): |
| (WebCore::RenderThemeScrollbar::stepper): |
| * platform/gtk/RenderThemeScrollbar.h: Added. |
| (WebCore::RenderThemeScrollbar::scrollbar const): |
| (WebCore::RenderThemeScrollbar::contents const): |
| (WebCore::RenderThemeScrollbar::slider const): |
| (WebCore::RenderThemeScrollbar::trough const): |
| * platform/gtk/ScrollbarThemeGtk.cpp: Added. |
| (WebCore::ScrollbarTheme::nativeTheme): |
| (WebCore::themeChangedCallback): |
| (WebCore::ScrollbarThemeGtk::ScrollbarThemeGtk): |
| (WebCore::ScrollbarThemeGtk::setUseSystemAppearance): |
| (WebCore::ScrollbarThemeGtk::themeChanged): |
| (WebCore::ScrollbarThemeGtk::updateThemeProperties): |
| (WebCore::ScrollbarThemeGtk::hasButtons): |
| (WebCore::scrollbarPartStateFlags): |
| (WebCore::widgetTypeForScrollbar): |
| (WebCore::contentsRectangle): |
| (WebCore::ScrollbarThemeGtk::trackRect): |
| (WebCore::ScrollbarThemeGtk::backButtonRect): |
| (WebCore::ScrollbarThemeGtk::forwardButtonRect): |
| (WebCore::ScrollbarThemeGtk::paint): |
| (WebCore::ScrollbarThemeGtk::handleMousePressEvent): |
| (WebCore::ScrollbarThemeGtk::scrollbarThickness): |
| (WebCore::ScrollbarThemeGtk::minimumThumbLength): |
| * platform/gtk/ScrollbarThemeGtk.h: Added. |
| |
| 2020-04-14 Youenn Fablet <youenn@apple.com> |
| |
| Add a timer to AVVideoCaptureSource to verify reception of frames |
| https://bugs.webkit.org/show_bug.cgi?id=210335 |
| |
| Reviewed by Eric Carlson. |
| |
| Count the number of frames being captured. |
| Add a timer repeating every 3 seconds. |
| Timer starts/stops based on whether the session is running/is interrupted. |
| If the number of frames did not increase, fail the source. |
| Manually tested. |
| |
| * platform/mediastream/RealtimeMediaSource.cpp: |
| (WebCore::RealtimeMediaSource::captureFailed): |
| Explicitly call stop() instead of just setting m_isProducingData. |
| This ensures we release all resources and that we may not restart capturing after captureFailed(). |
| * platform/mediastream/mac/AVVideoCaptureSource.h: |
| * platform/mediastream/mac/AVVideoCaptureSource.mm: |
| (WebCore::AVVideoCaptureSource::AVVideoCaptureSource): |
| (WebCore::AVVideoCaptureSource::verifyIsCapturing): |
| (WebCore::AVVideoCaptureSource::updateVerifyCapturingTimer): |
| (WebCore::AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection): |
| (WebCore::AVVideoCaptureSource::captureSessionIsRunningDidChange): |
| |
| 2020-04-14 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r260024. |
| https://bugs.webkit.org/show_bug.cgi?id=210480 |
| |
| Regressed performance due to loss of specificity caching |
| (Requested by anttik on #webkit). |
| |
| Reverted changeset: |
| |
| "[CSS Selectors] Selectors Level 4 specificity calculation for |
| pseudo classes" |
| https://bugs.webkit.org/show_bug.cgi?id=210419 |
| https://trac.webkit.org/changeset/260024 |
| |
| 2020-04-13 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r260052. |
| https://bugs.webkit.org/show_bug.cgi?id=210479 |
| |
| Breaks iOS tests, needs more work (Requested by smfr on |
| #webkit). |
| |
| Reverted changeset: |
| |
| "Add ENABLE_CUSTOM_SCROLLBARS and define it for macOS and for |
| non-Cocoa platforms" |
| https://bugs.webkit.org/show_bug.cgi?id=210460 |
| https://trac.webkit.org/changeset/260052 |
| |
| 2020-04-13 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK4] Use ThemeAdwaita instead of ThemeGtk |
| https://bugs.webkit.org/show_bug.cgi?id=210334 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| No new tests needed. |
| |
| * platform/adwaita/ThemeAdwaita.cpp: Build the Theme::singleton() factory also with USE(GTK4). |
| * platform/gtk/ThemeGtk.cpp: Conditionally build if !USE(GTK4). |
| (WebCore::ThemeGtk::ensurePlatformColors const): Add deprecation ignore guards. |
| * platform/gtk/ThemeGtk.h: Conditionally build if !USE(GTK4). |
| |
| 2020-04-13 Simon Fraser <simon.fraser@apple.com> |
| |
| [Async overflow] Get scroll-snap working with async overflow scrolling on macOS |
| https://bugs.webkit.org/show_bug.cgi?id=210471 |
| <rdar://problem/61643199> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Obey the FIXME and move scroll-snap related code to the delegate so that it works for |
| both frame and overflow nodes. |
| |
| Tests: tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-async-overflow-stateless.html |
| tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-async-overflow.html |
| |
| * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: |
| (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren): |
| (WebCore::convertToLayoutUnits): Deleted. |
| * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm: |
| (WebCore::convertToLayoutUnits): |
| (WebCore::ScrollingTreeScrollingNodeDelegateMac::updateFromStateNode): |
| |
| 2020-04-13 Zalan Bujtas <zalan@apple.com> |
| |
| Do not cache definite height against perpendicular flex items. |
| https://bugs.webkit.org/show_bug.cgi?id=207603 |
| <rdar://problem/59135373> |
| |
| Reviewed by Simon Fraser. |
| |
| RenderFlexibleBox::m_hasDefiniteHeight should not be set when the child we check against is a perpendicular item |
| because a perpendicular box's height is resolved against the containing block's width. |
| |
| Test: fast/flexbox/unresolved-height-percentage-crash.html |
| |
| * rendering/RenderFlexibleBox.cpp: |
| (WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild): |
| |
| 2020-04-13 David Kilzer <ddkilzer@apple.com> |
| |
| Replace use of Checked<size_t, RecordOverflow> with CheckedSize |
| <https://webkit.org/b/210461> |
| |
| Reviewed by Mark Lam. |
| |
| * platform/audio/ios/AudioFileReaderIOS.cpp: |
| (WebCore::createAudioBufferList): |
| * platform/graphics/ImageBufferBackend.cpp: |
| (WebCore::ImageBufferBackend::calculateBackendSize): |
| * platform/graphics/win/Direct2DUtilities.cpp: |
| (WebCore::Direct2D::createDirect2DImageSurfaceWithData): |
| * platform/graphics/win/ImageBufferDirect2DBackend.cpp: |
| (WebCore::ImageBufferDirect2DBackend::copyNativeImage const): |
| |
| 2020-04-13 Simon Fraser <simon.fraser@apple.com> |
| |
| Add ENABLE_CUSTOM_SCROLLBARS and define it for macOS and for non-Cocoa platforms |
| https://bugs.webkit.org/show_bug.cgi?id=210460 |
| |
| Reviewed by Tim Horton. |
| |
| Wrap all custom scrollbar and custom scroll corner code in ENABLE(CUSTOM_SCROLLBARS). |
| |
| * page/FrameView.cpp: |
| (WebCore::FrameView::createScrollbar): |
| (WebCore::FrameView::updateScrollCorner): |
| * page/FrameView.h: |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::createScrollbar): |
| (WebCore::RenderLayer::calculateClipRects const): |
| * rendering/RenderLayer.h: |
| * rendering/RenderLayerCompositor.cpp: |
| * rendering/RenderListBox.cpp: |
| (WebCore::RenderListBox::createScrollbar): |
| * rendering/RenderMenuList.cpp: |
| (RenderMenuList::createScrollbar): |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::containingBlock const): |
| * rendering/RenderObject.h: |
| * rendering/RenderScrollbar.cpp: |
| * rendering/RenderScrollbar.h: |
| * rendering/RenderScrollbarPart.cpp: |
| * rendering/RenderScrollbarPart.h: |
| * rendering/RenderScrollbarTheme.cpp: |
| * rendering/RenderScrollbarTheme.h: |
| * rendering/RenderSearchField.cpp: |
| (WebCore::RenderSearchField::createScrollbar): |
| * rendering/RenderTextControlSingleLine.cpp: |
| * style/StyleResolver.cpp: |
| |
| 2020-04-13 Kenneth Russell <kbr@chromium.org> |
| |
| Clean up more resources during WebGLLayer teardown |
| https://bugs.webkit.org/show_bug.cgi?id=210222 |
| |
| Reviewed by Dean Jackson. |
| |
| Release OpenGL resources just before destruction of the underlying |
| OpenGL context. |
| |
| * platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: |
| (WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL): |
| * platform/graphics/cocoa/WebGLLayer.h: |
| * platform/graphics/cocoa/WebGLLayer.mm: |
| (-[WebGLLayer releaseGLResources]): |
| (-[WebGLLayer dealloc]): Deleted. |
| |
| 2020-04-13 Noam Rosenthal <noam@webkit.org> |
| |
| Background images should figure into visually non empty heuristic |
| https://bugs.webkit.org/show_bug.cgi?id=208501 |
| |
| Reviewed by Simon Fraser. |
| |
| This makes the visually non-empty heuristic treat background images the same |
| as it treats regular images. This is in line with first contentful paint spec in paint timing: |
| https://w3c.github.io/paint-timing/. |
| |
| Note that the pixel count is computed based on the image size rather than the box size, as the box size might not be known at this time. |
| This is equivalent to the pixel reporting done for RenderImage. |
| |
| Border-images and masks are excluded, as per the spec. |
| |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderBox::imageChanged): |
| Call incrementVisuallyNonEmptyPixelCountIfNeeded for background images |
| |
| * rendering/RenderElement.cpp: |
| (WebCore::RenderElement::RenderElement): |
| * rendering/RenderBox.cpp: |
| (WebCore::RenderElement::incrementVisuallyNonEmptyPixelCountIfNeeded): |
| * rendering/RenderBox.h: |
| * rendering/RenderImage.cpp: |
| (WebCore::RenderImage::incrementVisuallyNonEmptyPixelCountIfNeeded): Deleted. |
| * rendering/RenderImage.h: |
| Moved incrementVisuallyNonEmptyPixelCountIfNeeded from RenderImage to RenderElement |
| |
| 2020-04-13 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| module's default cross-origin value should be "anonymous" |
| https://bugs.webkit.org/show_bug.cgi?id=210326 |
| |
| Reviewed by Sam Weinig. |
| |
| Tests: http/tests/security/cookie-module-import-propagate.html |
| http/tests/security/cookie-module-import.html |
| http/tests/security/cookie-module-propagate.html |
| http/tests/security/cookie-module.html |
| |
| The original spec was using "omit" crossorigin for modules when crossorigin is not set / empty. |
| However, the spec is changed to sending requests with "same-origin" credentials ("anonymous" crossorigin mode) |
| by default. We should follow it. |
| |
| * dom/ScriptElement.cpp: |
| (WebCore::ScriptElement::requestModuleScript): |
| * dom/ScriptElementCachedScriptFetcher.cpp: |
| (WebCore::ScriptElementCachedScriptFetcher::requestModuleScript const): |
| * dom/ScriptElementCachedScriptFetcher.h: |
| * html/parser/HTMLResourcePreloader.cpp: |
| (WebCore::PreloadRequest::resourceRequest): |
| * loader/cache/CachedScript.cpp: |
| (WebCore::CachedScript::script): While this is not directly related to this patch, added new tests found that we are returning |
| null StringView if the resource is zero byte. This totally works, but JSC::Parser has assertion that this is non-null |
| StringView. For zero byte CachedScript resource, we should return non-null empty StringView instead. |
| |
| 2020-04-13 Dean Jackson <dino@apple.com> |
| |
| Add Apple's Reality files to AR System Preview |
| https://bugs.webkit.org/show_bug.cgi?id=210449 |
| <rdar://problem/61732793> |
| |
| Reviewed by Sam Weinig. |
| |
| Add support for Apples .reality AR files - both the vendor MIME |
| Type and our UTI. These have been supported by WebKitAdditions for |
| a while. Move them into Open Source. |
| |
| * platform/MIMETypeRegistry.cpp: |
| (WebCore::MIMETypeRegistry::systemPreviewMIMETypes): |
| * platform/network/mac/UTIUtilities.mm: |
| (WebCore::UTIFromUnknownMIMEType): |
| |
| 2020-04-13 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Remove unused UTType swizzler code |
| https://bugs.webkit.org/show_bug.cgi?id=210435 |
| |
| Unreviewed rollout of r258120. |
| |
| * WebCore.xcodeproj/project.pbxproj: |
| * platform/cocoa/UTTypeRecordSwizzler.h: Removed. |
| * platform/cocoa/UTTypeRecordSwizzler.mm: Removed. |
| |
| 2020-04-13 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r260003. |
| https://bugs.webkit.org/show_bug.cgi?id=210441 |
| |
| Avoid using basic-authentication for tests (Requested by |
| yusukesuzuki on #webkit). |
| |
| Reverted changeset: |
| |
| "module's default cross-origin value should be "anonymous"" |
| https://bugs.webkit.org/show_bug.cgi?id=210326 |
| https://trac.webkit.org/changeset/260003 |
| |
| 2020-04-13 Antti Koivisto <antti@apple.com> |
| |
| [CSS Selectors] Selectors Level 4 specificity calculation for pseudo classes |
| https://bugs.webkit.org/show_bug.cgi?id=210419 |
| |
| Reviewed by Simon Fraser. |
| |
| CSS selector specification drafts at some point had a concept of "dynamic specificity" where |
| the specificity of a selector depended on the element it matched. It was only ever used with |
| :matches and :nth-child pseudo classes and has subsequently been removed. Selector specificity |
| can now always be computed statically. |
| |
| There is a ton of code to support this obsolete feature. Remove it. |
| |
| https://drafts.csswg.org/selectors-4/#specificity-rules |
| |
| "The specificity of an :is(), :not(), or :has() pseudo-class is replaced by the specificity |
| of the most specific complex selector in its selector list argument. |
| |
| Analogously, the specificity of an :nth-child() or :nth-last-child() selector is the specificity |
| of the pseudo class itself (counting as one pseudo-class selector) plus the specificity of the |
| most specific complex selector in its selector list argument (if any)." |
| |
| * css/html.css: |
| |
| Reorganize a :matches rule into a selector list to keep the exact specificites. |
| It matters here to select between listbox and menulist correctly based on the 'size' and 'multiple' attributes. |
| |
| * css/CSSSelector.cpp: |
| (WebCore::selectorSpecificity): |
| (WebCore::maxSpecificity): |
| (WebCore::simpleSelectorSpecificityInternal): |
| (WebCore::CSSSelector::simpleSelectorSpecificity const): |
| |
| Also handle nth here. |
| |
| (WebCore::CSSSelector::specificity const): |
| (WebCore::simpleSelectorFunctionalPseudoClassStaticSpecificity): Deleted. |
| (WebCore::functionalPseudoClassStaticSpecificity): Deleted. |
| (WebCore::staticSpecificityInternal): Deleted. |
| (WebCore::CSSSelector::staticSpecificity const): Deleted. |
| |
| Rename to just computeSpecificity(), there is no other kind than static. |
| |
| * css/CSSSelector.h: |
| * css/SelectorChecker.cpp: |
| (WebCore::SelectorChecker::match const): |
| (WebCore::SelectorChecker::matchHostPseudoClass const): |
| (WebCore::SelectorChecker::matchRecursively const): |
| (WebCore::SelectorChecker::checkOne const): |
| (WebCore::SelectorChecker::matchSelectorList const): |
| |
| SelectorChecker doesn't need to deal with specificity anymore. |
| |
| * css/SelectorChecker.h: |
| * cssjit/SelectorCompiler.cpp: |
| (WebCore::SelectorCompiler::addNthChildType): |
| (WebCore::SelectorCompiler::addPseudoClassType): |
| (WebCore::SelectorCompiler::constructFragmentsInternal): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker): |
| (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeFunctionCallValueMatching): |
| |
| Neither does SelectorCompiler. |
| |
| * cssjit/SelectorCompiler.h: |
| * dom/SelectorQuery.cpp: |
| (WebCore::SelectorDataList::selectorMatches const): |
| (WebCore::SelectorDataList::selectorClosest const): |
| * inspector/InspectorStyleSheet.cpp: |
| (WebCore::buildObjectForSelectorHelper): |
| (WebCore::selectorsFromSource): |
| (WebCore::InspectorStyleSheet::buildObjectForSelector): |
| (WebCore::InspectorStyleSheet::buildObjectForSelectorList): |
| (WebCore::InspectorStyleSheet::buildObjectForRule): |
| (WebCore::InspectorStyleSheet::buildArrayForRuleList): |
| (WebCore::hasDynamicSpecificity): Deleted. |
| * inspector/InspectorStyleSheet.h: |
| * inspector/agents/InspectorCSSAgent.cpp: |
| (WebCore::InspectorCSSAgent::setRuleSelector): |
| (WebCore::InspectorCSSAgent::addRule): |
| (WebCore::InspectorCSSAgent::buildObjectForRule): |
| (WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList): |
| * inspector/agents/InspectorDOMAgent.cpp: |
| (WebCore::InspectorDOMAgent::highlightSelector): |
| * style/ElementRuleCollector.cpp: |
| (WebCore::Style::ElementRuleCollector::ruleMatches): |
| (WebCore::Style::ElementRuleCollector::collectMatchingRulesForList): |
| |
| Switch to get the specificity from the selector instead of computing it during selector checking. |
| |
| * style/ElementRuleCollector.h: |
| * style/RuleData.cpp: |
| (WebCore::Style::computeMatchesBasedOnRuleHash): |
| (WebCore::Style::RuleData::RuleData): |
| (WebCore::Style::computeMatchBasedOnRuleHash): Deleted. |
| * style/RuleData.h: |
| (WebCore::Style::RuleData::matchesBasedOnRuleHash const): |
| (WebCore::Style::RuleData::matchBasedOnRuleHash const): Deleted. |
| |
| This can be a bit instead of an enum since there is no need to communicate specificity. |
| |
| 2020-04-13 David Kilzer <ddkilzer@apple.com> |
| |
| KeyedDecoder functions in ResourceLoadStatistics.{cpp,h} should return bool and use WARN_UNUSED_RETURN |
| <https://webkit.org/b/210414> |
| <rdar://problem/61693118> |
| |
| Reviewed by Alex Christensen. |
| |
| * loader/ResourceLoadStatistics.cpp: |
| (WebCore::decodeHashCountedSet): |
| (WebCore::decodeHashSet): |
| (WebCore::decodeOptionSet): |
| (WebCore::decodeFontHashSet): |
| (WebCore::decodeCanvasActivityRecord): |
| (WebCore::ResourceLoadStatistics::decode): |
| * loader/ResourceLoadStatistics.h: |
| - Change decode functions to return `bool`. |
| - Add WARN_UNUSED_RETURN to all decode functions. |
| - Check the return value of all decode functions. |
| |
| 2020-04-13 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| When drawing an image srcRect and imageRect have to be in the orientation of destRect |
| https://bugs.webkit.org/show_bug.cgi?id=210364 |
| |
| Reviewed by Darin Adler. |
| |
| * html/canvas/CanvasRenderingContext2DBase.cpp: |
| (WebCore::CanvasRenderingContext2DBase::drawImage): |
| Use the renderer to get the orientation of the image if it is available. |
| Otherwise fall back to computedStyle(). |
| |
| * platform/graphics/BitmapImage.cpp: |
| (WebCore::BitmapImage::draw): |
| For async image decoding, we will use the none oriented size as the |
| sizeForDrawing. imageRect must be in the same orientation as destRect. |
| |
| * platform/graphics/GraphicsContext.cpp: |
| (WebCore::GraphicsContext::drawImage): |
| srcRect must be in the same orientation as destRect. |
| |
| 2020-04-13 Joonghun Park <jh718.park@samsung.com> |
| |
| Unreviewed. Remove redundant move in return statement. |
| |
| Return statement already returns rvalue, |
| so we don't need move here. |
| |
| This patch removes the build warning below since r259922. |
| warning: redundant move in return statement [-Wredundant-move] |
| |
| No new tests, no new behaviours. |
| |
| * page/csp/ContentSecurityPolicyResponseHeaders.h: |
| (WebCore::ContentSecurityPolicyResponseHeaders::decode): |
| * platform/network/cf/CertificateInfoCFNet.cpp: |
| (WTF::Persistence::decodeSecTrustRef): |
| |
| 2020-04-13 Youenn Fablet <youenn@apple.com> |
| |
| Fix mute/unmute of CoreAudioCapture sources after revision 257914 |
| https://bugs.webkit.org/show_bug.cgi?id=210381 |
| |
| Reviewed by Eric Carlson. |
| |
| Revert part of revision 257914 since we still need the active source registration/unregistration when capturing in web process. |
| Make sure mock factory delegates all active source handling to CoreAudioCaptureSourceFactory, |
| now that the mock factory is using CoreAudioCaptureSources with a mock share dunit. |
| |
| Tests: platform/ios/mediastream/audio-muted-in-background-tab-gpu-process.html |
| platform/ios/mediastream/getUserMedia-single-capture-gpu-process.html |
| |
| * platform/mediastream/RealtimeMediaSourceFactory.h: |
| * platform/mediastream/mac/CoreAudioCaptureSource.cpp: |
| (WebCore::CoreAudioCaptureSource::~CoreAudioCaptureSource): |
| (WebCore::CoreAudioCaptureSource::startProducingData): |
| * platform/mock/MockRealtimeMediaSourceCenter.cpp: |
| |
| 2020-04-13 Michael Catanzaro <mcatanzaro@gnome.org> |
| |
| Fix various build warnings |
| https://bugs.webkit.org/show_bug.cgi?id=210429 |
| |
| Reviewed by Mark Lam. |
| |
| Fix -Wunused-parameter warning. |
| |
| * html/canvas/WebGLRenderingContextBase.cpp: |
| (WebCore::WebGLRenderingContextBase::texImage2DBase): |
| |
| 2020-04-13 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Pre-fill columnIntrinsicWidths vector |
| https://bugs.webkit.org/show_bug.cgi?id=210415 |
| |
| Reviewed by Antti Koivisto. |
| |
| Vector<ColumnMinimumWidth> has a fixed number of entries (number of columns in the table). |
| (This patch also flips the shouldFlex flag to isFixedWidth. It reads better in the context of minimum _widths_). |
| |
| Test: fast/layoutformattingcontext/table-with-column-spanner-first-row.html |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): |
| |
| 2020-04-13 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK4] Fix usage of GDK event functions in PlatformWheelEventGtk |
| https://bugs.webkit.org/show_bug.cgi?id=210160 |
| |
| Reviewed by Michael Catanzaro. |
| |
| No new tests needed. |
| |
| * platform/gtk/PlatformWheelEventGtk.cpp: |
| (WebCore::PlatformWheelEvent::PlatformWheelEvent): Conditionally |
| use the new GDK event functions when building with GTK4. |
| |
| 2020-04-13 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| module's default cross-origin value should be "anonymous" |
| https://bugs.webkit.org/show_bug.cgi?id=210326 |
| |
| Reviewed by Sam Weinig. |
| |
| The original spec was using "omit" crossorigin for modules when crossorigin is not set / empty. |
| However, the spec is changed to sending requests with "same-origin" credentials ("anonymous" crossorigin mode) |
| by default. We should follow it. |
| |
| * dom/ScriptElement.cpp: |
| (WebCore::ScriptElement::requestModuleScript): |
| * dom/ScriptElementCachedScriptFetcher.cpp: |
| (WebCore::ScriptElementCachedScriptFetcher::requestModuleScript const): |
| * dom/ScriptElementCachedScriptFetcher.h: |
| * html/parser/HTMLResourcePreloader.cpp: |
| (WebCore::PreloadRequest::resourceRequest): |
| * loader/cache/CachedScript.cpp: |
| (WebCore::CachedScript::script): While this is not directly related to this patch, added new tests found that we are returning |
| null StringView if the resource is zero byte. This totally works, but JSC::Parser has assertion that this is non-null |
| StringView. For zero byte CachedScript resource, we should return non-null empty StringView instead. |
| |
| 2020-04-13 Charlie Turner <cturner@igalia.com> |
| |
| [EME][GStreamer] remove m_cdmInstance ASSERT in cdmInstanceDetached |
| https://bugs.webkit.org/show_bug.cgi?id=210331 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| In tests that reset the src very quickly, the MediaKeys can be |
| installed and then the src is reset before an attachment message |
| is sent. Hence, detachment can result in no CDM currently |
| existing. |
| |
| Covered by imported/w3c/web-platform-tests/encrypted-media. |
| |
| * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: |
| (WebCore::MediaPlayerPrivateGStreamer::cdmInstanceDetached): Only |
| assert if the CDM instance has been set before detachment. |
| (WebCore::MediaPlayerPrivateGStreamer::attemptToDecryptWithInstance): |
| Do not need the .get(), the operator== overload in RefPtr does |
| this for us, and it makes the code more consistent. |
| |
| 2020-04-13 Rob Buis <rbuis@igalia.com> |
| |
| Remove return parameter from FrameLoader::closeURL |
| https://bugs.webkit.org/show_bug.cgi?id=210404 |
| |
| Reviewed by Manuel Rego Casasnovas. |
| |
| Remove return parameter from FrameLoader::closeURL since it always |
| returns true and is never tested. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::closeURL): |
| * loader/FrameLoader.h: |
| |
| 2020-04-13 Rob Buis <rbuis@igalia.com> |
| |
| Remove addExtraFieldsToSubresourceRequest |
| https://bugs.webkit.org/show_bug.cgi?id=210407 |
| |
| Reviewed by Darin Adler. |
| |
| Remove addExtraFieldsToSubresourceRequest since it can be replaced by |
| calling addExtraFieldsToRequest. The loadType parameter is not taken |
| into account by defaultRequestCachingPolicy so FrameLoadType::Standard |
| rather than m_loadType is passed. |
| |
| This patch also replaces the isMainResource boolean parameter with an enum. |
| |
| * loader/FrameLoader.cpp: |
| (WebCore::FrameLoader::loadURL): |
| (WebCore::FrameLoader::load): |
| (WebCore::FrameLoader::addExtraFieldsToRequest): |
| (WebCore::FrameLoader::loadPostRequest): |
| (WebCore::FrameLoader::loadResourceSynchronously): |
| (WebCore::FrameLoader::loadDifferentDocumentItem): |
| (WebCore::FrameLoader::addExtraFieldsToSubresourceRequest): Deleted. |
| * loader/FrameLoader.h: |
| * loader/PingLoader.cpp: |
| (WebCore::PingLoader::loadImage): |
| (WebCore::PingLoader::sendPing): |
| (WebCore::PingLoader::sendViolationReport): |
| * loader/cache/CachedResource.cpp: |
| (WebCore::CachedResource::load): |
| |
| 2020-04-12 Darin Adler <darin@apple.com> |
| |
| Fix a few mispellings of descendant and propagation |
| https://bugs.webkit.org/show_bug.cgi?id=210409 |
| |
| Reviewed by Mark Lam. |
| |
| * dom/Element.cpp: |
| (WebCore::Element::dispatchWheelEvent): "propagation" |
| * dom/TreeScopeOrderedMap.cpp: |
| (WebCore::TreeScopeOrderedMap::getAllElementsById const): |
| "descendants". Also refactored this function a bit. |
| * html/MediaElementSession.cpp: |
| (WebCore::MediaElementSession::canShowControlsManager const): |
| "descendants" |
| * rendering/RenderFrameSet.cpp: |
| (WebCore::resetFrameRendererAndDescendants): "descendants" |
| (WebCore::RenderFrameSet::positionFrames): "descendants" |
| (WebCore::RenderFrameSet::positionFramesWithFlattening): "descendants" |
| |
| 2020-04-12 Darin Adler <darin@apple.com> |
| |
| Refactor and tighten up the CSSVariableReferenceValue class |
| https://bugs.webkit.org/show_bug.cgi?id=210406 |
| |
| Reviewed by Anders Carlsson. |
| |
| * css/CSSCustomPropertyValue.h: Remove uneeded forward declaration of |
| CSSVariableReferenceValue, since it's not used here. Added inclde of |
| CSSVariableData.h since the use of Variant in this class does require |
| that header, which we were getting indirectly before from |
| CSSVariableReferenceValue.h in some translation units. |
| |
| * css/CSSVariableReferenceValue.cpp: |
| (WebCore::CSSVariableReferenceValue::CSSVariableReferenceValue): Moved here |
| from the header. |
| (WebCore::CSSVariableReferenceValue::create): Ditto. |
| (WebCore::CSSVariableReferenceValue::equals const): Ditto. |
| (WebCore::CSSVariableReferenceValue::customCSSText const): Use non-null to |
| indicate this is not serialized. |
| * css/CSSVariableReferenceValue.h: Reduced includes, inlining, marked |
| constructor explicit, removed unneeded m_serialized boolean. |
| |
| * rendering/style/StyleCustomPropertyData.h: Remove unneeded include |
| of CSSVariableReferenceValue.h, not used here. |
| |
| 2020-04-12 Darin Adler <darin@apple.com> |
| |
| Fix some strange uses of start/endOfDocument |
| https://bugs.webkit.org/show_bug.cgi?id=210408 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * editing/VisibleSelection.cpp: |
| (WebCore::VisibleSelection::setStartAndEndFromBaseAndExtentRespectingGranularity): |
| Call startOfDocument and endOfDocument without unnecessarily turning a Position |
| into a VisiblePostion, since those functions just require any node from the document. |
| |
| 2020-04-12 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Add support for column spanners |
| https://bugs.webkit.org/show_bug.cgi?id=210403 |
| |
| Reviewed by Antti Koivisto. |
| |
| Table width constraint computation with spanner support is as follows: |
| |
| 1. Collect each cells' width constraints. |
| 2. Collect fixed column widths set by <colgroup>'s and <col>s. |
| 3. Find the min/max width for each columns using the cell constraints and the <col> fixed widths but ignore column spans. |
| 4. Distribute column spanning cells min/max widths. |
| 5. Add them all up and return the computed min/max widths. |
| |
| * layout/FormattingContext.h: |
| (WebCore::Layout::FormattingContext::IntrinsicWidthConstraints::operator-=): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): |
| * layout/tableformatting/TableFormattingContextGeometry.cpp: |
| (WebCore::Layout::TableFormattingContext::Geometry::intrinsicWidthConstraintsForCell): |
| * layout/tableformatting/TableGrid.cpp: |
| (WebCore::Layout::TableGrid::Columns::hasFixedColumnsOnly const): |
| * layout/tableformatting/TableGrid.h: |
| |
| 2020-04-12 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Column, Row and Cell boxes are always ContainerBoxes |
| https://bugs.webkit.org/show_bug.cgi?id=210402 |
| |
| Reviewed by Antti Koivisto. |
| |
| These boxes are always ContainerBox types. |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutCell): |
| (WebCore::Layout::TableFormattingContext::ensureTableGrid): |
| (WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns): |
| * layout/tableformatting/TableGrid.cpp: |
| (WebCore::Layout::TableGrid::Column::Column): |
| (WebCore::Layout::TableGrid::Columns::addColumn): |
| (WebCore::Layout::TableGrid::Rows::addRow): |
| (WebCore::Layout::TableGrid::Row::Row): |
| (WebCore::Layout::TableGrid::Cell::Cell): |
| (WebCore::Layout::TableGrid::appendCell): |
| (WebCore::Layout::TableGrid::insertCell): |
| (WebCore::Layout::TableGrid::removeCell): |
| * layout/tableformatting/TableGrid.h: |
| (WebCore::Layout::TableGrid::Column::box const): |
| (WebCore::Layout::TableGrid::Row::box const): |
| (WebCore::Layout::TableGrid::Cell::box const): |
| |
| 2020-04-12 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Add support for fixed width columns |
| https://bugs.webkit.org/show_bug.cgi?id=210401 |
| |
| Reviewed by Antti Koivisto. |
| |
| This is in preparation for adding support for spanner cells. |
| Fixed width columns (<col> and <td>) don't participate in the spanner width distribution. |
| |
| * layout/FormattingContext.h: |
| (WebCore::Layout::FormattingContext::IntrinsicWidthConstraints::operator-=): |
| * layout/Verification.cpp: |
| (WebCore::Layout::areEssentiallyEqual): |
| (WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree): |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints): |
| (WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): |
| (WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns): Deleted. |
| (WebCore::Layout::TableFormattingContext::useAsContentLogicalWidth): Deleted. |
| * layout/tableformatting/TableFormattingContext.h: |
| * layout/tableformatting/TableFormattingContextGeometry.cpp: |
| (WebCore::Layout::TableFormattingContext::Geometry::intrinsicWidthConstraintsForCell): |
| * layout/tableformatting/TableGrid.cpp: |
| (WebCore::Layout::TableGrid::Column::isFixedWidth const): |
| (WebCore::Layout::TableGrid::Cell::isFixedWidth const): |
| (WebCore::Layout::TableGrid::Slot::Slot): |
| (WebCore::Layout::TableGrid::appendCell): |
| (WebCore::Layout::TableGrid::Column::setWidthConstraints): Deleted. |
| (WebCore::Layout::TableGrid::Column::widthConstraints const): Deleted. |
| (WebCore::Layout::TableGrid::Column::hasFixedWidth const): Deleted. |
| (WebCore::Layout::TableGrid::widthConstraints): Deleted. |
| * layout/tableformatting/TableGrid.h: |
| (WebCore::Layout::TableGrid::setWidthConstraints): |
| (WebCore::Layout::TableGrid::widthConstraints): |
| (WebCore::Layout::TableGrid::Column::setHasFixedWidthCell): |
| (WebCore::Layout::TableGrid::Column::hasFixedWidthCell const): |
| (WebCore::Layout::TableGrid::Slot::cell const): |
| (WebCore::Layout::TableGrid::Slot::cell): |
| (WebCore::Layout::TableGrid::Slot::widthConstraints const): |
| (WebCore::Layout::TableGrid::Slot::setWidthConstraints): |
| (WebCore::Layout::TableGrid::Slot::hasColumnSpan const): |
| (WebCore::Layout::TableGrid::Slot::hasRowSpan const): |
| (WebCore::Layout::TableGrid::Slot::isColumnSpanned const): |
| (WebCore::Layout::TableGrid::Slot::isRowSpanned const): |
| (WebCore::Layout::TableGrid::hasComputedWidthConstraints const): Deleted. |
| |
| 2020-04-12 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Introduce dedicated SlotPosition/CellSpan structs |
| https://bugs.webkit.org/show_bug.cgi?id=210399 |
| |
| Reviewed by Antti Koivisto. |
| |
| SlotPosition.column/row and CellSpan.column/row read better. |
| |
| * layout/LayoutUnits.h: |
| (WebCore::Layout::SlotPosition::SlotPosition): |
| (WebCore::Layout::operator==): |
| (WTF::SlotPositionHash::hash): |
| (WTF::SlotPositionHash::equal): |
| (WTF::HashTraits<WebCore::Layout::SlotPosition>::emptyValue): |
| (WTF::HashTraits<WebCore::Layout::SlotPosition>::constructDeletedValue): |
| (WTF::HashTraits<WebCore::Layout::SlotPosition>::isDeletedValue): |
| * layout/layouttree/LayoutBox.cpp: |
| (WebCore::Layout::Box::setRowSpan): |
| (WebCore::Layout::Box::setColumnSpan): |
| (WebCore::Layout::Box::rowSpan const): |
| (WebCore::Layout::Box::columnSpan const): |
| * layout/layouttree/LayoutBox.h: |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns): |
| * layout/tableformatting/TableGrid.cpp: |
| (WebCore::Layout::TableGrid::Cell::Cell): |
| (WebCore::Layout::TableGrid::appendCell): |
| * layout/tableformatting/TableGrid.h: |
| (WebCore::Layout::TableGrid::Cell::startColumn const): |
| (WebCore::Layout::TableGrid::Cell::endColumn const): |
| (WebCore::Layout::TableGrid::Cell::startRow const): |
| (WebCore::Layout::TableGrid::Cell::endRow const): |
| (WebCore::Layout::TableGrid::Cell::columnSpan const): |
| (WebCore::Layout::TableGrid::Cell::rowSpan const): |
| (WebCore::Layout::TableGrid::Cell::span const): |
| (WebCore::Layout::TableGrid::Cell::size const): Deleted. |
| |
| 2020-04-12 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Add table support to BlockFormattingContext::Geometry::inFlowWidthAndMargin |
| https://bugs.webkit.org/show_bug.cgi?id=210400 |
| |
| Reviewed by Antti Koivisto. |
| |
| Use a slightly modified shrink-to-fit logic to compute the table width. |
| |
| * layout/blockformatting/BlockFormattingContextGeometry.cpp: |
| (WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin): |
| |
| 2020-04-12 Zalan Bujtas <zalan@apple.com> |
| |
| [LFC][TFC] Cleanup class/struct/variable names in TableGrid/TableFormattingContext |
| https://bugs.webkit.org/show_bug.cgi?id=210397 |
| |
| Reviewed by Antti Koivisto. |
| |
| This is in preparation for the column spanner work. |
| |
| * layout/tableformatting/TableFormattingContext.cpp: |
| (WebCore::Layout::TableFormattingContext::layoutInFlowContent): |
| (WebCore::Layout::TableFormattingContext::layoutCell): |
| (WebCore::Layout::TableFormattingContext::positionTableCells): |
| (WebCore::Layout::TableFormattingContext::setComputedGeometryForRows): |
| (WebCore::Layout::TableFormattingContext::setComputedGeometryForSections): |
| (WebCore::Layout::TableFormattingContext::ensureTableGrid): |
| (WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns): |
| (WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace): |
| (WebCore::Layout::TableFormattingContext::useAsContentLogicalWidth): |
| (WebCore::Layout::TableFormattingContext::layoutTableCellBox): Deleted. |
| * layout/tableformatting/TableFormattingContext.h: |
| * layout/tableformatting/TableGrid.cpp: |
| (WebCore::Layout::TableGrid::Column::Column): |
| (WebCore::Layout::TableGrid::Column::hasFixedWidth const): |
| (WebCore::Layout::TableGrid::Columns::addColumn): |
| (WebCore::Layout::TableGrid::Columns::addAnonymousColumn): |
| (WebCore::Layout::TableGrid::Rows::addRow): |
| (WebCore::Layout::TableGrid::Row::Row): |
| (WebCore::Layout::TableGrid::Cell::Cell): |
| (WebCore::Layout::TableGrid::Slot::Slot): |
| (WebCore::Layout::TableGrid::slot): |
| (WebCore::Layout::TableGrid::appendCell): |
| (WebCore::Layout::TableGrid::insertCell): |
| (WebCore::Layout::TableGrid::removeCell): |
| (WebCore::Layout::TableGrid::widthConstraints): |
| (WebCore::Layout::TableGrid::ColumnsContext::addColumn): Deleted. |
| (WebCore::Layout::TableGrid::CellInfo::CellInfo): Deleted. |
| (WebCore::Layout::TableGrid::SlotInfo::SlotInfo): Deleted. |
| * layout/tableformatting/TableGrid.h: |
| (WebCore::Layout::TableGrid::totalHorizontalSpacing const): |
| (WebCore::Layout::TableGrid::hasComputedWidthConstraints const): |
| (WebCore::Layout::TableGrid::Column::box const): |
| (WebCore::Layout::TableGrid::Columns::list): |
| (WebCore::Layout::TableGrid::Columns::list const): |
| (WebCore::Layout::TableGrid::Columns::size const): |
| (WebCore::Layout::TableGrid::Columns::logicalWidth const): |
| (WebCore::Layout::TableGrid::Row::logicalBottom const): |
| (WebCore::Layout::TableGrid::Row::box const): |
| (WebCore::Layout::TableGrid::Rows::list): |
| (WebCore::Layout::TableGrid::Rows::rowList const): |
| (WebCore::Layout::TableGrid::Rows::size const): |
| (WebCore::Layout::TableGrid::Cell::startColumn const): |
| (WebCore::Layout::TableGrid::Cell::endColumn const): |
| (WebCore::Layout::TableGrid::Cell::startRow const): |
| (WebCore::Layout::TableGrid::Cell::endRow const): |
| (WebCore::Layout::TableGrid::Cell::columnSpan const): |
| (WebCore::Layout::TableGrid::Cell::rowSpan const): |
| (WebCore::Layout::TableGrid::Cell::position const): |
| (WebCore::Layout::TableGrid::Cell::size const): |
| (WebCore::Layout::TableGrid::Cell::box const): |
| (WebCore::Layout::TableGrid::columns const): |
| (WebCore::Layout::TableGrid::columns): |
| (WebCore::Layout::TableGrid::rows const): |
| (WebCore::Layout::TableGrid::rows): |
| (WebCore::Layout::TableGrid::cells): |
| (WebCore::Layout::TableGrid::CellInfo::startColumn const): Deleted. |
| (WebCore::Layout::TableGrid::CellInfo::endColumn const): Deleted. |
| (WebCore::Layout::TableGrid::CellInfo::startRow const): Deleted. |
| (WebCore::Layout::TableGrid::CellInfo::endRow const): Deleted. |
| (WebCore::Layout::TableGrid::CellInfo::columnSpan const): Deleted. |
| (WebCore::Layout::TableGrid::CellInfo::rowSpan const): Deleted. |
| (WebCore::Layout::TableGrid::Column::columnBox const): Deleted. |
| (WebCore::Layout::TableGrid::ColumnsContext::columns): Deleted. |
| (WebCore::Layout::TableGrid::ColumnsContext::columns const): Deleted. |
| (WebCore::Layout::TableGrid::ColumnsContext::logicalWidth const): Deleted. |
| (WebCore::Layout::TableGrid::columnsContext const): Deleted. |
| (WebCore::Layout::TableGrid::columnsContext): Deleted. |
| |
| 2020-04-11 Jack Lee <shihchieh_lee@apple.com> |
| |
| Infinite loop in InsertListCommand::doApply() |
| https://bugs.webkit.org/show_bug.cgi?id=210354 |
| <rdar://problem/61427778> |
| |
| Reviewed by Darin Adler. |
| |
| Function startOfNextParagraph may return an empty position. Added null check to exit the while loop |
| and stop looking for next paragraph. |
| |
| Test: editing/inserting/insert-list-end-of-table.html |
| |
| * editing/InsertListCommand.cpp: |
| (WebCore::InsertListCommand::doApply): |
| |
| 2020-04-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [macOS] [WK1] Touch Bar flashes when typing in Vietnamese in Mail |
| https://bugs.webkit.org/show_bug.cgi?id=210394 |
| <rdar://problem/60099560> |
| |
| Reviewed by Tim Horton. |
| |
| See WebKitLegacy/mac/ChangeLog for more details. |
| |
| Currently, many users of TemporarySelectionChange use it to temporarily avoid propagating selection changes to |
| the client layer during temporary selection changes. This involves creating a TemporarySelectionChange without |
| a new selection, but with the `IgnoreSelectionChanges` option specified, which makes us call `Editor:: |
| setIgnoreSelectionChanges` to suppress selection change notifications. |
| |
| Do a bit of cleanup in this area by introducing IgnoreSelectionChangeForScope, which wraps a |
| TemporarySelectionChange and makes it easier for a handful of call sites that currently use |
| TemporarySelectionChange to hide selection changes from the client layer to get their desired behavior. |
| |
| Test: CandidateTests.DoNotHideCandidatesDuringTextReplacement |
| |
| * editing/Editor.cpp: |
| (WebCore::Editor::respondToChangedSelection): |
| * editing/Editor.h: |
| (WebCore::TemporarySelectionChange::TemporarySelectionChange): |
| (WebCore::IgnoreSelectionChangeForScope::IgnoreSelectionChangeForScope): |
| * page/DragController.cpp: |
| (WebCore::DragController::performDragOperation): |
| (WebCore::DragController::insertDroppedImagePlaceholdersAtCaret): |
| |
| Replace these: |
| |
| `TemporarySelectionChange ignoreSelectionChanges { frame, WTF::nullopt, TemporarySelectionOption::IgnoreSelectionChanges };` |
| |
| ...with these instead: |
| |
| `IgnoreSelectionChangeForScope ignoreSelectionChanges { *frame };` |
| |
| 2020-04-11 Simon Fraser <simon.fraser@apple.com> |
| |
| [Async overflow] Can't scroll overflow:scroll in sideways-scrollable RTL document |
| https://bugs.webkit.org/show_bug.cgi?id=210389 |
| |
| Reviewed by Tim Horton. |
| |
| ScrollingTree::handleWheelEvent() converts the event coordinates from view to "content" |
| coordinates, but we then jump into hit-testing on CALayers. In a sideways-scrollable |
| RTL document, the root content layer has a negative X offset which corresponds to |
| scrollOrigin; we need to map the point into the coordinate space of this layer |
| before entering layer-based hit-testing. |
| |
| Tests: fast/scrolling/mac/async-scroll-overflow-rtl-zoomed.html |
| fast/scrolling/mac/async-scroll-overflow-rtl.html |
| |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::handleWheelEvent): |
| * page/scrolling/mac/ScrollingTreeMac.mm: |
| (ScrollingTreeMac::scrollingNodeForPoint): |
| |
| 2020-04-10 Darin Adler <darin@apple.com> |
| |
| Move more from live range to SimpleRange: callers of absoluteTextRects |
| https://bugs.webkit.org/show_bug.cgi?id=210369 |
| |
| Reviewed by Anders Carlsson. |
| |
| * dom/Node.cpp: |
| (WebCore::Node::textRects const): Deleted. |
| * dom/Node.h: Updated for the above. |
| |
| * dom/Range.cpp: |
| (WebCore::Range::absoluteBoundingBox const): Updated since absoluteTextRects |
| no longer has a RangeInFixedPosition* argument. |
| (WebCore::Range::absoluteTextRects const): Removed the unused RangeInFixedPosition* |
| argument. |
| * dom/Range.h: Got rid of unused RangeInFixedPosition type and also removed |
| RangeInFixedPosition* argument from the absoluteTextRects function. Later will |
| remove absoluteTextRects entirely. |
| |
| * editing/Editor.cpp: |
| (WebCore::Editor::firstRectForRange const): Use RenderObject::absoluteTextQuads |
| and unitedBoundingBoxes rather than using RenderObject::absoluteBoundingBoxRectForRange. |
| |
| * editing/cocoa/DataDetection.mm: |
| (WebCore::DataDetection::detectContentInRange): Use SimpleRange rather than |
| live ranges. |
| |
| * html/HTMLTextFormControlElement.cpp: |
| (WebCore::setContainerAndOffsetForRange): Moved from int to unsigned. |
| (WebCore::HTMLTextFormControlElement::selection const): Return Optional<SimpleRange> |
| rather than a live range. |
| * html/HTMLTextFormControlElement.h: Updated for the change above. |
| |
| * page/TextIndicator.cpp: |
| (WebCore::initializeIndicator): Updated since absoluteTextRects no longer takes |
| a RangeInFixedPosition* argument. |
| |
| * rendering/HighlightData.h: Removed stray obsolete declaration. |
| |
| * rendering/RenderObject.cpp: |
| (WebCore::RenderObject::absoluteBoundingBoxRectForRange): Deleted. Callers can |
| use absoluteTextQuads directly. We need to cut down on the number of separate |
| functions that are not really separate concepts, and this was used in only one place. |
| (WebCore::RenderObject::absoluteTextRects): Added. Replaces Range::absoluteTextRects |
| for all callers outside the live range class and will eventually replace it entirely. |
| * rendering/RenderObject.h: Updated for the above. |
| |
| 2020-04-11 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION (Safari 13.1?): Web Inspector: Debugger hang at breakpoint when using Keyboard Maestro |
| https://bugs.webkit.org/show_bug.cgi?id=210177 |
| <rdar://problem/61485723> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Partial revert of r251036 <https://webkit.org/b/202716> to go back to using AppKit APIs |
| instead of `CFRunLoopRunInMode`. Only seems to affect WebKitLegacy. |
| |
| * inspector/PageScriptDebugServer.h: |
| * inspector/PageScriptDebugServer.cpp: |
| (WebCore::PageScriptDebugServer::runEventLoopWhilePausedInternal): |
| (WebCore::PageScriptDebugServer::platformShouldContinueRunningEventLoopWhilePaused): |
| * inspector/mac/PageScriptDebugServerMac.mm: Added. |
| (WebCore::PageScriptDebugServer::platformShouldContinueRunningEventLoopWhilePaused): |
| |
| * SourcesCocoa.txt: |
| * WebCore.xcodeproj/project.pbxproj: |
| |
| 2020-04-08 Darin Adler <darin@apple.com> |
| |
| Use Node::length to replace Node::maxCharacterOffset and lastOffsetInNode; switch more offsets from int to unsigned |
| https://bugs.webkit.org/show_bug.cgi?id=210246 |
| |
| Reviewed by Antti Koivisto. |
| |
| - The recently-added Node::length, which matches the DOM specification terminology |
| for node offsets as used in ranges, is the same as the existing maxCharacterOffset |
| and lastOffsetInNode functions. Deleted all uses of those and replaced them |
| with calls to Node::length. One of the benefits of this is that Node::length is |
| implemented more efficiently and is not a virtual function. Another is consistently |
| matching the DOM specification terminology. |
| - Many offsets, including the ones in live ranges, are currently implemented as signed |
| in WebKit, but are specified as unsigned in the DOM and HTML specifications. This |
| has very little observable effect from JavaScript that can affect website compatibility, |
| but it's still helpful to be consistent both with the specification and internally. |
| Accordingly, changed some of these to unsigned; more to come later. |
| |
| * accessibility/AXObjectCache.cpp: |
| (WebCore::AXObjectCache::previousBoundary): Use length instead of |
| maxCharacterOffset. |
| |
| * dom/CharacterData.cpp: |
| (WebCore::CharacterData::maxCharacterOffset const): Deleted. |
| * dom/CharacterData.h: Deleted maxCharacterOffset override. |
| |
| * dom/DocumentMarkerController.cpp: |
| (WebCore::DocumentMarkerController::shiftMarkers): Use length instead of |
| maxCharacterOffset. |
| |
| * dom/Node.cpp: |
| (WebCore::Node::maxCharacterOffset const): Deleted. |
| * dom/Node.h: Deleted maxCharacterOffset. |
| |
| * dom/Position.cpp: |
| (WebCore::Position::computeOffsetInContainerNode const): Use length instead |
| of lastOffsetInNode. |
| |
| * dom/Position.h: |
| (WebCore::lastOffsetInNode): Deleted. |
| (WebCore::lastPositionInNode): Use length instead of lastOffsetInNode. |
| (WebCore::minOffsetForNode): Use length instead of maxCharacterOffset. |
| (WebCore::offsetIsBeforeLastNodeOffset): Ditto. |
| |
| * dom/RangeBoundaryPoint.h: |
| (WebCore::RangeBoundaryPoint::setToEndOfNode): Use length instead of |
| maxCharacterOffset. |
| |
| * editing/ApplyBlockElementCommand.cpp: |
| (WebCore::isNewLineAtPosition): Use length instead of maxCharacterOffset. |
| (WebCore::ApplyBlockElementCommand::rangeForParagraphSplittingTextNodesIfNeeded): |
| Ditto. |
| |
| * editing/ApplyStyleCommand.cpp: |
| (WebCore::ApplyStyleCommand::removeInlineStyle): Use length instead of |
| maxCharacterOffset. |
| |
| * editing/Editing.cpp: |
| (WebCore::lastOffsetForEditing): Use length instead of mmaxCharacterOffset |
| and countChildNodes. Also improved the comment here. |
| |
| * editing/EditingStyle.cpp: |
| (WebCore::EditingStyle::styleAtSelectionStart): Use length instead of |
| maxCharacterOffset. |
| |
| * editing/InsertListCommand.cpp: |
| (WebCore::InsertListCommand::doApplyForSingleParagraph): Use length instead |
| of lastOffsetInNode. |
| |
| * editing/TextIterator.cpp: |
| (WebCore::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator): |
| USe length instead of lastOffsetInNode. |
| |
| * editing/VisibleUnits.cpp: |
| (WebCore::previousBoundary): Use length instead of maxCharacterOffset. |
| |
| 2020-04-10 Alex Christensen <achristensen@webkit.org> |
| |
| PersistentCoders should use modern decoding syntax |
| https://bugs.webkit.org/show_bug.cgi?id=207497 |
| |
| Reviewed by Darin Adler. |
| |
| * inspector/InspectorFrontendHost.cpp: |
| (WebCore::InspectorFrontendHost::showCertificate): |
| * loader/FetchOptions.h: |
| (WebCore::FetchOptions::decodePersistent): |
| * page/csp/ContentSecurityPolicyResponseHeaders.h: |
| (WebCore::ContentSecurityPolicyResponseHeaders::encode const): |
| (WebCore::ContentSecurityPolicyResponseHeaders::decode): |
| * platform/PasteboardCustomData.cpp: |
| (WebCore::PasteboardCustomData::fromSharedBuffer): |
| * platform/network/ResourceLoadPriority.h: |
| * platform/network/ResourceRequestBase.h: |
| (WebCore::ResourceRequestBase::encodeBase const): |
| (WebCore::ResourceRequestBase::decodeBase): |
| * platform/network/cf/CertificateInfo.h: |
| (WTF::Persistence::decodeCFData): |
| (WTF::Persistence::decodeSecTrustRef): |
| (WTF::Persistence::decodeCertificateChain): |
| (WTF::Persistence::Coder<WebCore::CertificateInfo>::encode): |
| (WTF::Persistence::Coder<WebCore::CertificateInfo>::decode): |
| * workers/service/server/RegistrationDatabase.cpp: |
| (WebCore::RegistrationDatabase::doPushChanges): |
| (WebCore::RegistrationDatabase::importRecords): |
| |
| 2020-04-10 Simon Fraser <simon.fraser@apple.com> |
| |
| [macOS] Fix scrollbar display for async-scrolling overflow |
| https://bugs.webkit.org/show_bug.cgi?id=194101 |
| |
| Reviewed by Tim Horton. |
| |
| We need to call positionOverflowControlsLayers() from RenderLayerBacking::updateGeometry(), |
| otherwise, on first load, scrollbar layers have no size because we try to position them |
| before we've created them. |
| |
| Test: fast/scrolling/mac/overflow-scrollbars-should-be-visible.html |
| |
| * rendering/RenderLayer.cpp: |
| (WebCore::RenderLayer::positionOverflowControls): |
| * rendering/RenderLayerBacking.cpp: |
| (WebCore::RenderLayerBacking::updateGeometry): |
| |
| 2020-04-10 Simon Fraser <simon.fraser@apple.com> |
| |
| [Async overflow] Can't scroll vertically while over a horizontal scroller in this content |
| https://bugs.webkit.org/show_bug.cgi?id=210356 |
| <rdar://problem/60523731> |
| |
| Reviewed by Tim Horton. |
| |
| https://dozermapper.github.io/gitbook/documentation/customconverter.html has style |
| that triggers mismatched containing block and z-order layer trees, triggering the creation |
| of an "overflow scroll proxy node" in the scrolling tree. |
| |
| If we encounter such a node in our ancestor tree walk while deciding which node to send |
| a wheel event too, we need to jump to the node that the proxy node is representing. |
| |
| Test: fast/scrolling/mac/nested-overflow-proxy-node.html |
| |
| * page/scrolling/ScrollingTree.cpp: |
| (WebCore::ScrollingTree::handleWheelEvent): |
| |
| 2020-04-10 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, reverting r259764. |
| |
| Causes layout test crashes under GuardMalloc |
| |
| Reverted changeset: |
| |
| "Release WebGLLayer earlier in ~GraphicsContextGLOpenGL" |
| https://bugs.webkit.org/show_bug.cgi?id=210213 |
| https://trac.webkit.org/changeset/259764 |
| |
| 2020-04-10 Peng Liu <peng.liu6@apple.com> |
| |
| REGRESSION: (r259850)[ Mac wk1 Debug ] media/track/track-user-stylesheet.html is flaky failing. |
| https://bugs.webkit.org/show_bug.cgi?id=210350 |
| |
| Reviewed by Daniel Bates. |
| |
| Revert the change in r259850. |
| |
| * page/CaptionUserPreferences.cpp: |
| (WebCore::CaptionUserPreferences::setCaptionsStyleSheetOverride): |
| |
| 2020-04-10 Pinki Gyanchandani <pgyanchandani@apple.com> |
| |
| Null ptr Deref in RadioButtonGroups::updateCheckedState |
| https://bugs.webkit.org/show_bug.cgi?id=210353 |
| |
| Reviewed by Chris Dumez. |
| |
| This crash happened when the default checked setter was called for an input element and RadioButtonGroup was NULL. |
| Added condition to dereference the group only if it is non-null. |
| |
| Test: fast/forms/input-element-default-checked-setter-crash.html |
| |
| * dom/RadioButtonGroups.cpp: |
| (WebCore::RadioButtonGroups::updateCheckedState): |
| |
| 2020-04-10 Jack Lee <shihchieh_lee@apple.com> |
| |
| ASSERTION FAILED: selection.isRange() in InsertListCommand::doApply |
| https://bugs.webkit.org/show_bug.cgi?id=210170 |
| <rdar://problem/61410397> |
| |
| Reviewed by Wenson Hsieh. |
| |
| If selectionForParagraphIteration returns a non-range selection, there is no need for finding |
| multiple paragraphs. And since non-range selection is handled, the assertion can be removed. |
| |
| Test: editing/inserting/insert-list-in-table-assert.html |
| |
| * editing/InsertListCommand.cpp: |
| (WebCore::InsertListCommand::doApply): |
| |
| 2020-04-10 Antti Koivisto <antti@apple.com> |
| |
| [CSS Shadow Parts] Bad style sharing between sibling elements with different part attributes |
| https://bugs.webkit.org/show_bug.cgi?id=210249 |
| <rdar://problem/61547528> |
| |
| Reviewed by Daniel Bates. |
| |
| Style sharing optimization was unconditionally allowed for elements that were styled with part pseudo element. |
| This could lead to miscomputed style. |
| |
| Test case by Justin Fagnani. |
| |
| Test: fast/css/shadow-parts/shadow-part-style-sharing.html |
| |
| * style/StyleSharingResolver.cpp: |
| (WebCore::Style::SharingResolver::canShareStyleWithElement): |
| |
| Only allow style sharing if parts match. |
| |
| == Rolled over to ChangeLog-2020-04-10 == |